aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Twigg <sdtwigg@eecs.berkeley.edu>2014-04-03 16:54:34 -0700
committerStephen Twigg <sdtwigg@eecs.berkeley.edu>2014-04-03 16:54:34 -0700
commite23899eae22505d001f94e9e0d00f7abc3191475 (patch)
tree57244ec45e82bea9f6ec5063ad82a9694e0964fc
parent06b8f696222948cfa7cbc21b3904da22443a4e0f (diff)
parent97c0aa44d34834515ddb8c43a9e4583dc95d9808 (diff)
downloadriscv-isa-sim-e23899eae22505d001f94e9e0d00f7abc3191475.zip
riscv-isa-sim-e23899eae22505d001f94e9e0d00f7abc3191475.tar.gz
riscv-isa-sim-e23899eae22505d001f94e9e0d00f7abc3191475.tar.bz2
Merge branch 'tm'
l---------hwacha/insns_ut/ut_fclass_d.h1
l---------hwacha/insns_ut/ut_fclass_s.h1
-rw-r--r--hwacha/opcodes_hwacha_ut.h305
-rw-r--r--riscv/encoding.h6
4 files changed, 158 insertions, 155 deletions
diff --git a/hwacha/insns_ut/ut_fclass_d.h b/hwacha/insns_ut/ut_fclass_d.h
new file mode 120000
index 0000000..b3fea7f
--- /dev/null
+++ b/hwacha/insns_ut/ut_fclass_d.h
@@ -0,0 +1 @@
+../../riscv/insns/fclass_d.h \ No newline at end of file
diff --git a/hwacha/insns_ut/ut_fclass_s.h b/hwacha/insns_ut/ut_fclass_s.h
new file mode 120000
index 0000000..7df8a5a
--- /dev/null
+++ b/hwacha/insns_ut/ut_fclass_s.h
@@ -0,0 +1 @@
+../../riscv/insns/fclass_s.h \ No newline at end of file
diff --git a/hwacha/opcodes_hwacha_ut.h b/hwacha/opcodes_hwacha_ut.h
index f0f01dd..6a8c326 100644
--- a/hwacha/opcodes_hwacha_ut.h
+++ b/hwacha/opcodes_hwacha_ut.h
@@ -1,173 +1,174 @@
-DECLARE_INSN(ut_movn, 0x2007077, 0xfe00707f)
-DECLARE_INSN(ut_movz, 0x7077, 0xfe00707f)
-DECLARE_INSN(ut_fmovn, 0x6007077, 0xfe00707f)
-DECLARE_INSN(ut_fmovz, 0x4007077, 0xfe00707f)
-DECLARE_INSN(ut_stop, 0x5077, 0xffffffff)
-DECLARE_INSN(ut_utidx, 0x6077, 0xfffff07f)
-DECLARE_INSN(ut_fmv_s_x, 0xf0000053, 0xfff0707f)
-DECLARE_INSN(ut_amoxor_w, 0x2000202f, 0xf800707f)
-DECLARE_INSN(ut_remuw, 0x200703b, 0xfe00707f)
-DECLARE_INSN(ut_fmin_d, 0xc2000053, 0xfe00707f)
-DECLARE_INSN(ut_amomax_d, 0xa000302f, 0xf800707f)
-DECLARE_INSN(ut_fmin_s, 0xc0000053, 0xfe00707f)
-DECLARE_INSN(ut_slliw, 0x101b, 0xfe00707f)
-DECLARE_INSN(ut_lb, 0x3, 0x707f)
-DECLARE_INSN(ut_fcvt_s_wu, 0x78000053, 0xfff0007f)
-DECLARE_INSN(ut_fcvt_d_l, 0x62000053, 0xfff0007f)
-DECLARE_INSN(ut_lh, 0x1003, 0x707f)
-DECLARE_INSN(ut_fcvt_d_w, 0x72000053, 0xfff0007f)
-DECLARE_INSN(ut_lw, 0x2003, 0x707f)
DECLARE_INSN(ut_add, 0x33, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_d_s, 0x82000053, 0xfff0007f)
-DECLARE_INSN(ut_fmax_d, 0xca000053, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_s_d, 0x88000053, 0xfff0007f)
-DECLARE_INSN(ut_fadd_d, 0x2000053, 0xfe00007f)
-DECLARE_INSN(ut_sltiu, 0x3013, 0x707f)
-DECLARE_INSN(ut_fcvt_s_w, 0x70000053, 0xfff0007f)
-DECLARE_INSN(ut_mul, 0x2000033, 0xfe00707f)
-DECLARE_INSN(ut_amominu_d, 0xc000302f, 0xf800707f)
-DECLARE_INSN(ut_srli, 0x5013, 0xfc00707f)
-DECLARE_INSN(ut_amominu_w, 0xc000202f, 0xf800707f)
-DECLARE_INSN(ut_divuw, 0x200503b, 0xfe00707f)
-DECLARE_INSN(ut_mulw, 0x200003b, 0xfe00707f)
-DECLARE_INSN(ut_srlw, 0x503b, 0xfe00707f)
-DECLARE_INSN(ut_div, 0x2004033, 0xfe00707f)
-DECLARE_INSN(ut_fdiv_d, 0x1a000053, 0xfe00007f)
-DECLARE_INSN(ut_fence, 0xf, 0x707f)
-DECLARE_INSN(ut_fnmsub_s, 0x4b, 0x600007f)
-DECLARE_INSN(ut_fcvt_l_s, 0x40000053, 0xfff0007f)
-DECLARE_INSN(ut_fle_s, 0xb8000053, 0xfe00707f)
-DECLARE_INSN(ut_fdiv_s, 0x18000053, 0xfe00007f)
-DECLARE_INSN(ut_fle_d, 0xba000053, 0xfe00707f)
-DECLARE_INSN(ut_fnmsub_d, 0x200004b, 0x600007f)
-DECLARE_INSN(ut_addw, 0x3b, 0xfe00707f)
-DECLARE_INSN(ut_sll, 0x1033, 0xfe00707f)
-DECLARE_INSN(ut_xor, 0x4033, 0xfe00707f)
-DECLARE_INSN(ut_sub, 0x40000033, 0xfe00707f)
-DECLARE_INSN(ut_rem, 0x2006033, 0xfe00707f)
-DECLARE_INSN(ut_srliw, 0x501b, 0xfe00707f)
-DECLARE_INSN(ut_lui, 0x37, 0x7f)
-DECLARE_INSN(ut_fcvt_s_lu, 0x68000053, 0xfff0007f)
DECLARE_INSN(ut_addi, 0x13, 0x707f)
-DECLARE_INSN(ut_mulh, 0x2001033, 0xfe00707f)
-DECLARE_INSN(ut_fmul_s, 0x10000053, 0xfe00007f)
-DECLARE_INSN(ut_srai, 0x40005013, 0xfc00707f)
-DECLARE_INSN(ut_amoand_d, 0x6000302f, 0xf800707f)
-DECLARE_INSN(ut_flt_d, 0xb2000053, 0xfe00707f)
-DECLARE_INSN(ut_sraw, 0x4000503b, 0xfe00707f)
-DECLARE_INSN(ut_fmul_d, 0x12000053, 0xfe00007f)
-DECLARE_INSN(ut_ld, 0x3003, 0x707f)
-DECLARE_INSN(ut_ori, 0x6013, 0x707f)
-DECLARE_INSN(ut_flt_s, 0xb0000053, 0xfe00707f)
DECLARE_INSN(ut_addiw, 0x1b, 0x707f)
+DECLARE_INSN(ut_addw, 0x3b, 0xfe00707f)
+DECLARE_INSN(ut_amoadd_d, 0x302f, 0xf800707f)
+DECLARE_INSN(ut_amoadd_w, 0x202f, 0xf800707f)
+DECLARE_INSN(ut_amoand_d, 0x6000302f, 0xf800707f)
DECLARE_INSN(ut_amoand_w, 0x6000202f, 0xf800707f)
-DECLARE_INSN(ut_feq_s, 0xa8000053, 0xfe00707f)
-DECLARE_INSN(ut_fsgnjx_d, 0x3a000053, 0xfe00707f)
-DECLARE_INSN(ut_sra, 0x40005033, 0xfe00707f)
-DECLARE_INSN(ut_sraiw, 0x4000501b, 0xfe00707f)
-DECLARE_INSN(ut_srl, 0x5033, 0xfe00707f)
-DECLARE_INSN(ut_fsub_d, 0xa000053, 0xfe00007f)
-DECLARE_INSN(ut_fsgnjx_s, 0x38000053, 0xfe00707f)
-DECLARE_INSN(ut_feq_d, 0xaa000053, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_d_wu, 0x7a000053, 0xfff0007f)
-DECLARE_INSN(ut_or, 0x6033, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_wu_d, 0x5a000053, 0xfff0007f)
-DECLARE_INSN(ut_subw, 0x4000003b, 0xfe00707f)
-DECLARE_INSN(ut_fmax_s, 0xc8000053, 0xfe00707f)
+DECLARE_INSN(ut_amomax_d, 0xa000302f, 0xf800707f)
DECLARE_INSN(ut_amomaxu_d, 0xe000302f, 0xf800707f)
-DECLARE_INSN(ut_xori, 0x4013, 0x707f)
-DECLARE_INSN(ut_amoxor_d, 0x2000302f, 0xf800707f)
DECLARE_INSN(ut_amomaxu_w, 0xe000202f, 0xf800707f)
-DECLARE_INSN(ut_fcvt_wu_s, 0x58000053, 0xfff0007f)
-DECLARE_INSN(ut_andi, 0x7013, 0x707f)
-DECLARE_INSN(ut_fmv_x_s, 0xe0000053, 0xfff0707f)
-DECLARE_INSN(ut_fsgnjn_d, 0x32000053, 0xfe00707f)
-DECLARE_INSN(ut_fnmadd_s, 0x4f, 0x600007f)
-DECLARE_INSN(ut_lwu, 0x6003, 0x707f)
-DECLARE_INSN(ut_fmv_x_d, 0xe2000053, 0xfff0707f)
-DECLARE_INSN(ut_fnmadd_d, 0x200004f, 0x600007f)
-DECLARE_INSN(ut_amoadd_d, 0x302f, 0xf800707f)
-DECLARE_INSN(ut_fcvt_w_s, 0x50000053, 0xfff0007f)
-DECLARE_INSN(ut_mulhsu, 0x2002033, 0xfe00707f)
-DECLARE_INSN(ut_amoadd_w, 0x202f, 0xf800707f)
-DECLARE_INSN(ut_fcvt_d_lu, 0x6a000053, 0xfff0007f)
-DECLARE_INSN(ut_fcvt_w_d, 0x52000053, 0xfff0007f)
-DECLARE_INSN(ut_slt, 0x2033, 0xfe00707f)
-DECLARE_INSN(ut_sllw, 0x103b, 0xfe00707f)
+DECLARE_INSN(ut_amomax_w, 0xa000202f, 0xf800707f)
+DECLARE_INSN(ut_amomin_d, 0x8000302f, 0xf800707f)
+DECLARE_INSN(ut_amominu_d, 0xc000302f, 0xf800707f)
+DECLARE_INSN(ut_amominu_w, 0xc000202f, 0xf800707f)
+DECLARE_INSN(ut_amomin_w, 0x8000202f, 0xf800707f)
DECLARE_INSN(ut_amoor_d, 0x4000302f, 0xf800707f)
-DECLARE_INSN(ut_slti, 0x2013, 0x707f)
-DECLARE_INSN(ut_remu, 0x2007033, 0xfe00707f)
-DECLARE_INSN(ut_flw, 0x2007, 0x707f)
-DECLARE_INSN(ut_remw, 0x200603b, 0xfe00707f)
-DECLARE_INSN(ut_sltu, 0x3033, 0xfe00707f)
-DECLARE_INSN(ut_slli, 0x1013, 0xfc00707f)
DECLARE_INSN(ut_amoor_w, 0x4000202f, 0xf800707f)
-DECLARE_INSN(ut_fld, 0x3007, 0x707f)
-DECLARE_INSN(ut_fsub_s, 0x8000053, 0xfe00007f)
+DECLARE_INSN(ut_amoswap_d, 0x800302f, 0xf800707f)
+DECLARE_INSN(ut_amoswap_w, 0x800202f, 0xf800707f)
+DECLARE_INSN(ut_amoxor_d, 0x2000302f, 0xf800707f)
+DECLARE_INSN(ut_amoxor_w, 0x2000202f, 0xf800707f)
DECLARE_INSN(ut_and, 0x7033, 0xfe00707f)
-DECLARE_INSN(ut_fmv_d_x, 0xf2000053, 0xfff0707f)
-DECLARE_INSN(ut_lbu, 0x4003, 0x707f)
-DECLARE_INSN(ut_fsgnj_s, 0x28000053, 0xfe00707f)
-DECLARE_INSN(ut_amomax_w, 0xa000202f, 0xf800707f)
-DECLARE_INSN(ut_fsgnj_d, 0x2a000053, 0xfe00707f)
-DECLARE_INSN(ut_mulhu, 0x2003033, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_l_d, 0x42000053, 0xfff0007f)
-DECLARE_INSN(ut_fcvt_lu_s, 0x48000053, 0xfff0007f)
-DECLARE_INSN(ut_fcvt_s_l, 0x60000053, 0xfff0007f)
+DECLARE_INSN(ut_andi, 0x7013, 0x707f)
DECLARE_INSN(ut_auipc, 0x17, 0x7f)
-DECLARE_INSN(ut_fcvt_lu_d, 0x4a000053, 0xfff0007f)
-DECLARE_INSN(ut_fmadd_s, 0x43, 0x600007f)
-DECLARE_INSN(ut_fsqrt_s, 0x20000053, 0xfff0007f)
-DECLARE_INSN(ut_amomin_w, 0x8000202f, 0xf800707f)
-DECLARE_INSN(ut_fsgnjn_s, 0x30000053, 0xfe00707f)
-DECLARE_INSN(ut_amoswap_d, 0x800302f, 0xf800707f)
-DECLARE_INSN(ut_fsqrt_d, 0x22000053, 0xfff0007f)
-DECLARE_INSN(ut_fmadd_d, 0x2000043, 0x600007f)
-DECLARE_INSN(ut_divw, 0x200403b, 0xfe00707f)
-DECLARE_INSN(ut_amomin_d, 0x8000302f, 0xf800707f)
+DECLARE_INSN(ut_div, 0x2004033, 0xfe00707f)
DECLARE_INSN(ut_divu, 0x2005033, 0xfe00707f)
-DECLARE_INSN(ut_amoswap_w, 0x800202f, 0xf800707f)
+DECLARE_INSN(ut_divuw, 0x200503b, 0xfe00707f)
+DECLARE_INSN(ut_divw, 0x200403b, 0xfe00707f)
+DECLARE_INSN(ut_fadd_d, 0x2000053, 0xfe00007f)
+DECLARE_INSN(ut_fadd_h, 0x4000053, 0xfe00007f)
DECLARE_INSN(ut_fadd_s, 0x53, 0xfe00007f)
-DECLARE_INSN(ut_fsd, 0x3027, 0x707f)
-DECLARE_INSN(ut_sw, 0x2023, 0x707f)
-DECLARE_INSN(ut_fmsub_s, 0x47, 0x600007f)
-DECLARE_INSN(ut_lhu, 0x5003, 0x707f)
-DECLARE_INSN(ut_sh, 0x1023, 0x707f)
-DECLARE_INSN(ut_fsw, 0x2027, 0x707f)
-DECLARE_INSN(ut_sb, 0x23, 0x707f)
-DECLARE_INSN(ut_fmsub_d, 0x2000047, 0x600007f)
-DECLARE_INSN(ut_sd, 0x3023, 0x707f)
-
+DECLARE_INSN(ut_fclass_d, 0xe2001053, 0xfff0707f)
+DECLARE_INSN(ut_fclass_s, 0xe0001053, 0xfff0707f)
+DECLARE_INSN(ut_fcvt_d_h, 0x8c000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_d_l, 0xd2200053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_d_lu, 0xd2300053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_d_s, 0x42000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_d_w, 0xd2000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_d_wu, 0xd2100053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_h_d, 0x92000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_h_l, 0x64000053, 0xfff0007f)
DECLARE_INSN(ut_fcvt_h_lu, 0x6c000053, 0xfff0007f)
-DECLARE_INSN(ut_fmin_h, 0xc4000053, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_wu_h, 0x5c000053, 0xfff0007f)
-DECLARE_INSN(ut_fdiv_h, 0x1c000053, 0xfe00007f)
-DECLARE_INSN(ut_fcvt_h_wu, 0x7c000053, 0xfff0007f)
-DECLARE_INSN(ut_fsgnj_h, 0x2c000053, 0xfe00707f)
-DECLARE_INSN(ut_fnmsub_h, 0x400004b, 0x600007f)
-DECLARE_INSN(ut_fle_h, 0xbc000053, 0xfe00707f)
-DECLARE_INSN(ut_fcvt_l_h, 0x44000053, 0xfff0007f)
-DECLARE_INSN(ut_fnmadd_h, 0x400004f, 0x600007f)
DECLARE_INSN(ut_fcvt_h_s, 0x90000053, 0xfff0007f)
DECLARE_INSN(ut_fcvt_h_w, 0x74000053, 0xfff0007f)
-DECLARE_INSN(ut_fcvt_d_h, 0x8c000053, 0xfff0007f)
-DECLARE_INSN(ut_fmax_h, 0xcc000053, 0xfe00707f)
+DECLARE_INSN(ut_fcvt_h_wu, 0x7c000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_l_d, 0xc2200053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_l_h, 0x44000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_l_s, 0xc0200053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_lu_d, 0xc2300053, 0xfff0007f)
DECLARE_INSN(ut_fcvt_lu_h, 0x4c000053, 0xfff0007f)
-DECLARE_INSN(ut_fcvt_h_l, 0x64000053, 0xfff0007f)
-DECLARE_INSN(ut_fmv_x_h, 0xe4000053, 0xfff0707f)
-DECLARE_INSN(ut_fcvt_h_d, 0x92000053, 0xfff0007f)
-DECLARE_INSN(ut_flt_h, 0xb4000053, 0xfe00707f)
-DECLARE_INSN(ut_fadd_h, 0x4000053, 0xfe00007f)
+DECLARE_INSN(ut_fcvt_lu_s, 0xc0300053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_s_d, 0x40100053, 0xfff0007f)
DECLARE_INSN(ut_fcvt_s_h, 0x84000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_s_l, 0xd0200053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_s_lu, 0xd0300053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_s_w, 0xd0000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_s_wu, 0xd0100053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_w_d, 0xc2000053, 0xfff0007f)
DECLARE_INSN(ut_fcvt_w_h, 0x54000053, 0xfff0007f)
-DECLARE_INSN(ut_fmul_h, 0x14000053, 0xfe00007f)
-DECLARE_INSN(ut_fmadd_h, 0x4000043, 0x600007f)
-DECLARE_INSN(ut_fsqrt_h, 0x24000053, 0xfff0007f)
-DECLARE_INSN(ut_fsgnjn_h, 0x34000053, 0xfe00707f)
-DECLARE_INSN(ut_fsub_h, 0xc000053, 0xfe00007f)
-DECLARE_INSN(ut_fsh, 0x1027, 0x707f)
-DECLARE_INSN(ut_fsgnjx_h, 0x3c000053, 0xfe00707f)
+DECLARE_INSN(ut_fcvt_w_s, 0xc0000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_wu_d, 0xc2100053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_wu_h, 0x5c000053, 0xfff0007f)
+DECLARE_INSN(ut_fcvt_wu_s, 0xc0100053, 0xfff0007f)
+DECLARE_INSN(ut_fdiv_d, 0x1a000053, 0xfe00007f)
+DECLARE_INSN(ut_fdiv_h, 0x1c000053, 0xfe00007f)
+DECLARE_INSN(ut_fdiv_s, 0x18000053, 0xfe00007f)
+DECLARE_INSN(ut_fence, 0xf, 0x707f)
+DECLARE_INSN(ut_feq_d, 0xa2002053, 0xfe00707f)
+DECLARE_INSN(ut_feq_h, 0xac000053, 0xfe00707f)
+DECLARE_INSN(ut_feq_s, 0xa0002053, 0xfe00707f)
+DECLARE_INSN(ut_fld, 0x3007, 0x707f)
+DECLARE_INSN(ut_fle_d, 0xa2000053, 0xfe00707f)
+DECLARE_INSN(ut_fle_h, 0xbc000053, 0xfe00707f)
+DECLARE_INSN(ut_fle_s, 0xa0000053, 0xfe00707f)
DECLARE_INSN(ut_flh, 0x1007, 0x707f)
+DECLARE_INSN(ut_flt_d, 0xa2001053, 0xfe00707f)
+DECLARE_INSN(ut_flt_h, 0xb4000053, 0xfe00707f)
+DECLARE_INSN(ut_flt_s, 0xa0001053, 0xfe00707f)
+DECLARE_INSN(ut_flw, 0x2007, 0x707f)
+DECLARE_INSN(ut_fmadd_d, 0x2000043, 0x600007f)
+DECLARE_INSN(ut_fmadd_h, 0x4000043, 0x600007f)
+DECLARE_INSN(ut_fmadd_s, 0x43, 0x600007f)
+DECLARE_INSN(ut_fmax_d, 0x2a001053, 0xfe00707f)
+DECLARE_INSN(ut_fmax_h, 0xcc000053, 0xfe00707f)
+DECLARE_INSN(ut_fmax_s, 0x28001053, 0xfe00707f)
+DECLARE_INSN(ut_fmin_d, 0x2a000053, 0xfe00707f)
+DECLARE_INSN(ut_fmin_h, 0xc4000053, 0xfe00707f)
+DECLARE_INSN(ut_fmin_s, 0x28000053, 0xfe00707f)
+DECLARE_INSN(ut_fmovn, 0x6007077, 0xfe00707f)
+DECLARE_INSN(ut_fmovz, 0x4007077, 0xfe00707f)
+DECLARE_INSN(ut_fmsub_d, 0x2000047, 0x600007f)
DECLARE_INSN(ut_fmsub_h, 0x4000047, 0x600007f)
-DECLARE_INSN(ut_feq_h, 0xac000053, 0xfe00707f)
+DECLARE_INSN(ut_fmsub_s, 0x47, 0x600007f)
+DECLARE_INSN(ut_fmul_d, 0x12000053, 0xfe00007f)
+DECLARE_INSN(ut_fmul_h, 0x14000053, 0xfe00007f)
+DECLARE_INSN(ut_fmul_s, 0x10000053, 0xfe00007f)
+DECLARE_INSN(ut_fmv_d_x, 0xf2000053, 0xfff0707f)
DECLARE_INSN(ut_fmv_h_x, 0xf4000053, 0xfff0707f)
+DECLARE_INSN(ut_fmv_s_x, 0xf0000053, 0xfff0707f)
+DECLARE_INSN(ut_fmv_x_d, 0xe2000053, 0xfff0707f)
+DECLARE_INSN(ut_fmv_x_h, 0xe4000053, 0xfff0707f)
+DECLARE_INSN(ut_fmv_x_s, 0xe0000053, 0xfff0707f)
+DECLARE_INSN(ut_fnmadd_d, 0x200004f, 0x600007f)
+DECLARE_INSN(ut_fnmadd_h, 0x400004f, 0x600007f)
+DECLARE_INSN(ut_fnmadd_s, 0x4f, 0x600007f)
+DECLARE_INSN(ut_fnmsub_d, 0x200004b, 0x600007f)
+DECLARE_INSN(ut_fnmsub_h, 0x400004b, 0x600007f)
+DECLARE_INSN(ut_fnmsub_s, 0x4b, 0x600007f)
+DECLARE_INSN(ut_fsd, 0x3027, 0x707f)
+DECLARE_INSN(ut_fsgnj_d, 0x22000053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnj_h, 0x2c000053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnjn_d, 0x22001053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnjn_h, 0x34000053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnjn_s, 0x20001053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnj_s, 0x20000053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnjx_d, 0x22002053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnjx_h, 0x3c000053, 0xfe00707f)
+DECLARE_INSN(ut_fsgnjx_s, 0x20002053, 0xfe00707f)
+DECLARE_INSN(ut_fsh, 0x1027, 0x707f)
+DECLARE_INSN(ut_fsqrt_d, 0x5a000053, 0xfff0007f)
+DECLARE_INSN(ut_fsqrt_h, 0x24000053, 0xfff0007f)
+DECLARE_INSN(ut_fsqrt_s, 0x58000053, 0xfff0007f)
+DECLARE_INSN(ut_fsub_d, 0xa000053, 0xfe00007f)
+DECLARE_INSN(ut_fsub_h, 0xc000053, 0xfe00007f)
+DECLARE_INSN(ut_fsub_s, 0x8000053, 0xfe00007f)
+DECLARE_INSN(ut_fsw, 0x2027, 0x707f)
+DECLARE_INSN(ut_lb, 0x3, 0x707f)
+DECLARE_INSN(ut_lbu, 0x4003, 0x707f)
+DECLARE_INSN(ut_ld, 0x3003, 0x707f)
+DECLARE_INSN(ut_lh, 0x1003, 0x707f)
+DECLARE_INSN(ut_lhu, 0x5003, 0x707f)
+DECLARE_INSN(ut_lui, 0x37, 0x7f)
+DECLARE_INSN(ut_lw, 0x2003, 0x707f)
+DECLARE_INSN(ut_lwu, 0x6003, 0x707f)
+DECLARE_INSN(ut_movn, 0x2007077, 0xfe00707f)
+DECLARE_INSN(ut_movz, 0x7077, 0xfe00707f)
+DECLARE_INSN(ut_mul, 0x2000033, 0xfe00707f)
+DECLARE_INSN(ut_mulh, 0x2001033, 0xfe00707f)
+DECLARE_INSN(ut_mulhsu, 0x2002033, 0xfe00707f)
+DECLARE_INSN(ut_mulhu, 0x2003033, 0xfe00707f)
+DECLARE_INSN(ut_mulw, 0x200003b, 0xfe00707f)
+DECLARE_INSN(ut_or, 0x6033, 0xfe00707f)
+DECLARE_INSN(ut_ori, 0x6013, 0x707f)
+DECLARE_INSN(ut_rem, 0x2006033, 0xfe00707f)
+DECLARE_INSN(ut_remu, 0x2007033, 0xfe00707f)
+DECLARE_INSN(ut_remuw, 0x200703b, 0xfe00707f)
+DECLARE_INSN(ut_remw, 0x200603b, 0xfe00707f)
+DECLARE_INSN(ut_sb, 0x23, 0x707f)
+DECLARE_INSN(ut_sd, 0x3023, 0x707f)
+DECLARE_INSN(ut_sh, 0x1023, 0x707f)
+DECLARE_INSN(ut_sll, 0x1033, 0xfe00707f)
+DECLARE_INSN(ut_slli, 0x1013, 0xfc00707f)
+DECLARE_INSN(ut_slliw, 0x101b, 0xfe00707f)
+DECLARE_INSN(ut_sllw, 0x103b, 0xfe00707f)
+DECLARE_INSN(ut_slt, 0x2033, 0xfe00707f)
+DECLARE_INSN(ut_slti, 0x2013, 0x707f)
+DECLARE_INSN(ut_sltiu, 0x3013, 0x707f)
+DECLARE_INSN(ut_sltu, 0x3033, 0xfe00707f)
+DECLARE_INSN(ut_sra, 0x40005033, 0xfe00707f)
+DECLARE_INSN(ut_srai, 0x40005013, 0xfc00707f)
+DECLARE_INSN(ut_sraiw, 0x4000501b, 0xfe00707f)
+DECLARE_INSN(ut_sraw, 0x4000503b, 0xfe00707f)
+DECLARE_INSN(ut_srl, 0x5033, 0xfe00707f)
+DECLARE_INSN(ut_srli, 0x5013, 0xfc00707f)
+DECLARE_INSN(ut_srliw, 0x501b, 0xfe00707f)
+DECLARE_INSN(ut_srlw, 0x503b, 0xfe00707f)
+DECLARE_INSN(ut_stop, 0x5077, 0xffffffff)
+DECLARE_INSN(ut_sub, 0x40000033, 0xfe00707f)
+DECLARE_INSN(ut_subw, 0x4000003b, 0xfe00707f)
+DECLARE_INSN(ut_sw, 0x2023, 0x707f)
+DECLARE_INSN(ut_utidx, 0x6077, 0xfffff07f)
+DECLARE_INSN(ut_xor, 0x4033, 0xfe00707f)
+DECLARE_INSN(ut_xori, 0x4013, 0x707f)
diff --git a/riscv/encoding.h b/riscv/encoding.h
index 6a56236..089a8a9 100644
--- a/riscv/encoding.h
+++ b/riscv/encoding.h
@@ -414,6 +414,7 @@
#define CSR_FFLAGS 0x1
#define CSR_FRM 0x2
#define CSR_FCSR 0x3
+#define CSR_STATS 0xc0
#define CSR_SUP0 0x500
#define CSR_SUP1 0x501
#define CSR_EPC 0x502
@@ -430,7 +431,6 @@
#define CSR_FATC 0x50d
#define CSR_SEND_IPI 0x50e
#define CSR_CLEAR_IPI 0x50f
-#define CSR_STATS 0x51c
#define CSR_RESET 0x51d
#define CSR_TOHOST 0x51e
#define CSR_FROMHOST 0x51f
@@ -633,6 +633,7 @@ DECLARE_INSN(sd, MATCH_SD, MASK_SD)
DECLARE_CSR(fflags, CSR_FFLAGS)
DECLARE_CSR(frm, CSR_FRM)
DECLARE_CSR(fcsr, CSR_FCSR)
+DECLARE_CSR(stats, CSR_STATS)
DECLARE_CSR(sup0, CSR_SUP0)
DECLARE_CSR(sup1, CSR_SUP1)
DECLARE_CSR(epc, CSR_EPC)
@@ -649,7 +650,6 @@ DECLARE_CSR(impl, CSR_IMPL)
DECLARE_CSR(fatc, CSR_FATC)
DECLARE_CSR(send_ipi, CSR_SEND_IPI)
DECLARE_CSR(clear_ipi, CSR_CLEAR_IPI)
-DECLARE_CSR(stats, CSR_STATS)
DECLARE_CSR(reset, CSR_RESET)
DECLARE_CSR(tohost, CSR_TOHOST)
DECLARE_CSR(fromhost, CSR_FROMHOST)
@@ -681,6 +681,7 @@ DECLARE_CSR(instreth, CSR_INSTRETH)
DECLARE_CAUSE("fflags", CAUSE_FFLAGS)
DECLARE_CAUSE("frm", CAUSE_FRM)
DECLARE_CAUSE("fcsr", CAUSE_FCSR)
+DECLARE_CAUSE("stats", CAUSE_STATS)
DECLARE_CAUSE("sup0", CAUSE_SUP0)
DECLARE_CAUSE("sup1", CAUSE_SUP1)
DECLARE_CAUSE("epc", CAUSE_EPC)
@@ -697,7 +698,6 @@ DECLARE_CAUSE("impl", CAUSE_IMPL)
DECLARE_CAUSE("fatc", CAUSE_FATC)
DECLARE_CAUSE("send_ipi", CAUSE_SEND_IPI)
DECLARE_CAUSE("clear_ipi", CAUSE_CLEAR_IPI)
-DECLARE_CAUSE("stats", CAUSE_STATS)
DECLARE_CAUSE("reset", CAUSE_RESET)
DECLARE_CAUSE("tohost", CAUSE_TOHOST)
DECLARE_CAUSE("fromhost", CAUSE_FROMHOST)