blob: 3e5db415e71d04df8240e88a0cc6a4c6978b0bc8 [file] [log] [blame] [edit]
// Code generated by riscv64spec riscv-opcodes
// DO NOT EDIT
// Copyright 2024 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package riscv64asm
const (
_ Op = iota
ADD
ADDI
ADDIW
ADDW
ADD_UW
AMOADD_D
AMOADD_D_AQ
AMOADD_D_AQRL
AMOADD_D_RL
AMOADD_W
AMOADD_W_AQ
AMOADD_W_AQRL
AMOADD_W_RL
AMOAND_D
AMOAND_D_AQ
AMOAND_D_AQRL
AMOAND_D_RL
AMOAND_W
AMOAND_W_AQ
AMOAND_W_AQRL
AMOAND_W_RL
AMOMAXU_D
AMOMAXU_D_AQ
AMOMAXU_D_AQRL
AMOMAXU_D_RL
AMOMAXU_W
AMOMAXU_W_AQ
AMOMAXU_W_AQRL
AMOMAXU_W_RL
AMOMAX_D
AMOMAX_D_AQ
AMOMAX_D_AQRL
AMOMAX_D_RL
AMOMAX_W
AMOMAX_W_AQ
AMOMAX_W_AQRL
AMOMAX_W_RL
AMOMINU_D
AMOMINU_D_AQ
AMOMINU_D_AQRL
AMOMINU_D_RL
AMOMINU_W
AMOMINU_W_AQ
AMOMINU_W_AQRL
AMOMINU_W_RL
AMOMIN_D
AMOMIN_D_AQ
AMOMIN_D_AQRL
AMOMIN_D_RL
AMOMIN_W
AMOMIN_W_AQ
AMOMIN_W_AQRL
AMOMIN_W_RL
AMOOR_D
AMOOR_D_AQ
AMOOR_D_AQRL
AMOOR_D_RL
AMOOR_W
AMOOR_W_AQ
AMOOR_W_AQRL
AMOOR_W_RL
AMOSWAP_D
AMOSWAP_D_AQ
AMOSWAP_D_AQRL
AMOSWAP_D_RL
AMOSWAP_W
AMOSWAP_W_AQ
AMOSWAP_W_AQRL
AMOSWAP_W_RL
AMOXOR_D
AMOXOR_D_AQ
AMOXOR_D_AQRL
AMOXOR_D_RL
AMOXOR_W
AMOXOR_W_AQ
AMOXOR_W_AQRL
AMOXOR_W_RL
AND
ANDI
ANDN
AUIPC
BCLR
BCLRI
BEQ
BEXT
BEXTI
BGE
BGEU
BINV
BINVI
BLT
BLTU
BNE
BSET
BSETI
CLZ
CLZW
CPOP
CPOPW
CSRRC
CSRRCI
CSRRS
CSRRSI
CSRRW
CSRRWI
CTZ
CTZW
C_ADD
C_ADDI
C_ADDI16SP
C_ADDI4SPN
C_ADDIW
C_ADDW
C_AND
C_ANDI
C_BEQZ
C_BNEZ
C_EBREAK
C_FLD
C_FLDSP
C_FSD
C_FSDSP
C_J
C_JALR
C_JR
C_LD
C_LDSP
C_LI
C_LUI
C_LW
C_LWSP
C_MV
C_NOP
C_OR
C_SD
C_SDSP
C_SLLI
C_SRAI
C_SRLI
C_SUB
C_SUBW
C_SW
C_SWSP
C_UNIMP
C_XOR
DIV
DIVU
DIVUW
DIVW
EBREAK
ECALL
FADD_D
FADD_H
FADD_Q
FADD_S
FCLASS_D
FCLASS_H
FCLASS_Q
FCLASS_S
FCVT_D_L
FCVT_D_LU
FCVT_D_Q
FCVT_D_S
FCVT_D_W
FCVT_D_WU
FCVT_H_L
FCVT_H_LU
FCVT_H_S
FCVT_H_W
FCVT_H_WU
FCVT_LU_D
FCVT_LU_H
FCVT_LU_Q
FCVT_LU_S
FCVT_L_D
FCVT_L_H
FCVT_L_Q
FCVT_L_S
FCVT_Q_D
FCVT_Q_L
FCVT_Q_LU
FCVT_Q_S
FCVT_Q_W
FCVT_Q_WU
FCVT_S_D
FCVT_S_H
FCVT_S_L
FCVT_S_LU
FCVT_S_Q
FCVT_S_W
FCVT_S_WU
FCVT_WU_D
FCVT_WU_H
FCVT_WU_Q
FCVT_WU_S
FCVT_W_D
FCVT_W_H
FCVT_W_Q
FCVT_W_S
FDIV_D
FDIV_H
FDIV_Q
FDIV_S
FENCE
FENCE_I
FEQ_D
FEQ_H
FEQ_Q
FEQ_S
FLD
FLE_D
FLE_H
FLE_Q
FLE_S
FLH
FLQ
FLT_D
FLT_H
FLT_Q
FLT_S
FLW
FMADD_D
FMADD_H
FMADD_Q
FMADD_S
FMAX_D
FMAX_H
FMAX_Q
FMAX_S
FMIN_D
FMIN_H
FMIN_Q
FMIN_S
FMSUB_D
FMSUB_H
FMSUB_Q
FMSUB_S
FMUL_D
FMUL_H
FMUL_Q
FMUL_S
FMV_D_X
FMV_H_X
FMV_W_X
FMV_X_D
FMV_X_H
FMV_X_W
FNMADD_D
FNMADD_H
FNMADD_Q
FNMADD_S
FNMSUB_D
FNMSUB_H
FNMSUB_Q
FNMSUB_S
FSD
FSGNJN_D
FSGNJN_H
FSGNJN_Q
FSGNJN_S
FSGNJX_D
FSGNJX_H
FSGNJX_Q
FSGNJX_S
FSGNJ_D
FSGNJ_H
FSGNJ_Q
FSGNJ_S
FSH
FSQ
FSQRT_D
FSQRT_H
FSQRT_Q
FSQRT_S
FSUB_D
FSUB_H
FSUB_Q
FSUB_S
FSW
JAL
JALR
LB
LBU
LD
LH
LHU
LR_D
LR_D_AQ
LR_D_AQRL
LR_D_RL
LR_W
LR_W_AQ
LR_W_AQRL
LR_W_RL
LUI
LW
LWU
MAX
MAXU
MIN
MINU
MUL
MULH
MULHSU
MULHU
MULW
OR
ORC_B
ORI
ORN
REM
REMU
REMUW
REMW
REV8
ROL
ROLW
ROR
RORI
RORIW
RORW
SB
SC_D
SC_D_AQ
SC_D_AQRL
SC_D_RL
SC_W
SC_W_AQ
SC_W_AQRL
SC_W_RL
SD
SEXT_B
SEXT_H
SH
SH1ADD
SH1ADD_UW
SH2ADD
SH2ADD_UW
SH3ADD
SH3ADD_UW
SLL
SLLI
SLLIW
SLLI_UW
SLLW
SLT
SLTI
SLTIU
SLTU
SRA
SRAI
SRAIW
SRAW
SRL
SRLI
SRLIW
SRLW
SUB
SUBW
SW
XNOR
XOR
XORI
ZEXT_H
)
var opstr = [...]string{
ADD: "ADD",
ADDI: "ADDI",
ADDIW: "ADDIW",
ADDW: "ADDW",
ADD_UW: "ADD.UW",
AMOADD_D: "AMOADD.D",
AMOADD_D_AQ: "AMOADD.D.AQ",
AMOADD_D_AQRL: "AMOADD.D.AQRL",
AMOADD_D_RL: "AMOADD.D.RL",
AMOADD_W: "AMOADD.W",
AMOADD_W_AQ: "AMOADD.W.AQ",
AMOADD_W_AQRL: "AMOADD.W.AQRL",
AMOADD_W_RL: "AMOADD.W.RL",
AMOAND_D: "AMOAND.D",
AMOAND_D_AQ: "AMOAND.D.AQ",
AMOAND_D_AQRL: "AMOAND.D.AQRL",
AMOAND_D_RL: "AMOAND.D.RL",
AMOAND_W: "AMOAND.W",
AMOAND_W_AQ: "AMOAND.W.AQ",
AMOAND_W_AQRL: "AMOAND.W.AQRL",
AMOAND_W_RL: "AMOAND.W.RL",
AMOMAXU_D: "AMOMAXU.D",
AMOMAXU_D_AQ: "AMOMAXU.D.AQ",
AMOMAXU_D_AQRL: "AMOMAXU.D.AQRL",
AMOMAXU_D_RL: "AMOMAXU.D.RL",
AMOMAXU_W: "AMOMAXU.W",
AMOMAXU_W_AQ: "AMOMAXU.W.AQ",
AMOMAXU_W_AQRL: "AMOMAXU.W.AQRL",
AMOMAXU_W_RL: "AMOMAXU.W.RL",
AMOMAX_D: "AMOMAX.D",
AMOMAX_D_AQ: "AMOMAX.D.AQ",
AMOMAX_D_AQRL: "AMOMAX.D.AQRL",
AMOMAX_D_RL: "AMOMAX.D.RL",
AMOMAX_W: "AMOMAX.W",
AMOMAX_W_AQ: "AMOMAX.W.AQ",
AMOMAX_W_AQRL: "AMOMAX.W.AQRL",
AMOMAX_W_RL: "AMOMAX.W.RL",
AMOMINU_D: "AMOMINU.D",
AMOMINU_D_AQ: "AMOMINU.D.AQ",
AMOMINU_D_AQRL: "AMOMINU.D.AQRL",
AMOMINU_D_RL: "AMOMINU.D.RL",
AMOMINU_W: "AMOMINU.W",
AMOMINU_W_AQ: "AMOMINU.W.AQ",
AMOMINU_W_AQRL: "AMOMINU.W.AQRL",
AMOMINU_W_RL: "AMOMINU.W.RL",
AMOMIN_D: "AMOMIN.D",
AMOMIN_D_AQ: "AMOMIN.D.AQ",
AMOMIN_D_AQRL: "AMOMIN.D.AQRL",
AMOMIN_D_RL: "AMOMIN.D.RL",
AMOMIN_W: "AMOMIN.W",
AMOMIN_W_AQ: "AMOMIN.W.AQ",
AMOMIN_W_AQRL: "AMOMIN.W.AQRL",
AMOMIN_W_RL: "AMOMIN.W.RL",
AMOOR_D: "AMOOR.D",
AMOOR_D_AQ: "AMOOR.D.AQ",
AMOOR_D_AQRL: "AMOOR.D.AQRL",
AMOOR_D_RL: "AMOOR.D.RL",
AMOOR_W: "AMOOR.W",
AMOOR_W_AQ: "AMOOR.W.AQ",
AMOOR_W_AQRL: "AMOOR.W.AQRL",
AMOOR_W_RL: "AMOOR.W.RL",
AMOSWAP_D: "AMOSWAP.D",
AMOSWAP_D_AQ: "AMOSWAP.D.AQ",
AMOSWAP_D_AQRL: "AMOSWAP.D.AQRL",
AMOSWAP_D_RL: "AMOSWAP.D.RL",
AMOSWAP_W: "AMOSWAP.W",
AMOSWAP_W_AQ: "AMOSWAP.W.AQ",
AMOSWAP_W_AQRL: "AMOSWAP.W.AQRL",
AMOSWAP_W_RL: "AMOSWAP.W.RL",
AMOXOR_D: "AMOXOR.D",
AMOXOR_D_AQ: "AMOXOR.D.AQ",
AMOXOR_D_AQRL: "AMOXOR.D.AQRL",
AMOXOR_D_RL: "AMOXOR.D.RL",
AMOXOR_W: "AMOXOR.W",
AMOXOR_W_AQ: "AMOXOR.W.AQ",
AMOXOR_W_AQRL: "AMOXOR.W.AQRL",
AMOXOR_W_RL: "AMOXOR.W.RL",
AND: "AND",
ANDI: "ANDI",
ANDN: "ANDN",
AUIPC: "AUIPC",
BCLR: "BCLR",
BCLRI: "BCLRI",
BEQ: "BEQ",
BEXT: "BEXT",
BEXTI: "BEXTI",
BGE: "BGE",
BGEU: "BGEU",
BINV: "BINV",
BINVI: "BINVI",
BLT: "BLT",
BLTU: "BLTU",
BNE: "BNE",
BSET: "BSET",
BSETI: "BSETI",
CLZ: "CLZ",
CLZW: "CLZW",
CPOP: "CPOP",
CPOPW: "CPOPW",
CSRRC: "CSRRC",
CSRRCI: "CSRRCI",
CSRRS: "CSRRS",
CSRRSI: "CSRRSI",
CSRRW: "CSRRW",
CSRRWI: "CSRRWI",
CTZ: "CTZ",
CTZW: "CTZW",
C_ADD: "C.ADD",
C_ADDI: "C.ADDI",
C_ADDI16SP: "C.ADDI16SP",
C_ADDI4SPN: "C.ADDI4SPN",
C_ADDIW: "C.ADDIW",
C_ADDW: "C.ADDW",
C_AND: "C.AND",
C_ANDI: "C.ANDI",
C_BEQZ: "C.BEQZ",
C_BNEZ: "C.BNEZ",
C_EBREAK: "C.EBREAK",
C_FLD: "C.FLD",
C_FLDSP: "C.FLDSP",
C_FSD: "C.FSD",
C_FSDSP: "C.FSDSP",
C_J: "C.J",
C_JALR: "C.JALR",
C_JR: "C.JR",
C_LD: "C.LD",
C_LDSP: "C.LDSP",
C_LI: "C.LI",
C_LUI: "C.LUI",
C_LW: "C.LW",
C_LWSP: "C.LWSP",
C_MV: "C.MV",
C_NOP: "C.NOP",
C_OR: "C.OR",
C_SD: "C.SD",
C_SDSP: "C.SDSP",
C_SLLI: "C.SLLI",
C_SRAI: "C.SRAI",
C_SRLI: "C.SRLI",
C_SUB: "C.SUB",
C_SUBW: "C.SUBW",
C_SW: "C.SW",
C_SWSP: "C.SWSP",
C_UNIMP: "C.UNIMP",
C_XOR: "C.XOR",
DIV: "DIV",
DIVU: "DIVU",
DIVUW: "DIVUW",
DIVW: "DIVW",
EBREAK: "EBREAK",
ECALL: "ECALL",
FADD_D: "FADD.D",
FADD_H: "FADD.H",
FADD_Q: "FADD.Q",
FADD_S: "FADD.S",
FCLASS_D: "FCLASS.D",
FCLASS_H: "FCLASS.H",
FCLASS_Q: "FCLASS.Q",
FCLASS_S: "FCLASS.S",
FCVT_D_L: "FCVT.D.L",
FCVT_D_LU: "FCVT.D.LU",
FCVT_D_Q: "FCVT.D.Q",
FCVT_D_S: "FCVT.D.S",
FCVT_D_W: "FCVT.D.W",
FCVT_D_WU: "FCVT.D.WU",
FCVT_H_L: "FCVT.H.L",
FCVT_H_LU: "FCVT.H.LU",
FCVT_H_S: "FCVT.H.S",
FCVT_H_W: "FCVT.H.W",
FCVT_H_WU: "FCVT.H.WU",
FCVT_LU_D: "FCVT.LU.D",
FCVT_LU_H: "FCVT.LU.H",
FCVT_LU_Q: "FCVT.LU.Q",
FCVT_LU_S: "FCVT.LU.S",
FCVT_L_D: "FCVT.L.D",
FCVT_L_H: "FCVT.L.H",
FCVT_L_Q: "FCVT.L.Q",
FCVT_L_S: "FCVT.L.S",
FCVT_Q_D: "FCVT.Q.D",
FCVT_Q_L: "FCVT.Q.L",
FCVT_Q_LU: "FCVT.Q.LU",
FCVT_Q_S: "FCVT.Q.S",
FCVT_Q_W: "FCVT.Q.W",
FCVT_Q_WU: "FCVT.Q.WU",
FCVT_S_D: "FCVT.S.D",
FCVT_S_H: "FCVT.S.H",
FCVT_S_L: "FCVT.S.L",
FCVT_S_LU: "FCVT.S.LU",
FCVT_S_Q: "FCVT.S.Q",
FCVT_S_W: "FCVT.S.W",
FCVT_S_WU: "FCVT.S.WU",
FCVT_WU_D: "FCVT.WU.D",
FCVT_WU_H: "FCVT.WU.H",
FCVT_WU_Q: "FCVT.WU.Q",
FCVT_WU_S: "FCVT.WU.S",
FCVT_W_D: "FCVT.W.D",
FCVT_W_H: "FCVT.W.H",
FCVT_W_Q: "FCVT.W.Q",
FCVT_W_S: "FCVT.W.S",
FDIV_D: "FDIV.D",
FDIV_H: "FDIV.H",
FDIV_Q: "FDIV.Q",
FDIV_S: "FDIV.S",
FENCE: "FENCE",
FENCE_I: "FENCE.I",
FEQ_D: "FEQ.D",
FEQ_H: "FEQ.H",
FEQ_Q: "FEQ.Q",
FEQ_S: "FEQ.S",
FLD: "FLD",
FLE_D: "FLE.D",
FLE_H: "FLE.H",
FLE_Q: "FLE.Q",
FLE_S: "FLE.S",
FLH: "FLH",
FLQ: "FLQ",
FLT_D: "FLT.D",
FLT_H: "FLT.H",
FLT_Q: "FLT.Q",
FLT_S: "FLT.S",
FLW: "FLW",
FMADD_D: "FMADD.D",
FMADD_H: "FMADD.H",
FMADD_Q: "FMADD.Q",
FMADD_S: "FMADD.S",
FMAX_D: "FMAX.D",
FMAX_H: "FMAX.H",
FMAX_Q: "FMAX.Q",
FMAX_S: "FMAX.S",
FMIN_D: "FMIN.D",
FMIN_H: "FMIN.H",
FMIN_Q: "FMIN.Q",
FMIN_S: "FMIN.S",
FMSUB_D: "FMSUB.D",
FMSUB_H: "FMSUB.H",
FMSUB_Q: "FMSUB.Q",
FMSUB_S: "FMSUB.S",
FMUL_D: "FMUL.D",
FMUL_H: "FMUL.H",
FMUL_Q: "FMUL.Q",
FMUL_S: "FMUL.S",
FMV_D_X: "FMV.D.X",
FMV_H_X: "FMV.H.X",
FMV_W_X: "FMV.W.X",
FMV_X_D: "FMV.X.D",
FMV_X_H: "FMV.X.H",
FMV_X_W: "FMV.X.W",
FNMADD_D: "FNMADD.D",
FNMADD_H: "FNMADD.H",
FNMADD_Q: "FNMADD.Q",
FNMADD_S: "FNMADD.S",
FNMSUB_D: "FNMSUB.D",
FNMSUB_H: "FNMSUB.H",
FNMSUB_Q: "FNMSUB.Q",
FNMSUB_S: "FNMSUB.S",
FSD: "FSD",
FSGNJN_D: "FSGNJN.D",
FSGNJN_H: "FSGNJN.H",
FSGNJN_Q: "FSGNJN.Q",
FSGNJN_S: "FSGNJN.S",
FSGNJX_D: "FSGNJX.D",
FSGNJX_H: "FSGNJX.H",
FSGNJX_Q: "FSGNJX.Q",
FSGNJX_S: "FSGNJX.S",
FSGNJ_D: "FSGNJ.D",
FSGNJ_H: "FSGNJ.H",
FSGNJ_Q: "FSGNJ.Q",
FSGNJ_S: "FSGNJ.S",
FSH: "FSH",
FSQ: "FSQ",
FSQRT_D: "FSQRT.D",
FSQRT_H: "FSQRT.H",
FSQRT_Q: "FSQRT.Q",
FSQRT_S: "FSQRT.S",
FSUB_D: "FSUB.D",
FSUB_H: "FSUB.H",
FSUB_Q: "FSUB.Q",
FSUB_S: "FSUB.S",
FSW: "FSW",
JAL: "JAL",
JALR: "JALR",
LB: "LB",
LBU: "LBU",
LD: "LD",
LH: "LH",
LHU: "LHU",
LR_D: "LR.D",
LR_D_AQ: "LR.D.AQ",
LR_D_AQRL: "LR.D.AQRL",
LR_D_RL: "LR.D.RL",
LR_W: "LR.W",
LR_W_AQ: "LR.W.AQ",
LR_W_AQRL: "LR.W.AQRL",
LR_W_RL: "LR.W.RL",
LUI: "LUI",
LW: "LW",
LWU: "LWU",
MAX: "MAX",
MAXU: "MAXU",
MIN: "MIN",
MINU: "MINU",
MUL: "MUL",
MULH: "MULH",
MULHSU: "MULHSU",
MULHU: "MULHU",
MULW: "MULW",
OR: "OR",
ORC_B: "ORC.B",
ORI: "ORI",
ORN: "ORN",
REM: "REM",
REMU: "REMU",
REMUW: "REMUW",
REMW: "REMW",
REV8: "REV8",
ROL: "ROL",
ROLW: "ROLW",
ROR: "ROR",
RORI: "RORI",
RORIW: "RORIW",
RORW: "RORW",
SB: "SB",
SC_D: "SC.D",
SC_D_AQ: "SC.D.AQ",
SC_D_AQRL: "SC.D.AQRL",
SC_D_RL: "SC.D.RL",
SC_W: "SC.W",
SC_W_AQ: "SC.W.AQ",
SC_W_AQRL: "SC.W.AQRL",
SC_W_RL: "SC.W.RL",
SD: "SD",
SEXT_B: "SEXT.B",
SEXT_H: "SEXT.H",
SH: "SH",
SH1ADD: "SH1ADD",
SH1ADD_UW: "SH1ADD.UW",
SH2ADD: "SH2ADD",
SH2ADD_UW: "SH2ADD.UW",
SH3ADD: "SH3ADD",
SH3ADD_UW: "SH3ADD.UW",
SLL: "SLL",
SLLI: "SLLI",
SLLIW: "SLLIW",
SLLI_UW: "SLLI.UW",
SLLW: "SLLW",
SLT: "SLT",
SLTI: "SLTI",
SLTIU: "SLTIU",
SLTU: "SLTU",
SRA: "SRA",
SRAI: "SRAI",
SRAIW: "SRAIW",
SRAW: "SRAW",
SRL: "SRL",
SRLI: "SRLI",
SRLIW: "SRLIW",
SRLW: "SRLW",
SUB: "SUB",
SUBW: "SUBW",
SW: "SW",
XNOR: "XNOR",
XOR: "XOR",
XORI: "XORI",
ZEXT_H: "ZEXT.H",
}
var instFormats = [...]instFormat{
// ADD rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00000033, op: ADD, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// ADDI rd, rs1, imm12
{mask: 0x0000707f, value: 0x00000013, op: ADDI, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// ADDIW rd, rs1, imm12
{mask: 0x0000707f, value: 0x0000001b, op: ADDIW, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// ADDW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0000003b, op: ADDW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// ADD.UW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0800003b, op: ADD_UW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// AMOADD.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0000302f, op: AMOADD_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0400302f, op: AMOADD_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0600302f, op: AMOADD_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0200302f, op: AMOADD_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0000202f, op: AMOADD_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0400202f, op: AMOADD_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0600202f, op: AMOADD_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOADD.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0200202f, op: AMOADD_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6000302f, op: AMOAND_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6400302f, op: AMOAND_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6600302f, op: AMOAND_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6200302f, op: AMOAND_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6000202f, op: AMOAND_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6400202f, op: AMOAND_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6600202f, op: AMOAND_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOAND.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x6200202f, op: AMOAND_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe000302f, op: AMOMAXU_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe400302f, op: AMOMAXU_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe600302f, op: AMOMAXU_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe200302f, op: AMOMAXU_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe000202f, op: AMOMAXU_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe400202f, op: AMOMAXU_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe600202f, op: AMOMAXU_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAXU.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xe200202f, op: AMOMAXU_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa000302f, op: AMOMAX_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa400302f, op: AMOMAX_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa600302f, op: AMOMAX_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa200302f, op: AMOMAX_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa000202f, op: AMOMAX_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa400202f, op: AMOMAX_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa600202f, op: AMOMAX_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMAX.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xa200202f, op: AMOMAX_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc000302f, op: AMOMINU_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc400302f, op: AMOMINU_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc600302f, op: AMOMINU_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc200302f, op: AMOMINU_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc000202f, op: AMOMINU_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc400202f, op: AMOMINU_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc600202f, op: AMOMINU_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMINU.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0xc200202f, op: AMOMINU_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8000302f, op: AMOMIN_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8400302f, op: AMOMIN_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8600302f, op: AMOMIN_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8200302f, op: AMOMIN_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8000202f, op: AMOMIN_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8400202f, op: AMOMIN_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8600202f, op: AMOMIN_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOMIN.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x8200202f, op: AMOMIN_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4000302f, op: AMOOR_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4400302f, op: AMOOR_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4600302f, op: AMOOR_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4200302f, op: AMOOR_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4000202f, op: AMOOR_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4400202f, op: AMOOR_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4600202f, op: AMOOR_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOOR.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x4200202f, op: AMOOR_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0800302f, op: AMOSWAP_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0c00302f, op: AMOSWAP_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0e00302f, op: AMOSWAP_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0a00302f, op: AMOSWAP_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0800202f, op: AMOSWAP_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0c00202f, op: AMOSWAP_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0e00202f, op: AMOSWAP_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOSWAP.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x0a00202f, op: AMOSWAP_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2000302f, op: AMOXOR_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2400302f, op: AMOXOR_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2600302f, op: AMOXOR_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2200302f, op: AMOXOR_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2000202f, op: AMOXOR_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2400202f, op: AMOXOR_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2600202f, op: AMOXOR_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AMOXOR.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x2200202f, op: AMOXOR_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// AND rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00007033, op: AND, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// ANDI rd, rs1, imm12
{mask: 0x0000707f, value: 0x00007013, op: ANDI, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// ANDN rd, rs1, rs2
{mask: 0xfe00707f, value: 0x40007033, op: ANDN, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// AUIPC rd, imm20
{mask: 0x0000007f, value: 0x00000017, op: AUIPC, args: argTypeList{arg_rd, arg_imm20}},
// BCLR rd, rs1, rs2
{mask: 0xfe00707f, value: 0x48001033, op: BCLR, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// BCLRI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x48001013, op: BCLRI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// BEQ rs1, rs2, bimm12
{mask: 0x0000707f, value: 0x00000063, op: BEQ, args: argTypeList{arg_rs1, arg_rs2, arg_bimm12}},
// BEXT rd, rs1, rs2
{mask: 0xfe00707f, value: 0x48005033, op: BEXT, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// BEXTI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x48005013, op: BEXTI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// BGE rs1, rs2, bimm12
{mask: 0x0000707f, value: 0x00005063, op: BGE, args: argTypeList{arg_rs1, arg_rs2, arg_bimm12}},
// BGEU rs1, rs2, bimm12
{mask: 0x0000707f, value: 0x00007063, op: BGEU, args: argTypeList{arg_rs1, arg_rs2, arg_bimm12}},
// BINV rd, rs1, rs2
{mask: 0xfe00707f, value: 0x68001033, op: BINV, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// BINVI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x68001013, op: BINVI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// BLT rs1, rs2, bimm12
{mask: 0x0000707f, value: 0x00004063, op: BLT, args: argTypeList{arg_rs1, arg_rs2, arg_bimm12}},
// BLTU rs1, rs2, bimm12
{mask: 0x0000707f, value: 0x00006063, op: BLTU, args: argTypeList{arg_rs1, arg_rs2, arg_bimm12}},
// BNE rs1, rs2, bimm12
{mask: 0x0000707f, value: 0x00001063, op: BNE, args: argTypeList{arg_rs1, arg_rs2, arg_bimm12}},
// BSET rd, rs1, rs2
{mask: 0xfe00707f, value: 0x28001033, op: BSET, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// BSETI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x28001013, op: BSETI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// CLZ rd, rs1
{mask: 0xfff0707f, value: 0x60001013, op: CLZ, args: argTypeList{arg_rd, arg_rs1}},
// CLZW rd, rs1
{mask: 0xfff0707f, value: 0x6000101b, op: CLZW, args: argTypeList{arg_rd, arg_rs1}},
// CPOP rd, rs1
{mask: 0xfff0707f, value: 0x60201013, op: CPOP, args: argTypeList{arg_rd, arg_rs1}},
// CPOPW rd, rs1
{mask: 0xfff0707f, value: 0x6020101b, op: CPOPW, args: argTypeList{arg_rd, arg_rs1}},
// CSRRC rd, csr, rs1
{mask: 0x0000707f, value: 0x00003073, op: CSRRC, args: argTypeList{arg_rd, arg_csr, arg_rs1}},
// CSRRCI rd, csr, zimm
{mask: 0x0000707f, value: 0x00007073, op: CSRRCI, args: argTypeList{arg_rd, arg_csr, arg_zimm}},
// CSRRS rd, csr, rs1
{mask: 0x0000707f, value: 0x00002073, op: CSRRS, args: argTypeList{arg_rd, arg_csr, arg_rs1}},
// CSRRSI rd, csr, zimm
{mask: 0x0000707f, value: 0x00006073, op: CSRRSI, args: argTypeList{arg_rd, arg_csr, arg_zimm}},
// CSRRW rd, csr, rs1
{mask: 0x0000707f, value: 0x00001073, op: CSRRW, args: argTypeList{arg_rd, arg_csr, arg_rs1}},
// CSRRWI rd, csr, zimm
{mask: 0x0000707f, value: 0x00005073, op: CSRRWI, args: argTypeList{arg_rd, arg_csr, arg_zimm}},
// CTZ rd, rs1
{mask: 0xfff0707f, value: 0x60101013, op: CTZ, args: argTypeList{arg_rd, arg_rs1}},
// CTZW rd, rs1
{mask: 0xfff0707f, value: 0x6010101b, op: CTZW, args: argTypeList{arg_rd, arg_rs1}},
// C.ADD rd_rs1_n0, c_rs2_n0
{mask: 0x0000f003, value: 0x00009002, op: C_ADD, args: argTypeList{arg_rd_rs1_n0, arg_c_rs2_n0}},
// C.ADDI rd_rs1_n0, c_nzimm6
{mask: 0x0000e003, value: 0x00000001, op: C_ADDI, args: argTypeList{arg_rd_rs1_n0, arg_c_nzimm6}},
// C.ADDI16SP c_nzimm10
{mask: 0x0000ef83, value: 0x00006101, op: C_ADDI16SP, args: argTypeList{arg_c_nzimm10}},
// C.ADDI4SPN rd_p, c_nzuimm10
{mask: 0x0000e003, value: 0x00000000, op: C_ADDI4SPN, args: argTypeList{arg_rd_p, arg_c_nzuimm10}},
// C.ADDIW rd_rs1_n0, c_imm6
{mask: 0x0000e003, value: 0x00002001, op: C_ADDIW, args: argTypeList{arg_rd_rs1_n0, arg_c_imm6}},
// C.ADDW rd_rs1_p, rs2_p
{mask: 0x0000fc63, value: 0x00009c21, op: C_ADDW, args: argTypeList{arg_rd_rs1_p, arg_rs2_p}},
// C.AND rd_rs1_p, rs2_p
{mask: 0x0000fc63, value: 0x00008c61, op: C_AND, args: argTypeList{arg_rd_rs1_p, arg_rs2_p}},
// C.ANDI rd_rs1_p, c_imm6
{mask: 0x0000ec03, value: 0x00008801, op: C_ANDI, args: argTypeList{arg_rd_rs1_p, arg_c_imm6}},
// C.BEQZ rs1_p, c_bimm9
{mask: 0x0000e003, value: 0x0000c001, op: C_BEQZ, args: argTypeList{arg_rs1_p, arg_c_bimm9}},
// C.BNEZ rs1_p, c_bimm9
{mask: 0x0000e003, value: 0x0000e001, op: C_BNEZ, args: argTypeList{arg_rs1_p, arg_c_bimm9}},
// C.EBREAK
{mask: 0x0000ffff, value: 0x00009002, op: C_EBREAK, args: argTypeList{}},
// C.FLD fd_p, rs1_p, c_uimm8
{mask: 0x0000e003, value: 0x00002000, op: C_FLD, args: argTypeList{arg_fd_p, arg_rs1_p, arg_c_uimm8}},
// C.FLDSP fd, c_uimm9sp
{mask: 0x0000e003, value: 0x00002002, op: C_FLDSP, args: argTypeList{arg_fd, arg_c_uimm9sp}},
// C.FSD rs1_p, fs2_p, c_uimm8
{mask: 0x0000e003, value: 0x0000a000, op: C_FSD, args: argTypeList{arg_rs1_p, arg_fs2_p, arg_c_uimm8}},
// C.FSDSP c_fs2, c_uimm9sp_s
{mask: 0x0000e003, value: 0x0000a002, op: C_FSDSP, args: argTypeList{arg_c_fs2, arg_c_uimm9sp_s}},
// C.J c_imm12
{mask: 0x0000e003, value: 0x0000a001, op: C_J, args: argTypeList{arg_c_imm12}},
// C.JALR c_rs1_n0
{mask: 0x0000f07f, value: 0x00009002, op: C_JALR, args: argTypeList{arg_c_rs1_n0}},
// C.JR rs1_n0
{mask: 0x0000f07f, value: 0x00008002, op: C_JR, args: argTypeList{arg_rs1_n0}},
// C.LD rd_p, rs1_p, c_uimm8
{mask: 0x0000e003, value: 0x00006000, op: C_LD, args: argTypeList{arg_rd_p, arg_rs1_p, arg_c_uimm8}},
// C.LDSP rd_n0, c_uimm9sp
{mask: 0x0000e003, value: 0x00006002, op: C_LDSP, args: argTypeList{arg_rd_n0, arg_c_uimm9sp}},
// C.LI rd_n0, c_imm6
{mask: 0x0000e003, value: 0x00004001, op: C_LI, args: argTypeList{arg_rd_n0, arg_c_imm6}},
// C.LUI rd_n2, c_nzimm18
{mask: 0x0000e003, value: 0x00006001, op: C_LUI, args: argTypeList{arg_rd_n2, arg_c_nzimm18}},
// C.LW rd_p, rs1_p, c_uimm7
{mask: 0x0000e003, value: 0x00004000, op: C_LW, args: argTypeList{arg_rd_p, arg_rs1_p, arg_c_uimm7}},
// C.LWSP rd_n0, c_uimm8sp
{mask: 0x0000e003, value: 0x00004002, op: C_LWSP, args: argTypeList{arg_rd_n0, arg_c_uimm8sp}},
// C.MV rd_n0, c_rs2_n0
{mask: 0x0000f003, value: 0x00008002, op: C_MV, args: argTypeList{arg_rd_n0, arg_c_rs2_n0}},
// C.NOP c_nzimm6
{mask: 0x0000ef83, value: 0x00000001, op: C_NOP, args: argTypeList{arg_c_nzimm6}},
// C.OR rd_rs1_p, rs2_p
{mask: 0x0000fc63, value: 0x00008c41, op: C_OR, args: argTypeList{arg_rd_rs1_p, arg_rs2_p}},
// C.SD rs1_p, rs2_p, c_uimm8
{mask: 0x0000e003, value: 0x0000e000, op: C_SD, args: argTypeList{arg_rs1_p, arg_rs2_p, arg_c_uimm8}},
// C.SDSP c_rs2, c_uimm9sp_s
{mask: 0x0000e003, value: 0x0000e002, op: C_SDSP, args: argTypeList{arg_c_rs2, arg_c_uimm9sp_s}},
// C.SLLI rd_rs1_n0, c_nzuimm6
{mask: 0x0000e003, value: 0x00000002, op: C_SLLI, args: argTypeList{arg_rd_rs1_n0, arg_c_nzuimm6}},
// C.SRAI rd_rs1_p, c_nzuimm6
{mask: 0x0000ec03, value: 0x00008401, op: C_SRAI, args: argTypeList{arg_rd_rs1_p, arg_c_nzuimm6}},
// C.SRLI rd_rs1_p, c_nzuimm6
{mask: 0x0000ec03, value: 0x00008001, op: C_SRLI, args: argTypeList{arg_rd_rs1_p, arg_c_nzuimm6}},
// C.SUB rd_rs1_p, rs2_p
{mask: 0x0000fc63, value: 0x00008c01, op: C_SUB, args: argTypeList{arg_rd_rs1_p, arg_rs2_p}},
// C.SUBW rd_rs1_p, rs2_p
{mask: 0x0000fc63, value: 0x00009c01, op: C_SUBW, args: argTypeList{arg_rd_rs1_p, arg_rs2_p}},
// C.SW rs1_p, rs2_p, c_uimm7
{mask: 0x0000e003, value: 0x0000c000, op: C_SW, args: argTypeList{arg_rs1_p, arg_rs2_p, arg_c_uimm7}},
// C.SWSP c_rs2, c_uimm8sp_s
{mask: 0x0000e003, value: 0x0000c002, op: C_SWSP, args: argTypeList{arg_c_rs2, arg_c_uimm8sp_s}},
// C.UNIMP
{mask: 0x0000ffff, value: 0x00000000, op: C_UNIMP, args: argTypeList{}},
// C.XOR rd_rs1_p, rs2_p
{mask: 0x0000fc63, value: 0x00008c21, op: C_XOR, args: argTypeList{arg_rd_rs1_p, arg_rs2_p}},
// DIV rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02004033, op: DIV, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// DIVU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02005033, op: DIVU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// DIVUW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0200503b, op: DIVUW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// DIVW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0200403b, op: DIVW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// EBREAK
{mask: 0xffffffff, value: 0x00100073, op: EBREAK, args: argTypeList{}},
// ECALL
{mask: 0xffffffff, value: 0x00000073, op: ECALL, args: argTypeList{}},
// FADD.D fd, fs1, fs2
{mask: 0xfe00007f, value: 0x02000053, op: FADD_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FADD.H fd, fs1, fs2
{mask: 0xfe00007f, value: 0x04000053, op: FADD_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FADD.Q fd, fs1, fs2
{mask: 0xfe00007f, value: 0x06000053, op: FADD_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FADD.S fd, fs1, fs2
{mask: 0xfe00007f, value: 0x00000053, op: FADD_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FCLASS.D rd, fs1
{mask: 0xfff0707f, value: 0xe2001053, op: FCLASS_D, args: argTypeList{arg_rd, arg_fs1}},
// FCLASS.H rd, fs1
{mask: 0xfff0707f, value: 0xe4001053, op: FCLASS_H, args: argTypeList{arg_rd, arg_fs1}},
// FCLASS.Q rd, fs1
{mask: 0xfff0707f, value: 0xe6001053, op: FCLASS_Q, args: argTypeList{arg_rd, arg_fs1}},
// FCLASS.S rd, fs1
{mask: 0xfff0707f, value: 0xe0001053, op: FCLASS_S, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.D.L fd, rs1
{mask: 0xfff0007f, value: 0xd2200053, op: FCVT_D_L, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.D.LU fd, rs1
{mask: 0xfff0007f, value: 0xd2300053, op: FCVT_D_LU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.D.Q fd, fs1
{mask: 0xfff0007f, value: 0x42300053, op: FCVT_D_Q, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.D.S fd, fs1
{mask: 0xfff0007f, value: 0x42000053, op: FCVT_D_S, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.D.W fd, rs1
{mask: 0xfff0007f, value: 0xd2000053, op: FCVT_D_W, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.D.WU fd, rs1
{mask: 0xfff0007f, value: 0xd2100053, op: FCVT_D_WU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.H.L fd, rs1
{mask: 0xfff0007f, value: 0xd4200053, op: FCVT_H_L, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.H.LU fd, rs1
{mask: 0xfff0007f, value: 0xd4300053, op: FCVT_H_LU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.H.S fd, fs1
{mask: 0xfff0007f, value: 0x44000053, op: FCVT_H_S, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.H.W fd, rs1
{mask: 0xfff0007f, value: 0xd4000053, op: FCVT_H_W, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.H.WU fd, rs1
{mask: 0xfff0007f, value: 0xd4100053, op: FCVT_H_WU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.LU.D rd, fs1
{mask: 0xfff0007f, value: 0xc2300053, op: FCVT_LU_D, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.LU.H rd, fs1
{mask: 0xfff0007f, value: 0xc4300053, op: FCVT_LU_H, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.LU.Q rd, fs1
{mask: 0xfff0007f, value: 0xc6300053, op: FCVT_LU_Q, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.LU.S rd, fs1
{mask: 0xfff0007f, value: 0xc0300053, op: FCVT_LU_S, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.L.D rd, fs1
{mask: 0xfff0007f, value: 0xc2200053, op: FCVT_L_D, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.L.H rd, fs1
{mask: 0xfff0007f, value: 0xc4200053, op: FCVT_L_H, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.L.Q rd, fs1
{mask: 0xfff0007f, value: 0xc6200053, op: FCVT_L_Q, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.L.S rd, fs1
{mask: 0xfff0007f, value: 0xc0200053, op: FCVT_L_S, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.Q.D fd, fs1
{mask: 0xfff0007f, value: 0x46100053, op: FCVT_Q_D, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.Q.L fd, rs1
{mask: 0xfff0007f, value: 0xd6200053, op: FCVT_Q_L, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.Q.LU fd, rs1
{mask: 0xfff0007f, value: 0xd6300053, op: FCVT_Q_LU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.Q.S fd, fs1
{mask: 0xfff0007f, value: 0x46000053, op: FCVT_Q_S, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.Q.W fd, rs1
{mask: 0xfff0007f, value: 0xd6000053, op: FCVT_Q_W, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.Q.WU fd, rs1
{mask: 0xfff0007f, value: 0xd6100053, op: FCVT_Q_WU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.S.D fd, fs1
{mask: 0xfff0007f, value: 0x40100053, op: FCVT_S_D, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.S.H fd, fs1
{mask: 0xfff0007f, value: 0x40200053, op: FCVT_S_H, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.S.L fd, rs1
{mask: 0xfff0007f, value: 0xd0200053, op: FCVT_S_L, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.S.LU fd, rs1
{mask: 0xfff0007f, value: 0xd0300053, op: FCVT_S_LU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.S.Q fd, fs1
{mask: 0xfff0007f, value: 0x40300053, op: FCVT_S_Q, args: argTypeList{arg_fd, arg_fs1}},
// FCVT.S.W fd, rs1
{mask: 0xfff0007f, value: 0xd0000053, op: FCVT_S_W, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.S.WU fd, rs1
{mask: 0xfff0007f, value: 0xd0100053, op: FCVT_S_WU, args: argTypeList{arg_fd, arg_rs1}},
// FCVT.WU.D rd, fs1
{mask: 0xfff0007f, value: 0xc2100053, op: FCVT_WU_D, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.WU.H rd, fs1
{mask: 0xfff0007f, value: 0xc4100053, op: FCVT_WU_H, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.WU.Q rd, fs1
{mask: 0xfff0007f, value: 0xc6100053, op: FCVT_WU_Q, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.WU.S rd, fs1
{mask: 0xfff0007f, value: 0xc0100053, op: FCVT_WU_S, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.W.D rd, fs1
{mask: 0xfff0007f, value: 0xc2000053, op: FCVT_W_D, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.W.H rd, fs1
{mask: 0xfff0007f, value: 0xc4000053, op: FCVT_W_H, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.W.Q rd, fs1
{mask: 0xfff0007f, value: 0xc6000053, op: FCVT_W_Q, args: argTypeList{arg_rd, arg_fs1}},
// FCVT.W.S rd, fs1
{mask: 0xfff0007f, value: 0xc0000053, op: FCVT_W_S, args: argTypeList{arg_rd, arg_fs1}},
// FDIV.D fd, fs1, fs2
{mask: 0xfe00007f, value: 0x1a000053, op: FDIV_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FDIV.H fd, fs1, fs2
{mask: 0xfe00007f, value: 0x1c000053, op: FDIV_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FDIV.Q fd, fs1, fs2
{mask: 0xfe00007f, value: 0x1e000053, op: FDIV_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FDIV.S fd, fs1, fs2
{mask: 0xfe00007f, value: 0x18000053, op: FDIV_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FENCE pred, succ
{mask: 0x0000707f, value: 0x0000000f, op: FENCE, args: argTypeList{arg_pred, arg_succ}},
// FENCE.I
{mask: 0x0000707f, value: 0x0000100f, op: FENCE_I, args: argTypeList{}},
// FEQ.D rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa2002053, op: FEQ_D, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FEQ.H rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa4002053, op: FEQ_H, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FEQ.Q rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa6002053, op: FEQ_Q, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FEQ.S rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa0002053, op: FEQ_S, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLD fd, rs1_mem
{mask: 0x0000707f, value: 0x00003007, op: FLD, args: argTypeList{arg_fd, arg_rs1_mem}},
// FLE.D rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa2000053, op: FLE_D, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLE.H rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa4000053, op: FLE_H, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLE.Q rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa6000053, op: FLE_Q, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLE.S rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa0000053, op: FLE_S, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLH fd, rs1_mem
{mask: 0x0000707f, value: 0x00001007, op: FLH, args: argTypeList{arg_fd, arg_rs1_mem}},
// FLQ fd, rs1_mem
{mask: 0x0000707f, value: 0x00004007, op: FLQ, args: argTypeList{arg_fd, arg_rs1_mem}},
// FLT.D rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa2001053, op: FLT_D, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLT.H rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa4001053, op: FLT_H, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLT.Q rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa6001053, op: FLT_Q, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLT.S rd, fs1, fs2
{mask: 0xfe00707f, value: 0xa0001053, op: FLT_S, args: argTypeList{arg_rd, arg_fs1, arg_fs2}},
// FLW fd, rs1_mem
{mask: 0x0000707f, value: 0x00002007, op: FLW, args: argTypeList{arg_fd, arg_rs1_mem}},
// FMADD.D fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x02000043, op: FMADD_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMADD.H fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x04000043, op: FMADD_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMADD.Q fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x06000043, op: FMADD_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMADD.S fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x00000043, op: FMADD_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMAX.D fd, fs1, fs2
{mask: 0xfe00707f, value: 0x2a001053, op: FMAX_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMAX.H fd, fs1, fs2
{mask: 0xfe00707f, value: 0x2c001053, op: FMAX_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMAX.Q fd, fs1, fs2
{mask: 0xfe00707f, value: 0x2e001053, op: FMAX_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMAX.S fd, fs1, fs2
{mask: 0xfe00707f, value: 0x28001053, op: FMAX_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMIN.D fd, fs1, fs2
{mask: 0xfe00707f, value: 0x2a000053, op: FMIN_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMIN.H fd, fs1, fs2
{mask: 0xfe00707f, value: 0x2c000053, op: FMIN_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMIN.Q fd, fs1, fs2
{mask: 0xfe00707f, value: 0x2e000053, op: FMIN_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMIN.S fd, fs1, fs2
{mask: 0xfe00707f, value: 0x28000053, op: FMIN_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMSUB.D fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x02000047, op: FMSUB_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMSUB.H fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x04000047, op: FMSUB_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMSUB.Q fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x06000047, op: FMSUB_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMSUB.S fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x00000047, op: FMSUB_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FMUL.D fd, fs1, fs2
{mask: 0xfe00007f, value: 0x12000053, op: FMUL_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMUL.H fd, fs1, fs2
{mask: 0xfe00007f, value: 0x14000053, op: FMUL_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMUL.Q fd, fs1, fs2
{mask: 0xfe00007f, value: 0x16000053, op: FMUL_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMUL.S fd, fs1, fs2
{mask: 0xfe00007f, value: 0x10000053, op: FMUL_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FMV.D.X fd, rs1
{mask: 0xfff0707f, value: 0xf2000053, op: FMV_D_X, args: argTypeList{arg_fd, arg_rs1}},
// FMV.H.X fd, rs1
{mask: 0xfff0707f, value: 0xf4000053, op: FMV_H_X, args: argTypeList{arg_fd, arg_rs1}},
// FMV.W.X fd, rs1
{mask: 0xfff0707f, value: 0xf0000053, op: FMV_W_X, args: argTypeList{arg_fd, arg_rs1}},
// FMV.X.D rd, fs1
{mask: 0xfff0707f, value: 0xe2000053, op: FMV_X_D, args: argTypeList{arg_rd, arg_fs1}},
// FMV.X.H rd, fs1
{mask: 0xfff0707f, value: 0xe4000053, op: FMV_X_H, args: argTypeList{arg_rd, arg_fs1}},
// FMV.X.W rd, fs1
{mask: 0xfff0707f, value: 0xe0000053, op: FMV_X_W, args: argTypeList{arg_rd, arg_fs1}},
// FNMADD.D fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0200004f, op: FNMADD_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMADD.H fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0400004f, op: FNMADD_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMADD.Q fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0600004f, op: FNMADD_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMADD.S fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0000004f, op: FNMADD_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMSUB.D fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0200004b, op: FNMSUB_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMSUB.H fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0400004b, op: FNMSUB_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMSUB.Q fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0600004b, op: FNMSUB_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FNMSUB.S fd, fs1, fs2, fs3
{mask: 0x0600007f, value: 0x0000004b, op: FNMSUB_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2, arg_fs3}},
// FSD fs2, rs1_store
{mask: 0x0000707f, value: 0x00003027, op: FSD, args: argTypeList{arg_fs2, arg_rs1_store}},
// FSGNJN.D fd, fs1, fs2
{mask: 0xfe00707f, value: 0x22001053, op: FSGNJN_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJN.H fd, fs1, fs2
{mask: 0xfe00707f, value: 0x24001053, op: FSGNJN_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJN.Q fd, fs1, fs2
{mask: 0xfe00707f, value: 0x26001053, op: FSGNJN_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJN.S fd, fs1, fs2
{mask: 0xfe00707f, value: 0x20001053, op: FSGNJN_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJX.D fd, fs1, fs2
{mask: 0xfe00707f, value: 0x22002053, op: FSGNJX_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJX.H fd, fs1, fs2
{mask: 0xfe00707f, value: 0x24002053, op: FSGNJX_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJX.Q fd, fs1, fs2
{mask: 0xfe00707f, value: 0x26002053, op: FSGNJX_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJX.S fd, fs1, fs2
{mask: 0xfe00707f, value: 0x20002053, op: FSGNJX_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJ.D fd, fs1, fs2
{mask: 0xfe00707f, value: 0x22000053, op: FSGNJ_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJ.H fd, fs1, fs2
{mask: 0xfe00707f, value: 0x24000053, op: FSGNJ_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJ.Q fd, fs1, fs2
{mask: 0xfe00707f, value: 0x26000053, op: FSGNJ_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSGNJ.S fd, fs1, fs2
{mask: 0xfe00707f, value: 0x20000053, op: FSGNJ_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSH fs2, rs1_store
{mask: 0x0000707f, value: 0x00001027, op: FSH, args: argTypeList{arg_fs2, arg_rs1_store}},
// FSQ fs2, rs1_store
{mask: 0x0000707f, value: 0x00004027, op: FSQ, args: argTypeList{arg_fs2, arg_rs1_store}},
// FSQRT.D fd, fs1
{mask: 0xfff0007f, value: 0x5a000053, op: FSQRT_D, args: argTypeList{arg_fd, arg_fs1}},
// FSQRT.H fd, fs1
{mask: 0xfff0007f, value: 0x5c000053, op: FSQRT_H, args: argTypeList{arg_fd, arg_fs1}},
// FSQRT.Q fd, fs1
{mask: 0xfff0007f, value: 0x5e000053, op: FSQRT_Q, args: argTypeList{arg_fd, arg_fs1}},
// FSQRT.S fd, fs1
{mask: 0xfff0007f, value: 0x58000053, op: FSQRT_S, args: argTypeList{arg_fd, arg_fs1}},
// FSUB.D fd, fs1, fs2
{mask: 0xfe00007f, value: 0x0a000053, op: FSUB_D, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSUB.H fd, fs1, fs2
{mask: 0xfe00007f, value: 0x0c000053, op: FSUB_H, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSUB.Q fd, fs1, fs2
{mask: 0xfe00007f, value: 0x0e000053, op: FSUB_Q, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSUB.S fd, fs1, fs2
{mask: 0xfe00007f, value: 0x08000053, op: FSUB_S, args: argTypeList{arg_fd, arg_fs1, arg_fs2}},
// FSW fs2, rs1_store
{mask: 0x0000707f, value: 0x00002027, op: FSW, args: argTypeList{arg_fs2, arg_rs1_store}},
// JAL rd, jimm20
{mask: 0x0000007f, value: 0x0000006f, op: JAL, args: argTypeList{arg_rd, arg_jimm20}},
// JALR rd, rs1_mem
{mask: 0x0000707f, value: 0x00000067, op: JALR, args: argTypeList{arg_rd, arg_rs1_mem}},
// LB rd, rs1_mem
{mask: 0x0000707f, value: 0x00000003, op: LB, args: argTypeList{arg_rd, arg_rs1_mem}},
// LBU rd, rs1_mem
{mask: 0x0000707f, value: 0x00004003, op: LBU, args: argTypeList{arg_rd, arg_rs1_mem}},
// LD rd, rs1_mem
{mask: 0x0000707f, value: 0x00003003, op: LD, args: argTypeList{arg_rd, arg_rs1_mem}},
// LH rd, rs1_mem
{mask: 0x0000707f, value: 0x00001003, op: LH, args: argTypeList{arg_rd, arg_rs1_mem}},
// LHU rd, rs1_mem
{mask: 0x0000707f, value: 0x00005003, op: LHU, args: argTypeList{arg_rd, arg_rs1_mem}},
// LR.D rd, rs1_amo
{mask: 0xfff0707f, value: 0x1000302f, op: LR_D, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.D.AQ rd, rs1_amo
{mask: 0xfff0707f, value: 0x1400302f, op: LR_D_AQ, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.D.AQRL rd, rs1_amo
{mask: 0xfff0707f, value: 0x1600302f, op: LR_D_AQRL, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.D.RL rd, rs1_amo
{mask: 0xfff0707f, value: 0x1200302f, op: LR_D_RL, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.W rd, rs1_amo
{mask: 0xfff0707f, value: 0x1000202f, op: LR_W, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.W.AQ rd, rs1_amo
{mask: 0xfff0707f, value: 0x1400202f, op: LR_W_AQ, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.W.AQRL rd, rs1_amo
{mask: 0xfff0707f, value: 0x1600202f, op: LR_W_AQRL, args: argTypeList{arg_rd, arg_rs1_amo}},
// LR.W.RL rd, rs1_amo
{mask: 0xfff0707f, value: 0x1200202f, op: LR_W_RL, args: argTypeList{arg_rd, arg_rs1_amo}},
// LUI rd, imm20
{mask: 0x0000007f, value: 0x00000037, op: LUI, args: argTypeList{arg_rd, arg_imm20}},
// LW rd, rs1_mem
{mask: 0x0000707f, value: 0x00002003, op: LW, args: argTypeList{arg_rd, arg_rs1_mem}},
// LWU rd, rs1_mem
{mask: 0x0000707f, value: 0x00006003, op: LWU, args: argTypeList{arg_rd, arg_rs1_mem}},
// MAX rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0a006033, op: MAX, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MAXU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0a007033, op: MAXU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MIN rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0a004033, op: MIN, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MINU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0a005033, op: MINU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MUL rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02000033, op: MUL, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MULH rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02001033, op: MULH, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MULHSU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02002033, op: MULHSU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MULHU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02003033, op: MULHU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// MULW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0200003b, op: MULW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// OR rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00006033, op: OR, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// ORC.B rd, rs1
{mask: 0xfff0707f, value: 0x28705013, op: ORC_B, args: argTypeList{arg_rd, arg_rs1}},
// ORI rd, rs1, imm12
{mask: 0x0000707f, value: 0x00006013, op: ORI, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// ORN rd, rs1, rs2
{mask: 0xfe00707f, value: 0x40006033, op: ORN, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// REM rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02006033, op: REM, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// REMU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x02007033, op: REMU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// REMUW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0200703b, op: REMUW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// REMW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0200603b, op: REMW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// REV8 rd, rs1
{mask: 0xfff0707f, value: 0x6b805013, op: REV8, args: argTypeList{arg_rd, arg_rs1}},
// ROL rd, rs1, rs2
{mask: 0xfe00707f, value: 0x60001033, op: ROL, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// ROLW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x6000103b, op: ROLW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// ROR rd, rs1, rs2
{mask: 0xfe00707f, value: 0x60005033, op: ROR, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// RORI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x60005013, op: RORI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// RORIW rd, rs1, shamt5
{mask: 0xfe00707f, value: 0x6000501b, op: RORIW, args: argTypeList{arg_rd, arg_rs1, arg_shamt5}},
// RORW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x6000503b, op: RORW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SB rs2, rs1_store
{mask: 0x0000707f, value: 0x00000023, op: SB, args: argTypeList{arg_rs2, arg_rs1_store}},
// SC.D rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1800302f, op: SC_D, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.D.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1c00302f, op: SC_D_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.D.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1e00302f, op: SC_D_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.D.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1a00302f, op: SC_D_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.W rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1800202f, op: SC_W, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.W.AQ rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1c00202f, op: SC_W_AQ, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.W.AQRL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1e00202f, op: SC_W_AQRL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SC.W.RL rd, rs2, rs1_amo
{mask: 0xfe00707f, value: 0x1a00202f, op: SC_W_RL, args: argTypeList{arg_rd, arg_rs2, arg_rs1_amo}},
// SD rs2, rs1_store
{mask: 0x0000707f, value: 0x00003023, op: SD, args: argTypeList{arg_rs2, arg_rs1_store}},
// SEXT.B rd, rs1
{mask: 0xfff0707f, value: 0x60401013, op: SEXT_B, args: argTypeList{arg_rd, arg_rs1}},
// SEXT.H rd, rs1
{mask: 0xfff0707f, value: 0x60501013, op: SEXT_H, args: argTypeList{arg_rd, arg_rs1}},
// SH rs2, rs1_store
{mask: 0x0000707f, value: 0x00001023, op: SH, args: argTypeList{arg_rs2, arg_rs1_store}},
// SH1ADD rd, rs1, rs2
{mask: 0xfe00707f, value: 0x20002033, op: SH1ADD, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SH1ADD.UW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x2000203b, op: SH1ADD_UW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SH2ADD rd, rs1, rs2
{mask: 0xfe00707f, value: 0x20004033, op: SH2ADD, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SH2ADD.UW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x2000403b, op: SH2ADD_UW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SH3ADD rd, rs1, rs2
{mask: 0xfe00707f, value: 0x20006033, op: SH3ADD, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SH3ADD.UW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x2000603b, op: SH3ADD_UW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SLL rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00001033, op: SLL, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SLLI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x00001013, op: SLLI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// SLLIW rd, rs1, shamt5
{mask: 0xfe00707f, value: 0x0000101b, op: SLLIW, args: argTypeList{arg_rd, arg_rs1, arg_shamt5}},
// SLLI.UW rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x0800101b, op: SLLI_UW, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// SLLW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0000103b, op: SLLW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SLT rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00002033, op: SLT, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SLTI rd, rs1, imm12
{mask: 0x0000707f, value: 0x00002013, op: SLTI, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// SLTIU rd, rs1, imm12
{mask: 0x0000707f, value: 0x00003013, op: SLTIU, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// SLTU rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00003033, op: SLTU, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SRA rd, rs1, rs2
{mask: 0xfe00707f, value: 0x40005033, op: SRA, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SRAI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x40005013, op: SRAI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// SRAIW rd, rs1, shamt5
{mask: 0xfe00707f, value: 0x4000501b, op: SRAIW, args: argTypeList{arg_rd, arg_rs1, arg_shamt5}},
// SRAW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x4000503b, op: SRAW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SRL rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00005033, op: SRL, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SRLI rd, rs1, shamt6
{mask: 0xfc00707f, value: 0x00005013, op: SRLI, args: argTypeList{arg_rd, arg_rs1, arg_shamt6}},
// SRLIW rd, rs1, shamt5
{mask: 0xfe00707f, value: 0x0000501b, op: SRLIW, args: argTypeList{arg_rd, arg_rs1, arg_shamt5}},
// SRLW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x0000503b, op: SRLW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SUB rd, rs1, rs2
{mask: 0xfe00707f, value: 0x40000033, op: SUB, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SUBW rd, rs1, rs2
{mask: 0xfe00707f, value: 0x4000003b, op: SUBW, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// SW rs2, rs1_store
{mask: 0x0000707f, value: 0x00002023, op: SW, args: argTypeList{arg_rs2, arg_rs1_store}},
// XNOR rd, rs1, rs2
{mask: 0xfe00707f, value: 0x40004033, op: XNOR, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// XOR rd, rs1, rs2
{mask: 0xfe00707f, value: 0x00004033, op: XOR, args: argTypeList{arg_rd, arg_rs1, arg_rs2}},
// XORI rd, rs1, imm12
{mask: 0x0000707f, value: 0x00004013, op: XORI, args: argTypeList{arg_rd, arg_rs1, arg_imm12}},
// ZEXT.H rd, rs1
{mask: 0xfff0707f, value: 0x0800403b, op: ZEXT_H, args: argTypeList{arg_rd, arg_rs1}},
}