content: -- This file has been generated by specsgen. Do not modify by hand!
  
  module Unison.Target.Mips.SpecsGen.OperandInfo (operandInfo) where
  import Unison
  import Unison.Target.Mips.SpecsGen.MipsInstructionDecl
  import Unison.Target.Mips.SpecsGen.MipsRegisterClassDecl
  operandInfo i
    | i `elem`
        [Break16, DERET, DERET_MM, DERET_MMR6, EHB, EHB_MM, EHB_MMR6, ERET,
         ERETNC, ERETNC_MMR6, ERET_MM, ERET_MMR6, ERet, JrRa16, JrcRa16,
         LoadGPDisp, NOP, PAUSE, PAUSE_MM, PAUSE_MMR6, RetRA, RetRA16,
         RetRA_NOP, SSNOP, SSNOP_MM, SSNOP_MMR6, TLBINV, TLBINVF, TLBP,
         TLBP_MM, TLBR, TLBR_MM, TLBWI, TLBWI_MM, TLBWR, TLBWR_MM, TRAP,
         WAIT]
      = ([], [])
    | i `elem` [Mfhi16, Mflo16] =
      ([], [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem`
        [BPOSGE32_PSEUDO, CLOBBER_RA, DI, DI_MM, DI_MMR6, EI, EI_MM,
         EI_MMR6, MFHI, MFHI16_MM, MFHI_MM, MFLO, MFLO16_MM, MFLO_MM]
      = ([], [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [MFHI64, MFLO64] =
      ([], [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [DMFC2_OCTEON, DMTC2_OCTEON] =
      ([], [TemporaryInfo (RegisterClass GPR64Opnd) 1 False, BoundInfo])
    | i `elem` [IMPLICIT_DEF, LOAD_STACK_GUARD] = ([], [BoundInfo])
    | i `elem` [PseudoMFHI64, PseudoMFLO64] =
      ([TemporaryInfo (RegisterClass ACC128) 0 False],
       [TemporaryInfo (RegisterClass GPR64) 1 False])
    | i `elem` [STORE_ACC128] =
      ([TemporaryInfo (RegisterClass ACC128) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [PseudoMFHI, PseudoMFLO] =
      ([TemporaryInfo (RegisterClass ACC64) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem` [STORE_ACC64] =
      ([TemporaryInfo (RegisterClass ACC64) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [MFHI_DSP, MFHI_DSP_MM, MFLO_DSP, MFLO_DSP_MM] =
      ([TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [EXTPDPV, EXTPDPV_MM, EXTPV, EXTPV_MM, EXTRV_RS_W, EXTRV_RS_W_MM,
         EXTRV_R_W, EXTRV_R_W_MM, EXTRV_S_H, EXTRV_S_H_MM, EXTRV_W,
         EXTRV_W_MM]
      =
      ([TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [EXTP, EXTPDP, EXTPDP_MM, EXTP_MM, EXTR_RS_W, EXTR_RS_W_MM,
         EXTR_R_W, EXTR_R_W_MM, EXTR_S_H, EXTR_S_H_MM, EXTR_W, EXTR_W_MM]
      =
      ([TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [STORE_ACC64DSP] =
      ([TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [FCMP_D32, FCMP_D32_MM] =
      ([TemporaryInfo (RegisterClass AFGR64) 0 False,
        TemporaryInfo (RegisterClass AFGR64) 0 False, BoundInfo],
       [])
    | i `elem`
        [ABS_D_MMR6, FABS_D32, FABS_MM, FMOV_D32, FMOV_D32_MM, FMOV_D_MMR6,
         FNEG_D32, FNEG_D_MMR6, FNEG_MM, FSQRT_D32, FSQRT_MM, MOVE_D,
         SQRT_D_MMR6]
      =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem`
        [CEIL_W_D32, CEIL_W_D_MMR6, CEIL_W_MM, CVT_D_S_MMR6, CVT_D_W_MMR6,
         CVT_S_D32, CVT_S_D32_MM, CVT_W_D32, CVT_W_D_MMR6, CVT_W_MM,
         FLOOR_W_D32, FLOOR_W_D_MMR6, FLOOR_W_MM, ROUND_W_D32, ROUND_W_MM,
         RSQRT_D_MMR6, TRUNC_W_D32, TRUNC_W_D_MMR6, TRUNC_W_MM]
      =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [MFHC1_D32, MFHC1_MM] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LDC1_fi_demat_fi] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (InfiniteRegisterClass RM64) 0 False])
    | i `elem` [STORE_D] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (InfiniteRegisterClass M64) 1 False])
    | i `elem`
        [C_EQ_D32, C_F_D32, C_LE_D32, C_LT_D32, C_NGE_D32, C_NGLE_D32,
         C_NGL_D32, C_NGT_D32, C_OLE_D32, C_OLT_D32, C_SEQ_D32, C_SF_D32,
         C_UEQ_D32, C_ULE_D32, C_ULT_D32, C_UN_D32]
      =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [])
    | i `elem`
        [FADD_D32, FADD_D_MMR6, FADD_MM, FDIV_D32, FDIV_D_MMR6, FDIV_MM,
         FMUL_D32, FMUL_D_MMR6, FMUL_MM, FSUB_D32, FSUB_D_MMR6, FSUB_MM]
      =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem`
        [MADD_D32, MADD_D32_MM, MSUB_D32, MSUB_D32_MM, NMADD_D32,
         NMADD_D32_MM, NMSUB_D32, NMSUB_D32_MM]
      =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [MOVF_D32, MOVF_D32_MM, MOVT_D32, MOVT_D32_MM] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FCCRegsOpnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [MTHC1_D32, MTHC1_MM] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [MOVN_I_D32, MOVN_I_D32_MM, MOVZ_I_D32, MOVZ_I_D32_MM] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [SDC1_sp] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False, BoundInfo], [])
    | i `elem` [ExtractElementF64] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [SDC1, SDC1_MM, SDXC1, SUXC1, SUXC1_MM] =
      ([TemporaryInfo (RegisterClass AFGR64Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [CFC1, CFC1_MM] =
      ([TemporaryInfo (RegisterClass CCROpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [MFC0] =
      ([TemporaryInfo (RegisterClass COP0Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [DMFC0] =
      ([TemporaryInfo (RegisterClass COP0Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [MFC2] =
      ([TemporaryInfo (RegisterClass COP2Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [DMFC2] =
      ([TemporaryInfo (RegisterClass COP2Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [SDC2, SDC2_R6, SWC2, SWC2_R6] =
      ([TemporaryInfo (RegisterClass COP2Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [BC2EQZ, BC2NEZ] =
      ([TemporaryInfo (RegisterClass COP2Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [SDC3, SWC3] =
      ([TemporaryInfo (RegisterClass COP3Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [JrcRx16, JumpLinkReg16] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False], [])
    | i `elem` [NegRxRy16, NotRxRy16, SebRx16, SehRx16] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [Move32R16] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem`
        [CmpRxRy16, DivRxRy16, DivuRxRy16, MultRxRy16, MultuRxRy16,
         SltRxRy16, SltuRxRy16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False],
       [])
    | i `elem`
        [AdduRxRyRz16, AndRxRxRy16, MultRxRyRz16, MultuRxRyRz16,
         OrRxRxRy16, SllvRxRy16, SltCCRxRy16, SltuCCRxRy16, SltuRxRyRz16,
         SravRxRy16, SrlvRxRy16, SubuRxRyRz16, XorRxRxRy16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [SelBeqZ, SelBneZ] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem`
        [SelTBteqZCmp, SelTBteqZSlt, SelTBteqZSltu, SelTBtneZCmp,
         SelTBtneZSlt, SelTBtneZSltu]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem`
        [SelTBteqZCmpi, SelTBteqZSlti, SelTBteqZSltiu, SelTBtneZCmpi,
         SelTBtneZSlti, SelTBtneZSltiu]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [SbRxRyOffMemX16, ShRxRyOffMemX16, SwRxRyOffMemX16] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass CPU16RegsPlusSP) 0 False],
       [])
    | i `elem`
        [BteqzT8CmpX16, BteqzT8SltX16, BteqzT8SltuX16, BtnezT8CmpX16,
         BtnezT8SltX16, BtnezT8SltuX16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPU16Regs) 0 False, BlockRefInfo],
       [])
    | i `elem` [SwRxSpImmX16] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False,
        TemporaryInfo (RegisterClass CPUSPReg) 0 False, BoundInfo],
       [])
    | i `elem`
        [CmpiRxImm16, CmpiRxImmX16, SltiRxImm16, SltiRxImmX16,
         SltiuRxImm16, SltiuRxImmX16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False, BoundInfo], [])
    | i `elem`
        [AddiuRxRxImm16, AddiuRxRxImmX16, SllX16, SltiCCRxImmX16,
         SltiuCCRxImmX16, SraX16, SrlX16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem`
        [LbRxRyOffMemX16, LbuRxRyOffMemX16, LhRxRyOffMemX16,
         LhuRxRyOffMemX16, LwRxRyOffMemX16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass CPU16RegsPlusSP) 0 False],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem`
        [BteqzT8CmpiX16, BteqzT8SltiX16, BteqzT8SltiuX16, BtnezT8CmpiX16,
         BtnezT8SltiX16, BtnezT8SltiuX16]
      =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False, BoundInfo,
        BlockRefInfo],
       [])
    | i `elem` [BeqzRxImm16, BeqzRxImmX16, BnezRxImm16, BnezRxImmX16] =
      ([TemporaryInfo (RegisterClass CPU16Regs) 0 False, BlockRefInfo],
       [])
    | i `elem` [AddiuRxRyOffMemX16] =
      ([TemporaryInfo (RegisterClass CPU16RegsPlusSP) 0 False,
        BoundInfo],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [LwRxSpImmX16] =
      ([TemporaryInfo (RegisterClass CPUSPReg) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [PseudoPICK_PH, PseudoPICK_QB] =
      ([TemporaryInfo (RegisterClass DSPCC) 0 False,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem` [STORE_CCOND_DSP] =
      ([TemporaryInfo (RegisterClass DSPCC) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem`
        [ABSQ_S_PH, ABSQ_S_PH_MM, ABSQ_S_QB, ABSQ_S_QB_MMR2,
         PRECEQU_PH_QBL, PRECEQU_PH_QBLA, PRECEQU_PH_QBLA_MM,
         PRECEQU_PH_QBL_MM, PRECEQU_PH_QBR, PRECEQU_PH_QBRA,
         PRECEQU_PH_QBRA_MM, PRECEQU_PH_QBR_MM, PRECEU_PH_QBL,
         PRECEU_PH_QBLA, PRECEU_PH_QBLA_MM, PRECEU_PH_QBL_MM, PRECEU_PH_QBR,
         PRECEU_PH_QBRA, PRECEU_PH_QBRA_MM, PRECEU_PH_QBR_MM]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem`
        [PRECEQ_W_PHL, PRECEQ_W_PHL_MM, PRECEQ_W_PHR, PRECEQ_W_PHR_MM,
         RADDU_W_QB, RADDU_W_QB_MM]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [CMPU_EQ_QB, CMPU_LE_QB, CMPU_LT_QB, CMP_EQ_PH, CMP_LE_PH,
         CMP_LT_PH]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [])
    | i `elem`
        [PseudoCMPU_EQ_QB, PseudoCMPU_LE_QB, PseudoCMPU_LT_QB,
         PseudoCMP_EQ_PH, PseudoCMP_LE_PH, PseudoCMP_LT_PH]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass DSPCC) 1 False])
    | i `elem`
        [ADDQH_PH, ADDQH_PH_MMR2, ADDQH_R_PH, ADDQH_R_PH_MMR2, ADDQ_PH,
         ADDQ_PH_MM, ADDQ_S_PH, ADDQ_S_PH_MM, ADDUH_QB, ADDUH_QB_MMR2,
         ADDUH_R_QB, ADDUH_R_QB_MMR2, ADDU_PH, ADDU_PH_MMR2, ADDU_QB,
         ADDU_QB_MM, ADDU_S_PH, ADDU_S_PH_MMR2, ADDU_S_QB, ADDU_S_QB_MM,
         MULEU_S_PH_QBL, MULEU_S_PH_QBL_MM, MULEU_S_PH_QBR,
         MULEU_S_PH_QBR_MM, MULQ_RS_PH, MULQ_RS_PH_MM, MULQ_S_PH,
         MULQ_S_PH_MMR2, MUL_PH, MUL_PH_MMR2, MUL_S_PH, MUL_S_PH_MMR2,
         PACKRL_PH, PACKRL_PH_MM, PICK_PH, PICK_PH_MM, PICK_QB, PICK_QB_MM,
         PRECRQU_S_QB_PH, PRECRQU_S_QB_PH_MM, PRECRQ_QB_PH, PRECRQ_QB_PH_MM,
         PRECR_QB_PH, PRECR_QB_PH_MMR2, SUBQH_PH, SUBQH_PH_MMR2, SUBQH_R_PH,
         SUBQH_R_PH_MMR2, SUBQ_PH, SUBQ_PH_MM, SUBQ_S_PH, SUBQ_S_PH_MM,
         SUBUH_QB, SUBUH_QB_MMR2, SUBUH_R_QB, SUBUH_R_QB_MMR2, SUBU_PH,
         SUBU_PH_MMR2, SUBU_QB, SUBU_QB_MM, SUBU_S_PH, SUBU_S_PH_MMR2,
         SUBU_S_QB, SUBU_S_QB_MM]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem`
        [CMPGDU_EQ_QB, CMPGDU_LE_QB, CMPGDU_LT_QB, CMPGU_EQ_QB,
         CMPGU_LE_QB, CMPGU_LT_QB, MULEQ_S_W_PHL, MULEQ_S_W_PHL_MM,
         MULEQ_S_W_PHR, MULEQ_S_W_PHR_MM]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [SHLLV_PH, SHLLV_PH_MM, SHLLV_QB, SHLLV_QB_MM, SHLLV_S_PH,
         SHLLV_S_PH_MM, SHRAV_PH, SHRAV_PH_MM, SHRAV_QB, SHRAV_QB_MMR2,
         SHRAV_R_PH, SHRAV_R_PH_MM, SHRAV_R_QB, SHRAV_R_QB_MMR2, SHRLV_PH,
         SHRLV_PH_MMR2, SHRLV_QB, SHRLV_QB_MM]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem`
        [SHLL_PH, SHLL_PH_MM, SHLL_QB, SHLL_QB_MM, SHLL_S_PH, SHLL_S_PH_MM,
         SHRA_PH, SHRA_PH_MM, SHRA_QB, SHRA_QB_MMR2, SHRA_R_PH,
         SHRA_R_PH_MM, SHRA_R_QB, SHRA_R_QB_MMR2, SHRL_PH, SHRL_PH_MMR2,
         SHRL_QB, SHRL_QB_MM]
      =
      ([TemporaryInfo (RegisterClass DSPROpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem`
        [BC1F, BC1FL, BC1F_MM, BC1F_NOP, BC1T, BC1TL, BC1T_MM, BC1T_NOP]
      =
      ([TemporaryInfo (RegisterClass FCCRegsOpnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [FILL_FW_PSEUDO] =
      ([TemporaryInfo (RegisterClass FGR32) 0 False],
       [TemporaryInfo (RegisterClass MSA128W) 1 False])
    | i `elem` [FCMP_S32, FCMP_S32_MM] =
      ([TemporaryInfo (RegisterClass FGR32) 0 False,
        TemporaryInfo (RegisterClass FGR32) 0 False, BoundInfo],
       [])
    | i `elem`
        [CVT_D32_S, CVT_D32_W, CVT_D32_W_MM, CVT_D_S_MM, CVT_S_D_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem`
        [ABS_S_MMR6, CEIL_W_S, CEIL_W_S_MM, CEIL_W_S_MMR6, CLASS_S,
         CLASS_S_MMR6, CVT_S_W, CVT_S_W_MM, CVT_S_W_MMR6, CVT_W_S,
         CVT_W_S_MM, CVT_W_S_MMR6, FABS_S, FABS_S_MM, FLOOR_W_S,
         FLOOR_W_S_MM, FLOOR_W_S_MMR6, FMOV_S, FMOV_S_MM, FMOV_S_MMR6,
         FNEG_S, FNEG_S_MM, FNEG_S_MMR6, FSQRT_S, FSQRT_S_MM, MOVE_F,
         RECIP_D_MMR6, RECIP_S_MMR6, RINT_S, RINT_S_MMR6, ROUND_W_S,
         ROUND_W_S_MM, ROUND_W_S_MMR6, RSQRT_S_MMR6, SQRT_S_MMR6, TRUNC_W_S,
         TRUNC_W_S_MM, TRUNC_W_S_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem`
        [CEIL_L_S, CEIL_L_S_MMR6, CVT_D64_S, CVT_D64_W, CVT_L_S,
         CVT_L_S_MM, CVT_L_S_MMR6, CVT_S_L_MMR6, FLOOR_L_S, FLOOR_L_S_MMR6,
         ROUND_L_S, ROUND_L_S_MMR6, TRUNC_L_S, TRUNC_L_S_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem` [MFC1, MFC1_MM] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LWC1_fi_demat_fi] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (InfiniteRegisterClass RM32) 0 False])
    | i `elem` [STORE_F] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (InfiniteRegisterClass M32) 1 False])
    | i `elem` [MOVF_S, MOVF_S_MM, MOVT_S, MOVT_S_MM] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FCCRegsOpnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem`
        [C_EQ_S, C_F_S, C_LE_S, C_LT_S, C_NGE_S, C_NGLE_S, C_NGL_S,
         C_NGT_S, C_OLE_S, C_OLT_S, C_SEQ_S, C_SF_S, C_UEQ_S, C_ULE_S,
         C_ULT_S, C_UN_S]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [])
    | i `elem`
        [FADD_S, FADD_S_MM, FADD_S_MMR6, FDIV_S, FDIV_S_MM, FDIV_S_MMR6,
         FMUL_S, FMUL_S_MM, FMUL_S_MMR6, FSUB_S, FSUB_S_MM, FSUB_S_MMR6,
         MAXA_S, MAXA_S_MMR6, MAX_S, MAX_S_MMR6, MINA_S, MINA_S_MMR6, MIN_S,
         MIN_S_MMR6, SELENZ_S_MMR6, SELEQZ_S, SELEQZ_S_MMR6, SELNEZ_S]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem`
        [CMP_AF_S_MMR6, CMP_EQ_S, CMP_EQ_S_MMR6, CMP_F_S, CMP_LE_S,
         CMP_LE_S_MMR6, CMP_LT_S, CMP_LT_S_MMR6, CMP_SAF_S, CMP_SAF_S_MMR6,
         CMP_SEQ_S, CMP_SEQ_S_MMR6, CMP_SLE_S, CMP_SLE_S_MMR6, CMP_SLT_S,
         CMP_SLT_S_MMR6, CMP_SUEQ_S, CMP_SUEQ_S_MMR6, CMP_SULE_S,
         CMP_SULE_S_MMR6, CMP_SULT_S, CMP_SULT_S_MMR6, CMP_SUN_S,
         CMP_SUN_S_MMR6, CMP_UEQ_S, CMP_UEQ_S_MMR6, CMP_ULE_S,
         CMP_ULE_S_MMR6, CMP_ULT_S, CMP_ULT_S_MMR6, CMP_UN_S, CMP_UN_S_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGRCCOpnd) 1 False])
    | i `elem`
        [MADDF_S, MADDF_S_MMR6, MADD_S, MADD_S_MM, MSUBF_S, MSUBF_S_MMR6,
         MSUB_S, MSUB_S_MM, NMADD_S, NMADD_S_MM, NMSUB_S, NMSUB_S_MM, SEL_S,
         SEL_S_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [MOVN_I_S, MOVN_I_S_MM, MOVZ_I_S, MOVZ_I_S_MM] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [MOVN_I64_S, MOVZ_I64_S] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [SWC1_sp] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False, BoundInfo], [])
    | i `elem` [SWC1, SWC1_MM, SWC1_fi, SWXC1, SWXC1_MM] =
      ([TemporaryInfo (RegisterClass FGR32Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [FILL_FD_PSEUDO] =
      ([TemporaryInfo (RegisterClass FGR64) 0 False],
       [TemporaryInfo (RegisterClass MSA128D) 1 False])
    | i `elem` [FCMP_D64] =
      ([TemporaryInfo (RegisterClass FGR64) 0 False,
        TemporaryInfo (RegisterClass FGR64) 0 False, BoundInfo],
       [])
    | i `elem`
        [CEIL_W_D64, CVT_S_D64, CVT_S_L, CVT_W_D64, FLOOR_W_D64,
         ROUND_W_D64, TRUNC_W_D64]
      =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem`
        [CEIL_L_D64, CEIL_L_D_MMR6, CLASS_D, CLASS_D_MMR6, CVT_D64_L,
         CVT_D_L_MMR6, CVT_L_D64, CVT_L_D64_MM, CVT_L_D_MMR6, FABS_D64,
         FLOOR_L_D64, FLOOR_L_D_MMR6, FMOV_D64, FNEG_D64, FSQRT_D64, RINT_D,
         RINT_D_MMR6, ROUND_L_D64, ROUND_L_D_MMR6, ROUND_W_D_MMR6,
         TRUNC_L_D64, TRUNC_L_D_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem` [MFHC1_D64] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [DMFC1] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [MOVF_D64, MOVT_D64] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FCCRegsOpnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [C_EQ_D64, C_F_D64, C_LE_D64, C_LT_D64, C_NGE_D64, C_NGLE_D64,
         C_NGL_D64, C_NGT_D64, C_OLE_D64, C_OLT_D64, C_SEQ_D64, C_SF_D64,
         C_UEQ_D64, C_ULE_D64, C_ULT_D64, C_UN_D64]
      =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [])
    | i `elem`
        [FADD_D64, FDIV_D64, FMUL_D64, FSUB_D64, MAXA_D, MAXA_D_MMR6,
         MAX_D, MAX_D_MMR6, MINA_D, MINA_D_MMR6, MIN_D, MIN_D_MMR6,
         SELENZ_D_MMR6, SELEQZ_D, SELEQZ_D_MMR6, SELNEZ_D]
      =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [CMP_AF_D_MMR6, CMP_EQ_D, CMP_EQ_D_MMR6, CMP_F_D, CMP_LE_D,
         CMP_LE_D_MMR6, CMP_LT_D, CMP_LT_D_MMR6, CMP_SAF_D, CMP_SAF_D_MMR6,
         CMP_SEQ_D, CMP_SEQ_D_MMR6, CMP_SLE_D, CMP_SLE_D_MMR6, CMP_SLT_D,
         CMP_SLT_D_MMR6, CMP_SUEQ_D, CMP_SUEQ_D_MMR6, CMP_SULE_D,
         CMP_SULE_D_MMR6, CMP_SULT_D, CMP_SULT_D_MMR6, CMP_SUN_D,
         CMP_SUN_D_MMR6, CMP_UEQ_D, CMP_UEQ_D_MMR6, CMP_ULE_D,
         CMP_ULE_D_MMR6, CMP_ULT_D, CMP_ULT_D_MMR6, CMP_UN_D, CMP_UN_D_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGRCCOpnd) 1 False])
    | i `elem`
        [MADDF_D, MADDF_D_MMR6, MADD_D64, MSUBF_D, MSUBF_D_MMR6, MSUB_D64,
         NMADD_D64, NMSUB_D64, SEL_D, SEL_D_MMR6]
      =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem` [MTHC1_D64] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem` [MOVN_I_D64, MOVZ_I_D64] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem` [MOVN_I64_D64, MOVZ_I64_D64] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem` [ExtractElementF64_64] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [SDC164, SDXC164, SUXC164] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [BC1EQZ, BC1NEZ] =
      ([TemporaryInfo (RegisterClass FGR64Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [MoveR3216] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [DSLL64_32, SLL64_32] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False],
       [TemporaryInfo (RegisterClass GPR64) 1 False])
    | i `elem` [MIPSeh_return32] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False],
       [])
    | i `elem` [PseudoMTLOHI] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False],
       [TemporaryInfo (RegisterClass ACC64) 1 False])
    | i `elem` [PseudoMTLOHI_DSP] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False],
       [TemporaryInfo (RegisterClass ACC64DSP) 1 False])
    | i `elem`
        [LBE_MMR6, LBUE_MMR6, LBU_MMR6, LB_MMR6, LLE_MM, LLE_MMR6, LL_MM,
         LWE_MMR6, LWSP_MM, LWU_MM]
      =
      ([TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LWP_MM] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LWM16_MM, LWM16_MMR6, LWM32_MM, LWM_MM] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo],
       [BoundInfo])
    | i `elem` [LWLE_MM, LWL_MM, LWRE_MM, LWR_MM] =
      ([TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [CACHEE_MM, CACHEE_MMR6, CACHE_MM, CACHE_MMR6, PREFE_MM,
         PREFE_MMR6, PREF_MM, PREF_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem`
        [JALR16_MM, JALRC16_MMR6, JALRPseudo, JALRPseudo_NOP, JALRS16_MM,
         JR, JR16_MM, JRC16_MM, JRC16_MMR6, JR_HB, JR_HB_R6, JR_MM,
         JalOneReg, MTHI, MTHI_MM, MTLO, MTLO_MM, PseudoIndirectBranch,
         PseudoIndirectBranch_NOP, PseudoReturn, PseudoReturn_NOP,
         TAILCALL_R]
      = ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False], [])
    | i `elem` [PseudoCVT_D32_W] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [CTC1, CTC1_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass CCROpnd) 1 False])
    | i `elem` [REPLV_PH, REPLV_PH_MM, REPLV_QB, REPLV_QB_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem` [MTC1, MTC1_MM, PseudoCVT_S_W] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [PseudoCVT_D64_W] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [ABSQ_S_W, ABSQ_S_W_MM, BITREV, BITSWAP, BITSWAP_MMR6, CLO, CLO_MM,
         CLO_MMR6, CLO_R6, CLZ, CLZ_MM, CLZ_MMR6, CLZ_R6, JALR, JALRS_MM,
         JALR_HB, JALR_MM, JalTwoReg, MOVE, MOVE16_MM, MOVE16_MMR6, POP,
         RDPGPR_MMR6, SEB, SEB_MM, SEB_MMR6, SEH, SEH_MM, SEH_MMR6,
         WRPGPR_MMR6, WSBH, WSBH_MM, WSBH_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [MTHI_DSP, MTHI_DSP_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass HI32DSPOpnd) 1 False])
    | i `elem` [MTLO_DSP, MTLO_DSP_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass LO32DSPOpnd) 1 False])
    | i `elem` [FILL_B] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [FILL_H] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [FILL_W] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem`
        [LBu_fi_demat_fi, LEA_ADDiu_demat, LUi_demat, LW_fi_demat_fi]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (InfiniteRegisterClass RM32) 0 False])
    | i `elem` [STORE] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (InfiniteRegisterClass M32) 1 False])
    | i `elem` [MTHLIP, MTHLIP_MM, SHILOV, SHILOV_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False],
       [TemporaryInfo (RegisterClass ACC64DSPOpnd) 1 False])
    | i `elem`
        [PseudoSELECTFP_F_D32, PseudoSELECTFP_T_D32, PseudoSELECT_D32]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass AFGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [MOVF_I, MOVF_I_MM, MOVT_I, MOVT_I_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FCCRegsOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [PseudoSELECTFP_F_S, PseudoSELECTFP_T_S, PseudoSELECT_S]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem`
        [PseudoSELECTFP_F_D64, PseudoSELECTFP_T_D64, PseudoSELECT_D64]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [SBE_MMR6, SCE_MMR6, SHE_MMR6, SWLE_MM, SWL_MM, SWRE_MM, SWR_MM,
         SWSP_MM, SWSP_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo],
       [])
    | i `elem` [SCE_MM, SC_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [DSDivMacro, DUDivMacro, MADD, MADDU, MADDU_MM, MADD_MM, MSUB,
         MSUBU, MSUBU_MM, MSUB_MM, MULT, MULT_MM, MULTu, MULTu_MM, SDIV,
         SDIV_MM, SDivMacro, UDIV, UDIV_MM, UDivMacro]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [])
    | i `elem` [PseudoMULT, PseudoMULTu, PseudoSDIV, PseudoUDIV] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass ACC64) 1 False])
    | i `elem` [MULTU_DSP, MULTU_DSP_MM, MULT_DSP, MULT_DSP_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass ACC64DSPOpnd) 1 False])
    | i `elem` [BuildPairF64] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem`
        [PRECRQ_PH_W, PRECRQ_PH_W_MM, PRECRQ_RS_PH_W, PRECRQ_RS_PH_W_MM]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem` [BuildPairF64_64] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [ADD, ADDQH_R_W, ADDQH_R_W_MMR2, ADDQH_W, ADDQH_W_MMR2, ADDQ_S_W,
         ADDQ_S_W_MM, ADDSC, ADDSC_MM, ADDU_MMR6, ADDWC, ADDWC_MM, ADD_MM,
         ADD_MMR6, ADDu, ADDu_MM, AND, AND_MM, AND_MMR6, DDIVU_MM64R6,
         DDIV_MM64R6, DIV, DIVU, DIVU_MMR6, DIV_MMR6, DMODU_MM64R6,
         DMOD_MM64R6, INSV, INSV_MM, MOD, MODSUB, MODU, MODU_MMR6, MOD_MMR6,
         MUH, MUHU, MUHU_MMR6, MUH_MMR6, MUL, MULQ_RS_W, MULQ_RS_W_MMR2,
         MULQ_S_W, MULQ_S_W_MMR2, MULU, MULU_MMR6, MUL_MM, MUL_MMR6, MUL_R6,
         NOR, NOR_MM, NOR_MMR6, OR, OR_MM, OR_MMR6, ROTRV, ROTRV_MM, SELEQZ,
         SELEQZ_MMR6, SELNEZ, SELNEZ_MMR6, SHLLV_S_W, SHLLV_S_W_MM,
         SHRAV_R_W, SHRAV_R_W_MM, SLLV, SLLV_MM, SLT, SLT_MM, SLTu, SLTu_MM,
         SRAV, SRAV_MM, SRLV, SRLV_MM, SUB, SUBQH_R_W, SUBQH_R_W_MMR2,
         SUBQH_W, SUBQH_W_MMR2, SUBQ_S_W, SUBQ_S_W_MM, SUBU_MMR6, SUB_MM,
         SUB_MMR6, SUBu, SUBu_MM, XOR, XOR_MM, XOR_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [PseudoMADD, PseudoMADDU, PseudoMSUB, PseudoMSUBU] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass ACC64) 0 False],
       [TemporaryInfo (RegisterClass ACC64) 1 False])
    | i `elem`
        [DPAQX_SA_W_PH, DPAQX_SA_W_PH_MMR2, DPAQX_S_W_PH,
         DPAQX_S_W_PH_MMR2, DPAQ_SA_L_W, DPAQ_SA_L_W_MM, DPAQ_S_W_PH,
         DPAQ_S_W_PH_MM, DPAU_H_QBL, DPAU_H_QBL_MM, DPAU_H_QBR,
         DPAU_H_QBR_MM, DPAX_W_PH, DPAX_W_PH_MMR2, DPA_W_PH, DPA_W_PH_MMR2,
         DPSQX_SA_W_PH, DPSQX_SA_W_PH_MMR2, DPSQX_S_W_PH, DPSQX_S_W_PH_MMR2,
         DPSQ_SA_L_W, DPSQ_SA_L_W_MM, DPSQ_S_W_PH, DPSQ_S_W_PH_MM,
         DPSU_H_QBL, DPSU_H_QBL_MM, DPSU_H_QBR, DPSU_H_QBR_MM, DPSX_W_PH,
         DPSX_W_PH_MMR2, DPS_W_PH, DPS_W_PH_MMR2, MADDU_DSP, MADDU_DSP_MM,
         MADD_DSP, MADD_DSP_MM, MAQ_SA_W_PHL, MAQ_SA_W_PHL_MM, MAQ_SA_W_PHR,
         MAQ_SA_W_PHR_MM, MAQ_S_W_PHL, MAQ_S_W_PHL_MM, MAQ_S_W_PHR,
         MAQ_S_W_PHR_MM, MSUBU_DSP, MSUBU_DSP_MM, MSUB_DSP, MSUB_DSP_MM,
         MULSAQ_S_W_PH, MULSA_W_PH]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False],
       [TemporaryInfo (RegisterClass ACC64DSPOpnd) 1 False])
    | i `elem` [SWP_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False, BoundInfo],
       [])
    | i `elem` [DROL, DROR, ROL, ROR] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [])
    | i `elem`
        [MOVN_I_I, MOVN_I_MM, MOVZ_I_I, MOVZ_I_MM, PseudoSELECTFP_F_I,
         PseudoSELECTFP_T_I, PseudoSELECT_I]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [DROLImm, DRORImm, NORImm, ROLImm, RORImm, TEQ, TEQ_MM, TGE, TGEU,
         TGEU_MM, TGE_MM, TLT, TLTU, TLTU_MM, TLT_MM, TNE, TNE_MM]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [])
    | i `elem` [ALIGN, ALIGN_MMR6, LSA, LSA_MMR6, LSA_R6] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [BEQ, BEQC, BEQL, BEQ_MM, BEQ_NOP, BGE, BGEC, BGEL, BGEU, BGEUC,
         BGEUL, BGT, BGTL, BGTU, BGTUL, BLE, BLEL, BLEU, BLEUL, BLT, BLTC,
         BLTL, BLTU, BLTUC, BLTUL, BNE, BNEC, BNEL, BNE_MM, BNE_NOP, BNVC,
         BOVC]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [MOVN_I64_I, MOVZ_I64_I] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [PseudoSELECTFP_F_I64, PseudoSELECTFP_T_I64, PseudoSELECT_I64]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem`
        [JIALC, JIALC_MMR6, SW_sp, TEQI, TEQI_MM, TGEI, TGEIU, TGEIU_MM,
         TGEI_MM, TLTI, TLTIU_MM, TLTI_MM, TNEI, TNEI_MM, TTLTIU, WRDSP,
         WRDSP_MM]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo], [])
    | i `elem` [MTC0] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass COP0Opnd) 1 False])
    | i `elem` [MTC2] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass COP2Opnd) 1 False])
    | i `elem`
        [ADDIUS5_MM, ADDIU_MMR6, ADDi, ADDi_MM, ADDiu, ADDiu_MM, ANDI_MMR6,
         ANDi, ANDi_MM, AUI, AUI_MMR6, ORI_MMR6, ORi, ORi_MM, ROTR, ROTR_MM,
         SHLL_S_W, SHLL_S_W_MM, SHRA_R_W, SHRA_R_W_MM, SLL, SLL_MM,
         SLL_MMR6, SLTi, SLTi_MM, SLTiu, SLTiu_MM, SRA, SRA_MM, SRL, SRL_MM,
         XORI_MMR6, XORi, XORi_MM]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [PRECR_SRA_PH_W, PRECR_SRA_PH_W_MMR2, PRECR_SRA_R_PH_W,
         PRECR_SRA_R_PH_W_MMR2]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass DSPROpnd) 0 False],
       [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem` [APPEND, BALIGN, PREPEND, PREPEND_MMR2] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [SB, SBE, SBE_MM, SB_MM, SB_MMR6, SB_fi, SH, SHE, SHE_MM, SH_MM,
         SH_MMR6, SH_fi, SW, SWE, SWE_MM, SWE_MMR6, SWL, SWL_fi, SWR,
         SWR_fi, SW_MM, SW_MMR6, SW_fi]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [EXT, EXT_MM, SC, SCE, SC_R6] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo,
        BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [INS, INS_MM] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo,
        BoundInfo, TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [BGEImmMacro, BGELImmMacro, BGEUImmMacro, BGEULImmMacro,
         BGTImmMacro, BGTLImmMacro, BGTUImmMacro, BGTULImmMacro,
         BLEImmMacro, BLELImmMacro, BLEUImmMacro, BLEULImmMacro,
         BLTImmMacro, BLTLImmMacro, BLTUImmMacro, BLTULImmMacro]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo,
        BlockRefInfo],
       [])
    | i `elem`
        [BEQZALC, BEQZALC_MMR6, BEQZC, BEQZC_MM, BGEZ, BGEZAL, BGEZALC,
         BGEZALC_MMR6, BGEZALL, BGEZALS_MM, BGEZAL_MM, BGEZC, BGEZL,
         BGEZ_MM, BGEZ_NOP, BGTZ, BGTZALC, BGTZALC_MMR6, BGTZC, BGTZL,
         BGTZ_MM, BGTZ_NOP, BLEZ, BLEZALC, BLEZALC_MMR6, BLEZC, BLEZL,
         BLEZ_MM, BLEZ_NOP, BLTZ, BLTZAL, BLTZALC, BLTZALC_MMR6, BLTZALL,
         BLTZALS_MM, BLTZAL_MM, BLTZC, BLTZL, BLTZ_MM, BLTZ_NOP, BNEZALC,
         BNEZALC_MMR6, BNEZC, BNEZC_MM, JIC, JIC_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [LONG_BRANCH_ADDiu] =
      ([TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BlockRefInfo,
        BlockRefInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [SLL64_64] =
      ([TemporaryInfo (RegisterClass GPR64) 0 False],
       [TemporaryInfo (RegisterClass GPR64) 1 False])
    | i `elem` [MIPSeh_return64] =
      ([TemporaryInfo (RegisterClass GPR64) 0 False,
        TemporaryInfo (RegisterClass GPR64) 0 False],
       [])
    | i `elem` [PseudoMTLOHI64] =
      ([TemporaryInfo (RegisterClass GPR64) 0 False,
        TemporaryInfo (RegisterClass GPR64) 0 False],
       [TemporaryInfo (RegisterClass ACC128) 1 False])
    | i `elem`
        [JALR64Pseudo, JR64, MTHI64, MTLO64, MTM0, MTM1, MTM2, MTP0, MTP1,
         MTP2, PseudoIndirectBranch64, PseudoReturn64, TAILCALL64_R]
      = ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False], [])
    | i `elem` [DMTC1, PseudoCVT_D64_L, PseudoCVT_S_L] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [DBITSWAP, DCLO, DCLO_R6, DCLZ, DCLZ_R6, DPOP, DSBH, DSHD, JALR64,
         SEB64, SEH64]
      =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [FILL_D] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [MOVF_I64, MOVT_I64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FCCRegsOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [DROTRV, DSLLV, DSRAV, DSRLV] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [MOVN_I_I64, MOVZ_I_I64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [DMULT, DMULTu, DSDIV, DUDIV] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [])
    | i `elem` [PseudoDMULT, PseudoDMULTu, PseudoDSDIV, PseudoDUDIV] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass ACC128) 1 False])
    | i `elem` [SLT64, SLTu64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [AND64, BADDu, DADD, DADDu, DDIV, DDIVU, DMOD, DMODU, DMUH, DMUHU,
         DMUL, DMULU, DMUL_R6, DSUB, DSUBu, NOR64, OR64, SELEQZ64, SELNEZ64,
         SEQ, SNE, V3MULU, VMM0, VMULU, XOR64]
      =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [MOVN_I64_I64, MOVZ_I64_I64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [DALIGN, DALIGN_MM64R6, DLSA, DLSA_R6] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [BEQ64, BNE64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [DMTC0] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass COP0Opnd) 1 False])
    | i `elem` [DMTC2] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass COP2Opnd) 1 False])
    | i `elem` [SLTi64, SLTiu64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [ANDi64, DADDi, DADDiu, DAHI, DAHI_MM64R6, DATI, DATI_MM64R6, DAUI,
         DAUI_MM64R6, DROTR, DROTR32, DSLL, DSLL32, DSRA, DSRA32, DSRL,
         DSRL32, ORi64, SEQi, SNEi, XORi64]
      =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [SB64, SD, SDL, SDR, SH64, SW64, SWL64, SWR64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem`
        [CINS, CINS32, DEXT, DEXTM, DEXTM_MM64R6, DEXTU, DEXTU_MM64R6,
         DEXT_MM64R6, EXTS, EXTS32, SCD, SCD_R6]
      =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo,
        BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [DINS, DINSM, DINSU] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo,
        BoundInfo, TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [BBIT0, BBIT032, BBIT1, BBIT132] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo,
        BlockRefInfo],
       [])
    | i `elem` [BGEZ64, BGTZ64, BLEZ64, BLTZ64] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [LONG_BRANCH_DADDiu] =
      ([TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BlockRefInfo,
        BlockRefInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [LBU16_MM, LHU16_MM, LW16_MM, LWGP_MM] =
      ([TemporaryInfo (RegisterClass GPRMM16) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPRMM16Opnd) 1 False])
    | i `elem` [NOT16_MM, NOT16_MMR6] =
      ([TemporaryInfo (RegisterClass GPRMM16Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPRMM16Opnd) 1 False])
    | i `elem`
        [ADDU16_MM, ADDU16_MMR6, AND16_MM, AND16_MMR6, OR16_MM, OR16_MMR6,
         SUBU16_MM, SUBU16_MMR6, XOR16_MM, XOR16_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPRMM16Opnd) 0 False,
        TemporaryInfo (RegisterClass GPRMM16Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPRMM16Opnd) 1 False])
    | i `elem`
        [ADDIUR2_MM, ANDI16_MM, ANDI16_MMR6, SLL16_MM, SLL16_MMR6,
         SRL16_MM, SRL16_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPRMM16Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPRMM16Opnd) 1 False])
    | i `elem` [BEQZ16_MM, BEQZC16_MMR6, BNEZ16_MM, BNEZC16_MMR6] =
      ([TemporaryInfo (RegisterClass GPRMM16Opnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [MOVEP_MM] =
      ([TemporaryInfo (RegisterClass GPRMM16OpndMoveP) 0 False,
        TemporaryInfo (RegisterClass GPRMM16OpndMoveP) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [SB16_MM, SB16_MMR6, SH16_MM, SH16_MMR6, SW16_MM, SW16_MMR6]
      =
      ([TemporaryInfo (RegisterClass GPRMM16OpndZero) 0 False,
        TemporaryInfo (RegisterClass GPRMM16) 0 False, BoundInfo],
       [])
    | i `elem` [Register_class_decl_dummy] =
      ([TemporaryInfo (RegisterClass GPR_ATT7) 0 False,
        TemporaryInfo (RegisterClass GPR_T89) 0 False,
        TemporaryInfo (RegisterClass GPR_FPRA) 0 False,
        TemporaryInfo (RegisterClass AFGR_D09) 0 False],
       [])
    | i `elem` [RDHWR, RDHWR_MM] =
      ([TemporaryInfo (RegisterClass HWRegsOpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [RDHWR64] =
      ([TemporaryInfo (RegisterClass HWRegsOpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [RDHWR_MMR6] =
      ([TemporaryInfo (RegisterClass HWRegsOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [SNZ_B_PSEUDO, SNZ_V_PSEUDO, SZ_B_PSEUDO, SZ_V_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128B) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem` [MOVE_V, NLOC_B, NLZC_B, PCNT_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [SPLAT_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [INSERT_B_VIDX_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [INSERT_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [INSERT_B_VIDX64_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem`
        [ADDS_A_B, ADDS_S_B, ADDS_U_B, ADDV_B, ADD_A_B, AND_V, ASUB_S_B,
         ASUB_U_B, AVER_S_B, AVER_U_B, AVE_S_B, AVE_U_B, BCLR_B, BNEG_B,
         BSET_B, CEQ_B, CLE_S_B, CLE_U_B, CLT_S_B, CLT_U_B, DIV_S_B,
         DIV_U_B, ILVEV_B, ILVL_B, ILVOD_B, ILVR_B, MAX_A_B, MAX_S_B,
         MAX_U_B, MIN_A_B, MIN_S_B, MIN_U_B, MOD_S_B, MOD_U_B, MULV_B,
         NOR_V, OR_V, PCKEV_B, PCKOD_B, SLL_B, SRAR_B, SRA_B, SRLR_B, SRL_B,
         SUBSUS_U_B, SUBSUU_S_B, SUBS_S_B, SUBS_U_B, SUBV_B, XOR_V]
      =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem`
        [DOTP_S_H, DOTP_U_H, HADD_S_H, HADD_U_H, HSUB_S_H, HSUB_U_H]
      =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [SLD_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem`
        [BINSL_B, BINSR_B, BMNZ_V, BMZ_V, BSEL_V, MADDV_B, MSUBV_B, VSHF_B]
      =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [BINSLI_B, BINSRI_B, BMNZI_B, BMZI_B, BSELI_B, SLDI_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [COPY_S_B, COPY_U_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [ADDVI_B, ANDI_B, BCLRI_B, BNEGI_B, BSETI_B, CEQI_B, CLEI_S_B,
         CLEI_U_B, CLTI_S_B, CLTI_U_B, MAXI_S_B, MAXI_U_B, MINI_S_B,
         MINI_U_B, NORI_B, ORI_B, SAT_S_B, SAT_U_B, SHF_B, SLLI_B, SPLATI_B,
         SRAI_B, SRARI_B, SRLI_B, SRLRI_B, SUBVI_B, XORI_B]
      =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [INSVE_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [ST_B] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [BNZ_B, BNZ_V, BZ_B, BZ_V] =
      ([TemporaryInfo (RegisterClass MSA128BOpnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [CFCMSA] =
      ([TemporaryInfo (RegisterClass MSA128CROpnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [CTCMSA] =
      ([TemporaryInfo (RegisterClass MSA128CROpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [])
    | i `elem` [SNZ_D_PSEUDO, SZ_D_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128D) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem` [FEXP2_D_1_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128D) 0 False],
       [TemporaryInfo (RegisterClass MSA128D) 1 False])
    | i `elem` [COPY_FD_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128D) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass FGR64) 1 False])
    | i `elem`
        [FABS_D, FCLASS_D, FFINT_S_D, FFINT_U_D, FLOG2_D, FRCP_D, FRINT_D,
         FRSQRT_D, FSQRT_D, FTINT_S_D, FTINT_U_D, FTRUNC_S_D, FTRUNC_U_D,
         NLOC_D, NLZC_D, PCNT_D]
      =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [SPLAT_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSERT_FD_VIDX_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSERT_D_VIDX_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSERT_FD_VIDX64_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSERT_D_VIDX64_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSERT_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem`
        [ADDS_A_D, ADDS_S_D, ADDS_U_D, ADDV_D, ADD_A_D, AND_V_D_PSEUDO,
         ASUB_S_D, ASUB_U_D, AVER_S_D, AVER_U_D, AVE_S_D, AVE_U_D, BCLR_D,
         BNEG_D, BSET_D, CEQ_D, CLE_S_D, CLE_U_D, CLT_S_D, CLT_U_D, DIV_S_D,
         DIV_U_D, FADD_D, FCAF_D, FCEQ_D, FCLE_D, FCLT_D, FCNE_D, FCOR_D,
         FCUEQ_D, FCULE_D, FCULT_D, FCUNE_D, FCUN_D, FDIV_D, FEXP2_D,
         FMAX_A_D, FMAX_D, FMIN_A_D, FMIN_D, FMUL_D, FSAF_D, FSEQ_D, FSLE_D,
         FSLT_D, FSNE_D, FSOR_D, FSUB_D, FSUEQ_D, FSULE_D, FSULT_D, FSUNE_D,
         FSUN_D, ILVEV_D, ILVL_D, ILVOD_D, ILVR_D, MAX_A_D, MAX_S_D,
         MAX_U_D, MIN_A_D, MIN_S_D, MIN_U_D, MOD_S_D, MOD_U_D, MULV_D,
         NOR_V_D_PSEUDO, OR_V_D_PSEUDO, PCKEV_D, PCKOD_D, SLL_D, SRAR_D,
         SRA_D, SRLR_D, SRL_D, SUBSUS_U_D, SUBSUU_S_D, SUBS_S_D, SUBS_U_D,
         SUBV_D, XOR_V_D_PSEUDO]
      =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [FEXDO_W, FTQ_W] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [SLD_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem`
        [BINSL_D, BINSR_D, BSEL_D_PSEUDO, BSEL_FD_PSEUDO, FMADD_D, FMSUB_D,
         MADDV_D, MSUBV_D, VSHF_D]
      =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [BINSLI_D, BINSRI_D, SLDI_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [DPADD_S_D, DPADD_U_D, DPSUB_S_D, DPSUB_U_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [COPY_S_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem`
        [ADDVI_D, BCLRI_D, BNEGI_D, BSETI_D, CEQI_D, CLEI_S_D, CLEI_U_D,
         CLTI_S_D, CLTI_U_D, MAXI_S_D, MAXI_U_D, MINI_S_D, MINI_U_D,
         SAT_S_D, SAT_U_D, SLLI_D, SPLATI_D, SRAI_D, SRARI_D, SRLI_D,
         SRLRI_D, SUBVI_D]
      =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSERT_FD_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass FGR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [INSVE_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [ST_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [BNZ_D, BZ_D] =
      ([TemporaryInfo (RegisterClass MSA128DOpnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [SNZ_H_PSEUDO, SZ_H_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128H) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem` [NLOC_H, NLZC_H, PCNT_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [FEXUPL_W, FEXUPR_W, FFQL_W, FFQR_W] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [SPLAT_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [INSERT_H_VIDX_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [INSERT_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [INSERT_H_VIDX64_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [DPADD_S_H, DPADD_U_H, DPSUB_S_H, DPSUB_U_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128BOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem`
        [ADDS_A_H, ADDS_S_H, ADDS_U_H, ADDV_H, ADD_A_H, AND_V_H_PSEUDO,
         ASUB_S_H, ASUB_U_H, AVER_S_H, AVER_U_H, AVE_S_H, AVE_U_H, BCLR_H,
         BNEG_H, BSET_H, CEQ_H, CLE_S_H, CLE_U_H, CLT_S_H, CLT_U_H, DIV_S_H,
         DIV_U_H, ILVEV_H, ILVL_H, ILVOD_H, ILVR_H, MAX_A_H, MAX_S_H,
         MAX_U_H, MIN_A_H, MIN_S_H, MIN_U_H, MOD_S_H, MOD_U_H, MULR_Q_H,
         MULV_H, MUL_Q_H, NOR_V_H_PSEUDO, OR_V_H_PSEUDO, PCKEV_H, PCKOD_H,
         SLL_H, SRAR_H, SRA_H, SRLR_H, SRL_H, SUBSUS_U_H, SUBSUU_S_H,
         SUBS_S_H, SUBS_U_H, SUBV_H, XOR_V_H_PSEUDO]
      =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem`
        [DOTP_S_W, DOTP_U_W, HADD_S_W, HADD_U_W, HSUB_S_W, HSUB_U_W]
      =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [SLD_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem`
        [BINSL_H, BINSR_H, BSEL_H_PSEUDO, MADDR_Q_H, MADDV_H, MADD_Q_H,
         MSUBR_Q_H, MSUBV_H, MSUB_Q_H, VSHF_H]
      =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [BINSLI_H, BINSRI_H, SLDI_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [COPY_S_H, COPY_U_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [ADDVI_H, BCLRI_H, BNEGI_H, BSETI_H, CEQI_H, CLEI_S_H, CLEI_U_H,
         CLTI_S_H, CLTI_U_H, MAXI_S_H, MAXI_U_H, MINI_S_H, MINI_U_H,
         SAT_S_H, SAT_U_H, SHF_H, SLLI_H, SPLATI_H, SRAI_H, SRARI_H, SRLI_H,
         SRLRI_H, SUBVI_H]
      =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [INSVE_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [ST_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [BNZ_H, BZ_H] =
      ([TemporaryInfo (RegisterClass MSA128HOpnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [SNZ_W_PSEUDO, SZ_W_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128W) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem` [FEXP2_W_1_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128W) 0 False],
       [TemporaryInfo (RegisterClass MSA128W) 1 False])
    | i `elem` [COPY_FW_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128W) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass FGR32) 1 False])
    | i `elem` [FEXUPL_D, FEXUPR_D, FFQL_D, FFQR_D] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem`
        [FABS_W, FCLASS_W, FFINT_S_W, FFINT_U_W, FLOG2_W, FRCP_W, FRINT_W,
         FRSQRT_W, FSQRT_W, FTINT_S_W, FTINT_U_W, FTRUNC_S_W, FTRUNC_U_W,
         NLOC_W, NLZC_W, PCNT_W]
      =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [SPLAT_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSERT_FW_VIDX_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSERT_W_VIDX_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSERT_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSERT_FW_VIDX64_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSERT_W_VIDX64_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [DPADD_S_W, DPADD_U_W, DPSUB_S_W, DPSUB_U_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128HOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem`
        [DOTP_S_D, DOTP_U_D, HADD_S_D, HADD_U_D, HSUB_S_D, HSUB_U_D]
      =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [FEXDO_H, FTQ_H] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem`
        [ADDS_A_W, ADDS_S_W, ADDS_U_W, ADDV_W, ADD_A_W, AND_V_W_PSEUDO,
         ASUB_S_W, ASUB_U_W, AVER_S_W, AVER_U_W, AVE_S_W, AVE_U_W, BCLR_W,
         BNEG_W, BSET_W, CEQ_W, CLE_S_W, CLE_U_W, CLT_S_W, CLT_U_W, DIV_S_W,
         DIV_U_W, FADD_W, FCAF_W, FCEQ_W, FCLE_W, FCLT_W, FCNE_W, FCOR_W,
         FCUEQ_W, FCULE_W, FCULT_W, FCUNE_W, FCUN_W, FDIV_W, FEXP2_W,
         FMAX_A_W, FMAX_W, FMIN_A_W, FMIN_W, FMUL_W, FSAF_W, FSEQ_W, FSLE_W,
         FSLT_W, FSNE_W, FSOR_W, FSUB_W, FSUEQ_W, FSULE_W, FSULT_W, FSUNE_W,
         FSUN_W, ILVEV_W, ILVL_W, ILVOD_W, ILVR_W, MAX_A_W, MAX_S_W,
         MAX_U_W, MIN_A_W, MIN_S_W, MIN_U_W, MOD_S_W, MOD_U_W, MULR_Q_W,
         MULV_W, MUL_Q_W, NOR_V_W_PSEUDO, OR_V_W_PSEUDO, PCKEV_W, PCKOD_W,
         SLL_W, SRAR_W, SRA_W, SRLR_W, SRL_W, SUBSUS_U_W, SUBSUU_S_W,
         SUBS_S_W, SUBS_U_W, SUBV_W, XOR_V_W_PSEUDO]
      =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [SLD_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem`
        [BINSL_W, BINSR_W, BSEL_FW_PSEUDO, BSEL_W_PSEUDO, FMADD_W, FMSUB_W,
         MADDR_Q_W, MADDV_W, MADD_Q_W, MSUBR_Q_W, MSUBV_W, MSUB_Q_W, VSHF_W]
      =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [BINSLI_W, BINSRI_W, SLDI_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [COPY_S_W, COPY_U_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [ADDVI_W, BCLRI_W, BNEGI_W, BSETI_W, CEQI_W, CLEI_S_W, CLEI_U_W,
         CLTI_S_W, CLTI_U_W, MAXI_S_W, MAXI_U_W, MINI_S_W, MINI_U_W,
         SAT_S_W, SAT_U_W, SHF_W, SLLI_W, SPLATI_W, SRAI_W, SRARI_W, SRLI_W,
         SRLRI_W, SUBVI_W]
      =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSERT_FW_PSEUDO] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass FGR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [INSVE_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo,
        TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [ST_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BoundInfo,
        BoundInfo],
       [])
    | i `elem` [BNZ_W, BZ_W] =
      ([TemporaryInfo (RegisterClass MSA128WOpnd) 0 False, BlockRefInfo],
       [])
    | i `elem` [LWC1_fi_remat_fi] =
      ([TemporaryInfo (InfiniteRegisterClass RM32) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem`
        [LBu_fi_remat_fi, LEA_ADDiu_remat, LUi_remat, LW_fi_remat_fi]
      =
      ([TemporaryInfo (InfiniteRegisterClass RM32) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LDC1_fi_remat_fi] =
      ([TemporaryInfo (InfiniteRegisterClass RM64) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [LOAD_F] =
      ([TemporaryInfo (InfiniteRegisterClass M32) 0 False],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [LOAD] =
      ([TemporaryInfo (InfiniteRegisterClass M32) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LOAD_D] =
      ([TemporaryInfo (InfiniteRegisterClass M64) 0 False],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem`
        [ADDIUSP_MM, ADDiu_negsp, ADDiu_sp, ADJCALLSTACKDOWN, AddiuSpImm16,
         AddiuSpImmX16, BREAK16_MM, BREAK16_MMR6, BUNDLE, Bteqz16, BteqzX16,
         Btnez16, BtnezX16, CFI_INSTRUCTION, Constant32, DBG_VALUE,
         EH_LABEL, GC_LABEL, INLINEASM, JAL, JALS_MM, JALX, JALX_MM, JAL_MM,
         Jal16, JalB16, KILL, LIFETIME_END, LIFETIME_START, PHI, Restore16,
         RestoreX16, SDBBP, SDBBP16_MM, SDBBP16_MMR6, SDBBP_MM, SDBBP_MMR6,
         SDBBP_R6, STATEPOINT, SYNC, SYNC_MM, SYNC_MMR6, SYSCALL,
         SYSCALL_MM, Save16, SaveX16, TAILCALL, WAIT_MM, WAIT_MMR6]
      = ([BoundInfo], [])
    | i `elem`
        [AddiuRxImmX16, AddiuRxPcImmX16, LiRxImm16, LiRxImmAlignX16,
         LiRxImmX16]
      = ([BoundInfo], [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [REPL_PH, REPL_PH_MM, REPL_QB, REPL_QB_MM] =
      ([BoundInfo], [TemporaryInfo (RegisterClass DSPROpnd) 1 False])
    | i `elem`
        [ADDIUPC, ADDIUPC_MMR6, ALUIPC, ALUIPC_MMR6, AUIPC, AUIPC_MMR6,
         LUI_MMR6, LUi, LUi_MM, LWPC, LWPC_MMR6, LWUPC, LoadAddrImm32,
         LoadImm32, RDDSP, RDDSP_MM]
      = ([BoundInfo], [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LDPC, LUi64, LoadAddrImm64, LoadImm64] =
      ([BoundInfo], [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [ADDIUPC_MM, ADDIUR1SP_MM, LI16_MM, LI16_MMR6] =
      ([BoundInfo], [TemporaryInfo (RegisterClass GPRMM16Opnd) 1 False])
    | i `elem` [LDI_B] =
      ([BoundInfo], [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [LDI_D] =
      ([BoundInfo], [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [LDI_H] =
      ([BoundInfo], [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [LDI_W] =
      ([BoundInfo], [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem` [LUi_source] =
      ([BoundInfo], [TemporaryInfo (InfiniteRegisterClass RM32) 0 False])
    | i `elem` [COPY, FAULTING_LOAD_OP] = ([BoundInfo], [BoundInfo])
    | i `elem` [SHILO, SHILO_MM] =
      ([BoundInfo, TemporaryInfo (RegisterClass ACC64DSPOpnd) 0 False],
       [TemporaryInfo (RegisterClass ACC64DSPOpnd) 1 False])
    | i `elem`
        [ATOMIC_LOAD_ADD_I16, ATOMIC_LOAD_ADD_I32, ATOMIC_LOAD_ADD_I8,
         ATOMIC_LOAD_AND_I16, ATOMIC_LOAD_AND_I32, ATOMIC_LOAD_AND_I8,
         ATOMIC_LOAD_NAND_I16, ATOMIC_LOAD_NAND_I32, ATOMIC_LOAD_NAND_I8,
         ATOMIC_LOAD_OR_I16, ATOMIC_LOAD_OR_I32, ATOMIC_LOAD_OR_I8,
         ATOMIC_LOAD_SUB_I16, ATOMIC_LOAD_SUB_I32, ATOMIC_LOAD_SUB_I8,
         ATOMIC_LOAD_XOR_I16, ATOMIC_LOAD_XOR_I32, ATOMIC_LOAD_XOR_I8,
         ATOMIC_SWAP_I16, ATOMIC_SWAP_I32, ATOMIC_SWAP_I8]
      =
      ([BoundInfo, TemporaryInfo (RegisterClass GPR32) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem`
        [ATOMIC_CMP_SWAP_I16, ATOMIC_CMP_SWAP_I32, ATOMIC_CMP_SWAP_I8]
      =
      ([BoundInfo, TemporaryInfo (RegisterClass GPR32) 0 False,
        TemporaryInfo (RegisterClass GPR32) 0 False],
       [TemporaryInfo (RegisterClass GPR32) 1 False])
    | i `elem` [SWM16_MM, SWM16_MMR6, SWM32_MM, SWM_MM] =
      ([BoundInfo, TemporaryInfo (RegisterClass GPR32) 0 False,
        BoundInfo],
       [])
    | i `elem`
        [ATOMIC_LOAD_ADD_I64, ATOMIC_LOAD_AND_I64, ATOMIC_LOAD_NAND_I64,
         ATOMIC_LOAD_OR_I64, ATOMIC_LOAD_SUB_I64, ATOMIC_LOAD_XOR_I64,
         ATOMIC_SWAP_I64]
      =
      ([BoundInfo, TemporaryInfo (RegisterClass GPR64) 0 False],
       [TemporaryInfo (RegisterClass GPR64) 1 False])
    | i `elem` [ATOMIC_CMP_SWAP_I64] =
      ([BoundInfo, TemporaryInfo (RegisterClass GPR64) 0 False,
        TemporaryInfo (RegisterClass GPR64) 0 False],
       [TemporaryInfo (RegisterClass GPR64) 1 False])
    | i `elem`
        [ADJCALLSTACKUP, BREAK, BREAK_MM, BREAK_MMR6, LOCAL_ESCAPE, SYNCI,
         SYNCI_MMR6]
      = ([BoundInfo, BoundInfo], [])
    | i `elem` [LOAD_ACC128] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass ACC128) 1 False])
    | i `elem` [LOAD_ACC64] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass ACC64) 1 False])
    | i `elem` [LOAD_ACC64DSP] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass ACC64DSPOpnd) 1 False])
    | i `elem` [LDC1, LDC1_MM, LDC1_fi, LDXC1, LUXC1, LUXC1_MM] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass AFGR64Opnd) 1 False])
    | i `elem` [LDC2, LDC2_R6, LWC2, LWC2_R6] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass COP2Opnd) 1 False])
    | i `elem` [LDC3, LWC3] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass COP3Opnd) 1 False])
    | i `elem` [LwConstant32, LwRxPcTcp16, LwRxPcTcpX16] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [GotPrologue16] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass CPU16Regs) 1 False,
        TemporaryInfo (RegisterClass CPU16Regs) 1 False])
    | i `elem` [LOAD_CCOND_DSP] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass DSPCC) 1 False])
    | i `elem` [LWC1, LWC1_MM, LWC1_fi, LWXC1, LWXC1_MM] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass FGR32Opnd) 1 False])
    | i `elem` [LDC164, LDXC164, LUXC164] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass FGR64Opnd) 1 False])
    | i `elem`
        [LB, LBE, LBE_MM, LBUX, LBUX_MM, LB_MM, LBu, LBuE, LBuE_MM, LBu_MM,
         LBu_fi, LEA_ADDiu, LEA_ADDiu_MM, LH, LHE, LHE_MM, LHX, LHX_MM,
         LH_MM, LH_fi, LHu, LHuE, LHuE_MM, LHu_MM, LHu_fi, LL, LLE, LL_R6,
         LW, LWE, LWE_MM, LWX, LWXS_MM, LWX_MM, LW_MM, LW_MMR6, LW_fi,
         LoadAddrReg32, Ulh, Ulhu, Ulw]
      =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [LB64, LBu64, LD, LEA_ADDiu64, LH64, LHu64, LLD, LLD_R6, LW64, LWu,
         LoadAddrReg64]
      =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem` [LD_B] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128BOpnd) 1 False])
    | i `elem` [LD_D] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128DOpnd) 1 False])
    | i `elem` [LD_H] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128HOpnd) 1 False])
    | i `elem` [LD_W] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (RegisterClass MSA128WOpnd) 1 False])
    | i `elem`
        [LBu_fi_source_fi, LEA_ADDiu_source, LWC1_fi_source_fi,
         LW_fi_source_fi]
      =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (InfiniteRegisterClass RM32) 0 False])
    | i `elem` [LDC1_fi_source_fi] =
      ([BoundInfo, BoundInfo],
       [TemporaryInfo (InfiniteRegisterClass RM64) 0 False])
    | i `elem` [COPY_TO_REGCLASS, EXTRACT_SUBREG, REG_SEQUENCE] =
      ([BoundInfo, BoundInfo], [BoundInfo])
    | i `elem` [LWL, LWLE, LWR, LWRE, SWLE, SWRE] =
      ([BoundInfo, BoundInfo,
        TemporaryInfo (RegisterClass GPR32Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem` [LDL, LDR, LWL64, LWR64] =
      ([BoundInfo, BoundInfo,
        TemporaryInfo (RegisterClass GPR64Opnd) 0 False],
       [TemporaryInfo (RegisterClass GPR64Opnd) 1 False])
    | i `elem`
        [CACHE, CACHEE, CACHE_R6, CONSTPOOL_ENTRY, PREF, PREFE, PREFX_MM,
         PREF_R6, STACKMAP]
      = ([BoundInfo, BoundInfo, BoundInfo], [])
    | i `elem` [INSERT_SUBREG, SUBREG_TO_REG] =
      ([BoundInfo, BoundInfo, BoundInfo], [BoundInfo])
    | i `elem` [PATCHPOINT] =
      ([BoundInfo, BoundInfo, BoundInfo, BoundInfo, BoundInfo,
        BoundInfo],
       [BoundInfo])
    | i `elem` [BeqImm, BneImm] =
      ([BoundInfo, BlockRefInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
    | i `elem`
        [B, B16_MM, BAL, BALC, BALC_MMR6, BAL_BR, BC, BC16_MMR6, BC_MMR6,
         BPOSGE32, B_MMR6_Pseudo, B_MM_Pseudo, B_NOP, Bimm16, BimmX16, J,
         JRADDIUSP, JRCADDIUSP_MMR6, J_MM]
      = ([BlockRefInfo], [])
    | i `elem` [LONG_BRANCH_LUi] =
      ([BlockRefInfo, BlockRefInfo],
       [TemporaryInfo (RegisterClass GPR32Opnd) 1 False])
  
  