llvm/lib/Target/ARM/ARMGenMCCodeEmitter.inc

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

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

#ifdef GET_OPERAND_BIT_OFFSET
#undef GET_OPERAND_BIT_OFFSET

uint32_t ARMMCCodeEmitter::getOperandBitOffset(const MCInst &MI,
    unsigned OpNum,
    const MCSubtargetInfo &STI) const {
  switch (MI.getOpcode()) {
    case ARM::CLREX:
    case ARM::MVE_LCTP:
    case ARM::MVE_VPNOT:
    case ARM::SB:
    case ARM::TRAP:
    case ARM::TRAPNaCl:
    case ARM::TSB:
    case ARM::VBSPd:
    case ARM::VBSPq:
    case ARM::VLD1LNq8Pseudo:
    case ARM::VLD1LNq8Pseudo_UPD:
    case ARM::VLD1LNq16Pseudo:
    case ARM::VLD1LNq16Pseudo_UPD:
    case ARM::VLD1LNq32Pseudo:
    case ARM::VLD1LNq32Pseudo_UPD:
    case ARM::VLD1d8QPseudo:
    case ARM::VLD1d8QPseudoWB_fixed:
    case ARM::VLD1d8QPseudoWB_register:
    case ARM::VLD1d8TPseudo:
    case ARM::VLD1d8TPseudoWB_fixed:
    case ARM::VLD1d8TPseudoWB_register:
    case ARM::VLD1d16QPseudo:
    case ARM::VLD1d16QPseudoWB_fixed:
    case ARM::VLD1d16QPseudoWB_register:
    case ARM::VLD1d16TPseudo:
    case ARM::VLD1d16TPseudoWB_fixed:
    case ARM::VLD1d16TPseudoWB_register:
    case ARM::VLD1d32QPseudo:
    case ARM::VLD1d32QPseudoWB_fixed:
    case ARM::VLD1d32QPseudoWB_register:
    case ARM::VLD1d32TPseudo:
    case ARM::VLD1d32TPseudoWB_fixed:
    case ARM::VLD1d32TPseudoWB_register:
    case ARM::VLD1d64QPseudo:
    case ARM::VLD1d64QPseudoWB_fixed:
    case ARM::VLD1d64QPseudoWB_register:
    case ARM::VLD1d64TPseudo:
    case ARM::VLD1d64TPseudoWB_fixed:
    case ARM::VLD1d64TPseudoWB_register:
    case ARM::VLD1q8HighQPseudo:
    case ARM::VLD1q8HighQPseudo_UPD:
    case ARM::VLD1q8HighTPseudo:
    case ARM::VLD1q8HighTPseudo_UPD:
    case ARM::VLD1q8LowQPseudo_UPD:
    case ARM::VLD1q8LowTPseudo_UPD:
    case ARM::VLD1q16HighQPseudo:
    case ARM::VLD1q16HighQPseudo_UPD:
    case ARM::VLD1q16HighTPseudo:
    case ARM::VLD1q16HighTPseudo_UPD:
    case ARM::VLD1q16LowQPseudo_UPD:
    case ARM::VLD1q16LowTPseudo_UPD:
    case ARM::VLD1q32HighQPseudo:
    case ARM::VLD1q32HighQPseudo_UPD:
    case ARM::VLD1q32HighTPseudo:
    case ARM::VLD1q32HighTPseudo_UPD:
    case ARM::VLD1q32LowQPseudo_UPD:
    case ARM::VLD1q32LowTPseudo_UPD:
    case ARM::VLD1q64HighQPseudo:
    case ARM::VLD1q64HighQPseudo_UPD:
    case ARM::VLD1q64HighTPseudo:
    case ARM::VLD1q64HighTPseudo_UPD:
    case ARM::VLD1q64LowQPseudo_UPD:
    case ARM::VLD1q64LowTPseudo_UPD:
    case ARM::VLD2DUPq8EvenPseudo:
    case ARM::VLD2DUPq8OddPseudo:
    case ARM::VLD2DUPq8OddPseudoWB_fixed:
    case ARM::VLD2DUPq8OddPseudoWB_register:
    case ARM::VLD2DUPq16EvenPseudo:
    case ARM::VLD2DUPq16OddPseudo:
    case ARM::VLD2DUPq16OddPseudoWB_fixed:
    case ARM::VLD2DUPq16OddPseudoWB_register:
    case ARM::VLD2DUPq32EvenPseudo:
    case ARM::VLD2DUPq32OddPseudo:
    case ARM::VLD2DUPq32OddPseudoWB_fixed:
    case ARM::VLD2DUPq32OddPseudoWB_register:
    case ARM::VLD2LNd8Pseudo:
    case ARM::VLD2LNd8Pseudo_UPD:
    case ARM::VLD2LNd16Pseudo:
    case ARM::VLD2LNd16Pseudo_UPD:
    case ARM::VLD2LNd32Pseudo:
    case ARM::VLD2LNd32Pseudo_UPD:
    case ARM::VLD2LNq16Pseudo:
    case ARM::VLD2LNq16Pseudo_UPD:
    case ARM::VLD2LNq32Pseudo:
    case ARM::VLD2LNq32Pseudo_UPD:
    case ARM::VLD2q8Pseudo:
    case ARM::VLD2q8PseudoWB_fixed:
    case ARM::VLD2q8PseudoWB_register:
    case ARM::VLD2q16Pseudo:
    case ARM::VLD2q16PseudoWB_fixed:
    case ARM::VLD2q16PseudoWB_register:
    case ARM::VLD2q32Pseudo:
    case ARM::VLD2q32PseudoWB_fixed:
    case ARM::VLD2q32PseudoWB_register:
    case ARM::VLD3DUPd8Pseudo:
    case ARM::VLD3DUPd8Pseudo_UPD:
    case ARM::VLD3DUPd16Pseudo:
    case ARM::VLD3DUPd16Pseudo_UPD:
    case ARM::VLD3DUPd32Pseudo:
    case ARM::VLD3DUPd32Pseudo_UPD:
    case ARM::VLD3DUPq8EvenPseudo:
    case ARM::VLD3DUPq8OddPseudo:
    case ARM::VLD3DUPq8OddPseudo_UPD:
    case ARM::VLD3DUPq16EvenPseudo:
    case ARM::VLD3DUPq16OddPseudo:
    case ARM::VLD3DUPq16OddPseudo_UPD:
    case ARM::VLD3DUPq32EvenPseudo:
    case ARM::VLD3DUPq32OddPseudo:
    case ARM::VLD3DUPq32OddPseudo_UPD:
    case ARM::VLD3LNd8Pseudo:
    case ARM::VLD3LNd8Pseudo_UPD:
    case ARM::VLD3LNd16Pseudo:
    case ARM::VLD3LNd16Pseudo_UPD:
    case ARM::VLD3LNd32Pseudo:
    case ARM::VLD3LNd32Pseudo_UPD:
    case ARM::VLD3LNq16Pseudo:
    case ARM::VLD3LNq16Pseudo_UPD:
    case ARM::VLD3LNq32Pseudo:
    case ARM::VLD3LNq32Pseudo_UPD:
    case ARM::VLD3d8Pseudo:
    case ARM::VLD3d8Pseudo_UPD:
    case ARM::VLD3d16Pseudo:
    case ARM::VLD3d16Pseudo_UPD:
    case ARM::VLD3d32Pseudo:
    case ARM::VLD3d32Pseudo_UPD:
    case ARM::VLD3q8Pseudo_UPD:
    case ARM::VLD3q8oddPseudo:
    case ARM::VLD3q8oddPseudo_UPD:
    case ARM::VLD3q16Pseudo_UPD:
    case ARM::VLD3q16oddPseudo:
    case ARM::VLD3q16oddPseudo_UPD:
    case ARM::VLD3q32Pseudo_UPD:
    case ARM::VLD3q32oddPseudo:
    case ARM::VLD3q32oddPseudo_UPD:
    case ARM::VLD4DUPd8Pseudo:
    case ARM::VLD4DUPd8Pseudo_UPD:
    case ARM::VLD4DUPd16Pseudo:
    case ARM::VLD4DUPd16Pseudo_UPD:
    case ARM::VLD4DUPd32Pseudo:
    case ARM::VLD4DUPd32Pseudo_UPD:
    case ARM::VLD4DUPq8EvenPseudo:
    case ARM::VLD4DUPq8OddPseudo:
    case ARM::VLD4DUPq8OddPseudo_UPD:
    case ARM::VLD4DUPq16EvenPseudo:
    case ARM::VLD4DUPq16OddPseudo:
    case ARM::VLD4DUPq16OddPseudo_UPD:
    case ARM::VLD4DUPq32EvenPseudo:
    case ARM::VLD4DUPq32OddPseudo:
    case ARM::VLD4DUPq32OddPseudo_UPD:
    case ARM::VLD4LNd8Pseudo:
    case ARM::VLD4LNd8Pseudo_UPD:
    case ARM::VLD4LNd16Pseudo:
    case ARM::VLD4LNd16Pseudo_UPD:
    case ARM::VLD4LNd32Pseudo:
    case ARM::VLD4LNd32Pseudo_UPD:
    case ARM::VLD4LNq16Pseudo:
    case ARM::VLD4LNq16Pseudo_UPD:
    case ARM::VLD4LNq32Pseudo:
    case ARM::VLD4LNq32Pseudo_UPD:
    case ARM::VLD4d8Pseudo:
    case ARM::VLD4d8Pseudo_UPD:
    case ARM::VLD4d16Pseudo:
    case ARM::VLD4d16Pseudo_UPD:
    case ARM::VLD4d32Pseudo:
    case ARM::VLD4d32Pseudo_UPD:
    case ARM::VLD4q8Pseudo_UPD:
    case ARM::VLD4q8oddPseudo:
    case ARM::VLD4q8oddPseudo_UPD:
    case ARM::VLD4q16Pseudo_UPD:
    case ARM::VLD4q16oddPseudo:
    case ARM::VLD4q16oddPseudo_UPD:
    case ARM::VLD4q32Pseudo_UPD:
    case ARM::VLD4q32oddPseudo:
    case ARM::VLD4q32oddPseudo_UPD:
    case ARM::VLDMQIA:
    case ARM::VST1LNq8Pseudo:
    case ARM::VST1LNq8Pseudo_UPD:
    case ARM::VST1LNq16Pseudo:
    case ARM::VST1LNq16Pseudo_UPD:
    case ARM::VST1LNq32Pseudo:
    case ARM::VST1LNq32Pseudo_UPD:
    case ARM::VST1d8QPseudo:
    case ARM::VST1d8QPseudoWB_fixed:
    case ARM::VST1d8QPseudoWB_register:
    case ARM::VST1d8TPseudo:
    case ARM::VST1d8TPseudoWB_fixed:
    case ARM::VST1d8TPseudoWB_register:
    case ARM::VST1d16QPseudo:
    case ARM::VST1d16QPseudoWB_fixed:
    case ARM::VST1d16QPseudoWB_register:
    case ARM::VST1d16TPseudo:
    case ARM::VST1d16TPseudoWB_fixed:
    case ARM::VST1d16TPseudoWB_register:
    case ARM::VST1d32QPseudo:
    case ARM::VST1d32QPseudoWB_fixed:
    case ARM::VST1d32QPseudoWB_register:
    case ARM::VST1d32TPseudo:
    case ARM::VST1d32TPseudoWB_fixed:
    case ARM::VST1d32TPseudoWB_register:
    case ARM::VST1d64QPseudo:
    case ARM::VST1d64QPseudoWB_fixed:
    case ARM::VST1d64QPseudoWB_register:
    case ARM::VST1d64TPseudo:
    case ARM::VST1d64TPseudoWB_fixed:
    case ARM::VST1d64TPseudoWB_register:
    case ARM::VST1q8HighQPseudo:
    case ARM::VST1q8HighQPseudo_UPD:
    case ARM::VST1q8HighTPseudo:
    case ARM::VST1q8HighTPseudo_UPD:
    case ARM::VST1q8LowQPseudo_UPD:
    case ARM::VST1q8LowTPseudo_UPD:
    case ARM::VST1q16HighQPseudo:
    case ARM::VST1q16HighQPseudo_UPD:
    case ARM::VST1q16HighTPseudo:
    case ARM::VST1q16HighTPseudo_UPD:
    case ARM::VST1q16LowQPseudo_UPD:
    case ARM::VST1q16LowTPseudo_UPD:
    case ARM::VST1q32HighQPseudo:
    case ARM::VST1q32HighQPseudo_UPD:
    case ARM::VST1q32HighTPseudo:
    case ARM::VST1q32HighTPseudo_UPD:
    case ARM::VST1q32LowQPseudo_UPD:
    case ARM::VST1q32LowTPseudo_UPD:
    case ARM::VST1q64HighQPseudo:
    case ARM::VST1q64HighQPseudo_UPD:
    case ARM::VST1q64HighTPseudo:
    case ARM::VST1q64HighTPseudo_UPD:
    case ARM::VST1q64LowQPseudo_UPD:
    case ARM::VST1q64LowTPseudo_UPD:
    case ARM::VST2LNd8Pseudo:
    case ARM::VST2LNd8Pseudo_UPD:
    case ARM::VST2LNd16Pseudo:
    case ARM::VST2LNd16Pseudo_UPD:
    case ARM::VST2LNd32Pseudo:
    case ARM::VST2LNd32Pseudo_UPD:
    case ARM::VST2LNq16Pseudo:
    case ARM::VST2LNq16Pseudo_UPD:
    case ARM::VST2LNq32Pseudo:
    case ARM::VST2LNq32Pseudo_UPD:
    case ARM::VST2q8Pseudo:
    case ARM::VST2q8PseudoWB_fixed:
    case ARM::VST2q8PseudoWB_register:
    case ARM::VST2q16Pseudo:
    case ARM::VST2q16PseudoWB_fixed:
    case ARM::VST2q16PseudoWB_register:
    case ARM::VST2q32Pseudo:
    case ARM::VST2q32PseudoWB_fixed:
    case ARM::VST2q32PseudoWB_register:
    case ARM::VST3LNd8Pseudo:
    case ARM::VST3LNd8Pseudo_UPD:
    case ARM::VST3LNd16Pseudo:
    case ARM::VST3LNd16Pseudo_UPD:
    case ARM::VST3LNd32Pseudo:
    case ARM::VST3LNd32Pseudo_UPD:
    case ARM::VST3LNq16Pseudo:
    case ARM::VST3LNq16Pseudo_UPD:
    case ARM::VST3LNq32Pseudo:
    case ARM::VST3LNq32Pseudo_UPD:
    case ARM::VST3d8Pseudo:
    case ARM::VST3d8Pseudo_UPD:
    case ARM::VST3d16Pseudo:
    case ARM::VST3d16Pseudo_UPD:
    case ARM::VST3d32Pseudo:
    case ARM::VST3d32Pseudo_UPD:
    case ARM::VST3q8Pseudo_UPD:
    case ARM::VST3q8oddPseudo:
    case ARM::VST3q8oddPseudo_UPD:
    case ARM::VST3q16Pseudo_UPD:
    case ARM::VST3q16oddPseudo:
    case ARM::VST3q16oddPseudo_UPD:
    case ARM::VST3q32Pseudo_UPD:
    case ARM::VST3q32oddPseudo:
    case ARM::VST3q32oddPseudo_UPD:
    case ARM::VST4LNd8Pseudo:
    case ARM::VST4LNd8Pseudo_UPD:
    case ARM::VST4LNd16Pseudo:
    case ARM::VST4LNd16Pseudo_UPD:
    case ARM::VST4LNd32Pseudo:
    case ARM::VST4LNd32Pseudo_UPD:
    case ARM::VST4LNq16Pseudo:
    case ARM::VST4LNq16Pseudo_UPD:
    case ARM::VST4LNq32Pseudo:
    case ARM::VST4LNq32Pseudo_UPD:
    case ARM::VST4d8Pseudo:
    case ARM::VST4d8Pseudo_UPD:
    case ARM::VST4d16Pseudo:
    case ARM::VST4d16Pseudo_UPD:
    case ARM::VST4d32Pseudo:
    case ARM::VST4d32Pseudo_UPD:
    case ARM::VST4q8Pseudo_UPD:
    case ARM::VST4q8oddPseudo:
    case ARM::VST4q8oddPseudo_UPD:
    case ARM::VST4q16Pseudo_UPD:
    case ARM::VST4q16oddPseudo:
    case ARM::VST4q16oddPseudo_UPD:
    case ARM::VST4q32Pseudo_UPD:
    case ARM::VST4q32oddPseudo:
    case ARM::VST4q32oddPseudo_UPD:
    case ARM::VSTMQIA:
    case ARM::VTBL3Pseudo:
    case ARM::VTBL4Pseudo:
    case ARM::VTBX3Pseudo:
    case ARM::VTBX4Pseudo:
    case ARM::t2AUT:
    case ARM::t2BTI:
    case ARM::t2CLREX:
    case ARM::t2DCPS1:
    case ARM::t2DCPS2:
    case ARM::t2DCPS3:
    case ARM::t2Int_eh_sjlj_setjmp:
    case ARM::t2Int_eh_sjlj_setjmp_nofp:
    case ARM::t2PAC:
    case ARM::t2PACBTI:
    case ARM::t2SB:
    case ARM::t2SG:
    case ARM::t2TSB:
    case ARM::tInt_WIN_eh_sjlj_longjmp:
    case ARM::tInt_eh_sjlj_longjmp:
    case ARM::tInt_eh_sjlj_setjmp:
    case ARM::tTRAP:
    case ARM::t__brkdiv0: {
      break;
    }
    case ARM::VRINTAD:
    case ARM::VRINTMD:
    case ARM::VRINTND:
    case ARM::VRINTPD: {
      switch (OpNum) {
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::VFP_VMAXNMD:
    case ARM::VFP_VMINNMD:
    case ARM::VSELEQD:
    case ARM::VSELGED:
    case ARM::VSELGTD:
    case ARM::VSELVSD: {
      switch (OpNum) {
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: Dn
        return 7;
      case 2:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::MVE_VPST: {
      switch (OpNum) {
      case 0:
        // op: Mk
        return 13;
      }
      break;
    }
    case ARM::MVE_VQRSHL_by_vecs8:
    case ARM::MVE_VQRSHL_by_vecs16:
    case ARM::MVE_VQRSHL_by_vecs32:
    case ARM::MVE_VQRSHL_by_vecu8:
    case ARM::MVE_VQRSHL_by_vecu16:
    case ARM::MVE_VQRSHL_by_vecu32:
    case ARM::MVE_VQSHL_by_vecs8:
    case ARM::MVE_VQSHL_by_vecs16:
    case ARM::MVE_VQSHL_by_vecs32:
    case ARM::MVE_VQSHL_by_vecu8:
    case ARM::MVE_VQSHL_by_vecu16:
    case ARM::MVE_VQSHL_by_vecu32:
    case ARM::MVE_VRSHL_by_vecs8:
    case ARM::MVE_VRSHL_by_vecs16:
    case ARM::MVE_VRSHL_by_vecs32:
    case ARM::MVE_VRSHL_by_vecu8:
    case ARM::MVE_VRSHL_by_vecu16:
    case ARM::MVE_VRSHL_by_vecu32:
    case ARM::MVE_VSHL_by_vecs8:
    case ARM::MVE_VSHL_by_vecs16:
    case ARM::MVE_VSHL_by_vecs32:
    case ARM::MVE_VSHL_by_vecu8:
    case ARM::MVE_VSHL_by_vecu16:
    case ARM::MVE_VSHL_by_vecu32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qm
        return 1;
      case 2:
        // op: Qn
        return 7;
      }
      break;
    }
    case ARM::MVE_VQSHLU_imms8:
    case ARM::MVE_VQSHLU_imms16:
    case ARM::MVE_VQSHLU_imms32:
    case ARM::MVE_VQSHLimms8:
    case ARM::MVE_VQSHLimms16:
    case ARM::MVE_VQSHLimms32:
    case ARM::MVE_VQSHLimmu8:
    case ARM::MVE_VQSHLimmu16:
    case ARM::MVE_VQSHLimmu32:
    case ARM::MVE_VRSHR_imms8:
    case ARM::MVE_VRSHR_imms16:
    case ARM::MVE_VRSHR_imms32:
    case ARM::MVE_VRSHR_immu8:
    case ARM::MVE_VRSHR_immu16:
    case ARM::MVE_VRSHR_immu32:
    case ARM::MVE_VSHLL_imms8bh:
    case ARM::MVE_VSHLL_imms8th:
    case ARM::MVE_VSHLL_imms16bh:
    case ARM::MVE_VSHLL_imms16th:
    case ARM::MVE_VSHLL_immu8bh:
    case ARM::MVE_VSHLL_immu8th:
    case ARM::MVE_VSHLL_immu16bh:
    case ARM::MVE_VSHLL_immu16th:
    case ARM::MVE_VSHL_immi8:
    case ARM::MVE_VSHL_immi16:
    case ARM::MVE_VSHL_immi32:
    case ARM::MVE_VSHR_imms8:
    case ARM::MVE_VSHR_imms16:
    case ARM::MVE_VSHR_imms32:
    case ARM::MVE_VSHR_immu8:
    case ARM::MVE_VSHR_immu16:
    case ARM::MVE_VSHR_immu32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qm
        return 1;
      case 2:
        // op: imm
        return 16;
      }
      break;
    }
    case ARM::MVE_VABSs8:
    case ARM::MVE_VABSs16:
    case ARM::MVE_VABSs32:
    case ARM::MVE_VCLSs8:
    case ARM::MVE_VCLSs16:
    case ARM::MVE_VCLSs32:
    case ARM::MVE_VCLZs8:
    case ARM::MVE_VCLZs16:
    case ARM::MVE_VCLZs32:
    case ARM::MVE_VCVTf32f16bh:
    case ARM::MVE_VCVTf32f16th:
    case ARM::MVE_VMOVLs8bh:
    case ARM::MVE_VMOVLs8th:
    case ARM::MVE_VMOVLs16bh:
    case ARM::MVE_VMOVLs16th:
    case ARM::MVE_VMOVLu8bh:
    case ARM::MVE_VMOVLu8th:
    case ARM::MVE_VMOVLu16bh:
    case ARM::MVE_VMOVLu16th:
    case ARM::MVE_VMVN:
    case ARM::MVE_VNEGs8:
    case ARM::MVE_VNEGs16:
    case ARM::MVE_VNEGs32:
    case ARM::MVE_VQABSs8:
    case ARM::MVE_VQABSs16:
    case ARM::MVE_VQABSs32:
    case ARM::MVE_VQNEGs8:
    case ARM::MVE_VQNEGs16:
    case ARM::MVE_VQNEGs32:
    case ARM::MVE_VREV16_8:
    case ARM::MVE_VREV32_8:
    case ARM::MVE_VREV32_16:
    case ARM::MVE_VREV64_8:
    case ARM::MVE_VREV64_16:
    case ARM::MVE_VREV64_32:
    case ARM::MVE_VSHLL_lws8bh:
    case ARM::MVE_VSHLL_lws8th:
    case ARM::MVE_VSHLL_lws16bh:
    case ARM::MVE_VSHLL_lws16th:
    case ARM::MVE_VSHLL_lwu8bh:
    case ARM::MVE_VSHLL_lwu8th:
    case ARM::MVE_VSHLL_lwu16bh:
    case ARM::MVE_VSHLL_lwu16th: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VABDs8:
    case ARM::MVE_VABDs16:
    case ARM::MVE_VABDs32:
    case ARM::MVE_VABDu8:
    case ARM::MVE_VABDu16:
    case ARM::MVE_VABDu32:
    case ARM::MVE_VADDi8:
    case ARM::MVE_VADDi16:
    case ARM::MVE_VADDi32:
    case ARM::MVE_VHADDs8:
    case ARM::MVE_VHADDs16:
    case ARM::MVE_VHADDs32:
    case ARM::MVE_VHADDu8:
    case ARM::MVE_VHADDu16:
    case ARM::MVE_VHADDu32:
    case ARM::MVE_VHSUBs8:
    case ARM::MVE_VHSUBs16:
    case ARM::MVE_VHSUBs32:
    case ARM::MVE_VHSUBu8:
    case ARM::MVE_VHSUBu16:
    case ARM::MVE_VHSUBu32:
    case ARM::MVE_VMAXNMf16:
    case ARM::MVE_VMAXNMf32:
    case ARM::MVE_VMAXs8:
    case ARM::MVE_VMAXs16:
    case ARM::MVE_VMAXs32:
    case ARM::MVE_VMAXu8:
    case ARM::MVE_VMAXu16:
    case ARM::MVE_VMAXu32:
    case ARM::MVE_VMINNMf16:
    case ARM::MVE_VMINNMf32:
    case ARM::MVE_VMINs8:
    case ARM::MVE_VMINs16:
    case ARM::MVE_VMINs32:
    case ARM::MVE_VMINu8:
    case ARM::MVE_VMINu16:
    case ARM::MVE_VMINu32:
    case ARM::MVE_VMULi8:
    case ARM::MVE_VMULi16:
    case ARM::MVE_VMULi32:
    case ARM::MVE_VQADDs8:
    case ARM::MVE_VQADDs16:
    case ARM::MVE_VQADDs32:
    case ARM::MVE_VQADDu8:
    case ARM::MVE_VQADDu16:
    case ARM::MVE_VQADDu32:
    case ARM::MVE_VQDMULHi8:
    case ARM::MVE_VQDMULHi16:
    case ARM::MVE_VQDMULHi32:
    case ARM::MVE_VQRDMULHi8:
    case ARM::MVE_VQRDMULHi16:
    case ARM::MVE_VQRDMULHi32:
    case ARM::MVE_VQSUBs8:
    case ARM::MVE_VQSUBs16:
    case ARM::MVE_VQSUBs32:
    case ARM::MVE_VQSUBu8:
    case ARM::MVE_VQSUBu16:
    case ARM::MVE_VQSUBu32:
    case ARM::MVE_VRHADDs8:
    case ARM::MVE_VRHADDs16:
    case ARM::MVE_VRHADDs32:
    case ARM::MVE_VRHADDu8:
    case ARM::MVE_VRHADDu16:
    case ARM::MVE_VRHADDu32:
    case ARM::MVE_VSUBi8:
    case ARM::MVE_VSUBi16:
    case ARM::MVE_VSUBi32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qn
        return 7;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VADD_qr_f16:
    case ARM::MVE_VADD_qr_f32:
    case ARM::MVE_VADD_qr_i8:
    case ARM::MVE_VADD_qr_i16:
    case ARM::MVE_VADD_qr_i32:
    case ARM::MVE_VBRSR8:
    case ARM::MVE_VBRSR16:
    case ARM::MVE_VBRSR32:
    case ARM::MVE_VHADD_qr_s8:
    case ARM::MVE_VHADD_qr_s16:
    case ARM::MVE_VHADD_qr_s32:
    case ARM::MVE_VHADD_qr_u8:
    case ARM::MVE_VHADD_qr_u16:
    case ARM::MVE_VHADD_qr_u32:
    case ARM::MVE_VHSUB_qr_s8:
    case ARM::MVE_VHSUB_qr_s16:
    case ARM::MVE_VHSUB_qr_s32:
    case ARM::MVE_VHSUB_qr_u8:
    case ARM::MVE_VHSUB_qr_u16:
    case ARM::MVE_VHSUB_qr_u32:
    case ARM::MVE_VMUL_qr_f16:
    case ARM::MVE_VMUL_qr_f32:
    case ARM::MVE_VMUL_qr_i8:
    case ARM::MVE_VMUL_qr_i16:
    case ARM::MVE_VMUL_qr_i32:
    case ARM::MVE_VQADD_qr_s8:
    case ARM::MVE_VQADD_qr_s16:
    case ARM::MVE_VQADD_qr_s32:
    case ARM::MVE_VQADD_qr_u8:
    case ARM::MVE_VQADD_qr_u16:
    case ARM::MVE_VQADD_qr_u32:
    case ARM::MVE_VQDMULH_qr_s8:
    case ARM::MVE_VQDMULH_qr_s16:
    case ARM::MVE_VQDMULH_qr_s32:
    case ARM::MVE_VQDMULL_qr_s16bh:
    case ARM::MVE_VQDMULL_qr_s16th:
    case ARM::MVE_VQDMULL_qr_s32bh:
    case ARM::MVE_VQDMULL_qr_s32th:
    case ARM::MVE_VQRDMULH_qr_s8:
    case ARM::MVE_VQRDMULH_qr_s16:
    case ARM::MVE_VQRDMULH_qr_s32:
    case ARM::MVE_VQSUB_qr_s8:
    case ARM::MVE_VQSUB_qr_s16:
    case ARM::MVE_VQSUB_qr_s32:
    case ARM::MVE_VQSUB_qr_u8:
    case ARM::MVE_VQSUB_qr_u16:
    case ARM::MVE_VQSUB_qr_u32:
    case ARM::MVE_VSUB_qr_f16:
    case ARM::MVE_VSUB_qr_f32:
    case ARM::MVE_VSUB_qr_i8:
    case ARM::MVE_VSUB_qr_i16:
    case ARM::MVE_VSUB_qr_i32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qn
        return 7;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VDDUPu8:
    case ARM::MVE_VDDUPu16:
    case ARM::MVE_VDDUPu32:
    case ARM::MVE_VIDUPu8:
    case ARM::MVE_VIDUPu16:
    case ARM::MVE_VIDUPu32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Rn
        return 17;
      case 3:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::MVE_VLDRBS16:
    case ARM::MVE_VLDRBS32:
    case ARM::MVE_VLDRBU8:
    case ARM::MVE_VLDRBU16:
    case ARM::MVE_VLDRBU32:
    case ARM::MVE_VLDRDU64_qi:
    case ARM::MVE_VLDRHS32:
    case ARM::MVE_VLDRHU16:
    case ARM::MVE_VLDRHU32:
    case ARM::MVE_VLDRWU32:
    case ARM::MVE_VLDRWU32_qi:
    case ARM::MVE_VSTRB16:
    case ARM::MVE_VSTRB32:
    case ARM::MVE_VSTRBU8:
    case ARM::MVE_VSTRD64_qi:
    case ARM::MVE_VSTRH32:
    case ARM::MVE_VSTRHU16:
    case ARM::MVE_VSTRW32_qi:
    case ARM::MVE_VSTRWU32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::MVE_VLDRBS16_rq:
    case ARM::MVE_VLDRBS32_rq:
    case ARM::MVE_VLDRBU8_rq:
    case ARM::MVE_VLDRBU16_rq:
    case ARM::MVE_VLDRBU32_rq:
    case ARM::MVE_VLDRDU64_rq:
    case ARM::MVE_VLDRDU64_rq_u:
    case ARM::MVE_VLDRHS32_rq:
    case ARM::MVE_VLDRHS32_rq_u:
    case ARM::MVE_VLDRHU16_rq:
    case ARM::MVE_VLDRHU16_rq_u:
    case ARM::MVE_VLDRHU32_rq:
    case ARM::MVE_VLDRHU32_rq_u:
    case ARM::MVE_VLDRWU32_rq:
    case ARM::MVE_VLDRWU32_rq_u:
    case ARM::MVE_VSTRB8_rq:
    case ARM::MVE_VSTRB16_rq:
    case ARM::MVE_VSTRB32_rq:
    case ARM::MVE_VSTRD64_rq:
    case ARM::MVE_VSTRD64_rq_u:
    case ARM::MVE_VSTRH16_rq:
    case ARM::MVE_VSTRH16_rq_u:
    case ARM::MVE_VSTRH32_rq:
    case ARM::MVE_VSTRH32_rq_u:
    case ARM::MVE_VSTRW32_rq:
    case ARM::MVE_VSTRW32_rq_u: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: addr
        return 1;
      }
      break;
    }
    case ARM::MVE_VCMULf16:
    case ARM::MVE_VCMULf32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      case 1:
        // op: Qn
        return 7;
      case 3:
        // op: rot
        return 0;
      }
      break;
    }
    case ARM::MVE_VCADDi8:
    case ARM::MVE_VCADDi16:
    case ARM::MVE_VCADDi32:
    case ARM::MVE_VHCADDs8:
    case ARM::MVE_VHCADDs16:
    case ARM::MVE_VHCADDs32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      case 1:
        // op: Qn
        return 7;
      case 3:
        // op: rot
        return 12;
      }
      break;
    }
    case ARM::MVE_VAND:
    case ARM::MVE_VBIC:
    case ARM::MVE_VEOR:
    case ARM::MVE_VMULHs8:
    case ARM::MVE_VMULHs16:
    case ARM::MVE_VMULHs32:
    case ARM::MVE_VMULHu8:
    case ARM::MVE_VMULHu16:
    case ARM::MVE_VMULHu32:
    case ARM::MVE_VMULLBp8:
    case ARM::MVE_VMULLBp16:
    case ARM::MVE_VMULLBs8:
    case ARM::MVE_VMULLBs16:
    case ARM::MVE_VMULLBs32:
    case ARM::MVE_VMULLBu8:
    case ARM::MVE_VMULLBu16:
    case ARM::MVE_VMULLBu32:
    case ARM::MVE_VMULLTp8:
    case ARM::MVE_VMULLTp16:
    case ARM::MVE_VMULLTs8:
    case ARM::MVE_VMULLTs16:
    case ARM::MVE_VMULLTs32:
    case ARM::MVE_VMULLTu8:
    case ARM::MVE_VMULLTu16:
    case ARM::MVE_VMULLTu32:
    case ARM::MVE_VORN:
    case ARM::MVE_VORR:
    case ARM::MVE_VQDMULLs16bh:
    case ARM::MVE_VQDMULLs16th:
    case ARM::MVE_VQDMULLs32bh:
    case ARM::MVE_VQDMULLs32th:
    case ARM::MVE_VRMULHs8:
    case ARM::MVE_VRMULHs16:
    case ARM::MVE_VRMULHs32:
    case ARM::MVE_VRMULHu8:
    case ARM::MVE_VRMULHu16:
    case ARM::MVE_VRMULHu32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      case 1:
        // op: Qn
        return 7;
      }
      break;
    }
    case ARM::MVE_VQRSHRNbhs16:
    case ARM::MVE_VQRSHRNbhs32:
    case ARM::MVE_VQRSHRNbhu16:
    case ARM::MVE_VQRSHRNbhu32:
    case ARM::MVE_VQRSHRNths16:
    case ARM::MVE_VQRSHRNths32:
    case ARM::MVE_VQRSHRNthu16:
    case ARM::MVE_VQRSHRNthu32:
    case ARM::MVE_VQRSHRUNs16bh:
    case ARM::MVE_VQRSHRUNs16th:
    case ARM::MVE_VQRSHRUNs32bh:
    case ARM::MVE_VQRSHRUNs32th:
    case ARM::MVE_VQSHRNbhs16:
    case ARM::MVE_VQSHRNbhs32:
    case ARM::MVE_VQSHRNbhu16:
    case ARM::MVE_VQSHRNbhu32:
    case ARM::MVE_VQSHRNths16:
    case ARM::MVE_VQSHRNths32:
    case ARM::MVE_VQSHRNthu16:
    case ARM::MVE_VQSHRNthu32:
    case ARM::MVE_VQSHRUNs16bh:
    case ARM::MVE_VQSHRUNs16th:
    case ARM::MVE_VQSHRUNs32bh:
    case ARM::MVE_VQSHRUNs32th:
    case ARM::MVE_VRSHRNi16bh:
    case ARM::MVE_VRSHRNi16th:
    case ARM::MVE_VRSHRNi32bh:
    case ARM::MVE_VRSHRNi32th:
    case ARM::MVE_VSHRNi16bh:
    case ARM::MVE_VSHRNi16th:
    case ARM::MVE_VSHRNi32bh:
    case ARM::MVE_VSHRNi32th:
    case ARM::MVE_VSLIimm8:
    case ARM::MVE_VSLIimm16:
    case ARM::MVE_VSLIimm32:
    case ARM::MVE_VSRIimm8:
    case ARM::MVE_VSRIimm16:
    case ARM::MVE_VSRIimm32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      case 3:
        // op: imm
        return 16;
      }
      break;
    }
    case ARM::MVE_VCVTf16f32bh:
    case ARM::MVE_VCVTf16f32th:
    case ARM::MVE_VMAXAs8:
    case ARM::MVE_VMAXAs16:
    case ARM::MVE_VMAXAs32:
    case ARM::MVE_VMAXNMAf16:
    case ARM::MVE_VMAXNMAf32:
    case ARM::MVE_VMINAs8:
    case ARM::MVE_VMINAs16:
    case ARM::MVE_VMINAs32:
    case ARM::MVE_VMINNMAf16:
    case ARM::MVE_VMINNMAf32:
    case ARM::MVE_VMOVNi16bh:
    case ARM::MVE_VMOVNi16th:
    case ARM::MVE_VMOVNi32bh:
    case ARM::MVE_VMOVNi32th:
    case ARM::MVE_VQMOVNs16bh:
    case ARM::MVE_VQMOVNs16th:
    case ARM::MVE_VQMOVNs32bh:
    case ARM::MVE_VQMOVNs32th:
    case ARM::MVE_VQMOVNu16bh:
    case ARM::MVE_VQMOVNu16th:
    case ARM::MVE_VQMOVNu32bh:
    case ARM::MVE_VQMOVNu32th:
    case ARM::MVE_VQMOVUNs16bh:
    case ARM::MVE_VQMOVUNs16th:
    case ARM::MVE_VQMOVUNs32bh:
    case ARM::MVE_VQMOVUNs32th: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VFMA_qr_Sf16:
    case ARM::MVE_VFMA_qr_Sf32:
    case ARM::MVE_VFMA_qr_f16:
    case ARM::MVE_VFMA_qr_f32:
    case ARM::MVE_VMLAS_qr_i8:
    case ARM::MVE_VMLAS_qr_i16:
    case ARM::MVE_VMLAS_qr_i32:
    case ARM::MVE_VMLA_qr_i8:
    case ARM::MVE_VMLA_qr_i16:
    case ARM::MVE_VMLA_qr_i32:
    case ARM::MVE_VQDMLAH_qrs8:
    case ARM::MVE_VQDMLAH_qrs16:
    case ARM::MVE_VQDMLAH_qrs32:
    case ARM::MVE_VQDMLASH_qrs8:
    case ARM::MVE_VQDMLASH_qrs16:
    case ARM::MVE_VQDMLASH_qrs32:
    case ARM::MVE_VQRDMLAH_qrs8:
    case ARM::MVE_VQRDMLAH_qrs16:
    case ARM::MVE_VQRDMLAH_qrs32:
    case ARM::MVE_VQRDMLASH_qrs8:
    case ARM::MVE_VQRDMLASH_qrs16:
    case ARM::MVE_VQRDMLASH_qrs32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qn
        return 7;
      case 3:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VQRSHL_qrs8:
    case ARM::MVE_VQRSHL_qrs16:
    case ARM::MVE_VQRSHL_qrs32:
    case ARM::MVE_VQRSHL_qru8:
    case ARM::MVE_VQRSHL_qru16:
    case ARM::MVE_VQRSHL_qru32:
    case ARM::MVE_VQSHL_qrs8:
    case ARM::MVE_VQSHL_qrs16:
    case ARM::MVE_VQSHL_qrs32:
    case ARM::MVE_VQSHL_qru8:
    case ARM::MVE_VQSHL_qru16:
    case ARM::MVE_VQSHL_qru32:
    case ARM::MVE_VRSHL_qrs8:
    case ARM::MVE_VRSHL_qrs16:
    case ARM::MVE_VRSHL_qrs32:
    case ARM::MVE_VRSHL_qru8:
    case ARM::MVE_VRSHL_qru16:
    case ARM::MVE_VRSHL_qru32:
    case ARM::MVE_VSHL_qrs8:
    case ARM::MVE_VSHL_qrs16:
    case ARM::MVE_VSHL_qrs32:
    case ARM::MVE_VSHL_qru8:
    case ARM::MVE_VSHL_qru16:
    case ARM::MVE_VSHL_qru32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VADC:
    case ARM::MVE_VADCI:
    case ARM::MVE_VQDMLADHXs8:
    case ARM::MVE_VQDMLADHXs16:
    case ARM::MVE_VQDMLADHXs32:
    case ARM::MVE_VQDMLADHs8:
    case ARM::MVE_VQDMLADHs16:
    case ARM::MVE_VQDMLADHs32:
    case ARM::MVE_VQDMLSDHXs8:
    case ARM::MVE_VQDMLSDHXs16:
    case ARM::MVE_VQDMLSDHXs32:
    case ARM::MVE_VQDMLSDHs8:
    case ARM::MVE_VQDMLSDHs16:
    case ARM::MVE_VQDMLSDHs32:
    case ARM::MVE_VQRDMLADHXs8:
    case ARM::MVE_VQRDMLADHXs16:
    case ARM::MVE_VQRDMLADHXs32:
    case ARM::MVE_VQRDMLADHs8:
    case ARM::MVE_VQRDMLADHs16:
    case ARM::MVE_VQRDMLADHs32:
    case ARM::MVE_VQRDMLSDHXs8:
    case ARM::MVE_VQRDMLSDHXs16:
    case ARM::MVE_VQRDMLSDHXs32:
    case ARM::MVE_VQRDMLSDHs8:
    case ARM::MVE_VQRDMLSDHs16:
    case ARM::MVE_VQRDMLSDHs32:
    case ARM::MVE_VSBC:
    case ARM::MVE_VSBCI: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 3:
        // op: Qm
        return 1;
      case 2:
        // op: Qn
        return 7;
      }
      break;
    }
    case ARM::MVE_VDWDUPu8:
    case ARM::MVE_VDWDUPu16:
    case ARM::MVE_VDWDUPu32:
    case ARM::MVE_VIWDUPu8:
    case ARM::MVE_VIWDUPu16:
    case ARM::MVE_VIWDUPu32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 13;
      case 3:
        // op: Rm
        return 1;
      case 1:
        // op: Rn
        return 17;
      case 4:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::MVE_VDUP8:
    case ARM::MVE_VDUP16:
    case ARM::MVE_VDUP32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 7;
      case 1:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::MVE_VMOV_to_lane_32: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 7;
      case 2:
        // op: Rt
        return 12;
      case 3:
        // op: Idx
        return 16;
      }
      break;
    }
    case ARM::MVE_VMOV_to_lane_8: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 7;
      case 2:
        // op: Rt
        return 12;
      case 3:
        // op: Idx
        return 5;
      }
      break;
    }
    case ARM::MVE_VMOV_to_lane_16: {
      switch (OpNum) {
      case 0:
        // op: Qd
        return 7;
      case 2:
        // op: Rt
        return 12;
      case 3:
        // op: Idx
        return 6;
      }
      break;
    }
    case ARM::tMOVSr:
    case ARM::tMOVr: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 1:
        // op: Rm
        return 3;
      }
      break;
    }
    case ARM::t2STLEX: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::tADDi3:
    case ARM::tSUBi3: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 2:
        // op: Rm
        return 3;
      case 3:
        // op: imm3
        return 6;
      }
      break;
    }
    case ARM::tASRri:
    case ARM::tLSLri:
    case ARM::tLSRri: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 2:
        // op: Rm
        return 3;
      case 3:
        // op: imm5
        return 6;
      }
      break;
    }
    case ARM::tMUL:
    case ARM::tMVN:
    case ARM::tRSB: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 2:
        // op: Rn
        return 3;
      }
      break;
    }
    case ARM::t2STLEXB:
    case ARM::t2STLEXH:
    case ARM::t2STREXB:
    case ARM::t2STREXH: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 2:
        // op: addr
        return 16;
      case 1:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::t2STLEXD:
    case ARM::t2STREXD: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 0;
      case 3:
        // op: addr
        return 16;
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: Rt2
        return 8;
      }
      break;
    }
    case ARM::CRC32B:
    case ARM::CRC32CB:
    case ARM::CRC32CH:
    case ARM::CRC32CW:
    case ARM::CRC32H:
    case ARM::CRC32W: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2SXTB:
    case ARM::t2SXTB16:
    case ARM::t2SXTH:
    case ARM::t2UXTB:
    case ARM::t2UXTB16:
    case ARM::t2UXTH: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rm
        return 0;
      case 2:
        // op: rot
        return 4;
      }
      break;
    }
    case ARM::t2CLZ:
    case ARM::t2MOVsra_glue:
    case ARM::t2MOVsrl_glue:
    case ARM::t2RBIT:
    case ARM::t2REV:
    case ARM::t2REV16:
    case ARM::t2REVSH: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2MLA:
    case ARM::t2MLS:
    case ARM::t2SMLABB:
    case ARM::t2SMLABT:
    case ARM::t2SMLAD:
    case ARM::t2SMLADX:
    case ARM::t2SMLATB:
    case ARM::t2SMLATT:
    case ARM::t2SMLAWB:
    case ARM::t2SMLAWT:
    case ARM::t2SMLSD:
    case ARM::t2SMLSDX:
    case ARM::t2SMMLA:
    case ARM::t2SMMLAR:
    case ARM::t2SMMLS:
    case ARM::t2SMMLSR:
    case ARM::t2USADA8: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      case 3:
        // op: Ra
        return 12;
      }
      break;
    }
    case ARM::t2SXTAB:
    case ARM::t2SXTAB16:
    case ARM::t2SXTAH:
    case ARM::t2UXTAB:
    case ARM::t2UXTAB16:
    case ARM::t2UXTAH: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      case 3:
        // op: rot
        return 4;
      }
      break;
    }
    case ARM::t2PKHBT:
    case ARM::t2PKHTB: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      case 3:
        // op: sh
        return 6;
      }
      break;
    }
    case ARM::t2CRC32B:
    case ARM::t2CRC32CB:
    case ARM::t2CRC32CH:
    case ARM::t2CRC32CW:
    case ARM::t2CRC32H:
    case ARM::t2CRC32W:
    case ARM::t2MUL:
    case ARM::t2QADD8:
    case ARM::t2QADD16:
    case ARM::t2QASX:
    case ARM::t2QSAX:
    case ARM::t2QSUB8:
    case ARM::t2QSUB16:
    case ARM::t2SADD8:
    case ARM::t2SADD16:
    case ARM::t2SASX:
    case ARM::t2SDIV:
    case ARM::t2SEL:
    case ARM::t2SHADD8:
    case ARM::t2SHADD16:
    case ARM::t2SHASX:
    case ARM::t2SHSAX:
    case ARM::t2SHSUB8:
    case ARM::t2SHSUB16:
    case ARM::t2SMMUL:
    case ARM::t2SMMULR:
    case ARM::t2SMUAD:
    case ARM::t2SMUADX:
    case ARM::t2SMULBB:
    case ARM::t2SMULBT:
    case ARM::t2SMULTB:
    case ARM::t2SMULTT:
    case ARM::t2SMULWB:
    case ARM::t2SMULWT:
    case ARM::t2SMUSD:
    case ARM::t2SMUSDX:
    case ARM::t2SSAX:
    case ARM::t2SSUB8:
    case ARM::t2SSUB16:
    case ARM::t2UADD8:
    case ARM::t2UADD16:
    case ARM::t2UASX:
    case ARM::t2UDIV:
    case ARM::t2UHADD8:
    case ARM::t2UHADD16:
    case ARM::t2UHASX:
    case ARM::t2UHSAX:
    case ARM::t2UHSUB8:
    case ARM::t2UHSUB16:
    case ARM::t2UQADD8:
    case ARM::t2UQADD16:
    case ARM::t2UQASX:
    case ARM::t2UQSAX:
    case ARM::t2UQSUB8:
    case ARM::t2UQSUB16:
    case ARM::t2USAD8:
    case ARM::t2USAX:
    case ARM::t2USUB8:
    case ARM::t2USUB16: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2ADDri12:
    case ARM::t2SUBri12: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2STREX: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2MRS_M: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: SYSm
        return 0;
      }
      break;
    }
    case ARM::t2ADR:
    case ARM::tADR: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2MOVi16: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2CSEL:
    case ARM::t2CSINC:
    case ARM::t2CSINV:
    case ARM::t2CSNEG: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: Rm
        return 0;
      case 1:
        // op: Rn
        return 16;
      case 3:
        // op: fcond
        return 4;
      }
      break;
    }
    case ARM::t2QADD:
    case ARM::t2QDADD:
    case ARM::t2QDSUB:
    case ARM::t2QSUB: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: Rn
        return 16;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2SSAT:
    case ARM::t2USAT: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: Rn
        return 16;
      case 1:
        // op: sat_imm
        return 0;
      case 3:
        // op: sh
        return 6;
      }
      break;
    }
    case ARM::t2SSAT16:
    case ARM::t2USAT16: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: Rn
        return 16;
      case 1:
        // op: sat_imm
        return 0;
      }
      break;
    }
    case ARM::t2BFI: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: Rn
        return 16;
      case 3:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2BFC:
    case ARM::t2MOVTi16: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::tMOVi8: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 2:
        // op: imm8
        return 0;
      }
      break;
    }
    case ARM::t2PACG: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 3:
        // op: Rn
        return 16;
      case 4:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2SBFX:
    case ARM::t2UBFX: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      case 3:
        // op: msb
        return 0;
      case 2:
        // op: lsb
        return 6;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::t2MRS_AR:
    case ARM::t2MRSsys_AR: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 8;
      }
      break;
    }
    case ARM::t2SMLAL:
    case ARM::t2SMLALBB:
    case ARM::t2SMLALBT:
    case ARM::t2SMLALTB:
    case ARM::t2SMLALTT:
    case ARM::t2SMULL:
    case ARM::t2UMAAL:
    case ARM::t2UMLAL:
    case ARM::t2UMULL: {
      switch (OpNum) {
      case 0:
        // op: RdLo
        return 12;
      case 1:
        // op: RdHi
        return 8;
      case 2:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VMLADAVs8:
    case ARM::MVE_VMLADAVs16:
    case ARM::MVE_VMLADAVs32:
    case ARM::MVE_VMLADAVu8:
    case ARM::MVE_VMLADAVu16:
    case ARM::MVE_VMLADAVu32:
    case ARM::MVE_VMLADAVxs8:
    case ARM::MVE_VMLADAVxs16:
    case ARM::MVE_VMLADAVxs32:
    case ARM::MVE_VMLSDAVs8:
    case ARM::MVE_VMLSDAVs16:
    case ARM::MVE_VMLSDAVs32:
    case ARM::MVE_VMLSDAVxs8:
    case ARM::MVE_VMLSDAVxs16:
    case ARM::MVE_VMLSDAVxs32: {
      switch (OpNum) {
      case 0:
        // op: RdaDest
        return 13;
      case 2:
        // op: Qm
        return 1;
      case 1:
        // op: Qn
        return 17;
      }
      break;
    }
    case ARM::MVE_VMLADAVas8:
    case ARM::MVE_VMLADAVas16:
    case ARM::MVE_VMLADAVas32:
    case ARM::MVE_VMLADAVau8:
    case ARM::MVE_VMLADAVau16:
    case ARM::MVE_VMLADAVau32:
    case ARM::MVE_VMLADAVaxs8:
    case ARM::MVE_VMLADAVaxs16:
    case ARM::MVE_VMLADAVaxs32:
    case ARM::MVE_VMLSDAVas8:
    case ARM::MVE_VMLSDAVas16:
    case ARM::MVE_VMLSDAVas32:
    case ARM::MVE_VMLSDAVaxs8:
    case ARM::MVE_VMLSDAVaxs16:
    case ARM::MVE_VMLSDAVaxs32: {
      switch (OpNum) {
      case 0:
        // op: RdaDest
        return 13;
      case 3:
        // op: Qm
        return 1;
      case 2:
        // op: Qn
        return 17;
      }
      break;
    }
    case ARM::MVE_SQRSHR:
    case ARM::MVE_UQRSHL: {
      switch (OpNum) {
      case 0:
        // op: RdaDest
        return 16;
      case 2:
        // op: Rm
        return 12;
      }
      break;
    }
    case ARM::MVE_SQSHL:
    case ARM::MVE_SRSHR:
    case ARM::MVE_UQSHL:
    case ARM::MVE_URSHR: {
      switch (OpNum) {
      case 0:
        // op: RdaDest
        return 16;
      case 2:
        // op: imm
        return 6;
      }
      break;
    }
    case ARM::MVE_SQRSHRL:
    case ARM::MVE_UQRSHLL: {
      switch (OpNum) {
      case 0:
        // op: RdaLo
        return 17;
      case 1:
        // op: RdaHi
        return 9;
      case 4:
        // op: Rm
        return 12;
      case 5:
        // op: sat
        return 7;
      }
      break;
    }
    case ARM::MVE_ASRLr:
    case ARM::MVE_LSLLr: {
      switch (OpNum) {
      case 0:
        // op: RdaLo
        return 17;
      case 1:
        // op: RdaHi
        return 9;
      case 4:
        // op: Rm
        return 12;
      }
      break;
    }
    case ARM::MVE_ASRLi:
    case ARM::MVE_LSLLi:
    case ARM::MVE_LSRL:
    case ARM::MVE_SQSHLL:
    case ARM::MVE_SRSHRL:
    case ARM::MVE_UQSHLL:
    case ARM::MVE_URSHRL: {
      switch (OpNum) {
      case 0:
        // op: RdaLo
        return 17;
      case 1:
        // op: RdaHi
        return 9;
      case 4:
        // op: imm
        return 6;
      }
      break;
    }
    case ARM::MVE_VMLALDAVs16:
    case ARM::MVE_VMLALDAVs32:
    case ARM::MVE_VMLALDAVu16:
    case ARM::MVE_VMLALDAVu32:
    case ARM::MVE_VMLALDAVxs16:
    case ARM::MVE_VMLALDAVxs32:
    case ARM::MVE_VMLSLDAVs16:
    case ARM::MVE_VMLSLDAVs32:
    case ARM::MVE_VMLSLDAVxs16:
    case ARM::MVE_VMLSLDAVxs32:
    case ARM::MVE_VRMLALDAVHs32:
    case ARM::MVE_VRMLALDAVHu32:
    case ARM::MVE_VRMLALDAVHxs32:
    case ARM::MVE_VRMLSLDAVHs32:
    case ARM::MVE_VRMLSLDAVHxs32: {
      switch (OpNum) {
      case 0:
        // op: RdaLoDest
        return 13;
      case 1:
        // op: RdaHiDest
        return 20;
      case 3:
        // op: Qm
        return 1;
      case 2:
        // op: Qn
        return 17;
      }
      break;
    }
    case ARM::MVE_VMLALDAVas16:
    case ARM::MVE_VMLALDAVas32:
    case ARM::MVE_VMLALDAVau16:
    case ARM::MVE_VMLALDAVau32:
    case ARM::MVE_VMLALDAVaxs16:
    case ARM::MVE_VMLALDAVaxs32:
    case ARM::MVE_VMLSLDAVas16:
    case ARM::MVE_VMLSLDAVas32:
    case ARM::MVE_VMLSLDAVaxs16:
    case ARM::MVE_VMLSLDAVaxs32:
    case ARM::MVE_VRMLALDAVHas32:
    case ARM::MVE_VRMLALDAVHau32:
    case ARM::MVE_VRMLALDAVHaxs32:
    case ARM::MVE_VRMLSLDAVHas32:
    case ARM::MVE_VRMLSLDAVHaxs32: {
      switch (OpNum) {
      case 0:
        // op: RdaLoDest
        return 13;
      case 1:
        // op: RdaHiDest
        return 20;
      case 5:
        // op: Qm
        return 1;
      case 4:
        // op: Qn
        return 17;
      }
      break;
    }
    case ARM::tADDhirr: {
      switch (OpNum) {
      case 0:
        // op: Rdn
        return 0;
      case 2:
        // op: Rm
        return 3;
      }
      break;
    }
    case ARM::tADC:
    case ARM::tAND:
    case ARM::tASRrr:
    case ARM::tBIC:
    case ARM::tEOR:
    case ARM::tLSLrr:
    case ARM::tLSRrr:
    case ARM::tORR:
    case ARM::tROR:
    case ARM::tSBC: {
      switch (OpNum) {
      case 0:
        // op: Rdn
        return 0;
      case 3:
        // op: Rm
        return 3;
      }
      break;
    }
    case ARM::tADDrSP: {
      switch (OpNum) {
      case 0:
        // op: Rdn
        return 0;
      }
      break;
    }
    case ARM::tADDi8:
    case ARM::tSUBi8: {
      switch (OpNum) {
      case 0:
        // op: Rdn
        return 8;
      case 3:
        // op: imm8
        return 0;
      }
      break;
    }
    case ARM::tBX:
    case ARM::tBXNS: {
      switch (OpNum) {
      case 0:
        // op: Rm
        return 3;
      }
      break;
    }
    case ARM::t2CMNzrr:
    case ARM::t2CMPrr:
    case ARM::t2TBB:
    case ARM::t2TBH:
    case ARM::t2TEQrr:
    case ARM::t2TSTrr: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2CMNzrs:
    case ARM::t2CMPrs:
    case ARM::t2TEQrs:
    case ARM::t2TSTrs: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: ShiftedRm
        return 0;
      }
      break;
    }
    case ARM::t2CMNri:
    case ARM::t2CMPri:
    case ARM::t2TEQri:
    case ARM::t2TSTri: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2LDMDB:
    case ARM::t2LDMIA:
    case ARM::t2STMDB:
    case ARM::t2STMIA: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 16;
      case 3:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::RFEDA:
    case ARM::RFEDA_UPD:
    case ARM::RFEDB:
    case ARM::RFEDB_UPD:
    case ARM::RFEIA:
    case ARM::RFEIA_UPD:
    case ARM::RFEIB:
    case ARM::RFEIB_UPD:
    case ARM::VLLDM:
    case ARM::VLLDM_T2:
    case ARM::VLSTM:
    case ARM::VLSTM_T2:
    case ARM::t2RFEDB:
    case ARM::t2RFEDBW:
    case ARM::t2RFEIA:
    case ARM::t2RFEIAW: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::tCMPi8: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 8;
      case 1:
        // op: imm8
        return 0;
      }
      break;
    }
    case ARM::tLDMIA: {
      switch (OpNum) {
      case 0:
        // op: Rn
        return 8;
      case 3:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::MVE_VMOV_rr_q: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 0;
      case 1:
        // op: Rt2
        return 16;
      case 2:
        // op: Qd
        return 13;
      case 4:
        // op: idx2
        return 4;
      }
      break;
    }
    case ARM::tLDRBi:
    case ARM::tLDRBr:
    case ARM::tLDRHi:
    case ARM::tLDRHr:
    case ARM::tLDRSB:
    case ARM::tLDRSH:
    case ARM::tLDRi:
    case ARM::tLDRr:
    case ARM::tSTRBi:
    case ARM::tSTRBr:
    case ARM::tSTRHi:
    case ARM::tSTRHr:
    case ARM::tSTRi:
    case ARM::tSTRr: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 0;
      case 1:
        // op: addr
        return 3;
      }
      break;
    }
    case ARM::MRRC2:
    case ARM::t2MRRC:
    case ARM::t2MRRC2: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 16;
      case 2:
        // op: cop
        return 8;
      case 3:
        // op: opc1
        return 4;
      case 4:
        // op: CRm
        return 0;
      }
      break;
    }
    case ARM::t2LDRDi8:
    case ARM::t2STRDi8: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 8;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2LDRD_PRE: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 8;
      case 3:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2LDRD_POST: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 8;
      case 3:
        // op: addr
        return 16;
      case 4:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2LDRBT:
    case ARM::t2LDRBi8:
    case ARM::t2LDRBi12:
    case ARM::t2LDRBpci:
    case ARM::t2LDRBs:
    case ARM::t2LDREX:
    case ARM::t2LDRHT:
    case ARM::t2LDRHi8:
    case ARM::t2LDRHi12:
    case ARM::t2LDRHpci:
    case ARM::t2LDRHs:
    case ARM::t2LDRSBT:
    case ARM::t2LDRSBi8:
    case ARM::t2LDRSBi12:
    case ARM::t2LDRSBpci:
    case ARM::t2LDRSBs:
    case ARM::t2LDRSHT:
    case ARM::t2LDRSHi8:
    case ARM::t2LDRSHi12:
    case ARM::t2LDRSHpci:
    case ARM::t2LDRSHs:
    case ARM::t2LDRT:
    case ARM::t2LDRi8:
    case ARM::t2LDRi12:
    case ARM::t2LDRpci:
    case ARM::t2LDRs:
    case ARM::t2STRBT:
    case ARM::t2STRBi8:
    case ARM::t2STRBi12:
    case ARM::t2STRBs:
    case ARM::t2STRHT:
    case ARM::t2STRHi8:
    case ARM::t2STRHi12:
    case ARM::t2STRHs:
    case ARM::t2STRT:
    case ARM::t2STRi8:
    case ARM::t2STRi12:
    case ARM::t2STRs: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2LDA:
    case ARM::t2LDAB:
    case ARM::t2LDAEX:
    case ARM::t2LDAH:
    case ARM::t2STL:
    case ARM::t2STLB:
    case ARM::t2STLH: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::MRC2:
    case ARM::t2MRC:
    case ARM::t2MRC2: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: cop
        return 8;
      case 2:
        // op: opc1
        return 21;
      case 5:
        // op: opc2
        return 5;
      case 4:
        // op: CRm
        return 0;
      case 3:
        // op: CRn
        return 16;
      }
      break;
    }
    case ARM::t2LDRB_POST:
    case ARM::t2LDRH_POST:
    case ARM::t2LDRSB_POST:
    case ARM::t2LDRSH_POST:
    case ARM::t2LDR_POST: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: Rn
        return 16;
      case 3:
        // op: offset
        return 0;
      }
      break;
    }
    case ARM::t2LDRB_PRE:
    case ARM::t2LDRH_PRE:
    case ARM::t2LDRSB_PRE:
    case ARM::t2LDRSH_PRE:
    case ARM::t2LDR_PRE: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::tLDRpci:
    case ARM::tLDRspi:
    case ARM::tSTRspi: {
      switch (OpNum) {
      case 0:
        // op: Rt
        return 8;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2MSR_M: {
      switch (OpNum) {
      case 0:
        // op: SYSm
        return 0;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::VCVTASD:
    case ARM::VCVTAUD:
    case ARM::VCVTMSD:
    case ARM::VCVTMUD:
    case ARM::VCVTNSD:
    case ARM::VCVTNUD:
    case ARM::VCVTPSD:
    case ARM::VCVTPUD: {
      switch (OpNum) {
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::VCVTASH:
    case ARM::VCVTASS:
    case ARM::VCVTAUH:
    case ARM::VCVTAUS:
    case ARM::VCVTMSH:
    case ARM::VCVTMSS:
    case ARM::VCVTMUH:
    case ARM::VCVTMUS:
    case ARM::VCVTNSH:
    case ARM::VCVTNSS:
    case ARM::VCVTNUH:
    case ARM::VCVTNUS:
    case ARM::VCVTPSH:
    case ARM::VCVTPSS:
    case ARM::VCVTPUH:
    case ARM::VCVTPUS:
    case ARM::VMOVH:
    case ARM::VRINTAH:
    case ARM::VRINTAS:
    case ARM::VRINTMH:
    case ARM::VRINTMS:
    case ARM::VRINTNH:
    case ARM::VRINTNS:
    case ARM::VRINTPH:
    case ARM::VRINTPS: {
      switch (OpNum) {
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::VFP_VMAXNMH:
    case ARM::VFP_VMAXNMS:
    case ARM::VFP_VMINNMH:
    case ARM::VFP_VMINNMS:
    case ARM::VSELEQH:
    case ARM::VSELEQS:
    case ARM::VSELGEH:
    case ARM::VSELGES:
    case ARM::VSELGTH:
    case ARM::VSELGTS:
    case ARM::VSELVSH:
    case ARM::VSELVSS: {
      switch (OpNum) {
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: Sn
        return 7;
      case 2:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::VINSH: {
      switch (OpNum) {
      case 0:
        // op: Sd
        return 12;
      case 2:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::VDUP8d:
    case ARM::VDUP8q:
    case ARM::VDUP16d:
    case ARM::VDUP16q:
    case ARM::VDUP32d:
    case ARM::VDUP32q: {
      switch (OpNum) {
      case 0:
        // op: V
        return 7;
      case 1:
        // op: R
        return 12;
      case 2:
        // op: p
        return 28;
      }
      break;
    }
    case ARM::VSETLNi32: {
      switch (OpNum) {
      case 0:
        // op: V
        return 7;
      case 2:
        // op: R
        return 12;
      case 4:
        // op: p
        return 28;
      case 3:
        // op: lane
        return 21;
      }
      break;
    }
    case ARM::VSETLNi8: {
      switch (OpNum) {
      case 0:
        // op: V
        return 7;
      case 2:
        // op: R
        return 12;
      case 4:
        // op: p
        return 28;
      case 3:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VSETLNi16: {
      switch (OpNum) {
      case 0:
        // op: V
        return 7;
      case 2:
        // op: R
        return 12;
      case 4:
        // op: p
        return 28;
      case 3:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::MVE_VST20_8:
    case ARM::MVE_VST20_16:
    case ARM::MVE_VST20_32:
    case ARM::MVE_VST21_8:
    case ARM::MVE_VST21_16:
    case ARM::MVE_VST21_32:
    case ARM::MVE_VST40_8:
    case ARM::MVE_VST40_16:
    case ARM::MVE_VST40_32:
    case ARM::MVE_VST41_8:
    case ARM::MVE_VST41_16:
    case ARM::MVE_VST41_32:
    case ARM::MVE_VST42_8:
    case ARM::MVE_VST42_16:
    case ARM::MVE_VST42_32:
    case ARM::MVE_VST43_8:
    case ARM::MVE_VST43_16:
    case ARM::MVE_VST43_32: {
      switch (OpNum) {
      case 0:
        // op: VQd
        return 13;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::MVE_VLD20_8:
    case ARM::MVE_VLD20_16:
    case ARM::MVE_VLD20_32:
    case ARM::MVE_VLD21_8:
    case ARM::MVE_VLD21_16:
    case ARM::MVE_VLD21_32:
    case ARM::MVE_VLD40_8:
    case ARM::MVE_VLD40_16:
    case ARM::MVE_VLD40_32:
    case ARM::MVE_VLD41_8:
    case ARM::MVE_VLD41_16:
    case ARM::MVE_VLD41_32:
    case ARM::MVE_VLD42_8:
    case ARM::MVE_VLD42_16:
    case ARM::MVE_VLD42_32:
    case ARM::MVE_VLD43_8:
    case ARM::MVE_VLD43_16:
    case ARM::MVE_VLD43_32: {
      switch (OpNum) {
      case 0:
        // op: VQd
        return 13;
      case 2:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::MVE_VLD20_8_wb:
    case ARM::MVE_VLD20_16_wb:
    case ARM::MVE_VLD20_32_wb:
    case ARM::MVE_VLD21_8_wb:
    case ARM::MVE_VLD21_16_wb:
    case ARM::MVE_VLD21_32_wb:
    case ARM::MVE_VLD40_8_wb:
    case ARM::MVE_VLD40_16_wb:
    case ARM::MVE_VLD40_32_wb:
    case ARM::MVE_VLD41_8_wb:
    case ARM::MVE_VLD41_16_wb:
    case ARM::MVE_VLD41_32_wb:
    case ARM::MVE_VLD42_8_wb:
    case ARM::MVE_VLD42_16_wb:
    case ARM::MVE_VLD42_32_wb:
    case ARM::MVE_VLD43_8_wb:
    case ARM::MVE_VLD43_16_wb:
    case ARM::MVE_VLD43_32_wb: {
      switch (OpNum) {
      case 0:
        // op: VQd
        return 13;
      case 3:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::VLD1LNd8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 4:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD1LNd16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 4:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD1LNd32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 4:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD1DUPd8:
    case ARM::VLD1DUPd16:
    case ARM::VLD1DUPd32:
    case ARM::VLD1DUPq8:
    case ARM::VLD1DUPq16:
    case ARM::VLD1DUPq32:
    case ARM::VLD1d8:
    case ARM::VLD1d8Q:
    case ARM::VLD1d8T:
    case ARM::VLD1d16:
    case ARM::VLD1d16Q:
    case ARM::VLD1d16T:
    case ARM::VLD1d32:
    case ARM::VLD1d32Q:
    case ARM::VLD1d32T:
    case ARM::VLD1d64:
    case ARM::VLD1d64Q:
    case ARM::VLD1d64T:
    case ARM::VLD1q8:
    case ARM::VLD1q16:
    case ARM::VLD1q32:
    case ARM::VLD1q64:
    case ARM::VLD2DUPd8:
    case ARM::VLD2DUPd8x2:
    case ARM::VLD2DUPd16:
    case ARM::VLD2DUPd16x2:
    case ARM::VLD2DUPd32:
    case ARM::VLD2DUPd32x2:
    case ARM::VLD2b8:
    case ARM::VLD2b16:
    case ARM::VLD2b32:
    case ARM::VLD2d8:
    case ARM::VLD2d16:
    case ARM::VLD2d32:
    case ARM::VLD2q8:
    case ARM::VLD2q16:
    case ARM::VLD2q32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      }
      break;
    }
    case ARM::VBICiv2i32:
    case ARM::VBICiv4i16:
    case ARM::VBICiv4i32:
    case ARM::VBICiv8i16:
    case ARM::VMOVv1i64:
    case ARM::VMOVv2f32:
    case ARM::VMOVv2i32:
    case ARM::VMOVv2i64:
    case ARM::VMOVv4f32:
    case ARM::VMOVv4i16:
    case ARM::VMOVv4i32:
    case ARM::VMOVv8i8:
    case ARM::VMOVv8i16:
    case ARM::VMOVv16i8:
    case ARM::VMVNv2i32:
    case ARM::VMVNv4i16:
    case ARM::VMVNv4i32:
    case ARM::VMVNv8i16:
    case ARM::VORRiv2i32:
    case ARM::VORRiv4i16:
    case ARM::VORRiv4i32:
    case ARM::VORRiv8i16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: SIMM
        return 0;
      }
      break;
    }
    case ARM::VCVTf2xsd:
    case ARM::VCVTf2xsq:
    case ARM::VCVTf2xud:
    case ARM::VCVTf2xuq:
    case ARM::VCVTh2xsd:
    case ARM::VCVTh2xsq:
    case ARM::VCVTh2xud:
    case ARM::VCVTh2xuq:
    case ARM::VCVTxs2fd:
    case ARM::VCVTxs2fq:
    case ARM::VCVTxs2hd:
    case ARM::VCVTxs2hq:
    case ARM::VCVTxu2fd:
    case ARM::VCVTxu2fq:
    case ARM::VCVTxu2hd:
    case ARM::VCVTxu2hq:
    case ARM::VQRSHRNsv2i32:
    case ARM::VQRSHRNsv4i16:
    case ARM::VQRSHRNsv8i8:
    case ARM::VQRSHRNuv2i32:
    case ARM::VQRSHRNuv4i16:
    case ARM::VQRSHRNuv8i8:
    case ARM::VQRSHRUNv2i32:
    case ARM::VQRSHRUNv4i16:
    case ARM::VQRSHRUNv8i8:
    case ARM::VQSHLsiv1i64:
    case ARM::VQSHLsiv2i32:
    case ARM::VQSHLsiv2i64:
    case ARM::VQSHLsiv4i16:
    case ARM::VQSHLsiv4i32:
    case ARM::VQSHLsiv8i8:
    case ARM::VQSHLsiv8i16:
    case ARM::VQSHLsiv16i8:
    case ARM::VQSHLsuv1i64:
    case ARM::VQSHLsuv2i32:
    case ARM::VQSHLsuv2i64:
    case ARM::VQSHLsuv4i16:
    case ARM::VQSHLsuv4i32:
    case ARM::VQSHLsuv8i8:
    case ARM::VQSHLsuv8i16:
    case ARM::VQSHLsuv16i8:
    case ARM::VQSHLuiv1i64:
    case ARM::VQSHLuiv2i32:
    case ARM::VQSHLuiv2i64:
    case ARM::VQSHLuiv4i16:
    case ARM::VQSHLuiv4i32:
    case ARM::VQSHLuiv8i8:
    case ARM::VQSHLuiv8i16:
    case ARM::VQSHLuiv16i8:
    case ARM::VQSHRNsv2i32:
    case ARM::VQSHRNsv4i16:
    case ARM::VQSHRNsv8i8:
    case ARM::VQSHRNuv2i32:
    case ARM::VQSHRNuv4i16:
    case ARM::VQSHRNuv8i8:
    case ARM::VQSHRUNv2i32:
    case ARM::VQSHRUNv4i16:
    case ARM::VQSHRUNv8i8:
    case ARM::VRSHRNv2i32:
    case ARM::VRSHRNv4i16:
    case ARM::VRSHRNv8i8:
    case ARM::VRSHRsv1i64:
    case ARM::VRSHRsv2i32:
    case ARM::VRSHRsv2i64:
    case ARM::VRSHRsv4i16:
    case ARM::VRSHRsv4i32:
    case ARM::VRSHRsv8i8:
    case ARM::VRSHRsv8i16:
    case ARM::VRSHRsv16i8:
    case ARM::VRSHRuv1i64:
    case ARM::VRSHRuv2i32:
    case ARM::VRSHRuv2i64:
    case ARM::VRSHRuv4i16:
    case ARM::VRSHRuv4i32:
    case ARM::VRSHRuv8i8:
    case ARM::VRSHRuv8i16:
    case ARM::VRSHRuv16i8:
    case ARM::VSHLLsv2i64:
    case ARM::VSHLLsv4i32:
    case ARM::VSHLLsv8i16:
    case ARM::VSHLLuv2i64:
    case ARM::VSHLLuv4i32:
    case ARM::VSHLLuv8i16:
    case ARM::VSHLiv1i64:
    case ARM::VSHLiv2i32:
    case ARM::VSHLiv2i64:
    case ARM::VSHLiv4i16:
    case ARM::VSHLiv4i32:
    case ARM::VSHLiv8i8:
    case ARM::VSHLiv8i16:
    case ARM::VSHLiv16i8:
    case ARM::VSHRNv2i32:
    case ARM::VSHRNv4i16:
    case ARM::VSHRNv8i8:
    case ARM::VSHRsv1i64:
    case ARM::VSHRsv2i32:
    case ARM::VSHRsv2i64:
    case ARM::VSHRsv4i16:
    case ARM::VSHRsv4i32:
    case ARM::VSHRsv8i8:
    case ARM::VSHRsv8i16:
    case ARM::VSHRsv16i8:
    case ARM::VSHRuv1i64:
    case ARM::VSHRuv2i32:
    case ARM::VSHRuv2i64:
    case ARM::VSHRuv4i16:
    case ARM::VSHRuv4i32:
    case ARM::VSHRuv8i8:
    case ARM::VSHRuv8i16:
    case ARM::VSHRuv16i8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vm
        return 0;
      case 2:
        // op: SIMM
        return 16;
      }
      break;
    }
    case ARM::VDUPLN8d:
    case ARM::VDUPLN8q: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vm
        return 0;
      case 2:
        // op: lane
        return 17;
      }
      break;
    }
    case ARM::VDUPLN16d:
    case ARM::VDUPLN16q: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vm
        return 0;
      case 2:
        // op: lane
        return 18;
      }
      break;
    }
    case ARM::VDUPLN32d:
    case ARM::VDUPLN32q: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vm
        return 0;
      case 2:
        // op: lane
        return 19;
      }
      break;
    }
    case ARM::AESIMC:
    case ARM::AESMC:
    case ARM::BF16_VCVT:
    case ARM::SHA1H:
    case ARM::VABSfd:
    case ARM::VABSfq:
    case ARM::VABShd:
    case ARM::VABShq:
    case ARM::VABSv2i32:
    case ARM::VABSv4i16:
    case ARM::VABSv4i32:
    case ARM::VABSv8i8:
    case ARM::VABSv8i16:
    case ARM::VABSv16i8:
    case ARM::VCEQzv2f32:
    case ARM::VCEQzv2i32:
    case ARM::VCEQzv4f16:
    case ARM::VCEQzv4f32:
    case ARM::VCEQzv4i16:
    case ARM::VCEQzv4i32:
    case ARM::VCEQzv8f16:
    case ARM::VCEQzv8i8:
    case ARM::VCEQzv8i16:
    case ARM::VCEQzv16i8:
    case ARM::VCGEzv2f32:
    case ARM::VCGEzv2i32:
    case ARM::VCGEzv4f16:
    case ARM::VCGEzv4f32:
    case ARM::VCGEzv4i16:
    case ARM::VCGEzv4i32:
    case ARM::VCGEzv8f16:
    case ARM::VCGEzv8i8:
    case ARM::VCGEzv8i16:
    case ARM::VCGEzv16i8:
    case ARM::VCGTzv2f32:
    case ARM::VCGTzv2i32:
    case ARM::VCGTzv4f16:
    case ARM::VCGTzv4f32:
    case ARM::VCGTzv4i16:
    case ARM::VCGTzv4i32:
    case ARM::VCGTzv8f16:
    case ARM::VCGTzv8i8:
    case ARM::VCGTzv8i16:
    case ARM::VCGTzv16i8:
    case ARM::VCLEzv2f32:
    case ARM::VCLEzv2i32:
    case ARM::VCLEzv4f16:
    case ARM::VCLEzv4f32:
    case ARM::VCLEzv4i16:
    case ARM::VCLEzv4i32:
    case ARM::VCLEzv8f16:
    case ARM::VCLEzv8i8:
    case ARM::VCLEzv8i16:
    case ARM::VCLEzv16i8:
    case ARM::VCLSv2i32:
    case ARM::VCLSv4i16:
    case ARM::VCLSv4i32:
    case ARM::VCLSv8i8:
    case ARM::VCLSv8i16:
    case ARM::VCLSv16i8:
    case ARM::VCLTzv2f32:
    case ARM::VCLTzv2i32:
    case ARM::VCLTzv4f16:
    case ARM::VCLTzv4f32:
    case ARM::VCLTzv4i16:
    case ARM::VCLTzv4i32:
    case ARM::VCLTzv8f16:
    case ARM::VCLTzv8i8:
    case ARM::VCLTzv8i16:
    case ARM::VCLTzv16i8:
    case ARM::VCLZv2i32:
    case ARM::VCLZv4i16:
    case ARM::VCLZv4i32:
    case ARM::VCLZv8i8:
    case ARM::VCLZv8i16:
    case ARM::VCLZv16i8:
    case ARM::VCNTd:
    case ARM::VCNTq:
    case ARM::VCVTANSDf:
    case ARM::VCVTANSDh:
    case ARM::VCVTANSQf:
    case ARM::VCVTANSQh:
    case ARM::VCVTANUDf:
    case ARM::VCVTANUDh:
    case ARM::VCVTANUQf:
    case ARM::VCVTANUQh:
    case ARM::VCVTMNSDf:
    case ARM::VCVTMNSDh:
    case ARM::VCVTMNSQf:
    case ARM::VCVTMNSQh:
    case ARM::VCVTMNUDf:
    case ARM::VCVTMNUDh:
    case ARM::VCVTMNUQf:
    case ARM::VCVTMNUQh:
    case ARM::VCVTNNSDf:
    case ARM::VCVTNNSDh:
    case ARM::VCVTNNSQf:
    case ARM::VCVTNNSQh:
    case ARM::VCVTNNUDf:
    case ARM::VCVTNNUDh:
    case ARM::VCVTNNUQf:
    case ARM::VCVTNNUQh:
    case ARM::VCVTPNSDf:
    case ARM::VCVTPNSDh:
    case ARM::VCVTPNSQf:
    case ARM::VCVTPNSQh:
    case ARM::VCVTPNUDf:
    case ARM::VCVTPNUDh:
    case ARM::VCVTPNUQf:
    case ARM::VCVTPNUQh:
    case ARM::VCVTf2h:
    case ARM::VCVTf2sd:
    case ARM::VCVTf2sq:
    case ARM::VCVTf2ud:
    case ARM::VCVTf2uq:
    case ARM::VCVTh2f:
    case ARM::VCVTh2sd:
    case ARM::VCVTh2sq:
    case ARM::VCVTh2ud:
    case ARM::VCVTh2uq:
    case ARM::VCVTs2fd:
    case ARM::VCVTs2fq:
    case ARM::VCVTs2hd:
    case ARM::VCVTs2hq:
    case ARM::VCVTu2fd:
    case ARM::VCVTu2fq:
    case ARM::VCVTu2hd:
    case ARM::VCVTu2hq:
    case ARM::VMOVLsv2i64:
    case ARM::VMOVLsv4i32:
    case ARM::VMOVLsv8i16:
    case ARM::VMOVLuv2i64:
    case ARM::VMOVLuv4i32:
    case ARM::VMOVLuv8i16:
    case ARM::VMOVNv2i32:
    case ARM::VMOVNv4i16:
    case ARM::VMOVNv8i8:
    case ARM::VMVNd:
    case ARM::VMVNq:
    case ARM::VNEGf32q:
    case ARM::VNEGfd:
    case ARM::VNEGhd:
    case ARM::VNEGhq:
    case ARM::VNEGs8d:
    case ARM::VNEGs8q:
    case ARM::VNEGs16d:
    case ARM::VNEGs16q:
    case ARM::VNEGs32d:
    case ARM::VNEGs32q:
    case ARM::VPADDLsv2i32:
    case ARM::VPADDLsv4i16:
    case ARM::VPADDLsv4i32:
    case ARM::VPADDLsv8i8:
    case ARM::VPADDLsv8i16:
    case ARM::VPADDLsv16i8:
    case ARM::VPADDLuv2i32:
    case ARM::VPADDLuv4i16:
    case ARM::VPADDLuv4i32:
    case ARM::VPADDLuv8i8:
    case ARM::VPADDLuv8i16:
    case ARM::VPADDLuv16i8:
    case ARM::VQABSv2i32:
    case ARM::VQABSv4i16:
    case ARM::VQABSv4i32:
    case ARM::VQABSv8i8:
    case ARM::VQABSv8i16:
    case ARM::VQABSv16i8:
    case ARM::VQMOVNsuv2i32:
    case ARM::VQMOVNsuv4i16:
    case ARM::VQMOVNsuv8i8:
    case ARM::VQMOVNsv2i32:
    case ARM::VQMOVNsv4i16:
    case ARM::VQMOVNsv8i8:
    case ARM::VQMOVNuv2i32:
    case ARM::VQMOVNuv4i16:
    case ARM::VQMOVNuv8i8:
    case ARM::VQNEGv2i32:
    case ARM::VQNEGv4i16:
    case ARM::VQNEGv4i32:
    case ARM::VQNEGv8i8:
    case ARM::VQNEGv8i16:
    case ARM::VQNEGv16i8:
    case ARM::VRECPEd:
    case ARM::VRECPEfd:
    case ARM::VRECPEfq:
    case ARM::VRECPEhd:
    case ARM::VRECPEhq:
    case ARM::VRECPEq:
    case ARM::VREV16d8:
    case ARM::VREV16q8:
    case ARM::VREV32d8:
    case ARM::VREV32d16:
    case ARM::VREV32q8:
    case ARM::VREV32q16:
    case ARM::VREV64d8:
    case ARM::VREV64d16:
    case ARM::VREV64d32:
    case ARM::VREV64q8:
    case ARM::VREV64q16:
    case ARM::VREV64q32:
    case ARM::VRINTANDf:
    case ARM::VRINTANDh:
    case ARM::VRINTANQf:
    case ARM::VRINTANQh:
    case ARM::VRINTMNDf:
    case ARM::VRINTMNDh:
    case ARM::VRINTMNQf:
    case ARM::VRINTMNQh:
    case ARM::VRINTNNDf:
    case ARM::VRINTNNDh:
    case ARM::VRINTNNQf:
    case ARM::VRINTNNQh:
    case ARM::VRINTPNDf:
    case ARM::VRINTPNDh:
    case ARM::VRINTPNQf:
    case ARM::VRINTPNQh:
    case ARM::VRINTXNDf:
    case ARM::VRINTXNDh:
    case ARM::VRINTXNQf:
    case ARM::VRINTXNQh:
    case ARM::VRINTZNDf:
    case ARM::VRINTZNDh:
    case ARM::VRINTZNQf:
    case ARM::VRINTZNQh:
    case ARM::VRSQRTEd:
    case ARM::VRSQRTEfd:
    case ARM::VRSQRTEfq:
    case ARM::VRSQRTEhd:
    case ARM::VRSQRTEhq:
    case ARM::VRSQRTEq:
    case ARM::VSHLLi8:
    case ARM::VSHLLi16:
    case ARM::VSHLLi32:
    case ARM::VSWPd:
    case ARM::VSWPq:
    case ARM::VTRNd8:
    case ARM::VTRNd16:
    case ARM::VTRNd32:
    case ARM::VTRNq8:
    case ARM::VTRNq16:
    case ARM::VTRNq32:
    case ARM::VUZPd8:
    case ARM::VUZPd16:
    case ARM::VUZPq8:
    case ARM::VUZPq16:
    case ARM::VUZPq32:
    case ARM::VZIPd8:
    case ARM::VZIPd16:
    case ARM::VZIPq8:
    case ARM::VZIPq16:
    case ARM::VZIPq32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::VFMALDI:
    case ARM::VFMALQI:
    case ARM::VFMSLDI:
    case ARM::VFMSLQI: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: idx
        return 3;
      }
      break;
    }
    case ARM::VEXTd32:
    case ARM::VEXTq32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: index
        return 10;
      }
      break;
    }
    case ARM::VEXTq64: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: index
        return 11;
      }
      break;
    }
    case ARM::VEXTd8:
    case ARM::VEXTq8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: index
        return 8;
      }
      break;
    }
    case ARM::VEXTd16:
    case ARM::VEXTq16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: index
        return 9;
      }
      break;
    }
    case ARM::VMULLslsv4i16:
    case ARM::VMULLsluv4i16:
    case ARM::VMULslhd:
    case ARM::VMULslhq:
    case ARM::VMULslv4i16:
    case ARM::VMULslv8i16:
    case ARM::VQDMULHslv4i16:
    case ARM::VQDMULHslv8i16:
    case ARM::VQDMULLslv4i16:
    case ARM::VQRDMULHslv4i16:
    case ARM::VQRDMULHslv8i16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: lane
        return 3;
      }
      break;
    }
    case ARM::VMULLslsv2i32:
    case ARM::VMULLsluv2i32:
    case ARM::VMULslfd:
    case ARM::VMULslfq:
    case ARM::VMULslv2i32:
    case ARM::VMULslv4i32:
    case ARM::VQDMULHslv2i32:
    case ARM::VQDMULHslv4i32:
    case ARM::VQDMULLslv2i32:
    case ARM::VQRDMULHslv2i32:
    case ARM::VQRDMULHslv4i32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VCADDv2f32:
    case ARM::VCADDv4f16:
    case ARM::VCADDv4f32:
    case ARM::VCADDv8f16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: rot
        return 24;
      }
      break;
    }
    case ARM::NEON_VMAXNMNDf:
    case ARM::NEON_VMAXNMNDh:
    case ARM::NEON_VMAXNMNQf:
    case ARM::NEON_VMAXNMNQh:
    case ARM::NEON_VMINNMNDf:
    case ARM::NEON_VMINNMNDh:
    case ARM::NEON_VMINNMNQf:
    case ARM::NEON_VMINNMNQh:
    case ARM::VABDLsv2i64:
    case ARM::VABDLsv4i32:
    case ARM::VABDLsv8i16:
    case ARM::VABDLuv2i64:
    case ARM::VABDLuv4i32:
    case ARM::VABDLuv8i16:
    case ARM::VABDfd:
    case ARM::VABDfq:
    case ARM::VABDhd:
    case ARM::VABDhq:
    case ARM::VABDsv2i32:
    case ARM::VABDsv4i16:
    case ARM::VABDsv4i32:
    case ARM::VABDsv8i8:
    case ARM::VABDsv8i16:
    case ARM::VABDsv16i8:
    case ARM::VABDuv2i32:
    case ARM::VABDuv4i16:
    case ARM::VABDuv4i32:
    case ARM::VABDuv8i8:
    case ARM::VABDuv8i16:
    case ARM::VABDuv16i8:
    case ARM::VACGEfd:
    case ARM::VACGEfq:
    case ARM::VACGEhd:
    case ARM::VACGEhq:
    case ARM::VACGTfd:
    case ARM::VACGTfq:
    case ARM::VACGThd:
    case ARM::VACGThq:
    case ARM::VADDHNv2i32:
    case ARM::VADDHNv4i16:
    case ARM::VADDHNv8i8:
    case ARM::VADDLsv2i64:
    case ARM::VADDLsv4i32:
    case ARM::VADDLsv8i16:
    case ARM::VADDLuv2i64:
    case ARM::VADDLuv4i32:
    case ARM::VADDLuv8i16:
    case ARM::VADDWsv2i64:
    case ARM::VADDWsv4i32:
    case ARM::VADDWsv8i16:
    case ARM::VADDWuv2i64:
    case ARM::VADDWuv4i32:
    case ARM::VADDWuv8i16:
    case ARM::VADDfd:
    case ARM::VADDfq:
    case ARM::VADDhd:
    case ARM::VADDhq:
    case ARM::VADDv1i64:
    case ARM::VADDv2i32:
    case ARM::VADDv2i64:
    case ARM::VADDv4i16:
    case ARM::VADDv4i32:
    case ARM::VADDv8i8:
    case ARM::VADDv8i16:
    case ARM::VADDv16i8:
    case ARM::VANDd:
    case ARM::VANDq:
    case ARM::VBICd:
    case ARM::VBICq:
    case ARM::VCEQfd:
    case ARM::VCEQfq:
    case ARM::VCEQhd:
    case ARM::VCEQhq:
    case ARM::VCEQv2i32:
    case ARM::VCEQv4i16:
    case ARM::VCEQv4i32:
    case ARM::VCEQv8i8:
    case ARM::VCEQv8i16:
    case ARM::VCEQv16i8:
    case ARM::VCGEfd:
    case ARM::VCGEfq:
    case ARM::VCGEhd:
    case ARM::VCGEhq:
    case ARM::VCGEsv2i32:
    case ARM::VCGEsv4i16:
    case ARM::VCGEsv4i32:
    case ARM::VCGEsv8i8:
    case ARM::VCGEsv8i16:
    case ARM::VCGEsv16i8:
    case ARM::VCGEuv2i32:
    case ARM::VCGEuv4i16:
    case ARM::VCGEuv4i32:
    case ARM::VCGEuv8i8:
    case ARM::VCGEuv8i16:
    case ARM::VCGEuv16i8:
    case ARM::VCGTfd:
    case ARM::VCGTfq:
    case ARM::VCGThd:
    case ARM::VCGThq:
    case ARM::VCGTsv2i32:
    case ARM::VCGTsv4i16:
    case ARM::VCGTsv4i32:
    case ARM::VCGTsv8i8:
    case ARM::VCGTsv8i16:
    case ARM::VCGTsv16i8:
    case ARM::VCGTuv2i32:
    case ARM::VCGTuv4i16:
    case ARM::VCGTuv4i32:
    case ARM::VCGTuv8i8:
    case ARM::VCGTuv8i16:
    case ARM::VCGTuv16i8:
    case ARM::VEORd:
    case ARM::VEORq:
    case ARM::VFMALD:
    case ARM::VFMALQ:
    case ARM::VFMSLD:
    case ARM::VFMSLQ:
    case ARM::VHADDsv2i32:
    case ARM::VHADDsv4i16:
    case ARM::VHADDsv4i32:
    case ARM::VHADDsv8i8:
    case ARM::VHADDsv8i16:
    case ARM::VHADDsv16i8:
    case ARM::VHADDuv2i32:
    case ARM::VHADDuv4i16:
    case ARM::VHADDuv4i32:
    case ARM::VHADDuv8i8:
    case ARM::VHADDuv8i16:
    case ARM::VHADDuv16i8:
    case ARM::VHSUBsv2i32:
    case ARM::VHSUBsv4i16:
    case ARM::VHSUBsv4i32:
    case ARM::VHSUBsv8i8:
    case ARM::VHSUBsv8i16:
    case ARM::VHSUBsv16i8:
    case ARM::VHSUBuv2i32:
    case ARM::VHSUBuv4i16:
    case ARM::VHSUBuv4i32:
    case ARM::VHSUBuv8i8:
    case ARM::VHSUBuv8i16:
    case ARM::VHSUBuv16i8:
    case ARM::VMAXfd:
    case ARM::VMAXfq:
    case ARM::VMAXhd:
    case ARM::VMAXhq:
    case ARM::VMAXsv2i32:
    case ARM::VMAXsv4i16:
    case ARM::VMAXsv4i32:
    case ARM::VMAXsv8i8:
    case ARM::VMAXsv8i16:
    case ARM::VMAXsv16i8:
    case ARM::VMAXuv2i32:
    case ARM::VMAXuv4i16:
    case ARM::VMAXuv4i32:
    case ARM::VMAXuv8i8:
    case ARM::VMAXuv8i16:
    case ARM::VMAXuv16i8:
    case ARM::VMINfd:
    case ARM::VMINfq:
    case ARM::VMINhd:
    case ARM::VMINhq:
    case ARM::VMINsv2i32:
    case ARM::VMINsv4i16:
    case ARM::VMINsv4i32:
    case ARM::VMINsv8i8:
    case ARM::VMINsv8i16:
    case ARM::VMINsv16i8:
    case ARM::VMINuv2i32:
    case ARM::VMINuv4i16:
    case ARM::VMINuv4i32:
    case ARM::VMINuv8i8:
    case ARM::VMINuv8i16:
    case ARM::VMINuv16i8:
    case ARM::VMULLp8:
    case ARM::VMULLp64:
    case ARM::VMULLsv2i64:
    case ARM::VMULLsv4i32:
    case ARM::VMULLsv8i16:
    case ARM::VMULLuv2i64:
    case ARM::VMULLuv4i32:
    case ARM::VMULLuv8i16:
    case ARM::VMULfd:
    case ARM::VMULfq:
    case ARM::VMULhd:
    case ARM::VMULhq:
    case ARM::VMULpd:
    case ARM::VMULpq:
    case ARM::VMULv2i32:
    case ARM::VMULv4i16:
    case ARM::VMULv4i32:
    case ARM::VMULv8i8:
    case ARM::VMULv8i16:
    case ARM::VMULv16i8:
    case ARM::VORNd:
    case ARM::VORNq:
    case ARM::VORRd:
    case ARM::VORRq:
    case ARM::VPADDf:
    case ARM::VPADDh:
    case ARM::VPADDi8:
    case ARM::VPADDi16:
    case ARM::VPADDi32:
    case ARM::VPMAXf:
    case ARM::VPMAXh:
    case ARM::VPMAXs8:
    case ARM::VPMAXs16:
    case ARM::VPMAXs32:
    case ARM::VPMAXu8:
    case ARM::VPMAXu16:
    case ARM::VPMAXu32:
    case ARM::VPMINf:
    case ARM::VPMINh:
    case ARM::VPMINs8:
    case ARM::VPMINs16:
    case ARM::VPMINs32:
    case ARM::VPMINu8:
    case ARM::VPMINu16:
    case ARM::VPMINu32:
    case ARM::VQADDsv1i64:
    case ARM::VQADDsv2i32:
    case ARM::VQADDsv2i64:
    case ARM::VQADDsv4i16:
    case ARM::VQADDsv4i32:
    case ARM::VQADDsv8i8:
    case ARM::VQADDsv8i16:
    case ARM::VQADDsv16i8:
    case ARM::VQADDuv1i64:
    case ARM::VQADDuv2i32:
    case ARM::VQADDuv2i64:
    case ARM::VQADDuv4i16:
    case ARM::VQADDuv4i32:
    case ARM::VQADDuv8i8:
    case ARM::VQADDuv8i16:
    case ARM::VQADDuv16i8:
    case ARM::VQDMULHv2i32:
    case ARM::VQDMULHv4i16:
    case ARM::VQDMULHv4i32:
    case ARM::VQDMULHv8i16:
    case ARM::VQDMULLv2i64:
    case ARM::VQDMULLv4i32:
    case ARM::VQRDMULHv2i32:
    case ARM::VQRDMULHv4i16:
    case ARM::VQRDMULHv4i32:
    case ARM::VQRDMULHv8i16:
    case ARM::VQSUBsv1i64:
    case ARM::VQSUBsv2i32:
    case ARM::VQSUBsv2i64:
    case ARM::VQSUBsv4i16:
    case ARM::VQSUBsv4i32:
    case ARM::VQSUBsv8i8:
    case ARM::VQSUBsv8i16:
    case ARM::VQSUBsv16i8:
    case ARM::VQSUBuv1i64:
    case ARM::VQSUBuv2i32:
    case ARM::VQSUBuv2i64:
    case ARM::VQSUBuv4i16:
    case ARM::VQSUBuv4i32:
    case ARM::VQSUBuv8i8:
    case ARM::VQSUBuv8i16:
    case ARM::VQSUBuv16i8:
    case ARM::VRADDHNv2i32:
    case ARM::VRADDHNv4i16:
    case ARM::VRADDHNv8i8:
    case ARM::VRECPSfd:
    case ARM::VRECPSfq:
    case ARM::VRECPShd:
    case ARM::VRECPShq:
    case ARM::VRHADDsv2i32:
    case ARM::VRHADDsv4i16:
    case ARM::VRHADDsv4i32:
    case ARM::VRHADDsv8i8:
    case ARM::VRHADDsv8i16:
    case ARM::VRHADDsv16i8:
    case ARM::VRHADDuv2i32:
    case ARM::VRHADDuv4i16:
    case ARM::VRHADDuv4i32:
    case ARM::VRHADDuv8i8:
    case ARM::VRHADDuv8i16:
    case ARM::VRHADDuv16i8:
    case ARM::VRSQRTSfd:
    case ARM::VRSQRTSfq:
    case ARM::VRSQRTShd:
    case ARM::VRSQRTShq:
    case ARM::VRSUBHNv2i32:
    case ARM::VRSUBHNv4i16:
    case ARM::VRSUBHNv8i8:
    case ARM::VSUBHNv2i32:
    case ARM::VSUBHNv4i16:
    case ARM::VSUBHNv8i8:
    case ARM::VSUBLsv2i64:
    case ARM::VSUBLsv4i32:
    case ARM::VSUBLsv8i16:
    case ARM::VSUBLuv2i64:
    case ARM::VSUBLuv4i32:
    case ARM::VSUBLuv8i16:
    case ARM::VSUBWsv2i64:
    case ARM::VSUBWsv4i32:
    case ARM::VSUBWsv8i16:
    case ARM::VSUBWuv2i64:
    case ARM::VSUBWuv4i32:
    case ARM::VSUBWuv8i16:
    case ARM::VSUBfd:
    case ARM::VSUBfq:
    case ARM::VSUBhd:
    case ARM::VSUBhq:
    case ARM::VSUBv1i64:
    case ARM::VSUBv2i32:
    case ARM::VSUBv2i64:
    case ARM::VSUBv4i16:
    case ARM::VSUBv4i32:
    case ARM::VSUBv8i8:
    case ARM::VSUBv8i16:
    case ARM::VSUBv16i8:
    case ARM::VTBL1:
    case ARM::VTBL2:
    case ARM::VTBL3:
    case ARM::VTBL4:
    case ARM::VTSTv2i32:
    case ARM::VTSTv4i16:
    case ARM::VTSTv4i32:
    case ARM::VTSTv8i8:
    case ARM::VTSTv8i16:
    case ARM::VTSTv16i8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 1:
        // op: Vn
        return 7;
      case 2:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::VLD1LNd8_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 16;
      case 4:
        // op: Rm
        return 0;
      case 6:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD1LNd16_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      case 4:
        // op: Rm
        return 0;
      case 6:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD1LNd32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      case 4:
        // op: Rm
        return 0;
      case 6:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD1DUPd8wb_register:
    case ARM::VLD1DUPd16wb_register:
    case ARM::VLD1DUPd32wb_register:
    case ARM::VLD1DUPq8wb_register:
    case ARM::VLD1DUPq16wb_register:
    case ARM::VLD1DUPq32wb_register:
    case ARM::VLD1d8Qwb_register:
    case ARM::VLD1d8Twb_register:
    case ARM::VLD1d8wb_register:
    case ARM::VLD1d16Qwb_register:
    case ARM::VLD1d16Twb_register:
    case ARM::VLD1d16wb_register:
    case ARM::VLD1d32Qwb_register:
    case ARM::VLD1d32Twb_register:
    case ARM::VLD1d32wb_register:
    case ARM::VLD1d64Qwb_register:
    case ARM::VLD1d64Twb_register:
    case ARM::VLD1d64wb_register:
    case ARM::VLD1q8wb_register:
    case ARM::VLD1q16wb_register:
    case ARM::VLD1q32wb_register:
    case ARM::VLD1q64wb_register:
    case ARM::VLD2DUPd8wb_register:
    case ARM::VLD2DUPd8x2wb_register:
    case ARM::VLD2DUPd16wb_register:
    case ARM::VLD2DUPd16x2wb_register:
    case ARM::VLD2DUPd32wb_register:
    case ARM::VLD2DUPd32x2wb_register:
    case ARM::VLD2b8wb_register:
    case ARM::VLD2b16wb_register:
    case ARM::VLD2b32wb_register:
    case ARM::VLD2d8wb_register:
    case ARM::VLD2d16wb_register:
    case ARM::VLD2d32wb_register:
    case ARM::VLD2q8wb_register:
    case ARM::VLD2q16wb_register:
    case ARM::VLD2q32wb_register: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      case 4:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::VLD2LNd8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      case 6:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD2LNd16:
    case ARM::VLD2LNq16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      case 6:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD2LNd32:
    case ARM::VLD2LNq32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      case 6:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD1DUPd8wb_fixed:
    case ARM::VLD1DUPd16wb_fixed:
    case ARM::VLD1DUPd32wb_fixed:
    case ARM::VLD1DUPq8wb_fixed:
    case ARM::VLD1DUPq16wb_fixed:
    case ARM::VLD1DUPq32wb_fixed:
    case ARM::VLD1d8Qwb_fixed:
    case ARM::VLD1d8Twb_fixed:
    case ARM::VLD1d8wb_fixed:
    case ARM::VLD1d16Qwb_fixed:
    case ARM::VLD1d16Twb_fixed:
    case ARM::VLD1d16wb_fixed:
    case ARM::VLD1d32Qwb_fixed:
    case ARM::VLD1d32Twb_fixed:
    case ARM::VLD1d32wb_fixed:
    case ARM::VLD1d64Qwb_fixed:
    case ARM::VLD1d64Twb_fixed:
    case ARM::VLD1d64wb_fixed:
    case ARM::VLD1q8wb_fixed:
    case ARM::VLD1q16wb_fixed:
    case ARM::VLD1q32wb_fixed:
    case ARM::VLD1q64wb_fixed:
    case ARM::VLD2DUPd8wb_fixed:
    case ARM::VLD2DUPd8x2wb_fixed:
    case ARM::VLD2DUPd16wb_fixed:
    case ARM::VLD2DUPd16x2wb_fixed:
    case ARM::VLD2DUPd32wb_fixed:
    case ARM::VLD2DUPd32x2wb_fixed:
    case ARM::VLD2b8wb_fixed:
    case ARM::VLD2b16wb_fixed:
    case ARM::VLD2b32wb_fixed:
    case ARM::VLD2d8wb_fixed:
    case ARM::VLD2d16wb_fixed:
    case ARM::VLD2d32wb_fixed:
    case ARM::VLD2q8wb_fixed:
    case ARM::VLD2q16wb_fixed:
    case ARM::VLD2q32wb_fixed: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Rn
        return 4;
      }
      break;
    }
    case ARM::VRSRAsv1i64:
    case ARM::VRSRAsv2i32:
    case ARM::VRSRAsv2i64:
    case ARM::VRSRAsv4i16:
    case ARM::VRSRAsv4i32:
    case ARM::VRSRAsv8i8:
    case ARM::VRSRAsv8i16:
    case ARM::VRSRAsv16i8:
    case ARM::VRSRAuv1i64:
    case ARM::VRSRAuv2i32:
    case ARM::VRSRAuv2i64:
    case ARM::VRSRAuv4i16:
    case ARM::VRSRAuv4i32:
    case ARM::VRSRAuv8i8:
    case ARM::VRSRAuv8i16:
    case ARM::VRSRAuv16i8:
    case ARM::VSLIv1i64:
    case ARM::VSLIv2i32:
    case ARM::VSLIv2i64:
    case ARM::VSLIv4i16:
    case ARM::VSLIv4i32:
    case ARM::VSLIv8i8:
    case ARM::VSLIv8i16:
    case ARM::VSLIv16i8:
    case ARM::VSRAsv1i64:
    case ARM::VSRAsv2i32:
    case ARM::VSRAsv2i64:
    case ARM::VSRAsv4i16:
    case ARM::VSRAsv4i32:
    case ARM::VSRAsv8i8:
    case ARM::VSRAsv8i16:
    case ARM::VSRAsv16i8:
    case ARM::VSRAuv1i64:
    case ARM::VSRAuv2i32:
    case ARM::VSRAuv2i64:
    case ARM::VSRAuv4i16:
    case ARM::VSRAuv4i32:
    case ARM::VSRAuv8i8:
    case ARM::VSRAuv8i16:
    case ARM::VSRAuv16i8:
    case ARM::VSRIv1i64:
    case ARM::VSRIv2i32:
    case ARM::VSRIv2i64:
    case ARM::VSRIv4i16:
    case ARM::VSRIv4i32:
    case ARM::VSRIv8i8:
    case ARM::VSRIv8i16:
    case ARM::VSRIv16i8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vm
        return 0;
      case 3:
        // op: SIMM
        return 16;
      }
      break;
    }
    case ARM::AESD:
    case ARM::AESE:
    case ARM::SHA1SU1:
    case ARM::SHA256SU0:
    case ARM::VPADALsv2i32:
    case ARM::VPADALsv4i16:
    case ARM::VPADALsv4i32:
    case ARM::VPADALsv8i8:
    case ARM::VPADALsv8i16:
    case ARM::VPADALsv16i8:
    case ARM::VPADALuv2i32:
    case ARM::VPADALuv4i16:
    case ARM::VPADALuv4i32:
    case ARM::VPADALuv8i8:
    case ARM::VPADALuv8i16:
    case ARM::VPADALuv16i8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::VQRSHLsv1i64:
    case ARM::VQRSHLsv2i32:
    case ARM::VQRSHLsv2i64:
    case ARM::VQRSHLsv4i16:
    case ARM::VQRSHLsv4i32:
    case ARM::VQRSHLsv8i8:
    case ARM::VQRSHLsv8i16:
    case ARM::VQRSHLsv16i8:
    case ARM::VQRSHLuv1i64:
    case ARM::VQRSHLuv2i32:
    case ARM::VQRSHLuv2i64:
    case ARM::VQRSHLuv4i16:
    case ARM::VQRSHLuv4i32:
    case ARM::VQRSHLuv8i8:
    case ARM::VQRSHLuv8i16:
    case ARM::VQRSHLuv16i8:
    case ARM::VQSHLsv1i64:
    case ARM::VQSHLsv2i32:
    case ARM::VQSHLsv2i64:
    case ARM::VQSHLsv4i16:
    case ARM::VQSHLsv4i32:
    case ARM::VQSHLsv8i8:
    case ARM::VQSHLsv8i16:
    case ARM::VQSHLsv16i8:
    case ARM::VQSHLuv1i64:
    case ARM::VQSHLuv2i32:
    case ARM::VQSHLuv2i64:
    case ARM::VQSHLuv4i16:
    case ARM::VQSHLuv4i32:
    case ARM::VQSHLuv8i8:
    case ARM::VQSHLuv8i16:
    case ARM::VQSHLuv16i8:
    case ARM::VRSHLsv1i64:
    case ARM::VRSHLsv2i32:
    case ARM::VRSHLsv2i64:
    case ARM::VRSHLsv4i16:
    case ARM::VRSHLsv4i32:
    case ARM::VRSHLsv8i8:
    case ARM::VRSHLsv8i16:
    case ARM::VRSHLsv16i8:
    case ARM::VRSHLuv1i64:
    case ARM::VRSHLuv2i32:
    case ARM::VRSHLuv2i64:
    case ARM::VRSHLuv4i16:
    case ARM::VRSHLuv4i32:
    case ARM::VRSHLuv8i8:
    case ARM::VRSHLuv8i16:
    case ARM::VRSHLuv16i8:
    case ARM::VSHLsv1i64:
    case ARM::VSHLsv2i32:
    case ARM::VSHLsv2i64:
    case ARM::VSHLsv4i16:
    case ARM::VSHLsv4i32:
    case ARM::VSHLsv8i8:
    case ARM::VSHLsv8i16:
    case ARM::VSHLsv16i8:
    case ARM::VSHLuv1i64:
    case ARM::VSHLuv2i32:
    case ARM::VSHLuv2i64:
    case ARM::VSHLuv4i16:
    case ARM::VSHLuv4i32:
    case ARM::VSHLuv8i8:
    case ARM::VSHLuv8i16:
    case ARM::VSHLuv16i8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 1:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::VMLALslsv4i16:
    case ARM::VMLALsluv4i16:
    case ARM::VMLAslhd:
    case ARM::VMLAslhq:
    case ARM::VMLAslv4i16:
    case ARM::VMLAslv8i16:
    case ARM::VMLSLslsv4i16:
    case ARM::VMLSLsluv4i16:
    case ARM::VMLSslhd:
    case ARM::VMLSslhq:
    case ARM::VMLSslv4i16:
    case ARM::VMLSslv8i16:
    case ARM::VQDMLALslv4i16:
    case ARM::VQDMLSLslv4i16:
    case ARM::VQRDMLAHslv4i16:
    case ARM::VQRDMLAHslv8i16:
    case ARM::VQRDMLSHslv4i16:
    case ARM::VQRDMLSHslv8i16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 4:
        // op: lane
        return 3;
      }
      break;
    }
    case ARM::VMLALslsv2i32:
    case ARM::VMLALsluv2i32:
    case ARM::VMLAslfd:
    case ARM::VMLAslfq:
    case ARM::VMLAslv2i32:
    case ARM::VMLAslv4i32:
    case ARM::VMLSLslsv2i32:
    case ARM::VMLSLsluv2i32:
    case ARM::VMLSslfd:
    case ARM::VMLSslfq:
    case ARM::VMLSslv2i32:
    case ARM::VMLSslv4i32:
    case ARM::VQDMLALslv2i32:
    case ARM::VQDMLSLslv2i32:
    case ARM::VQRDMLAHslv2i32:
    case ARM::VQRDMLAHslv4i32:
    case ARM::VQRDMLSHslv2i32:
    case ARM::VQRDMLSHslv4i32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 4:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VCMLAv2f32:
    case ARM::VCMLAv4f16:
    case ARM::VCMLAv4f32:
    case ARM::VCMLAv8f16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 4:
        // op: rot
        return 23;
      }
      break;
    }
    case ARM::VCMLAv4f16_indexed:
    case ARM::VCMLAv8f16_indexed: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 5:
        // op: rot
        return 20;
      case 4:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VCMLAv2f32_indexed:
    case ARM::VCMLAv4f32_indexed: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 5:
        // op: rot
        return 20;
      }
      break;
    }
    case ARM::SHA1C:
    case ARM::SHA1M:
    case ARM::SHA1P:
    case ARM::SHA1SU0:
    case ARM::SHA256H:
    case ARM::SHA256H2:
    case ARM::SHA256SU1:
    case ARM::VABALsv2i64:
    case ARM::VABALsv4i32:
    case ARM::VABALsv8i16:
    case ARM::VABALuv2i64:
    case ARM::VABALuv4i32:
    case ARM::VABALuv8i16:
    case ARM::VABAsv2i32:
    case ARM::VABAsv4i16:
    case ARM::VABAsv4i32:
    case ARM::VABAsv8i8:
    case ARM::VABAsv8i16:
    case ARM::VABAsv16i8:
    case ARM::VABAuv2i32:
    case ARM::VABAuv4i16:
    case ARM::VABAuv4i32:
    case ARM::VABAuv8i8:
    case ARM::VABAuv8i16:
    case ARM::VABAuv16i8:
    case ARM::VBIFd:
    case ARM::VBIFq:
    case ARM::VBITd:
    case ARM::VBITq:
    case ARM::VBSLd:
    case ARM::VBSLq:
    case ARM::VFMAfd:
    case ARM::VFMAfq:
    case ARM::VFMAhd:
    case ARM::VFMAhq:
    case ARM::VFMSfd:
    case ARM::VFMSfq:
    case ARM::VFMShd:
    case ARM::VFMShq:
    case ARM::VMLALsv2i64:
    case ARM::VMLALsv4i32:
    case ARM::VMLALsv8i16:
    case ARM::VMLALuv2i64:
    case ARM::VMLALuv4i32:
    case ARM::VMLALuv8i16:
    case ARM::VMLAfd:
    case ARM::VMLAfq:
    case ARM::VMLAhd:
    case ARM::VMLAhq:
    case ARM::VMLAv2i32:
    case ARM::VMLAv4i16:
    case ARM::VMLAv4i32:
    case ARM::VMLAv8i8:
    case ARM::VMLAv8i16:
    case ARM::VMLAv16i8:
    case ARM::VMLSLsv2i64:
    case ARM::VMLSLsv4i32:
    case ARM::VMLSLsv8i16:
    case ARM::VMLSLuv2i64:
    case ARM::VMLSLuv4i32:
    case ARM::VMLSLuv8i16:
    case ARM::VMLSfd:
    case ARM::VMLSfq:
    case ARM::VMLShd:
    case ARM::VMLShq:
    case ARM::VMLSv2i32:
    case ARM::VMLSv4i16:
    case ARM::VMLSv4i32:
    case ARM::VMLSv8i8:
    case ARM::VMLSv8i16:
    case ARM::VMLSv16i8:
    case ARM::VQDMLALv2i64:
    case ARM::VQDMLALv4i32:
    case ARM::VQDMLSLv2i64:
    case ARM::VQDMLSLv4i32:
    case ARM::VQRDMLAHv2i32:
    case ARM::VQRDMLAHv4i16:
    case ARM::VQRDMLAHv4i32:
    case ARM::VQRDMLAHv8i16:
    case ARM::VQRDMLSHv2i32:
    case ARM::VQRDMLSHv4i16:
    case ARM::VQRDMLSHv4i32:
    case ARM::VQRDMLSHv8i16:
    case ARM::VTBX1:
    case ARM::VTBX2:
    case ARM::VTBX3:
    case ARM::VTBX4: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::VLD3LNd8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 16;
      case 8:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD3LNd16:
    case ARM::VLD3LNq16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 16;
      case 8:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD3LNd32:
    case ARM::VLD3LNq32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 16;
      case 8:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD3DUPd8:
    case ARM::VLD3DUPd16:
    case ARM::VLD3DUPd32:
    case ARM::VLD3DUPq8:
    case ARM::VLD3DUPq16:
    case ARM::VLD3DUPq32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::VLD2LNd8_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 4;
      case 5:
        // op: Rm
        return 0;
      case 8:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD2LNd16_UPD:
    case ARM::VLD2LNq16_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 4;
      case 5:
        // op: Rm
        return 0;
      case 8:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD2LNd32_UPD:
    case ARM::VLD2LNq32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 4;
      case 5:
        // op: Rm
        return 0;
      case 8:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD3d8:
    case ARM::VLD3d16:
    case ARM::VLD3d32:
    case ARM::VLD3q8:
    case ARM::VLD3q16:
    case ARM::VLD3q32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Rn
        return 4;
      }
      break;
    }
    case ARM::VLD3LNd8_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 16;
      case 6:
        // op: Rm
        return 0;
      case 10:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD3LNd16_UPD:
    case ARM::VLD3LNq16_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 16;
      case 6:
        // op: Rm
        return 0;
      case 10:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD3LNd32_UPD:
    case ARM::VLD3LNq32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 16;
      case 6:
        // op: Rm
        return 0;
      case 10:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD3DUPd8_UPD:
    case ARM::VLD3DUPd16_UPD:
    case ARM::VLD3DUPd32_UPD:
    case ARM::VLD3DUPq8_UPD:
    case ARM::VLD3DUPq16_UPD:
    case ARM::VLD3DUPq32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 16;
      case 6:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::VLD4LNd8: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 4;
      case 10:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD4LNd16:
    case ARM::VLD4LNq16: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 4;
      case 10:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD4LNd32:
    case ARM::VLD4LNq32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 4;
      case 10:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD3d8_UPD:
    case ARM::VLD3d16_UPD:
    case ARM::VLD3d32_UPD:
    case ARM::VLD3q8_UPD:
    case ARM::VLD3q16_UPD:
    case ARM::VLD3q32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 4;
      case 6:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::VLD4DUPd8:
    case ARM::VLD4DUPd16:
    case ARM::VLD4DUPd32:
    case ARM::VLD4DUPq8:
    case ARM::VLD4DUPq16:
    case ARM::VLD4DUPq32:
    case ARM::VLD4d8:
    case ARM::VLD4d16:
    case ARM::VLD4d32:
    case ARM::VLD4q8:
    case ARM::VLD4q16:
    case ARM::VLD4q32: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Rn
        return 4;
      }
      break;
    }
    case ARM::VLD4LNd8_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 5:
        // op: Rn
        return 4;
      case 7:
        // op: Rm
        return 0;
      case 12:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VLD4LNd16_UPD:
    case ARM::VLD4LNq16_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 5:
        // op: Rn
        return 4;
      case 7:
        // op: Rm
        return 0;
      case 12:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VLD4LNd32_UPD:
    case ARM::VLD4LNq32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 5:
        // op: Rn
        return 4;
      case 7:
        // op: Rm
        return 0;
      case 12:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VLD4DUPd8_UPD:
    case ARM::VLD4DUPd16_UPD:
    case ARM::VLD4DUPd32_UPD:
    case ARM::VLD4DUPq8_UPD:
    case ARM::VLD4DUPq16_UPD:
    case ARM::VLD4DUPq32_UPD:
    case ARM::VLD4d8_UPD:
    case ARM::VLD4d16_UPD:
    case ARM::VLD4d32_UPD:
    case ARM::VLD4q8_UPD:
    case ARM::VLD4q16_UPD:
    case ARM::VLD4q32_UPD: {
      switch (OpNum) {
      case 0:
        // op: Vd
        return 12;
      case 5:
        // op: Rn
        return 4;
      case 7:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::PLDWi12:
    case ARM::PLDi12:
    case ARM::PLIi12:
    case ARM::t2PLDWi8:
    case ARM::t2PLDWi12:
    case ARM::t2PLDWs:
    case ARM::t2PLDi8:
    case ARM::t2PLDi12:
    case ARM::t2PLDpci:
    case ARM::t2PLDs:
    case ARM::t2PLIi8:
    case ARM::t2PLIi12:
    case ARM::t2PLIpci:
    case ARM::t2PLIs: {
      switch (OpNum) {
      case 0:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2BFLr:
    case ARM::t2BFr: {
      switch (OpNum) {
      case 0:
        // op: b_label
        return 23;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::t2BFLi:
    case ARM::t2BFi: {
      switch (OpNum) {
      case 0:
        // op: b_label
        return 23;
      case 1:
        // op: label
        return 1;
      }
      break;
    }
    case ARM::t2MSRbanked: {
      switch (OpNum) {
      case 0:
        // op: banked
        return 4;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::t2IT: {
      switch (OpNum) {
      case 0:
        // op: cc
        return 4;
      case 1:
        // op: mask
        return 0;
      }
      break;
    }
    case ARM::BX:
    case ARM::tPICADD: {
      switch (OpNum) {
      case 0:
        // op: dst
        return 0;
      }
      break;
    }
    case ARM::tADDrSPi: {
      switch (OpNum) {
      case 0:
        // op: dst
        return 8;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::tSETEND: {
      switch (OpNum) {
      case 0:
        // op: end
        return 3;
      }
      break;
    }
    case ARM::SETEND: {
      switch (OpNum) {
      case 0:
        // op: end
        return 9;
      }
      break;
    }
    case ARM::BL:
    case ARM::BLX: {
      switch (OpNum) {
      case 0:
        // op: func
        return 0;
      }
      break;
    }
    case ARM::t2BXJ: {
      switch (OpNum) {
      case 0:
        // op: func
        return 16;
      }
      break;
    }
    case ARM::HVC:
    case ARM::t2HINT:
    case ARM::t2SUBS_PC_LR:
    case ARM::tSVC: {
      switch (OpNum) {
      case 0:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2SETPAN: {
      switch (OpNum) {
      case 0:
        // op: imm
        return 3;
      }
      break;
    }
    case ARM::tHINT: {
      switch (OpNum) {
      case 0:
        // op: imm
        return 4;
      }
      break;
    }
    case ARM::SETPAN: {
      switch (OpNum) {
      case 0:
        // op: imm
        return 9;
      }
      break;
    }
    case ARM::UDF:
    case ARM::t2HVC:
    case ARM::t2UDF: {
      switch (OpNum) {
      case 0:
        // op: imm16
        return 0;
      }
      break;
    }
    case ARM::tUDF: {
      switch (OpNum) {
      case 0:
        // op: imm8
        return 0;
      }
      break;
    }
    case ARM::CPS3p: {
      switch (OpNum) {
      case 0:
        // op: imod
        return 18;
      case 1:
        // op: iflags
        return 6;
      case 2:
        // op: mode
        return 0;
      }
      break;
    }
    case ARM::CPS2p: {
      switch (OpNum) {
      case 0:
        // op: imod
        return 18;
      case 1:
        // op: iflags
        return 6;
      }
      break;
    }
    case ARM::tCPS: {
      switch (OpNum) {
      case 0:
        // op: imod
        return 4;
      case 1:
        // op: iflags
        return 0;
      }
      break;
    }
    case ARM::t2CPS3p: {
      switch (OpNum) {
      case 0:
        // op: imod
        return 9;
      case 1:
        // op: iflags
        return 5;
      case 2:
        // op: mode
        return 0;
      }
      break;
    }
    case ARM::t2CPS2p: {
      switch (OpNum) {
      case 0:
        // op: imod
        return 9;
      case 1:
        // op: iflags
        return 5;
      }
      break;
    }
    case ARM::t2LE: {
      switch (OpNum) {
      case 0:
        // op: label
        return 1;
      }
      break;
    }
    case ARM::t2MSR_AR: {
      switch (OpNum) {
      case 0:
        // op: mask
        return 8;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::CPS1p:
    case ARM::SRSDA:
    case ARM::SRSDA_UPD:
    case ARM::SRSDB:
    case ARM::SRSDB_UPD:
    case ARM::SRSIA:
    case ARM::SRSIA_UPD:
    case ARM::SRSIB:
    case ARM::SRSIB_UPD:
    case ARM::t2CPS1p:
    case ARM::t2SRSDB:
    case ARM::t2SRSDB_UPD:
    case ARM::t2SRSIA:
    case ARM::t2SRSIA_UPD: {
      switch (OpNum) {
      case 0:
        // op: mode
        return 0;
      }
      break;
    }
    case ARM::DMB:
    case ARM::DSB:
    case ARM::ISB:
    case ARM::t2DBG:
    case ARM::t2DMB:
    case ARM::t2DSB:
    case ARM::t2ISB: {
      switch (OpNum) {
      case 0:
        // op: opt
        return 0;
      }
      break;
    }
    case ARM::t2SMC: {
      switch (OpNum) {
      case 0:
        // op: opt
        return 16;
      }
      break;
    }
    case ARM::BX_RET:
    case ARM::ERET:
    case ARM::FMSTAT:
    case ARM::MOVPCLR: {
      switch (OpNum) {
      case 0:
        // op: p
        return 28;
      }
      break;
    }
    case ARM::PLDWrs:
    case ARM::PLDrs:
    case ARM::PLIrs: {
      switch (OpNum) {
      case 0:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::BLXi:
    case ARM::t2B:
    case ARM::tB: {
      switch (OpNum) {
      case 0:
        // op: target
        return 0;
      }
      break;
    }
    case ARM::BKPT:
    case ARM::HLT:
    case ARM::tBKPT:
    case ARM::tHLT: {
      switch (OpNum) {
      case 0:
        // op: val
        return 0;
      }
      break;
    }
    case ARM::MVE_VLDRBS16_pre:
    case ARM::MVE_VLDRBS32_pre:
    case ARM::MVE_VLDRBU8_pre:
    case ARM::MVE_VLDRBU16_pre:
    case ARM::MVE_VLDRBU32_pre:
    case ARM::MVE_VLDRDU64_qi_pre:
    case ARM::MVE_VLDRHS32_pre:
    case ARM::MVE_VLDRHU16_pre:
    case ARM::MVE_VLDRHU32_pre:
    case ARM::MVE_VLDRWU32_pre:
    case ARM::MVE_VLDRWU32_qi_pre:
    case ARM::MVE_VSTRB16_pre:
    case ARM::MVE_VSTRB32_pre:
    case ARM::MVE_VSTRBU8_pre:
    case ARM::MVE_VSTRD64_qi_pre:
    case ARM::MVE_VSTRH32_pre:
    case ARM::MVE_VSTRHU16_pre:
    case ARM::MVE_VSTRW32_qi_pre:
    case ARM::MVE_VSTRWU32_pre: {
      switch (OpNum) {
      case 1:
        // op: Qd
        return 13;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::MVE_VLDRBS16_post:
    case ARM::MVE_VLDRBS32_post:
    case ARM::MVE_VLDRBU8_post:
    case ARM::MVE_VLDRBU16_post:
    case ARM::MVE_VLDRBU32_post:
    case ARM::MVE_VLDRHS32_post:
    case ARM::MVE_VLDRHU16_post:
    case ARM::MVE_VLDRHU32_post:
    case ARM::MVE_VLDRWU32_post:
    case ARM::MVE_VSTRB16_post:
    case ARM::MVE_VSTRB32_post:
    case ARM::MVE_VSTRBU8_post:
    case ARM::MVE_VSTRH32_post:
    case ARM::MVE_VSTRHU16_post:
    case ARM::MVE_VSTRWU32_post: {
      switch (OpNum) {
      case 1:
        // op: Qd
        return 13;
      case 3:
        // op: addr
        return 0;
      case 2:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::MVE_VMOV_from_lane_32: {
      switch (OpNum) {
      case 1:
        // op: Qd
        return 7;
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: Idx
        return 16;
      }
      break;
    }
    case ARM::MVE_VMOV_from_lane_s8:
    case ARM::MVE_VMOV_from_lane_u8: {
      switch (OpNum) {
      case 1:
        // op: Qd
        return 7;
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: Idx
        return 5;
      }
      break;
    }
    case ARM::MVE_VMOV_from_lane_s16:
    case ARM::MVE_VMOV_from_lane_u16: {
      switch (OpNum) {
      case 1:
        // op: Qd
        return 7;
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: Idx
        return 6;
      }
      break;
    }
    case ARM::MVE_VCVTf16s16_fix:
    case ARM::MVE_VCVTf16u16_fix:
    case ARM::MVE_VCVTf32s32_fix:
    case ARM::MVE_VCVTf32u32_fix:
    case ARM::MVE_VCVTs16f16_fix:
    case ARM::MVE_VCVTs32f32_fix:
    case ARM::MVE_VCVTu16f16_fix:
    case ARM::MVE_VCVTu32f32_fix: {
      switch (OpNum) {
      case 1:
        // op: Qm
        return 1;
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: imm6
        return 16;
      }
      break;
    }
    case ARM::MVE_VABSf16:
    case ARM::MVE_VABSf32:
    case ARM::MVE_VCVTf16s16n:
    case ARM::MVE_VCVTf16u16n:
    case ARM::MVE_VCVTf32s32n:
    case ARM::MVE_VCVTf32u32n:
    case ARM::MVE_VCVTs16f16a:
    case ARM::MVE_VCVTs16f16m:
    case ARM::MVE_VCVTs16f16n:
    case ARM::MVE_VCVTs16f16p:
    case ARM::MVE_VCVTs16f16z:
    case ARM::MVE_VCVTs32f32a:
    case ARM::MVE_VCVTs32f32m:
    case ARM::MVE_VCVTs32f32n:
    case ARM::MVE_VCVTs32f32p:
    case ARM::MVE_VCVTs32f32z:
    case ARM::MVE_VCVTu16f16a:
    case ARM::MVE_VCVTu16f16m:
    case ARM::MVE_VCVTu16f16n:
    case ARM::MVE_VCVTu16f16p:
    case ARM::MVE_VCVTu16f16z:
    case ARM::MVE_VCVTu32f32a:
    case ARM::MVE_VCVTu32f32m:
    case ARM::MVE_VCVTu32f32n:
    case ARM::MVE_VCVTu32f32p:
    case ARM::MVE_VCVTu32f32z:
    case ARM::MVE_VNEGf16:
    case ARM::MVE_VNEGf32:
    case ARM::MVE_VRINTf16A:
    case ARM::MVE_VRINTf16M:
    case ARM::MVE_VRINTf16N:
    case ARM::MVE_VRINTf16P:
    case ARM::MVE_VRINTf16X:
    case ARM::MVE_VRINTf16Z:
    case ARM::MVE_VRINTf32A:
    case ARM::MVE_VRINTf32M:
    case ARM::MVE_VRINTf32N:
    case ARM::MVE_VRINTf32P:
    case ARM::MVE_VRINTf32X:
    case ARM::MVE_VRINTf32Z: {
      switch (OpNum) {
      case 1:
        // op: Qm
        return 1;
      case 0:
        // op: Qd
        return 13;
      }
      break;
    }
    case ARM::MVE_VADDVs8no_acc:
    case ARM::MVE_VADDVs16no_acc:
    case ARM::MVE_VADDVs32no_acc:
    case ARM::MVE_VADDVu8no_acc:
    case ARM::MVE_VADDVu16no_acc:
    case ARM::MVE_VADDVu32no_acc: {
      switch (OpNum) {
      case 1:
        // op: Qm
        return 1;
      case 0:
        // op: Rda
        return 13;
      }
      break;
    }
    case ARM::MVE_VPSEL: {
      switch (OpNum) {
      case 1:
        // op: Qn
        return 7;
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::t2SMLALD:
    case ARM::t2SMLALDX:
    case ARM::t2SMLSLD:
    case ARM::t2SMLSLDX: {
      switch (OpNum) {
      case 1:
        // op: Rd
        return 8;
      case 2:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 0;
      case 0:
        // op: Ra
        return 12;
      }
      break;
    }
    case ARM::tREV:
    case ARM::tREV16:
    case ARM::tREVSH:
    case ARM::tSXTB:
    case ARM::tSXTH:
    case ARM::tUXTB:
    case ARM::tUXTH: {
      switch (OpNum) {
      case 1:
        // op: Rm
        return 3;
      case 0:
        // op: Rd
        return 0;
      }
      break;
    }
    case ARM::tCMNz:
    case ARM::tCMPhir:
    case ARM::tCMPr:
    case ARM::tTST: {
      switch (OpNum) {
      case 1:
        // op: Rm
        return 3;
      case 0:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::t2TT:
    case ARM::t2TTA:
    case ARM::t2TTAT:
    case ARM::t2TTT: {
      switch (OpNum) {
      case 1:
        // op: Rn
        return 16;
      case 0:
        // op: Rt
        return 8;
      }
      break;
    }
    case ARM::MVE_WLSTP_8:
    case ARM::MVE_WLSTP_16:
    case ARM::MVE_WLSTP_32:
    case ARM::MVE_WLSTP_64:
    case ARM::t2WLS: {
      switch (OpNum) {
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: label
        return 1;
      }
      break;
    }
    case ARM::t2LDMDB_UPD:
    case ARM::t2LDMIA_UPD:
    case ARM::t2STMDB_UPD:
    case ARM::t2STMIA_UPD: {
      switch (OpNum) {
      case 1:
        // op: Rn
        return 16;
      case 4:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::MVE_DLSTP_8:
    case ARM::MVE_DLSTP_16:
    case ARM::MVE_DLSTP_32:
    case ARM::MVE_DLSTP_64:
    case ARM::MVE_VCTP8:
    case ARM::MVE_VCTP16:
    case ARM::MVE_VCTP32:
    case ARM::MVE_VCTP64:
    case ARM::t2DLS: {
      switch (OpNum) {
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::tSTMIA_UPD: {
      switch (OpNum) {
      case 1:
        // op: Rn
        return 8;
      case 4:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::t2STRB_POST:
    case ARM::t2STRH_POST:
    case ARM::t2STR_POST: {
      switch (OpNum) {
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: Rn
        return 16;
      case 3:
        // op: offset
        return 0;
      }
      break;
    }
    case ARM::t2STRD_PRE: {
      switch (OpNum) {
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: Rt2
        return 8;
      case 3:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::t2STRD_POST: {
      switch (OpNum) {
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: Rt2
        return 8;
      case 3:
        // op: addr
        return 16;
      case 4:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2STRB_PRE:
    case ARM::t2STRH_PRE:
    case ARM::t2STR_PRE: {
      switch (OpNum) {
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::VGETLNi32: {
      switch (OpNum) {
      case 1:
        // op: V
        return 7;
      case 0:
        // op: R
        return 12;
      case 3:
        // op: p
        return 28;
      case 2:
        // op: lane
        return 21;
      }
      break;
    }
    case ARM::VGETLNs8:
    case ARM::VGETLNu8: {
      switch (OpNum) {
      case 1:
        // op: V
        return 7;
      case 0:
        // op: R
        return 12;
      case 3:
        // op: p
        return 28;
      case 2:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VGETLNs16:
    case ARM::VGETLNu16: {
      switch (OpNum) {
      case 1:
        // op: V
        return 7;
      case 0:
        // op: R
        return 12;
      case 3:
        // op: p
        return 28;
      case 2:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::MVE_VST20_8_wb:
    case ARM::MVE_VST20_16_wb:
    case ARM::MVE_VST20_32_wb:
    case ARM::MVE_VST21_8_wb:
    case ARM::MVE_VST21_16_wb:
    case ARM::MVE_VST21_32_wb:
    case ARM::MVE_VST40_8_wb:
    case ARM::MVE_VST40_16_wb:
    case ARM::MVE_VST40_32_wb:
    case ARM::MVE_VST41_8_wb:
    case ARM::MVE_VST41_16_wb:
    case ARM::MVE_VST41_32_wb:
    case ARM::MVE_VST42_8_wb:
    case ARM::MVE_VST42_16_wb:
    case ARM::MVE_VST42_32_wb:
    case ARM::MVE_VST43_8_wb:
    case ARM::MVE_VST43_16_wb:
    case ARM::MVE_VST43_32_wb: {
      switch (OpNum) {
      case 1:
        // op: VQd
        return 13;
      case 2:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::VBF16MALBQI:
    case ARM::VBF16MALTQI: {
      switch (OpNum) {
      case 1:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 4:
        // op: idx
        return 3;
      }
      break;
    }
    case ARM::BF16VDOTI_VDOTD:
    case ARM::BF16VDOTI_VDOTQ:
    case ARM::VSDOTDI:
    case ARM::VSDOTQI:
    case ARM::VSUDOTDI:
    case ARM::VSUDOTQI:
    case ARM::VUDOTDI:
    case ARM::VUDOTQI:
    case ARM::VUSDOTDI:
    case ARM::VUSDOTQI: {
      switch (OpNum) {
      case 1:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      case 4:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::BF16VDOTS_VDOTD:
    case ARM::BF16VDOTS_VDOTQ:
    case ARM::VBF16MALBQ:
    case ARM::VBF16MALTQ:
    case ARM::VMMLA:
    case ARM::VSDOTD:
    case ARM::VSDOTQ:
    case ARM::VSMMLA:
    case ARM::VUDOTD:
    case ARM::VUDOTQ:
    case ARM::VUMMLA:
    case ARM::VUSDOTD:
    case ARM::VUSDOTQ:
    case ARM::VUSMMLA: {
      switch (OpNum) {
      case 1:
        // op: Vd
        return 12;
      case 2:
        // op: Vn
        return 7;
      case 3:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::t2LDAEXB:
    case ARM::t2LDAEXH:
    case ARM::t2LDREXB:
    case ARM::t2LDREXH: {
      switch (OpNum) {
      case 1:
        // op: addr
        return 16;
      case 0:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::t2MRSbanked: {
      switch (OpNum) {
      case 1:
        // op: banked
        return 4;
      case 0:
        // op: Rd
        return 8;
      }
      break;
    }
    case ARM::CDE_VCX1_vec: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 2:
        // op: imm
        return 0;
      case 0:
        // op: Qd
        return 13;
      }
      break;
    }
    case ARM::CDE_CX1:
    case ARM::CDE_CX1D: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 2:
        // op: imm
        return 0;
      case 0:
        // op: Rd
        return 12;
      }
      break;
    }
    case ARM::CDE_VCX1_fpdp:
    case ARM::CDE_VCX1_fpsp: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 2:
        // op: imm
        return 0;
      case 0:
        // op: Vd
        return 12;
      }
      break;
    }
    case ARM::CDE_VCX1A_vec: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 3:
        // op: imm
        return 0;
      case 0:
        // op: Qd
        return 13;
      }
      break;
    }
    case ARM::CDE_CX2:
    case ARM::CDE_CX2D: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 3:
        // op: imm
        return 0;
      case 0:
        // op: Rd
        return 12;
      case 2:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::CDE_CX1A:
    case ARM::CDE_CX1DA: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 3:
        // op: imm
        return 0;
      case 0:
        // op: Rd
        return 12;
      }
      break;
    }
    case ARM::CDE_VCX1A_fpdp:
    case ARM::CDE_VCX1A_fpsp: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 3:
        // op: imm
        return 0;
      case 0:
        // op: Vd
        return 12;
      }
      break;
    }
    case ARM::CDE_VCX2_vec: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 3:
        // op: imm
        return 4;
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::CDE_VCX2_fpdp:
    case ARM::CDE_VCX2_fpsp: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 3:
        // op: imm
        return 4;
      case 0:
        // op: Vd
        return 12;
      case 2:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::CDE_CX2A:
    case ARM::CDE_CX2DA: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 4:
        // op: imm
        return 0;
      case 0:
        // op: Rd
        return 12;
      case 3:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::CDE_VCX3_vec: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 4:
        // op: imm
        return 4;
      case 0:
        // op: Qd
        return 13;
      case 3:
        // op: Qm
        return 1;
      case 2:
        // op: Qn
        return 17;
      }
      break;
    }
    case ARM::CDE_VCX2A_vec: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 4:
        // op: imm
        return 4;
      case 0:
        // op: Qd
        return 13;
      case 3:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::CDE_CX3:
    case ARM::CDE_CX3D: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 4:
        // op: imm
        return 4;
      case 0:
        // op: Rd
        return 0;
      case 2:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 12;
      }
      break;
    }
    case ARM::CDE_VCX3_fpdp:
    case ARM::CDE_VCX3_fpsp: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 4:
        // op: imm
        return 4;
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Vm
        return 0;
      case 2:
        // op: Vn
        return 7;
      }
      break;
    }
    case ARM::CDE_VCX2A_fpdp:
    case ARM::CDE_VCX2A_fpsp: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 4:
        // op: imm
        return 4;
      case 0:
        // op: Vd
        return 12;
      case 3:
        // op: Vm
        return 0;
      }
      break;
    }
    case ARM::CDE_VCX3A_vec: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 5:
        // op: imm
        return 4;
      case 0:
        // op: Qd
        return 13;
      case 4:
        // op: Qm
        return 1;
      case 3:
        // op: Qn
        return 17;
      }
      break;
    }
    case ARM::CDE_CX3A:
    case ARM::CDE_CX3DA: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 5:
        // op: imm
        return 4;
      case 0:
        // op: Rd
        return 0;
      case 3:
        // op: Rn
        return 16;
      case 4:
        // op: Rm
        return 12;
      }
      break;
    }
    case ARM::CDE_VCX3A_fpdp:
    case ARM::CDE_VCX3A_fpsp: {
      switch (OpNum) {
      case 1:
        // op: coproc
        return 8;
      case 5:
        // op: imm
        return 4;
      case 0:
        // op: Vd
        return 12;
      case 4:
        // op: Vm
        return 0;
      case 3:
        // op: Vn
        return 7;
      }
      break;
    }
    case ARM::MVE_VMOVimmf32:
    case ARM::MVE_VMOVimmi8:
    case ARM::MVE_VMOVimmi16:
    case ARM::MVE_VMOVimmi32:
    case ARM::MVE_VMOVimmi64:
    case ARM::MVE_VMVNimmi16:
    case ARM::MVE_VMVNimmi32: {
      switch (OpNum) {
      case 1:
        // op: imm
        return 0;
      case 0:
        // op: Qd
        return 13;
      }
      break;
    }
    case ARM::CDP2:
    case ARM::t2CDP:
    case ARM::t2CDP2: {
      switch (OpNum) {
      case 1:
        // op: opc1
        return 20;
      case 3:
        // op: CRn
        return 16;
      case 2:
        // op: CRd
        return 12;
      case 0:
        // op: cop
        return 8;
      case 5:
        // op: opc2
        return 5;
      case 4:
        // op: CRm
        return 0;
      }
      break;
    }
    case ARM::t2Bcc: {
      switch (OpNum) {
      case 1:
        // op: p
        return 22;
      case 0:
        // op: target
        return 0;
      }
      break;
    }
    case ARM::VCMPEZD:
    case ARM::VCMPZD: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      }
      break;
    }
    case ARM::MRS:
    case ARM::MRSsys: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      }
      break;
    }
    case ARM::VLDMSIA:
    case ARM::VSTMSIA: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: Rn
        return 16;
      case 3:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::FLDMXIA:
    case ARM::FSTMXIA:
    case ARM::VLDMDIA:
    case ARM::VSTMDIA: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: Rn
        return 16;
      case 3:
        // op: regs
        return 1;
      }
      break;
    }
    case ARM::VMRS:
    case ARM::VMRS_FPCXTNS:
    case ARM::VMRS_FPCXTS:
    case ARM::VMRS_FPEXC:
    case ARM::VMRS_FPINST:
    case ARM::VMRS_FPINST2:
    case ARM::VMRS_FPSID:
    case ARM::VMRS_MVFR0:
    case ARM::VMRS_MVFR1:
    case ARM::VMRS_MVFR2:
    case ARM::VMRS_VPR:
    case ARM::VMSR:
    case ARM::VMSR_FPCXTNS:
    case ARM::VMSR_FPCXTS:
    case ARM::VMSR_FPEXC:
    case ARM::VMSR_FPINST:
    case ARM::VMSR_FPINST2:
    case ARM::VMSR_FPSID:
    case ARM::VMSR_VPR: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::VCMPEZH:
    case ARM::VCMPEZS:
    case ARM::VCMPZH:
    case ARM::VCMPZS: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      }
      break;
    }
    case ARM::BX_pred: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: dst
        return 0;
      }
      break;
    }
    case ARM::BLX_pred:
    case ARM::BL_pred:
    case ARM::BXJ: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: func
        return 0;
      }
      break;
    }
    case ARM::HINT: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::DBG:
    case ARM::SMC: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: opt
        return 0;
      }
      break;
    }
    case ARM::SVC: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: svc
        return 0;
      }
      break;
    }
    case ARM::Bcc: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 0:
        // op: target
        return 0;
      }
      break;
    }
    case ARM::LDMDA:
    case ARM::LDMDB:
    case ARM::LDMIA:
    case ARM::LDMIB:
    case ARM::STMDA:
    case ARM::STMDB:
    case ARM::STMIA:
    case ARM::STMIB:
    case ARM::sysLDMDA:
    case ARM::sysLDMDB:
    case ARM::sysLDMIA:
    case ARM::sysLDMIB:
    case ARM::sysSTMDA:
    case ARM::sysSTMDB:
    case ARM::sysSTMIA:
    case ARM::sysSTMIB: {
      switch (OpNum) {
      case 1:
        // op: p
        return 28;
      case 3:
        // op: regs
        return 0;
      case 0:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::tBcc: {
      switch (OpNum) {
      case 1:
        // op: p
        return 8;
      case 0:
        // op: target
        return 0;
      }
      break;
    }
    case ARM::tCBNZ:
    case ARM::tCBZ: {
      switch (OpNum) {
      case 1:
        // op: target
        return 3;
      case 0:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::MVE_VCADDf16:
    case ARM::MVE_VCADDf32: {
      switch (OpNum) {
      case 2:
        // op: Qm
        return 1;
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qn
        return 7;
      case 3:
        // op: rot
        return 24;
      }
      break;
    }
    case ARM::MVE_VABDf16:
    case ARM::MVE_VABDf32:
    case ARM::MVE_VADDf16:
    case ARM::MVE_VADDf32:
    case ARM::MVE_VMULf16:
    case ARM::MVE_VMULf32:
    case ARM::MVE_VSUBf16:
    case ARM::MVE_VSUBf32: {
      switch (OpNum) {
      case 2:
        // op: Qm
        return 1;
      case 0:
        // op: Qd
        return 13;
      case 1:
        // op: Qn
        return 7;
      }
      break;
    }
    case ARM::MVE_VADDVs8acc:
    case ARM::MVE_VADDVs16acc:
    case ARM::MVE_VADDVs32acc:
    case ARM::MVE_VADDVu8acc:
    case ARM::MVE_VADDVu16acc:
    case ARM::MVE_VADDVu32acc: {
      switch (OpNum) {
      case 2:
        // op: Qm
        return 1;
      case 0:
        // op: Rda
        return 13;
      }
      break;
    }
    case ARM::MVE_VMAXAVs8:
    case ARM::MVE_VMAXAVs16:
    case ARM::MVE_VMAXAVs32:
    case ARM::MVE_VMAXNMAVf16:
    case ARM::MVE_VMAXNMAVf32:
    case ARM::MVE_VMAXNMVf16:
    case ARM::MVE_VMAXNMVf32:
    case ARM::MVE_VMAXVs8:
    case ARM::MVE_VMAXVs16:
    case ARM::MVE_VMAXVs32:
    case ARM::MVE_VMAXVu8:
    case ARM::MVE_VMAXVu16:
    case ARM::MVE_VMAXVu32:
    case ARM::MVE_VMINAVs8:
    case ARM::MVE_VMINAVs16:
    case ARM::MVE_VMINAVs32:
    case ARM::MVE_VMINNMAVf16:
    case ARM::MVE_VMINNMAVf32:
    case ARM::MVE_VMINNMVf16:
    case ARM::MVE_VMINNMVf32:
    case ARM::MVE_VMINVs8:
    case ARM::MVE_VMINVs16:
    case ARM::MVE_VMINVs32:
    case ARM::MVE_VMINVu8:
    case ARM::MVE_VMINVu16:
    case ARM::MVE_VMINVu32: {
      switch (OpNum) {
      case 2:
        // op: Qm
        return 1;
      case 0:
        // op: RdaDest
        return 12;
      }
      break;
    }
    case ARM::MVE_VADDLVs32no_acc:
    case ARM::MVE_VADDLVu32no_acc: {
      switch (OpNum) {
      case 2:
        // op: Qm
        return 1;
      case 0:
        // op: RdaLo
        return 13;
      case 1:
        // op: RdaHi
        return 20;
      }
      break;
    }
    case ARM::t2AUTG:
    case ARM::t2BXAUT: {
      switch (OpNum) {
      case 2:
        // op: Ra
        return 12;
      case 3:
        // op: Rn
        return 16;
      case 4:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::tADDspr: {
      switch (OpNum) {
      case 2:
        // op: Rm
        return 3;
      }
      break;
    }
    case ARM::MVE_VMOV_q_rr: {
      switch (OpNum) {
      case 2:
        // op: Rt
        return 0;
      case 3:
        // op: Rt2
        return 16;
      case 0:
        // op: Qd
        return 13;
      case 5:
        // op: idx2
        return 4;
      }
      break;
    }
    case ARM::MCR2:
    case ARM::t2MCR:
    case ARM::t2MCR2: {
      switch (OpNum) {
      case 2:
        // op: Rt
        return 12;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: opc1
        return 21;
      case 5:
        // op: opc2
        return 5;
      case 4:
        // op: CRm
        return 0;
      case 3:
        // op: CRn
        return 16;
      }
      break;
    }
    case ARM::MCRR2:
    case ARM::t2MCRR:
    case ARM::t2MCRR2: {
      switch (OpNum) {
      case 2:
        // op: Rt
        return 12;
      case 3:
        // op: Rt2
        return 16;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: opc1
        return 4;
      case 4:
        // op: CRm
        return 0;
      }
      break;
    }
    case ARM::VST1LNd8: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 16;
      case 3:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST3LNd8: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 16;
      case 5:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST3LNd16:
    case ARM::VST3LNq16: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 16;
      case 5:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST3LNd32:
    case ARM::VST3LNq32: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 16;
      case 5:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST1LNd16: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 3:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST1LNd32: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 3:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST2LNd8: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 4:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST2LNd16:
    case ARM::VST2LNq16: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 4:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST2LNd32:
    case ARM::VST2LNq32: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 4:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST4LNd8: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 6:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST4LNd16:
    case ARM::VST4LNq16: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 6:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST4LNd32:
    case ARM::VST4LNq32: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      case 6:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST1d8:
    case ARM::VST1d8Q:
    case ARM::VST1d8T:
    case ARM::VST1d16:
    case ARM::VST1d16Q:
    case ARM::VST1d16T:
    case ARM::VST1d32:
    case ARM::VST1d32Q:
    case ARM::VST1d32T:
    case ARM::VST1d64:
    case ARM::VST1d64Q:
    case ARM::VST1d64T:
    case ARM::VST1q8:
    case ARM::VST1q16:
    case ARM::VST1q32:
    case ARM::VST1q64:
    case ARM::VST2b8:
    case ARM::VST2b16:
    case ARM::VST2b32:
    case ARM::VST2d8:
    case ARM::VST2d16:
    case ARM::VST2d32:
    case ARM::VST2q8:
    case ARM::VST2q16:
    case ARM::VST2q32:
    case ARM::VST3d8:
    case ARM::VST3d16:
    case ARM::VST3d32:
    case ARM::VST3q8:
    case ARM::VST3q16:
    case ARM::VST3q32:
    case ARM::VST4d8:
    case ARM::VST4d16:
    case ARM::VST4d32:
    case ARM::VST4q8:
    case ARM::VST4q16:
    case ARM::VST4q32: {
      switch (OpNum) {
      case 2:
        // op: Vd
        return 12;
      case 0:
        // op: Rn
        return 4;
      }
      break;
    }
    case ARM::LDC2L_OFFSET:
    case ARM::LDC2L_PRE:
    case ARM::LDC2_OFFSET:
    case ARM::LDC2_PRE:
    case ARM::STC2L_OFFSET:
    case ARM::STC2L_PRE:
    case ARM::STC2_OFFSET:
    case ARM::STC2_PRE:
    case ARM::t2LDC2L_OFFSET:
    case ARM::t2LDC2L_PRE:
    case ARM::t2LDC2_OFFSET:
    case ARM::t2LDC2_PRE:
    case ARM::t2LDCL_OFFSET:
    case ARM::t2LDCL_PRE:
    case ARM::t2LDC_OFFSET:
    case ARM::t2LDC_PRE:
    case ARM::t2STC2L_OFFSET:
    case ARM::t2STC2L_PRE:
    case ARM::t2STC2_OFFSET:
    case ARM::t2STC2_PRE:
    case ARM::t2STCL_OFFSET:
    case ARM::t2STCL_PRE:
    case ARM::t2STC_OFFSET:
    case ARM::t2STC_PRE: {
      switch (OpNum) {
      case 2:
        // op: addr
        return 0;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: CRd
        return 12;
      }
      break;
    }
    case ARM::t2LDAEXD:
    case ARM::t2LDREXD: {
      switch (OpNum) {
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 8;
      }
      break;
    }
    case ARM::tBL: {
      switch (OpNum) {
      case 2:
        // op: func
        return 0;
      }
      break;
    }
    case ARM::tBLXi: {
      switch (OpNum) {
      case 2:
        // op: func
        return 1;
      }
      break;
    }
    case ARM::tBLXNSr:
    case ARM::tBLXr: {
      switch (OpNum) {
      case 2:
        // op: func
        return 3;
      }
      break;
    }
    case ARM::MVE_VBICimmi16:
    case ARM::MVE_VBICimmi32:
    case ARM::MVE_VORRimmi16:
    case ARM::MVE_VORRimmi32: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 0;
      case 0:
        // op: Qd
        return 13;
      }
      break;
    }
    case ARM::t2ADDspImm12:
    case ARM::t2SUBspImm12:
    case ARM::tADDspi:
    case ARM::tSUBspi: {
      switch (OpNum) {
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::MVE_LETP:
    case ARM::t2LEUpdate: {
      switch (OpNum) {
      case 2:
        // op: label
        return 1;
      }
      break;
    }
    case ARM::VABSD:
    case ARM::VCMPD:
    case ARM::VCMPED:
    case ARM::VMOVD:
    case ARM::VNEGD:
    case ARM::VRINTRD:
    case ARM::VRINTXD:
    case ARM::VRINTZD:
    case ARM::VSQRTD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::VCVTBHD:
    case ARM::VCVTTHD:
    case ARM::VSITOD:
    case ARM::VUITOD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::FCONSTD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::CLZ:
    case ARM::RBIT:
    case ARM::REV:
    case ARM::REV16:
    case ARM::REVSH: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MOVi16: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::ADR: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: label
        return 0;
      }
      break;
    }
    case ARM::CMNzrr:
    case ARM::CMPrr:
    case ARM::TEQrr:
    case ARM::TSTrr: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::CMNri:
    case ARM::CMPri:
    case ARM::TEQri:
    case ARM::TSTri: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::STL:
    case ARM::STLB:
    case ARM::STLH: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 0;
      case 1:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::VMOVRH:
    case ARM::VMOVRS: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Sn
        return 7;
      }
      break;
    }
    case ARM::LDA:
    case ARM::LDAB:
    case ARM::LDAEX:
    case ARM::LDAEXB:
    case ARM::LDAEXD:
    case ARM::LDAEXH:
    case ARM::LDAH:
    case ARM::LDREX:
    case ARM::LDREXB:
    case ARM::LDREXD:
    case ARM::LDREXH: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::VMRS_FPSCR_NZCVQC:
    case ARM::VMRS_P0: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::VCVTSD:
    case ARM::VJCVT:
    case ARM::VTOSIRD:
    case ARM::VTOSIZD:
    case ARM::VTOUIRD:
    case ARM::VTOUIZD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::VABSH:
    case ARM::VABSS:
    case ARM::VCMPEH:
    case ARM::VCMPES:
    case ARM::VCMPH:
    case ARM::VCMPS:
    case ARM::VCVTBHS:
    case ARM::VCVTTHS:
    case ARM::VMOVS:
    case ARM::VNEGH:
    case ARM::VNEGS:
    case ARM::VRINTRH:
    case ARM::VRINTRS:
    case ARM::VRINTXH:
    case ARM::VRINTXS:
    case ARM::VRINTZH:
    case ARM::VRINTZS:
    case ARM::VSITOH:
    case ARM::VSITOS:
    case ARM::VSQRTH:
    case ARM::VSQRTS:
    case ARM::VTOSIRH:
    case ARM::VTOSIRS:
    case ARM::VTOSIZH:
    case ARM::VTOSIZS:
    case ARM::VTOUIRH:
    case ARM::VTOUIRS:
    case ARM::VTOUIZH:
    case ARM::VTOUIZS:
    case ARM::VUITOH:
    case ARM::VUITOS: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::FCONSTH:
    case ARM::FCONSTS: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::VMOVHR:
    case ARM::VMOVSR: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: Sn
        return 7;
      case 1:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::VLDR_FPCXTNS_off:
    case ARM::VLDR_FPCXTS_off:
    case ARM::VLDR_FPSCR_NZCVQC_off:
    case ARM::VLDR_FPSCR_off:
    case ARM::VLDR_VPR_off:
    case ARM::VSTR_FPCXTNS_off:
    case ARM::VSTR_FPCXTS_off:
    case ARM::VSTR_FPSCR_NZCVQC_off:
    case ARM::VSTR_FPSCR_off:
    case ARM::VSTR_VPR_off: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::MSRbanked: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: banked
        return 8;
      case 1:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::MSR: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: mask
        return 16;
      case 1:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::MSRi: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 0:
        // op: mask
        return 16;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::VLDMSDB_UPD:
    case ARM::VLDMSIA_UPD:
    case ARM::VSTMSDB_UPD:
    case ARM::VSTMSIA_UPD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 1:
        // op: Rn
        return 16;
      case 4:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::FLDMXDB_UPD:
    case ARM::FLDMXIA_UPD:
    case ARM::FSTMXDB_UPD:
    case ARM::FSTMXIA_UPD:
    case ARM::VLDMDDB_UPD:
    case ARM::VLDMDIA_UPD:
    case ARM::VSTMDDB_UPD:
    case ARM::VSTMDIA_UPD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 1:
        // op: Rn
        return 16;
      case 4:
        // op: regs
        return 1;
      }
      break;
    }
    case ARM::VMSR_FPSCR_NZCVQC:
    case ARM::VMSR_P0: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::VCVTDS: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 1:
        // op: Sm
        return 0;
      case 0:
        // op: Dd
        return 12;
      }
      break;
    }
    case ARM::MRSbanked: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 1:
        // op: banked
        return 8;
      case 0:
        // op: Rd
        return 12;
      }
      break;
    }
    case ARM::LDMDA_UPD:
    case ARM::LDMDB_UPD:
    case ARM::LDMIA_UPD:
    case ARM::LDMIB_UPD:
    case ARM::STMDA_UPD:
    case ARM::STMDB_UPD:
    case ARM::STMIA_UPD:
    case ARM::STMIB_UPD:
    case ARM::sysLDMDA_UPD:
    case ARM::sysLDMDB_UPD:
    case ARM::sysLDMIA_UPD:
    case ARM::sysLDMIB_UPD:
    case ARM::sysSTMDA_UPD:
    case ARM::sysSTMDB_UPD:
    case ARM::sysSTMIA_UPD:
    case ARM::sysSTMIB_UPD: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 4:
        // op: regs
        return 0;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::MOVr:
    case ARM::MOVr_TC:
    case ARM::MVNr: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 4:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MOVi:
    case ARM::MVNi: {
      switch (OpNum) {
      case 2:
        // op: p
        return 28;
      case 4:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::VSCCLRMS:
    case ARM::t2CLRM:
    case ARM::tPOP:
    case ARM::tPUSH: {
      switch (OpNum) {
      case 2:
        // op: regs
        return 0;
      }
      break;
    }
    case ARM::VSCCLRMD: {
      switch (OpNum) {
      case 2:
        // op: regs
        return 1;
      }
      break;
    }
    case ARM::MVE_VCMLAf16:
    case ARM::MVE_VCMLAf32: {
      switch (OpNum) {
      case 3:
        // op: Qm
        return 1;
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qn
        return 7;
      case 4:
        // op: rot
        return 23;
      }
      break;
    }
    case ARM::MVE_VFMAf16:
    case ARM::MVE_VFMAf32:
    case ARM::MVE_VFMSf16:
    case ARM::MVE_VFMSf32: {
      switch (OpNum) {
      case 3:
        // op: Qm
        return 1;
      case 0:
        // op: Qd
        return 13;
      case 2:
        // op: Qn
        return 7;
      }
      break;
    }
    case ARM::MVE_VABAVs8:
    case ARM::MVE_VABAVs16:
    case ARM::MVE_VABAVs32:
    case ARM::MVE_VABAVu8:
    case ARM::MVE_VABAVu16:
    case ARM::MVE_VABAVu32: {
      switch (OpNum) {
      case 3:
        // op: Qm
        return 1;
      case 2:
        // op: Qn
        return 7;
      case 0:
        // op: Rda
        return 12;
      }
      break;
    }
    case ARM::tADDrr:
    case ARM::tSUBrr: {
      switch (OpNum) {
      case 3:
        // op: Rm
        return 6;
      case 2:
        // op: Rn
        return 3;
      case 0:
        // op: Rd
        return 0;
      }
      break;
    }
    case ARM::VST1d8Qwb_fixed:
    case ARM::VST1d8Twb_fixed:
    case ARM::VST1d8wb_fixed:
    case ARM::VST1d16Qwb_fixed:
    case ARM::VST1d16Twb_fixed:
    case ARM::VST1d16wb_fixed:
    case ARM::VST1d32Qwb_fixed:
    case ARM::VST1d32Twb_fixed:
    case ARM::VST1d32wb_fixed:
    case ARM::VST1d64Qwb_fixed:
    case ARM::VST1d64Twb_fixed:
    case ARM::VST1d64wb_fixed:
    case ARM::VST1q8wb_fixed:
    case ARM::VST1q16wb_fixed:
    case ARM::VST1q32wb_fixed:
    case ARM::VST1q64wb_fixed:
    case ARM::VST2b8wb_fixed:
    case ARM::VST2b16wb_fixed:
    case ARM::VST2b32wb_fixed:
    case ARM::VST2d8wb_fixed:
    case ARM::VST2d16wb_fixed:
    case ARM::VST2d32wb_fixed:
    case ARM::VST2q8wb_fixed:
    case ARM::VST2q16wb_fixed:
    case ARM::VST2q32wb_fixed: {
      switch (OpNum) {
      case 3:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      }
      break;
    }
    case ARM::t2BFic: {
      switch (OpNum) {
      case 3:
        // op: bcond
        return 18;
      case 1:
        // op: label
        return 1;
      case 2:
        // op: ba_label
        return 17;
      case 0:
        // op: b_label
        return 23;
      }
      break;
    }
    case ARM::MVE_VPTv4f32:
    case ARM::MVE_VPTv4s32:
    case ARM::MVE_VPTv8f16:
    case ARM::MVE_VPTv8s16:
    case ARM::MVE_VPTv16s8: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 0;
      case 0:
        // op: Mk
        return 13;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VCMPf16:
    case ARM::MVE_VCMPf32:
    case ARM::MVE_VCMPs8:
    case ARM::MVE_VCMPs16:
    case ARM::MVE_VCMPs32: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 0;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VPTv4f32r:
    case ARM::MVE_VPTv4s32r:
    case ARM::MVE_VPTv8f16r:
    case ARM::MVE_VPTv8s16r:
    case ARM::MVE_VPTv16s8r: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 5;
      case 0:
        // op: Mk
        return 13;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VCMPf16r:
    case ARM::MVE_VCMPf32r:
    case ARM::MVE_VCMPs8r:
    case ARM::MVE_VCMPs16r:
    case ARM::MVE_VCMPs32r: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 5;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VPTv4i32:
    case ARM::MVE_VPTv4u32:
    case ARM::MVE_VPTv8i16:
    case ARM::MVE_VPTv8u16:
    case ARM::MVE_VPTv16i8:
    case ARM::MVE_VPTv16u8: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 7;
      case 0:
        // op: Mk
        return 13;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VPTv4i32r:
    case ARM::MVE_VPTv4u32r:
    case ARM::MVE_VPTv8i16r:
    case ARM::MVE_VPTv8u16r:
    case ARM::MVE_VPTv16i8r:
    case ARM::MVE_VPTv16u8r: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 7;
      case 0:
        // op: Mk
        return 13;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VCMPi8:
    case ARM::MVE_VCMPi16:
    case ARM::MVE_VCMPi32:
    case ARM::MVE_VCMPu8:
    case ARM::MVE_VCMPu16:
    case ARM::MVE_VCMPu32: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 7;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Qm
        return 1;
      }
      break;
    }
    case ARM::MVE_VCMPi8r:
    case ARM::MVE_VCMPi16r:
    case ARM::MVE_VCMPi32r:
    case ARM::MVE_VCMPu8r:
    case ARM::MVE_VCMPu16r:
    case ARM::MVE_VCMPu32r: {
      switch (OpNum) {
      case 3:
        // op: fc
        return 7;
      case 1:
        // op: Qn
        return 17;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::LDC2L_POST:
    case ARM::LDC2_POST:
    case ARM::STC2L_POST:
    case ARM::STC2_POST:
    case ARM::t2LDC2L_POST:
    case ARM::t2LDC2_POST:
    case ARM::t2LDCL_POST:
    case ARM::t2LDC_POST:
    case ARM::t2STC2L_POST:
    case ARM::t2STC2_POST:
    case ARM::t2STCL_POST:
    case ARM::t2STC_POST: {
      switch (OpNum) {
      case 3:
        // op: offset
        return 0;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: CRd
        return 12;
      }
      break;
    }
    case ARM::LDC2L_OPTION:
    case ARM::LDC2_OPTION:
    case ARM::STC2L_OPTION:
    case ARM::STC2_OPTION:
    case ARM::t2LDC2L_OPTION:
    case ARM::t2LDC2_OPTION:
    case ARM::t2LDCL_OPTION:
    case ARM::t2LDC_OPTION:
    case ARM::t2STC2L_OPTION:
    case ARM::t2STC2_OPTION:
    case ARM::t2STCL_OPTION:
    case ARM::t2STC_OPTION: {
      switch (OpNum) {
      case 3:
        // op: option
        return 0;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: CRd
        return 12;
      }
      break;
    }
    case ARM::VADDD:
    case ARM::VDIVD:
    case ARM::VMULD:
    case ARM::VNMULD:
    case ARM::VSUBD: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: Dn
        return 7;
      case 2:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::VLDRD:
    case ARM::VSTRD: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::VMOVDRR: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Dm
        return 0;
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: Rt2
        return 16;
      }
      break;
    }
    case ARM::SXTB:
    case ARM::SXTB16:
    case ARM::SXTH:
    case ARM::UXTB:
    case ARM::UXTB16:
    case ARM::UXTH: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rm
        return 0;
      case 2:
        // op: rot
        return 10;
      }
      break;
    }
    case ARM::SEL: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::SSAT16:
    case ARM::USAT16: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: sat_imm
        return 16;
      case 2:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::MOVTi16: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::BFC: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 2:
        // op: imm
        return 7;
      }
      break;
    }
    case ARM::SDIV:
    case ARM::SMMUL:
    case ARM::SMMULR:
    case ARM::UDIV:
    case ARM::USAD8: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 16;
      case 1:
        // op: Rn
        return 0;
      case 2:
        // op: Rm
        return 8;
      }
      break;
    }
    case ARM::CMNzrsi:
    case ARM::CMPrsi:
    case ARM::TEQrsi:
    case ARM::TSTrsi: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::SWP:
    case ARM::SWPB: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 0;
      case 2:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::LDRBi12:
    case ARM::LDRcp:
    case ARM::LDRi12:
    case ARM::STRBi12:
    case ARM::STRi12: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::VADDH:
    case ARM::VADDS:
    case ARM::VDIVH:
    case ARM::VDIVS:
    case ARM::VMULH:
    case ARM::VMULS:
    case ARM::VNMULH:
    case ARM::VNMULS:
    case ARM::VSUBH:
    case ARM::VSUBS: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: Sn
        return 7;
      case 2:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::VLDRH:
    case ARM::VLDRS:
    case ARM::VSTRH:
    case ARM::VSTRS: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::BF16_VCVTB:
    case ARM::BF16_VCVTT:
    case ARM::VCVTBSH:
    case ARM::VCVTTSH: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 2:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::SMUAD:
    case ARM::SMUADX:
    case ARM::SMULBB:
    case ARM::SMULBT:
    case ARM::SMULTB:
    case ARM::SMULTT:
    case ARM::SMULWB:
    case ARM::SMULWT:
    case ARM::SMUSD:
    case ARM::SMUSDX: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 1:
        // op: Rn
        return 0;
      case 2:
        // op: Rm
        return 8;
      case 0:
        // op: Rd
        return 16;
      }
      break;
    }
    case ARM::QADD8:
    case ARM::QADD16:
    case ARM::QASX:
    case ARM::QSAX:
    case ARM::QSUB8:
    case ARM::QSUB16:
    case ARM::SADD8:
    case ARM::SADD16:
    case ARM::SASX:
    case ARM::SHADD8:
    case ARM::SHADD16:
    case ARM::SHASX:
    case ARM::SHSAX:
    case ARM::SHSUB8:
    case ARM::SHSUB16:
    case ARM::SSAX:
    case ARM::SSUB8:
    case ARM::SSUB16:
    case ARM::UADD8:
    case ARM::UADD16:
    case ARM::UASX:
    case ARM::UHADD8:
    case ARM::UHADD16:
    case ARM::UHASX:
    case ARM::UHSAX:
    case ARM::UHSUB8:
    case ARM::UHSUB16:
    case ARM::UQADD8:
    case ARM::UQADD16:
    case ARM::UQASX:
    case ARM::UQSAX:
    case ARM::UQSUB8:
    case ARM::UQSUB16:
    case ARM::USAX:
    case ARM::USUB8:
    case ARM::USUB16: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 1:
        // op: Rn
        return 16;
      case 0:
        // op: Rd
        return 12;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::STLEX:
    case ARM::STLEXB:
    case ARM::STLEXD:
    case ARM::STLEXH:
    case ARM::STREX:
    case ARM::STREXB:
    case ARM::STREXD:
    case ARM::STREXH: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 0;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: Rd
        return 12;
      }
      break;
    }
    case ARM::VLDR_FPCXTNS_pre:
    case ARM::VLDR_FPCXTS_pre:
    case ARM::VLDR_FPSCR_NZCVQC_pre:
    case ARM::VLDR_FPSCR_pre:
    case ARM::VLDR_P0_off:
    case ARM::VLDR_VPR_pre:
    case ARM::VSTR_FPCXTNS_pre:
    case ARM::VSTR_FPCXTS_pre:
    case ARM::VSTR_FPSCR_NZCVQC_pre:
    case ARM::VSTR_FPSCR_pre:
    case ARM::VSTR_P0_off:
    case ARM::VSTR_VPR_pre: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 1:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::VMOVRRD: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 2:
        // op: Dm
        return 0;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 16;
      }
      break;
    }
    case ARM::VCVTBDH:
    case ARM::VCVTTDH: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 2:
        // op: Dm
        return 0;
      case 0:
        // op: Sd
        return 12;
      }
      break;
    }
    case ARM::QADD:
    case ARM::QDADD:
    case ARM::QDSUB:
    case ARM::QSUB: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 2:
        // op: Rn
        return 16;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::VLDR_FPCXTNS_post:
    case ARM::VLDR_FPCXTS_post:
    case ARM::VLDR_FPSCR_NZCVQC_post:
    case ARM::VLDR_FPSCR_post:
    case ARM::VLDR_VPR_post:
    case ARM::VSTR_FPCXTNS_post:
    case ARM::VSTR_FPCXTS_post:
    case ARM::VSTR_FPSCR_NZCVQC_post:
    case ARM::VSTR_FPSCR_post:
    case ARM::VSTR_VPR_post: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 0;
      case 1:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::VSHTOD:
    case ARM::VSHTOH:
    case ARM::VSHTOS:
    case ARM::VSLTOD:
    case ARM::VSLTOH:
    case ARM::VSLTOS:
    case ARM::VTOSHD:
    case ARM::VTOSHH:
    case ARM::VTOSHS:
    case ARM::VTOSLD:
    case ARM::VTOSLH:
    case ARM::VTOSLS:
    case ARM::VTOUHD:
    case ARM::VTOUHH:
    case ARM::VTOUHS:
    case ARM::VTOULD:
    case ARM::VTOULH:
    case ARM::VTOULS:
    case ARM::VUHTOD:
    case ARM::VUHTOH:
    case ARM::VUHTOS:
    case ARM::VULTOD:
    case ARM::VULTOH:
    case ARM::VULTOS: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 2:
        // op: fbits
        return 0;
      case 0:
        // op: dst
        return 12;
      }
      break;
    }
    case ARM::ADCrr:
    case ARM::ADDrr:
    case ARM::ANDrr:
    case ARM::BICrr:
    case ARM::EORrr:
    case ARM::ORRrr:
    case ARM::RSBrr:
    case ARM::RSCrr:
    case ARM::SBCrr:
    case ARM::SUBrr: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::ADCri:
    case ARM::ADDri:
    case ARM::ANDri:
    case ARM::BICri:
    case ARM::EORri:
    case ARM::ORRri:
    case ARM::RSBri:
    case ARM::RSCri:
    case ARM::SBCri:
    case ARM::SUBri: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::MVNsi: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::MOVsi: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: src
        return 0;
      }
      break;
    }
    case ARM::MUL: {
      switch (OpNum) {
      case 3:
        // op: p
        return 28;
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 16;
      case 2:
        // op: Rm
        return 8;
      case 1:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::MVE_VADDLVs32acc:
    case ARM::MVE_VADDLVu32acc: {
      switch (OpNum) {
      case 4:
        // op: Qm
        return 1;
      case 0:
        // op: RdaLo
        return 13;
      case 1:
        // op: RdaHi
        return 20;
      }
      break;
    }
    case ARM::VST1LNd8_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 0;
      case 5:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST3LNd8_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 0;
      case 7:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST3LNd16_UPD:
    case ARM::VST3LNq16_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 0;
      case 7:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST3LNd32_UPD:
    case ARM::VST3LNq32_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 3:
        // op: Rm
        return 0;
      case 7:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST1LNd16_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 5:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST1LNd32_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 5:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST2LNd8_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 6:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST2LNd16_UPD:
    case ARM::VST2LNq16_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 6:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST2LNd32_UPD:
    case ARM::VST2LNq32_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 6:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST4LNd8_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 8:
        // op: lane
        return 5;
      }
      break;
    }
    case ARM::VST4LNd16_UPD:
    case ARM::VST4LNq16_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 8:
        // op: lane
        return 6;
      }
      break;
    }
    case ARM::VST4LNd32_UPD:
    case ARM::VST4LNq32_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      case 8:
        // op: lane
        return 7;
      }
      break;
    }
    case ARM::VST1d8Qwb_register:
    case ARM::VST1d8Twb_register:
    case ARM::VST1d8wb_register:
    case ARM::VST1d16Qwb_register:
    case ARM::VST1d16Twb_register:
    case ARM::VST1d16wb_register:
    case ARM::VST1d32Qwb_register:
    case ARM::VST1d32Twb_register:
    case ARM::VST1d32wb_register:
    case ARM::VST1d64Qwb_register:
    case ARM::VST1d64Twb_register:
    case ARM::VST1d64wb_register:
    case ARM::VST1q8wb_register:
    case ARM::VST1q16wb_register:
    case ARM::VST1q32wb_register:
    case ARM::VST1q64wb_register:
    case ARM::VST2b8wb_register:
    case ARM::VST2b16wb_register:
    case ARM::VST2b32wb_register:
    case ARM::VST2d8wb_register:
    case ARM::VST2d16wb_register:
    case ARM::VST2d32wb_register:
    case ARM::VST2q8wb_register:
    case ARM::VST2q16wb_register:
    case ARM::VST2q32wb_register:
    case ARM::VST3d8_UPD:
    case ARM::VST3d16_UPD:
    case ARM::VST3d32_UPD:
    case ARM::VST3q8_UPD:
    case ARM::VST3q16_UPD:
    case ARM::VST3q32_UPD:
    case ARM::VST4d8_UPD:
    case ARM::VST4d16_UPD:
    case ARM::VST4d32_UPD:
    case ARM::VST4q8_UPD:
    case ARM::VST4q16_UPD:
    case ARM::VST4q32_UPD: {
      switch (OpNum) {
      case 4:
        // op: Vd
        return 12;
      case 1:
        // op: Rn
        return 4;
      case 3:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::MVE_VSHLC: {
      switch (OpNum) {
      case 4:
        // op: imm
        return 16;
      case 1:
        // op: Qd
        return 13;
      case 0:
        // op: RdmDest
        return 0;
      }
      break;
    }
    case ARM::VFMAD:
    case ARM::VFMSD:
    case ARM::VFNMAD:
    case ARM::VFNMSD:
    case ARM::VMLAD:
    case ARM::VMLSD:
    case ARM::VNMLAD:
    case ARM::VNMLSD: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Dd
        return 12;
      case 2:
        // op: Dn
        return 7;
      case 3:
        // op: Dm
        return 0;
      }
      break;
    }
    case ARM::SBFX:
    case ARM::UBFX: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 0;
      case 2:
        // op: lsb
        return 7;
      case 3:
        // op: width
        return 16;
      }
      break;
    }
    case ARM::PKHBT:
    case ARM::PKHTB: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      case 3:
        // op: sh
        return 7;
      }
      break;
    }
    case ARM::SSAT:
    case ARM::USAT: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: sat_imm
        return 16;
      case 2:
        // op: Rn
        return 0;
      case 3:
        // op: sh
        return 6;
      }
      break;
    }
    case ARM::SXTAB:
    case ARM::SXTAB16:
    case ARM::SXTAH:
    case ARM::UXTAB:
    case ARM::UXTAB16:
    case ARM::UXTAH: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 2:
        // op: Rm
        return 0;
      case 1:
        // op: Rn
        return 16;
      case 3:
        // op: rot
        return 10;
      }
      break;
    }
    case ARM::BFI: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 12;
      case 2:
        // op: Rn
        return 0;
      case 3:
        // op: imm
        return 7;
      }
      break;
    }
    case ARM::SMMLA:
    case ARM::SMMLAR:
    case ARM::SMMLS:
    case ARM::SMMLSR:
    case ARM::USADA8: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 16;
      case 1:
        // op: Rn
        return 0;
      case 2:
        // op: Rm
        return 8;
      case 3:
        // op: Ra
        return 12;
      }
      break;
    }
    case ARM::MLS: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rd
        return 16;
      case 2:
        // op: Rm
        return 8;
      case 1:
        // op: Rn
        return 0;
      case 3:
        // op: Ra
        return 12;
      }
      break;
    }
    case ARM::CMNzrsr:
    case ARM::CMPrsr:
    case ARM::TEQrsr:
    case ARM::TSTrsr: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rn
        return 16;
      case 1:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::LDRBrs:
    case ARM::LDRrs:
    case ARM::STRBrs:
    case ARM::STRrs: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::LDRB_PRE_IMM:
    case ARM::LDR_PRE_IMM: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::VFMAH:
    case ARM::VFMAS:
    case ARM::VFMSH:
    case ARM::VFMSS:
    case ARM::VFNMAH:
    case ARM::VFNMAS:
    case ARM::VFNMSH:
    case ARM::VFNMSS:
    case ARM::VMLAH:
    case ARM::VMLAS:
    case ARM::VMLSH:
    case ARM::VMLSS:
    case ARM::VNMLAH:
    case ARM::VNMLAS:
    case ARM::VNMLSH:
    case ARM::VNMLSS: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: Sd
        return 12;
      case 2:
        // op: Sn
        return 7;
      case 3:
        // op: Sm
        return 0;
      }
      break;
    }
    case ARM::VMOVSRR: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 0:
        // op: dst1
        return 0;
      case 2:
        // op: src1
        return 12;
      case 3:
        // op: src2
        return 16;
      }
      break;
    }
    case ARM::SMLABB:
    case ARM::SMLABT:
    case ARM::SMLATB:
    case ARM::SMLATT:
    case ARM::SMLAWB:
    case ARM::SMLAWT: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 1:
        // op: Rn
        return 0;
      case 2:
        // op: Rm
        return 8;
      case 0:
        // op: Rd
        return 16;
      case 3:
        // op: Ra
        return 12;
      }
      break;
    }
    case ARM::SMLAD:
    case ARM::SMLADX:
    case ARM::SMLSD:
    case ARM::SMLSDX: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 1:
        // op: Rn
        return 0;
      case 2:
        // op: Rm
        return 8;
      case 3:
        // op: Ra
        return 12;
      case 0:
        // op: Rd
        return 16;
      }
      break;
    }
    case ARM::STRB_PRE_IMM:
    case ARM::STR_PRE_IMM: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::LDRH:
    case ARM::LDRSB:
    case ARM::LDRSH:
    case ARM::STRH: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 1:
        // op: addr
        return 0;
      case 0:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::LDCL_OFFSET:
    case ARM::LDCL_PRE:
    case ARM::LDC_OFFSET:
    case ARM::LDC_PRE:
    case ARM::STCL_OFFSET:
    case ARM::STCL_PRE:
    case ARM::STC_OFFSET:
    case ARM::STC_PRE: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 0;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: CRd
        return 12;
      }
      break;
    }
    case ARM::VLDR_P0_pre:
    case ARM::VSTR_P0_pre: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::LDRHTi:
    case ARM::LDRSBTi:
    case ARM::LDRSHTi: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: Rt
        return 12;
      case 3:
        // op: offset
        return 0;
      }
      break;
    }
    case ARM::STRHTi: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 16;
      case 1:
        // op: Rt
        return 12;
      case 3:
        // op: offset
        return 0;
      }
      break;
    }
    case ARM::VMOVRRS: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 2:
        // op: src1
        return 0;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 16;
      }
      break;
    }
    case ARM::VLDR_P0_post:
    case ARM::VSTR_P0_post: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 3:
        // op: addr
        return 0;
      case 2:
        // op: Rn
        return 16;
      }
      break;
    }
    case ARM::LDCL_POST:
    case ARM::LDC_POST:
    case ARM::STCL_POST:
    case ARM::STC_POST: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 3:
        // op: offset
        return 0;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: CRd
        return 12;
      }
      break;
    }
    case ARM::LDCL_OPTION:
    case ARM::LDC_OPTION:
    case ARM::STCL_OPTION:
    case ARM::STC_OPTION: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 3:
        // op: option
        return 0;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: CRd
        return 12;
      }
      break;
    }
    case ARM::ADCrsi:
    case ARM::ADDrsi:
    case ARM::ANDrsi:
    case ARM::BICrsi:
    case ARM::EORrsi:
    case ARM::ORRrsi:
    case ARM::RSBrsi:
    case ARM::RSCrsi:
    case ARM::SBCrsi:
    case ARM::SUBrsi: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 6:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::MVNsr: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 6:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::MOVsr: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 6:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: src
        return 0;
      }
      break;
    }
    case ARM::MLA: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 6:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 16;
      case 2:
        // op: Rm
        return 8;
      case 1:
        // op: Rn
        return 0;
      case 3:
        // op: Ra
        return 12;
      }
      break;
    }
    case ARM::SMULL:
    case ARM::UMULL: {
      switch (OpNum) {
      case 4:
        // op: p
        return 28;
      case 6:
        // op: s
        return 20;
      case 0:
        // op: RdLo
        return 12;
      case 1:
        // op: RdHi
        return 16;
      case 3:
        // op: Rm
        return 8;
      case 2:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::t2MOVr:
    case ARM::t2MVNr:
    case ARM::t2RRX: {
      switch (OpNum) {
      case 4:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2MOVi:
    case ARM::t2MVNi: {
      switch (OpNum) {
      case 4:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::MRRC: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: Rt2
        return 16;
      case 2:
        // op: cop
        return 8;
      case 3:
        // op: opc1
        return 4;
      case 4:
        // op: CRm
        return 0;
      }
      break;
    }
    case ARM::LDRB_PRE_REG:
    case ARM::LDRH_PRE:
    case ARM::LDRSB_PRE:
    case ARM::LDRSH_PRE:
    case ARM::LDR_PRE_REG: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::LDRBT_POST_IMM:
    case ARM::LDRBT_POST_REG:
    case ARM::LDRB_POST_IMM:
    case ARM::LDRB_POST_REG:
    case ARM::LDRH_POST:
    case ARM::LDRSB_POST:
    case ARM::LDRSH_POST:
    case ARM::LDRT_POST_IMM:
    case ARM::LDRT_POST_REG:
    case ARM::LDR_POST_IMM:
    case ARM::LDR_POST_REG: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 3:
        // op: offset
        return 0;
      case 2:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::STRB_PRE_REG:
    case ARM::STRH_PRE:
    case ARM::STR_PRE_REG: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 12;
      case 2:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::STRBT_POST_IMM:
    case ARM::STRBT_POST_REG:
    case ARM::STRB_POST_IMM:
    case ARM::STRB_POST_REG:
    case ARM::STRH_POST:
    case ARM::STRT_POST_IMM:
    case ARM::STRT_POST_REG:
    case ARM::STR_POST_IMM:
    case ARM::STR_POST_REG: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 12;
      case 3:
        // op: offset
        return 0;
      case 2:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::MCRR: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 2:
        // op: Rt
        return 12;
      case 3:
        // op: Rt2
        return 16;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: opc1
        return 4;
      case 4:
        // op: CRm
        return 0;
      }
      break;
    }
    case ARM::LDRD:
    case ARM::STRD: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 0;
      case 0:
        // op: Rt
        return 12;
      }
      break;
    }
    case ARM::LDRHTr:
    case ARM::LDRSBTr:
    case ARM::LDRSHTr: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 16;
      case 0:
        // op: Rt
        return 12;
      case 3:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::STRHTr: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 2:
        // op: addr
        return 16;
      case 1:
        // op: Rt
        return 12;
      case 3:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::ADCrsr:
    case ARM::ADDrsr:
    case ARM::ANDrsr:
    case ARM::BICrsr:
    case ARM::EORrsr:
    case ARM::ORRrsr:
    case ARM::RSBrsr:
    case ARM::RSCrsr:
    case ARM::SBCrsr:
    case ARM::SUBrsr: {
      switch (OpNum) {
      case 5:
        // op: p
        return 28;
      case 7:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 12;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: shift
        return 0;
      }
      break;
    }
    case ARM::t2ASRri:
    case ARM::t2LSLri:
    case ARM::t2LSRri:
    case ARM::t2RORri: {
      switch (OpNum) {
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rm
        return 0;
      case 2:
        // op: imm
        return 6;
      }
      break;
    }
    case ARM::t2ADCrr:
    case ARM::t2ADDrr:
    case ARM::t2ANDrr:
    case ARM::t2ASRrr:
    case ARM::t2BICrr:
    case ARM::t2EORrr:
    case ARM::t2LSLrr:
    case ARM::t2LSRrr:
    case ARM::t2ORNrr:
    case ARM::t2ORRrr:
    case ARM::t2RORrr:
    case ARM::t2RSBrr:
    case ARM::t2SBCrr:
    case ARM::t2SUBrr: {
      switch (OpNum) {
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: Rm
        return 0;
      }
      break;
    }
    case ARM::t2ADCri:
    case ARM::t2ADDri:
    case ARM::t2ANDri:
    case ARM::t2BICri:
    case ARM::t2EORri:
    case ARM::t2ORNri:
    case ARM::t2ORRri:
    case ARM::t2RSBri:
    case ARM::t2SBCri:
    case ARM::t2SUBri: {
      switch (OpNum) {
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::t2MVNs: {
      switch (OpNum) {
      case 5:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: ShiftedRm
        return 0;
      }
      break;
    }
    case ARM::t2ADDspImm:
    case ARM::t2SUBspImm: {
      switch (OpNum) {
      case 5:
        // op: s
        return 20;
      case 2:
        // op: imm
        return 0;
      }
      break;
    }
    case ARM::UMAAL: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 0:
        // op: RdLo
        return 12;
      case 1:
        // op: RdHi
        return 16;
      case 3:
        // op: Rm
        return 8;
      case 2:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::MRC: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 1:
        // op: cop
        return 8;
      case 2:
        // op: opc1
        return 21;
      case 5:
        // op: opc2
        return 5;
      case 4:
        // op: CRm
        return 0;
      case 3:
        // op: CRn
        return 16;
      }
      break;
    }
    case ARM::LDRD_PRE: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 3:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::LDRD_POST: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 0:
        // op: Rt
        return 12;
      case 4:
        // op: offset
        return 0;
      case 3:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::STRD_PRE: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 12;
      case 3:
        // op: addr
        return 0;
      }
      break;
    }
    case ARM::STRD_POST: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 1:
        // op: Rt
        return 12;
      case 4:
        // op: offset
        return 0;
      case 3:
        // op: addr
        return 16;
      }
      break;
    }
    case ARM::CDP: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 1:
        // op: opc1
        return 20;
      case 3:
        // op: CRn
        return 16;
      case 2:
        // op: CRd
        return 12;
      case 0:
        // op: cop
        return 8;
      case 5:
        // op: opc2
        return 5;
      case 4:
        // op: CRm
        return 0;
      }
      break;
    }
    case ARM::SMLALBB:
    case ARM::SMLALBT:
    case ARM::SMLALD:
    case ARM::SMLALDX:
    case ARM::SMLALTB:
    case ARM::SMLALTT:
    case ARM::SMLSLD:
    case ARM::SMLSLDX: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 2:
        // op: Rn
        return 0;
      case 3:
        // op: Rm
        return 8;
      case 0:
        // op: RdLo
        return 12;
      case 1:
        // op: RdHi
        return 16;
      }
      break;
    }
    case ARM::MCR: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 2:
        // op: Rt
        return 12;
      case 0:
        // op: cop
        return 8;
      case 1:
        // op: opc1
        return 21;
      case 5:
        // op: opc2
        return 5;
      case 4:
        // op: CRm
        return 0;
      case 3:
        // op: CRn
        return 16;
      }
      break;
    }
    case ARM::SMLAL:
    case ARM::UMLAL: {
      switch (OpNum) {
      case 6:
        // op: p
        return 28;
      case 8:
        // op: s
        return 20;
      case 0:
        // op: RdLo
        return 12;
      case 1:
        // op: RdHi
        return 16;
      case 3:
        // op: Rm
        return 8;
      case 2:
        // op: Rn
        return 0;
      }
      break;
    }
    case ARM::t2ADCrs:
    case ARM::t2ADDrs:
    case ARM::t2ANDrs:
    case ARM::t2BICrs:
    case ARM::t2EORrs:
    case ARM::t2ORNrs:
    case ARM::t2ORRrs:
    case ARM::t2RSBrs:
    case ARM::t2SBCrs:
    case ARM::t2SUBrs: {
      switch (OpNum) {
      case 6:
        // op: s
        return 20;
      case 0:
        // op: Rd
        return 8;
      case 1:
        // op: Rn
        return 16;
      case 2:
        // op: ShiftedRm
        return 0;
      }
      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