llvm/lib/Target/PowerPC/PPCGenMCCodeEmitter.inc

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Machine Code Emitter                                                       *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

uint64_t PPCMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
    SmallVectorImpl<MCFixup> &Fixups,
    const MCSubtargetInfo &STI) const {}

#ifdef GET_OPERAND_BIT_OFFSET
#undef GET_OPERAND_BIT_OFFSET

uint32_t PPCMCCodeEmitter::getOperandBitOffset(const MCInst &MI,
    unsigned OpNum,
    const MCSubtargetInfo &STI) const {
  switch (MI.getOpcode()) {
    case PPC::ADDISdtprelHA:
    case PPC::ADDISdtprelHA32:
    case PPC::ADDISgotTprelHA:
    case PPC::ADDIStlsgdHA:
    case PPC::ADDIStlsldHA:
    case PPC::ADDIStocHA:
    case PPC::ADDIStocHA8:
    case PPC::ADDIdtprelL:
    case PPC::ADDIdtprelL32:
    case PPC::ADDItlsgdL:
    case PPC::ADDItlsgdL32:
    case PPC::ADDItlsgdLADDR:
    case PPC::ADDItlsgdLADDR32:
    case PPC::ADDItlsldL:
    case PPC::ADDItlsldL32:
    case PPC::ADDItlsldLADDR:
    case PPC::ADDItlsldLADDR32:
    case PPC::ADDItoc:
    case PPC::ADDItoc8:
    case PPC::ADDItocL:
    case PPC::ADDItocL8:
    case PPC::ADJCALLSTACKDOWN:
    case PPC::ADJCALLSTACKUP:
    case PPC::ANDI_rec_1_EQ_BIT:
    case PPC::ANDI_rec_1_EQ_BIT8:
    case PPC::ANDI_rec_1_GT_BIT:
    case PPC::ANDI_rec_1_GT_BIT8:
    case PPC::ATOMIC_CMP_SWAP_I8:
    case PPC::ATOMIC_CMP_SWAP_I16:
    case PPC::ATOMIC_CMP_SWAP_I32:
    case PPC::ATOMIC_CMP_SWAP_I64:
    case PPC::ATOMIC_LOAD_ADD_I8:
    case PPC::ATOMIC_LOAD_ADD_I16:
    case PPC::ATOMIC_LOAD_ADD_I32:
    case PPC::ATOMIC_LOAD_ADD_I64:
    case PPC::ATOMIC_LOAD_AND_I8:
    case PPC::ATOMIC_LOAD_AND_I16:
    case PPC::ATOMIC_LOAD_AND_I32:
    case PPC::ATOMIC_LOAD_AND_I64:
    case PPC::ATOMIC_LOAD_MAX_I8:
    case PPC::ATOMIC_LOAD_MAX_I16:
    case PPC::ATOMIC_LOAD_MAX_I32:
    case PPC::ATOMIC_LOAD_MAX_I64:
    case PPC::ATOMIC_LOAD_MIN_I8:
    case PPC::ATOMIC_LOAD_MIN_I16:
    case PPC::ATOMIC_LOAD_MIN_I32:
    case PPC::ATOMIC_LOAD_MIN_I64:
    case PPC::ATOMIC_LOAD_NAND_I8:
    case PPC::ATOMIC_LOAD_NAND_I16:
    case PPC::ATOMIC_LOAD_NAND_I32:
    case PPC::ATOMIC_LOAD_NAND_I64:
    case PPC::ATOMIC_LOAD_OR_I8:
    case PPC::ATOMIC_LOAD_OR_I16:
    case PPC::ATOMIC_LOAD_OR_I32:
    case PPC::ATOMIC_LOAD_OR_I64:
    case PPC::ATOMIC_LOAD_SUB_I8:
    case PPC::ATOMIC_LOAD_SUB_I16:
    case PPC::ATOMIC_LOAD_SUB_I32:
    case PPC::ATOMIC_LOAD_SUB_I64:
    case PPC::ATOMIC_LOAD_UMAX_I8:
    case PPC::ATOMIC_LOAD_UMAX_I16:
    case PPC::ATOMIC_LOAD_UMAX_I32:
    case PPC::ATOMIC_LOAD_UMAX_I64:
    case PPC::ATOMIC_LOAD_UMIN_I8:
    case PPC::ATOMIC_LOAD_UMIN_I16:
    case PPC::ATOMIC_LOAD_UMIN_I32:
    case PPC::ATOMIC_LOAD_UMIN_I64:
    case PPC::ATOMIC_LOAD_XOR_I8:
    case PPC::ATOMIC_LOAD_XOR_I16:
    case PPC::ATOMIC_LOAD_XOR_I32:
    case PPC::ATOMIC_LOAD_XOR_I64:
    case PPC::ATOMIC_SWAP_I8:
    case PPC::ATOMIC_SWAP_I16:
    case PPC::ATOMIC_SWAP_I32:
    case PPC::ATOMIC_SWAP_I64:
    case PPC::ATTN:
    case PPC::BCTR:
    case PPC::BCTR8:
    case PPC::BCTRL:
    case PPC::BCTRL8:
    case PPC::BCTRL8_RM:
    case PPC::BCTRL_RM:
    case PPC::BDNZLR:
    case PPC::BDNZLR8:
    case PPC::BDNZLRL:
    case PPC::BDNZLRLm:
    case PPC::BDNZLRLp:
    case PPC::BDNZLRm:
    case PPC::BDNZLRp:
    case PPC::BDZLR:
    case PPC::BDZLR8:
    case PPC::BDZLRL:
    case PPC::BDZLRLm:
    case PPC::BDZLRLp:
    case PPC::BDZLRm:
    case PPC::BDZLRp:
    case PPC::BLR:
    case PPC::BLR8:
    case PPC::BLRL:
    case PPC::CLRBHRB:
    case PPC::CP_ABORT:
    case PPC::CR6SET:
    case PPC::CR6UNSET:
    case PPC::DSSALL:
    case PPC::DYNALLOC:
    case PPC::DYNALLOC8:
    case PPC::DYNAREAOFFSET:
    case PPC::DYNAREAOFFSET8:
    case PPC::DecreaseCTR8loop:
    case PPC::DecreaseCTRloop:
    case PPC::EH_SjLj_LongJmp32:
    case PPC::EH_SjLj_LongJmp64:
    case PPC::EH_SjLj_SetJmp32:
    case PPC::EH_SjLj_SetJmp64:
    case PPC::EH_SjLj_Setup:
    case PPC::EnforceIEIO:
    case PPC::FADDrtz:
    case PPC::FENCE:
    case PPC::GETtlsADDR:
    case PPC::GETtlsADDR32:
    case PPC::GETtlsADDR32AIX:
    case PPC::GETtlsADDR64AIX:
    case PPC::GETtlsADDRPCREL:
    case PPC::GETtlsMOD32AIX:
    case PPC::GETtlsMOD64AIX:
    case PPC::GETtlsTpointer32AIX:
    case PPC::GETtlsldADDR:
    case PPC::GETtlsldADDR32:
    case PPC::GETtlsldADDRPCREL:
    case PPC::HRFID:
    case PPC::ISYNC:
    case PPC::LDgotTprelL:
    case PPC::LDgotTprelL32:
    case PPC::LDtoc:
    case PPC::LDtocBA:
    case PPC::LDtocCPT:
    case PPC::LDtocJTI:
    case PPC::LDtocL:
    case PPC::LQX_PSEUDO:
    case PPC::LWZtoc:
    case PPC::LWZtocL:
    case PPC::MSGSYNC:
    case PPC::MSYNC:
    case PPC::MoveGOTtoLR:
    case PPC::MovePCtoLR:
    case PPC::MovePCtoLR8:
    case PPC::NAP:
    case PPC::NOP:
    case PPC::NOP_GT_PWR6:
    case PPC::NOP_GT_PWR7:
    case PPC::PADDIdtprel:
    case PPC::PPC32GOT:
    case PPC::PPC32PICGOT:
    case PPC::PREPARE_PROBED_ALLOCA_32:
    case PPC::PREPARE_PROBED_ALLOCA_64:
    case PPC::PREPARE_PROBED_ALLOCA_NEGSIZE_SAME_REG_32:
    case PPC::PREPARE_PROBED_ALLOCA_NEGSIZE_SAME_REG_64:
    case PPC::PROBED_ALLOCA_32:
    case PPC::PROBED_ALLOCA_64:
    case PPC::PROBED_STACKALLOC_32:
    case PPC::PROBED_STACKALLOC_64:
    case PPC::PseudoEIEIO:
    case PPC::RESTORE_ACC:
    case PPC::RESTORE_CR:
    case PPC::RESTORE_CRBIT:
    case PPC::RESTORE_QUADWORD:
    case PPC::RESTORE_UACC:
    case PPC::RESTORE_WACC:
    case PPC::RFCI:
    case PPC::RFDI:
    case PPC::RFI:
    case PPC::RFID:
    case PPC::RFMCI:
    case PPC::ReadTB:
    case PPC::SELECT_CC_F4:
    case PPC::SELECT_CC_F8:
    case PPC::SELECT_CC_F16:
    case PPC::SELECT_CC_I4:
    case PPC::SELECT_CC_I8:
    case PPC::SELECT_CC_SPE:
    case PPC::SELECT_CC_SPE4:
    case PPC::SELECT_CC_VRRC:
    case PPC::SELECT_CC_VSFRC:
    case PPC::SELECT_CC_VSRC:
    case PPC::SELECT_CC_VSSRC:
    case PPC::SELECT_F4:
    case PPC::SELECT_F8:
    case PPC::SELECT_F16:
    case PPC::SELECT_I4:
    case PPC::SELECT_I8:
    case PPC::SELECT_SPE:
    case PPC::SELECT_SPE4:
    case PPC::SELECT_VRRC:
    case PPC::SELECT_VSFRC:
    case PPC::SELECT_VSRC:
    case PPC::SELECT_VSSRC:
    case PPC::SETFLM:
    case PPC::SETRND:
    case PPC::SETRNDi:
    case PPC::SLBIA:
    case PPC::SLBSYNC:
    case PPC::SPILL_ACC:
    case PPC::SPILL_CR:
    case PPC::SPILL_CRBIT:
    case PPC::SPILL_QUADWORD:
    case PPC::SPILL_UACC:
    case PPC::SPILL_WACC:
    case PPC::SPLIT_QUADWORD:
    case PPC::STOP:
    case PPC::STQX_PSEUDO:
    case PPC::TAILBCTR:
    case PPC::TAILBCTR8:
    case PPC::TBEGIN_RET:
    case PPC::TCHECK_RET:
    case PPC::TCRETURNai:
    case PPC::TCRETURNai8:
    case PPC::TCRETURNdi:
    case PPC::TCRETURNdi8:
    case PPC::TCRETURNri:
    case PPC::TCRETURNri8:
    case PPC::TLBIA:
    case PPC::TLBRE:
    case PPC::TLBSYNC:
    case PPC::TLBWE:
    case PPC::TLSGDAIX:
    case PPC::TLSGDAIX8:
    case PPC::TLSLDAIX:
    case PPC::TLSLDAIX8:
    case PPC::TRAP:
    case PPC::TRECHKPT:
    case PPC::UNENCODED_NOP:
    case PPC::UpdateGBR: {
      break;
    }
    case PPC::TEND: {
      switch (OpNum) {
      case 0:
        // op: A
        return 25;
      }
      break;
    }
    case PPC::DMMR: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: AB
        return 13;
      }
      break;
    }
    case PPC::PMXVI4GER8:
    case PPC::PMXVI4GER8W: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XMSK
        return 36;
      case 4:
        // op: YMSK
        return 32;
      case 5:
        // op: PMSK
        return 40;
      }
      break;
    }
    case PPC::PMXVI8GER4:
    case PPC::PMXVI8GER4W: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XMSK
        return 36;
      case 4:
        // op: YMSK
        return 32;
      case 5:
        // op: PMSK
        return 44;
      }
      break;
    }
    case PPC::PMXVBF16GER2:
    case PPC::PMXVBF16GER2W:
    case PPC::PMXVF16GER2:
    case PPC::PMXVF16GER2W:
    case PPC::PMXVI16GER2:
    case PPC::PMXVI16GER2S:
    case PPC::PMXVI16GER2SW:
    case PPC::PMXVI16GER2W: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XMSK
        return 36;
      case 4:
        // op: YMSK
        return 32;
      case 5:
        // op: PMSK
        return 46;
      }
      break;
    }
    case PPC::PMXVF32GER:
    case PPC::PMXVF32GERW: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XMSK
        return 36;
      case 4:
        // op: YMSK
        return 32;
      }
      break;
    }
    case PPC::PMXVF64GER:
    case PPC::PMXVF64GERW: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XMSK
        return 36;
      case 4:
        // op: YMSK
        return 34;
      }
      break;
    }
    case PPC::XVBF16GER2:
    case PPC::XVBF16GER2W:
    case PPC::XVF16GER2:
    case PPC::XVF16GER2W:
    case PPC::XVF32GER:
    case PPC::XVF32GERW:
    case PPC::XVF64GER:
    case PPC::XVF64GERW:
    case PPC::XVI4GER8:
    case PPC::XVI4GER8W:
    case PPC::XVI8GER4:
    case PPC::XVI8GER4W:
    case PPC::XVI16GER2:
    case PPC::XVI16GER2S:
    case PPC::XVI16GER2SW:
    case PPC::XVI16GER2W: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::DMXXINSTFDMR512:
    case PPC::DMXXINSTFDMR512_HI: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XAp
        return 2;
      case 2:
        // op: XBp
        return 1;
      }
      break;
    }
    case PPC::DMXXINSTFDMR256: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 1:
        // op: XBp
        return 1;
      case 2:
        // op: P
        return 11;
      }
      break;
    }
    case PPC::DMXOR: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: AB
        return 13;
      }
      break;
    }
    case PPC::PMXVI4GER8PP:
    case PPC::PMXVI4GER8WPP: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      case 4:
        // op: XMSK
        return 36;
      case 5:
        // op: YMSK
        return 32;
      case 6:
        // op: PMSK
        return 40;
      }
      break;
    }
    case PPC::PMXVI8GER4PP:
    case PPC::PMXVI8GER4SPP:
    case PPC::PMXVI8GER4WPP:
    case PPC::PMXVI8GER4WSPP: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      case 4:
        // op: XMSK
        return 36;
      case 5:
        // op: YMSK
        return 32;
      case 6:
        // op: PMSK
        return 44;
      }
      break;
    }
    case PPC::PMXVBF16GER2NN:
    case PPC::PMXVBF16GER2NP:
    case PPC::PMXVBF16GER2PN:
    case PPC::PMXVBF16GER2PP:
    case PPC::PMXVBF16GER2WNN:
    case PPC::PMXVBF16GER2WNP:
    case PPC::PMXVBF16GER2WPN:
    case PPC::PMXVBF16GER2WPP:
    case PPC::PMXVF16GER2NN:
    case PPC::PMXVF16GER2NP:
    case PPC::PMXVF16GER2PN:
    case PPC::PMXVF16GER2PP:
    case PPC::PMXVF16GER2WNN:
    case PPC::PMXVF16GER2WNP:
    case PPC::PMXVF16GER2WPN:
    case PPC::PMXVF16GER2WPP:
    case PPC::PMXVI16GER2PP:
    case PPC::PMXVI16GER2SPP:
    case PPC::PMXVI16GER2SWPP:
    case PPC::PMXVI16GER2WPP: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      case 4:
        // op: XMSK
        return 36;
      case 5:
        // op: YMSK
        return 32;
      case 6:
        // op: PMSK
        return 46;
      }
      break;
    }
    case PPC::PMXVF32GERNN:
    case PPC::PMXVF32GERNP:
    case PPC::PMXVF32GERPN:
    case PPC::PMXVF32GERPP:
    case PPC::PMXVF32GERWNN:
    case PPC::PMXVF32GERWNP:
    case PPC::PMXVF32GERWPN:
    case PPC::PMXVF32GERWPP: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      case 4:
        // op: XMSK
        return 36;
      case 5:
        // op: YMSK
        return 32;
      }
      break;
    }
    case PPC::PMXVF64GERNN:
    case PPC::PMXVF64GERNP:
    case PPC::PMXVF64GERPN:
    case PPC::PMXVF64GERPP:
    case PPC::PMXVF64GERWNN:
    case PPC::PMXVF64GERWNP:
    case PPC::PMXVF64GERWPN:
    case PPC::PMXVF64GERWPP: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      case 4:
        // op: XMSK
        return 36;
      case 5:
        // op: YMSK
        return 34;
      }
      break;
    }
    case PPC::XVBF16GER2NN:
    case PPC::XVBF16GER2NP:
    case PPC::XVBF16GER2PN:
    case PPC::XVBF16GER2PP:
    case PPC::XVBF16GER2WNN:
    case PPC::XVBF16GER2WNP:
    case PPC::XVBF16GER2WPN:
    case PPC::XVBF16GER2WPP:
    case PPC::XVF16GER2NN:
    case PPC::XVF16GER2NP:
    case PPC::XVF16GER2PN:
    case PPC::XVF16GER2PP:
    case PPC::XVF16GER2WNN:
    case PPC::XVF16GER2WNP:
    case PPC::XVF16GER2WPN:
    case PPC::XVF16GER2WPP:
    case PPC::XVF32GERNN:
    case PPC::XVF32GERNP:
    case PPC::XVF32GERPN:
    case PPC::XVF32GERPP:
    case PPC::XVF32GERWNN:
    case PPC::XVF32GERWNP:
    case PPC::XVF32GERWPN:
    case PPC::XVF32GERWPP:
    case PPC::XVF64GERNN:
    case PPC::XVF64GERNP:
    case PPC::XVF64GERPN:
    case PPC::XVF64GERPP:
    case PPC::XVF64GERWNN:
    case PPC::XVF64GERWNP:
    case PPC::XVF64GERWPN:
    case PPC::XVF64GERWPP:
    case PPC::XVI4GER8PP:
    case PPC::XVI4GER8WPP:
    case PPC::XVI8GER4PP:
    case PPC::XVI8GER4SPP:
    case PPC::XVI8GER4WPP:
    case PPC::XVI8GER4WSPP:
    case PPC::XVI16GER2PP:
    case PPC::XVI16GER2SPP:
    case PPC::XVI16GER2SWPP:
    case PPC::XVI16GER2WPP: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::DMSETDMRZ:
    case PPC::XXMTACC:
    case PPC::XXMTACCW:
    case PPC::XXSETACCZ:
    case PPC::XXSETACCZW: {
      switch (OpNum) {
      case 0:
        // op: AT
        return 23;
      }
      break;
    }
    case PPC::BCLalways:
    case PPC::BDNZ:
    case PPC::BDNZ8:
    case PPC::BDNZA:
    case PPC::BDNZAm:
    case PPC::BDNZAp:
    case PPC::BDNZL:
    case PPC::BDNZLA:
    case PPC::BDNZLAm:
    case PPC::BDNZLAp:
    case PPC::BDNZLm:
    case PPC::BDNZLp:
    case PPC::BDNZm:
    case PPC::BDNZp:
    case PPC::BDZ:
    case PPC::BDZ8:
    case PPC::BDZA:
    case PPC::BDZAm:
    case PPC::BDZAp:
    case PPC::BDZL:
    case PPC::BDZLA:
    case PPC::BDZLAm:
    case PPC::BDZLAp:
    case PPC::BDZLm:
    case PPC::BDZLp:
    case PPC::BDZm:
    case PPC::BDZp: {
      switch (OpNum) {
      case 0:
        // op: BD
        return 2;
      }
      break;
    }
    case PPC::MCRF:
    case PPC::MCRFS: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: BFA
        return 18;
      }
      break;
    }
    case PPC::XSTSTDCQP: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: DCMX
        return 16;
      case 2:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::XSTSTDCDP:
    case PPC::XSTSTDCSP: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: DCMX
        return 16;
      case 2:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::DTSTDC:
    case PPC::DTSTDCQ:
    case PPC::DTSTDG:
    case PPC::DTSTDGQ: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: FRA
        return 16;
      case 2:
        // op: DCM
        return 10;
      }
      break;
    }
    case PPC::CMPRB:
    case PPC::CMPRB8: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: L
        return 21;
      case 2:
        // op: RA
        return 16;
      case 3:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::CMPDI:
    case PPC::CMPLDI:
    case PPC::CMPLWI:
    case PPC::CMPWI: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::CMPD:
    case PPC::CMPEQB:
    case PPC::CMPLD:
    case PPC::CMPLW:
    case PPC::CMPW:
    case PPC::DCMPO:
    case PPC::DCMPOQ:
    case PPC::DCMPU:
    case PPC::DCMPUQ:
    case PPC::DTSTEX:
    case PPC::DTSTEXQ:
    case PPC::DTSTSF:
    case PPC::DTSTSFQ:
    case PPC::FCMPOD:
    case PPC::FCMPOS:
    case PPC::FCMPUD:
    case PPC::FCMPUS:
    case PPC::FTDIV:
    case PPC::XSCMPEXPQP:
    case PPC::XSCMPOQP:
    case PPC::XSCMPUQP: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::FTSQRT: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::MTFSFIb: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: U
        return 12;
      }
      break;
    }
    case PPC::DTSTSFI:
    case PPC::DTSTSFIQ: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: UIM
        return 16;
      case 2:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::VCMPSQ:
    case PPC::VCMPUQ: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: VA
        return 16;
      case 2:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::XVTLSBB: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 1:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::MTFSFI:
    case PPC::MTFSFI_rec: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      case 2:
        // op: W
        return 16;
      case 1:
        // op: U
        return 12;
      }
      break;
    }
    case PPC::MCRXRX:
    case PPC::TCHECK: {
      switch (OpNum) {
      case 0:
        // op: BF
        return 23;
      }
      break;
    }
    case PPC::BC:
    case PPC::BCL:
    case PPC::BCLn:
    case PPC::BCn: {
      switch (OpNum) {
      case 0:
        // op: BI
        return 16;
      case 1:
        // op: BD
        return 2;
      }
      break;
    }
    case PPC::BCCTR:
    case PPC::BCCTR8:
    case PPC::BCCTR8n:
    case PPC::BCCTRL:
    case PPC::BCCTRL8:
    case PPC::BCCTRL8n:
    case PPC::BCCTRLn:
    case PPC::BCCTRn:
    case PPC::BCLR:
    case PPC::BCLRL:
    case PPC::BCLRLn:
    case PPC::BCLRn: {
      switch (OpNum) {
      case 0:
        // op: BI
        return 16;
      }
      break;
    }
    case PPC::BCC:
    case PPC::BCCA:
    case PPC::BCCL:
    case PPC::BCCLA:
    case PPC::CTRL_DEP: {
      switch (OpNum) {
      case 0:
        // op: BIBO
        return 16;
      case 1:
        // op: CR
        return 18;
      case 2:
        // op: BD
        return 2;
      }
      break;
    }
    case PPC::BCCCTR:
    case PPC::BCCCTR8:
    case PPC::BCCCTRL:
    case PPC::BCCCTRL8:
    case PPC::BCCLR:
    case PPC::BCCLRL: {
      switch (OpNum) {
      case 0:
        // op: BIBO
        return 16;
      case 1:
        // op: CR
        return 18;
      }
      break;
    }
    case PPC::gBC:
    case PPC::gBCA:
    case PPC::gBCL:
    case PPC::gBCLA: {
      switch (OpNum) {
      case 0:
        // op: BO
        return 21;
      case 1:
        // op: BI
        return 16;
      case 2:
        // op: BD
        return 2;
      }
      break;
    }
    case PPC::gBCCTR:
    case PPC::gBCCTRL:
    case PPC::gBCLR:
    case PPC::gBCLRL: {
      switch (OpNum) {
      case 0:
        // op: BO
        return 21;
      case 1:
        // op: BI
        return 16;
      case 2:
        // op: BH
        return 11;
      }
      break;
    }
    case PPC::gBCAat:
    case PPC::gBCLAat:
    case PPC::gBCLat:
    case PPC::gBCat: {
      switch (OpNum) {
      case 0:
        // op: BO
        return 23;
      case 1:
        // op: at
        return 21;
      case 2:
        // op: BI
        return 16;
      case 3:
        // op: BD
        return 2;
      }
      break;
    }
    case PPC::XSCMPEXPDP:
    case PPC::XSCMPODP:
    case PPC::XSCMPUDP:
    case PPC::XSTDIVDP:
    case PPC::XVTDIVDP:
    case PPC::XVTDIVSP: {
      switch (OpNum) {
      case 0:
        // op: CR
        return 23;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::XSTSQRTDP:
    case PPC::XVTSQRTDP:
    case PPC::XVTSQRTSP: {
      switch (OpNum) {
      case 0:
        // op: CR
        return 23;
      case 1:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::CRSET:
    case PPC::CRUNSET: {
      switch (OpNum) {
      case 0:
        // op: CRD
        return 11;
      }
      break;
    }
    case PPC::CRNOT: {
      switch (OpNum) {
      case 0:
        // op: CRD
        return 21;
      case 1:
        // op: CRA
        return 11;
      }
      break;
    }
    case PPC::CRAND:
    case PPC::CRANDC:
    case PPC::CREQV:
    case PPC::CRNAND:
    case PPC::CRNOR:
    case PPC::CROR:
    case PPC::CRORC:
    case PPC::CRXOR: {
      switch (OpNum) {
      case 0:
        // op: CRD
        return 21;
      case 1:
        // op: CRA
        return 16;
      case 2:
        // op: CRB
        return 11;
      }
      break;
    }
    case PPC::ICBLC:
    case PPC::ICBLQ:
    case PPC::ICBT:
    case PPC::ICBTLS: {
      switch (OpNum) {
      case 0:
        // op: CT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::WRTEEI: {
      switch (OpNum) {
      case 0:
        // op: E
        return 15;
      }
      break;
    }
    case PPC::MTFSFb: {
      switch (OpNum) {
      case 0:
        // op: FM
        return 17;
      case 1:
        // op: RT
        return 11;
      }
      break;
    }
    case PPC::MTFSB0:
    case PPC::MTFSB1: {
      switch (OpNum) {
      case 0:
        // op: FM
        return 21;
      }
      break;
    }
    case PPC::DQUA:
    case PPC::DQUAQ:
    case PPC::DQUAQ_rec:
    case PPC::DQUA_rec:
    case PPC::DRRND:
    case PPC::DRRNDQ:
    case PPC::DRRNDQ_rec:
    case PPC::DRRND_rec: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 1:
        // op: FRA
        return 16;
      case 2:
        // op: FRB
        return 11;
      case 3:
        // op: RMC
        return 9;
      }
      break;
    }
    case PPC::FADD:
    case PPC::FADDS:
    case PPC::FADDS_rec:
    case PPC::FADD_rec:
    case PPC::FDIV:
    case PPC::FDIVS:
    case PPC::FDIVS_rec:
    case PPC::FDIV_rec:
    case PPC::FSUB:
    case PPC::FSUBS:
    case PPC::FSUBS_rec:
    case PPC::FSUB_rec:
    case PPC::XSIEXPQP: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 1:
        // op: FRA
        return 16;
      case 2:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::FMADD:
    case PPC::FMADDS:
    case PPC::FMADDS_rec:
    case PPC::FMADD_rec:
    case PPC::FMSUB:
    case PPC::FMSUBS:
    case PPC::FMSUBS_rec:
    case PPC::FMSUB_rec:
    case PPC::FNMADD:
    case PPC::FNMADDS:
    case PPC::FNMADDS_rec:
    case PPC::FNMADD_rec:
    case PPC::FNMSUB:
    case PPC::FNMSUBS:
    case PPC::FNMSUBS_rec:
    case PPC::FNMSUB_rec:
    case PPC::FSELD:
    case PPC::FSELD_rec:
    case PPC::FSELS:
    case PPC::FSELS_rec: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 1:
        // op: FRA
        return 16;
      case 2:
        // op: FRC
        return 6;
      case 3:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::FMUL:
    case PPC::FMULS:
    case PPC::FMULS_rec:
    case PPC::FMUL_rec: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 1:
        // op: FRA
        return 16;
      case 2:
        // op: FRC
        return 6;
      }
      break;
    }
    case PPC::DSCLI:
    case PPC::DSCLIQ:
    case PPC::DSCLIQ_rec:
    case PPC::DSCLI_rec:
    case PPC::DSCRI:
    case PPC::DSCRIQ:
    case PPC::DSCRIQ_rec:
    case PPC::DSCRI_rec: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 1:
        // op: FRA
        return 16;
      case 2:
        // op: SH
        return 10;
      }
      break;
    }
    case PPC::DRINTN:
    case PPC::DRINTNQ:
    case PPC::DRINTNQ_rec:
    case PPC::DRINTN_rec:
    case PPC::DRINTX:
    case PPC::DRINTXQ:
    case PPC::DRINTXQ_rec:
    case PPC::DRINTX_rec: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 1:
        // op: R
        return 16;
      case 2:
        // op: FRB
        return 11;
      case 3:
        // op: RMC
        return 9;
      }
      break;
    }
    case PPC::DQUAI:
    case PPC::DQUAIQ:
    case PPC::DQUAIQ_rec:
    case PPC::DQUAI_rec: {
      switch (OpNum) {
      case 0:
        // op: FRT
        return 21;
      case 2:
        // op: FRB
        return 11;
      case 3:
        // op: RMC
        return 9;
      case 1:
        // op: TE
        return 16;
      }
      break;
    }
    case PPC::MTCRF:
    case PPC::MTCRF8: {
      switch (OpNum) {
      case 0:
        // op: FXM
        return 12;
      case 1:
        // op: RST
        return 21;
      }
      break;
    }
    case PPC::WAITP10: {
      switch (OpNum) {
      case 0:
        // op: L
        return 21;
      case 1:
        // op: PL
        return 16;
      }
      break;
    }
    case PPC::SYNCP10: {
      switch (OpNum) {
      case 0:
        // op: L
        return 21;
      case 1:
        // op: SC
        return 16;
      }
      break;
    }
    case PPC::SYNC:
    case PPC::TSR:
    case PPC::WAIT: {
      switch (OpNum) {
      case 0:
        // op: L
        return 21;
      }
      break;
    }
    case PPC::SC:
    case PPC::SCV: {
      switch (OpNum) {
      case 0:
        // op: LEV
        return 5;
      }
      break;
    }
    case PPC::B:
    case PPC::BA:
    case PPC::BL:
    case PPC::BL8:
    case PPC::BL8_NOTOC:
    case PPC::BL8_NOTOC_RM:
    case PPC::BL8_NOTOC_TLS:
    case PPC::BL8_RM:
    case PPC::BL8_TLS:
    case PPC::BL8_TLS_:
    case PPC::BLA:
    case PPC::BLA8:
    case PPC::BLA8_RM:
    case PPC::BLA_RM:
    case PPC::BL_RM:
    case PPC::BL_TLS:
    case PPC::TAILB:
    case PPC::TAILB8:
    case PPC::TAILBA:
    case PPC::TAILBA8: {
      switch (OpNum) {
      case 0:
        // op: LI
        return 2;
      }
      break;
    }
    case PPC::BL8_NOP:
    case PPC::BL8_NOP_RM:
    case PPC::BL8_NOP_TLS:
    case PPC::BLA8_NOP:
    case PPC::BLA8_NOP_RM:
    case PPC::BL_NOP:
    case PPC::BL_NOP_RM: {
      switch (OpNum) {
      case 0:
        // op: LI
        return 34;
      }
      break;
    }
    case PPC::MBAR: {
      switch (OpNum) {
      case 0:
        // op: MO
        return 21;
      }
      break;
    }
    case PPC::TBEGIN: {
      switch (OpNum) {
      case 0:
        // op: R
        return 21;
      }
      break;
    }
    case PPC::CP_COPY:
    case PPC::CP_COPY8:
    case PPC::DCBA:
    case PPC::DCBFEP:
    case PPC::DCBI:
    case PPC::DCBST:
    case PPC::DCBSTEP:
    case PPC::DCBZ:
    case PPC::DCBZEP:
    case PPC::DCBZL:
    case PPC::DCBZLEP:
    case PPC::DCCCI:
    case PPC::ICBI:
    case PPC::ICBIEP:
    case PPC::ICCCI:
    case PPC::TLBIVAX:
    case PPC::TLBSX: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::RLWNM:
    case PPC::RLWNM8:
    case PPC::RLWNM8_rec:
    case PPC::RLWNM_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RS
        return 21;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: MB
        return 6;
      case 4:
        // op: ME
        return 1;
      }
      break;
    }
    case PPC::RLDCL:
    case PPC::RLDCL_rec:
    case PPC::RLDCR:
    case PPC::RLDCR_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RS
        return 21;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: MBE
        return 5;
      }
      break;
    }
    case PPC::RLWINM:
    case PPC::RLWINM8:
    case PPC::RLWINM8_rec:
    case PPC::RLWINM_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RS
        return 21;
      case 2:
        // op: SH
        return 11;
      case 3:
        // op: MB
        return 6;
      case 4:
        // op: ME
        return 1;
      }
      break;
    }
    case PPC::RLDIC:
    case PPC::RLDICL:
    case PPC::RLDICL_32:
    case PPC::RLDICL_32_64:
    case PPC::RLDICL_32_rec:
    case PPC::RLDICL_rec:
    case PPC::RLDICR:
    case PPC::RLDICR_32:
    case PPC::RLDICR_rec:
    case PPC::RLDIC_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RS
        return 21;
      case 2:
        // op: SH
        return 1;
      case 3:
        // op: MBE
        return 5;
      }
      break;
    }
    case PPC::EXTSWSLI:
    case PPC::EXTSWSLI_32_64:
    case PPC::EXTSWSLI_32_64_rec:
    case PPC::EXTSWSLI_rec:
    case PPC::SRADI:
    case PPC::SRADI_32:
    case PPC::SRADI_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RS
        return 21;
      case 2:
        // op: SH
        return 1;
      }
      break;
    }
    case PPC::ANDI8_rec:
    case PPC::ANDIS8_rec:
    case PPC::ANDIS_rec:
    case PPC::ANDI_rec:
    case PPC::ORI:
    case PPC::ORI8:
    case PPC::ORIS:
    case PPC::ORIS8:
    case PPC::XORI:
    case PPC::XORI8:
    case PPC::XORIS:
    case PPC::XORIS8: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RST
        return 21;
      case 2:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::AND:
    case PPC::AND8:
    case PPC::AND8_rec:
    case PPC::ANDC:
    case PPC::ANDC8:
    case PPC::ANDC8_rec:
    case PPC::ANDC_rec:
    case PPC::AND_rec:
    case PPC::BPERMD:
    case PPC::CFUGED:
    case PPC::CMPB:
    case PPC::CMPB8:
    case PPC::CNTLZDM:
    case PPC::CNTTZDM:
    case PPC::EQV:
    case PPC::EQV8:
    case PPC::EQV8_rec:
    case PPC::EQV_rec:
    case PPC::NAND:
    case PPC::NAND8:
    case PPC::NAND8_rec:
    case PPC::NAND_rec:
    case PPC::NOR:
    case PPC::NOR8:
    case PPC::NOR8_rec:
    case PPC::NOR_rec:
    case PPC::OR:
    case PPC::OR8:
    case PPC::OR8_rec:
    case PPC::ORC:
    case PPC::ORC8:
    case PPC::ORC8_rec:
    case PPC::ORC_rec:
    case PPC::OR_rec:
    case PPC::PDEPD:
    case PPC::PEXTD:
    case PPC::SLD:
    case PPC::SLD_rec:
    case PPC::SLW:
    case PPC::SLW8:
    case PPC::SLW8_rec:
    case PPC::SLW_rec:
    case PPC::SRAD:
    case PPC::SRAD_rec:
    case PPC::SRAW:
    case PPC::SRAWI:
    case PPC::SRAWI_rec:
    case PPC::SRAW_rec:
    case PPC::SRD:
    case PPC::SRD_rec:
    case PPC::SRW:
    case PPC::SRW8:
    case PPC::SRW8_rec:
    case PPC::SRW_rec:
    case PPC::XOR:
    case PPC::XOR8:
    case PPC::XOR8_rec:
    case PPC::XOR_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RST
        return 21;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::BRD:
    case PPC::BRH:
    case PPC::BRH8:
    case PPC::BRW:
    case PPC::BRW8:
    case PPC::CBCDTD:
    case PPC::CBCDTD8:
    case PPC::CDTBCD:
    case PPC::CDTBCD8:
    case PPC::CNTLZD:
    case PPC::CNTLZD_rec:
    case PPC::CNTLZW:
    case PPC::CNTLZW8:
    case PPC::CNTLZW8_rec:
    case PPC::CNTLZW_rec:
    case PPC::CNTTZD:
    case PPC::CNTTZD_rec:
    case PPC::CNTTZW:
    case PPC::CNTTZW8:
    case PPC::CNTTZW8_rec:
    case PPC::CNTTZW_rec:
    case PPC::EXTSB:
    case PPC::EXTSB8:
    case PPC::EXTSB8_32_64:
    case PPC::EXTSB8_rec:
    case PPC::EXTSB_rec:
    case PPC::EXTSH:
    case PPC::EXTSH8:
    case PPC::EXTSH8_32_64:
    case PPC::EXTSH8_rec:
    case PPC::EXTSH_rec:
    case PPC::EXTSW:
    case PPC::EXTSW_32:
    case PPC::EXTSW_32_64:
    case PPC::EXTSW_32_64_rec:
    case PPC::EXTSW_rec:
    case PPC::POPCNTB:
    case PPC::POPCNTB8:
    case PPC::POPCNTD:
    case PPC::POPCNTW: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RST
        return 21;
      }
      break;
    }
    case PPC::RLWIMI:
    case PPC::RLWIMI8:
    case PPC::RLWIMI8_rec:
    case PPC::RLWIMI_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 2:
        // op: RS
        return 21;
      case 3:
        // op: SH
        return 11;
      case 4:
        // op: MB
        return 6;
      case 5:
        // op: ME
        return 1;
      }
      break;
    }
    case PPC::RLDIMI:
    case PPC::RLDIMI_rec: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      case 2:
        // op: RS
        return 21;
      case 3:
        // op: SH
        return 1;
      case 4:
        // op: MBE
        return 5;
      }
      break;
    }
    case PPC::TABORT:
    case PPC::TRECLAIM: {
      switch (OpNum) {
      case 0:
        // op: RA
        return 16;
      }
      break;
    }
    case PPC::SLBIE:
    case PPC::TLBIEL:
    case PPC::TLBLD:
    case PPC::TLBLI: {
      switch (OpNum) {
      case 0:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::VCNTMBB:
    case PPC::VCNTMBD:
    case PPC::VCNTMBH:
    case PPC::VCNTMBW: {
      switch (OpNum) {
      case 0:
        // op: RD
        return 21;
      case 1:
        // op: VB
        return 11;
      case 2:
        // op: MP
        return 16;
      }
      break;
    }
    case PPC::VGNB: {
      switch (OpNum) {
      case 0:
        // op: RD
        return 21;
      case 1:
        // op: VB
        return 11;
      case 2:
        // op: N
        return 16;
      }
      break;
    }
    case PPC::MTMSR:
    case PPC::MTMSRD: {
      switch (OpNum) {
      case 0:
        // op: RS
        return 21;
      case 1:
        // op: L
        return 16;
      }
      break;
    }
    case PPC::MFSRIN:
    case PPC::MTSRIN: {
      switch (OpNum) {
      case 0:
        // op: RS
        return 21;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::MFSR:
    case PPC::MTSR: {
      switch (OpNum) {
      case 0:
        // op: RS
        return 21;
      case 1:
        // op: SR
        return 16;
      }
      break;
    }
    case PPC::WRTEE: {
      switch (OpNum) {
      case 0:
        // op: RS
        return 21;
      }
      break;
    }
    case PPC::SETBC:
    case PPC::SETBC8:
    case PPC::SETBCR:
    case PPC::SETBCR8:
    case PPC::SETNBC:
    case PPC::SETNBC8:
    case PPC::SETNBCR:
    case PPC::SETNBCR8: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: BI
        return 16;
      }
      break;
    }
    case PPC::LI:
    case PPC::LI8:
    case PPC::LIS:
    case PPC::LIS8:
    case PPC::PLBZ8onlypc:
    case PPC::PLBZonlypc:
    case PPC::PLDonlypc:
    case PPC::PLFDonlypc:
    case PPC::PLFSonlypc:
    case PPC::PLHA8onlypc:
    case PPC::PLHAonlypc:
    case PPC::PLHZ8onlypc:
    case PPC::PLHZonlypc:
    case PPC::PLWA8onlypc:
    case PPC::PLWAonlypc:
    case PPC::PLWZ8onlypc:
    case PPC::PLWZonlypc:
    case PPC::PLXSDonlypc:
    case PPC::PLXSSPonlypc:
    case PPC::PSTB8onlypc:
    case PPC::PSTBonlypc:
    case PPC::PSTDonlypc:
    case PPC::PSTFDonlypc:
    case PPC::PSTFSonlypc:
    case PPC::PSTH8onlypc:
    case PPC::PSTHonlypc:
    case PPC::PSTW8onlypc:
    case PPC::PSTWonlypc:
    case PPC::PSTXSDonlypc:
    case PPC::PSTXSSPonlypc: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::MFFSCDRNI: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: DRM
        return 11;
      }
      break;
    }
    case PPC::MFFSCDRN:
    case PPC::MFFSCRN: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::MFOCRF:
    case PPC::MFOCRF8: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: FXM
        return 12;
      }
      break;
    }
    case PPC::ADDI:
    case PPC::ADDI8:
    case PPC::ADDIC:
    case PPC::ADDIC8:
    case PPC::ADDIC_rec:
    case PPC::ADDIS:
    case PPC::ADDIS8:
    case PPC::LA:
    case PPC::LA8:
    case PPC::MULLI:
    case PPC::MULLI8:
    case PPC::SUBFIC:
    case PPC::SUBFIC8:
    case PPC::TDI:
    case PPC::TWI: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::DADD:
    case PPC::DADDQ:
    case PPC::DADDQ_rec:
    case PPC::DADD_rec:
    case PPC::DDIV:
    case PPC::DDIVQ:
    case PPC::DDIVQ_rec:
    case PPC::DDIV_rec:
    case PPC::DIEX:
    case PPC::DIEXQ:
    case PPC::DIEXQ_rec:
    case PPC::DIEX_rec:
    case PPC::DMUL:
    case PPC::DMULQ:
    case PPC::DMULQ_rec:
    case PPC::DMUL_rec:
    case PPC::DSUB:
    case PPC::DSUBQ:
    case PPC::DSUBQ_rec:
    case PPC::DSUB_rec:
    case PPC::FCPSGND:
    case PPC::FCPSGND_rec:
    case PPC::FCPSGNS:
    case PPC::FCPSGNS_rec:
    case PPC::LBARX:
    case PPC::LBARXL:
    case PPC::LBEPX:
    case PPC::LBZCIX:
    case PPC::LBZX:
    case PPC::LBZX8:
    case PPC::LBZXTLS:
    case PPC::LBZXTLS_:
    case PPC::LBZXTLS_32:
    case PPC::LDARX:
    case PPC::LDARXL:
    case PPC::LDAT:
    case PPC::LDBRX:
    case PPC::LDCIX:
    case PPC::LDX:
    case PPC::LDXTLS:
    case PPC::LDXTLS_:
    case PPC::LFDEPX:
    case PPC::LFDX:
    case PPC::LFDXTLS:
    case PPC::LFDXTLS_:
    case PPC::LFIWAX:
    case PPC::LFIWZX:
    case PPC::LFSX:
    case PPC::LFSXTLS:
    case PPC::LFSXTLS_:
    case PPC::LHARX:
    case PPC::LHARXL:
    case PPC::LHAX:
    case PPC::LHAX8:
    case PPC::LHAXTLS:
    case PPC::LHAXTLS_:
    case PPC::LHAXTLS_32:
    case PPC::LHBRX:
    case PPC::LHBRX8:
    case PPC::LHEPX:
    case PPC::LHZCIX:
    case PPC::LHZX:
    case PPC::LHZX8:
    case PPC::LHZXTLS:
    case PPC::LHZXTLS_:
    case PPC::LHZXTLS_32:
    case PPC::LQARX:
    case PPC::LQARXL:
    case PPC::LSWI:
    case PPC::LVEBX:
    case PPC::LVEHX:
    case PPC::LVEWX:
    case PPC::LVSL:
    case PPC::LVSR:
    case PPC::LVX:
    case PPC::LVXL:
    case PPC::LWARX:
    case PPC::LWARXL:
    case PPC::LWAT:
    case PPC::LWAX:
    case PPC::LWAXTLS:
    case PPC::LWAXTLS_:
    case PPC::LWAXTLS_32:
    case PPC::LWAX_32:
    case PPC::LWBRX:
    case PPC::LWBRX8:
    case PPC::LWEPX:
    case PPC::LWZCIX:
    case PPC::LWZX:
    case PPC::LWZX8:
    case PPC::LWZXTLS:
    case PPC::LWZXTLS_:
    case PPC::LWZXTLS_32:
    case PPC::MODSD:
    case PPC::MODSW:
    case PPC::MODUD:
    case PPC::MODUW:
    case PPC::SPELWZX:
    case PPC::SPESTWX:
    case PPC::STBCIX:
    case PPC::STBCX:
    case PPC::STBEPX:
    case PPC::STBX:
    case PPC::STBX8:
    case PPC::STBXTLS:
    case PPC::STBXTLS_:
    case PPC::STBXTLS_32:
    case PPC::STDAT:
    case PPC::STDBRX:
    case PPC::STDCIX:
    case PPC::STDCX:
    case PPC::STDX:
    case PPC::STDXTLS:
    case PPC::STDXTLS_:
    case PPC::STFDEPX:
    case PPC::STFDX:
    case PPC::STFDXTLS:
    case PPC::STFDXTLS_:
    case PPC::STFIWX:
    case PPC::STFSX:
    case PPC::STFSXTLS:
    case PPC::STFSXTLS_:
    case PPC::STHBRX:
    case PPC::STHCIX:
    case PPC::STHCX:
    case PPC::STHEPX:
    case PPC::STHX:
    case PPC::STHX8:
    case PPC::STHXTLS:
    case PPC::STHXTLS_:
    case PPC::STHXTLS_32:
    case PPC::STQCX:
    case PPC::STSWI:
    case PPC::STVEBX:
    case PPC::STVEHX:
    case PPC::STVEWX:
    case PPC::STVX:
    case PPC::STVXL:
    case PPC::STWAT:
    case PPC::STWBRX:
    case PPC::STWCIX:
    case PPC::STWCX:
    case PPC::STWEPX:
    case PPC::STWX:
    case PPC::STWX8:
    case PPC::STWXTLS:
    case PPC::STWXTLS_:
    case PPC::STWXTLS_32:
    case PPC::TABORTDC:
    case PPC::TABORTDCI:
    case PPC::TABORTWC:
    case PPC::TABORTWCI:
    case PPC::TD:
    case PPC::TLBSX2:
    case PPC::TLBSX2D:
    case PPC::TW:
    case PPC::XSADDQP:
    case PPC::XSADDQPO:
    case PPC::XSCMPEQQP:
    case PPC::XSCMPGEQP:
    case PPC::XSCMPGTQP:
    case PPC::XSCPSGNQP:
    case PPC::XSDIVQP:
    case PPC::XSDIVQPO:
    case PPC::XSMAXCQP:
    case PPC::XSMINCQP:
    case PPC::XSMULQP:
    case PPC::XSMULQPO:
    case PPC::XSSUBQP:
    case PPC::XSSUBQPO: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::TLBRE2:
    case PPC::TLBWE2: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: WS
        return 11;
      }
      break;
    }
    case PPC::DCFFIX:
    case PPC::DCFFIXQ:
    case PPC::DCFFIXQQ:
    case PPC::DCFFIXQ_rec:
    case PPC::DCFFIX_rec:
    case PPC::DCTDP:
    case PPC::DCTDP_rec:
    case PPC::DCTFIX:
    case PPC::DCTFIXQ:
    case PPC::DCTFIXQQ:
    case PPC::DCTFIXQ_rec:
    case PPC::DCTFIX_rec:
    case PPC::DCTQPQ:
    case PPC::DCTQPQ_rec:
    case PPC::DRDPQ:
    case PPC::DRDPQ_rec:
    case PPC::DRSP:
    case PPC::DRSP_rec:
    case PPC::DXEX:
    case PPC::DXEXQ:
    case PPC::DXEXQ_rec:
    case PPC::DXEX_rec:
    case PPC::FABSD:
    case PPC::FABSD_rec:
    case PPC::FABSS:
    case PPC::FABSS_rec:
    case PPC::FCFID:
    case PPC::FCFIDS:
    case PPC::FCFIDS_rec:
    case PPC::FCFIDU:
    case PPC::FCFIDUS:
    case PPC::FCFIDUS_rec:
    case PPC::FCFIDU_rec:
    case PPC::FCFID_rec:
    case PPC::FCTID:
    case PPC::FCTIDU:
    case PPC::FCTIDUZ:
    case PPC::FCTIDUZ_rec:
    case PPC::FCTIDU_rec:
    case PPC::FCTIDZ:
    case PPC::FCTIDZ_rec:
    case PPC::FCTID_rec:
    case PPC::FCTIW:
    case PPC::FCTIWU:
    case PPC::FCTIWUZ:
    case PPC::FCTIWUZ_rec:
    case PPC::FCTIWU_rec:
    case PPC::FCTIWZ:
    case PPC::FCTIWZ_rec:
    case PPC::FCTIW_rec:
    case PPC::FMR:
    case PPC::FMR_rec:
    case PPC::FNABSD:
    case PPC::FNABSD_rec:
    case PPC::FNABSS:
    case PPC::FNABSS_rec:
    case PPC::FNEGD:
    case PPC::FNEGD_rec:
    case PPC::FNEGS:
    case PPC::FNEGS_rec:
    case PPC::FRE:
    case PPC::FRES:
    case PPC::FRES_rec:
    case PPC::FRE_rec:
    case PPC::FRIMD:
    case PPC::FRIMD_rec:
    case PPC::FRIMS:
    case PPC::FRIMS_rec:
    case PPC::FRIND:
    case PPC::FRIND_rec:
    case PPC::FRINS:
    case PPC::FRINS_rec:
    case PPC::FRIPD:
    case PPC::FRIPD_rec:
    case PPC::FRIPS:
    case PPC::FRIPS_rec:
    case PPC::FRIZD:
    case PPC::FRIZD_rec:
    case PPC::FRIZS:
    case PPC::FRIZS_rec:
    case PPC::FRSP:
    case PPC::FRSP_rec:
    case PPC::FRSQRTE:
    case PPC::FRSQRTES:
    case PPC::FRSQRTES_rec:
    case PPC::FRSQRTE_rec:
    case PPC::FSQRT:
    case PPC::FSQRTS:
    case PPC::FSQRTS_rec:
    case PPC::FSQRT_rec:
    case PPC::SLBFEE_rec:
    case PPC::SLBIEG:
    case PPC::SLBMFEE:
    case PPC::SLBMTE:
    case PPC::TLBIE:
    case PPC::XSABSQP:
    case PPC::XSCVDPQP:
    case PPC::XSCVQPDP:
    case PPC::XSCVQPDPO:
    case PPC::XSCVQPSDZ:
    case PPC::XSCVQPSQZ:
    case PPC::XSCVQPSWZ:
    case PPC::XSCVQPUDZ:
    case PPC::XSCVQPUQZ:
    case PPC::XSCVQPUWZ:
    case PPC::XSCVSDQP:
    case PPC::XSCVSQQP:
    case PPC::XSCVUDQP:
    case PPC::XSCVUQQP:
    case PPC::XSNABSQP:
    case PPC::XSNEGQP:
    case PPC::XSSQRTQP:
    case PPC::XSSQRTQPO:
    case PPC::XSXEXPQP:
    case PPC::XSXSIGQP: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::MFFSCRNI: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: RM
        return 11;
      }
      break;
    }
    case PPC::MFDCR:
    case PPC::MFPMR:
    case PPC::MFSPR:
    case PPC::MFSPR8:
    case PPC::MFTB:
    case PPC::MTDCR: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 1:
        // op: SPR
        return 11;
      }
      break;
    }
    case PPC::LBZ:
    case PPC::LBZ8:
    case PPC::LFD:
    case PPC::LFS:
    case PPC::LHA:
    case PPC::LHA8:
    case PPC::LHZ:
    case PPC::LHZ8:
    case PPC::LMW:
    case PPC::LWZ:
    case PPC::LWZ8:
    case PPC::PLBZ:
    case PPC::PLBZ8:
    case PPC::PLBZ8nopc:
    case PPC::PLBZ8pc:
    case PPC::PLBZnopc:
    case PPC::PLBZpc:
    case PPC::PLD:
    case PPC::PLDnopc:
    case PPC::PLDpc:
    case PPC::PLFD:
    case PPC::PLFDnopc:
    case PPC::PLFDpc:
    case PPC::PLFS:
    case PPC::PLFSnopc:
    case PPC::PLFSpc:
    case PPC::PLHA:
    case PPC::PLHA8:
    case PPC::PLHA8nopc:
    case PPC::PLHA8pc:
    case PPC::PLHAnopc:
    case PPC::PLHApc:
    case PPC::PLHZ:
    case PPC::PLHZ8:
    case PPC::PLHZ8nopc:
    case PPC::PLHZ8pc:
    case PPC::PLHZnopc:
    case PPC::PLHZpc:
    case PPC::PLWA:
    case PPC::PLWA8:
    case PPC::PLWA8nopc:
    case PPC::PLWA8pc:
    case PPC::PLWAnopc:
    case PPC::PLWApc:
    case PPC::PLWZ:
    case PPC::PLWZ8:
    case PPC::PLWZ8nopc:
    case PPC::PLWZ8pc:
    case PPC::PLWZnopc:
    case PPC::PLWZpc:
    case PPC::PLXSD:
    case PPC::PLXSDnopc:
    case PPC::PLXSDpc:
    case PPC::PLXSSP:
    case PPC::PLXSSPnopc:
    case PPC::PLXSSPpc:
    case PPC::PSTB:
    case PPC::PSTB8:
    case PPC::PSTB8nopc:
    case PPC::PSTB8pc:
    case PPC::PSTBnopc:
    case PPC::PSTBpc:
    case PPC::PSTD:
    case PPC::PSTDnopc:
    case PPC::PSTDpc:
    case PPC::PSTFD:
    case PPC::PSTFDnopc:
    case PPC::PSTFDpc:
    case PPC::PSTFS:
    case PPC::PSTFSnopc:
    case PPC::PSTFSpc:
    case PPC::PSTH:
    case PPC::PSTH8:
    case PPC::PSTH8nopc:
    case PPC::PSTH8pc:
    case PPC::PSTHnopc:
    case PPC::PSTHpc:
    case PPC::PSTW:
    case PPC::PSTW8:
    case PPC::PSTW8nopc:
    case PPC::PSTW8pc:
    case PPC::PSTWnopc:
    case PPC::PSTWpc:
    case PPC::PSTXSD:
    case PPC::PSTXSDnopc:
    case PPC::PSTXSDpc:
    case PPC::PSTXSSP:
    case PPC::PSTXSSPnopc:
    case PPC::PSTXSSPpc:
    case PPC::SPELWZ:
    case PPC::SPESTW:
    case PPC::STB:
    case PPC::STB8:
    case PPC::STFD:
    case PPC::STFS:
    case PPC::STH:
    case PPC::STH8:
    case PPC::STMW:
    case PPC::STW:
    case PPC::STW8: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::LD:
    case PPC::LWA:
    case PPC::LWA_32:
    case PPC::LXSD:
    case PPC::LXSSP:
    case PPC::STD:
    case PPC::STQ:
    case PPC::STXSD:
    case PPC::STXSSP: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: D
        return 2;
      }
      break;
    }
    case PPC::LBZUX:
    case PPC::LBZUX8:
    case PPC::LDUX:
    case PPC::LFDUX:
    case PPC::LFSUX:
    case PPC::LHAUX:
    case PPC::LHAUX8:
    case PPC::LHZUX:
    case PPC::LHZUX8:
    case PPC::LWAUX:
    case PPC::LWZUX:
    case PPC::LWZUX8:
    case PPC::XSMADDQP:
    case PPC::XSMADDQPO:
    case PPC::XSMSUBQP:
    case PPC::XSMSUBQPO:
    case PPC::XSNMADDQP:
    case PPC::XSNMADDQPO:
    case PPC::XSNMSUBQP:
    case PPC::XSNMSUBQPO: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 2:
        // op: RA
        return 16;
      case 3:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::LBZU:
    case PPC::LBZU8:
    case PPC::LFDU:
    case PPC::LFSU:
    case PPC::LHAU:
    case PPC::LHAU8:
    case PPC::LHZU:
    case PPC::LHZU8:
    case PPC::LWZU:
    case PPC::LWZU8: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 3:
        // op: RA
        return 16;
      case 2:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::LDU: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      case 3:
        // op: RA
        return 16;
      case 2:
        // op: D
        return 2;
      }
      break;
    }
    case PPC::MFCTR:
    case PPC::MFCTR8:
    case PPC::MFFS:
    case PPC::MFFSCE:
    case PPC::MFFSL:
    case PPC::MFFS_rec:
    case PPC::MFLR:
    case PPC::MFLR8:
    case PPC::MFMSR:
    case PPC::MFTB8:
    case PPC::MFUDSCR:
    case PPC::MFVRSAVE:
    case PPC::MFVRSAVEv:
    case PPC::MTCTR:
    case PPC::MTCTR8:
    case PPC::MTCTR8loop:
    case PPC::MTCTRloop:
    case PPC::MTLR:
    case PPC::MTLR8:
    case PPC::MTUDSCR:
    case PPC::MTVRSAVE: {
      switch (OpNum) {
      case 0:
        // op: RST
        return 21;
      }
      break;
    }
    case PPC::SETB:
    case PPC::SETB8: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: BFA
        return 18;
      }
      break;
    }
    case PPC::ADDPCIS:
    case PPC::MTVSRBMI: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::DARN: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: L
        return 16;
      }
      break;
    }
    case PPC::ISEL:
    case PPC::ISEL8: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: COND
        return 6;
      }
      break;
    }
    case PPC::ADDEX:
    case PPC::ADDEX8: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: CY
        return 9;
      }
      break;
    }
    case PPC::SUBFUS:
    case PPC::SUBFUS_rec: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: L
        return 10;
      }
      break;
    }
    case PPC::MADDHD:
    case PPC::MADDHDU:
    case PPC::MADDLD:
    case PPC::MADDLD8:
    case PPC::VADDECUQ:
    case PPC::VADDEUQM:
    case PPC::VEXTDDVLX:
    case PPC::VEXTDDVRX:
    case PPC::VEXTDUBVLX:
    case PPC::VEXTDUBVRX:
    case PPC::VEXTDUHVLX:
    case PPC::VEXTDUHVRX:
    case PPC::VEXTDUWVLX:
    case PPC::VEXTDUWVRX:
    case PPC::VMHADDSHS:
    case PPC::VMHRADDSHS:
    case PPC::VMLADDUHM:
    case PPC::VMSUMCUD:
    case PPC::VMSUMMBM:
    case PPC::VMSUMSHM:
    case PPC::VMSUMSHS:
    case PPC::VMSUMUBM:
    case PPC::VMSUMUDM:
    case PPC::VMSUMUHM:
    case PPC::VMSUMUHS:
    case PPC::VPERM:
    case PPC::VPERMR:
    case PPC::VSEL:
    case PPC::VSUBECUQ:
    case PPC::VSUBEUQM: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: RC
        return 6;
      }
      break;
    }
    case PPC::VSLDOI: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 3:
        // op: SH
        return 6;
      }
      break;
    }
    case PPC::ADD4:
    case PPC::ADD4O:
    case PPC::ADD4O_rec:
    case PPC::ADD4TLS:
    case PPC::ADD4_rec:
    case PPC::ADD8:
    case PPC::ADD8O:
    case PPC::ADD8O_rec:
    case PPC::ADD8TLS:
    case PPC::ADD8TLS_:
    case PPC::ADD8_rec:
    case PPC::ADDC:
    case PPC::ADDC8:
    case PPC::ADDC8O:
    case PPC::ADDC8O_rec:
    case PPC::ADDC8_rec:
    case PPC::ADDCO:
    case PPC::ADDCO_rec:
    case PPC::ADDC_rec:
    case PPC::ADDE:
    case PPC::ADDE8:
    case PPC::ADDE8O:
    case PPC::ADDE8O_rec:
    case PPC::ADDE8_rec:
    case PPC::ADDEO:
    case PPC::ADDEO_rec:
    case PPC::ADDE_rec:
    case PPC::ADDG6S:
    case PPC::ADDG6S8:
    case PPC::BRINC:
    case PPC::DIVD:
    case PPC::DIVDE:
    case PPC::DIVDEO:
    case PPC::DIVDEO_rec:
    case PPC::DIVDEU:
    case PPC::DIVDEUO:
    case PPC::DIVDEUO_rec:
    case PPC::DIVDEU_rec:
    case PPC::DIVDE_rec:
    case PPC::DIVDO:
    case PPC::DIVDO_rec:
    case PPC::DIVDU:
    case PPC::DIVDUO:
    case PPC::DIVDUO_rec:
    case PPC::DIVDU_rec:
    case PPC::DIVD_rec:
    case PPC::DIVW:
    case PPC::DIVWE:
    case PPC::DIVWEO:
    case PPC::DIVWEO_rec:
    case PPC::DIVWEU:
    case PPC::DIVWEUO:
    case PPC::DIVWEUO_rec:
    case PPC::DIVWEU_rec:
    case PPC::DIVWE_rec:
    case PPC::DIVWO:
    case PPC::DIVWO_rec:
    case PPC::DIVWU:
    case PPC::DIVWUO:
    case PPC::DIVWUO_rec:
    case PPC::DIVWU_rec:
    case PPC::DIVW_rec:
    case PPC::EFDADD:
    case PPC::EFDDIV:
    case PPC::EFDMUL:
    case PPC::EFDSUB:
    case PPC::EFSADD:
    case PPC::EFSDIV:
    case PPC::EFSMUL:
    case PPC::EFSSUB:
    case PPC::EVADDIW:
    case PPC::EVADDW:
    case PPC::EVAND:
    case PPC::EVANDC:
    case PPC::EVDIVWS:
    case PPC::EVDIVWU:
    case PPC::EVEQV:
    case PPC::EVFSADD:
    case PPC::EVFSDIV:
    case PPC::EVFSMUL:
    case PPC::EVFSSUB:
    case PPC::EVLDDX:
    case PPC::EVLDHX:
    case PPC::EVLDWX:
    case PPC::EVLHHESPLATX:
    case PPC::EVLHHOSSPLATX:
    case PPC::EVLHHOUSPLATX:
    case PPC::EVLWHEX:
    case PPC::EVLWHOSX:
    case PPC::EVLWHOUX:
    case PPC::EVLWHSPLATX:
    case PPC::EVLWWSPLATX:
    case PPC::EVMERGEHI:
    case PPC::EVMERGEHILO:
    case PPC::EVMERGELO:
    case PPC::EVMERGELOHI:
    case PPC::EVMHEGSMFAA:
    case PPC::EVMHEGSMFAN:
    case PPC::EVMHEGSMIAA:
    case PPC::EVMHEGSMIAN:
    case PPC::EVMHEGUMIAA:
    case PPC::EVMHEGUMIAN:
    case PPC::EVMHESMF:
    case PPC::EVMHESMFA:
    case PPC::EVMHESMFAAW:
    case PPC::EVMHESMFANW:
    case PPC::EVMHESMI:
    case PPC::EVMHESMIA:
    case PPC::EVMHESMIAAW:
    case PPC::EVMHESMIANW:
    case PPC::EVMHESSF:
    case PPC::EVMHESSFA:
    case PPC::EVMHESSFAAW:
    case PPC::EVMHESSFANW:
    case PPC::EVMHESSIAAW:
    case PPC::EVMHESSIANW:
    case PPC::EVMHEUMI:
    case PPC::EVMHEUMIA:
    case PPC::EVMHEUMIAAW:
    case PPC::EVMHEUMIANW:
    case PPC::EVMHEUSIAAW:
    case PPC::EVMHEUSIANW:
    case PPC::EVMHOGSMFAA:
    case PPC::EVMHOGSMFAN:
    case PPC::EVMHOGSMIAA:
    case PPC::EVMHOGSMIAN:
    case PPC::EVMHOGUMIAA:
    case PPC::EVMHOGUMIAN:
    case PPC::EVMHOSMF:
    case PPC::EVMHOSMFA:
    case PPC::EVMHOSMFAAW:
    case PPC::EVMHOSMFANW:
    case PPC::EVMHOSMI:
    case PPC::EVMHOSMIA:
    case PPC::EVMHOSMIAAW:
    case PPC::EVMHOSMIANW:
    case PPC::EVMHOSSF:
    case PPC::EVMHOSSFA:
    case PPC::EVMHOSSFAAW:
    case PPC::EVMHOSSFANW:
    case PPC::EVMHOSSIAAW:
    case PPC::EVMHOSSIANW:
    case PPC::EVMHOUMI:
    case PPC::EVMHOUMIA:
    case PPC::EVMHOUMIAAW:
    case PPC::EVMHOUMIANW:
    case PPC::EVMHOUSIAAW:
    case PPC::EVMHOUSIANW:
    case PPC::EVMWHSMF:
    case PPC::EVMWHSMFA:
    case PPC::EVMWHSMI:
    case PPC::EVMWHSMIA:
    case PPC::EVMWHSSF:
    case PPC::EVMWHSSFA:
    case PPC::EVMWHUMI:
    case PPC::EVMWHUMIA:
    case PPC::EVMWLSMIAAW:
    case PPC::EVMWLSMIANW:
    case PPC::EVMWLSSIAAW:
    case PPC::EVMWLSSIANW:
    case PPC::EVMWLUMI:
    case PPC::EVMWLUMIA:
    case PPC::EVMWLUMIAAW:
    case PPC::EVMWLUMIANW:
    case PPC::EVMWLUSIAAW:
    case PPC::EVMWLUSIANW:
    case PPC::EVMWSMF:
    case PPC::EVMWSMFA:
    case PPC::EVMWSMFAA:
    case PPC::EVMWSMFAN:
    case PPC::EVMWSMI:
    case PPC::EVMWSMIA:
    case PPC::EVMWSMIAA:
    case PPC::EVMWSMIAN:
    case PPC::EVMWSSF:
    case PPC::EVMWSSFA:
    case PPC::EVMWSSFAA:
    case PPC::EVMWSSFAN:
    case PPC::EVMWUMI:
    case PPC::EVMWUMIA:
    case PPC::EVMWUMIAA:
    case PPC::EVMWUMIAN:
    case PPC::EVNAND:
    case PPC::EVNOR:
    case PPC::EVOR:
    case PPC::EVORC:
    case PPC::EVRLW:
    case PPC::EVRLWI:
    case PPC::EVSLW:
    case PPC::EVSLWI:
    case PPC::EVSRWIS:
    case PPC::EVSRWIU:
    case PPC::EVSRWS:
    case PPC::EVSRWU:
    case PPC::EVSTDDX:
    case PPC::EVSTDHX:
    case PPC::EVSTDWX:
    case PPC::EVSTWHEX:
    case PPC::EVSTWHOX:
    case PPC::EVSTWWEX:
    case PPC::EVSTWWOX:
    case PPC::EVSUBFW:
    case PPC::EVSUBIFW:
    case PPC::EVXOR:
    case PPC::MULHD:
    case PPC::MULHDU:
    case PPC::MULHDU_rec:
    case PPC::MULHD_rec:
    case PPC::MULHW:
    case PPC::MULHWU:
    case PPC::MULHWU_rec:
    case PPC::MULHW_rec:
    case PPC::MULLD:
    case PPC::MULLDO:
    case PPC::MULLDO_rec:
    case PPC::MULLD_rec:
    case PPC::MULLW:
    case PPC::MULLWO:
    case PPC::MULLWO_rec:
    case PPC::MULLW_rec:
    case PPC::SUBF:
    case PPC::SUBF8:
    case PPC::SUBF8O:
    case PPC::SUBF8O_rec:
    case PPC::SUBF8_rec:
    case PPC::SUBFC:
    case PPC::SUBFC8:
    case PPC::SUBFC8O:
    case PPC::SUBFC8O_rec:
    case PPC::SUBFC8_rec:
    case PPC::SUBFCO:
    case PPC::SUBFCO_rec:
    case PPC::SUBFC_rec:
    case PPC::SUBFE:
    case PPC::SUBFE8:
    case PPC::SUBFE8O:
    case PPC::SUBFE8O_rec:
    case PPC::SUBFE8_rec:
    case PPC::SUBFEO:
    case PPC::SUBFEO_rec:
    case PPC::SUBFE_rec:
    case PPC::SUBFO:
    case PPC::SUBFO_rec:
    case PPC::SUBF_rec: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::VMADDFP:
    case PPC::VNMSUBFP: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RC
        return 6;
      case 3:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::PADDI:
    case PPC::PADDI8:
    case PPC::PADDI8pc:
    case PPC::PADDIpc: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: SI
        return 0;
      }
      break;
    }
    case PPC::VPERMXOR: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      case 3:
        // op: RC
        return 6;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::ADDME:
    case PPC::ADDME8:
    case PPC::ADDME8O:
    case PPC::ADDME8O_rec:
    case PPC::ADDME8_rec:
    case PPC::ADDMEO:
    case PPC::ADDMEO_rec:
    case PPC::ADDME_rec:
    case PPC::ADDZE:
    case PPC::ADDZE8:
    case PPC::ADDZE8O:
    case PPC::ADDZE8O_rec:
    case PPC::ADDZE8_rec:
    case PPC::ADDZEO:
    case PPC::ADDZEO_rec:
    case PPC::ADDZE_rec:
    case PPC::EFDABS:
    case PPC::EFDNABS:
    case PPC::EFDNEG:
    case PPC::EFSABS:
    case PPC::EFSNABS:
    case PPC::EFSNEG:
    case PPC::EVABS:
    case PPC::EVADDSMIAAW:
    case PPC::EVADDSSIAAW:
    case PPC::EVADDUMIAAW:
    case PPC::EVADDUSIAAW:
    case PPC::EVCNTLSW:
    case PPC::EVCNTLZW:
    case PPC::EVEXTSB:
    case PPC::EVEXTSH:
    case PPC::EVFSABS:
    case PPC::EVFSNABS:
    case PPC::EVFSNEG:
    case PPC::EVMRA:
    case PPC::EVNEG:
    case PPC::EVRNDW:
    case PPC::EVSPLATFI:
    case PPC::EVSPLATI:
    case PPC::EVSUBFSMIAAW:
    case PPC::EVSUBFSSIAAW:
    case PPC::EVSUBFUMIAAW:
    case PPC::EVSUBFUSIAAW:
    case PPC::NEG:
    case PPC::NEG8:
    case PPC::NEG8O:
    case PPC::NEG8O_rec:
    case PPC::NEG8_rec:
    case PPC::NEGO:
    case PPC::NEGO_rec:
    case PPC::NEG_rec:
    case PPC::SUBFME:
    case PPC::SUBFME8:
    case PPC::SUBFME8O:
    case PPC::SUBFME8O_rec:
    case PPC::SUBFME8_rec:
    case PPC::SUBFMEO:
    case PPC::SUBFMEO_rec:
    case PPC::SUBFME_rec:
    case PPC::SUBFZE:
    case PPC::SUBFZE8:
    case PPC::SUBFZE8O:
    case PPC::SUBFZE8O_rec:
    case PPC::SUBFZE8_rec:
    case PPC::SUBFZEO:
    case PPC::SUBFZEO_rec:
    case PPC::SUBFZE_rec: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RA
        return 16;
      }
      break;
    }
    case PPC::EFDCFS:
    case PPC::EFDCFSF:
    case PPC::EFDCFSI:
    case PPC::EFDCFSID:
    case PPC::EFDCFUF:
    case PPC::EFDCFUI:
    case PPC::EFDCFUID:
    case PPC::EFDCTSF:
    case PPC::EFDCTSI:
    case PPC::EFDCTSIDZ:
    case PPC::EFDCTSIZ:
    case PPC::EFDCTUF:
    case PPC::EFDCTUI:
    case PPC::EFDCTUIDZ:
    case PPC::EFDCTUIZ:
    case PPC::EFSCFD:
    case PPC::EFSCFSF:
    case PPC::EFSCFSI:
    case PPC::EFSCFUF:
    case PPC::EFSCFUI:
    case PPC::EFSCTSF:
    case PPC::EFSCTSI:
    case PPC::EFSCTSIZ:
    case PPC::EFSCTUF:
    case PPC::EFSCTUI:
    case PPC::EFSCTUIZ:
    case PPC::EVFSCFSF:
    case PPC::EVFSCFSI:
    case PPC::EVFSCFUF:
    case PPC::EVFSCFUI:
    case PPC::EVFSCTSF:
    case PPC::EVFSCTSI:
    case PPC::EVFSCTSIZ:
    case PPC::EVFSCTUF:
    case PPC::EVFSCTUI:
    case PPC::EVFSCTUIZ:
    case PPC::SLBMFEV: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::PLA8pc:
    case PPC::PLApc:
    case PPC::PLI:
    case PPC::PLI8: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: SI
        return 0;
      }
      break;
    }
    case PPC::XSXEXPDP:
    case PPC::XSXSIGDP: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::MFBHRBE: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 1:
        // op: imm
        return 11;
      }
      break;
    }
    case PPC::EVLDD:
    case PPC::EVLDH:
    case PPC::EVLDW:
    case PPC::EVLHHESPLAT:
    case PPC::EVLHHOSSPLAT:
    case PPC::EVLHHOUSPLAT:
    case PPC::EVLWHE:
    case PPC::EVLWHOS:
    case PPC::EVLWHOU:
    case PPC::EVLWHSPLAT:
    case PPC::EVLWWSPLAT:
    case PPC::EVSTDD:
    case PPC::EVSTDH:
    case PPC::EVSTDW:
    case PPC::EVSTWHE:
    case PPC::EVSTWHO:
    case PPC::EVSTWWE:
    case PPC::EVSTWWO: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: D
        return 11;
      }
      break;
    }
    case PPC::PLA:
    case PPC::PLA8: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      case 2:
        // op: SI
        return 0;
      }
      break;
    }
    case PPC::MFCR:
    case PPC::MFCR8: {
      switch (OpNum) {
      case 0:
        // op: RT
        return 21;
      }
      break;
    }
    case PPC::LQ: {
      switch (OpNum) {
      case 0:
        // op: RTp
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: DQ
        return 4;
      }
      break;
    }
    case PPC::RFEBB: {
      switch (OpNum) {
      case 0:
        // op: S
        return 11;
      }
      break;
    }
    case PPC::DST:
    case PPC::DST64:
    case PPC::DSTST:
    case PPC::DSTST64:
    case PPC::DSTSTT:
    case PPC::DSTSTT64:
    case PPC::DSTT:
    case PPC::DSTT64: {
      switch (OpNum) {
      case 0:
        // op: STRM
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::DSS: {
      switch (OpNum) {
      case 0:
        // op: STRM
        return 21;
      }
      break;
    }
    case PPC::DCBF:
    case PPC::DCBT:
    case PPC::DCBTST: {
      switch (OpNum) {
      case 0:
        // op: TH
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::MTVSCR: {
      switch (OpNum) {
      case 0:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::V_SET0:
    case PPC::V_SET0B:
    case PPC::V_SET0H: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 11;
      }
      break;
    }
    case PPC::VSPLTISB:
    case PPC::VSPLTISH:
    case PPC::VSPLTISW: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: IMM
        return 16;
      }
      break;
    }
    case PPC::VSHASIGMAD:
    case PPC::VSHASIGMAW: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: VA
        return 16;
      case 2:
        // op: ST
        return 15;
      case 3:
        // op: SIX
        return 11;
      }
      break;
    }
    case PPC::BCDADD_rec:
    case PPC::BCDSR_rec:
    case PPC::BCDSUB_rec:
    case PPC::BCDS_rec:
    case PPC::BCDTRUNC_rec: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: VA
        return 16;
      case 2:
        // op: VB
        return 11;
      case 3:
        // op: PS
        return 9;
      }
      break;
    }
    case PPC::BCDCPSGN_rec:
    case PPC::BCDUS_rec:
    case PPC::BCDUTRUNC_rec:
    case PPC::VABSDUB:
    case PPC::VABSDUH:
    case PPC::VABSDUW:
    case PPC::VADDCUQ:
    case PPC::VADDCUW:
    case PPC::VADDFP:
    case PPC::VADDSBS:
    case PPC::VADDSHS:
    case PPC::VADDSWS:
    case PPC::VADDUBM:
    case PPC::VADDUBS:
    case PPC::VADDUDM:
    case PPC::VADDUHM:
    case PPC::VADDUHS:
    case PPC::VADDUQM:
    case PPC::VADDUWM:
    case PPC::VADDUWS:
    case PPC::VAND:
    case PPC::VANDC:
    case PPC::VAVGSB:
    case PPC::VAVGSH:
    case PPC::VAVGSW:
    case PPC::VAVGUB:
    case PPC::VAVGUH:
    case PPC::VAVGUW:
    case PPC::VBPERMD:
    case PPC::VBPERMQ:
    case PPC::VCFSX:
    case PPC::VCFUGED:
    case PPC::VCFUX:
    case PPC::VCIPHER:
    case PPC::VCIPHERLAST:
    case PPC::VCLRLB:
    case PPC::VCLRRB:
    case PPC::VCLZDM:
    case PPC::VCMPBFP:
    case PPC::VCMPBFP_rec:
    case PPC::VCMPEQFP:
    case PPC::VCMPEQFP_rec:
    case PPC::VCMPEQUB:
    case PPC::VCMPEQUB_rec:
    case PPC::VCMPEQUD:
    case PPC::VCMPEQUD_rec:
    case PPC::VCMPEQUH:
    case PPC::VCMPEQUH_rec:
    case PPC::VCMPEQUQ:
    case PPC::VCMPEQUQ_rec:
    case PPC::VCMPEQUW:
    case PPC::VCMPEQUW_rec:
    case PPC::VCMPGEFP:
    case PPC::VCMPGEFP_rec:
    case PPC::VCMPGTFP:
    case PPC::VCMPGTFP_rec:
    case PPC::VCMPGTSB:
    case PPC::VCMPGTSB_rec:
    case PPC::VCMPGTSD:
    case PPC::VCMPGTSD_rec:
    case PPC::VCMPGTSH:
    case PPC::VCMPGTSH_rec:
    case PPC::VCMPGTSQ:
    case PPC::VCMPGTSQ_rec:
    case PPC::VCMPGTSW:
    case PPC::VCMPGTSW_rec:
    case PPC::VCMPGTUB:
    case PPC::VCMPGTUB_rec:
    case PPC::VCMPGTUD:
    case PPC::VCMPGTUD_rec:
    case PPC::VCMPGTUH:
    case PPC::VCMPGTUH_rec:
    case PPC::VCMPGTUQ:
    case PPC::VCMPGTUQ_rec:
    case PPC::VCMPGTUW:
    case PPC::VCMPGTUW_rec:
    case PPC::VCMPNEB:
    case PPC::VCMPNEB_rec:
    case PPC::VCMPNEH:
    case PPC::VCMPNEH_rec:
    case PPC::VCMPNEW:
    case PPC::VCMPNEW_rec:
    case PPC::VCMPNEZB:
    case PPC::VCMPNEZB_rec:
    case PPC::VCMPNEZH:
    case PPC::VCMPNEZH_rec:
    case PPC::VCMPNEZW:
    case PPC::VCMPNEZW_rec:
    case PPC::VCTSXS:
    case PPC::VCTUXS:
    case PPC::VCTZDM:
    case PPC::VDIVESD:
    case PPC::VDIVESQ:
    case PPC::VDIVESW:
    case PPC::VDIVEUD:
    case PPC::VDIVEUQ:
    case PPC::VDIVEUW:
    case PPC::VDIVSD:
    case PPC::VDIVSQ:
    case PPC::VDIVSW:
    case PPC::VDIVUD:
    case PPC::VDIVUQ:
    case PPC::VDIVUW:
    case PPC::VEQV:
    case PPC::VEXTRACTD:
    case PPC::VEXTRACTUB:
    case PPC::VEXTRACTUH:
    case PPC::VEXTRACTUW:
    case PPC::VEXTUBLX:
    case PPC::VEXTUBRX:
    case PPC::VEXTUHLX:
    case PPC::VEXTUHRX:
    case PPC::VEXTUWLX:
    case PPC::VEXTUWRX:
    case PPC::VINSERTD:
    case PPC::VINSERTW:
    case PPC::VMAXFP:
    case PPC::VMAXSB:
    case PPC::VMAXSD:
    case PPC::VMAXSH:
    case PPC::VMAXSW:
    case PPC::VMAXUB:
    case PPC::VMAXUD:
    case PPC::VMAXUH:
    case PPC::VMAXUW:
    case PPC::VMINFP:
    case PPC::VMINSB:
    case PPC::VMINSD:
    case PPC::VMINSH:
    case PPC::VMINSW:
    case PPC::VMINUB:
    case PPC::VMINUD:
    case PPC::VMINUH:
    case PPC::VMINUW:
    case PPC::VMODSD:
    case PPC::VMODSQ:
    case PPC::VMODSW:
    case PPC::VMODUD:
    case PPC::VMODUQ:
    case PPC::VMODUW:
    case PPC::VMRGEW:
    case PPC::VMRGHB:
    case PPC::VMRGHH:
    case PPC::VMRGHW:
    case PPC::VMRGLB:
    case PPC::VMRGLH:
    case PPC::VMRGLW:
    case PPC::VMRGOW:
    case PPC::VMUL10ECUQ:
    case PPC::VMUL10EUQ:
    case PPC::VMULESB:
    case PPC::VMULESD:
    case PPC::VMULESH:
    case PPC::VMULESW:
    case PPC::VMULEUB:
    case PPC::VMULEUD:
    case PPC::VMULEUH:
    case PPC::VMULEUW:
    case PPC::VMULHSD:
    case PPC::VMULHSW:
    case PPC::VMULHUD:
    case PPC::VMULHUW:
    case PPC::VMULLD:
    case PPC::VMULOSB:
    case PPC::VMULOSD:
    case PPC::VMULOSH:
    case PPC::VMULOSW:
    case PPC::VMULOUB:
    case PPC::VMULOUD:
    case PPC::VMULOUH:
    case PPC::VMULOUW:
    case PPC::VMULUWM:
    case PPC::VNAND:
    case PPC::VNCIPHER:
    case PPC::VNCIPHERLAST:
    case PPC::VNOR:
    case PPC::VOR:
    case PPC::VORC:
    case PPC::VPDEPD:
    case PPC::VPEXTD:
    case PPC::VPKPX:
    case PPC::VPKSDSS:
    case PPC::VPKSDUS:
    case PPC::VPKSHSS:
    case PPC::VPKSHUS:
    case PPC::VPKSWSS:
    case PPC::VPKSWUS:
    case PPC::VPKUDUM:
    case PPC::VPKUDUS:
    case PPC::VPKUHUM:
    case PPC::VPKUHUS:
    case PPC::VPKUWUM:
    case PPC::VPKUWUS:
    case PPC::VPMSUMB:
    case PPC::VPMSUMD:
    case PPC::VPMSUMH:
    case PPC::VPMSUMW:
    case PPC::VRLB:
    case PPC::VRLD:
    case PPC::VRLDMI:
    case PPC::VRLDNM:
    case PPC::VRLH:
    case PPC::VRLQ:
    case PPC::VRLQMI:
    case PPC::VRLQNM:
    case PPC::VRLW:
    case PPC::VRLWMI:
    case PPC::VRLWNM:
    case PPC::VSL:
    case PPC::VSLB:
    case PPC::VSLD:
    case PPC::VSLH:
    case PPC::VSLO:
    case PPC::VSLQ:
    case PPC::VSLV:
    case PPC::VSLW:
    case PPC::VSPLTB:
    case PPC::VSPLTBs:
    case PPC::VSPLTH:
    case PPC::VSPLTHs:
    case PPC::VSPLTW:
    case PPC::VSR:
    case PPC::VSRAB:
    case PPC::VSRAD:
    case PPC::VSRAH:
    case PPC::VSRAQ:
    case PPC::VSRAW:
    case PPC::VSRB:
    case PPC::VSRD:
    case PPC::VSRH:
    case PPC::VSRO:
    case PPC::VSRQ:
    case PPC::VSRV:
    case PPC::VSRW:
    case PPC::VSUBCUQ:
    case PPC::VSUBCUW:
    case PPC::VSUBFP:
    case PPC::VSUBSBS:
    case PPC::VSUBSHS:
    case PPC::VSUBSWS:
    case PPC::VSUBUBM:
    case PPC::VSUBUBS:
    case PPC::VSUBUDM:
    case PPC::VSUBUHM:
    case PPC::VSUBUHS:
    case PPC::VSUBUQM:
    case PPC::VSUBUWM:
    case PPC::VSUBUWS:
    case PPC::VSUM2SWS:
    case PPC::VSUM4SBS:
    case PPC::VSUM4SHS:
    case PPC::VSUM4UBS:
    case PPC::VSUMSWS:
    case PPC::VXOR: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: VA
        return 16;
      case 2:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::VMUL10CUQ:
    case PPC::VMUL10UQ:
    case PPC::VSBOX: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: VA
        return 16;
      }
      break;
    }
    case PPC::BCDCFN_rec:
    case PPC::BCDCFSQ_rec:
    case PPC::BCDCFZ_rec:
    case PPC::BCDCTZ_rec:
    case PPC::BCDSETSGN_rec: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: VB
        return 11;
      case 2:
        // op: PS
        return 9;
      }
      break;
    }
    case PPC::BCDCTN_rec:
    case PPC::BCDCTSQ_rec:
    case PPC::MTVSRBM:
    case PPC::MTVSRDM:
    case PPC::MTVSRHM:
    case PPC::MTVSRQM:
    case PPC::MTVSRWM:
    case PPC::VCFSX_0:
    case PPC::VCFUX_0:
    case PPC::VCLZB:
    case PPC::VCLZD:
    case PPC::VCLZH:
    case PPC::VCLZLSBB:
    case PPC::VCLZW:
    case PPC::VCTSXS_0:
    case PPC::VCTUXS_0:
    case PPC::VCTZB:
    case PPC::VCTZD:
    case PPC::VCTZH:
    case PPC::VCTZLSBB:
    case PPC::VCTZW:
    case PPC::VEXPANDBM:
    case PPC::VEXPANDDM:
    case PPC::VEXPANDHM:
    case PPC::VEXPANDQM:
    case PPC::VEXPANDWM:
    case PPC::VEXPTEFP:
    case PPC::VEXTRACTBM:
    case PPC::VEXTRACTDM:
    case PPC::VEXTRACTHM:
    case PPC::VEXTRACTQM:
    case PPC::VEXTRACTWM:
    case PPC::VEXTSB2D:
    case PPC::VEXTSB2Ds:
    case PPC::VEXTSB2W:
    case PPC::VEXTSB2Ws:
    case PPC::VEXTSD2Q:
    case PPC::VEXTSH2D:
    case PPC::VEXTSH2Ds:
    case PPC::VEXTSH2W:
    case PPC::VEXTSH2Ws:
    case PPC::VEXTSW2D:
    case PPC::VEXTSW2Ds:
    case PPC::VGBBD:
    case PPC::VLOGEFP:
    case PPC::VNEGD:
    case PPC::VNEGW:
    case PPC::VPOPCNTB:
    case PPC::VPOPCNTD:
    case PPC::VPOPCNTH:
    case PPC::VPOPCNTW:
    case PPC::VPRTYBD:
    case PPC::VPRTYBQ:
    case PPC::VPRTYBW:
    case PPC::VREFP:
    case PPC::VRFIM:
    case PPC::VRFIN:
    case PPC::VRFIP:
    case PPC::VRFIZ:
    case PPC::VRSQRTEFP:
    case PPC::VUPKHPX:
    case PPC::VUPKHSB:
    case PPC::VUPKHSH:
    case PPC::VUPKHSW:
    case PPC::VUPKLPX:
    case PPC::VUPKLSB:
    case PPC::VUPKLSH:
    case PPC::VUPKLSW: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 1:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::VINSBLX:
    case PPC::VINSBRX:
    case PPC::VINSBVLX:
    case PPC::VINSBVRX:
    case PPC::VINSD:
    case PPC::VINSDLX:
    case PPC::VINSDRX:
    case PPC::VINSERTB:
    case PPC::VINSERTH:
    case PPC::VINSHLX:
    case PPC::VINSHRX:
    case PPC::VINSHVLX:
    case PPC::VINSHVRX:
    case PPC::VINSW:
    case PPC::VINSWLX:
    case PPC::VINSWRX:
    case PPC::VINSWVLX:
    case PPC::VINSWVRX: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      case 2:
        // op: VA
        return 16;
      case 3:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::MFVSCR:
    case PPC::V_SETALLONES:
    case PPC::V_SETALLONESB:
    case PPC::V_SETALLONESH: {
      switch (OpNum) {
      case 0:
        // op: VD
        return 21;
      }
      break;
    }
    case PPC::XSRQPI:
    case PPC::XSRQPIX:
    case PPC::XSRQPXP: {
      switch (OpNum) {
      case 0:
        // op: VRT
        return 21;
      case 1:
        // op: R
        return 16;
      case 2:
        // op: VRB
        return 11;
      case 3:
        // op: idx
        return 9;
      }
      break;
    }
    case PPC::VSLDBI:
    case PPC::VSRDBI: {
      switch (OpNum) {
      case 0:
        // op: VRT
        return 21;
      case 1:
        // op: VRA
        return 16;
      case 2:
        // op: VRB
        return 11;
      case 3:
        // op: SD
        return 6;
      }
      break;
    }
    case PPC::VSTRIBL:
    case PPC::VSTRIBL_rec:
    case PPC::VSTRIBR:
    case PPC::VSTRIBR_rec:
    case PPC::VSTRIHL:
    case PPC::VSTRIHL_rec:
    case PPC::VSTRIHR:
    case PPC::VSTRIHR_rec: {
      switch (OpNum) {
      case 0:
        // op: VT
        return 21;
      case 1:
        // op: VB
        return 11;
      }
      break;
    }
    case PPC::PLXVonlypc:
    case PPC::PSTXVonlypc: {
      switch (OpNum) {
      case 0:
        // op: XST
        return 21;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::PLXV:
    case PPC::PLXVnopc:
    case PPC::PLXVpc:
    case PPC::PSTXV:
    case PPC::PSTXVnopc:
    case PPC::PSTXVpc: {
      switch (OpNum) {
      case 0:
        // op: XST
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::XVTSTDCDP:
    case PPC::XVTSTDCSP: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: DCMX
        return 2;
      case 2:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::XXSPLTIB: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: IMM8
        return 11;
      }
      break;
    }
    case PPC::LXSDX:
    case PPC::LXSIBZX:
    case PPC::LXSIHZX:
    case PPC::LXSIWAX:
    case PPC::LXSIWZX:
    case PPC::LXSSPX:
    case PPC::LXVB16X:
    case PPC::LXVD2X:
    case PPC::LXVDSX:
    case PPC::LXVH8X:
    case PPC::LXVL:
    case PPC::LXVLL:
    case PPC::LXVRBX:
    case PPC::LXVRDX:
    case PPC::LXVRHX:
    case PPC::LXVRL:
    case PPC::LXVRLL:
    case PPC::LXVRWX:
    case PPC::LXVW4X:
    case PPC::LXVWSX:
    case PPC::LXVX:
    case PPC::MTVSRDD:
    case PPC::STXSDX:
    case PPC::STXSIBX:
    case PPC::STXSIBXv:
    case PPC::STXSIHX:
    case PPC::STXSIHXv:
    case PPC::STXSIWX:
    case PPC::STXSSPX:
    case PPC::STXVB16X:
    case PPC::STXVD2X:
    case PPC::STXVH8X:
    case PPC::STXVL:
    case PPC::STXVLL:
    case PPC::STXVRBX:
    case PPC::STXVRDX:
    case PPC::STXVRHX:
    case PPC::STXVRL:
    case PPC::STXVRLL:
    case PPC::STXVRWX:
    case PPC::STXVW4X:
    case PPC::STXVX:
    case PPC::XSIEXPDP: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::MTVRD:
    case PPC::MTVRWA:
    case PPC::MTVRWZ:
    case PPC::MTVSRD:
    case PPC::MTVSRWA:
    case PPC::MTVSRWS:
    case PPC::MTVSRWZ: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: RA
        return 16;
      }
      break;
    }
    case PPC::LXVKQ: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: UIM
        return 11;
      }
      break;
    }
    case PPC::XXGENPCVBM:
    case PPC::XXGENPCVDM:
    case PPC::XXGENPCVHM:
    case PPC::XXGENPCVWM: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: VRB
        return 11;
      case 2:
        // op: IMM
        return 16;
      }
      break;
    }
    case PPC::XXPERMDIs:
    case PPC::XXSLDWIs: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XA
        return 1;
      case 2:
        // op: D
        return 8;
      }
      break;
    }
    case PPC::XXPERMDI:
    case PPC::XXSLDWI: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: D
        return 8;
      }
      break;
    }
    case PPC::XXEVAL:
    case PPC::XXPERMX: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XC
        return 3;
      case 4:
        // op: IMM
        return 32;
      }
      break;
    }
    case PPC::XXBLENDVB:
    case PPC::XXBLENDVD:
    case PPC::XXBLENDVH:
    case PPC::XXBLENDVW:
    case PPC::XXSEL: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: XC
        return 3;
      }
      break;
    }
    case PPC::XSADDDP:
    case PPC::XSADDSP:
    case PPC::XSCMPEQDP:
    case PPC::XSCMPGEDP:
    case PPC::XSCMPGTDP:
    case PPC::XSCPSGNDP:
    case PPC::XSDIVDP:
    case PPC::XSDIVSP:
    case PPC::XSMAXCDP:
    case PPC::XSMAXDP:
    case PPC::XSMAXJDP:
    case PPC::XSMINCDP:
    case PPC::XSMINDP:
    case PPC::XSMINJDP:
    case PPC::XSMULDP:
    case PPC::XSMULSP:
    case PPC::XSSUBDP:
    case PPC::XSSUBSP:
    case PPC::XVADDDP:
    case PPC::XVADDSP:
    case PPC::XVCMPEQDP:
    case PPC::XVCMPEQDP_rec:
    case PPC::XVCMPEQSP:
    case PPC::XVCMPEQSP_rec:
    case PPC::XVCMPGEDP:
    case PPC::XVCMPGEDP_rec:
    case PPC::XVCMPGESP:
    case PPC::XVCMPGESP_rec:
    case PPC::XVCMPGTDP:
    case PPC::XVCMPGTDP_rec:
    case PPC::XVCMPGTSP:
    case PPC::XVCMPGTSP_rec:
    case PPC::XVCPSGNDP:
    case PPC::XVCPSGNSP:
    case PPC::XVDIVDP:
    case PPC::XVDIVSP:
    case PPC::XVIEXPDP:
    case PPC::XVIEXPSP:
    case PPC::XVMAXDP:
    case PPC::XVMAXSP:
    case PPC::XVMINDP:
    case PPC::XVMINSP:
    case PPC::XVMULDP:
    case PPC::XVMULSP:
    case PPC::XVSUBDP:
    case PPC::XVSUBSP:
    case PPC::XXLAND:
    case PPC::XXLANDC:
    case PPC::XXLEQV:
    case PPC::XXLNAND:
    case PPC::XXLNOR:
    case PPC::XXLOR:
    case PPC::XXLORC:
    case PPC::XXLORf:
    case PPC::XXLXOR:
    case PPC::XXMRGHW:
    case PPC::XXMRGLW: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XA
        return 2;
      case 2:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::XXPERM:
    case PPC::XXPERMR: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::XXSPLTW:
    case PPC::XXSPLTWs: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XB
        return 1;
      case 2:
        // op: D
        return 16;
      }
      break;
    }
    case PPC::XXEXTRACTUW: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XB
        return 1;
      case 2:
        // op: UIM5
        return 16;
      }
      break;
    }
    case PPC::XSABSDP:
    case PPC::XSCVDPHP:
    case PPC::XSCVDPSP:
    case PPC::XSCVDPSPN:
    case PPC::XSCVDPSXDS:
    case PPC::XSCVDPSXDSs:
    case PPC::XSCVDPSXWS:
    case PPC::XSCVDPSXWSs:
    case PPC::XSCVDPUXDS:
    case PPC::XSCVDPUXDSs:
    case PPC::XSCVDPUXWS:
    case PPC::XSCVDPUXWSs:
    case PPC::XSCVHPDP:
    case PPC::XSCVSPDP:
    case PPC::XSCVSPDPN:
    case PPC::XSCVSXDDP:
    case PPC::XSCVSXDSP:
    case PPC::XSCVUXDDP:
    case PPC::XSCVUXDSP:
    case PPC::XSNABSDP:
    case PPC::XSNABSDPs:
    case PPC::XSNEGDP:
    case PPC::XSRDPI:
    case PPC::XSRDPIC:
    case PPC::XSRDPIM:
    case PPC::XSRDPIP:
    case PPC::XSRDPIZ:
    case PPC::XSREDP:
    case PPC::XSRESP:
    case PPC::XSRSP:
    case PPC::XSRSQRTEDP:
    case PPC::XSRSQRTESP:
    case PPC::XSSQRTDP:
    case PPC::XSSQRTSP:
    case PPC::XVABSDP:
    case PPC::XVABSSP:
    case PPC::XVCVBF16SPN:
    case PPC::XVCVDPSP:
    case PPC::XVCVDPSXDS:
    case PPC::XVCVDPSXWS:
    case PPC::XVCVDPUXDS:
    case PPC::XVCVDPUXWS:
    case PPC::XVCVHPSP:
    case PPC::XVCVSPBF16:
    case PPC::XVCVSPDP:
    case PPC::XVCVSPHP:
    case PPC::XVCVSPSXDS:
    case PPC::XVCVSPSXWS:
    case PPC::XVCVSPUXDS:
    case PPC::XVCVSPUXWS:
    case PPC::XVCVSXDDP:
    case PPC::XVCVSXDSP:
    case PPC::XVCVSXWDP:
    case PPC::XVCVSXWSP:
    case PPC::XVCVUXDDP:
    case PPC::XVCVUXDSP:
    case PPC::XVCVUXWDP:
    case PPC::XVCVUXWSP:
    case PPC::XVNABSDP:
    case PPC::XVNABSSP:
    case PPC::XVNEGDP:
    case PPC::XVNEGSP:
    case PPC::XVRDPI:
    case PPC::XVRDPIC:
    case PPC::XVRDPIM:
    case PPC::XVRDPIP:
    case PPC::XVRDPIZ:
    case PPC::XVREDP:
    case PPC::XVRESP:
    case PPC::XVRSPI:
    case PPC::XVRSPIC:
    case PPC::XVRSPIM:
    case PPC::XVRSPIP:
    case PPC::XVRSPIZ:
    case PPC::XVRSQRTEDP:
    case PPC::XVRSQRTESP:
    case PPC::XVSQRTDP:
    case PPC::XVSQRTSP:
    case PPC::XVXEXPDP:
    case PPC::XVXEXPSP:
    case PPC::XVXSIGDP:
    case PPC::XVXSIGSP:
    case PPC::XXBRD:
    case PPC::XXBRH:
    case PPC::XXBRQ:
    case PPC::XXBRW: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 1:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::XSMADDADP:
    case PPC::XSMADDASP:
    case PPC::XSMADDMDP:
    case PPC::XSMADDMSP:
    case PPC::XSMSUBADP:
    case PPC::XSMSUBASP:
    case PPC::XSMSUBMDP:
    case PPC::XSMSUBMSP:
    case PPC::XSNMADDADP:
    case PPC::XSNMADDASP:
    case PPC::XSNMADDMDP:
    case PPC::XSNMADDMSP:
    case PPC::XSNMSUBADP:
    case PPC::XSNMSUBASP:
    case PPC::XSNMSUBMDP:
    case PPC::XSNMSUBMSP:
    case PPC::XVMADDADP:
    case PPC::XVMADDASP:
    case PPC::XVMADDMDP:
    case PPC::XVMADDMSP:
    case PPC::XVMSUBADP:
    case PPC::XVMSUBASP:
    case PPC::XVMSUBMDP:
    case PPC::XVMSUBMSP:
    case PPC::XVNMADDADP:
    case PPC::XVNMADDASP:
    case PPC::XVNMADDMDP:
    case PPC::XVNMADDMSP:
    case PPC::XVNMSUBADP:
    case PPC::XVNMSUBASP:
    case PPC::XVNMSUBMDP:
    case PPC::XVNMSUBMSP: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 2:
        // op: XA
        return 2;
      case 3:
        // op: XB
        return 1;
      }
      break;
    }
    case PPC::XXINSERTW: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      case 2:
        // op: XB
        return 1;
      case 3:
        // op: UIM5
        return 16;
      }
      break;
    }
    case PPC::XXLEQVOnes:
    case PPC::XXLXORdpz:
    case PPC::XXLXORspz:
    case PPC::XXLXORz: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 0;
      }
      break;
    }
    case PPC::XXSPLTIDP:
    case PPC::XXSPLTIW: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 16;
      case 1:
        // op: IMM32
        return 0;
      }
      break;
    }
    case PPC::XXSPLTI32DX: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 16;
      case 2:
        // op: IX
        return 17;
      case 3:
        // op: IMM32
        return 0;
      }
      break;
    }
    case PPC::LXV:
    case PPC::STXV: {
      switch (OpNum) {
      case 0:
        // op: XT
        return 3;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: DQ
        return 4;
      }
      break;
    }
    case PPC::PLXVPonlypc:
    case PPC::PSTXVPonlypc: {
      switch (OpNum) {
      case 0:
        // op: XTp
        return 21;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::LXVPRL:
    case PPC::LXVPRLL:
    case PPC::LXVPX:
    case PPC::STXVPRL:
    case PPC::STXVPRLL:
    case PPC::STXVPX: {
      switch (OpNum) {
      case 0:
        // op: XTp
        return 21;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::PLXVP:
    case PPC::PLXVPnopc:
    case PPC::PLXVPpc:
    case PPC::PSTXVP:
    case PPC::PSTXVPnopc:
    case PPC::PSTXVPpc: {
      switch (OpNum) {
      case 0:
        // op: XTp
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::LXVP:
    case PPC::STXVP: {
      switch (OpNum) {
      case 0:
        // op: XTp
        return 21;
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: DQ
        return 4;
      }
      break;
    }
    case PPC::EFDCMPEQ:
    case PPC::EFDCMPGT:
    case PPC::EFDCMPLT:
    case PPC::EFDTSTEQ:
    case PPC::EFDTSTGT:
    case PPC::EFDTSTLT:
    case PPC::EFSCMPEQ:
    case PPC::EFSCMPGT:
    case PPC::EFSCMPLT:
    case PPC::EFSTSTEQ:
    case PPC::EFSTSTGT:
    case PPC::EFSTSTLT:
    case PPC::EVCMPEQ:
    case PPC::EVCMPGTS:
    case PPC::EVCMPGTU:
    case PPC::EVCMPLTS:
    case PPC::EVCMPLTU:
    case PPC::EVFSCMPEQ:
    case PPC::EVFSCMPGT:
    case PPC::EVFSCMPLT:
    case PPC::EVFSTSTEQ:
    case PPC::EVFSTSTGT:
    case PPC::EVFSTSTLT: {
      switch (OpNum) {
      case 0:
        // op: crD
        return 23;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::DMXXEXTFDMR256: {
      switch (OpNum) {
      case 1:
        // op: AT
        return 23;
      case 0:
        // op: XBp
        return 1;
      case 2:
        // op: P
        return 11;
      }
      break;
    }
    case PPC::XXMFACC:
    case PPC::XXMFACCW: {
      switch (OpNum) {
      case 1:
        // op: AT
        return 23;
      }
      break;
    }
    case PPC::BCTRL_LWZinto_toc:
    case PPC::BCTRL_LWZinto_toc_RM: {
      switch (OpNum) {
      case 1:
        // op: RA
        return 16;
      case 0:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::BCTRL8_LDinto_toc:
    case PPC::BCTRL8_LDinto_toc_RM: {
      switch (OpNum) {
      case 1:
        // op: RA
        return 16;
      case 0:
        // op: D
        return 2;
      }
      break;
    }
    case PPC::TLBILX: {
      switch (OpNum) {
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 0:
        // op: T
        return 21;
      }
      break;
    }
    case PPC::MTOCRF:
    case PPC::MTOCRF8: {
      switch (OpNum) {
      case 1:
        // op: RST
        return 21;
      case 0:
        // op: FXM
        return 12;
      }
      break;
    }
    case PPC::MTPMR:
    case PPC::MTSPR:
    case PPC::MTSPR8: {
      switch (OpNum) {
      case 1:
        // op: RST
        return 21;
      case 0:
        // op: SPR
        return 11;
      }
      break;
    }
    case PPC::STBUX:
    case PPC::STBUX8:
    case PPC::STDUX:
    case PPC::STFDUX:
    case PPC::STFSUX:
    case PPC::STHUX:
    case PPC::STHUX8:
    case PPC::STWUX:
    case PPC::STWUX8: {
      switch (OpNum) {
      case 1:
        // op: RST
        return 21;
      case 2:
        // op: RA
        return 16;
      case 3:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::STBU:
    case PPC::STBU8:
    case PPC::STFDU:
    case PPC::STFSU:
    case PPC::STHU:
    case PPC::STHU8:
    case PPC::STWU:
    case PPC::STWU8: {
      switch (OpNum) {
      case 1:
        // op: RST
        return 21;
      case 3:
        // op: RA
        return 16;
      case 2:
        // op: D
        return 0;
      }
      break;
    }
    case PPC::STDU: {
      switch (OpNum) {
      case 1:
        // op: RST
        return 21;
      case 3:
        // op: RA
        return 16;
      case 2:
        // op: D
        return 2;
      }
      break;
    }
    case PPC::MTVRSAVEv: {
      switch (OpNum) {
      case 1:
        // op: RST
        return 21;
      }
      break;
    }
    case PPC::DENBCD:
    case PPC::DENBCDQ:
    case PPC::DENBCDQ_rec:
    case PPC::DENBCD_rec: {
      switch (OpNum) {
      case 1:
        // op: S
        return 20;
      case 0:
        // op: FRT
        return 21;
      case 2:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::DDEDPD:
    case PPC::DDEDPDQ:
    case PPC::DDEDPDQ_rec:
    case PPC::DDEDPD_rec: {
      switch (OpNum) {
      case 1:
        // op: SP
        return 19;
      case 0:
        // op: FRT
        return 21;
      case 2:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::MFVRD:
    case PPC::MFVRWZ:
    case PPC::MFVSRD:
    case PPC::MFVSRLD:
    case PPC::MFVSRWZ: {
      switch (OpNum) {
      case 1:
        // op: XT
        return 0;
      case 0:
        // op: RA
        return 16;
      }
      break;
    }
    case PPC::DMXXEXTFDMR512:
    case PPC::DMXXEXTFDMR512_HI: {
      switch (OpNum) {
      case 2:
        // op: AT
        return 23;
      case 0:
        // op: XAp
        return 2;
      case 1:
        // op: XBp
        return 1;
      }
      break;
    }
    case PPC::CP_PASTE8_rec:
    case PPC::CP_PASTE_rec: {
      switch (OpNum) {
      case 2:
        // op: L
        return 21;
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::MTFSF:
    case PPC::MTFSF_rec: {
      switch (OpNum) {
      case 2:
        // op: L
        return 25;
      case 0:
        // op: FLM
        return 17;
      case 3:
        // op: W
        return 16;
      case 1:
        // op: FRB
        return 11;
      }
      break;
    }
    case PPC::HASHCHK:
    case PPC::HASHCHK8:
    case PPC::HASHCHKP:
    case PPC::HASHCHKP8:
    case PPC::HASHST:
    case PPC::HASHST8:
    case PPC::HASHSTP:
    case PPC::HASHSTP8: {
      switch (OpNum) {
      case 2:
        // op: RA
        return 16;
      case 1:
        // op: D
        return 0;
      case 0:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::DCBTEP:
    case PPC::DCBTSTEP: {
      switch (OpNum) {
      case 2:
        // op: TH
        return 21;
      case 0:
        // op: RA
        return 16;
      case 1:
        // op: RB
        return 11;
      }
      break;
    }
    case PPC::EVSEL: {
      switch (OpNum) {
      case 3:
        // op: crD
        return 0;
      case 1:
        // op: RA
        return 16;
      case 2:
        // op: RB
        return 11;
      case 0:
        // op: RT
        return 21;
      }
      break;
    }
  }
  std::string msg;
  raw_string_ostream Msg(msg);
  Msg << "Not supported instr[opcode]: " << MI << "[" << OpNum << "]";
  report_fatal_error(Msg.str().c_str());
}

#endif // GET_OPERAND_BIT_OFFSET