blob: c85d47c22e25e9c2ed8af8244771b67d08a9e7fa [file] [log] [blame]
// Generated by loong64spec LoongArch-Vol1-EN.pdf, 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 loong64asm
const (
_ Op = iota
ADDI_D
ADDI_W
ADDU16I_D
ADD_D
ADD_W
ALSL_D
ALSL_W
ALSL_WU
AMADD_B
AMADD_D
AMADD_DB_B
AMADD_DB_D
AMADD_DB_H
AMADD_DB_W
AMADD_H
AMADD_W
AMAND_D
AMAND_DB_D
AMAND_DB_W
AMAND_W
AMCAS_B
AMCAS_D
AMCAS_DB_B
AMCAS_DB_D
AMCAS_DB_H
AMCAS_DB_W
AMCAS_H
AMCAS_W
AMMAX_D
AMMAX_DB_D
AMMAX_DB_DU
AMMAX_DB_W
AMMAX_DB_WU
AMMAX_DU
AMMAX_W
AMMAX_WU
AMMIN_D
AMMIN_DB_D
AMMIN_DB_DU
AMMIN_DB_W
AMMIN_DB_WU
AMMIN_DU
AMMIN_W
AMMIN_WU
AMOR_D
AMOR_DB_D
AMOR_DB_W
AMOR_W
AMSWAP_B
AMSWAP_D
AMSWAP_DB_B
AMSWAP_DB_D
AMSWAP_DB_H
AMSWAP_DB_W
AMSWAP_H
AMSWAP_W
AMXOR_D
AMXOR_DB_D
AMXOR_DB_W
AMXOR_W
AND
ANDI
ANDN
ASRTGT_D
ASRTLE_D
B
BCEQZ
BCNEZ
BEQ
BEQZ
BGE
BGEU
BITREV_4B
BITREV_8B
BITREV_D
BITREV_W
BL
BLT
BLTU
BNE
BNEZ
BREAK
BSTRINS_D
BSTRINS_W
BSTRPICK_D
BSTRPICK_W
BYTEPICK_D
BYTEPICK_W
CACOP
CLO_D
CLO_W
CLZ_D
CLZ_W
CPUCFG
CRCC_W_B_W
CRCC_W_D_W
CRCC_W_H_W
CRCC_W_W_W
CRC_W_B_W
CRC_W_D_W
CRC_W_H_W
CRC_W_W_W
CSRRD
CSRWR
CSRXCHG
CTO_D
CTO_W
CTZ_D
CTZ_W
DBAR
DBCL
DIV_D
DIV_DU
DIV_W
DIV_WU
ERTN
EXT_W_B
EXT_W_H
FABS_D
FABS_S
FADD_D
FADD_S
FCLASS_D
FCLASS_S
FCMP_CAF_D
FCMP_CAF_S
FCMP_CEQ_D
FCMP_CEQ_S
FCMP_CLE_D
FCMP_CLE_S
FCMP_CLT_D
FCMP_CLT_S
FCMP_CNE_D
FCMP_CNE_S
FCMP_COR_D
FCMP_COR_S
FCMP_CUEQ_D
FCMP_CUEQ_S
FCMP_CULE_D
FCMP_CULE_S
FCMP_CULT_D
FCMP_CULT_S
FCMP_CUNE_D
FCMP_CUNE_S
FCMP_CUN_D
FCMP_CUN_S
FCMP_SAF_D
FCMP_SAF_S
FCMP_SEQ_D
FCMP_SEQ_S
FCMP_SLE_D
FCMP_SLE_S
FCMP_SLT_D
FCMP_SLT_S
FCMP_SNE_D
FCMP_SNE_S
FCMP_SOR_D
FCMP_SOR_S
FCMP_SUEQ_D
FCMP_SUEQ_S
FCMP_SULE_D
FCMP_SULE_S
FCMP_SULT_D
FCMP_SULT_S
FCMP_SUNE_D
FCMP_SUNE_S
FCMP_SUN_D
FCMP_SUN_S
FCOPYSIGN_D
FCOPYSIGN_S
FCVT_D_S
FCVT_S_D
FDIV_D
FDIV_S
FFINT_D_L
FFINT_D_W
FFINT_S_L
FFINT_S_W
FLDGT_D
FLDGT_S
FLDLE_D
FLDLE_S
FLDX_D
FLDX_S
FLD_D
FLD_S
FLOGB_D
FLOGB_S
FMADD_D
FMADD_S
FMAXA_D
FMAXA_S
FMAX_D
FMAX_S
FMINA_D
FMINA_S
FMIN_D
FMIN_S
FMOV_D
FMOV_S
FMSUB_D
FMSUB_S
FMUL_D
FMUL_S
FNEG_D
FNEG_S
FNMADD_D
FNMADD_S
FNMSUB_D
FNMSUB_S
FRECIPE_D
FRECIPE_S
FRECIP_D
FRECIP_S
FRINT_D
FRINT_S
FRSQRTE_D
FRSQRTE_S
FRSQRT_D
FRSQRT_S
FSCALEB_D
FSCALEB_S
FSEL
FSQRT_D
FSQRT_S
FSTGT_D
FSTGT_S
FSTLE_D
FSTLE_S
FSTX_D
FSTX_S
FST_D
FST_S
FSUB_D
FSUB_S
FTINTRM_L_D
FTINTRM_L_S
FTINTRM_W_D
FTINTRM_W_S
FTINTRNE_L_D
FTINTRNE_L_S
FTINTRNE_W_D
FTINTRNE_W_S
FTINTRP_L_D
FTINTRP_L_S
FTINTRP_W_D
FTINTRP_W_S
FTINTRZ_L_D
FTINTRZ_L_S
FTINTRZ_W_D
FTINTRZ_W_S
FTINT_L_D
FTINT_L_S
FTINT_W_D
FTINT_W_S
IBAR
IDLE
INVTLB
IOCSRRD_B
IOCSRRD_D
IOCSRRD_H
IOCSRRD_W
IOCSRWR_B
IOCSRWR_D
IOCSRWR_H
IOCSRWR_W
JIRL
LDDIR
LDGT_B
LDGT_D
LDGT_H
LDGT_W
LDLE_B
LDLE_D
LDLE_H
LDLE_W
LDPTE
LDPTR_D
LDPTR_W
LDX_B
LDX_BU
LDX_D
LDX_H
LDX_HU
LDX_W
LDX_WU
LD_B
LD_BU
LD_D
LD_H
LD_HU
LD_W
LD_WU
LLACQ_D
LLACQ_W
LL_D
LL_W
LU12I_W
LU32I_D
LU52I_D
MASKEQZ
MASKNEZ
MOD_D
MOD_DU
MOD_W
MOD_WU
MOVCF2FR
MOVCF2GR
MOVFCSR2GR
MOVFR2CF
MOVFR2GR_D
MOVFR2GR_S
MOVFRH2GR_S
MOVGR2CF
MOVGR2FCSR
MOVGR2FRH_W
MOVGR2FR_D
MOVGR2FR_W
MULH_D
MULH_DU
MULH_W
MULH_WU
MULW_D_W
MULW_D_WU
MUL_D
MUL_W
NOR
OR
ORI
ORN
PCADDI
PCADDU12I
PCADDU18I
PCALAU12I
PRELD
PRELDX
RDTIMEH_W
RDTIMEL_W
RDTIME_D
REVB_2H
REVB_2W
REVB_4H
REVB_D
REVH_2W
REVH_D
ROTRI_D
ROTRI_W
ROTR_D
ROTR_W
SCREL_D
SCREL_W
SC_D
SC_Q
SC_W
SLLI_D
SLLI_W
SLL_D
SLL_W
SLT
SLTI
SLTU
SLTUI
SRAI_D
SRAI_W
SRA_D
SRA_W
SRLI_D
SRLI_W
SRL_D
SRL_W
STGT_B
STGT_D
STGT_H
STGT_W
STLE_B
STLE_D
STLE_H
STLE_W
STPTR_D
STPTR_W
STX_B
STX_D
STX_H
STX_W
ST_B
ST_D
ST_H
ST_W
SUB_D
SUB_W
SYSCALL
TLBCLR
TLBFILL
TLBFLUSH
TLBRD
TLBSRCH
TLBWR
XOR
XORI
)
var opstr = [...]string{
ADDI_D: "ADDI.D",
ADDI_W: "ADDI.W",
ADDU16I_D: "ADDU16I.D",
ADD_D: "ADD.D",
ADD_W: "ADD.W",
ALSL_D: "ALSL.D",
ALSL_W: "ALSL.W",
ALSL_WU: "ALSL.WU",
AMADD_B: "AMADD.B",
AMADD_D: "AMADD.D",
AMADD_DB_B: "AMADD_DB.B",
AMADD_DB_D: "AMADD_DB.D",
AMADD_DB_H: "AMADD_DB.H",
AMADD_DB_W: "AMADD_DB.W",
AMADD_H: "AMADD.H",
AMADD_W: "AMADD.W",
AMAND_D: "AMAND.D",
AMAND_DB_D: "AMAND_DB.D",
AMAND_DB_W: "AMAND_DB.W",
AMAND_W: "AMAND.W",
AMCAS_B: "AMCAS.B",
AMCAS_D: "AMCAS.D",
AMCAS_DB_B: "AMCAS_DB.B",
AMCAS_DB_D: "AMCAS_DB.D",
AMCAS_DB_H: "AMCAS_DB.H",
AMCAS_DB_W: "AMCAS_DB.W",
AMCAS_H: "AMCAS.H",
AMCAS_W: "AMCAS.W",
AMMAX_D: "AMMAX.D",
AMMAX_DB_D: "AMMAX_DB.D",
AMMAX_DB_DU: "AMMAX_DB.DU",
AMMAX_DB_W: "AMMAX_DB.W",
AMMAX_DB_WU: "AMMAX_DB.WU",
AMMAX_DU: "AMMAX.DU",
AMMAX_W: "AMMAX.W",
AMMAX_WU: "AMMAX.WU",
AMMIN_D: "AMMIN.D",
AMMIN_DB_D: "AMMIN_DB.D",
AMMIN_DB_DU: "AMMIN_DB.DU",
AMMIN_DB_W: "AMMIN_DB.W",
AMMIN_DB_WU: "AMMIN_DB.WU",
AMMIN_DU: "AMMIN.DU",
AMMIN_W: "AMMIN.W",
AMMIN_WU: "AMMIN.WU",
AMOR_D: "AMOR.D",
AMOR_DB_D: "AMOR_DB.D",
AMOR_DB_W: "AMOR_DB.W",
AMOR_W: "AMOR.W",
AMSWAP_B: "AMSWAP.B",
AMSWAP_D: "AMSWAP.D",
AMSWAP_DB_B: "AMSWAP_DB.B",
AMSWAP_DB_D: "AMSWAP_DB.D",
AMSWAP_DB_H: "AMSWAP_DB.H",
AMSWAP_DB_W: "AMSWAP_DB.W",
AMSWAP_H: "AMSWAP.H",
AMSWAP_W: "AMSWAP.W",
AMXOR_D: "AMXOR.D",
AMXOR_DB_D: "AMXOR_DB.D",
AMXOR_DB_W: "AMXOR_DB.W",
AMXOR_W: "AMXOR.W",
AND: "AND",
ANDI: "ANDI",
ANDN: "ANDN",
ASRTGT_D: "ASRTGT.D",
ASRTLE_D: "ASRTLE.D",
B: "B",
BCEQZ: "BCEQZ",
BCNEZ: "BCNEZ",
BEQ: "BEQ",
BEQZ: "BEQZ",
BGE: "BGE",
BGEU: "BGEU",
BITREV_4B: "BITREV.4B",
BITREV_8B: "BITREV.8B",
BITREV_D: "BITREV.D",
BITREV_W: "BITREV.W",
BL: "BL",
BLT: "BLT",
BLTU: "BLTU",
BNE: "BNE",
BNEZ: "BNEZ",
BREAK: "BREAK",
BSTRINS_D: "BSTRINS.D",
BSTRINS_W: "BSTRINS.W",
BSTRPICK_D: "BSTRPICK.D",
BSTRPICK_W: "BSTRPICK.W",
BYTEPICK_D: "BYTEPICK.D",
BYTEPICK_W: "BYTEPICK.W",
CACOP: "CACOP",
CLO_D: "CLO.D",
CLO_W: "CLO.W",
CLZ_D: "CLZ.D",
CLZ_W: "CLZ.W",
CPUCFG: "CPUCFG",
CRCC_W_B_W: "CRCC.W.B.W",
CRCC_W_D_W: "CRCC.W.D.W",
CRCC_W_H_W: "CRCC.W.H.W",
CRCC_W_W_W: "CRCC.W.W.W",
CRC_W_B_W: "CRC.W.B.W",
CRC_W_D_W: "CRC.W.D.W",
CRC_W_H_W: "CRC.W.H.W",
CRC_W_W_W: "CRC.W.W.W",
CSRRD: "CSRRD",
CSRWR: "CSRWR",
CSRXCHG: "CSRXCHG",
CTO_D: "CTO.D",
CTO_W: "CTO.W",
CTZ_D: "CTZ.D",
CTZ_W: "CTZ.W",
DBAR: "DBAR",
DBCL: "DBCL",
DIV_D: "DIV.D",
DIV_DU: "DIV.DU",
DIV_W: "DIV.W",
DIV_WU: "DIV.WU",
ERTN: "ERTN",
EXT_W_B: "EXT.W.B",
EXT_W_H: "EXT.W.H",
FABS_D: "FABS.D",
FABS_S: "FABS.S",
FADD_D: "FADD.D",
FADD_S: "FADD.S",
FCLASS_D: "FCLASS.D",
FCLASS_S: "FCLASS.S",
FCMP_CAF_D: "FCMP.CAF.D",
FCMP_CAF_S: "FCMP.CAF.S",
FCMP_CEQ_D: "FCMP.CEQ.D",
FCMP_CEQ_S: "FCMP.CEQ.S",
FCMP_CLE_D: "FCMP.CLE.D",
FCMP_CLE_S: "FCMP.CLE.S",
FCMP_CLT_D: "FCMP.CLT.D",
FCMP_CLT_S: "FCMP.CLT.S",
FCMP_CNE_D: "FCMP.CNE.D",
FCMP_CNE_S: "FCMP.CNE.S",
FCMP_COR_D: "FCMP.COR.D",
FCMP_COR_S: "FCMP.COR.S",
FCMP_CUEQ_D: "FCMP.CUEQ.D",
FCMP_CUEQ_S: "FCMP.CUEQ.S",
FCMP_CULE_D: "FCMP.CULE.D",
FCMP_CULE_S: "FCMP.CULE.S",
FCMP_CULT_D: "FCMP.CULT.D",
FCMP_CULT_S: "FCMP.CULT.S",
FCMP_CUNE_D: "FCMP.CUNE.D",
FCMP_CUNE_S: "FCMP.CUNE.S",
FCMP_CUN_D: "FCMP.CUN.D",
FCMP_CUN_S: "FCMP.CUN.S",
FCMP_SAF_D: "FCMP.SAF.D",
FCMP_SAF_S: "FCMP.SAF.S",
FCMP_SEQ_D: "FCMP.SEQ.D",
FCMP_SEQ_S: "FCMP.SEQ.S",
FCMP_SLE_D: "FCMP.SLE.D",
FCMP_SLE_S: "FCMP.SLE.S",
FCMP_SLT_D: "FCMP.SLT.D",
FCMP_SLT_S: "FCMP.SLT.S",
FCMP_SNE_D: "FCMP.SNE.D",
FCMP_SNE_S: "FCMP.SNE.S",
FCMP_SOR_D: "FCMP.SOR.D",
FCMP_SOR_S: "FCMP.SOR.S",
FCMP_SUEQ_D: "FCMP.SUEQ.D",
FCMP_SUEQ_S: "FCMP.SUEQ.S",
FCMP_SULE_D: "FCMP.SULE.D",
FCMP_SULE_S: "FCMP.SULE.S",
FCMP_SULT_D: "FCMP.SULT.D",
FCMP_SULT_S: "FCMP.SULT.S",
FCMP_SUNE_D: "FCMP.SUNE.D",
FCMP_SUNE_S: "FCMP.SUNE.S",
FCMP_SUN_D: "FCMP.SUN.D",
FCMP_SUN_S: "FCMP.SUN.S",
FCOPYSIGN_D: "FCOPYSIGN.D",
FCOPYSIGN_S: "FCOPYSIGN.S",
FCVT_D_S: "FCVT.D.S",
FCVT_S_D: "FCVT.S.D",
FDIV_D: "FDIV.D",
FDIV_S: "FDIV.S",
FFINT_D_L: "FFINT.D.L",
FFINT_D_W: "FFINT.D.W",
FFINT_S_L: "FFINT.S.L",
FFINT_S_W: "FFINT.S.W",
FLDGT_D: "FLDGT.D",
FLDGT_S: "FLDGT.S",
FLDLE_D: "FLDLE.D",
FLDLE_S: "FLDLE.S",
FLDX_D: "FLDX.D",
FLDX_S: "FLDX.S",
FLD_D: "FLD.D",
FLD_S: "FLD.S",
FLOGB_D: "FLOGB.D",
FLOGB_S: "FLOGB.S",
FMADD_D: "FMADD.D",
FMADD_S: "FMADD.S",
FMAXA_D: "FMAXA.D",
FMAXA_S: "FMAXA.S",
FMAX_D: "FMAX.D",
FMAX_S: "FMAX.S",
FMINA_D: "FMINA.D",
FMINA_S: "FMINA.S",
FMIN_D: "FMIN.D",
FMIN_S: "FMIN.S",
FMOV_D: "FMOV.D",
FMOV_S: "FMOV.S",
FMSUB_D: "FMSUB.D",
FMSUB_S: "FMSUB.S",
FMUL_D: "FMUL.D",
FMUL_S: "FMUL.S",
FNEG_D: "FNEG.D",
FNEG_S: "FNEG.S",
FNMADD_D: "FNMADD.D",
FNMADD_S: "FNMADD.S",
FNMSUB_D: "FNMSUB.D",
FNMSUB_S: "FNMSUB.S",
FRECIPE_D: "FRECIPE.D",
FRECIPE_S: "FRECIPE.S",
FRECIP_D: "FRECIP.D",
FRECIP_S: "FRECIP.S",
FRINT_D: "FRINT.D",
FRINT_S: "FRINT.S",
FRSQRTE_D: "FRSQRTE.D",
FRSQRTE_S: "FRSQRTE.S",
FRSQRT_D: "FRSQRT.D",
FRSQRT_S: "FRSQRT.S",
FSCALEB_D: "FSCALEB.D",
FSCALEB_S: "FSCALEB.S",
FSEL: "FSEL",
FSQRT_D: "FSQRT.D",
FSQRT_S: "FSQRT.S",
FSTGT_D: "FSTGT.D",
FSTGT_S: "FSTGT.S",
FSTLE_D: "FSTLE.D",
FSTLE_S: "FSTLE.S",
FSTX_D: "FSTX.D",
FSTX_S: "FSTX.S",
FST_D: "FST.D",
FST_S: "FST.S",
FSUB_D: "FSUB.D",
FSUB_S: "FSUB.S",
FTINTRM_L_D: "FTINTRM.L.D",
FTINTRM_L_S: "FTINTRM.L.S",
FTINTRM_W_D: "FTINTRM.W.D",
FTINTRM_W_S: "FTINTRM.W.S",
FTINTRNE_L_D: "FTINTRNE.L.D",
FTINTRNE_L_S: "FTINTRNE.L.S",
FTINTRNE_W_D: "FTINTRNE.W.D",
FTINTRNE_W_S: "FTINTRNE.W.S",
FTINTRP_L_D: "FTINTRP.L.D",
FTINTRP_L_S: "FTINTRP.L.S",
FTINTRP_W_D: "FTINTRP.W.D",
FTINTRP_W_S: "FTINTRP.W.S",
FTINTRZ_L_D: "FTINTRZ.L.D",
FTINTRZ_L_S: "FTINTRZ.L.S",
FTINTRZ_W_D: "FTINTRZ.W.D",
FTINTRZ_W_S: "FTINTRZ.W.S",
FTINT_L_D: "FTINT.L.D",
FTINT_L_S: "FTINT.L.S",
FTINT_W_D: "FTINT.W.D",
FTINT_W_S: "FTINT.W.S",
IBAR: "IBAR",
IDLE: "IDLE",
INVTLB: "INVTLB",
IOCSRRD_B: "IOCSRRD.B",
IOCSRRD_D: "IOCSRRD.D",
IOCSRRD_H: "IOCSRRD.H",
IOCSRRD_W: "IOCSRRD.W",
IOCSRWR_B: "IOCSRWR.B",
IOCSRWR_D: "IOCSRWR.D",
IOCSRWR_H: "IOCSRWR.H",
IOCSRWR_W: "IOCSRWR.W",
JIRL: "JIRL",
LDDIR: "LDDIR",
LDGT_B: "LDGT.B",
LDGT_D: "LDGT.D",
LDGT_H: "LDGT.H",
LDGT_W: "LDGT.W",
LDLE_B: "LDLE.B",
LDLE_D: "LDLE.D",
LDLE_H: "LDLE.H",
LDLE_W: "LDLE.W",
LDPTE: "LDPTE",
LDPTR_D: "LDPTR.D",
LDPTR_W: "LDPTR.W",
LDX_B: "LDX.B",
LDX_BU: "LDX.BU",
LDX_D: "LDX.D",
LDX_H: "LDX.H",
LDX_HU: "LDX.HU",
LDX_W: "LDX.W",
LDX_WU: "LDX.WU",
LD_B: "LD.B",
LD_BU: "LD.BU",
LD_D: "LD.D",
LD_H: "LD.H",
LD_HU: "LD.HU",
LD_W: "LD.W",
LD_WU: "LD.WU",
LLACQ_D: "LLACQ.D",
LLACQ_W: "LLACQ.W",
LL_D: "LL.D",
LL_W: "LL.W",
LU12I_W: "LU12I.W",
LU32I_D: "LU32I.D",
LU52I_D: "LU52I.D",
MASKEQZ: "MASKEQZ",
MASKNEZ: "MASKNEZ",
MOD_D: "MOD.D",
MOD_DU: "MOD.DU",
MOD_W: "MOD.W",
MOD_WU: "MOD.WU",
MOVCF2FR: "MOVCF2FR",
MOVCF2GR: "MOVCF2GR",
MOVFCSR2GR: "MOVFCSR2GR",
MOVFR2CF: "MOVFR2CF",
MOVFR2GR_D: "MOVFR2GR.D",
MOVFR2GR_S: "MOVFR2GR.S",
MOVFRH2GR_S: "MOVFRH2GR.S",
MOVGR2CF: "MOVGR2CF",
MOVGR2FCSR: "MOVGR2FCSR",
MOVGR2FRH_W: "MOVGR2FRH.W",
MOVGR2FR_D: "MOVGR2FR.D",
MOVGR2FR_W: "MOVGR2FR.W",
MULH_D: "MULH.D",
MULH_DU: "MULH.DU",
MULH_W: "MULH.W",
MULH_WU: "MULH.WU",
MULW_D_W: "MULW.D.W",
MULW_D_WU: "MULW.D.WU",
MUL_D: "MUL.D",
MUL_W: "MUL.W",
NOR: "NOR",
OR: "OR",
ORI: "ORI",
ORN: "ORN",
PCADDI: "PCADDI",
PCADDU12I: "PCADDU12I",
PCADDU18I: "PCADDU18I",
PCALAU12I: "PCALAU12I",
PRELD: "PRELD",
PRELDX: "PRELDX",
RDTIMEH_W: "RDTIMEH.W",
RDTIMEL_W: "RDTIMEL.W",
RDTIME_D: "RDTIME.D",
REVB_2H: "REVB.2H",
REVB_2W: "REVB.2W",
REVB_4H: "REVB.4H",
REVB_D: "REVB.D",
REVH_2W: "REVH.2W",
REVH_D: "REVH.D",
ROTRI_D: "ROTRI.D",
ROTRI_W: "ROTRI.W",
ROTR_D: "ROTR.D",
ROTR_W: "ROTR.W",
SCREL_D: "SCREL.D",
SCREL_W: "SCREL.W",
SC_D: "SC.D",
SC_Q: "SC.Q",
SC_W: "SC.W",
SLLI_D: "SLLI.D",
SLLI_W: "SLLI.W",
SLL_D: "SLL.D",
SLL_W: "SLL.W",
SLT: "SLT",
SLTI: "SLTI",
SLTU: "SLTU",
SLTUI: "SLTUI",
SRAI_D: "SRAI.D",
SRAI_W: "SRAI.W",
SRA_D: "SRA.D",
SRA_W: "SRA.W",
SRLI_D: "SRLI.D",
SRLI_W: "SRLI.W",
SRL_D: "SRL.D",
SRL_W: "SRL.W",
STGT_B: "STGT.B",
STGT_D: "STGT.D",
STGT_H: "STGT.H",
STGT_W: "STGT.W",
STLE_B: "STLE.B",
STLE_D: "STLE.D",
STLE_H: "STLE.H",
STLE_W: "STLE.W",
STPTR_D: "STPTR.D",
STPTR_W: "STPTR.W",
STX_B: "STX.B",
STX_D: "STX.D",
STX_H: "STX.H",
STX_W: "STX.W",
ST_B: "ST.B",
ST_D: "ST.D",
ST_H: "ST.H",
ST_W: "ST.W",
SUB_D: "SUB.D",
SUB_W: "SUB.W",
SYSCALL: "SYSCALL",
TLBCLR: "TLBCLR",
TLBFILL: "TLBFILL",
TLBFLUSH: "TLBFLUSH",
TLBRD: "TLBRD",
TLBSRCH: "TLBSRCH",
TLBWR: "TLBWR",
XOR: "XOR",
XORI: "XORI",
}
var instFormats = [...]instFormat{
// ADDI.D rd, rj, si12
{mask: 0xffc00000, value: 0x02c00000, op: ADDI_D, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// ADDI.W rd, rj, si12
{mask: 0xffc00000, value: 0x02800000, op: ADDI_W, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// ADDU16I.D rd, rj, si16
{mask: 0xfc000000, value: 0x10000000, op: ADDU16I_D, args: instArgs{arg_rd, arg_rj, arg_si16_25_10}},
// ADD.D rd, rj, rk
{mask: 0xffff8000, value: 0x00108000, op: ADD_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ADD.W rd, rj, rk
{mask: 0xffff8000, value: 0x00100000, op: ADD_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ALSL.D rd, rj, rk, sa2
{mask: 0xfffe0000, value: 0x002c0000, op: ALSL_D, args: instArgs{arg_rd, arg_rj, arg_rk, arg_sa2_16_15}},
// ALSL.W rd, rj, rk, sa2
{mask: 0xfffe0000, value: 0x00040000, op: ALSL_W, args: instArgs{arg_rd, arg_rj, arg_rk, arg_sa2_16_15}},
// ALSL.WU rd, rj, rk, sa2
{mask: 0xfffe0000, value: 0x00060000, op: ALSL_WU, args: instArgs{arg_rd, arg_rj, arg_rk, arg_sa2_16_15}},
// AMADD.B rd, rk, rj
{mask: 0xffff8000, value: 0x385d0000, op: AMADD_B, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD.D rd, rk, rj
{mask: 0xffff8000, value: 0x38618000, op: AMADD_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD_DB.B rd, rk, rj
{mask: 0xffff8000, value: 0x385f0000, op: AMADD_DB_B, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x386a8000, op: AMADD_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD_DB.H rd, rk, rj
{mask: 0xffff8000, value: 0x385f8000, op: AMADD_DB_H, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x386a0000, op: AMADD_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD.H rd, rk, rj
{mask: 0xffff8000, value: 0x385d8000, op: AMADD_H, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMADD.W rd, rk, rj
{mask: 0xffff8000, value: 0x38610000, op: AMADD_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMAND.D rd, rk, rj
{mask: 0xffff8000, value: 0x38628000, op: AMAND_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMAND_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x386b8000, op: AMAND_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMAND_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x386b0000, op: AMAND_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMAND.W rd, rk, rj
{mask: 0xffff8000, value: 0x38620000, op: AMAND_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS.B rd, rk, rj
{mask: 0xffff8000, value: 0x38580000, op: AMCAS_B, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS.D rd, rk, rj
{mask: 0xffff8000, value: 0x38598000, op: AMCAS_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS_DB.B rd, rk, rj
{mask: 0xffff8000, value: 0x385a0000, op: AMCAS_DB_B, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x385b8000, op: AMCAS_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS_DB.H rd, rk, rj
{mask: 0xffff8000, value: 0x385a8000, op: AMCAS_DB_H, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x385b0000, op: AMCAS_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS.H rd, rk, rj
{mask: 0xffff8000, value: 0x38588000, op: AMCAS_H, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMCAS.W rd, rk, rj
{mask: 0xffff8000, value: 0x38590000, op: AMCAS_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX.D rd, rk, rj
{mask: 0xffff8000, value: 0x38658000, op: AMMAX_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x386e8000, op: AMMAX_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX_DB.DU rd, rk, rj
{mask: 0xffff8000, value: 0x38708000, op: AMMAX_DB_DU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x386e0000, op: AMMAX_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX_DB.WU rd, rk, rj
{mask: 0xffff8000, value: 0x38700000, op: AMMAX_DB_WU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX.DU rd, rk, rj
{mask: 0xffff8000, value: 0x38678000, op: AMMAX_DU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX.W rd, rk, rj
{mask: 0xffff8000, value: 0x38650000, op: AMMAX_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMAX.WU rd, rk, rj
{mask: 0xffff8000, value: 0x38670000, op: AMMAX_WU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN.D rd, rk, rj
{mask: 0xffff8000, value: 0x38668000, op: AMMIN_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x386f8000, op: AMMIN_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN_DB.DU rd, rk, rj
{mask: 0xffff8000, value: 0x38718000, op: AMMIN_DB_DU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x386f0000, op: AMMIN_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN_DB.WU rd, rk, rj
{mask: 0xffff8000, value: 0x38710000, op: AMMIN_DB_WU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN.DU rd, rk, rj
{mask: 0xffff8000, value: 0x38688000, op: AMMIN_DU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN.W rd, rk, rj
{mask: 0xffff8000, value: 0x38660000, op: AMMIN_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMMIN.WU rd, rk, rj
{mask: 0xffff8000, value: 0x38680000, op: AMMIN_WU, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMOR.D rd, rk, rj
{mask: 0xffff8000, value: 0x38638000, op: AMOR_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMOR_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x386c8000, op: AMOR_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMOR_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x386c0000, op: AMOR_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMOR.W rd, rk, rj
{mask: 0xffff8000, value: 0x38630000, op: AMOR_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP.B rd, rk, rj
{mask: 0xffff8000, value: 0x385c0000, op: AMSWAP_B, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP.D rd, rk, rj
{mask: 0xffff8000, value: 0x38608000, op: AMSWAP_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP_DB.B rd, rk, rj
{mask: 0xffff8000, value: 0x385e0000, op: AMSWAP_DB_B, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x38698000, op: AMSWAP_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP_DB.H rd, rk, rj
{mask: 0xffff8000, value: 0x385e8000, op: AMSWAP_DB_H, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x38690000, op: AMSWAP_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP.H rd, rk, rj
{mask: 0xffff8000, value: 0x385c8000, op: AMSWAP_H, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMSWAP.W rd, rk, rj
{mask: 0xffff8000, value: 0x38600000, op: AMSWAP_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMXOR.D rd, rk, rj
{mask: 0xffff8000, value: 0x38648000, op: AMXOR_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMXOR_DB.D rd, rk, rj
{mask: 0xffff8000, value: 0x386d8000, op: AMXOR_DB_D, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMXOR_DB.W rd, rk, rj
{mask: 0xffff8000, value: 0x386d0000, op: AMXOR_DB_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AMXOR.W rd, rk, rj
{mask: 0xffff8000, value: 0x38640000, op: AMXOR_W, args: instArgs{arg_rd, arg_rk, arg_rj}},
// AND rd, rj, rk
{mask: 0xffff8000, value: 0x00148000, op: AND, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ANDI rd, rj, ui12
{mask: 0xffc00000, value: 0x03400000, op: ANDI, args: instArgs{arg_rd, arg_rj, arg_ui12_21_10}},
// ANDN rd, rj, rk
{mask: 0xffff8000, value: 0x00168000, op: ANDN, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ASRTGT.D rj, rk
{mask: 0xffff801f, value: 0x00018000, op: ASRTGT_D, args: instArgs{arg_rj, arg_rk}},
// ASRTLE.D rj, rk
{mask: 0xffff801f, value: 0x00010000, op: ASRTLE_D, args: instArgs{arg_rj, arg_rk}},
// B offs
{mask: 0xfc000000, value: 0x50000000, op: B, args: instArgs{arg_offset_25_0}},
// BCEQZ cj, offs
{mask: 0xfc000300, value: 0x48000000, op: BCEQZ, args: instArgs{arg_cj, arg_offset_20_0}},
// BCNEZ cj, offs
{mask: 0xfc000300, value: 0x48000100, op: BCNEZ, args: instArgs{arg_cj, arg_offset_20_0}},
// BEQ rj, rd, offs
{mask: 0xfc000000, value: 0x58000000, op: BEQ, args: instArgs{arg_rj, arg_rd, arg_offset_15_0}},
// BEQZ rj, offs
{mask: 0xfc000000, value: 0x40000000, op: BEQZ, args: instArgs{arg_rj, arg_offset_20_0}},
// BGE rj, rd, offs
{mask: 0xfc000000, value: 0x64000000, op: BGE, args: instArgs{arg_rj, arg_rd, arg_offset_15_0}},
// BGEU rj, rd, offs
{mask: 0xfc000000, value: 0x6c000000, op: BGEU, args: instArgs{arg_rj, arg_rd, arg_offset_15_0}},
// BITREV.4B rd, rj
{mask: 0xfffffc00, value: 0x00004800, op: BITREV_4B, args: instArgs{arg_rd, arg_rj}},
// BITREV.8B rd, rj
{mask: 0xfffffc00, value: 0x00004c00, op: BITREV_8B, args: instArgs{arg_rd, arg_rj}},
// BITREV.D rd, rj
{mask: 0xfffffc00, value: 0x00005400, op: BITREV_D, args: instArgs{arg_rd, arg_rj}},
// BITREV.W rd, rj
{mask: 0xfffffc00, value: 0x00005000, op: BITREV_W, args: instArgs{arg_rd, arg_rj}},
// BL offs
{mask: 0xfc000000, value: 0x54000000, op: BL, args: instArgs{arg_offset_25_0}},
// BLT rj, rd, offs
{mask: 0xfc000000, value: 0x60000000, op: BLT, args: instArgs{arg_rj, arg_rd, arg_offset_15_0}},
// BLTU rj, rd, offs
{mask: 0xfc000000, value: 0x68000000, op: BLTU, args: instArgs{arg_rj, arg_rd, arg_offset_15_0}},
// BNE rj, rd, offs
{mask: 0xfc000000, value: 0x5c000000, op: BNE, args: instArgs{arg_rj, arg_rd, arg_offset_15_0}},
// BNEZ rj, offs
{mask: 0xfc000000, value: 0x44000000, op: BNEZ, args: instArgs{arg_rj, arg_offset_20_0}},
// BREAK code
{mask: 0xffff8000, value: 0x002a0000, op: BREAK, args: instArgs{arg_code_14_0}},
// BSTRINS.D rd, rj, msbd, lsbd
{mask: 0xffc00000, value: 0x00800000, op: BSTRINS_D, args: instArgs{arg_rd, arg_rj, arg_msbd, arg_lsbd}},
// BSTRINS.W rd, rj, msbw, lsbw
{mask: 0xffe08000, value: 0x00600000, op: BSTRINS_W, args: instArgs{arg_rd, arg_rj, arg_msbw, arg_lsbw}},
// BSTRPICK.D rd, rj, msbd, lsbd
{mask: 0xffc00000, value: 0x00c00000, op: BSTRPICK_D, args: instArgs{arg_rd, arg_rj, arg_msbd, arg_lsbd}},
// BSTRPICK.W rd, rj, msbw, lsbw
{mask: 0xffe08000, value: 0x00608000, op: BSTRPICK_W, args: instArgs{arg_rd, arg_rj, arg_msbw, arg_lsbw}},
// BYTEPICK.D rd, rj, rk, sa3
{mask: 0xfffc0000, value: 0x000c0000, op: BYTEPICK_D, args: instArgs{arg_rd, arg_rj, arg_rk, arg_sa3_17_15}},
// BYTEPICK.W rd, rj, rk, sa2
{mask: 0xfffe0000, value: 0x00080000, op: BYTEPICK_W, args: instArgs{arg_rd, arg_rj, arg_rk, arg_sa2_16_15}},
// CACOP code, rj, si12
{mask: 0xffc00000, value: 0x06000000, op: CACOP, args: instArgs{arg_code_4_0, arg_rj, arg_si12_21_10}},
// CLO.D rd, rj
{mask: 0xfffffc00, value: 0x00002000, op: CLO_D, args: instArgs{arg_rd, arg_rj}},
// CLO.W rd, rj
{mask: 0xfffffc00, value: 0x00001000, op: CLO_W, args: instArgs{arg_rd, arg_rj}},
// CLZ.D rd, rj
{mask: 0xfffffc00, value: 0x00002400, op: CLZ_D, args: instArgs{arg_rd, arg_rj}},
// CLZ.W rd, rj
{mask: 0xfffffc00, value: 0x00001400, op: CLZ_W, args: instArgs{arg_rd, arg_rj}},
// CPUCFG rd, rj
{mask: 0xfffffc00, value: 0x00006c00, op: CPUCFG, args: instArgs{arg_rd, arg_rj}},
// CRCC.W.B.W rd, rj, rk
{mask: 0xffff8000, value: 0x00260000, op: CRCC_W_B_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRCC.W.D.W rd, rj, rk
{mask: 0xffff8000, value: 0x00278000, op: CRCC_W_D_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRCC.W.H.W rd, rj, rk
{mask: 0xffff8000, value: 0x00268000, op: CRCC_W_H_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRCC.W.W.W rd, rj, rk
{mask: 0xffff8000, value: 0x00270000, op: CRCC_W_W_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRC.W.B.W rd, rj, rk
{mask: 0xffff8000, value: 0x00240000, op: CRC_W_B_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRC.W.D.W rd, rj, rk
{mask: 0xffff8000, value: 0x00258000, op: CRC_W_D_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRC.W.H.W rd, rj, rk
{mask: 0xffff8000, value: 0x00248000, op: CRC_W_H_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CRC.W.W.W rd, rj, rk
{mask: 0xffff8000, value: 0x00250000, op: CRC_W_W_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// CSRRD rd, csr
{mask: 0xff0003e0, value: 0x04000000, op: CSRRD, args: instArgs{arg_rd, arg_csr_23_10}},
// CSRWR rd, csr
{mask: 0xff0003e0, value: 0x04000020, op: CSRWR, args: instArgs{arg_rd, arg_csr_23_10}},
// CSRXCHG rd, rj, csr
{mask: 0xff000000, value: 0x04000000, op: CSRXCHG, args: instArgs{arg_rd, arg_rj, arg_csr_23_10}},
// CTO.D rd, rj
{mask: 0xfffffc00, value: 0x00002800, op: CTO_D, args: instArgs{arg_rd, arg_rj}},
// CTO.W rd, rj
{mask: 0xfffffc00, value: 0x00001800, op: CTO_W, args: instArgs{arg_rd, arg_rj}},
// CTZ.D rd, rj
{mask: 0xfffffc00, value: 0x00002c00, op: CTZ_D, args: instArgs{arg_rd, arg_rj}},
// CTZ.W rd, rj
{mask: 0xfffffc00, value: 0x00001c00, op: CTZ_W, args: instArgs{arg_rd, arg_rj}},
// DBAR hint
{mask: 0xffff8000, value: 0x38720000, op: DBAR, args: instArgs{arg_hint_14_0}},
// DBCL code
{mask: 0xffff8000, value: 0x002a8000, op: DBCL, args: instArgs{arg_code_14_0}},
// DIV.D rd, rj, rk
{mask: 0xffff8000, value: 0x00220000, op: DIV_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// DIV.DU rd, rj, rk
{mask: 0xffff8000, value: 0x00230000, op: DIV_DU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// DIV.W rd, rj, rk
{mask: 0xffff8000, value: 0x00200000, op: DIV_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// DIV.WU rd, rj, rk
{mask: 0xffff8000, value: 0x00210000, op: DIV_WU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ERTN
{mask: 0xffffffff, value: 0x06483800, op: ERTN, args: instArgs{}},
// EXT.W.B rd, rj
{mask: 0xfffffc00, value: 0x00005c00, op: EXT_W_B, args: instArgs{arg_rd, arg_rj}},
// EXT.W.H rd, rj
{mask: 0xfffffc00, value: 0x00005800, op: EXT_W_H, args: instArgs{arg_rd, arg_rj}},
// FABS.D fd, fj
{mask: 0xfffffc00, value: 0x01140800, op: FABS_D, args: instArgs{arg_fd, arg_fj}},
// FABS.S fd, fj
{mask: 0xfffffc00, value: 0x01140400, op: FABS_S, args: instArgs{arg_fd, arg_fj}},
// FADD.D fd, fj, fk
{mask: 0xffff8000, value: 0x01010000, op: FADD_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FADD.S fd, fj, fk
{mask: 0xffff8000, value: 0x01008000, op: FADD_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FCLASS.D fd, fj
{mask: 0xfffffc00, value: 0x01143800, op: FCLASS_D, args: instArgs{arg_fd, arg_fj}},
// FCLASS.S fd, fj
{mask: 0xfffffc00, value: 0x01143400, op: FCLASS_S, args: instArgs{arg_fd, arg_fj}},
// FCMP.CAF.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c200000, op: FCMP_CAF_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CAF.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c100000, op: FCMP_CAF_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CEQ.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c220000, op: FCMP_CEQ_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CEQ.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c120000, op: FCMP_CEQ_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CLE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c230000, op: FCMP_CLE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CLE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c130000, op: FCMP_CLE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CLT.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c210000, op: FCMP_CLT_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CLT.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c110000, op: FCMP_CLT_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CNE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c280000, op: FCMP_CNE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CNE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c180000, op: FCMP_CNE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.COR.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c2a0000, op: FCMP_COR_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.COR.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c1a0000, op: FCMP_COR_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CUEQ.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c260000, op: FCMP_CUEQ_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CUEQ.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c160000, op: FCMP_CUEQ_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CULE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c270000, op: FCMP_CULE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CULE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c170000, op: FCMP_CULE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CULT.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c250000, op: FCMP_CULT_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CULT.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c150000, op: FCMP_CULT_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CUNE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c2c0000, op: FCMP_CUNE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CUNE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c1c0000, op: FCMP_CUNE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CUN.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c240000, op: FCMP_CUN_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.CUN.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c140000, op: FCMP_CUN_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SAF.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c208000, op: FCMP_SAF_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SAF.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c108000, op: FCMP_SAF_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SEQ.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c228000, op: FCMP_SEQ_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SEQ.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c128000, op: FCMP_SEQ_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SLE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c238000, op: FCMP_SLE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SLE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c138000, op: FCMP_SLE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SLT.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c218000, op: FCMP_SLT_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SLT.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c118000, op: FCMP_SLT_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SNE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c288000, op: FCMP_SNE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SNE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c188000, op: FCMP_SNE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SOR.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c2a8000, op: FCMP_SOR_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SOR.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c1a8000, op: FCMP_SOR_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SUEQ.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c268000, op: FCMP_SUEQ_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SUEQ.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c168000, op: FCMP_SUEQ_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SULE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c278000, op: FCMP_SULE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SULE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c178000, op: FCMP_SULE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SULT.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c258000, op: FCMP_SULT_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SULT.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c158000, op: FCMP_SULT_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SUNE.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c2c8000, op: FCMP_SUNE_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SUNE.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c1c8000, op: FCMP_SUNE_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SUN.D cd, fj, fk
{mask: 0xffff8018, value: 0x0c248000, op: FCMP_SUN_D, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCMP.SUN.S cd, fj, fk
{mask: 0xffff8018, value: 0x0c148000, op: FCMP_SUN_S, args: instArgs{arg_cd, arg_fj, arg_fk}},
// FCOPYSIGN.D fd, fj, fk
{mask: 0xffff8000, value: 0x01130000, op: FCOPYSIGN_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FCOPYSIGN.S fd, fj, fk
{mask: 0xffff8000, value: 0x01128000, op: FCOPYSIGN_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FCVT.D.S fd, fj
{mask: 0xfffffc00, value: 0x01192400, op: FCVT_D_S, args: instArgs{arg_fd, arg_fj}},
// FCVT.S.D fd, fj
{mask: 0xfffffc00, value: 0x01191800, op: FCVT_S_D, args: instArgs{arg_fd, arg_fj}},
// FDIV.D fd, fj, fk
{mask: 0xffff8000, value: 0x01070000, op: FDIV_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FDIV.S fd, fj, fk
{mask: 0xffff8000, value: 0x01068000, op: FDIV_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FFINT.D.L fd, fj
{mask: 0xfffffc00, value: 0x011d2800, op: FFINT_D_L, args: instArgs{arg_fd, arg_fj}},
// FFINT.D.W fd, fj
{mask: 0xfffffc00, value: 0x011d2000, op: FFINT_D_W, args: instArgs{arg_fd, arg_fj}},
// FFINT.S.L fd, fj
{mask: 0xfffffc00, value: 0x011d1800, op: FFINT_S_L, args: instArgs{arg_fd, arg_fj}},
// FFINT.S.W fd, fj
{mask: 0xfffffc00, value: 0x011d1000, op: FFINT_S_W, args: instArgs{arg_fd, arg_fj}},
// FLDGT.D fd, rj, rk
{mask: 0xffff8000, value: 0x38748000, op: FLDGT_D, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FLDGT.S fd, rj, rk
{mask: 0xffff8000, value: 0x38740000, op: FLDGT_S, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FLDLE.D fd, rj, rk
{mask: 0xffff8000, value: 0x38758000, op: FLDLE_D, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FLDLE.S fd, rj, rk
{mask: 0xffff8000, value: 0x38750000, op: FLDLE_S, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FLDX.D fd, rj, rk
{mask: 0xffff8000, value: 0x38340000, op: FLDX_D, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FLDX.S fd, rj, rk
{mask: 0xffff8000, value: 0x38300000, op: FLDX_S, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FLD.D fd, rj, si12
{mask: 0xffc00000, value: 0x2b800000, op: FLD_D, args: instArgs{arg_fd, arg_rj, arg_si12_21_10}},
// FLD.S fd, rj, si12
{mask: 0xffc00000, value: 0x2b000000, op: FLD_S, args: instArgs{arg_fd, arg_rj, arg_si12_21_10}},
// FLOGB.D fd, fj
{mask: 0xfffffc00, value: 0x01142800, op: FLOGB_D, args: instArgs{arg_fd, arg_fj}},
// FLOGB.S fd, fj
{mask: 0xfffffc00, value: 0x01142400, op: FLOGB_S, args: instArgs{arg_fd, arg_fj}},
// FMADD.D fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08200000, op: FMADD_D, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FMADD.S fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08100000, op: FMADD_S, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FMAXA.D fd, fj, fk
{mask: 0xffff8000, value: 0x010d0000, op: FMAXA_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMAXA.S fd, fj, fk
{mask: 0xffff8000, value: 0x010c8000, op: FMAXA_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMAX.D fd, fj, fk
{mask: 0xffff8000, value: 0x01090000, op: FMAX_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMAX.S fd, fj, fk
{mask: 0xffff8000, value: 0x01088000, op: FMAX_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMINA.D fd, fj, fk
{mask: 0xffff8000, value: 0x010f0000, op: FMINA_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMINA.S fd, fj, fk
{mask: 0xffff8000, value: 0x010e8000, op: FMINA_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMIN.D fd, fj, fk
{mask: 0xffff8000, value: 0x010b0000, op: FMIN_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMIN.S fd, fj, fk
{mask: 0xffff8000, value: 0x010a8000, op: FMIN_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMOV.D fd, fj
{mask: 0xfffffc00, value: 0x01149800, op: FMOV_D, args: instArgs{arg_fd, arg_fj}},
// FMOV.S fd, fj
{mask: 0xfffffc00, value: 0x01149400, op: FMOV_S, args: instArgs{arg_fd, arg_fj}},
// FMSUB.D fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08600000, op: FMSUB_D, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FMSUB.S fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08500000, op: FMSUB_S, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FMUL.D fd, fj, fk
{mask: 0xffff8000, value: 0x01050000, op: FMUL_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FMUL.S fd, fj, fk
{mask: 0xffff8000, value: 0x01048000, op: FMUL_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FNEG.D fd, fj
{mask: 0xfffffc00, value: 0x01141800, op: FNEG_D, args: instArgs{arg_fd, arg_fj}},
// FNEG.S fd, fj
{mask: 0xfffffc00, value: 0x01141400, op: FNEG_S, args: instArgs{arg_fd, arg_fj}},
// FNMADD.D fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08a00000, op: FNMADD_D, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FNMADD.S fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08900000, op: FNMADD_S, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FNMSUB.D fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08e00000, op: FNMSUB_D, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FNMSUB.S fd, fj, fk, fa
{mask: 0xfff00000, value: 0x08d00000, op: FNMSUB_S, args: instArgs{arg_fd, arg_fj, arg_fk, arg_fa}},
// FRECIPE.D fd, fj
{mask: 0xfffffc00, value: 0x01147800, op: FRECIPE_D, args: instArgs{arg_fd, arg_fj}},
// FRECIPE.S fd, fj
{mask: 0xfffffc00, value: 0x01147400, op: FRECIPE_S, args: instArgs{arg_fd, arg_fj}},
// FRECIP.D fd, fj
{mask: 0xfffffc00, value: 0x01145800, op: FRECIP_D, args: instArgs{arg_fd, arg_fj}},
// FRECIP.S fd, fj
{mask: 0xfffffc00, value: 0x01145400, op: FRECIP_S, args: instArgs{arg_fd, arg_fj}},
// FRINT.D fd, fj
{mask: 0xfffffc00, value: 0x011e4800, op: FRINT_D, args: instArgs{arg_fd, arg_fj}},
// FRINT.S fd, fj
{mask: 0xfffffc00, value: 0x011e4400, op: FRINT_S, args: instArgs{arg_fd, arg_fj}},
// FRSQRTE.D fd, fj
{mask: 0xfffffc00, value: 0x01148800, op: FRSQRTE_D, args: instArgs{arg_fd, arg_fj}},
// FRSQRTE.S fd, fj
{mask: 0xfffffc00, value: 0x01148400, op: FRSQRTE_S, args: instArgs{arg_fd, arg_fj}},
// FRSQRT.D fd, fj
{mask: 0xfffffc00, value: 0x01146800, op: FRSQRT_D, args: instArgs{arg_fd, arg_fj}},
// FRSQRT.S fd, fj
{mask: 0xfffffc00, value: 0x01146400, op: FRSQRT_S, args: instArgs{arg_fd, arg_fj}},
// FSCALEB.D fd, fj, fk
{mask: 0xffff8000, value: 0x01110000, op: FSCALEB_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FSCALEB.S fd, fj, fk
{mask: 0xffff8000, value: 0x01108000, op: FSCALEB_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FSEL fd, fj, fk, ca
{mask: 0xfffc0000, value: 0x0d000000, op: FSEL, args: instArgs{arg_fd, arg_fj, arg_fk, arg_ca}},
// FSQRT.D fd, fj
{mask: 0xfffffc00, value: 0x01144800, op: FSQRT_D, args: instArgs{arg_fd, arg_fj}},
// FSQRT.S fd, fj
{mask: 0xfffffc00, value: 0x01144400, op: FSQRT_S, args: instArgs{arg_fd, arg_fj}},
// FSTGT.D fd, rj, rk
{mask: 0xffff8000, value: 0x38768000, op: FSTGT_D, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FSTGT.S fd, rj, rk
{mask: 0xffff8000, value: 0x38760000, op: FSTGT_S, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FSTLE.D fd, rj, rk
{mask: 0xffff8000, value: 0x38778000, op: FSTLE_D, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FSTLE.S fd, rj, rk
{mask: 0xffff8000, value: 0x38770000, op: FSTLE_S, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FSTX.D fd, rj, rk
{mask: 0xffff8000, value: 0x383c0000, op: FSTX_D, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FSTX.S fd, rj, rk
{mask: 0xffff8000, value: 0x38380000, op: FSTX_S, args: instArgs{arg_fd, arg_rj, arg_rk}},
// FST.D fd, rj, si12
{mask: 0xffc00000, value: 0x2bc00000, op: FST_D, args: instArgs{arg_fd, arg_rj, arg_si12_21_10}},
// FST.S fd, rj, si12
{mask: 0xffc00000, value: 0x2b400000, op: FST_S, args: instArgs{arg_fd, arg_rj, arg_si12_21_10}},
// FSUB.D fd, fj, fk
{mask: 0xffff8000, value: 0x01030000, op: FSUB_D, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FSUB.S fd, fj, fk
{mask: 0xffff8000, value: 0x01028000, op: FSUB_S, args: instArgs{arg_fd, arg_fj, arg_fk}},
// FTINTRM.L.D fd, fj
{mask: 0xfffffc00, value: 0x011a2800, op: FTINTRM_L_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRM.L.S fd, fj
{mask: 0xfffffc00, value: 0x011a2400, op: FTINTRM_L_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRM.W.D fd, fj
{mask: 0xfffffc00, value: 0x011a0800, op: FTINTRM_W_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRM.W.S fd, fj
{mask: 0xfffffc00, value: 0x011a0400, op: FTINTRM_W_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRNE.L.D fd, fj
{mask: 0xfffffc00, value: 0x011ae800, op: FTINTRNE_L_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRNE.L.S fd, fj
{mask: 0xfffffc00, value: 0x011ae400, op: FTINTRNE_L_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRNE.W.D fd, fj
{mask: 0xfffffc00, value: 0x011ac800, op: FTINTRNE_W_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRNE.W.S fd, fj
{mask: 0xfffffc00, value: 0x011ac400, op: FTINTRNE_W_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRP.L.D fd, fj
{mask: 0xfffffc00, value: 0x011a6800, op: FTINTRP_L_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRP.L.S fd, fj
{mask: 0xfffffc00, value: 0x011a6400, op: FTINTRP_L_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRP.W.D fd, fj
{mask: 0xfffffc00, value: 0x011a4800, op: FTINTRP_W_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRP.W.S fd, fj
{mask: 0xfffffc00, value: 0x011a4400, op: FTINTRP_W_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRZ.L.D fd, fj
{mask: 0xfffffc00, value: 0x011aa800, op: FTINTRZ_L_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRZ.L.S fd, fj
{mask: 0xfffffc00, value: 0x011aa400, op: FTINTRZ_L_S, args: instArgs{arg_fd, arg_fj}},
// FTINTRZ.W.D fd, fj
{mask: 0xfffffc00, value: 0x011a8800, op: FTINTRZ_W_D, args: instArgs{arg_fd, arg_fj}},
// FTINTRZ.W.S fd, fj
{mask: 0xfffffc00, value: 0x011a8400, op: FTINTRZ_W_S, args: instArgs{arg_fd, arg_fj}},
// FTINT.L.D fd, fj
{mask: 0xfffffc00, value: 0x011b2800, op: FTINT_L_D, args: instArgs{arg_fd, arg_fj}},
// FTINT.L.S fd, fj
{mask: 0xfffffc00, value: 0x011b2400, op: FTINT_L_S, args: instArgs{arg_fd, arg_fj}},
// FTINT.W.D fd, fj
{mask: 0xfffffc00, value: 0x011b0800, op: FTINT_W_D, args: instArgs{arg_fd, arg_fj}},
// FTINT.W.S fd, fj
{mask: 0xfffffc00, value: 0x011b0400, op: FTINT_W_S, args: instArgs{arg_fd, arg_fj}},
// IBAR hint
{mask: 0xffff8000, value: 0x38728000, op: IBAR, args: instArgs{arg_hint_14_0}},
// IDLE level
{mask: 0xffff8000, value: 0x06488000, op: IDLE, args: instArgs{arg_level_14_0}},
// INVTLB op, rj, rk
{mask: 0xffff8000, value: 0x06498000, op: INVTLB, args: instArgs{arg_op_4_0, arg_rj, arg_rk}},
// IOCSRRD.B rd, rj
{mask: 0xfffffc00, value: 0x06480000, op: IOCSRRD_B, args: instArgs{arg_rd, arg_rj}},
// IOCSRRD.D rd, rj
{mask: 0xfffffc00, value: 0x06480c00, op: IOCSRRD_D, args: instArgs{arg_rd, arg_rj}},
// IOCSRRD.H rd, rj
{mask: 0xfffffc00, value: 0x06480400, op: IOCSRRD_H, args: instArgs{arg_rd, arg_rj}},
// IOCSRRD.W rd, rj
{mask: 0xfffffc00, value: 0x06480800, op: IOCSRRD_W, args: instArgs{arg_rd, arg_rj}},
// IOCSRWR.B rd, rj
{mask: 0xfffffc00, value: 0x06481000, op: IOCSRWR_B, args: instArgs{arg_rd, arg_rj}},
// IOCSRWR.D rd, rj
{mask: 0xfffffc00, value: 0x06481c00, op: IOCSRWR_D, args: instArgs{arg_rd, arg_rj}},
// IOCSRWR.H rd, rj
{mask: 0xfffffc00, value: 0x06481400, op: IOCSRWR_H, args: instArgs{arg_rd, arg_rj}},
// IOCSRWR.W rd, rj
{mask: 0xfffffc00, value: 0x06481800, op: IOCSRWR_W, args: instArgs{arg_rd, arg_rj}},
// JIRL rd, rj, offs
{mask: 0xfc000000, value: 0x4c000000, op: JIRL, args: instArgs{arg_rd, arg_rj, arg_offset_15_0}},
// LDDIR rd, rj, level
{mask: 0xfffc0000, value: 0x06400000, op: LDDIR, args: instArgs{arg_rd, arg_rj, arg_level_17_10}},
// LDGT.B rd, rj, rk
{mask: 0xffff8000, value: 0x38780000, op: LDGT_B, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDGT.D rd, rj, rk
{mask: 0xffff8000, value: 0x38798000, op: LDGT_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDGT.H rd, rj, rk
{mask: 0xffff8000, value: 0x38788000, op: LDGT_H, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDGT.W rd, rj, rk
{mask: 0xffff8000, value: 0x38790000, op: LDGT_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDLE.B rd, rj, rk
{mask: 0xffff8000, value: 0x387a0000, op: LDLE_B, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDLE.D rd, rj, rk
{mask: 0xffff8000, value: 0x387b8000, op: LDLE_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDLE.H rd, rj, rk
{mask: 0xffff8000, value: 0x387a8000, op: LDLE_H, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDLE.W rd, rj, rk
{mask: 0xffff8000, value: 0x387b0000, op: LDLE_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDPTE rj, seq
{mask: 0xfffc001f, value: 0x06440000, op: LDPTE, args: instArgs{arg_rj, arg_seq_17_10}},
// LDPTR.D rd, rj, si14
{mask: 0xff000000, value: 0x26000000, op: LDPTR_D, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// LDPTR.W rd, rj, si14
{mask: 0xff000000, value: 0x24000000, op: LDPTR_W, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// LDX.B rd, rj, rk
{mask: 0xffff8000, value: 0x38000000, op: LDX_B, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDX.BU rd, rj, rk
{mask: 0xffff8000, value: 0x38200000, op: LDX_BU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDX.D rd, rj, rk
{mask: 0xffff8000, value: 0x380c0000, op: LDX_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDX.H rd, rj, rk
{mask: 0xffff8000, value: 0x38040000, op: LDX_H, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDX.HU rd, rj, rk
{mask: 0xffff8000, value: 0x38240000, op: LDX_HU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDX.W rd, rj, rk
{mask: 0xffff8000, value: 0x38080000, op: LDX_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LDX.WU rd, rj, rk
{mask: 0xffff8000, value: 0x38280000, op: LDX_WU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// LD.B rd, rj, si12
{mask: 0xffc00000, value: 0x28000000, op: LD_B, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LD.BU rd, rj, si12
{mask: 0xffc00000, value: 0x2a000000, op: LD_BU, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LD.D rd, rj, si12
{mask: 0xffc00000, value: 0x28c00000, op: LD_D, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LD.H rd, rj, si12
{mask: 0xffc00000, value: 0x28400000, op: LD_H, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LD.HU rd, rj, si12
{mask: 0xffc00000, value: 0x2a400000, op: LD_HU, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LD.W rd, rj, si12
{mask: 0xffc00000, value: 0x28800000, op: LD_W, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LD.WU rd, rj, si12
{mask: 0xffc00000, value: 0x2a800000, op: LD_WU, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// LLACQ.D rd, rj
{mask: 0xfffffc00, value: 0x38578800, op: LLACQ_D, args: instArgs{arg_rd, arg_rj}},
// LLACQ.W rd, rj
{mask: 0xfffffc00, value: 0x38578000, op: LLACQ_W, args: instArgs{arg_rd, arg_rj}},
// LL.D rd, rj, si14
{mask: 0xff000000, value: 0x22000000, op: LL_D, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// LL.W rd, rj, si14
{mask: 0xff000000, value: 0x20000000, op: LL_W, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// LU12I.W rd, si20
{mask: 0xfe000000, value: 0x14000000, op: LU12I_W, args: instArgs{arg_rd, arg_si20_24_5}},
// LU32I.D rd, si20
{mask: 0xfe000000, value: 0x16000000, op: LU32I_D, args: instArgs{arg_rd, arg_si20_24_5}},
// LU52I.D rd, rj, si12
{mask: 0xffc00000, value: 0x03000000, op: LU52I_D, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// MASKEQZ rd, rj, rk
{mask: 0xffff8000, value: 0x00130000, op: MASKEQZ, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MASKNEZ rd, rj, rk
{mask: 0xffff8000, value: 0x00138000, op: MASKNEZ, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MOD.D rd, rj, rk
{mask: 0xffff8000, value: 0x00228000, op: MOD_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MOD.DU rd, rj, rk
{mask: 0xffff8000, value: 0x00238000, op: MOD_DU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MOD.W rd, rj, rk
{mask: 0xffff8000, value: 0x00208000, op: MOD_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MOD.WU rd, rj, rk
{mask: 0xffff8000, value: 0x00218000, op: MOD_WU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MOVCF2FR fd, cj
{mask: 0xffffff00, value: 0x0114d400, op: MOVCF2FR, args: instArgs{arg_fd, arg_cj}},
// MOVCF2GR rd, cj
{mask: 0xffffff00, value: 0x0114dc00, op: MOVCF2GR, args: instArgs{arg_rd, arg_cj}},
// MOVFCSR2GR rd, fcsr
{mask: 0xfffffc00, value: 0x0114c800, op: MOVFCSR2GR, args: instArgs{arg_rd, arg_fcsr_9_5}},
// MOVFR2CF cd, fj
{mask: 0xfffffc18, value: 0x0114d000, op: MOVFR2CF, args: instArgs{arg_cd, arg_fj}},
// MOVFR2GR.D rd, fj
{mask: 0xfffffc00, value: 0x0114b800, op: MOVFR2GR_D, args: instArgs{arg_rd, arg_fj}},
// MOVFR2GR.S rd, fj
{mask: 0xfffffc00, value: 0x0114b400, op: MOVFR2GR_S, args: instArgs{arg_rd, arg_fj}},
// MOVFRH2GR.S rd, fj
{mask: 0xfffffc00, value: 0x0114bc00, op: MOVFRH2GR_S, args: instArgs{arg_rd, arg_fj}},
// MOVGR2CF cd, rj
{mask: 0xfffffc18, value: 0x0114d800, op: MOVGR2CF, args: instArgs{arg_cd, arg_rj}},
// MOVGR2FCSR fcsr, rj
{mask: 0xfffffc00, value: 0x0114c000, op: MOVGR2FCSR, args: instArgs{arg_fcsr_4_0, arg_rj}},
// MOVGR2FRH.W fd, rj
{mask: 0xfffffc00, value: 0x0114ac00, op: MOVGR2FRH_W, args: instArgs{arg_fd, arg_rj}},
// MOVGR2FR.D fd, rj
{mask: 0xfffffc00, value: 0x0114a800, op: MOVGR2FR_D, args: instArgs{arg_fd, arg_rj}},
// MOVGR2FR.W fd, rj
{mask: 0xfffffc00, value: 0x0114a400, op: MOVGR2FR_W, args: instArgs{arg_fd, arg_rj}},
// MULH.D rd, rj, rk
{mask: 0xffff8000, value: 0x001e0000, op: MULH_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MULH.DU rd, rj, rk
{mask: 0xffff8000, value: 0x001e8000, op: MULH_DU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MULH.W rd, rj, rk
{mask: 0xffff8000, value: 0x001c8000, op: MULH_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MULH.WU rd, rj, rk
{mask: 0xffff8000, value: 0x001d0000, op: MULH_WU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MULW.D.W rd, rj, rk
{mask: 0xffff8000, value: 0x001f0000, op: MULW_D_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MULW.D.WU rd, rj, rk
{mask: 0xffff8000, value: 0x001f8000, op: MULW_D_WU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MUL.D rd, rj, rk
{mask: 0xffff8000, value: 0x001d8000, op: MUL_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// MUL.W rd, rj, rk
{mask: 0xffff8000, value: 0x001c0000, op: MUL_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// NOR rd, rj, rk
{mask: 0xffff8000, value: 0x00140000, op: NOR, args: instArgs{arg_rd, arg_rj, arg_rk}},
// OR rd, rj, rk
{mask: 0xffff8000, value: 0x00150000, op: OR, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ORI rd, rj, ui12
{mask: 0xffc00000, value: 0x03800000, op: ORI, args: instArgs{arg_rd, arg_rj, arg_ui12_21_10}},
// ORN rd, rj, rk
{mask: 0xffff8000, value: 0x00160000, op: ORN, args: instArgs{arg_rd, arg_rj, arg_rk}},
// PCADDI rd, si20
{mask: 0xfe000000, value: 0x18000000, op: PCADDI, args: instArgs{arg_rd, arg_si20_24_5}},
// PCADDU12I rd, si20
{mask: 0xfe000000, value: 0x1c000000, op: PCADDU12I, args: instArgs{arg_rd, arg_si20_24_5}},
// PCADDU18I rd, si20
{mask: 0xfe000000, value: 0x1e000000, op: PCADDU18I, args: instArgs{arg_rd, arg_si20_24_5}},
// PCALAU12I rd, si20
{mask: 0xfe000000, value: 0x1a000000, op: PCALAU12I, args: instArgs{arg_rd, arg_si20_24_5}},
// PRELD hint, rj, si12
{mask: 0xffc00000, value: 0x2ac00000, op: PRELD, args: instArgs{arg_hint_4_0, arg_rj, arg_si12_21_10}},
// PRELDX hint, rj, rk
{mask: 0xffff8000, value: 0x382c0000, op: PRELDX, args: instArgs{arg_hint_4_0, arg_rj, arg_rk}},
// RDTIMEH.W rd, rj
{mask: 0xfffffc00, value: 0x00006400, op: RDTIMEH_W, args: instArgs{arg_rd, arg_rj}},
// RDTIMEL.W rd, rj
{mask: 0xfffffc00, value: 0x00006000, op: RDTIMEL_W, args: instArgs{arg_rd, arg_rj}},
// RDTIME.D rd, rj
{mask: 0xfffffc00, value: 0x00006800, op: RDTIME_D, args: instArgs{arg_rd, arg_rj}},
// REVB.2H rd, rj
{mask: 0xfffffc00, value: 0x00003000, op: REVB_2H, args: instArgs{arg_rd, arg_rj}},
// REVB.2W rd, rj
{mask: 0xfffffc00, value: 0x00003800, op: REVB_2W, args: instArgs{arg_rd, arg_rj}},
// REVB.4H rd, rj
{mask: 0xfffffc00, value: 0x00003400, op: REVB_4H, args: instArgs{arg_rd, arg_rj}},
// REVB.D rd, rj
{mask: 0xfffffc00, value: 0x00003c00, op: REVB_D, args: instArgs{arg_rd, arg_rj}},
// REVH.2W rd, rj
{mask: 0xfffffc00, value: 0x00004000, op: REVH_2W, args: instArgs{arg_rd, arg_rj}},
// REVH.D rd, rj
{mask: 0xfffffc00, value: 0x00004400, op: REVH_D, args: instArgs{arg_rd, arg_rj}},
// ROTRI.D rd, rj, ui6
{mask: 0xffff0000, value: 0x004d0000, op: ROTRI_D, args: instArgs{arg_rd, arg_rj, arg_ui6_15_10}},
// ROTRI.W rd, rj, ui5
{mask: 0xffff8000, value: 0x004c8000, op: ROTRI_W, args: instArgs{arg_rd, arg_rj, arg_ui5_14_10}},
// ROTR.D rd, rj, rk
{mask: 0xffff8000, value: 0x001b8000, op: ROTR_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ROTR.W rd, rj, rk
{mask: 0xffff8000, value: 0x001b0000, op: ROTR_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SCREL.D rd, rj
{mask: 0xfffffc00, value: 0x38578c00, op: SCREL_D, args: instArgs{arg_rd, arg_rj}},
// SCREL.W rd, rj
{mask: 0xfffffc00, value: 0x38578400, op: SCREL_W, args: instArgs{arg_rd, arg_rj}},
// SC.D rd, rj, si14
{mask: 0xff000000, value: 0x23000000, op: SC_D, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// SC.Q rd, rk, rj
{mask: 0xffff8000, value: 0x38570000, op: SC_Q, args: instArgs{arg_rd, arg_rk, arg_rj}},
// SC.W rd, rj, si14
{mask: 0xff000000, value: 0x21000000, op: SC_W, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// SLLI.D rd, rj, ui6
{mask: 0xffff0000, value: 0x00410000, op: SLLI_D, args: instArgs{arg_rd, arg_rj, arg_ui6_15_10}},
// SLLI.W rd, rj, ui5
{mask: 0xffff8000, value: 0x00408000, op: SLLI_W, args: instArgs{arg_rd, arg_rj, arg_ui5_14_10}},
// SLL.D rd, rj, rk
{mask: 0xffff8000, value: 0x00188000, op: SLL_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SLL.W rd, rj, rk
{mask: 0xffff8000, value: 0x00170000, op: SLL_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SLT rd, rj, rk
{mask: 0xffff8000, value: 0x00120000, op: SLT, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SLTI rd, rj, si12
{mask: 0xffc00000, value: 0x02000000, op: SLTI, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// SLTU rd, rj, rk
{mask: 0xffff8000, value: 0x00128000, op: SLTU, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SLTUI rd, rj, si12
{mask: 0xffc00000, value: 0x02400000, op: SLTUI, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// SRAI.D rd, rj, ui6
{mask: 0xffff0000, value: 0x00490000, op: SRAI_D, args: instArgs{arg_rd, arg_rj, arg_ui6_15_10}},
// SRAI.W rd, rj, ui5
{mask: 0xffff8000, value: 0x00488000, op: SRAI_W, args: instArgs{arg_rd, arg_rj, arg_ui5_14_10}},
// SRA.D rd, rj, rk
{mask: 0xffff8000, value: 0x00198000, op: SRA_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SRA.W rd, rj, rk
{mask: 0xffff8000, value: 0x00180000, op: SRA_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SRLI.D rd, rj, ui6
{mask: 0xffff0000, value: 0x00450000, op: SRLI_D, args: instArgs{arg_rd, arg_rj, arg_ui6_15_10}},
// SRLI.W rd, rj, ui5
{mask: 0xffff8000, value: 0x00448000, op: SRLI_W, args: instArgs{arg_rd, arg_rj, arg_ui5_14_10}},
// SRL.D rd, rj, rk
{mask: 0xffff8000, value: 0x00190000, op: SRL_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SRL.W rd, rj, rk
{mask: 0xffff8000, value: 0x00178000, op: SRL_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STGT.B rd, rj, rk
{mask: 0xffff8000, value: 0x387c0000, op: STGT_B, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STGT.D rd, rj, rk
{mask: 0xffff8000, value: 0x387d8000, op: STGT_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STGT.H rd, rj, rk
{mask: 0xffff8000, value: 0x387c8000, op: STGT_H, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STGT.W rd, rj, rk
{mask: 0xffff8000, value: 0x387d0000, op: STGT_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STLE.B rd, rj, rk
{mask: 0xffff8000, value: 0x387e0000, op: STLE_B, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STLE.D rd, rj, rk
{mask: 0xffff8000, value: 0x387f8000, op: STLE_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STLE.H rd, rj, rk
{mask: 0xffff8000, value: 0x387e8000, op: STLE_H, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STLE.W rd, rj, rk
{mask: 0xffff8000, value: 0x387f0000, op: STLE_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STPTR.D rd, rj, si14
{mask: 0xff000000, value: 0x27000000, op: STPTR_D, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// STPTR.W rd, rj, si14
{mask: 0xff000000, value: 0x25000000, op: STPTR_W, args: instArgs{arg_rd, arg_rj, arg_si14_23_10}},
// STX.B rd, rj, rk
{mask: 0xffff8000, value: 0x38100000, op: STX_B, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STX.D rd, rj, rk
{mask: 0xffff8000, value: 0x381c0000, op: STX_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STX.H rd, rj, rk
{mask: 0xffff8000, value: 0x38140000, op: STX_H, args: instArgs{arg_rd, arg_rj, arg_rk}},
// STX.W rd, rj, rk
{mask: 0xffff8000, value: 0x38180000, op: STX_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// ST.B rd, rj, si12
{mask: 0xffc00000, value: 0x29000000, op: ST_B, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// ST.D rd, rj, si12
{mask: 0xffc00000, value: 0x29c00000, op: ST_D, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// ST.H rd, rj, si12
{mask: 0xffc00000, value: 0x29400000, op: ST_H, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// ST.W rd, rj, si12
{mask: 0xffc00000, value: 0x29800000, op: ST_W, args: instArgs{arg_rd, arg_rj, arg_si12_21_10}},
// SUB.D rd, rj, rk
{mask: 0xffff8000, value: 0x00118000, op: SUB_D, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SUB.W rd, rj, rk
{mask: 0xffff8000, value: 0x00110000, op: SUB_W, args: instArgs{arg_rd, arg_rj, arg_rk}},
// SYSCALL code
{mask: 0xffff8000, value: 0x002b0000, op: SYSCALL, args: instArgs{arg_code_14_0}},
// TLBCLR
{mask: 0xffffffff, value: 0x06482000, op: TLBCLR, args: instArgs{}},
// TLBFILL
{mask: 0xffffffff, value: 0x06483400, op: TLBFILL, args: instArgs{}},
// TLBFLUSH
{mask: 0xffffffff, value: 0x06482400, op: TLBFLUSH, args: instArgs{}},
// TLBRD
{mask: 0xffffffff, value: 0x06482c00, op: TLBRD, args: instArgs{}},
// TLBSRCH
{mask: 0xffffffff, value: 0x06482800, op: TLBSRCH, args: instArgs{}},
// TLBWR
{mask: 0xffffffff, value: 0x06483000, op: TLBWR, args: instArgs{}},
// XOR rd, rj, rk
{mask: 0xffff8000, value: 0x00158000, op: XOR, args: instArgs{arg_rd, arg_rj, arg_rk}},
// XORI rd, rj, ui12
{mask: 0xffc00000, value: 0x03c00000, op: XORI, args: instArgs{arg_rd, arg_rj, arg_ui12_21_10}},
}