aboutsummaryrefslogtreecommitdiff
path: root/pk
diff options
context:
space:
mode:
authorYunsup Lee <yunsup@cs.berkeley.edu>2011-01-03 19:12:24 -0800
committerYunsup Lee <yunsup@cs.berkeley.edu>2011-01-03 19:13:39 -0800
commitb83d64df0179835678c54401ec88bd37e03e19ba (patch)
tree6b604d5d48df86e6f0d43a92a71d4c0894c1cb56 /pk
parent5490b1d62710f5cf485e3ccf711bc462b9a52623 (diff)
downloadpk-b83d64df0179835678c54401ec88bd37e03e19ba.zip
pk-b83d64df0179835678c54401ec88bd37e03e19ba.tar.gz
pk-b83d64df0179835678c54401ec88bd37e03e19ba.tar.bz2
[opcodes,pk,sim,xcc] flip fields to favor little endian
Diffstat (limited to 'pk')
-rw-r--r--pk/fp.c12
-rw-r--r--pk/riscv-opc.h602
2 files changed, 307 insertions, 307 deletions
diff --git a/pk/fp.c b/pk/fp.c
index 7e83967..ffe6173 100644
--- a/pk/fp.c
+++ b/pk/fp.c
@@ -29,14 +29,14 @@ int emulate_fp(trapframe_t* tf)
if(noisy)
printk("FPU emulation at pc %lx, insn %x\n",tf->epc,(uint32_t)tf->insn);
- #define RRS1 ((tf->insn >> 5) & 0x1F)
- #define RRS2 ((tf->insn >> 10) & 0x1F)
- #define RRS3 ((tf->insn >> 15) & 0x1F)
- #define RRD ( tf->insn & 0x1F)
- #define RM ((tf->insn >> 20) & 0x3)
+ #define RRS1 ((tf->insn >> 22) & 0x1F)
+ #define RRS2 ((tf->insn >> 17) & 0x1F)
+ #define RRS3 ((tf->insn >> 12) & 0x1F)
+ #define RRD ((tf->insn >> 27) & 0x1F)
+ #define RM ((tf->insn >> 9) & 0x3)
int32_t imm = ((int32_t)tf->insn << 10) >> 20;
- int32_t bimm = (tf->insn & 0x1f) | (((tf->insn >> 15) & 0x7f) << 5);
+ int32_t bimm = (((tf->insn >> 27) & 0x1f) << 7) | ((tf->insn >> 10) & 0x7f);
bimm = (bimm << 20) >> 20;
#define XRS1 (tf->gpr[RRS1])
diff --git a/pk/riscv-opc.h b/pk/riscv-opc.h
index 948f9c3..35e5aeb 100644
--- a/pk/riscv-opc.h
+++ b/pk/riscv-opc.h
@@ -1,307 +1,307 @@
/* Automatically generated by parse-opcodes */
-#define MATCH_CVT_W_D 0xd5850000
-#define MASK_CVT_W_D 0xff8ffc00
-#define MATCH_MFF_D 0xd5ac0000
-#define MASK_MFF_D 0xffff83e0
-#define MATCH_SGNINJ_D 0xd5828000
-#define MASK_SGNINJ_D 0xffff8000
-#define MATCH_AMO_ADD 0xf4c00000
-#define MASK_AMO_ADD 0xffff8000
-#define MATCH_REMUW 0xee438000
-#define MASK_REMUW 0xffff8000
-#define MATCH_NMADD_S 0xde000000
-#define MASK_NMADD_S 0xff800000
-#define MATCH_BLTU 0xc7800000
-#define MASK_BLTU 0xffc00000
-#define MATCH_C_EQ_S 0xd40a8000
-#define MASK_C_EQ_S 0xffff8000
-#define MATCH_SGNINJ_S 0xd4028000
-#define MASK_SGNINJ_S 0xffff8000
-#define MATCH_DIV_D 0xd5818000
-#define MASK_DIV_D 0xff8f8000
-#define MATCH_CVT_W_S 0xd4050000
-#define MASK_CVT_W_S 0xff8ffc00
-#define MATCH_CVT_S_W 0xd4070000
-#define MASK_CVT_S_W 0xff8ffc00
-#define MATCH_NMADD_D 0xdf800000
-#define MASK_NMADD_D 0xff800000
-#define MATCH_C_EQ_D 0xd58a8000
-#define MASK_C_EQ_D 0xffff8000
-#define MATCH_SLLIW 0xedc10000
-#define MASK_SLLIW 0xffff8000
-#define MATCH_AMOW_MAX 0xf4828000
-#define MASK_AMOW_MAX 0xffff8000
-#define MATCH_CVTU_D_L 0xd5868000
-#define MASK_CVTU_D_L 0xff8ffc00
-#define MATCH_LH 0xf0400000
-#define MASK_LH 0xffc00000
-#define MATCH_LW 0xf0800000
-#define MASK_LW 0xffc00000
-#define MATCH_ADD 0xea000000
-#define MASK_ADD 0xffff8000
-#define MATCH_AMOW_AND 0xf4810000
-#define MASK_AMOW_AND 0xffff8000
-#define MATCH_MFPCR 0xd6400000
-#define MASK_MFPCR 0xffff83e0
-#define MATCH_CVTU_D_W 0xd5878000
-#define MASK_CVTU_D_W 0xfffffc00
-#define MATCH_BNE 0xc6400000
-#define MASK_BNE 0xffc00000
-#define MATCH_MTPCR 0xd6408000
-#define MASK_MTPCR 0xffff801f
-#define MATCH_ADD_S 0xd4000000
-#define MASK_ADD_S 0xff8f8000
-#define MATCH_BGEU 0xc7c00000
-#define MASK_BGEU 0xffc00000
-#define MATCH_CVTU_L_D 0xd5848000
-#define MASK_CVTU_L_D 0xff8ffc00
-#define MATCH_DI 0xd6008000
-#define MASK_DI 0xffffffe0
-#define MATCH_SLTIU 0xe8c00000
-#define MASK_SLTIU 0xffc00000
-#define MATCH_MFFL_D 0xd5ac8000
-#define MASK_MFFL_D 0xffff83e0
-#define MATCH_SGNMUL_D 0xd5838000
-#define MASK_SGNMUL_D 0xffff8000
-#define MATCH_CVTU_L_S 0xd4048000
-#define MASK_CVTU_L_S 0xff8ffc00
-#define MATCH_ADD_D 0xd5800000
-#define MASK_ADD_D 0xff8f8000
-#define MATCH_MUL 0xea400000
-#define MASK_MUL 0xffff8000
-#define MATCH_AMOW_MIN 0xf4820000
-#define MASK_AMOW_MIN 0xffff8000
-#define MATCH_NOR 0xea038000
-#define MASK_NOR 0xffff8000
-#define MATCH_NMSUB_D 0xdd800000
-#define MASK_NMSUB_D 0xff800000
-#define MATCH_AMO_SWAP 0xf4c08000
-#define MASK_AMO_SWAP 0xffff8000
-#define MATCH_SRLI 0xe9c20000
-#define MASK_SRLI 0xffff0000
-#define MATCH_DIVUW 0xee428000
-#define MASK_DIVUW 0xffff8000
-#define MATCH_MFFH_D 0xd5ad0000
-#define MASK_MFFH_D 0xffff83e0
-#define MATCH_SRLW 0xefc20000
-#define MASK_SRLW 0xffff8000
-#define MATCH_NMSUB_S 0xdc000000
-#define MASK_NMSUB_S 0xff800000
-#define MATCH_MFCR 0xf6400000
-#define MASK_MFCR 0xffff83e0
-#define MATCH_C_LE_D 0xd58b8000
-#define MASK_C_LE_D 0xffff8000
-#define MATCH_DIV 0xea420000
-#define MASK_DIV 0xffff8000
-#define MATCH_MFF_S 0xd42c0000
-#define MASK_MFF_S 0xffff83e0
-#define MATCH_AMOW_OR 0xf4818000
-#define MASK_AMOW_OR 0xffff8000
-#define MATCH_EI 0xd6000000
-#define MASK_EI 0xffffffe0
-#define MATCH_SYNC 0xf6800000
+#define MATCH_CVT_W_D 0xa1ea
+#define MASK_CVT_W_D 0x3ff1ff
+#define MATCH_MFF_D 0x185ea
+#define MASK_MFF_D 0x7c1ffff
+#define MATCH_SGNINJ_D 0x51ea
+#define MASK_SGNINJ_D 0x1ffff
+#define MATCH_AMO_ADD 0x1fa
+#define MASK_AMO_ADD 0x1ffff
+#define MATCH_REMUW 0x1cf7
+#define MASK_REMUW 0x1ffff
+#define MATCH_NMADD_S 0x6f
+#define MASK_NMADD_S 0x1ff
+#define MATCH_BLTU 0x363
+#define MASK_BLTU 0x3ff
+#define MATCH_C_EQ_S 0x1506a
+#define MASK_C_EQ_S 0x1ffff
+#define MATCH_SGNINJ_S 0x506a
+#define MASK_SGNINJ_S 0x1ffff
+#define MATCH_DIV_D 0x31ea
+#define MASK_DIV_D 0x1f1ff
+#define MATCH_CVT_W_S 0xa06a
+#define MASK_CVT_W_S 0x3ff1ff
+#define MATCH_CVT_S_W 0xe06a
+#define MASK_CVT_S_W 0x3ff1ff
+#define MATCH_NMADD_D 0x1ef
+#define MASK_NMADD_D 0x1ff
+#define MATCH_C_EQ_D 0x151ea
+#define MASK_C_EQ_D 0x1ffff
+#define MATCH_SLLIW 0x7f6
+#define MASK_SLLIW 0x20ffff
+#define MATCH_AMOW_MAX 0x157a
+#define MASK_AMOW_MAX 0x1ffff
+#define MATCH_CVTU_D_L 0xd1ea
+#define MASK_CVTU_D_L 0x3ff1ff
+#define MATCH_LH 0xf8
+#define MASK_LH 0x3ff
+#define MATCH_LW 0x178
+#define MASK_LW 0x3ff
+#define MATCH_ADD 0x75
+#define MASK_ADD 0x1ffff
+#define MATCH_AMOW_AND 0x97a
+#define MASK_AMOW_AND 0x1ffff
+#define MATCH_MFPCR 0xeb
+#define MASK_MFPCR 0x7c1ffff
+#define MATCH_CVTU_D_W 0xf1ea
+#define MASK_CVTU_D_W 0x3fffff
+#define MATCH_BNE 0xe3
+#define MASK_BNE 0x3ff
+#define MATCH_MTPCR 0x4eb
+#define MASK_MTPCR 0xf801ffff
+#define MATCH_ADD_S 0x6a
+#define MASK_ADD_S 0x1f1ff
+#define MATCH_BGEU 0x3e3
+#define MASK_BGEU 0x3ff
+#define MATCH_CVTU_L_D 0x91ea
+#define MASK_CVTU_L_D 0x3ff1ff
+#define MATCH_DI 0x46b
+#define MASK_DI 0x7ffffff
+#define MATCH_SLTIU 0x1f4
+#define MASK_SLTIU 0x3ff
+#define MATCH_MFFL_D 0x195ea
+#define MASK_MFFL_D 0x7c1ffff
+#define MATCH_SGNMUL_D 0x71ea
+#define MASK_SGNMUL_D 0x1ffff
+#define MATCH_CVTU_L_S 0x906a
+#define MASK_CVTU_L_S 0x3ff1ff
+#define MATCH_ADD_D 0x1ea
+#define MASK_ADD_D 0x1f1ff
+#define MATCH_MUL 0xf5
+#define MASK_MUL 0x1ffff
+#define MATCH_AMOW_MIN 0x117a
+#define MASK_AMOW_MIN 0x1ffff
+#define MATCH_NOR 0x1c75
+#define MASK_NOR 0x1ffff
+#define MATCH_NMSUB_D 0x1ee
+#define MASK_NMSUB_D 0x1ff
+#define MATCH_AMO_SWAP 0x5fa
+#define MASK_AMO_SWAP 0x1ffff
+#define MATCH_SRLI 0xbf4
+#define MASK_SRLI 0xffff
+#define MATCH_DIVUW 0x14f7
+#define MASK_DIVUW 0x1ffff
+#define MATCH_MFFH_D 0x1a5ea
+#define MASK_MFFH_D 0x7c1ffff
+#define MATCH_SRLW 0xbf7
+#define MASK_SRLW 0x1ffff
+#define MATCH_NMSUB_S 0x6e
+#define MASK_NMSUB_S 0x1ff
+#define MATCH_MFCR 0xfb
+#define MASK_MFCR 0x7c1ffff
+#define MATCH_C_LE_D 0x171ea
+#define MASK_C_LE_D 0x1ffff
+#define MATCH_DIV 0x10f5
+#define MASK_DIV 0x1ffff
+#define MATCH_MFF_S 0x1846a
+#define MASK_MFF_S 0x7c1ffff
+#define MATCH_AMOW_OR 0xd7a
+#define MASK_AMOW_OR 0x1ffff
+#define MATCH_EI 0x6b
+#define MASK_EI 0x7ffffff
+#define MATCH_SYNC 0x17b
#define MASK_SYNC 0xffffffff
-#define MATCH_MTF_S 0xd42e0000
-#define MASK_MTF_S 0xfffffc00
-#define MATCH_S_S 0xd2800000
-#define MASK_S_S 0xffc00000
-#define MATCH_MTCR 0xf6408000
-#define MASK_MTCR 0xffff801f
-#define MATCH_MSUB_S 0xda000000
-#define MASK_MSUB_S 0xff800000
-#define MATCH_ADDW 0xee000000
-#define MASK_ADDW 0xffff8000
-#define MATCH_SLTU 0xea018000
-#define MASK_SLTU 0xffff8000
-#define MATCH_XOR 0xea030000
-#define MASK_XOR 0xffff8000
-#define MATCH_SUB 0xea008000
-#define MASK_SUB 0xffff8000
-#define MATCH_ERET 0xd6800000
+#define MATCH_MTF_S 0x1c46a
+#define MASK_MTF_S 0x3fffff
+#define MATCH_S_S 0x169
+#define MASK_S_S 0x3ff
+#define MATCH_MTCR 0x4fb
+#define MASK_MTCR 0xf801ffff
+#define MATCH_MSUB_S 0x6d
+#define MASK_MSUB_S 0x1ff
+#define MATCH_ADDW 0x77
+#define MASK_ADDW 0x1ffff
+#define MATCH_SLTU 0xc75
+#define MASK_SLTU 0x1ffff
+#define MATCH_XOR 0x1875
+#define MASK_XOR 0x1ffff
+#define MATCH_SUB 0x475
+#define MASK_SUB 0x1ffff
+#define MATCH_ERET 0x16b
#define MASK_ERET 0xffffffff
-#define MATCH_BLT 0xc7000000
-#define MASK_BLT 0xffc00000
-#define MATCH_SGNINJN_D 0xd5830000
-#define MASK_SGNINJN_D 0xffff8000
-#define MATCH_REM 0xea430000
-#define MASK_REM 0xffff8000
-#define MATCH_SRLIW 0xedc20000
-#define MASK_SRLIW 0xffff8000
-#define MATCH_LUI 0xe2000000
-#define MASK_LUI 0xfe000000
-#define MATCH_ADDI 0xe8000000
-#define MASK_ADDI 0xffc00000
-#define MATCH_MULH 0xea410000
-#define MASK_MULH 0xffff8000
-#define MATCH_MULHUW 0xee418000
-#define MASK_MULHUW 0xffff8000
-#define MATCH_SGNINJN_S 0xd4030000
-#define MASK_SGNINJN_S 0xffff8000
-#define MATCH_SRAI 0xe9c30000
-#define MASK_SRAI 0xffff0000
-#define MATCH_SRAW 0xefc30000
-#define MASK_SRAW 0xffff8000
-#define MATCH_LD 0xf0c00000
-#define MASK_LD 0xffc00000
-#define MATCH_ORI 0xe9400000
-#define MASK_ORI 0xffc00000
-#define MATCH_LB 0xf0000000
-#define MASK_LB 0xffc00000
-#define MATCH_ADDIW 0xec000000
-#define MASK_ADDIW 0xffc00000
-#define MATCH_MULW 0xee400000
-#define MASK_MULW 0xffff8000
-#define MATCH_MTFLH_D 0xd5be0000
-#define MASK_MTFLH_D 0xffff8000
-#define MATCH_SRA 0xebc30000
-#define MASK_SRA 0xffff8000
-#define MATCH_BGE 0xc7400000
-#define MASK_BGE 0xffc00000
-#define MATCH_CVT_L_D 0xd5840000
-#define MASK_CVT_L_D 0xff8ffc00
-#define MATCH_SRAIW 0xedc30000
-#define MASK_SRAIW 0xffff8000
-#define MATCH_SRL 0xebc20000
-#define MASK_SRL 0xffff8000
-#define MATCH_CVT_L_S 0xd4040000
-#define MASK_CVT_L_S 0xff8ffc00
-#define MATCH_OR 0xea028000
-#define MASK_OR 0xffff8000
-#define MATCH_SUBW 0xee008000
-#define MASK_SUBW 0xffff8000
-#define MATCH_JALR_C 0xc4000000
-#define MASK_JALR_C 0xffc00000
-#define MATCH_CVTU_S_W 0xd4078000
-#define MASK_CVTU_S_W 0xff8ffc00
-#define MATCH_AMOW_MINU 0xf4830000
-#define MASK_AMOW_MINU 0xffff8000
-#define MATCH_JALR_J 0xc4800000
-#define MASK_JALR_J 0xffc00000
-#define MATCH_S_D 0xd2c00000
-#define MASK_S_D 0xffc00000
-#define MATCH_AMO_OR 0xf4c18000
-#define MASK_AMO_OR 0xffff8000
-#define MATCH_XORI 0xe9800000
-#define MASK_XORI 0xffc00000
-#define MATCH_JALR_R 0xc4400000
-#define MASK_JALR_R 0xffc00000
-#define MATCH_CVTU_S_L 0xd4068000
-#define MASK_CVTU_S_L 0xff8ffc00
-#define MATCH_AMO_MAX 0xf4c28000
-#define MASK_AMO_MAX 0xffff8000
-#define MATCH_AMO_MIN 0xf4c20000
-#define MASK_AMO_MIN 0xffff8000
-#define MATCH_ANDI 0xe9000000
-#define MASK_ANDI 0xffc00000
-#define MATCH_JAL 0xc2000000
-#define MASK_JAL 0xfe000000
-#define MATCH_LWU 0xf1800000
-#define MASK_LWU 0xffc00000
-#define MATCH_AMO_MINU 0xf4c30000
-#define MASK_AMO_MINU 0xffff8000
-#define MATCH_MSUB_D 0xdb800000
-#define MASK_MSUB_D 0xff800000
-#define MATCH_SUB_S 0xd4008000
-#define MASK_SUB_S 0xff8f8000
-#define MATCH_SLT 0xea010000
-#define MASK_SLT 0xffff8000
-#define MATCH_SLLW 0xefc10000
-#define MASK_SLLW 0xffff8000
-#define MATCH_J 0xc0000000
-#define MASK_J 0xfe000000
-#define MATCH_SLTI 0xe8800000
-#define MASK_SLTI 0xffc00000
-#define MATCH_REMU 0xea438000
-#define MASK_REMU 0xffff8000
-#define MATCH_REMW 0xee430000
-#define MASK_REMW 0xffff8000
-#define MATCH_SLL 0xebc10000
-#define MASK_SLL 0xffff8000
-#define MATCH_SLLI 0xe9c10000
-#define MASK_SLLI 0xffff0000
-#define MATCH_SUB_D 0xd5808000
-#define MASK_SUB_D 0xff8f8000
-#define MATCH_BEQ 0xc6000000
-#define MASK_BEQ 0xffc00000
-#define MATCH_AND 0xea020000
-#define MASK_AND 0xffff8000
-#define MATCH_LBU 0xf1000000
-#define MASK_LBU 0xffc00000
-#define MATCH_SQRT_S 0xd4020000
-#define MASK_SQRT_S 0xff8ffc00
-#define MATCH_SYSCALL 0xf6c00000
+#define MATCH_BLT 0x263
+#define MASK_BLT 0x3ff
+#define MATCH_SGNINJN_D 0x61ea
+#define MASK_SGNINJN_D 0x1ffff
+#define MATCH_REM 0x18f5
+#define MASK_REM 0x1ffff
+#define MATCH_SRLIW 0xbf6
+#define MASK_SRLIW 0x20ffff
+#define MATCH_LUI 0x71
+#define MASK_LUI 0x7f
+#define MATCH_ADDI 0x74
+#define MASK_ADDI 0x3ff
+#define MATCH_MULH 0x8f5
+#define MASK_MULH 0x1ffff
+#define MATCH_MULHUW 0xcf7
+#define MASK_MULHUW 0x1ffff
+#define MATCH_SGNINJN_S 0x606a
+#define MASK_SGNINJN_S 0x1ffff
+#define MATCH_SRAI 0xff4
+#define MASK_SRAI 0xffff
+#define MATCH_SRAW 0xff7
+#define MASK_SRAW 0x1ffff
+#define MATCH_LD 0x1f8
+#define MASK_LD 0x3ff
+#define MATCH_ORI 0x2f4
+#define MASK_ORI 0x3ff
+#define MATCH_LB 0x78
+#define MASK_LB 0x3ff
+#define MATCH_ADDIW 0x76
+#define MASK_ADDIW 0x3ff
+#define MATCH_MULW 0xf7
+#define MASK_MULW 0x1ffff
+#define MATCH_MTFLH_D 0x1c7ea
+#define MASK_MTFLH_D 0x1ffff
+#define MATCH_SRA 0xff5
+#define MASK_SRA 0x1ffff
+#define MATCH_BGE 0x2e3
+#define MASK_BGE 0x3ff
+#define MATCH_CVT_L_D 0x81ea
+#define MASK_CVT_L_D 0x3ff1ff
+#define MATCH_SRAIW 0xff6
+#define MASK_SRAIW 0x20ffff
+#define MATCH_SRL 0xbf5
+#define MASK_SRL 0x1ffff
+#define MATCH_CVT_L_S 0x806a
+#define MASK_CVT_L_S 0x3ff1ff
+#define MATCH_OR 0x1475
+#define MASK_OR 0x1ffff
+#define MATCH_SUBW 0x477
+#define MASK_SUBW 0x1ffff
+#define MATCH_JALR_C 0x62
+#define MASK_JALR_C 0x3ff
+#define MATCH_CVTU_S_W 0xf06a
+#define MASK_CVTU_S_W 0x3ff1ff
+#define MATCH_AMOW_MINU 0x197a
+#define MASK_AMOW_MINU 0x1ffff
+#define MATCH_JALR_J 0x162
+#define MASK_JALR_J 0x3ff
+#define MATCH_S_D 0x1e9
+#define MASK_S_D 0x3ff
+#define MATCH_AMO_OR 0xdfa
+#define MASK_AMO_OR 0x1ffff
+#define MATCH_XORI 0x374
+#define MASK_XORI 0x3ff
+#define MATCH_JALR_R 0xe2
+#define MASK_JALR_R 0x3ff
+#define MATCH_CVTU_S_L 0xd06a
+#define MASK_CVTU_S_L 0x3ff1ff
+#define MATCH_AMO_MAX 0x15fa
+#define MASK_AMO_MAX 0x1ffff
+#define MATCH_AMO_MIN 0x11fa
+#define MASK_AMO_MIN 0x1ffff
+#define MATCH_ANDI 0x274
+#define MASK_ANDI 0x3ff
+#define MATCH_JAL 0x61
+#define MASK_JAL 0x7f
+#define MATCH_LWU 0x378
+#define MASK_LWU 0x3ff
+#define MATCH_AMO_MINU 0x19fa
+#define MASK_AMO_MINU 0x1ffff
+#define MATCH_MSUB_D 0x1ed
+#define MASK_MSUB_D 0x1ff
+#define MATCH_SUB_S 0x106a
+#define MASK_SUB_S 0x1f1ff
+#define MATCH_SLT 0x875
+#define MASK_SLT 0x1ffff
+#define MATCH_SLLW 0x7f7
+#define MASK_SLLW 0x1ffff
+#define MATCH_J 0x60
+#define MASK_J 0x7f
+#define MATCH_SLTI 0x174
+#define MASK_SLTI 0x3ff
+#define MATCH_REMU 0x1cf5
+#define MASK_REMU 0x1ffff
+#define MATCH_REMW 0x18f7
+#define MASK_REMW 0x1ffff
+#define MATCH_SLL 0x7f5
+#define MASK_SLL 0x1ffff
+#define MATCH_SLLI 0x7f4
+#define MASK_SLLI 0xffff
+#define MATCH_SUB_D 0x11ea
+#define MASK_SUB_D 0x1f1ff
+#define MATCH_BEQ 0x63
+#define MASK_BEQ 0x3ff
+#define MATCH_AND 0x1075
+#define MASK_AND 0x1ffff
+#define MATCH_LBU 0x278
+#define MASK_LBU 0x3ff
+#define MATCH_SQRT_S 0x406a
+#define MASK_SQRT_S 0x3ff1ff
+#define MATCH_SYSCALL 0x1fb
#define MASK_SYSCALL 0xffc003ff
-#define MATCH_C_LT_S 0xd40b0000
-#define MASK_C_LT_S 0xffff8000
-#define MATCH_MTF_D 0xd5ae0000
-#define MASK_MTF_D 0xfffffc00
-#define MATCH_SQRT_D 0xd5820000
-#define MASK_SQRT_D 0xff8ffc00
-#define MATCH_AMOW_ADD 0xf4800000
-#define MASK_AMOW_ADD 0xffff8000
-#define MATCH_MULHW 0xee410000
-#define MASK_MULHW 0xffff8000
-#define MATCH_MADD_S 0xd8000000
-#define MASK_MADD_S 0xff800000
-#define MATCH_MULHU 0xea418000
-#define MASK_MULHU 0xffff8000
-#define MATCH_AMO_AND 0xf4c10000
-#define MASK_AMO_AND 0xffff8000
-#define MATCH_SGNMUL_S 0xd4038000
-#define MASK_SGNMUL_S 0xffff8000
-#define MATCH_RDNPC 0xf6000000
-#define MASK_RDNPC 0xffffffe0
-#define MATCH_CVT_S_L 0xd4060000
-#define MASK_CVT_S_L 0xff8ffc00
-#define MATCH_MADD_D 0xd9800000
-#define MASK_MADD_D 0xff800000
-#define MATCH_SYNCI 0xf1c00000
-#define MASK_SYNCI 0xffc0001f
-#define MATCH_DIV_S 0xd4018000
-#define MASK_DIV_S 0xff8f8000
+#define MATCH_C_LT_S 0x1606a
+#define MASK_C_LT_S 0x1ffff
+#define MATCH_MTF_D 0x1c5ea
+#define MASK_MTF_D 0x3fffff
+#define MATCH_SQRT_D 0x41ea
+#define MASK_SQRT_D 0x3ff1ff
+#define MATCH_AMOW_ADD 0x17a
+#define MASK_AMOW_ADD 0x1ffff
+#define MATCH_MULHW 0x8f7
+#define MASK_MULHW 0x1ffff
+#define MATCH_MADD_S 0x6c
+#define MASK_MADD_S 0x1ff
+#define MATCH_MULHU 0xcf5
+#define MASK_MULHU 0x1ffff
+#define MATCH_AMO_AND 0x9fa
+#define MASK_AMO_AND 0x1ffff
+#define MATCH_SGNMUL_S 0x706a
+#define MASK_SGNMUL_S 0x1ffff
+#define MATCH_RDNPC 0x7b
+#define MASK_RDNPC 0x7ffffff
+#define MATCH_CVT_S_L 0xc06a
+#define MASK_CVT_S_L 0x3ff1ff
+#define MATCH_MADD_D 0x1ec
+#define MASK_MADD_D 0x1ff
+#define MATCH_SYNCI 0x3f8
+#define MASK_SYNCI 0xf80003ff
+#define MATCH_DIV_S 0x306a
+#define MASK_DIV_S 0x1f1ff
#define MATCH_UNIMP 0x0
#define MASK_UNIMP 0xffffffff
-#define MATCH_CVT_S_D 0xd4098000
-#define MASK_CVT_S_D 0xff8ffc00
-#define MATCH_C_LE_S 0xd40b8000
-#define MASK_C_LE_S 0xffff8000
-#define MATCH_MUL_S 0xd4010000
-#define MASK_MUL_S 0xff8f8000
-#define MATCH_CVT_D_S 0xd5880000
-#define MASK_CVT_D_S 0xfffffc00
-#define MATCH_CVT_D_W 0xd5870000
-#define MASK_CVT_D_W 0xfffffc00
-#define MATCH_L_S 0xd0800000
-#define MASK_L_S 0xffc00000
-#define MATCH_CVT_D_L 0xd5860000
-#define MASK_CVT_D_L 0xff8ffc00
-#define MATCH_DIVW 0xee420000
-#define MASK_DIVW 0xffff8000
-#define MATCH_L_D 0xd0c00000
-#define MASK_L_D 0xffc00000
-#define MATCH_DIVU 0xea428000
-#define MASK_DIVU 0xffff8000
-#define MATCH_MUL_D 0xd5810000
-#define MASK_MUL_D 0xff8f8000
-#define MATCH_CVTU_W_S 0xd4058000
-#define MASK_CVTU_W_S 0xff8ffc00
-#define MATCH_SW 0xf2800000
-#define MASK_SW 0xffc00000
-#define MATCH_AMOW_SWAP 0xf4808000
-#define MASK_AMOW_SWAP 0xffff8000
-#define MATCH_CVTU_W_D 0xd5858000
-#define MASK_CVTU_W_D 0xff8ffc00
-#define MATCH_LHU 0xf1400000
-#define MASK_LHU 0xffc00000
-#define MATCH_SH 0xf2400000
-#define MASK_SH 0xffc00000
-#define MATCH_AMO_MAXU 0xf4c38000
-#define MASK_AMO_MAXU 0xffff8000
-#define MATCH_AMOW_MAXU 0xf4838000
-#define MASK_AMOW_MAXU 0xffff8000
-#define MATCH_SB 0xf2000000
-#define MASK_SB 0xffc00000
-#define MATCH_C_LT_D 0xd58b0000
-#define MASK_C_LT_D 0xffff8000
-#define MATCH_SD 0xf2c00000
-#define MASK_SD 0xffc00000
+#define MATCH_CVT_S_D 0x1306a
+#define MASK_CVT_S_D 0x3ff1ff
+#define MATCH_C_LE_S 0x1706a
+#define MASK_C_LE_S 0x1ffff
+#define MATCH_MUL_S 0x206a
+#define MASK_MUL_S 0x1f1ff
+#define MATCH_CVT_D_S 0x101ea
+#define MASK_CVT_D_S 0x3fffff
+#define MATCH_CVT_D_W 0xe1ea
+#define MASK_CVT_D_W 0x3fffff
+#define MATCH_L_S 0x168
+#define MASK_L_S 0x3ff
+#define MATCH_CVT_D_L 0xc1ea
+#define MASK_CVT_D_L 0x3ff1ff
+#define MATCH_DIVW 0x10f7
+#define MASK_DIVW 0x1ffff
+#define MATCH_L_D 0x1e8
+#define MASK_L_D 0x3ff
+#define MATCH_DIVU 0x14f5
+#define MASK_DIVU 0x1ffff
+#define MATCH_MUL_D 0x21ea
+#define MASK_MUL_D 0x1f1ff
+#define MATCH_CVTU_W_S 0xb06a
+#define MASK_CVTU_W_S 0x3ff1ff
+#define MATCH_SW 0x179
+#define MASK_SW 0x3ff
+#define MATCH_AMOW_SWAP 0x57a
+#define MASK_AMOW_SWAP 0x1ffff
+#define MATCH_CVTU_W_D 0xb1ea
+#define MASK_CVTU_W_D 0x3ff1ff
+#define MATCH_LHU 0x2f8
+#define MASK_LHU 0x3ff
+#define MATCH_SH 0xf9
+#define MASK_SH 0x3ff
+#define MATCH_AMO_MAXU 0x1dfa
+#define MASK_AMO_MAXU 0x1ffff
+#define MATCH_AMOW_MAXU 0x1d7a
+#define MASK_AMOW_MAXU 0x1ffff
+#define MATCH_SB 0x79
+#define MASK_SB 0x3ff
+#define MATCH_C_LT_D 0x161ea
+#define MASK_C_LT_D 0x1ffff
+#define MATCH_SD 0x1f9
+#define MASK_SD 0x3ff