LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/ARM - ARMGenGlobalISel.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 91 163 55.8 %
Date: 2018-07-13 00:08:38 Functions: 4 8 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Global Instruction Selector for the ARM target                             *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : #ifdef GET_GLOBALISEL_PREDICATE_BITSET
      10             : const unsigned MAX_SUBTARGET_PREDICATES = 64;
      11             : using PredicateBitset = llvm::PredicateBitsetImpl<MAX_SUBTARGET_PREDICATES>;
      12             : #endif // ifdef GET_GLOBALISEL_PREDICATE_BITSET
      13             : 
      14             : #ifdef GET_GLOBALISEL_TEMPORARIES_DECL
      15             :   mutable MatcherState State;
      16             :   typedef ComplexRendererFns(ARMInstructionSelector::*ComplexMatcherMemFn)(MachineOperand &) const;
      17             :   typedef void(ARMInstructionSelector::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr&) const;
      18             :   const ISelInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ISelInfo;
      19             :   static ARMInstructionSelector::ComplexMatcherMemFn ComplexPredicateFns[];
      20             :   static ARMInstructionSelector::CustomRendererFn CustomRenderers[];
      21             :   bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
      22             :   bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
      23             :   bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
      24             :   const int64_t *getMatchTable() const override;
      25             :   bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI) const override;
      26             : #endif // ifdef GET_GLOBALISEL_TEMPORARIES_DECL
      27             : 
      28             : #ifdef GET_GLOBALISEL_TEMPORARIES_INIT
      29             : , State(0),
      30       19340 : ISelInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
      31             : #endif // ifdef GET_GLOBALISEL_TEMPORARIES_INIT
      32             : 
      33             : #ifdef GET_GLOBALISEL_IMPL
      34             : // Bits for subtarget features that participate in instruction matching.
      35             : enum SubtargetFeatureBits : uint8_t {
      36             :   Feature_NoHonorSignDependentRoundingBit = 57,
      37             :   Feature_HasV4TBit = 6,
      38             :   Feature_NoV4TBit = 7,
      39             :   Feature_HasV5TBit = 8,
      40             :   Feature_HasV5TEBit = 12,
      41             :   Feature_HasV6Bit = 0,
      42             :   Feature_NoV6Bit = 10,
      43             :   Feature_HasV6MBit = 29,
      44             :   Feature_HasV8MBaselineBit = 33,
      45             :   Feature_HasV6T2Bit = 9,
      46             :   Feature_HasV6KBit = 19,
      47             :   Feature_HasV7Bit = 3,
      48             :   Feature_HasV8Bit = 15,
      49             :   Feature_PreV8Bit = 20,
      50             :   Feature_HasV8_1aBit = 59,
      51             :   Feature_NoVFPBit = 23,
      52             :   Feature_HasVFP2Bit = 22,
      53             :   Feature_HasVFP3Bit = 47,
      54             :   Feature_HasVFP4Bit = 45,
      55             :   Feature_HasDPVFPBit = 39,
      56             :   Feature_HasFPARMv8Bit = 41,
      57             :   Feature_HasNEONBit = 48,
      58             :   Feature_HasCryptoBit = 49,
      59             :   Feature_HasDotProdBit = 50,
      60             :   Feature_HasCRCBit = 14,
      61             :   Feature_HasFP16Bit = 54,
      62             :   Feature_HasFullFP16Bit = 38,
      63             :   Feature_HasDivideInThumbBit = 35,
      64             :   Feature_HasDivideInARMBit = 13,
      65             :   Feature_HasDSPBit = 34,
      66             :   Feature_HasDBBit = 16,
      67             :   Feature_HasV7ClrexBit = 18,
      68             :   Feature_HasAcquireReleaseBit = 17,
      69             :   Feature_HasMPBit = 2,
      70             :   Feature_HasZCZBit = 51,
      71             :   Feature_UseNEONForFPBit = 62,
      72             :   Feature_DontUseNEONForFPBit = 40,
      73             :   Feature_IsThumbBit = 27,
      74             :   Feature_IsThumb1OnlyBit = 28,
      75             :   Feature_IsThumb2Bit = 32,
      76             :   Feature_IsNotMClassBit = 36,
      77             :   Feature_IsARMBit = 1,
      78             :   Feature_IsWindowsBit = 30,
      79             :   Feature_IsNotWindowsBit = 31,
      80             :   Feature_IsReadTPHardBit = 55,
      81             :   Feature_IsReadTPSoftBit = 21,
      82             :   Feature_UseNaClTrapBit = 4,
      83             :   Feature_DontUseNaClTrapBit = 5,
      84             :   Feature_UseMovtBit = 37,
      85             :   Feature_DontUseMovtBit = 24,
      86             :   Feature_UseMovtInPicBit = 25,
      87             :   Feature_DontUseMovtInPicBit = 26,
      88             :   Feature_UseFPVMLxBit = 44,
      89             :   Feature_UseMulOpsBit = 11,
      90             :   Feature_UseFusedMACBit = 46,
      91             :   Feature_DontUseFusedMACBit = 43,
      92             :   Feature_HasFastVGETLNi32Bit = 52,
      93             :   Feature_HasSlowVGETLNi32Bit = 60,
      94             :   Feature_HasFastVDUP32Bit = 53,
      95             :   Feature_HasSlowVDUP32Bit = 61,
      96             :   Feature_UseVMOVSRBit = 42,
      97             :   Feature_DontUseVMOVSRBit = 63,
      98             :   Feature_IsLEBit = 56,
      99             :   Feature_IsBEBit = 58,
     100             : };
     101             : 
     102        4835 : PredicateBitset ARMInstructionSelector::
     103             : computeAvailableModuleFeatures(const ARMSubtarget *Subtarget) const {
     104        4835 :   PredicateBitset Features;
     105        4835 :   if (!TM.Options.HonorSignDependentRoundingFPMath())
     106             :     Features[Feature_NoHonorSignDependentRoundingBit] = 1;
     107        4835 :   if (Subtarget->hasV4TOps())
     108             :     Features[Feature_HasV4TBit] = 1;
     109        4835 :   if (!Subtarget->hasV4TOps())
     110             :     Features[Feature_NoV4TBit] = 1;
     111        4835 :   if (Subtarget->hasV5TOps())
     112             :     Features[Feature_HasV5TBit] = 1;
     113        4835 :   if (Subtarget->hasV5TEOps())
     114             :     Features[Feature_HasV5TEBit] = 1;
     115        4835 :   if (Subtarget->hasV6Ops())
     116             :     Features[Feature_HasV6Bit] = 1;
     117        4835 :   if (!Subtarget->hasV6Ops())
     118             :     Features[Feature_NoV6Bit] = 1;
     119        4835 :   if (Subtarget->hasV6MOps())
     120             :     Features[Feature_HasV6MBit] = 1;
     121        4835 :   if (Subtarget->hasV8MBaselineOps())
     122             :     Features[Feature_HasV8MBaselineBit] = 1;
     123        4835 :   if (Subtarget->hasV6T2Ops())
     124             :     Features[Feature_HasV6T2Bit] = 1;
     125        4835 :   if (Subtarget->hasV6KOps())
     126             :     Features[Feature_HasV6KBit] = 1;
     127        4835 :   if (Subtarget->hasV7Ops())
     128             :     Features[Feature_HasV7Bit] = 1;
     129        4835 :   if (Subtarget->hasV8Ops())
     130             :     Features[Feature_HasV8Bit] = 1;
     131        4835 :   if (!Subtarget->hasV8Ops())
     132             :     Features[Feature_PreV8Bit] = 1;
     133        4835 :   if (Subtarget->hasV8_1aOps())
     134             :     Features[Feature_HasV8_1aBit] = 1;
     135        4835 :   if (!Subtarget->hasVFP2())
     136             :     Features[Feature_NoVFPBit] = 1;
     137        4835 :   if (Subtarget->hasVFP2())
     138             :     Features[Feature_HasVFP2Bit] = 1;
     139        4835 :   if (Subtarget->hasVFP3())
     140             :     Features[Feature_HasVFP3Bit] = 1;
     141        4835 :   if (Subtarget->hasVFP4())
     142             :     Features[Feature_HasVFP4Bit] = 1;
     143        4835 :   if (!Subtarget->isFPOnlySP())
     144             :     Features[Feature_HasDPVFPBit] = 1;
     145        4835 :   if (Subtarget->hasFPARMv8())
     146             :     Features[Feature_HasFPARMv8Bit] = 1;
     147        4835 :   if (Subtarget->hasNEON())
     148             :     Features[Feature_HasNEONBit] = 1;
     149        4835 :   if (Subtarget->hasCrypto())
     150             :     Features[Feature_HasCryptoBit] = 1;
     151        4835 :   if (Subtarget->hasDotProd())
     152             :     Features[Feature_HasDotProdBit] = 1;
     153        4835 :   if (Subtarget->hasCRC())
     154             :     Features[Feature_HasCRCBit] = 1;
     155        4835 :   if (Subtarget->hasFP16())
     156             :     Features[Feature_HasFP16Bit] = 1;
     157        4835 :   if (Subtarget->hasFullFP16())
     158             :     Features[Feature_HasFullFP16Bit] = 1;
     159        4835 :   if (Subtarget->hasDivideInThumbMode())
     160             :     Features[Feature_HasDivideInThumbBit] = 1;
     161        4835 :   if (Subtarget->hasDivideInARMMode())
     162             :     Features[Feature_HasDivideInARMBit] = 1;
     163        4835 :   if (Subtarget->hasDSP())
     164             :     Features[Feature_HasDSPBit] = 1;
     165        4835 :   if (Subtarget->hasDataBarrier())
     166             :     Features[Feature_HasDBBit] = 1;
     167        4835 :   if (Subtarget->hasV7Clrex())
     168             :     Features[Feature_HasV7ClrexBit] = 1;
     169        4835 :   if (Subtarget->hasAcquireRelease())
     170             :     Features[Feature_HasAcquireReleaseBit] = 1;
     171        4835 :   if (Subtarget->hasMPExtension())
     172             :     Features[Feature_HasMPBit] = 1;
     173        4835 :   if (Subtarget->hasZeroCycleZeroing())
     174             :     Features[Feature_HasZCZBit] = 1;
     175             :   if (Subtarget->useNEONForSinglePrecisionFP())
     176             :     Features[Feature_UseNEONForFPBit] = 1;
     177             :   if (!Subtarget->useNEONForSinglePrecisionFP())
     178             :     Features[Feature_DontUseNEONForFPBit] = 1;
     179        4835 :   if (Subtarget->isThumb())
     180             :     Features[Feature_IsThumbBit] = 1;
     181             :   if (Subtarget->isThumb1Only())
     182             :     Features[Feature_IsThumb1OnlyBit] = 1;
     183             :   if (Subtarget->isThumb2())
     184             :     Features[Feature_IsThumb2Bit] = 1;
     185        4835 :   if (!Subtarget->isMClass())
     186             :     Features[Feature_IsNotMClassBit] = 1;
     187        4835 :   if (!Subtarget->isThumb())
     188             :     Features[Feature_IsARMBit] = 1;
     189        4835 :   if (Subtarget->isTargetWindows())
     190             :     Features[Feature_IsWindowsBit] = 1;
     191        4835 :   if (!Subtarget->isTargetWindows())
     192             :     Features[Feature_IsNotWindowsBit] = 1;
     193        4835 :   if (Subtarget->isReadTPHard())
     194             :     Features[Feature_IsReadTPHardBit] = 1;
     195        4835 :   if (!Subtarget->isReadTPHard())
     196             :     Features[Feature_IsReadTPSoftBit] = 1;
     197        4835 :   if (Subtarget->useNaClTrap())
     198             :     Features[Feature_UseNaClTrapBit] = 1;
     199        4835 :   if (!Subtarget->useNaClTrap())
     200             :     Features[Feature_DontUseNaClTrapBit] = 1;
     201        4835 :   if (Subtarget->useFPVMLx())
     202             :     Features[Feature_UseFPVMLxBit] = 1;
     203        4835 :   if (Subtarget->useMulOps())
     204             :     Features[Feature_UseMulOpsBit] = 1;
     205        4835 :   if ((TM.Options.AllowFPOpFusion == FPOpFusion::Fast &&  Subtarget->hasVFP4()) && !Subtarget->isTargetDarwin())
     206             :     Features[Feature_UseFusedMACBit] = 1;
     207        4835 :   if (!(TM.Options.AllowFPOpFusion == FPOpFusion::Fast && Subtarget->hasVFP4()) || Subtarget->isTargetDarwin())
     208             :     Features[Feature_DontUseFusedMACBit] = 1;
     209        4835 :   if (!Subtarget->hasSlowVGETLNi32())
     210             :     Features[Feature_HasFastVGETLNi32Bit] = 1;
     211        4835 :   if (Subtarget->hasSlowVGETLNi32())
     212             :     Features[Feature_HasSlowVGETLNi32Bit] = 1;
     213        4835 :   if (!Subtarget->hasSlowVDUP32())
     214             :     Features[Feature_HasFastVDUP32Bit] = 1;
     215        4835 :   if (Subtarget->hasSlowVDUP32())
     216             :     Features[Feature_HasSlowVDUP32Bit] = 1;
     217        4835 :   if (Subtarget->preferVMOVSR() ||!Subtarget->useNEONForSinglePrecisionFP())
     218             :     Features[Feature_UseVMOVSRBit] = 1;
     219        4835 :   if (!Subtarget->preferVMOVSR() &&Subtarget->useNEONForSinglePrecisionFP())
     220             :     Features[Feature_DontUseVMOVSRBit] = 1;
     221        4835 :   return Features;
     222             : }
     223             : 
     224         706 : PredicateBitset ARMInstructionSelector::
     225             : computeAvailableFunctionFeatures(const ARMSubtarget *Subtarget, const MachineFunction *MF) const {
     226         706 :   PredicateBitset Features;
     227         706 :   if (Subtarget->useMovt(*MF))
     228             :     Features[Feature_UseMovtBit] = 1;
     229         706 :   if (!Subtarget->useMovt(*MF))
     230             :     Features[Feature_DontUseMovtBit] = 1;
     231         706 :   if (Subtarget->useMovt(*MF) && Subtarget->allowPositionIndependentMovt())
     232             :     Features[Feature_UseMovtInPicBit] = 1;
     233         706 :   if (!Subtarget->useMovt(*MF) || !Subtarget->allowPositionIndependentMovt())
     234             :     Features[Feature_DontUseMovtInPicBit] = 1;
     235         706 :   if (MF->getDataLayout().isLittleEndian())
     236             :     Features[Feature_IsLEBit] = 1;
     237         706 :   if (MF->getDataLayout().isBigEndian())
     238             :     Features[Feature_IsBEBit] = 1;
     239         706 :   return Features;
     240             : }
     241             : 
     242             : // LLT Objects.
     243             : enum {
     244             :   GILLT_s16,
     245             :   GILLT_s32,
     246             :   GILLT_s64,
     247             :   GILLT_v2s32,
     248             :   GILLT_v2s64,
     249             :   GILLT_v4s16,
     250             :   GILLT_v4s32,
     251             :   GILLT_v8s8,
     252             :   GILLT_v8s16,
     253             :   GILLT_v16s8,
     254             : };
     255             : const static size_t NumTypeObjects = 10;
     256             : const static LLT TypeObjects[] = {
     257             :   LLT::scalar(16),
     258             :   LLT::scalar(32),
     259             :   LLT::scalar(64),
     260             :   LLT::vector(2, 32),
     261             :   LLT::vector(2, 64),
     262             :   LLT::vector(4, 16),
     263             :   LLT::vector(4, 32),
     264             :   LLT::vector(8, 8),
     265             :   LLT::vector(8, 16),
     266             :   LLT::vector(16, 8),
     267       99743 : };
     268             : 
     269             : // Feature bitsets.
     270             : enum {
     271             :   GIFBS_Invalid,
     272             :   GIFBS_HasDotProd,
     273             :   GIFBS_HasFPARMv8,
     274             :   GIFBS_HasFullFP16,
     275             :   GIFBS_HasNEON,
     276             :   GIFBS_HasVFP2,
     277             :   GIFBS_HasVFP4,
     278             :   GIFBS_IsARM,
     279             :   GIFBS_IsBE,
     280             :   GIFBS_IsLE,
     281             :   GIFBS_IsThumb,
     282             :   GIFBS_IsThumb2,
     283             :   GIFBS_NoHonorSignDependentRounding,
     284             :   GIFBS_DontUseNEONForFP_HasVFP2,
     285             :   GIFBS_HasCrypto_HasV8,
     286             :   GIFBS_HasDB_IsARM,
     287             :   GIFBS_HasDB_IsThumb,
     288             :   GIFBS_HasDPVFP_HasFPARMv8,
     289             :   GIFBS_HasDPVFP_HasVFP2,
     290             :   GIFBS_HasDPVFP_HasVFP4,
     291             :   GIFBS_HasDPVFP_NoHonorSignDependentRounding,
     292             :   GIFBS_HasDSP_IsThumb2,
     293             :   GIFBS_HasDivideInARM_IsARM,
     294             :   GIFBS_HasFP16_HasNEON,
     295             :   GIFBS_HasFullFP16_HasNEON,
     296             :   GIFBS_HasNEON_HasV8,
     297             :   GIFBS_HasNEON_HasV8_1a,
     298             :   GIFBS_HasV5T_IsARM,
     299             :   GIFBS_HasV5TE_IsARM,
     300             :   GIFBS_HasV6_IsARM,
     301             :   GIFBS_HasV6K_IsARM,
     302             :   GIFBS_HasV6M_IsThumb,
     303             :   GIFBS_HasV6T2_IsARM,
     304             :   GIFBS_HasV6T2_IsThumb2,
     305             :   GIFBS_HasV7_IsARM,
     306             :   GIFBS_HasV7Clrex_IsThumb,
     307             :   GIFBS_HasV8MBaseline_IsThumb,
     308             :   GIFBS_HasVFP2_UseVMOVSR,
     309             :   GIFBS_IsARM_NoV6,
     310             :   GIFBS_IsARM_PreV8,
     311             :   GIFBS_IsThumb_IsThumb1Only,
     312             :   GIFBS_IsThumb_IsWindows,
     313             :   GIFBS_IsThumb_UseMovt,
     314             :   GIFBS_IsThumb2_PreV8,
     315             :   GIFBS_IsThumb2_UseMulOps,
     316             :   GIFBS_HasCRC_HasV8_IsARM,
     317             :   GIFBS_HasCRC_HasV8_IsThumb2,
     318             :   GIFBS_HasDSP_IsThumb2_UseMulOps,
     319             :   GIFBS_HasDivideInThumb_HasV8MBaseline_IsThumb,
     320             :   GIFBS_HasFullFP16_HasNEON_HasV8,
     321             :   GIFBS_HasFullFP16_HasNEON_UseFusedMAC,
     322             :   GIFBS_HasV5TE_IsARM_UseMulOps,
     323             :   GIFBS_HasV6_IsARM_UseMulOps,
     324             :   GIFBS_HasV6_IsThumb_IsThumb1Only,
     325             :   GIFBS_HasV6T2_IsARM_UseMulOps,
     326             :   GIFBS_IsARM_NoV6_UseMulOps,
     327             :   GIFBS_DontUseFusedMAC_HasFullFP16_HasNEON_UseFPVMLx,
     328             : };
     329             : const static PredicateBitset FeatureBitsets[] {
     330             :   {}, // GIFBS_Invalid
     331             :   {Feature_HasDotProdBit, },
     332             :   {Feature_HasFPARMv8Bit, },
     333             :   {Feature_HasFullFP16Bit, },
     334             :   {Feature_HasNEONBit, },
     335             :   {Feature_HasVFP2Bit, },
     336             :   {Feature_HasVFP4Bit, },
     337             :   {Feature_IsARMBit, },
     338             :   {Feature_IsBEBit, },
     339             :   {Feature_IsLEBit, },
     340             :   {Feature_IsThumbBit, },
     341             :   {Feature_IsThumb2Bit, },
     342             :   {Feature_NoHonorSignDependentRoundingBit, },
     343             :   {Feature_DontUseNEONForFPBit, Feature_HasVFP2Bit, },
     344             :   {Feature_HasCryptoBit, Feature_HasV8Bit, },
     345             :   {Feature_HasDBBit, Feature_IsARMBit, },
     346             :   {Feature_HasDBBit, Feature_IsThumbBit, },
     347             :   {Feature_HasDPVFPBit, Feature_HasFPARMv8Bit, },
     348             :   {Feature_HasDPVFPBit, Feature_HasVFP2Bit, },
     349             :   {Feature_HasDPVFPBit, Feature_HasVFP4Bit, },
     350             :   {Feature_HasDPVFPBit, Feature_NoHonorSignDependentRoundingBit, },
     351             :   {Feature_HasDSPBit, Feature_IsThumb2Bit, },
     352             :   {Feature_HasDivideInARMBit, Feature_IsARMBit, },
     353             :   {Feature_HasFP16Bit, Feature_HasNEONBit, },
     354             :   {Feature_HasFullFP16Bit, Feature_HasNEONBit, },
     355             :   {Feature_HasNEONBit, Feature_HasV8Bit, },
     356             :   {Feature_HasNEONBit, Feature_HasV8_1aBit, },
     357             :   {Feature_HasV5TBit, Feature_IsARMBit, },
     358             :   {Feature_HasV5TEBit, Feature_IsARMBit, },
     359             :   {Feature_HasV6Bit, Feature_IsARMBit, },
     360             :   {Feature_HasV6KBit, Feature_IsARMBit, },
     361             :   {Feature_HasV6MBit, Feature_IsThumbBit, },
     362             :   {Feature_HasV6T2Bit, Feature_IsARMBit, },
     363             :   {Feature_HasV6T2Bit, Feature_IsThumb2Bit, },
     364             :   {Feature_HasV7Bit, Feature_IsARMBit, },
     365             :   {Feature_HasV7ClrexBit, Feature_IsThumbBit, },
     366             :   {Feature_HasV8MBaselineBit, Feature_IsThumbBit, },
     367             :   {Feature_HasVFP2Bit, Feature_UseVMOVSRBit, },
     368             :   {Feature_IsARMBit, Feature_NoV6Bit, },
     369             :   {Feature_IsARMBit, Feature_PreV8Bit, },
     370             :   {Feature_IsThumbBit, Feature_IsThumb1OnlyBit, },
     371             :   {Feature_IsThumbBit, Feature_IsWindowsBit, },
     372             :   {Feature_IsThumbBit, Feature_UseMovtBit, },
     373             :   {Feature_IsThumb2Bit, Feature_PreV8Bit, },
     374             :   {Feature_IsThumb2Bit, Feature_UseMulOpsBit, },
     375             :   {Feature_HasCRCBit, Feature_HasV8Bit, Feature_IsARMBit, },
     376             :   {Feature_HasCRCBit, Feature_HasV8Bit, Feature_IsThumb2Bit, },
     377             :   {Feature_HasDSPBit, Feature_IsThumb2Bit, Feature_UseMulOpsBit, },
     378             :   {Feature_HasDivideInThumbBit, Feature_HasV8MBaselineBit, Feature_IsThumbBit, },
     379             :   {Feature_HasFullFP16Bit, Feature_HasNEONBit, Feature_HasV8Bit, },
     380             :   {Feature_HasFullFP16Bit, Feature_HasNEONBit, Feature_UseFusedMACBit, },
     381             :   {Feature_HasV5TEBit, Feature_IsARMBit, Feature_UseMulOpsBit, },
     382             :   {Feature_HasV6Bit, Feature_IsARMBit, Feature_UseMulOpsBit, },
     383             :   {Feature_HasV6Bit, Feature_IsThumbBit, Feature_IsThumb1OnlyBit, },
     384             :   {Feature_HasV6T2Bit, Feature_IsARMBit, Feature_UseMulOpsBit, },
     385             :   {Feature_IsARMBit, Feature_NoV6Bit, Feature_UseMulOpsBit, },
     386             :   {Feature_DontUseFusedMACBit, Feature_HasFullFP16Bit, Feature_HasNEONBit, Feature_UseFPVMLxBit, },
     387       99743 : };
     388             : 
     389             : // ComplexPattern predicates.
     390             : enum {
     391             :   GICP_Invalid,
     392             : };
     393             : // See constructor for table contents
     394             : 
     395             : // PatFrag predicates.
     396             : enum {
     397             :   GIPFP_I64_Predicate_VectorIndex16 = GIPFP_I64_Invalid + 1,
     398             :   GIPFP_I64_Predicate_VectorIndex32,
     399             :   GIPFP_I64_Predicate_VectorIndex64,
     400             :   GIPFP_I64_Predicate_VectorIndex8,
     401             :   GIPFP_I64_Predicate_imm0_15,
     402             :   GIPFP_I64_Predicate_imm0_239,
     403             :   GIPFP_I64_Predicate_imm0_255,
     404             :   GIPFP_I64_Predicate_imm0_31,
     405             :   GIPFP_I64_Predicate_imm0_32,
     406             :   GIPFP_I64_Predicate_imm0_4095,
     407             :   GIPFP_I64_Predicate_imm0_63,
     408             :   GIPFP_I64_Predicate_imm0_65535,
     409             :   GIPFP_I64_Predicate_imm0_65535_neg,
     410             :   GIPFP_I64_Predicate_imm0_7,
     411             :   GIPFP_I64_Predicate_imm16,
     412             :   GIPFP_I64_Predicate_imm16_31,
     413             :   GIPFP_I64_Predicate_imm1_15,
     414             :   GIPFP_I64_Predicate_imm1_16,
     415             :   GIPFP_I64_Predicate_imm1_31,
     416             :   GIPFP_I64_Predicate_imm1_7,
     417             :   GIPFP_I64_Predicate_imm24b,
     418             :   GIPFP_I64_Predicate_imm256_510,
     419             :   GIPFP_I64_Predicate_imm32,
     420             :   GIPFP_I64_Predicate_imm8,
     421             :   GIPFP_I64_Predicate_imm8_255,
     422             :   GIPFP_I64_Predicate_imm8_or_16,
     423             :   GIPFP_I64_Predicate_mod_imm,
     424             :   GIPFP_I64_Predicate_pkh_asr_amt,
     425             :   GIPFP_I64_Predicate_pkh_lsl_amt,
     426             :   GIPFP_I64_Predicate_shr_imm16,
     427             :   GIPFP_I64_Predicate_shr_imm32,
     428             :   GIPFP_I64_Predicate_shr_imm64,
     429             :   GIPFP_I64_Predicate_shr_imm8,
     430             :   GIPFP_I64_Predicate_t2_so_imm,
     431             :   GIPFP_I64_Predicate_t2_so_imm_neg,
     432             : };
     433          71 : bool ARMInstructionSelector::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
     434          71 :   switch (PredicateID) {
     435           0 :   case GIPFP_I64_Predicate_VectorIndex16: {
     436             :     
     437           0 :   return ((uint64_t)Imm) < 4;
     438             : 
     439             :     llvm_unreachable("ImmediateCode should have returned");
     440             :     return false;
     441             :   }
     442           0 :   case GIPFP_I64_Predicate_VectorIndex32: {
     443             :     
     444           0 :   return ((uint64_t)Imm) < 2;
     445             : 
     446             :     llvm_unreachable("ImmediateCode should have returned");
     447             :     return false;
     448             :   }
     449           0 :   case GIPFP_I64_Predicate_VectorIndex64: {
     450             :     
     451           0 :   return ((uint64_t)Imm) < 1;
     452             : 
     453             :     llvm_unreachable("ImmediateCode should have returned");
     454             :     return false;
     455             :   }
     456           0 :   case GIPFP_I64_Predicate_VectorIndex8: {
     457             :     
     458           0 :   return ((uint64_t)Imm) < 8;
     459             : 
     460             :     llvm_unreachable("ImmediateCode should have returned");
     461             :     return false;
     462             :   }
     463           0 :   case GIPFP_I64_Predicate_imm0_15: {
     464             :     
     465           0 :   return Imm >= 0 && Imm < 16;
     466             : 
     467             :     llvm_unreachable("ImmediateCode should have returned");
     468             :     return false;
     469             :   }
     470           0 :   case GIPFP_I64_Predicate_imm0_239: {
     471           0 :      return Imm >= 0 && Imm < 240; 
     472             :     llvm_unreachable("ImmediateCode should have returned");
     473             :     return false;
     474             :   }
     475           0 :   case GIPFP_I64_Predicate_imm0_255: {
     476           0 :      return Imm >= 0 && Imm < 256; 
     477             :     llvm_unreachable("ImmediateCode should have returned");
     478             :     return false;
     479             :   }
     480           0 :   case GIPFP_I64_Predicate_imm0_31: {
     481             :     
     482           0 :   return Imm >= 0 && Imm < 32;
     483             : 
     484             :     llvm_unreachable("ImmediateCode should have returned");
     485             :     return false;
     486             :   }
     487           0 :   case GIPFP_I64_Predicate_imm0_32: {
     488             :     
     489           0 :   return Imm >= 0 && Imm < 33;
     490             : 
     491             :     llvm_unreachable("ImmediateCode should have returned");
     492             :     return false;
     493             :   }
     494           0 :   case GIPFP_I64_Predicate_imm0_4095: {
     495             :     
     496           0 :   return Imm >= 0 && Imm < 4096;
     497             : 
     498             :     llvm_unreachable("ImmediateCode should have returned");
     499             :     return false;
     500             :   }
     501           0 :   case GIPFP_I64_Predicate_imm0_63: {
     502             :     
     503           0 :   return Imm >= 0 && Imm < 64;
     504             : 
     505             :     llvm_unreachable("ImmediateCode should have returned");
     506             :     return false;
     507             :   }
     508           1 :   case GIPFP_I64_Predicate_imm0_65535: {
     509             :     
     510           1 :   return Imm >= 0 && Imm < 65536;
     511             : 
     512             :     llvm_unreachable("ImmediateCode should have returned");
     513             :     return false;
     514             :   }
     515           0 :   case GIPFP_I64_Predicate_imm0_65535_neg: {
     516             :     
     517           0 :   return -Imm >= 0 && -Imm < 65536;
     518             : 
     519             :     llvm_unreachable("ImmediateCode should have returned");
     520             :     return false;
     521             :   }
     522           0 :   case GIPFP_I64_Predicate_imm0_7: {
     523             :     
     524           0 :   return Imm >= 0 && Imm < 8;
     525             : 
     526             :     llvm_unreachable("ImmediateCode should have returned");
     527             :     return false;
     528             :   }
     529           1 :   case GIPFP_I64_Predicate_imm16: {
     530           1 :      return Imm == 16; 
     531             :     llvm_unreachable("ImmediateCode should have returned");
     532             :     return false;
     533             :   }
     534           2 :   case GIPFP_I64_Predicate_imm16_31: {
     535             :     
     536           2 :   return (int32_t)Imm >= 16 && (int32_t)Imm < 32;
     537             : 
     538             :     llvm_unreachable("ImmediateCode should have returned");
     539             :     return false;
     540             :   }
     541           1 :   case GIPFP_I64_Predicate_imm1_15: {
     542           1 :      return Imm > 0 && Imm < 16; 
     543             :     llvm_unreachable("ImmediateCode should have returned");
     544             :     return false;
     545             :   }
     546           0 :   case GIPFP_I64_Predicate_imm1_16: {
     547             :     
     548           0 :     return Imm > 0 && Imm <= 16;
     549             :   
     550             :     llvm_unreachable("ImmediateCode should have returned");
     551             :     return false;
     552             :   }
     553           0 :   case GIPFP_I64_Predicate_imm1_31: {
     554           0 :      return Imm > 0 && Imm < 32; 
     555             :     llvm_unreachable("ImmediateCode should have returned");
     556             :     return false;
     557             :   }
     558           0 :   case GIPFP_I64_Predicate_imm1_7: {
     559           0 :      return Imm > 0 && Imm < 8; 
     560             :     llvm_unreachable("ImmediateCode should have returned");
     561             :     return false;
     562             :   }
     563           0 :   case GIPFP_I64_Predicate_imm24b: {
     564             :     
     565           0 :   return Imm >= 0 && Imm <= 0xffffff;
     566             : 
     567             :     llvm_unreachable("ImmediateCode should have returned");
     568             :     return false;
     569             :   }
     570           0 :   case GIPFP_I64_Predicate_imm256_510: {
     571             :     
     572           0 :   return Imm >= 256 && Imm < 511;
     573             : 
     574             :     llvm_unreachable("ImmediateCode should have returned");
     575             :     return false;
     576             :   }
     577           0 :   case GIPFP_I64_Predicate_imm32: {
     578           0 :      return Imm == 32; 
     579             :     llvm_unreachable("ImmediateCode should have returned");
     580             :     return false;
     581             :   }
     582           0 :   case GIPFP_I64_Predicate_imm8: {
     583           0 :      return Imm == 8; 
     584             :     llvm_unreachable("ImmediateCode should have returned");
     585             :     return false;
     586             :   }
     587           0 :   case GIPFP_I64_Predicate_imm8_255: {
     588             :     
     589           0 :   return Imm >= 8 && Imm < 256;
     590             : 
     591             :     llvm_unreachable("ImmediateCode should have returned");
     592             :     return false;
     593             :   }
     594           0 :   case GIPFP_I64_Predicate_imm8_or_16: {
     595           0 :      return Imm == 8 || Imm == 16;
     596             :     llvm_unreachable("ImmediateCode should have returned");
     597             :     return false;
     598             :   }
     599          63 :   case GIPFP_I64_Predicate_mod_imm: {
     600             :     
     601          63 :     return ARM_AM::getSOImmVal(Imm) != -1;
     602             :   
     603             :     llvm_unreachable("ImmediateCode should have returned");
     604             :     return false;
     605             :   }
     606           0 :   case GIPFP_I64_Predicate_pkh_asr_amt: {
     607           0 :      return Imm > 0 && Imm <= 32; 
     608             :     llvm_unreachable("ImmediateCode should have returned");
     609             :     return false;
     610             :   }
     611           3 :   case GIPFP_I64_Predicate_pkh_lsl_amt: {
     612           3 :      return Imm >= 0 && Imm < 32; 
     613             :     llvm_unreachable("ImmediateCode should have returned");
     614             :     return false;
     615             :   }
     616           0 :   case GIPFP_I64_Predicate_shr_imm16: {
     617           0 :      return Imm > 0 && Imm <= 16; 
     618             :     llvm_unreachable("ImmediateCode should have returned");
     619             :     return false;
     620             :   }
     621           0 :   case GIPFP_I64_Predicate_shr_imm32: {
     622           0 :      return Imm > 0 && Imm <= 32; 
     623             :     llvm_unreachable("ImmediateCode should have returned");
     624             :     return false;
     625             :   }
     626           0 :   case GIPFP_I64_Predicate_shr_imm64: {
     627           0 :      return Imm > 0 && Imm <= 64; 
     628             :     llvm_unreachable("ImmediateCode should have returned");
     629             :     return false;
     630             :   }
     631           0 :   case GIPFP_I64_Predicate_shr_imm8: {
     632           0 :      return Imm > 0 && Imm <= 8; 
     633             :     llvm_unreachable("ImmediateCode should have returned");
     634             :     return false;
     635             :   }
     636           0 :   case GIPFP_I64_Predicate_t2_so_imm: {
     637             :     
     638           0 :     return ARM_AM::getT2SOImmVal(Imm) != -1;
     639             :   
     640             :     llvm_unreachable("ImmediateCode should have returned");
     641             :     return false;
     642             :   }
     643           0 :   case GIPFP_I64_Predicate_t2_so_imm_neg: {
     644             :     
     645           0 :   return Imm && ARM_AM::getT2SOImmVal(-(uint32_t)Imm) != -1;
     646             : 
     647             :     llvm_unreachable("ImmediateCode should have returned");
     648             :     return false;
     649             :   }
     650             :   }
     651           0 :   llvm_unreachable("Unknown predicate");
     652             :   return false;
     653             : }
     654           0 : bool ARMInstructionSelector::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
     655           0 :   llvm_unreachable("Unknown predicate");
     656             :   return false;
     657             : }
     658           0 : bool ARMInstructionSelector::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
     659           0 :   llvm_unreachable("Unknown predicate");
     660             :   return false;
     661             : }
     662             : // PatFrag predicates.
     663             : enum {
     664             :   GIPFP_MI_Predicate_bf_inv_mask_imm = GIPFP_MI_Invalid + 1,
     665             : };
     666           0 : bool ARMInstructionSelector::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI) const {
     667             :   const MachineFunction &MF = *MI.getParent()->getParent();
     668             :   const MachineRegisterInfo &MRI = MF.getRegInfo();
     669             :   (void)MRI;
     670           0 :   switch (PredicateID) {
     671           0 :   case GIPFP_MI_Predicate_bf_inv_mask_imm: {
     672             :     
     673             :     // There's better methods of implementing this check. IntImmLeaf<> would be
     674             :     // equivalent and have less boilerplate but we need a test for C++
     675             :     // predicates and this one causes new rules to be imported into GlobalISel
     676             :     // without requiring additional features first.
     677           0 :     const auto &MO = MI.getOperand(1);
     678           0 :     if (!MO.isCImm())
     679             :       return false;
     680           0 :     return ARM::isBitFieldInvertedMask(MO.getCImm()->getZExtValue());
     681             :   
     682             :     llvm_unreachable("GISelPredicateCode should have returned");
     683             :     return false;
     684             :   }
     685             :   }
     686           0 :   llvm_unreachable("Unknown predicate");
     687             :   return false;
     688             : }
     689             : 
     690             : ARMInstructionSelector::ComplexMatcherMemFn
     691             : ARMInstructionSelector::ComplexPredicateFns[] = {
     692             :   nullptr, // GICP_Invalid
     693             : };
     694             : 
     695             : // Custom renderers.
     696             : enum {
     697             :   GICR_Invalid,
     698             : };
     699             : ARMInstructionSelector::CustomRendererFn
     700             : ARMInstructionSelector::CustomRenderers[] = {
     701             :   nullptr, // GICP_Invalid
     702             : };
     703             : 
     704         706 : bool ARMInstructionSelector::selectImpl(MachineInstr &I, CodeGenCoverage &CoverageInfo) const {
     705         706 :   MachineFunction &MF = *I.getParent()->getParent();
     706         706 :   MachineRegisterInfo &MRI = MF.getRegInfo();
     707             :   // FIXME: This should be computed on a per-function basis rather than per-insn.
     708         706 :   AvailableFunctionFeatures = computeAvailableFunctionFeatures(&STI, &MF);
     709         706 :   const PredicateBitset AvailableFeatures = getAvailableFeatures();
     710             :   NewMIVector OutMIs;
     711             :   State.MIs.clear();
     712         706 :   State.MIs.push_back(&I);
     713             : 
     714         706 :   if (executeMatchTable(*this, OutMIs, State, ISelInfo, getMatchTable(), TII, MRI, TRI, RBI, AvailableFeatures, CoverageInfo)) {
     715             :     return true;
     716             :   }
     717             : 
     718         473 :   return false;
     719             : }
     720             : 
     721           0 : const int64_t *ARMInstructionSelector::getMatchTable() const {
     722             :   constexpr static int64_t MatchTable0[] = {
     723             :     GIM_SwitchOpcode, /*MI*/0, /*[*/34, 124, /*)*//*default:*//*Label 33*/ 61035,
     724             :     /*TargetOpcode::G_ADD*//*Label 0*/ 95,
     725             :     /*TargetOpcode::G_SUB*//*Label 1*/ 6646,
     726             :     /*TargetOpcode::G_MUL*//*Label 2*/ 8636,
     727             :     /*TargetOpcode::G_SDIV*//*Label 3*/ 9270,
     728             :     /*TargetOpcode::G_UDIV*//*Label 4*/ 9370, 0, 0,
     729             :     /*TargetOpcode::G_AND*//*Label 5*/ 9470,
     730             :     /*TargetOpcode::G_OR*//*Label 6*/ 11183,
     731             :     /*TargetOpcode::G_XOR*//*Label 7*/ 15366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     732             :     /*TargetOpcode::G_BITCAST*//*Label 8*/ 15865, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     733             :     /*TargetOpcode::G_INTRINSIC*//*Label 9*/ 20253,
     734             :     /*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ 49624,
     735             :     /*TargetOpcode::G_ANYEXT*//*Label 11*/ 53953,
     736             :     /*TargetOpcode::G_TRUNC*//*Label 12*/ 54076,
     737             :     /*TargetOpcode::G_CONSTANT*//*Label 13*/ 54205, 0, 0, 0,
     738             :     /*TargetOpcode::G_SEXT*//*Label 14*/ 54370,
     739             :     /*TargetOpcode::G_ZEXT*//*Label 15*/ 54499,
     740             :     /*TargetOpcode::G_SHL*//*Label 16*/ 55009,
     741             :     /*TargetOpcode::G_LSHR*//*Label 17*/ 55114,
     742             :     /*TargetOpcode::G_ASHR*//*Label 18*/ 55172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     743             :     /*TargetOpcode::G_FADD*//*Label 19*/ 55385,
     744             :     /*TargetOpcode::G_FSUB*//*Label 20*/ 56016,
     745             :     /*TargetOpcode::G_FMUL*//*Label 21*/ 56631,
     746             :     /*TargetOpcode::G_FMA*//*Label 22*/ 57214,
     747             :     /*TargetOpcode::G_FDIV*//*Label 23*/ 58107, 0, 0, 0, 0, 0, 0,
     748             :     /*TargetOpcode::G_FNEG*//*Label 24*/ 58270,
     749             :     /*TargetOpcode::G_FPEXT*//*Label 25*/ 59187,
     750             :     /*TargetOpcode::G_FPTRUNC*//*Label 26*/ 59344,
     751             :     /*TargetOpcode::G_FPTOSI*//*Label 27*/ 59505,
     752             :     /*TargetOpcode::G_FPTOUI*//*Label 28*/ 59845,
     753             :     /*TargetOpcode::G_SITOFP*//*Label 29*/ 60185,
     754             :     /*TargetOpcode::G_UITOFP*//*Label 30*/ 60522, 0, 0, 0,
     755             :     /*TargetOpcode::G_BR*//*Label 31*/ 60859, 0, 0, 0,
     756             :     /*TargetOpcode::G_BSWAP*//*Label 32*/ 60921,
     757             :     // Label 0: @95
     758             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 10, /*)*//*default:*//*Label 43*/ 6645,
     759             :     /*GILLT_s32*//*Label 34*/ 110,
     760             :     /*GILLT_s64*//*Label 35*/ 1788,
     761             :     /*GILLT_v2s32*//*Label 36*/ 1839,
     762             :     /*GILLT_v2s64*//*Label 37*/ 2299,
     763             :     /*GILLT_v4s16*//*Label 38*/ 3017,
     764             :     /*GILLT_v4s32*//*Label 39*/ 3477,
     765             :     /*GILLT_v8s8*//*Label 40*/ 4601,
     766             :     /*GILLT_v8s16*//*Label 41*/ 5061,
     767             :     /*GILLT_v16s8*//*Label 42*/ 6185,
     768             :     // Label 34: @110
     769             :     GIM_Try, /*On fail goto*//*Label 44*/ 1787,
     770             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
     771             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
     772             :       GIM_Try, /*On fail goto*//*Label 45*/ 186, // Rule ID 2738 //
     773             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
     774             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
     775             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     776             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     777             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     778             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     779             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
     780             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 255,
     781             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
     782             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     783             :         // (add:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 255:{ *:[i32] }), GPR:{ *:[i32] }:$Rn)  =>  (UXTAB:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     784             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTAB,
     785             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     786             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
     787             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     788             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     789             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     790             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     791             :         GIR_EraseFromParent, /*InsnID*/0,
     792             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     793             :         // GIR_Coverage, 2738,
     794             :         GIR_Done,
     795             :       // Label 45: @186
     796             :       GIM_Try, /*On fail goto*//*Label 46*/ 252, // Rule ID 2739 //
     797             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
     798             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
     799             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     800             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     801             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     802             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     803             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
     804             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
     805             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
     806             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     807             :         // (add:{ *:[i32] } (and:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 65535:{ *:[i32] }), GPR:{ *:[i32] }:$Rn)  =>  (UXTAH:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     808             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTAH,
     809             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     810             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
     811             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     812             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     813             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     814             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     815             :         GIR_EraseFromParent, /*InsnID*/0,
     816             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     817             :         // GIR_Coverage, 2739,
     818             :         GIR_Done,
     819             :       // Label 46: @252
     820             :       GIM_Try, /*On fail goto*//*Label 47*/ 318, // Rule ID 2768 //
     821             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
     822             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
     823             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     824             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     825             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     826             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     827             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
     828             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 255,
     829             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
     830             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     831             :         // (add:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 255:{ *:[i32] }), rGPR:{ *:[i32] }:$Rn)  =>  (t2UXTAB:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     832             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTAB,
     833             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     834             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
     835             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     836             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     837             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     838             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     839             :         GIR_EraseFromParent, /*InsnID*/0,
     840             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     841             :         // GIR_Coverage, 2768,
     842             :         GIR_Done,
     843             :       // Label 47: @318
     844             :       GIM_Try, /*On fail goto*//*Label 48*/ 384, // Rule ID 2769 //
     845             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
     846             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
     847             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     848             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     849             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     850             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     851             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
     852             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
     853             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
     854             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     855             :         // (add:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 65535:{ *:[i32] }), rGPR:{ *:[i32] }:$Rn)  =>  (t2UXTAH:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     856             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTAH,
     857             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     858             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
     859             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     860             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     861             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     862             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     863             :         GIR_EraseFromParent, /*InsnID*/0,
     864             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     865             :         // GIR_Coverage, 2769,
     866             :         GIR_Done,
     867             :       // Label 48: @384
     868             :       GIM_Try, /*On fail goto*//*Label 49*/ 450, // Rule ID 1813 //
     869             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
     870             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
     871             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
     872             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     873             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     874             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     875             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     876             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
     877             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 255,
     878             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     879             :         // (add:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (and:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 255:{ *:[i32] }))  =>  (UXTAB:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     880             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTAB,
     881             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     882             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
     883             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     884             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     885             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     886             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     887             :         GIR_EraseFromParent, /*InsnID*/0,
     888             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     889             :         // GIR_Coverage, 1813,
     890             :         GIR_Done,
     891             :       // Label 49: @450
     892             :       GIM_Try, /*On fail goto*//*Label 50*/ 516, // Rule ID 1814 //
     893             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
     894             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
     895             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
     896             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     897             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     898             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     899             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     900             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
     901             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
     902             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     903             :         // (add:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (and:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 65535:{ *:[i32] }))  =>  (UXTAH:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     904             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTAH,
     905             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     906             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
     907             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     908             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     909             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     910             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     911             :         GIR_EraseFromParent, /*InsnID*/0,
     912             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     913             :         // GIR_Coverage, 1814,
     914             :         GIR_Done,
     915             :       // Label 50: @516
     916             :       GIM_Try, /*On fail goto*//*Label 51*/ 582, // Rule ID 1999 //
     917             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
     918             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
     919             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
     920             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     921             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     922             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     923             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     924             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
     925             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 255,
     926             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     927             :         // (add:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 255:{ *:[i32] }))  =>  (t2UXTAB:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     928             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTAB,
     929             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     930             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
     931             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     932             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     933             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     934             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     935             :         GIR_EraseFromParent, /*InsnID*/0,
     936             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     937             :         // GIR_Coverage, 1999,
     938             :         GIR_Done,
     939             :       // Label 51: @582
     940             :       GIM_Try, /*On fail goto*//*Label 52*/ 648, // Rule ID 2000 //
     941             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
     942             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
     943             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
     944             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     945             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
     946             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     947             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     948             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
     949             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
     950             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     951             :         // (add:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 65535:{ *:[i32] }))  =>  (t2UXTAH:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
     952             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTAH,
     953             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     954             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
     955             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
     956             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
     957             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     958             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     959             :         GIR_EraseFromParent, /*InsnID*/0,
     960             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     961             :         // GIR_Coverage, 2000,
     962             :         GIR_Done,
     963             :       // Label 52: @648
     964             :       GIM_Try, /*On fail goto*//*Label 53*/ 757, // Rule ID 2523 //
     965             :         GIM_CheckFeatures, GIFBS_HasV5TE_IsARM_UseMulOps,
     966             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
     967             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     968             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
     969             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
     970             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
     971             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
     972             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
     973             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
     974             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
     975             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
     976             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 16,
     977             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
     978             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
     979             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
     980             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
     981             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
     982             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 16,
     983             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
     984             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
     985             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
     986             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
     987             :         // (add:{ *:[i32] } (mul:{ *:[i32] } (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 16:{ *:[i32] }), (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, 16:{ *:[i32] })), GPR:{ *:[i32] }:$Ra)  =>  (SMLATT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, GPR:{ *:[i32] }:$Ra)
     988             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::SMLATT,
     989             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
     990             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rn
     991             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
     992             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Ra
     993             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
     994             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
     995             :         GIR_EraseFromParent, /*InsnID*/0,
     996             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
     997             :         // GIR_Coverage, 2523,
     998             :         GIR_Done,
     999             :       // Label 53: @757
    1000             :       GIM_Try, /*On fail goto*//*Label 54*/ 866, // Rule ID 2560 //
    1001             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2_UseMulOps,
    1002             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    1003             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1004             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1005             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1006             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1007             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1008             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    1009             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    1010             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    1011             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1012             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 16,
    1013             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
    1014             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    1015             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    1016             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    1017             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1018             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 16,
    1019             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    1020             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1021             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1022             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    1023             :         // (add:{ *:[i32] } (mul:{ *:[i32] } (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 16:{ *:[i32] }), (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 16:{ *:[i32] })), rGPR:{ *:[i32] }:$Ra)  =>  (t2SMLATT:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, rGPR:{ *:[i32] }:$Ra)
    1024             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SMLATT,
    1025             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1026             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rn
    1027             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    1028             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Ra
    1029             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1030             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1031             :         GIR_EraseFromParent, /*InsnID*/0,
    1032             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1033             :         // GIR_Coverage, 2560,
    1034             :         GIR_Done,
    1035             :       // Label 54: @866
    1036             :       GIM_Try, /*On fail goto*//*Label 55*/ 975, // Rule ID 194 //
    1037             :         GIM_CheckFeatures, GIFBS_HasV5TE_IsARM_UseMulOps,
    1038             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1039             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    1040             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1041             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1042             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1043             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1044             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1045             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    1046             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    1047             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    1048             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1049             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 16,
    1050             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
    1051             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    1052             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    1053             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    1054             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1055             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 16,
    1056             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1057             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1058             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    1059             :         // (add:{ *:[i32] } GPR:{ *:[i32] }:$Ra, (mul:{ *:[i32] } (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 16:{ *:[i32] }), (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, 16:{ *:[i32] })))  =>  (SMLATT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, GPR:{ *:[i32] }:$Ra)
    1060             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::SMLATT,
    1061             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1062             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rn
    1063             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    1064             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    1065             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1066             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1067             :         GIR_EraseFromParent, /*InsnID*/0,
    1068             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1069             :         // GIR_Coverage, 194,
    1070             :         GIR_Done,
    1071             :       // Label 55: @975
    1072             :       GIM_Try, /*On fail goto*//*Label 56*/ 1084, // Rule ID 525 //
    1073             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2_UseMulOps,
    1074             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    1075             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1076             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1077             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1078             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1079             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1080             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1081             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    1082             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    1083             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    1084             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1085             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 16,
    1086             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
    1087             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    1088             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    1089             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    1090             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1091             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 16,
    1092             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1093             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1094             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    1095             :         // (add:{ *:[i32] } rGPR:{ *:[i32] }:$Ra, (mul:{ *:[i32] } (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 16:{ *:[i32] }), (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 16:{ *:[i32] })))  =>  (t2SMLATT:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, rGPR:{ *:[i32] }:$Ra)
    1096             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SMLATT,
    1097             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1098             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rn
    1099             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    1100             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    1101             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1102             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1103             :         GIR_EraseFromParent, /*InsnID*/0,
    1104             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1105             :         // GIR_Coverage, 525,
    1106             :         GIR_Done,
    1107             :       // Label 56: @1084
    1108             :       GIM_Try, /*On fail goto*//*Label 57*/ 1136, // Rule ID 74 //
    1109             :         GIM_CheckFeatures, GIFBS_IsARM,
    1110             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    1111             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    1112             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1113             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    1114             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    1115             :         // MIs[1] Operand 1
    1116             :         // No operand predicates
    1117             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1118             :         // (add:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm)  =>  (ADDri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    1119             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::ADDri,
    1120             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1121             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    1122             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    1123             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1124             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1125             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1126             :         GIR_EraseFromParent, /*InsnID*/0,
    1127             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1128             :         // GIR_Coverage, 74,
    1129             :         GIR_Done,
    1130             :       // Label 57: @1136
    1131             :       GIM_Try, /*On fail goto*//*Label 58*/ 1188, // Rule ID 411 //
    1132             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    1133             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1134             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1135             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1136             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    1137             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    1138             :         // MIs[1] Operand 1
    1139             :         // No operand predicates
    1140             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1141             :         // (add:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm)  =>  (t2ADDri:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    1142             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ADDri,
    1143             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1144             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    1145             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    1146             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1147             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1148             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1149             :         GIR_EraseFromParent, /*InsnID*/0,
    1150             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1151             :         // GIR_Coverage, 411,
    1152             :         GIR_Done,
    1153             :       // Label 58: @1188
    1154             :       GIM_Try, /*On fail goto*//*Label 59*/ 1237, // Rule ID 412 //
    1155             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    1156             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1157             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    1158             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1159             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    1160             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_imm0_4095,
    1161             :         // MIs[1] Operand 1
    1162             :         // No operand predicates
    1163             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1164             :         // (add:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_imm0_4095>>:$imm)  =>  (t2ADDri12:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    1165             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ADDri12,
    1166             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1167             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    1168             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    1169             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1170             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1171             :         GIR_EraseFromParent, /*InsnID*/0,
    1172             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1173             :         // GIR_Coverage, 412,
    1174             :         GIR_Done,
    1175             :       // Label 59: @1237
    1176             :       GIM_Try, /*On fail goto*//*Label 60*/ 1307, // Rule ID 173 //
    1177             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM_UseMulOps,
    1178             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1179             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1180             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1181             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1182             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1183             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1184             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1185             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1186             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1187             :         // (add:{ *:[i32] } (mul:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm), GPRnopc:{ *:[i32] }:$Ra)  =>  (MLA:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, GPRnopc:{ *:[i32] }:$Ra)
    1188             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MLA,
    1189             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1190             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    1191             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    1192             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Ra
    1193             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1194             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1195             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1196             :         GIR_EraseFromParent, /*InsnID*/0,
    1197             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1198             :         // GIR_Coverage, 173,
    1199             :         GIR_Done,
    1200             :       // Label 60: @1307
    1201             :       GIM_Try, /*On fail goto*//*Label 61*/ 1377, // Rule ID 174 //
    1202             :         GIM_CheckFeatures, GIFBS_IsARM_NoV6,
    1203             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1204             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1205             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1206             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1207             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1208             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1209             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1210             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1211             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1212             :         // (add:{ *:[i32] } (mul:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm), GPRnopc:{ *:[i32] }:$Ra)  =>  (MLAv5:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, GPRnopc:{ *:[i32] }:$Ra)
    1213             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MLAv5,
    1214             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1215             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    1216             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    1217             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Ra
    1218             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1219             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1220             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1221             :         GIR_EraseFromParent, /*InsnID*/0,
    1222             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1223             :         // GIR_Coverage, 174,
    1224             :         GIR_Done,
    1225             :       // Label 61: @1377
    1226             :       GIM_Try, /*On fail goto*//*Label 62*/ 1444, // Rule ID 507 //
    1227             :         GIM_CheckFeatures, GIFBS_IsThumb2_UseMulOps,
    1228             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    1229             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1230             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1231             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1232             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1233             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1234             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    1235             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    1236             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1237             :         // (add:{ *:[i32] } (mul:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm), rGPR:{ *:[i32] }:$Ra)  =>  (t2MLA:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, rGPR:{ *:[i32] }:$Ra)
    1238             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MLA,
    1239             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1240             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    1241             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    1242             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Ra
    1243             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1244             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1245             :         GIR_EraseFromParent, /*InsnID*/0,
    1246             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1247             :         // GIR_Coverage, 507,
    1248             :         GIR_Done,
    1249             :       // Label 62: @1444
    1250             :       GIM_Try, /*On fail goto*//*Label 63*/ 1514, // Rule ID 2517 //
    1251             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM_UseMulOps,
    1252             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1253             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1254             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1255             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1256             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1257             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1258             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1259             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1260             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1261             :         // (add:{ *:[i32] } GPRnopc:{ *:[i32] }:$Ra, (mul:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm))  =>  (MLA:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, GPRnopc:{ *:[i32] }:$Ra)
    1262             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MLA,
    1263             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1264             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    1265             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    1266             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    1267             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1268             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1269             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1270             :         GIR_EraseFromParent, /*InsnID*/0,
    1271             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1272             :         // GIR_Coverage, 2517,
    1273             :         GIR_Done,
    1274             :       // Label 63: @1514
    1275             :       GIM_Try, /*On fail goto*//*Label 64*/ 1584, // Rule ID 2518 //
    1276             :         GIM_CheckFeatures, GIFBS_IsARM_NoV6,
    1277             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1278             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1279             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1280             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1281             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1282             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1283             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1284             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1285             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1286             :         // (add:{ *:[i32] } GPRnopc:{ *:[i32] }:$Ra, (mul:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm))  =>  (MLAv5:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, GPRnopc:{ *:[i32] }:$Ra)
    1287             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MLAv5,
    1288             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1289             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    1290             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    1291             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    1292             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1293             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1294             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1295             :         GIR_EraseFromParent, /*InsnID*/0,
    1296             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1297             :         // GIR_Coverage, 2518,
    1298             :         GIR_Done,
    1299             :       // Label 64: @1584
    1300             :       GIM_Try, /*On fail goto*//*Label 65*/ 1651, // Rule ID 2555 //
    1301             :         GIM_CheckFeatures, GIFBS_IsThumb2_UseMulOps,
    1302             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    1303             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1304             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1305             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1306             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    1307             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    1308             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1309             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    1310             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1311             :         // (add:{ *:[i32] } rGPR:{ *:[i32] }:$Ra, (mul:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm))  =>  (t2MLA:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, rGPR:{ *:[i32] }:$Ra)
    1312             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MLA,
    1313             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1314             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    1315             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    1316             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    1317             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1318             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1319             :         GIR_EraseFromParent, /*InsnID*/0,
    1320             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1321             :         // GIR_Coverage, 2555,
    1322             :         GIR_Done,
    1323             :       // Label 65: @1651
    1324             :       GIM_Try, /*On fail goto*//*Label 66*/ 1696, // Rule ID 75 //
    1325             :         GIM_CheckFeatures, GIFBS_IsARM,
    1326             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    1327             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    1328             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    1329             :         // (add:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (ADDrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    1330             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::ADDrr,
    1331             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1332             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    1333             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    1334             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1335             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1336             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1337             :         GIR_EraseFromParent, /*InsnID*/0,
    1338             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1339             :         // GIR_Coverage, 75,
    1340             :         GIR_Done,
    1341             :       // Label 66: @1696
    1342             :       GIM_Try, /*On fail goto*//*Label 67*/ 1741, // Rule ID 413 //
    1343             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    1344             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1345             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    1346             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    1347             :         // (add:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2ADDrr:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    1348             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ADDrr,
    1349             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1350             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    1351             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    1352             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1353             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1354             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1355             :         GIR_EraseFromParent, /*InsnID*/0,
    1356             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1357             :         // GIR_Coverage, 413,
    1358             :         GIR_Done,
    1359             :       // Label 67: @1741
    1360             :       GIM_Try, /*On fail goto*//*Label 68*/ 1786, // Rule ID 2537 //
    1361             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    1362             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    1363             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    1364             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    1365             :         // (add:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, GPRnopc:{ *:[i32] }:$Rn)  =>  (t2ADDrr:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    1366             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ADDrr,
    1367             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    1368             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    1369             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    1370             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1371             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1372             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1373             :         GIR_EraseFromParent, /*InsnID*/0,
    1374             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1375             :         // GIR_Coverage, 2537,
    1376             :         GIR_Done,
    1377             :       // Label 68: @1786
    1378             :       GIM_Reject,
    1379             :     // Label 44: @1787
    1380             :     GIM_Reject,
    1381             :     // Label 35: @1788
    1382             :     GIM_Try, /*On fail goto*//*Label 69*/ 1838, // Rule ID 760 //
    1383             :       GIM_CheckFeatures, GIFBS_HasNEON,
    1384             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    1385             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
    1386             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    1387             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1388             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1389             :       // (add:{ *:[v1i64] } DPR:{ *:[v1i64] }:$Vn, DPR:{ *:[v1i64] }:$Vm)  =>  (VADDv1i64:{ *:[v1i64] } DPR:{ *:[v1i64] }:$Vn, DPR:{ *:[v1i64] }:$Vm)
    1390             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv1i64,
    1391             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1392             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    1393             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    1394             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1395             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1396             :       GIR_EraseFromParent, /*InsnID*/0,
    1397             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1398             :       // GIR_Coverage, 760,
    1399             :       GIR_Done,
    1400             :     // Label 69: @1838
    1401             :     GIM_Reject,
    1402             :     // Label 36: @1839
    1403             :     GIM_Try, /*On fail goto*//*Label 70*/ 2298,
    1404             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    1405             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    1406             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    1407             :       GIM_Try, /*On fail goto*//*Label 71*/ 1923, // Rule ID 2675 //
    1408             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1409             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1410             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1411             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1412             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    1413             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    1414             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v2s32,
    1415             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1416             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1417             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1418             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1419             :         // (add:{ *:[v2i32] } (intrinsic_wo_chain:{ *:[v2i32] } 1014:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm), DPR:{ *:[v2i32] }:$src1)  =>  (VABAsv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1420             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv2i32,
    1421             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1422             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1423             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1424             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1425             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1426             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1427             :         GIR_EraseFromParent, /*InsnID*/0,
    1428             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1429             :         // GIR_Coverage, 2675,
    1430             :         GIR_Done,
    1431             :       // Label 71: @1923
    1432             :       GIM_Try, /*On fail goto*//*Label 72*/ 1993, // Rule ID 2681 //
    1433             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1434             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1435             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1436             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1437             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    1438             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    1439             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v2s32,
    1440             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1441             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1442             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1443             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1444             :         // (add:{ *:[v2i32] } (intrinsic_wo_chain:{ *:[v2i32] } 1015:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm), DPR:{ *:[v2i32] }:$src1)  =>  (VABAuv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1445             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv2i32,
    1446             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1447             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1448             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1449             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1450             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1451             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1452             :         GIR_EraseFromParent, /*InsnID*/0,
    1453             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1454             :         // GIR_Coverage, 2681,
    1455             :         GIR_Done,
    1456             :       // Label 72: @1993
    1457             :       GIM_Try, /*On fail goto*//*Label 73*/ 2063, // Rule ID 1152 //
    1458             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1459             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1460             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1461             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1462             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1463             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    1464             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    1465             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v2s32,
    1466             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1467             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1468             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1469             :         // (add:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, (intrinsic_wo_chain:{ *:[v2i32] } 1014:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm))  =>  (VABAsv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1470             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv2i32,
    1471             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1472             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1473             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1474             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1475             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1476             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1477             :         GIR_EraseFromParent, /*InsnID*/0,
    1478             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1479             :         // GIR_Coverage, 1152,
    1480             :         GIR_Done,
    1481             :       // Label 73: @2063
    1482             :       GIM_Try, /*On fail goto*//*Label 74*/ 2133, // Rule ID 1158 //
    1483             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1484             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1485             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1486             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1487             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1488             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    1489             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    1490             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v2s32,
    1491             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1492             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1493             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1494             :         // (add:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, (intrinsic_wo_chain:{ *:[v2i32] } 1015:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm))  =>  (VABAuv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1495             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv2i32,
    1496             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1497             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1498             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1499             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1500             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1501             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1502             :         GIR_EraseFromParent, /*InsnID*/0,
    1503             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1504             :         // GIR_Coverage, 1158,
    1505             :         GIR_Done,
    1506             :       // Label 74: @2133
    1507             :       GIM_Try, /*On fail goto*//*Label 75*/ 2196, // Rule ID 2605 //
    1508             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1509             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1510             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1511             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1512             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    1513             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1514             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1515             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1516             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1517             :         // (add:{ *:[v2i32] } (mul:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm), DPR:{ *:[v2i32] }:$src1)  =>  (VMLAv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1518             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv2i32,
    1519             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1520             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1521             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    1522             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    1523             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1524             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1525             :         GIR_EraseFromParent, /*InsnID*/0,
    1526             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1527             :         // GIR_Coverage, 2605,
    1528             :         GIR_Done,
    1529             :       // Label 75: @2196
    1530             :       GIM_Try, /*On fail goto*//*Label 76*/ 2259, // Rule ID 875 //
    1531             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1532             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1533             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1534             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1535             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1536             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    1537             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1538             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1539             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1540             :         // (add:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, (mul:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm))  =>  (VMLAv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1541             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv2i32,
    1542             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1543             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1544             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    1545             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    1546             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1547             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1548             :         GIR_EraseFromParent, /*InsnID*/0,
    1549             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1550             :         // GIR_Coverage, 875,
    1551             :         GIR_Done,
    1552             :       // Label 76: @2259
    1553             :       GIM_Try, /*On fail goto*//*Label 77*/ 2297, // Rule ID 756 //
    1554             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1555             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1556             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1557             :         // (add:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)  =>  (VADDv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1558             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv2i32,
    1559             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1560             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    1561             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    1562             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1563             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1564             :         GIR_EraseFromParent, /*InsnID*/0,
    1565             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1566             :         // GIR_Coverage, 756,
    1567             :         GIR_Done,
    1568             :       // Label 77: @2297
    1569             :       GIM_Reject,
    1570             :     // Label 70: @2298
    1571             :     GIM_Reject,
    1572             :     // Label 37: @2299
    1573             :     GIM_Try, /*On fail goto*//*Label 78*/ 3016,
    1574             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    1575             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
    1576             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    1577             :       GIM_Try, /*On fail goto*//*Label 79*/ 2396, // Rule ID 2687 //
    1578             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1579             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1580             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1581             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1582             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1583             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    1584             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    1585             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabds,
    1586             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v2s32,
    1587             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v2s32,
    1588             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1589             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1590             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    1591             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1592             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1593             :         // (add:{ *:[v2i64] } (zext:{ *:[v2i64] } (intrinsic_wo_chain:{ *:[v2i32] } 1014:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)), QPR:{ *:[v2i64] }:$src1)  =>  (VABALsv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1594             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALsv2i64,
    1595             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1596             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1597             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    1598             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    1599             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1600             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1601             :         GIR_EraseFromParent, /*InsnID*/0,
    1602             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1603             :         // GIR_Coverage, 2687,
    1604             :         GIR_Done,
    1605             :       // Label 79: @2396
    1606             :       GIM_Try, /*On fail goto*//*Label 80*/ 2479, // Rule ID 2690 //
    1607             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1608             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1609             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1610             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1611             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1612             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    1613             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    1614             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabdu,
    1615             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v2s32,
    1616             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v2s32,
    1617             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1618             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1619             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    1620             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1621             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1622             :         // (add:{ *:[v2i64] } (zext:{ *:[v2i64] } (intrinsic_wo_chain:{ *:[v2i32] } 1015:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)), QPR:{ *:[v2i64] }:$src1)  =>  (VABALuv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1623             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALuv2i64,
    1624             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1625             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1626             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    1627             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    1628             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1629             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1630             :         GIR_EraseFromParent, /*InsnID*/0,
    1631             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1632             :         // GIR_Coverage, 2690,
    1633             :         GIR_Done,
    1634             :       // Label 80: @2479
    1635             :       GIM_Try, /*On fail goto*//*Label 81*/ 2562, // Rule ID 1164 //
    1636             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1637             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    1638             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1639             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1640             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1641             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1642             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    1643             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    1644             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabds,
    1645             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v2s32,
    1646             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v2s32,
    1647             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1648             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1649             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1650             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1651             :         // (add:{ *:[v2i64] } QPR:{ *:[v2i64] }:$src1, (zext:{ *:[v2i64] } (intrinsic_wo_chain:{ *:[v2i32] } 1014:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)))  =>  (VABALsv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1652             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALsv2i64,
    1653             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1654             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1655             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    1656             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    1657             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1658             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1659             :         GIR_EraseFromParent, /*InsnID*/0,
    1660             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1661             :         // GIR_Coverage, 1164,
    1662             :         GIR_Done,
    1663             :       // Label 81: @2562
    1664             :       GIM_Try, /*On fail goto*//*Label 82*/ 2645, // Rule ID 1167 //
    1665             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1666             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    1667             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1668             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1669             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1670             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    1671             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    1672             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    1673             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabdu,
    1674             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v2s32,
    1675             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v2s32,
    1676             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1677             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1678             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1679             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1680             :         // (add:{ *:[v2i64] } QPR:{ *:[v2i64] }:$src1, (zext:{ *:[v2i64] } (intrinsic_wo_chain:{ *:[v2i32] } 1015:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)))  =>  (VABALuv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1681             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALuv2i64,
    1682             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1683             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1684             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    1685             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    1686             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1687             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1688             :         GIR_EraseFromParent, /*InsnID*/0,
    1689             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1690             :         // GIR_Coverage, 1167,
    1691             :         GIR_Done,
    1692             :       // Label 82: @2645
    1693             :       GIM_Try, /*On fail goto*//*Label 83*/ 2709, // Rule ID 768 //
    1694             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1695             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1696             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    1697             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1698             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1699             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    1700             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SEXT,
    1701             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v2s32,
    1702             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1703             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1704             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1705             :         // (add:{ *:[v2i64] } (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn), (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VADDLsv2i64:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1706             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDLsv2i64,
    1707             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1708             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    1709             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    1710             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1711             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1712             :         GIR_EraseFromParent, /*InsnID*/0,
    1713             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1714             :         // GIR_Coverage, 768,
    1715             :         GIR_Done,
    1716             :       // Label 83: @2709
    1717             :       GIM_Try, /*On fail goto*//*Label 84*/ 2773, // Rule ID 771 //
    1718             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1719             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1720             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1721             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1722             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1723             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    1724             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ZEXT,
    1725             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v2s32,
    1726             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1727             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1728             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    1729             :         // (add:{ *:[v2i64] } (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn), (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VADDLuv2i64:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1730             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDLuv2i64,
    1731             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1732             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    1733             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    1734             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1735             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1736             :         GIR_EraseFromParent, /*InsnID*/0,
    1737             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1738             :         // GIR_Coverage, 771,
    1739             :         GIR_Done,
    1740             :       // Label 84: @2773
    1741             :       GIM_Try, /*On fail goto*//*Label 85*/ 2824, // Rule ID 2581 //
    1742             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1743             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1744             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    1745             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1746             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1747             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    1748             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1749             :         // (add:{ *:[v2i64] } (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm), QPR:{ *:[v2i64] }:$Vn)  =>  (VADDWsv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1750             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWsv2i64,
    1751             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1752             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vn
    1753             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    1754             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1755             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1756             :         GIR_EraseFromParent, /*InsnID*/0,
    1757             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1758             :         // GIR_Coverage, 2581,
    1759             :         GIR_Done,
    1760             :       // Label 85: @2824
    1761             :       GIM_Try, /*On fail goto*//*Label 86*/ 2875, // Rule ID 2584 //
    1762             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1763             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1764             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1765             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1766             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1767             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    1768             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1769             :         // (add:{ *:[v2i64] } (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm), QPR:{ *:[v2i64] }:$Vn)  =>  (VADDWuv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1770             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWuv2i64,
    1771             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1772             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vn
    1773             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    1774             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1775             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1776             :         GIR_EraseFromParent, /*InsnID*/0,
    1777             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1778             :         // GIR_Coverage, 2584,
    1779             :         GIR_Done,
    1780             :       // Label 86: @2875
    1781             :       GIM_Try, /*On fail goto*//*Label 87*/ 2926, // Rule ID 774 //
    1782             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1783             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    1784             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1785             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    1786             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1787             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1788             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1789             :         // (add:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VADDWsv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1790             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWsv2i64,
    1791             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1792             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    1793             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    1794             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1795             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1796             :         GIR_EraseFromParent, /*InsnID*/0,
    1797             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1798             :         // GIR_Coverage, 774,
    1799             :         GIR_Done,
    1800             :       // Label 87: @2926
    1801             :       GIM_Try, /*On fail goto*//*Label 88*/ 2977, // Rule ID 777 //
    1802             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1803             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    1804             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1805             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    1806             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    1807             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1808             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1809             :         // (add:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VADDWuv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    1810             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWuv2i64,
    1811             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1812             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    1813             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    1814             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1815             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1816             :         GIR_EraseFromParent, /*InsnID*/0,
    1817             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1818             :         // GIR_Coverage, 777,
    1819             :         GIR_Done,
    1820             :       // Label 88: @2977
    1821             :       GIM_Try, /*On fail goto*//*Label 89*/ 3015, // Rule ID 761 //
    1822             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1823             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    1824             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    1825             :         // (add:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, QPR:{ *:[v2i64] }:$Vm)  =>  (VADDv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, QPR:{ *:[v2i64] }:$Vm)
    1826             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv2i64,
    1827             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1828             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    1829             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    1830             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1831             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1832             :         GIR_EraseFromParent, /*InsnID*/0,
    1833             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1834             :         // GIR_Coverage, 761,
    1835             :         GIR_Done,
    1836             :       // Label 89: @3015
    1837             :       GIM_Reject,
    1838             :     // Label 78: @3016
    1839             :     GIM_Reject,
    1840             :     // Label 38: @3017
    1841             :     GIM_Try, /*On fail goto*//*Label 90*/ 3476,
    1842             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    1843             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    1844             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    1845             :       GIM_Try, /*On fail goto*//*Label 91*/ 3101, // Rule ID 2674 //
    1846             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1847             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1848             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1849             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1850             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    1851             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    1852             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s16,
    1853             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1854             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1855             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1856             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1857             :         // (add:{ *:[v4i16] } (intrinsic_wo_chain:{ *:[v4i16] } 1014:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm), DPR:{ *:[v4i16] }:$src1)  =>  (VABAsv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1858             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv4i16,
    1859             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1860             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1861             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1862             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1863             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1864             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1865             :         GIR_EraseFromParent, /*InsnID*/0,
    1866             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1867             :         // GIR_Coverage, 2674,
    1868             :         GIR_Done,
    1869             :       // Label 91: @3101
    1870             :       GIM_Try, /*On fail goto*//*Label 92*/ 3171, // Rule ID 2680 //
    1871             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1872             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1873             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1874             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1875             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    1876             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    1877             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s16,
    1878             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1879             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1880             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1881             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1882             :         // (add:{ *:[v4i16] } (intrinsic_wo_chain:{ *:[v4i16] } 1015:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm), DPR:{ *:[v4i16] }:$src1)  =>  (VABAuv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1883             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv4i16,
    1884             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1885             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1886             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1887             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1888             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1889             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1890             :         GIR_EraseFromParent, /*InsnID*/0,
    1891             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1892             :         // GIR_Coverage, 2680,
    1893             :         GIR_Done,
    1894             :       // Label 92: @3171
    1895             :       GIM_Try, /*On fail goto*//*Label 93*/ 3241, // Rule ID 1151 //
    1896             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1897             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1898             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1899             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1900             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1901             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    1902             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    1903             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s16,
    1904             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1905             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1906             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1907             :         // (add:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, (intrinsic_wo_chain:{ *:[v4i16] } 1014:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm))  =>  (VABAsv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1908             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv4i16,
    1909             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1910             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1911             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1912             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1913             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1914             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1915             :         GIR_EraseFromParent, /*InsnID*/0,
    1916             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1917             :         // GIR_Coverage, 1151,
    1918             :         GIR_Done,
    1919             :       // Label 93: @3241
    1920             :       GIM_Try, /*On fail goto*//*Label 94*/ 3311, // Rule ID 1157 //
    1921             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1922             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1923             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1924             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    1925             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    1926             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    1927             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    1928             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s16,
    1929             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1930             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    1931             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1932             :         // (add:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, (intrinsic_wo_chain:{ *:[v4i16] } 1015:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm))  =>  (VABAuv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1933             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv4i16,
    1934             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1935             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1936             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    1937             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    1938             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1939             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1940             :         GIR_EraseFromParent, /*InsnID*/0,
    1941             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1942             :         // GIR_Coverage, 1157,
    1943             :         GIR_Done,
    1944             :       // Label 94: @3311
    1945             :       GIM_Try, /*On fail goto*//*Label 95*/ 3374, // Rule ID 2604 //
    1946             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1947             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    1948             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1949             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    1950             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    1951             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1952             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1953             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1954             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1955             :         // (add:{ *:[v4i16] } (mul:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm), DPR:{ *:[v4i16] }:$src1)  =>  (VMLAv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1956             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv4i16,
    1957             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1958             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    1959             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    1960             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    1961             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1962             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1963             :         GIR_EraseFromParent, /*InsnID*/0,
    1964             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1965             :         // GIR_Coverage, 2604,
    1966             :         GIR_Done,
    1967             :       // Label 95: @3374
    1968             :       GIM_Try, /*On fail goto*//*Label 96*/ 3437, // Rule ID 874 //
    1969             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1970             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1971             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    1972             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    1973             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    1974             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    1975             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1976             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1977             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    1978             :         // (add:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, (mul:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm))  =>  (VMLAv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1979             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv4i16,
    1980             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1981             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    1982             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    1983             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    1984             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    1985             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    1986             :         GIR_EraseFromParent, /*InsnID*/0,
    1987             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    1988             :         // GIR_Coverage, 874,
    1989             :         GIR_Done,
    1990             :       // Label 96: @3437
    1991             :       GIM_Try, /*On fail goto*//*Label 97*/ 3475, // Rule ID 755 //
    1992             :         GIM_CheckFeatures, GIFBS_HasNEON,
    1993             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    1994             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    1995             :         // (add:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)  =>  (VADDv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    1996             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv4i16,
    1997             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    1998             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    1999             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    2000             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2001             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2002             :         GIR_EraseFromParent, /*InsnID*/0,
    2003             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2004             :         // GIR_Coverage, 755,
    2005             :         GIR_Done,
    2006             :       // Label 97: @3475
    2007             :       GIM_Reject,
    2008             :     // Label 90: @3476
    2009             :     GIM_Reject,
    2010             :     // Label 39: @3477
    2011             :     GIM_Try, /*On fail goto*//*Label 98*/ 4600,
    2012             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    2013             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    2014             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    2015             :       GIM_Try, /*On fail goto*//*Label 99*/ 3574, // Rule ID 2686 //
    2016             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2017             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2018             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2019             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2020             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2021             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2022             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2023             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabds,
    2024             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v4s16,
    2025             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v4s16,
    2026             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2027             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2028             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2029             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2030             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2031             :         // (add:{ *:[v4i32] } (zext:{ *:[v4i32] } (intrinsic_wo_chain:{ *:[v4i16] } 1014:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)), QPR:{ *:[v4i32] }:$src1)  =>  (VABALsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2032             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALsv4i32,
    2033             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2034             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2035             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2036             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2037             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2038             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2039             :         GIR_EraseFromParent, /*InsnID*/0,
    2040             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2041             :         // GIR_Coverage, 2686,
    2042             :         GIR_Done,
    2043             :       // Label 99: @3574
    2044             :       GIM_Try, /*On fail goto*//*Label 100*/ 3657, // Rule ID 2689 //
    2045             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2046             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2047             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2048             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2049             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2050             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2051             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2052             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2053             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v4s16,
    2054             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v4s16,
    2055             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2056             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2057             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2058             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2059             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2060             :         // (add:{ *:[v4i32] } (zext:{ *:[v4i32] } (intrinsic_wo_chain:{ *:[v4i16] } 1015:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)), QPR:{ *:[v4i32] }:$src1)  =>  (VABALuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2061             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALuv4i32,
    2062             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2063             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2064             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2065             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2066             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2067             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2068             :         GIR_EraseFromParent, /*InsnID*/0,
    2069             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2070             :         // GIR_Coverage, 2689,
    2071             :         GIR_Done,
    2072             :       // Label 100: @3657
    2073             :       GIM_Try, /*On fail goto*//*Label 101*/ 3740, // Rule ID 1163 //
    2074             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2075             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2076             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2077             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2078             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2079             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2080             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2081             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2082             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabds,
    2083             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v4s16,
    2084             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v4s16,
    2085             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2086             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2087             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2088             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2089             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, (zext:{ *:[v4i32] } (intrinsic_wo_chain:{ *:[v4i16] } 1014:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)))  =>  (VABALsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2090             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALsv4i32,
    2091             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2092             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2093             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2094             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2095             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2096             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2097             :         GIR_EraseFromParent, /*InsnID*/0,
    2098             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2099             :         // GIR_Coverage, 1163,
    2100             :         GIR_Done,
    2101             :       // Label 101: @3740
    2102             :       GIM_Try, /*On fail goto*//*Label 102*/ 3823, // Rule ID 1166 //
    2103             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2104             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2105             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2106             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2107             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2108             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2109             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2110             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2111             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2112             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v4s16,
    2113             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v4s16,
    2114             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2115             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2116             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2117             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2118             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, (zext:{ *:[v4i32] } (intrinsic_wo_chain:{ *:[v4i16] } 1015:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)))  =>  (VABALuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2119             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALuv4i32,
    2120             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2121             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2122             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2123             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2124             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2125             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2126             :         GIR_EraseFromParent, /*InsnID*/0,
    2127             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2128             :         // GIR_Coverage, 1166,
    2129             :         GIR_Done,
    2130             :       // Label 102: @3823
    2131             :       GIM_Try, /*On fail goto*//*Label 103*/ 3893, // Rule ID 2678 //
    2132             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2133             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2134             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2135             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2136             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    2137             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    2138             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s32,
    2139             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2140             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2141             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2142             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2143             :         // (add:{ *:[v4i32] } (intrinsic_wo_chain:{ *:[v4i32] } 1014:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm), QPR:{ *:[v4i32] }:$src1)  =>  (VABAsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2144             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv4i32,
    2145             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2146             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2147             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2148             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2149             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2150             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2151             :         GIR_EraseFromParent, /*InsnID*/0,
    2152             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2153             :         // GIR_Coverage, 2678,
    2154             :         GIR_Done,
    2155             :       // Label 103: @3893
    2156             :       GIM_Try, /*On fail goto*//*Label 104*/ 3963, // Rule ID 2684 //
    2157             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2158             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2159             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2160             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2161             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2162             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    2163             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s32,
    2164             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2165             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2166             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2167             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2168             :         // (add:{ *:[v4i32] } (intrinsic_wo_chain:{ *:[v4i32] } 1015:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm), QPR:{ *:[v4i32] }:$src1)  =>  (VABAuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2169             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv4i32,
    2170             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2171             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2172             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2173             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2174             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2175             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2176             :         GIR_EraseFromParent, /*InsnID*/0,
    2177             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2178             :         // GIR_Coverage, 2684,
    2179             :         GIR_Done,
    2180             :       // Label 104: @3963
    2181             :       GIM_Try, /*On fail goto*//*Label 105*/ 4033, // Rule ID 1155 //
    2182             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2183             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2184             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2185             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2186             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2187             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    2188             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    2189             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s32,
    2190             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2191             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2192             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2193             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, (intrinsic_wo_chain:{ *:[v4i32] } 1014:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm))  =>  (VABAsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2194             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv4i32,
    2195             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2196             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2197             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2198             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2199             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2200             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2201             :         GIR_EraseFromParent, /*InsnID*/0,
    2202             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2203             :         // GIR_Coverage, 1155,
    2204             :         GIR_Done,
    2205             :       // Label 105: @4033
    2206             :       GIM_Try, /*On fail goto*//*Label 106*/ 4103, // Rule ID 1161 //
    2207             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2208             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2209             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2210             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2211             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2212             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2213             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    2214             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v4s32,
    2215             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2216             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2217             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2218             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, (intrinsic_wo_chain:{ *:[v4i32] } 1015:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm))  =>  (VABAuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2219             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv4i32,
    2220             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2221             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2222             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2223             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2224             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2225             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2226             :         GIR_EraseFromParent, /*InsnID*/0,
    2227             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2228             :         // GIR_Coverage, 1161,
    2229             :         GIR_Done,
    2230             :       // Label 106: @4103
    2231             :       GIM_Try, /*On fail goto*//*Label 107*/ 4167, // Rule ID 767 //
    2232             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2233             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2234             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    2235             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2236             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2237             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    2238             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SEXT,
    2239             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v4s16,
    2240             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2241             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2242             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2243             :         // (add:{ *:[v4i32] } (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn), (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VADDLsv4i32:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2244             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDLsv4i32,
    2245             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2246             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2247             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    2248             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2249             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2250             :         GIR_EraseFromParent, /*InsnID*/0,
    2251             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2252             :         // GIR_Coverage, 767,
    2253             :         GIR_Done,
    2254             :       // Label 107: @4167
    2255             :       GIM_Try, /*On fail goto*//*Label 108*/ 4231, // Rule ID 770 //
    2256             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2257             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2258             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2259             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2260             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2261             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    2262             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ZEXT,
    2263             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v4s16,
    2264             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2265             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2266             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2267             :         // (add:{ *:[v4i32] } (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn), (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VADDLuv4i32:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2268             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDLuv4i32,
    2269             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2270             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2271             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    2272             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2273             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2274             :         GIR_EraseFromParent, /*InsnID*/0,
    2275             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2276             :         // GIR_Coverage, 770,
    2277             :         GIR_Done,
    2278             :       // Label 108: @4231
    2279             :       GIM_Try, /*On fail goto*//*Label 109*/ 4294, // Rule ID 2608 //
    2280             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2281             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2282             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    2283             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s32,
    2284             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    2285             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2286             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2287             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2288             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2289             :         // (add:{ *:[v4i32] } (mul:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm), QPR:{ *:[v4i32] }:$src1)  =>  (VMLAv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2290             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv4i32,
    2291             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2292             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2293             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2294             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    2295             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2296             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2297             :         GIR_EraseFromParent, /*InsnID*/0,
    2298             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2299             :         // GIR_Coverage, 2608,
    2300             :         GIR_Done,
    2301             :       // Label 109: @4294
    2302             :       GIM_Try, /*On fail goto*//*Label 110*/ 4345, // Rule ID 2580 //
    2303             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2304             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2305             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    2306             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2307             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2308             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2309             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2310             :         // (add:{ *:[v4i32] } (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm), QPR:{ *:[v4i32] }:$Vn)  =>  (VADDWsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2311             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWsv4i32,
    2312             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2313             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vn
    2314             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2315             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2316             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2317             :         GIR_EraseFromParent, /*InsnID*/0,
    2318             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2319             :         // GIR_Coverage, 2580,
    2320             :         GIR_Done,
    2321             :       // Label 110: @4345
    2322             :       GIM_Try, /*On fail goto*//*Label 111*/ 4396, // Rule ID 2583 //
    2323             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2324             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2325             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2326             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2327             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2328             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2329             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2330             :         // (add:{ *:[v4i32] } (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm), QPR:{ *:[v4i32] }:$Vn)  =>  (VADDWuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2331             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWuv4i32,
    2332             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2333             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vn
    2334             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2335             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2336             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2337             :         GIR_EraseFromParent, /*InsnID*/0,
    2338             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2339             :         // GIR_Coverage, 2583,
    2340             :         GIR_Done,
    2341             :       // Label 111: @4396
    2342             :       GIM_Try, /*On fail goto*//*Label 112*/ 4459, // Rule ID 878 //
    2343             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2344             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2345             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2346             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    2347             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s32,
    2348             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    2349             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2350             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2351             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2352             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, (mul:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm))  =>  (VMLAv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2353             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv4i32,
    2354             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2355             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2356             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2357             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    2358             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2359             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2360             :         GIR_EraseFromParent, /*InsnID*/0,
    2361             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2362             :         // GIR_Coverage, 878,
    2363             :         GIR_Done,
    2364             :       // Label 112: @4459
    2365             :       GIM_Try, /*On fail goto*//*Label 113*/ 4510, // Rule ID 773 //
    2366             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2367             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2368             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2369             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    2370             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2371             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2372             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2373             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VADDWsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2374             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWsv4i32,
    2375             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2376             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2377             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2378             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2379             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2380             :         GIR_EraseFromParent, /*InsnID*/0,
    2381             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2382             :         // GIR_Coverage, 773,
    2383             :         GIR_Done,
    2384             :       // Label 113: @4510
    2385             :       GIM_Try, /*On fail goto*//*Label 114*/ 4561, // Rule ID 776 //
    2386             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2387             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2388             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2389             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2390             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    2391             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2392             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2393             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VADDWuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    2394             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWuv4i32,
    2395             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2396             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2397             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2398             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2399             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2400             :         GIR_EraseFromParent, /*InsnID*/0,
    2401             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2402             :         // GIR_Coverage, 776,
    2403             :         GIR_Done,
    2404             :       // Label 114: @4561
    2405             :       GIM_Try, /*On fail goto*//*Label 115*/ 4599, // Rule ID 759 //
    2406             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2407             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2408             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2409             :         // (add:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)  =>  (VADDv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    2410             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv4i32,
    2411             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2412             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2413             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    2414             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2415             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2416             :         GIR_EraseFromParent, /*InsnID*/0,
    2417             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2418             :         // GIR_Coverage, 759,
    2419             :         GIR_Done,
    2420             :       // Label 115: @4599
    2421             :       GIM_Reject,
    2422             :     // Label 98: @4600
    2423             :     GIM_Reject,
    2424             :     // Label 40: @4601
    2425             :     GIM_Try, /*On fail goto*//*Label 116*/ 5060,
    2426             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    2427             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    2428             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    2429             :       GIM_Try, /*On fail goto*//*Label 117*/ 4685, // Rule ID 2673 //
    2430             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2431             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2432             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2433             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2434             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    2435             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    2436             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s8,
    2437             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2438             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2439             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2440             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2441             :         // (add:{ *:[v8i8] } (intrinsic_wo_chain:{ *:[v8i8] } 1014:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm), DPR:{ *:[v8i8] }:$src1)  =>  (VABAsv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2442             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv8i8,
    2443             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2444             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2445             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2446             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2447             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2448             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2449             :         GIR_EraseFromParent, /*InsnID*/0,
    2450             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2451             :         // GIR_Coverage, 2673,
    2452             :         GIR_Done,
    2453             :       // Label 117: @4685
    2454             :       GIM_Try, /*On fail goto*//*Label 118*/ 4755, // Rule ID 2679 //
    2455             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2456             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2457             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2458             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2459             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2460             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    2461             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s8,
    2462             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2463             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2464             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2465             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2466             :         // (add:{ *:[v8i8] } (intrinsic_wo_chain:{ *:[v8i8] } 1015:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm), DPR:{ *:[v8i8] }:$src1)  =>  (VABAuv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2467             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv8i8,
    2468             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2469             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2470             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2471             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2472             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2473             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2474             :         GIR_EraseFromParent, /*InsnID*/0,
    2475             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2476             :         // GIR_Coverage, 2679,
    2477             :         GIR_Done,
    2478             :       // Label 118: @4755
    2479             :       GIM_Try, /*On fail goto*//*Label 119*/ 4825, // Rule ID 1150 //
    2480             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2481             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2482             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2483             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2484             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2485             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    2486             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    2487             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s8,
    2488             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2489             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2490             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2491             :         // (add:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, (intrinsic_wo_chain:{ *:[v8i8] } 1014:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm))  =>  (VABAsv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2492             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv8i8,
    2493             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2494             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2495             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2496             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2497             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2498             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2499             :         GIR_EraseFromParent, /*InsnID*/0,
    2500             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2501             :         // GIR_Coverage, 1150,
    2502             :         GIR_Done,
    2503             :       // Label 119: @4825
    2504             :       GIM_Try, /*On fail goto*//*Label 120*/ 4895, // Rule ID 1156 //
    2505             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2506             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2507             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2508             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2509             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2510             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2511             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    2512             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s8,
    2513             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2514             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2515             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2516             :         // (add:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, (intrinsic_wo_chain:{ *:[v8i8] } 1015:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm))  =>  (VABAuv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2517             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv8i8,
    2518             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2519             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2520             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2521             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2522             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2523             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2524             :         GIR_EraseFromParent, /*InsnID*/0,
    2525             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2526             :         // GIR_Coverage, 1156,
    2527             :         GIR_Done,
    2528             :       // Label 120: @4895
    2529             :       GIM_Try, /*On fail goto*//*Label 121*/ 4958, // Rule ID 2603 //
    2530             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2531             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2532             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    2533             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2534             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    2535             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2536             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2537             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2538             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2539             :         // (add:{ *:[v8i8] } (mul:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm), DPR:{ *:[v8i8] }:$src1)  =>  (VMLAv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2540             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv8i8,
    2541             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2542             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2543             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2544             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    2545             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2546             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2547             :         GIR_EraseFromParent, /*InsnID*/0,
    2548             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2549             :         // GIR_Coverage, 2603,
    2550             :         GIR_Done,
    2551             :       // Label 121: @4958
    2552             :       GIM_Try, /*On fail goto*//*Label 122*/ 5021, // Rule ID 873 //
    2553             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2554             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2555             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2556             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    2557             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2558             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    2559             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2560             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2561             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2562             :         // (add:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, (mul:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm))  =>  (VMLAv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2563             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv8i8,
    2564             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2565             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2566             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2567             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    2568             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2569             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2570             :         GIR_EraseFromParent, /*InsnID*/0,
    2571             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2572             :         // GIR_Coverage, 873,
    2573             :         GIR_Done,
    2574             :       // Label 122: @5021
    2575             :       GIM_Try, /*On fail goto*//*Label 123*/ 5059, // Rule ID 754 //
    2576             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2577             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2578             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2579             :         // (add:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)  =>  (VADDv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2580             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv8i8,
    2581             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2582             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2583             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    2584             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2585             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2586             :         GIR_EraseFromParent, /*InsnID*/0,
    2587             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2588             :         // GIR_Coverage, 754,
    2589             :         GIR_Done,
    2590             :       // Label 123: @5059
    2591             :       GIM_Reject,
    2592             :     // Label 116: @5060
    2593             :     GIM_Reject,
    2594             :     // Label 41: @5061
    2595             :     GIM_Try, /*On fail goto*//*Label 124*/ 6184,
    2596             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    2597             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    2598             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    2599             :       GIM_Try, /*On fail goto*//*Label 125*/ 5158, // Rule ID 2685 //
    2600             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2601             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2602             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2603             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2604             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2605             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2606             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2607             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabds,
    2608             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v8s8,
    2609             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v8s8,
    2610             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2611             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2612             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2613             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2614             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2615             :         // (add:{ *:[v8i16] } (zext:{ *:[v8i16] } (intrinsic_wo_chain:{ *:[v8i8] } 1014:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)), QPR:{ *:[v8i16] }:$src1)  =>  (VABALsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2616             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALsv8i16,
    2617             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2618             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2619             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2620             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2621             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2622             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2623             :         GIR_EraseFromParent, /*InsnID*/0,
    2624             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2625             :         // GIR_Coverage, 2685,
    2626             :         GIR_Done,
    2627             :       // Label 125: @5158
    2628             :       GIM_Try, /*On fail goto*//*Label 126*/ 5241, // Rule ID 2688 //
    2629             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2630             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2631             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2632             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2633             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2634             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2635             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2636             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2637             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v8s8,
    2638             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v8s8,
    2639             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2640             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2641             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2642             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2643             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2644             :         // (add:{ *:[v8i16] } (zext:{ *:[v8i16] } (intrinsic_wo_chain:{ *:[v8i8] } 1015:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)), QPR:{ *:[v8i16] }:$src1)  =>  (VABALuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2645             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALuv8i16,
    2646             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2647             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2648             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2649             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2650             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2651             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2652             :         GIR_EraseFromParent, /*InsnID*/0,
    2653             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2654             :         // GIR_Coverage, 2688,
    2655             :         GIR_Done,
    2656             :       // Label 126: @5241
    2657             :       GIM_Try, /*On fail goto*//*Label 127*/ 5324, // Rule ID 1162 //
    2658             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2659             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2660             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2661             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2662             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2663             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2664             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2665             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2666             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabds,
    2667             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v8s8,
    2668             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v8s8,
    2669             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2670             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2671             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2672             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2673             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, (zext:{ *:[v8i16] } (intrinsic_wo_chain:{ *:[v8i8] } 1014:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)))  =>  (VABALsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2674             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALsv8i16,
    2675             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2676             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2677             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2678             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2679             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2680             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2681             :         GIR_EraseFromParent, /*InsnID*/0,
    2682             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2683             :         // GIR_Coverage, 1162,
    2684             :         GIR_Done,
    2685             :       // Label 127: @5324
    2686             :       GIM_Try, /*On fail goto*//*Label 128*/ 5407, // Rule ID 1165 //
    2687             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2688             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2689             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2690             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2691             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2692             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    2693             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_INTRINSIC,
    2694             :         GIM_CheckNumOperands, /*MI*/2, /*Expected*/4,
    2695             :         GIM_CheckIntrinsicID, /*MI*/2, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2696             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_v8s8,
    2697             :         GIM_CheckType, /*MI*/2, /*Op*/3, /*Type*/GILLT_v8s8,
    2698             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    2699             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/3, /*RC*/ARM::DPRRegClassID,
    2700             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2701             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2702             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, (zext:{ *:[v8i16] } (intrinsic_wo_chain:{ *:[v8i8] } 1015:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)))  =>  (VABALuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2703             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABALuv8i16,
    2704             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2705             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2706             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // Vn
    2707             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/3, // Vm
    2708             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2709             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2710             :         GIR_EraseFromParent, /*InsnID*/0,
    2711             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2712             :         // GIR_Coverage, 1165,
    2713             :         GIR_Done,
    2714             :       // Label 128: @5407
    2715             :       GIM_Try, /*On fail goto*//*Label 129*/ 5477, // Rule ID 2677 //
    2716             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2717             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2718             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2719             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2720             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    2721             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    2722             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s16,
    2723             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2724             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2725             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2726             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2727             :         // (add:{ *:[v8i16] } (intrinsic_wo_chain:{ *:[v8i16] } 1014:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm), QPR:{ *:[v8i16] }:$src1)  =>  (VABAsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2728             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv8i16,
    2729             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2730             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2731             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2732             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2733             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2734             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2735             :         GIR_EraseFromParent, /*InsnID*/0,
    2736             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2737             :         // GIR_Coverage, 2677,
    2738             :         GIR_Done,
    2739             :       // Label 129: @5477
    2740             :       GIM_Try, /*On fail goto*//*Label 130*/ 5547, // Rule ID 2683 //
    2741             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2742             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2743             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2744             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2745             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2746             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    2747             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s16,
    2748             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2749             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2750             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2751             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2752             :         // (add:{ *:[v8i16] } (intrinsic_wo_chain:{ *:[v8i16] } 1015:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm), QPR:{ *:[v8i16] }:$src1)  =>  (VABAuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2753             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv8i16,
    2754             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2755             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2756             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2757             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2758             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2759             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2760             :         GIR_EraseFromParent, /*InsnID*/0,
    2761             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2762             :         // GIR_Coverage, 2683,
    2763             :         GIR_Done,
    2764             :       // Label 130: @5547
    2765             :       GIM_Try, /*On fail goto*//*Label 131*/ 5617, // Rule ID 1154 //
    2766             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2767             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2768             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2769             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2770             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2771             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    2772             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    2773             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s16,
    2774             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2775             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2776             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2777             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, (intrinsic_wo_chain:{ *:[v8i16] } 1014:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm))  =>  (VABAsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2778             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv8i16,
    2779             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2780             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2781             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2782             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2783             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2784             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2785             :         GIR_EraseFromParent, /*InsnID*/0,
    2786             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2787             :         // GIR_Coverage, 1154,
    2788             :         GIR_Done,
    2789             :       // Label 131: @5617
    2790             :       GIM_Try, /*On fail goto*//*Label 132*/ 5687, // Rule ID 1160 //
    2791             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2792             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2793             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2794             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    2795             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    2796             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    2797             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    2798             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v8s16,
    2799             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2800             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    2801             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2802             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, (intrinsic_wo_chain:{ *:[v8i16] } 1015:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm))  =>  (VABAuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2803             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv8i16,
    2804             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2805             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2806             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    2807             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    2808             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2809             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2810             :         GIR_EraseFromParent, /*InsnID*/0,
    2811             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2812             :         // GIR_Coverage, 1160,
    2813             :         GIR_Done,
    2814             :       // Label 132: @5687
    2815             :       GIM_Try, /*On fail goto*//*Label 133*/ 5751, // Rule ID 766 //
    2816             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2817             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2818             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    2819             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2820             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2821             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    2822             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SEXT,
    2823             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v8s8,
    2824             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2825             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2826             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2827             :         // (add:{ *:[v8i16] } (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn), (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VADDLsv8i16:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2828             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDLsv8i16,
    2829             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2830             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2831             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    2832             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2833             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2834             :         GIR_EraseFromParent, /*InsnID*/0,
    2835             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2836             :         // GIR_Coverage, 766,
    2837             :         GIR_Done,
    2838             :       // Label 133: @5751
    2839             :       GIM_Try, /*On fail goto*//*Label 134*/ 5815, // Rule ID 769 //
    2840             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2841             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2842             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2843             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2844             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2845             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    2846             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ZEXT,
    2847             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v8s8,
    2848             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2849             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2850             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    2851             :         // (add:{ *:[v8i16] } (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn), (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VADDLuv8i16:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2852             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDLuv8i16,
    2853             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2854             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2855             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    2856             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2857             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2858             :         GIR_EraseFromParent, /*InsnID*/0,
    2859             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2860             :         // GIR_Coverage, 769,
    2861             :         GIR_Done,
    2862             :       // Label 134: @5815
    2863             :       GIM_Try, /*On fail goto*//*Label 135*/ 5878, // Rule ID 2607 //
    2864             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2865             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2866             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    2867             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s16,
    2868             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    2869             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2870             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2871             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2872             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2873             :         // (add:{ *:[v8i16] } (mul:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm), QPR:{ *:[v8i16] }:$src1)  =>  (VMLAv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2874             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv8i16,
    2875             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2876             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    2877             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2878             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    2879             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2880             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2881             :         GIR_EraseFromParent, /*InsnID*/0,
    2882             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2883             :         // GIR_Coverage, 2607,
    2884             :         GIR_Done,
    2885             :       // Label 135: @5878
    2886             :       GIM_Try, /*On fail goto*//*Label 136*/ 5929, // Rule ID 2579 //
    2887             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2888             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2889             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    2890             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2891             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2892             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2893             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2894             :         // (add:{ *:[v8i16] } (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm), QPR:{ *:[v8i16] }:$Vn)  =>  (VADDWsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2895             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWsv8i16,
    2896             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2897             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vn
    2898             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2899             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2900             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2901             :         GIR_EraseFromParent, /*InsnID*/0,
    2902             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2903             :         // GIR_Coverage, 2579,
    2904             :         GIR_Done,
    2905             :       // Label 136: @5929
    2906             :       GIM_Try, /*On fail goto*//*Label 137*/ 5980, // Rule ID 2582 //
    2907             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2908             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    2909             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2910             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2911             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2912             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2913             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2914             :         // (add:{ *:[v8i16] } (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm), QPR:{ *:[v8i16] }:$Vn)  =>  (VADDWuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2915             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWuv8i16,
    2916             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2917             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vn
    2918             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2919             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2920             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2921             :         GIR_EraseFromParent, /*InsnID*/0,
    2922             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2923             :         // GIR_Coverage, 2582,
    2924             :         GIR_Done,
    2925             :       // Label 137: @5980
    2926             :       GIM_Try, /*On fail goto*//*Label 138*/ 6043, // Rule ID 877 //
    2927             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2928             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2929             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2930             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    2931             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s16,
    2932             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    2933             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2934             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2935             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2936             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, (mul:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm))  =>  (VMLAv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2937             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv8i16,
    2938             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2939             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    2940             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    2941             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    2942             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2943             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2944             :         GIR_EraseFromParent, /*InsnID*/0,
    2945             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2946             :         // GIR_Coverage, 877,
    2947             :         GIR_Done,
    2948             :       // Label 138: @6043
    2949             :       GIM_Try, /*On fail goto*//*Label 139*/ 6094, // Rule ID 772 //
    2950             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2951             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2952             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2953             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    2954             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2955             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2956             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2957             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VADDWsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2958             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWsv8i16,
    2959             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2960             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2961             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2962             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2963             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2964             :         GIR_EraseFromParent, /*InsnID*/0,
    2965             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2966             :         // GIR_Coverage, 772,
    2967             :         GIR_Done,
    2968             :       // Label 139: @6094
    2969             :       GIM_Try, /*On fail goto*//*Label 140*/ 6145, // Rule ID 775 //
    2970             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2971             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2972             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    2973             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    2974             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    2975             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    2976             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    2977             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VADDWuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    2978             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDWuv8i16,
    2979             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2980             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2981             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    2982             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2983             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    2984             :         GIR_EraseFromParent, /*InsnID*/0,
    2985             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    2986             :         // GIR_Coverage, 775,
    2987             :         GIR_Done,
    2988             :       // Label 140: @6145
    2989             :       GIM_Try, /*On fail goto*//*Label 141*/ 6183, // Rule ID 758 //
    2990             :         GIM_CheckFeatures, GIFBS_HasNEON,
    2991             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    2992             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    2993             :         // (add:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)  =>  (VADDv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    2994             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv8i16,
    2995             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    2996             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    2997             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    2998             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    2999             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3000             :         GIR_EraseFromParent, /*InsnID*/0,
    3001             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3002             :         // GIR_Coverage, 758,
    3003             :         GIR_Done,
    3004             :       // Label 141: @6183
    3005             :       GIM_Reject,
    3006             :     // Label 124: @6184
    3007             :     GIM_Reject,
    3008             :     // Label 42: @6185
    3009             :     GIM_Try, /*On fail goto*//*Label 142*/ 6644,
    3010             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    3011             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    3012             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    3013             :       GIM_Try, /*On fail goto*//*Label 143*/ 6269, // Rule ID 2676 //
    3014             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3015             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3016             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    3017             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    3018             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    3019             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3020             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v16s8,
    3021             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3022             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    3023             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3024             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3025             :         // (add:{ *:[v16i8] } (intrinsic_wo_chain:{ *:[v16i8] } 1014:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm), QPR:{ *:[v16i8] }:$src1)  =>  (VABAsv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3026             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv16i8,
    3027             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3028             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    3029             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    3030             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    3031             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3032             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3033             :         GIR_EraseFromParent, /*InsnID*/0,
    3034             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3035             :         // GIR_Coverage, 2676,
    3036             :         GIR_Done,
    3037             :       // Label 143: @6269
    3038             :       GIM_Try, /*On fail goto*//*Label 144*/ 6339, // Rule ID 2682 //
    3039             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3040             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3041             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    3042             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    3043             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    3044             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3045             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v16s8,
    3046             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3047             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    3048             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3049             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3050             :         // (add:{ *:[v16i8] } (intrinsic_wo_chain:{ *:[v16i8] } 1015:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm), QPR:{ *:[v16i8] }:$src1)  =>  (VABAuv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3051             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv16i8,
    3052             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3053             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    3054             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    3055             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    3056             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3057             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3058             :         GIR_EraseFromParent, /*InsnID*/0,
    3059             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3060             :         // GIR_Coverage, 2682,
    3061             :         GIR_Done,
    3062             :       // Label 144: @6339
    3063             :       GIM_Try, /*On fail goto*//*Label 145*/ 6409, // Rule ID 1153 //
    3064             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3065             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3066             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3067             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    3068             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    3069             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabds,
    3070             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3071             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v16s8,
    3072             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3073             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    3074             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3075             :         // (add:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, (intrinsic_wo_chain:{ *:[v16i8] } 1014:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm))  =>  (VABAsv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3076             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAsv16i8,
    3077             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3078             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3079             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    3080             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    3081             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3082             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3083             :         GIR_EraseFromParent, /*InsnID*/0,
    3084             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3085             :         // GIR_Coverage, 1153,
    3086             :         GIR_Done,
    3087             :       // Label 145: @6409
    3088             :       GIM_Try, /*On fail goto*//*Label 146*/ 6479, // Rule ID 1159 //
    3089             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3090             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3091             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3092             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_INTRINSIC,
    3093             :         GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
    3094             :         GIM_CheckIntrinsicID, /*MI*/1, /*Op*/1, Intrinsic::arm_neon_vabdu,
    3095             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3096             :         GIM_CheckType, /*MI*/1, /*Op*/3, /*Type*/GILLT_v16s8,
    3097             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3098             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/3, /*RC*/ARM::QPRRegClassID,
    3099             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3100             :         // (add:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, (intrinsic_wo_chain:{ *:[v16i8] } 1015:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm))  =>  (VABAuv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3101             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VABAuv16i8,
    3102             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3103             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3104             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vn
    3105             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/3, // Vm
    3106             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3107             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3108             :         GIR_EraseFromParent, /*InsnID*/0,
    3109             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3110             :         // GIR_Coverage, 1159,
    3111             :         GIR_Done,
    3112             :       // Label 146: @6479
    3113             :       GIM_Try, /*On fail goto*//*Label 147*/ 6542, // Rule ID 2606 //
    3114             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3115             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3116             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3117             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s8,
    3118             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3119             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3120             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3121             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3122             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3123             :         // (add:{ *:[v16i8] } (mul:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm), QPR:{ *:[v16i8] }:$src1)  =>  (VMLAv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3124             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv16i8,
    3125             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3126             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src1
    3127             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3128             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3129             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3130             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3131             :         GIR_EraseFromParent, /*InsnID*/0,
    3132             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3133             :         // GIR_Coverage, 2606,
    3134             :         GIR_Done,
    3135             :       // Label 147: @6542
    3136             :       GIM_Try, /*On fail goto*//*Label 148*/ 6605, // Rule ID 876 //
    3137             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3138             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3139             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3140             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3141             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s8,
    3142             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3143             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3144             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3145             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3146             :         // (add:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, (mul:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm))  =>  (VMLAv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3147             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLAv16i8,
    3148             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3149             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3150             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3151             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3152             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3153             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3154             :         GIR_EraseFromParent, /*InsnID*/0,
    3155             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3156             :         // GIR_Coverage, 876,
    3157             :         GIR_Done,
    3158             :       // Label 148: @6605
    3159             :       GIM_Try, /*On fail goto*//*Label 149*/ 6643, // Rule ID 757 //
    3160             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3161             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3162             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3163             :         // (add:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)  =>  (VADDv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3164             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VADDv16i8,
    3165             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3166             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3167             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3168             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3169             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3170             :         GIR_EraseFromParent, /*InsnID*/0,
    3171             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3172             :         // GIR_Coverage, 757,
    3173             :         GIR_Done,
    3174             :       // Label 149: @6643
    3175             :       GIM_Reject,
    3176             :     // Label 142: @6644
    3177             :     GIM_Reject,
    3178             :     // Label 43: @6645
    3179             :     GIM_Reject,
    3180             :     // Label 1: @6646
    3181             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 10, /*)*//*default:*//*Label 159*/ 8635,
    3182             :     /*GILLT_s32*//*Label 150*/ 6661,
    3183             :     /*GILLT_s64*//*Label 151*/ 7154,
    3184             :     /*GILLT_v2s32*//*Label 152*/ 7205,
    3185             :     /*GILLT_v2s64*//*Label 153*/ 7318,
    3186             :     /*GILLT_v4s16*//*Label 154*/ 7602,
    3187             :     /*GILLT_v4s32*//*Label 155*/ 7715,
    3188             :     /*GILLT_v8s8*//*Label 156*/ 8062,
    3189             :     /*GILLT_v8s16*//*Label 157*/ 8175,
    3190             :     /*GILLT_v16s8*//*Label 158*/ 8522,
    3191             :     // Label 150: @6661
    3192             :     GIM_Try, /*On fail goto*//*Label 160*/ 7153,
    3193             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    3194             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    3195             :       GIM_Try, /*On fail goto*//*Label 161*/ 6723, // Rule ID 98 //
    3196             :         GIM_CheckFeatures, GIFBS_IsARM,
    3197             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    3198             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3199             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    3200             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    3201             :         // MIs[1] Operand 1
    3202             :         // No operand predicates
    3203             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    3204             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3205             :         // (sub:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm, GPR:{ *:[i32] }:$Rn)  =>  (RSBri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    3206             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::RSBri,
    3207             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3208             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    3209             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    3210             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3211             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3212             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3213             :         GIR_EraseFromParent, /*InsnID*/0,
    3214             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3215             :         // GIR_Coverage, 98,
    3216             :         GIR_Done,
    3217             :       // Label 161: @6723
    3218             :       GIM_Try, /*On fail goto*//*Label 162*/ 6775, // Rule ID 431 //
    3219             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    3220             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    3221             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3222             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    3223             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    3224             :         // MIs[1] Operand 1
    3225             :         // No operand predicates
    3226             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    3227             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3228             :         // (sub:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm, rGPR:{ *:[i32] }:$Rn)  =>  (t2RSBri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    3229             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2RSBri,
    3230             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3231             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    3232             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    3233             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3234             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3235             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3236             :         GIR_EraseFromParent, /*InsnID*/0,
    3237             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3238             :         // GIR_Coverage, 431,
    3239             :         GIR_Done,
    3240             :       // Label 162: @6775
    3241             :       GIM_Try, /*On fail goto*//*Label 163*/ 6827, // Rule ID 78 //
    3242             :         GIM_CheckFeatures, GIFBS_IsARM,
    3243             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    3244             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    3245             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3246             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    3247             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    3248             :         // MIs[1] Operand 1
    3249             :         // No operand predicates
    3250             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3251             :         // (sub:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm)  =>  (SUBri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    3252             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::SUBri,
    3253             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3254             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    3255             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    3256             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3257             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3258             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3259             :         GIR_EraseFromParent, /*InsnID*/0,
    3260             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3261             :         // GIR_Coverage, 78,
    3262             :         GIR_Done,
    3263             :       // Label 163: @6827
    3264             :       GIM_Try, /*On fail goto*//*Label 164*/ 6879, // Rule ID 415 //
    3265             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    3266             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    3267             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    3268             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3269             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    3270             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    3271             :         // MIs[1] Operand 1
    3272             :         // No operand predicates
    3273             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3274             :         // (sub:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm)  =>  (t2SUBri:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    3275             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SUBri,
    3276             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3277             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    3278             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    3279             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3280             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3281             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3282             :         GIR_EraseFromParent, /*InsnID*/0,
    3283             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3284             :         // GIR_Coverage, 415,
    3285             :         GIR_Done,
    3286             :       // Label 164: @6879
    3287             :       GIM_Try, /*On fail goto*//*Label 165*/ 6928, // Rule ID 416 //
    3288             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    3289             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    3290             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    3291             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3292             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    3293             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_imm0_4095,
    3294             :         // MIs[1] Operand 1
    3295             :         // No operand predicates
    3296             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3297             :         // (sub:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_imm0_4095>>:$imm)  =>  (t2SUBri12:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    3298             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SUBri12,
    3299             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3300             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    3301             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    3302             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3303             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3304             :         GIR_EraseFromParent, /*InsnID*/0,
    3305             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3306             :         // GIR_Coverage, 416,
    3307             :         GIR_Done,
    3308             :       // Label 165: @6928
    3309             :       GIM_Try, /*On fail goto*//*Label 166*/ 6995, // Rule ID 175 //
    3310             :         GIM_CheckFeatures, GIFBS_HasV6T2_IsARM_UseMulOps,
    3311             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    3312             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    3313             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3314             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3315             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    3316             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    3317             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    3318             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    3319             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3320             :         // (sub:{ *:[i32] } GPR:{ *:[i32] }:$Ra, (mul:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm))  =>  (MLS:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm, GPR:{ *:[i32] }:$Ra)
    3321             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MLS,
    3322             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3323             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    3324             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    3325             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    3326             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3327             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3328             :         GIR_EraseFromParent, /*InsnID*/0,
    3329             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3330             :         // GIR_Coverage, 175,
    3331             :         GIR_Done,
    3332             :       // Label 166: @6995
    3333             :       GIM_Try, /*On fail goto*//*Label 167*/ 7062, // Rule ID 508 //
    3334             :         GIM_CheckFeatures, GIFBS_IsThumb2_UseMulOps,
    3335             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    3336             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    3337             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3338             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3339             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    3340             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    3341             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    3342             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    3343             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3344             :         // (sub:{ *:[i32] } rGPR:{ *:[i32] }:$Ra, (mul:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm))  =>  (t2MLS:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, rGPR:{ *:[i32] }:$Ra)
    3345             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MLS,
    3346             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3347             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    3348             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Rm
    3349             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Ra
    3350             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3351             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3352             :         GIR_EraseFromParent, /*InsnID*/0,
    3353             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3354             :         // GIR_Coverage, 508,
    3355             :         GIR_Done,
    3356             :       // Label 167: @7062
    3357             :       GIM_Try, /*On fail goto*//*Label 168*/ 7107, // Rule ID 79 //
    3358             :         GIM_CheckFeatures, GIFBS_IsARM,
    3359             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    3360             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    3361             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    3362             :         // (sub:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (SUBrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    3363             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::SUBrr,
    3364             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3365             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    3366             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    3367             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3368             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3369             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3370             :         GIR_EraseFromParent, /*InsnID*/0,
    3371             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3372             :         // GIR_Coverage, 79,
    3373             :         GIR_Done,
    3374             :       // Label 168: @7107
    3375             :       GIM_Try, /*On fail goto*//*Label 169*/ 7152, // Rule ID 417 //
    3376             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    3377             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    3378             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    3379             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    3380             :         // (sub:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2SUBrr:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    3381             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SUBrr,
    3382             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    3383             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    3384             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    3385             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3386             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3387             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3388             :         GIR_EraseFromParent, /*InsnID*/0,
    3389             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3390             :         // GIR_Coverage, 417,
    3391             :         GIR_Done,
    3392             :       // Label 169: @7152
    3393             :       GIM_Reject,
    3394             :     // Label 160: @7153
    3395             :     GIM_Reject,
    3396             :     // Label 151: @7154
    3397             :     GIM_Try, /*On fail goto*//*Label 170*/ 7204, // Rule ID 947 //
    3398             :       GIM_CheckFeatures, GIFBS_HasNEON,
    3399             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    3400             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
    3401             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    3402             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3403             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3404             :       // (sub:{ *:[v1i64] } DPR:{ *:[v1i64] }:$Vn, DPR:{ *:[v1i64] }:$Vm)  =>  (VSUBv1i64:{ *:[v1i64] } DPR:{ *:[v1i64] }:$Vn, DPR:{ *:[v1i64] }:$Vm)
    3405             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv1i64,
    3406             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3407             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3408             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3409             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3410             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3411             :       GIR_EraseFromParent, /*InsnID*/0,
    3412             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3413             :       // GIR_Coverage, 947,
    3414             :       GIR_Done,
    3415             :     // Label 170: @7204
    3416             :     GIM_Reject,
    3417             :     // Label 152: @7205
    3418             :     GIM_Try, /*On fail goto*//*Label 171*/ 7317,
    3419             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    3420             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    3421             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    3422             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3423             :       GIM_Try, /*On fail goto*//*Label 172*/ 7282, // Rule ID 903 //
    3424             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3425             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3426             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3427             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    3428             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v2s32,
    3429             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3430             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3431             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3432             :         // (sub:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, (mul:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm))  =>  (VMLSv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$src1, DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    3433             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLSv2i32,
    3434             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3435             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3436             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3437             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3438             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3439             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3440             :         GIR_EraseFromParent, /*InsnID*/0,
    3441             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3442             :         // GIR_Coverage, 903,
    3443             :         GIR_Done,
    3444             :       // Label 172: @7282
    3445             :       GIM_Try, /*On fail goto*//*Label 173*/ 7316, // Rule ID 943 //
    3446             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3447             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3448             :         // (sub:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)  =>  (VSUBv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    3449             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv2i32,
    3450             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3451             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3452             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3453             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3454             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3455             :         GIR_EraseFromParent, /*InsnID*/0,
    3456             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3457             :         // GIR_Coverage, 943,
    3458             :         GIR_Done,
    3459             :       // Label 173: @7316
    3460             :       GIM_Reject,
    3461             :     // Label 171: @7317
    3462             :     GIM_Reject,
    3463             :     // Label 153: @7318
    3464             :     GIM_Try, /*On fail goto*//*Label 174*/ 7601,
    3465             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    3466             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s64,
    3467             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    3468             :       GIM_Try, /*On fail goto*//*Label 175*/ 7396, // Rule ID 955 //
    3469             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3470             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3471             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    3472             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    3473             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3474             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    3475             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SEXT,
    3476             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v2s32,
    3477             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3478             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3479             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    3480             :         // (sub:{ *:[v2i64] } (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn), (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VSUBLsv2i64:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    3481             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBLsv2i64,
    3482             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3483             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3484             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    3485             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3486             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3487             :         GIR_EraseFromParent, /*InsnID*/0,
    3488             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3489             :         // GIR_Coverage, 955,
    3490             :         GIR_Done,
    3491             :       // Label 175: @7396
    3492             :       GIM_Try, /*On fail goto*//*Label 176*/ 7460, // Rule ID 958 //
    3493             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3494             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3495             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    3496             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    3497             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3498             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    3499             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ZEXT,
    3500             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v2s32,
    3501             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3502             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3503             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    3504             :         // (sub:{ *:[v2i64] } (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn), (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VSUBLuv2i64:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    3505             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBLuv2i64,
    3506             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3507             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3508             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    3509             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3510             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3511             :         GIR_EraseFromParent, /*InsnID*/0,
    3512             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3513             :         // GIR_Coverage, 958,
    3514             :         GIR_Done,
    3515             :       // Label 176: @7460
    3516             :       GIM_Try, /*On fail goto*//*Label 177*/ 7511, // Rule ID 961 //
    3517             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3518             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3519             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3520             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    3521             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    3522             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3523             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3524             :         // (sub:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, (sext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VSUBWsv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    3525             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBWsv2i64,
    3526             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3527             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3528             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    3529             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3530             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3531             :         GIR_EraseFromParent, /*InsnID*/0,
    3532             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3533             :         // GIR_Coverage, 961,
    3534             :         GIR_Done,
    3535             :       // Label 177: @7511
    3536             :       GIM_Try, /*On fail goto*//*Label 178*/ 7562, // Rule ID 964 //
    3537             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3538             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3539             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3540             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    3541             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v2s32,
    3542             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3543             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3544             :         // (sub:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, (zext:{ *:[v2i64] } DPR:{ *:[v2i32] }:$Vm))  =>  (VSUBWuv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    3545             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBWuv2i64,
    3546             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3547             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3548             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    3549             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3550             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3551             :         GIR_EraseFromParent, /*InsnID*/0,
    3552             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3553             :         // GIR_Coverage, 964,
    3554             :         GIR_Done,
    3555             :       // Label 178: @7562
    3556             :       GIM_Try, /*On fail goto*//*Label 179*/ 7600, // Rule ID 948 //
    3557             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3558             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3559             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3560             :         // (sub:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, QPR:{ *:[v2i64] }:$Vm)  =>  (VSUBv2i64:{ *:[v2i64] } QPR:{ *:[v2i64] }:$Vn, QPR:{ *:[v2i64] }:$Vm)
    3561             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv2i64,
    3562             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3563             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3564             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3565             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3566             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3567             :         GIR_EraseFromParent, /*InsnID*/0,
    3568             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3569             :         // GIR_Coverage, 948,
    3570             :         GIR_Done,
    3571             :       // Label 179: @7600
    3572             :       GIM_Reject,
    3573             :     // Label 174: @7601
    3574             :     GIM_Reject,
    3575             :     // Label 154: @7602
    3576             :     GIM_Try, /*On fail goto*//*Label 180*/ 7714,
    3577             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    3578             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    3579             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    3580             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3581             :       GIM_Try, /*On fail goto*//*Label 181*/ 7679, // Rule ID 902 //
    3582             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3583             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3584             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3585             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    3586             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s16,
    3587             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3588             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3589             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3590             :         // (sub:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, (mul:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm))  =>  (VMLSv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$src1, DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    3591             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLSv4i16,
    3592             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3593             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3594             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3595             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3596             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3597             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3598             :         GIR_EraseFromParent, /*InsnID*/0,
    3599             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3600             :         // GIR_Coverage, 902,
    3601             :         GIR_Done,
    3602             :       // Label 181: @7679
    3603             :       GIM_Try, /*On fail goto*//*Label 182*/ 7713, // Rule ID 942 //
    3604             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3605             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3606             :         // (sub:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)  =>  (VSUBv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    3607             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv4i16,
    3608             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3609             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3610             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3611             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3612             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3613             :         GIR_EraseFromParent, /*InsnID*/0,
    3614             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3615             :         // GIR_Coverage, 942,
    3616             :         GIR_Done,
    3617             :       // Label 182: @7713
    3618             :       GIM_Reject,
    3619             :     // Label 180: @7714
    3620             :     GIM_Reject,
    3621             :     // Label 155: @7715
    3622             :     GIM_Try, /*On fail goto*//*Label 183*/ 8061,
    3623             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    3624             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    3625             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    3626             :       GIM_Try, /*On fail goto*//*Label 184*/ 7793, // Rule ID 954 //
    3627             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3628             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3629             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    3630             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    3631             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3632             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    3633             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SEXT,
    3634             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v4s16,
    3635             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3636             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3637             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    3638             :         // (sub:{ *:[v4i32] } (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn), (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VSUBLsv4i32:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    3639             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBLsv4i32,
    3640             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3641             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3642             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    3643             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3644             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3645             :         GIR_EraseFromParent, /*InsnID*/0,
    3646             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3647             :         // GIR_Coverage, 954,
    3648             :         GIR_Done,
    3649             :       // Label 184: @7793
    3650             :       GIM_Try, /*On fail goto*//*Label 185*/ 7857, // Rule ID 957 //
    3651             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3652             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3653             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    3654             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    3655             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3656             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    3657             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ZEXT,
    3658             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v4s16,
    3659             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3660             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3661             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    3662             :         // (sub:{ *:[v4i32] } (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn), (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VSUBLuv4i32:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    3663             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBLuv4i32,
    3664             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3665             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3666             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    3667             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3668             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3669             :         GIR_EraseFromParent, /*InsnID*/0,
    3670             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3671             :         // GIR_Coverage, 957,
    3672             :         GIR_Done,
    3673             :       // Label 185: @7857
    3674             :       GIM_Try, /*On fail goto*//*Label 186*/ 7920, // Rule ID 906 //
    3675             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3676             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3677             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3678             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3679             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s32,
    3680             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v4s32,
    3681             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3682             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3683             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3684             :         // (sub:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, (mul:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm))  =>  (VMLSv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$src1, QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    3685             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLSv4i32,
    3686             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3687             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3688             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3689             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3690             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3691             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3692             :         GIR_EraseFromParent, /*InsnID*/0,
    3693             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3694             :         // GIR_Coverage, 906,
    3695             :         GIR_Done,
    3696             :       // Label 186: @7920
    3697             :       GIM_Try, /*On fail goto*//*Label 187*/ 7971, // Rule ID 960 //
    3698             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3699             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3700             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3701             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    3702             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    3703             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3704             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3705             :         // (sub:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, (sext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VSUBWsv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    3706             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBWsv4i32,
    3707             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3708             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3709             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    3710             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3711             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3712             :         GIR_EraseFromParent, /*InsnID*/0,
    3713             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3714             :         // GIR_Coverage, 960,
    3715             :         GIR_Done,
    3716             :       // Label 187: @7971
    3717             :       GIM_Try, /*On fail goto*//*Label 188*/ 8022, // Rule ID 963 //
    3718             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3719             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3720             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3721             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    3722             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v4s16,
    3723             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3724             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3725             :         // (sub:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, (zext:{ *:[v4i32] } DPR:{ *:[v4i16] }:$Vm))  =>  (VSUBWuv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    3726             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBWuv4i32,
    3727             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3728             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3729             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    3730             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3731             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3732             :         GIR_EraseFromParent, /*InsnID*/0,
    3733             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3734             :         // GIR_Coverage, 963,
    3735             :         GIR_Done,
    3736             :       // Label 188: @8022
    3737             :       GIM_Try, /*On fail goto*//*Label 189*/ 8060, // Rule ID 946 //
    3738             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3739             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3740             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3741             :         // (sub:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)  =>  (VSUBv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    3742             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv4i32,
    3743             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3744             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3745             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3746             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3747             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3748             :         GIR_EraseFromParent, /*InsnID*/0,
    3749             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3750             :         // GIR_Coverage, 946,
    3751             :         GIR_Done,
    3752             :       // Label 189: @8060
    3753             :       GIM_Reject,
    3754             :     // Label 183: @8061
    3755             :     GIM_Reject,
    3756             :     // Label 156: @8062
    3757             :     GIM_Try, /*On fail goto*//*Label 190*/ 8174,
    3758             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    3759             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    3760             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    3761             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3762             :       GIM_Try, /*On fail goto*//*Label 191*/ 8139, // Rule ID 901 //
    3763             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3764             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3765             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3766             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    3767             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s8,
    3768             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3769             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3770             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3771             :         // (sub:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, (mul:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm))  =>  (VMLSv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$src1, DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    3772             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLSv8i8,
    3773             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3774             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3775             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3776             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3777             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3778             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3779             :         GIR_EraseFromParent, /*InsnID*/0,
    3780             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3781             :         // GIR_Coverage, 901,
    3782             :         GIR_Done,
    3783             :       // Label 191: @8139
    3784             :       GIM_Try, /*On fail goto*//*Label 192*/ 8173, // Rule ID 941 //
    3785             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3786             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    3787             :         // (sub:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)  =>  (VSUBv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    3788             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv8i8,
    3789             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3790             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3791             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3792             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3793             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3794             :         GIR_EraseFromParent, /*InsnID*/0,
    3795             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3796             :         // GIR_Coverage, 941,
    3797             :         GIR_Done,
    3798             :       // Label 192: @8173
    3799             :       GIM_Reject,
    3800             :     // Label 190: @8174
    3801             :     GIM_Reject,
    3802             :     // Label 157: @8175
    3803             :     GIM_Try, /*On fail goto*//*Label 193*/ 8521,
    3804             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    3805             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    3806             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    3807             :       GIM_Try, /*On fail goto*//*Label 194*/ 8253, // Rule ID 953 //
    3808             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3809             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3810             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    3811             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    3812             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3813             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    3814             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SEXT,
    3815             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v8s8,
    3816             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3817             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3818             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    3819             :         // (sub:{ *:[v8i16] } (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn), (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VSUBLsv8i16:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    3820             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBLsv8i16,
    3821             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3822             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3823             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    3824             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3825             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3826             :         GIR_EraseFromParent, /*InsnID*/0,
    3827             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3828             :         // GIR_Coverage, 953,
    3829             :         GIR_Done,
    3830             :       // Label 194: @8253
    3831             :       GIM_Try, /*On fail goto*//*Label 195*/ 8317, // Rule ID 956 //
    3832             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3833             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    3834             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    3835             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    3836             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3837             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    3838             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ZEXT,
    3839             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_v8s8,
    3840             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3841             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3842             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    3843             :         // (sub:{ *:[v8i16] } (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn), (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VSUBLuv8i16:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    3844             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBLuv8i16,
    3845             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3846             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3847             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Vm
    3848             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3849             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3850             :         GIR_EraseFromParent, /*InsnID*/0,
    3851             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3852             :         // GIR_Coverage, 956,
    3853             :         GIR_Done,
    3854             :       // Label 195: @8317
    3855             :       GIM_Try, /*On fail goto*//*Label 196*/ 8380, // Rule ID 905 //
    3856             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3857             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3858             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3859             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3860             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s16,
    3861             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v8s16,
    3862             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3863             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3864             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3865             :         // (sub:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, (mul:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm))  =>  (VMLSv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$src1, QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    3866             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLSv8i16,
    3867             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3868             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3869             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3870             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3871             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3872             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3873             :         GIR_EraseFromParent, /*InsnID*/0,
    3874             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3875             :         // GIR_Coverage, 905,
    3876             :         GIR_Done,
    3877             :       // Label 196: @8380
    3878             :       GIM_Try, /*On fail goto*//*Label 197*/ 8431, // Rule ID 959 //
    3879             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3880             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3881             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3882             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SEXT,
    3883             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    3884             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3885             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3886             :         // (sub:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, (sext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VSUBWsv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    3887             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBWsv8i16,
    3888             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3889             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3890             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    3891             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3892             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3893             :         GIR_EraseFromParent, /*InsnID*/0,
    3894             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3895             :         // GIR_Coverage, 959,
    3896             :         GIR_Done,
    3897             :       // Label 197: @8431
    3898             :       GIM_Try, /*On fail goto*//*Label 198*/ 8482, // Rule ID 962 //
    3899             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3900             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3901             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3902             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ZEXT,
    3903             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v8s8,
    3904             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    3905             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3906             :         // (sub:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, (zext:{ *:[v8i16] } DPR:{ *:[v8i8] }:$Vm))  =>  (VSUBWuv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    3907             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBWuv8i16,
    3908             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3909             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3910             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vm
    3911             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3912             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3913             :         GIR_EraseFromParent, /*InsnID*/0,
    3914             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3915             :         // GIR_Coverage, 962,
    3916             :         GIR_Done,
    3917             :       // Label 198: @8482
    3918             :       GIM_Try, /*On fail goto*//*Label 199*/ 8520, // Rule ID 945 //
    3919             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3920             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3921             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3922             :         // (sub:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)  =>  (VSUBv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    3923             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv8i16,
    3924             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3925             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3926             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3927             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3928             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3929             :         GIR_EraseFromParent, /*InsnID*/0,
    3930             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3931             :         // GIR_Coverage, 945,
    3932             :         GIR_Done,
    3933             :       // Label 199: @8520
    3934             :       GIM_Reject,
    3935             :     // Label 193: @8521
    3936             :     GIM_Reject,
    3937             :     // Label 158: @8522
    3938             :     GIM_Try, /*On fail goto*//*Label 200*/ 8634,
    3939             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    3940             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    3941             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    3942             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3943             :       GIM_Try, /*On fail goto*//*Label 201*/ 8599, // Rule ID 904 //
    3944             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3945             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    3946             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_MUL,
    3947             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_v16s8,
    3948             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_v16s8,
    3949             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    3950             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3951             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    3952             :         // (sub:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, (mul:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm))  =>  (VMLSv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$src1, QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3953             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMLSv16i8,
    3954             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3955             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src1
    3956             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Vn
    3957             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // Vm
    3958             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3959             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3960             :         GIR_EraseFromParent, /*InsnID*/0,
    3961             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3962             :         // GIR_Coverage, 904,
    3963             :         GIR_Done,
    3964             :       // Label 201: @8599
    3965             :       GIM_Try, /*On fail goto*//*Label 202*/ 8633, // Rule ID 944 //
    3966             :         GIM_CheckFeatures, GIFBS_HasNEON,
    3967             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    3968             :         // (sub:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)  =>  (VSUBv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    3969             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VSUBv16i8,
    3970             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    3971             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    3972             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    3973             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    3974             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    3975             :         GIR_EraseFromParent, /*InsnID*/0,
    3976             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    3977             :         // GIR_Coverage, 944,
    3978             :         GIR_Done,
    3979             :       // Label 202: @8633
    3980             :       GIM_Reject,
    3981             :     // Label 200: @8634
    3982             :     GIM_Reject,
    3983             :     // Label 159: @8635
    3984             :     GIM_Reject,
    3985             :     // Label 2: @8636
    3986             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 10, /*)*//*default:*//*Label 210*/ 9269,
    3987             :     /*GILLT_s32*//*Label 203*/ 8651, 0,
    3988             :     /*GILLT_v2s32*//*Label 204*/ 8963, 0,
    3989             :     /*GILLT_v4s16*//*Label 205*/ 9014,
    3990             :     /*GILLT_v4s32*//*Label 206*/ 9065,
    3991             :     /*GILLT_v8s8*//*Label 207*/ 9116,
    3992             :     /*GILLT_v8s16*//*Label 208*/ 9167,
    3993             :     /*GILLT_v16s8*//*Label 209*/ 9218,
    3994             :     // Label 203: @8651
    3995             :     GIM_Try, /*On fail goto*//*Label 211*/ 8962,
    3996             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    3997             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    3998             :       GIM_Try, /*On fail goto*//*Label 212*/ 8745, // Rule ID 188 //
    3999             :         GIM_CheckFeatures, GIFBS_HasV5TE_IsARM,
    4000             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4001             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4002             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ASHR,
    4003             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4004             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4005             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4006             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 16,
    4007             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    4008             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    4009             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    4010             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    4011             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4012             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 16,
    4013             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4014             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4015             :         // (mul:{ *:[i32] } (sra:{ *:[i32] } GPR:{ *:[i32] }:$Rn, 16:{ *:[i32] }), (sra:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 16:{ *:[i32] }))  =>  (SMULTT:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    4016             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::SMULTT,
    4017             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4018             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    4019             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    4020             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4021             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4022             :         GIR_EraseFromParent, /*InsnID*/0,
    4023             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4024             :         // GIR_Coverage, 188,
    4025             :         GIR_Done,
    4026             :       // Label 212: @8745
    4027             :       GIM_Try, /*On fail goto*//*Label 213*/ 8829, // Rule ID 519 //
    4028             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    4029             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4030             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4031             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ASHR,
    4032             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4033             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4034             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4035             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 16,
    4036             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    4037             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    4038             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    4039             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    4040             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4041             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 16,
    4042             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4043             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4044             :         // (mul:{ *:[i32] } (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 16:{ *:[i32] }), (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 16:{ *:[i32] }))  =>  (t2SMULTT:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4045             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SMULTT,
    4046             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4047             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    4048             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    4049             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4050             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4051             :         GIR_EraseFromParent, /*InsnID*/0,
    4052             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4053             :         // GIR_Coverage, 519,
    4054             :         GIR_Done,
    4055             :       // Label 213: @8829
    4056             :       GIM_Try, /*On fail goto*//*Label 214*/ 8874, // Rule ID 171 //
    4057             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    4058             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    4059             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    4060             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    4061             :         // (mul:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm)  =>  (MUL:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm)
    4062             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MUL,
    4063             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4064             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4065             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4066             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4067             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4068             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4069             :         GIR_EraseFromParent, /*InsnID*/0,
    4070             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4071             :         // GIR_Coverage, 171,
    4072             :         GIR_Done,
    4073             :       // Label 214: @8874
    4074             :       GIM_Try, /*On fail goto*//*Label 215*/ 8919, // Rule ID 172 //
    4075             :         GIM_CheckFeatures, GIFBS_IsARM_NoV6_UseMulOps,
    4076             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    4077             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    4078             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRnopcRegClassID,
    4079             :         // (mul:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm)  =>  (MULv5:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm)
    4080             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MULv5,
    4081             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4082             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4083             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4084             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4085             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4086             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4087             :         GIR_EraseFromParent, /*InsnID*/0,
    4088             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4089             :         // GIR_Coverage, 172,
    4090             :         GIR_Done,
    4091             :       // Label 215: @8919
    4092             :       GIM_Try, /*On fail goto*//*Label 216*/ 8961, // Rule ID 506 //
    4093             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4094             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4095             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4096             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4097             :         // (mul:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2MUL:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4098             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MUL,
    4099             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4100             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4101             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4102             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4103             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4104             :         GIR_EraseFromParent, /*InsnID*/0,
    4105             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4106             :         // GIR_Coverage, 506,
    4107             :         GIR_Done,
    4108             :       // Label 216: @8961
    4109             :       GIM_Reject,
    4110             :     // Label 211: @8962
    4111             :     GIM_Reject,
    4112             :     // Label 204: @8963
    4113             :     GIM_Try, /*On fail goto*//*Label 217*/ 9013, // Rule ID 823 //
    4114             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4115             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    4116             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    4117             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    4118             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    4119             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    4120             :       // (mul:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)  =>  (VMULv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    4121             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMULv2i32,
    4122             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4123             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4124             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4125             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4126             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4127             :       GIR_EraseFromParent, /*InsnID*/0,
    4128             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4129             :       // GIR_Coverage, 823,
    4130             :       GIR_Done,
    4131             :     // Label 217: @9013
    4132             :     GIM_Reject,
    4133             :     // Label 205: @9014
    4134             :     GIM_Try, /*On fail goto*//*Label 218*/ 9064, // Rule ID 822 //
    4135             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4136             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    4137             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    4138             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    4139             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    4140             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    4141             :       // (mul:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)  =>  (VMULv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vn, DPR:{ *:[v4i16] }:$Vm)
    4142             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMULv4i16,
    4143             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4144             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4145             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4146             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4147             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4148             :       GIR_EraseFromParent, /*InsnID*/0,
    4149             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4150             :       // GIR_Coverage, 822,
    4151             :       GIR_Done,
    4152             :     // Label 218: @9064
    4153             :     GIM_Reject,
    4154             :     // Label 206: @9065
    4155             :     GIM_Try, /*On fail goto*//*Label 219*/ 9115, // Rule ID 826 //
    4156             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4157             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    4158             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    4159             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    4160             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    4161             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    4162             :       // (mul:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)  =>  (VMULv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    4163             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMULv4i32,
    4164             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4165             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4166             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4167             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4168             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4169             :       GIR_EraseFromParent, /*InsnID*/0,
    4170             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4171             :       // GIR_Coverage, 826,
    4172             :       GIR_Done,
    4173             :     // Label 219: @9115
    4174             :     GIM_Reject,
    4175             :     // Label 207: @9116
    4176             :     GIM_Try, /*On fail goto*//*Label 220*/ 9166, // Rule ID 821 //
    4177             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4178             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    4179             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    4180             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    4181             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    4182             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    4183             :       // (mul:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)  =>  (VMULv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vn, DPR:{ *:[v8i8] }:$Vm)
    4184             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMULv8i8,
    4185             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4186             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4187             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4188             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4189             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4190             :       GIR_EraseFromParent, /*InsnID*/0,
    4191             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4192             :       // GIR_Coverage, 821,
    4193             :       GIR_Done,
    4194             :     // Label 220: @9166
    4195             :     GIM_Reject,
    4196             :     // Label 208: @9167
    4197             :     GIM_Try, /*On fail goto*//*Label 221*/ 9217, // Rule ID 825 //
    4198             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4199             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    4200             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    4201             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    4202             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    4203             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    4204             :       // (mul:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)  =>  (VMULv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vn, QPR:{ *:[v8i16] }:$Vm)
    4205             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMULv8i16,
    4206             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4207             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4208             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4209             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4210             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4211             :       GIR_EraseFromParent, /*InsnID*/0,
    4212             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4213             :       // GIR_Coverage, 825,
    4214             :       GIR_Done,
    4215             :     // Label 221: @9217
    4216             :     GIM_Reject,
    4217             :     // Label 209: @9218
    4218             :     GIM_Try, /*On fail goto*//*Label 222*/ 9268, // Rule ID 824 //
    4219             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4220             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    4221             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    4222             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    4223             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    4224             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    4225             :       // (mul:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)  =>  (VMULv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vn, QPR:{ *:[v16i8] }:$Vm)
    4226             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMULv16i8,
    4227             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4228             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4229             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4230             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4231             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4232             :       GIR_EraseFromParent, /*InsnID*/0,
    4233             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4234             :       // GIR_Coverage, 824,
    4235             :       GIR_Done,
    4236             :     // Label 222: @9268
    4237             :     GIM_Reject,
    4238             :     // Label 210: @9269
    4239             :     GIM_Reject,
    4240             :     // Label 3: @9270
    4241             :     GIM_Try, /*On fail goto*//*Label 223*/ 9369,
    4242             :       GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    4243             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    4244             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    4245             :       GIM_Try, /*On fail goto*//*Label 224*/ 9326, // Rule ID 197 //
    4246             :         GIM_CheckFeatures, GIFBS_HasDivideInARM_IsARM,
    4247             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4248             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4249             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    4250             :         // (sdiv:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (SDIV:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    4251             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::SDIV,
    4252             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4253             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4254             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4255             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4256             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4257             :         GIR_EraseFromParent, /*InsnID*/0,
    4258             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4259             :         // GIR_Coverage, 197,
    4260             :         GIR_Done,
    4261             :       // Label 224: @9326
    4262             :       GIM_Try, /*On fail goto*//*Label 225*/ 9368, // Rule ID 536 //
    4263             :         GIM_CheckFeatures, GIFBS_HasDivideInThumb_HasV8MBaseline_IsThumb,
    4264             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4265             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4266             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4267             :         // (sdiv:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2SDIV:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4268             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2SDIV,
    4269             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4270             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4271             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4272             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4273             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4274             :         GIR_EraseFromParent, /*InsnID*/0,
    4275             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4276             :         // GIR_Coverage, 536,
    4277             :         GIR_Done,
    4278             :       // Label 225: @9368
    4279             :       GIM_Reject,
    4280             :     // Label 223: @9369
    4281             :     GIM_Reject,
    4282             :     // Label 4: @9370
    4283             :     GIM_Try, /*On fail goto*//*Label 226*/ 9469,
    4284             :       GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    4285             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    4286             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    4287             :       GIM_Try, /*On fail goto*//*Label 227*/ 9426, // Rule ID 198 //
    4288             :         GIM_CheckFeatures, GIFBS_HasDivideInARM_IsARM,
    4289             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4290             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4291             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    4292             :         // (udiv:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (UDIV:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    4293             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UDIV,
    4294             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4295             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4296             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4297             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4298             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4299             :         GIR_EraseFromParent, /*InsnID*/0,
    4300             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4301             :         // GIR_Coverage, 198,
    4302             :         GIR_Done,
    4303             :       // Label 227: @9426
    4304             :       GIM_Try, /*On fail goto*//*Label 228*/ 9468, // Rule ID 537 //
    4305             :         GIM_CheckFeatures, GIFBS_HasDivideInThumb_HasV8MBaseline_IsThumb,
    4306             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4307             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4308             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4309             :         // (udiv:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2UDIV:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4310             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UDIV,
    4311             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4312             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4313             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4314             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4315             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4316             :         GIR_EraseFromParent, /*InsnID*/0,
    4317             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4318             :         // GIR_Coverage, 537,
    4319             :         GIR_Done,
    4320             :       // Label 228: @9468
    4321             :       GIM_Reject,
    4322             :     // Label 226: @9469
    4323             :     GIM_Reject,
    4324             :     // Label 5: @9470
    4325             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 7, /*)*//*default:*//*Label 232*/ 11182,
    4326             :     /*GILLT_s32*//*Label 229*/ 9482, 0,
    4327             :     /*GILLT_v2s32*//*Label 230*/ 11080, 0, 0,
    4328             :     /*GILLT_v4s32*//*Label 231*/ 11131,
    4329             :     // Label 229: @9482
    4330             :     GIM_Try, /*On fail goto*//*Label 233*/ 11079,
    4331             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    4332             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    4333             :       GIM_Try, /*On fail goto*//*Label 234*/ 9554, // Rule ID 1707 //
    4334             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    4335             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    4336             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4337             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_LSHR,
    4338             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4339             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4340             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4341             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 8,
    4342             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 16711935,
    4343             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4344             :         // (and:{ *:[i32] } (srl:{ *:[i32] } GPR:{ *:[i32] }:$Src, 8:{ *:[i32] }), 16711935:{ *:[i32] })  =>  (UXTB16:{ *:[i32] } GPR:{ *:[i32] }:$Src, 1:{ *:[i32] })
    4345             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTB16,
    4346             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4347             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Src
    4348             :         GIR_AddImm, /*InsnID*/0, /*Imm*/1,
    4349             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4350             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4351             :         GIR_EraseFromParent, /*InsnID*/0,
    4352             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4353             :         // GIR_Coverage, 1707,
    4354             :         GIR_Done,
    4355             :       // Label 234: @9554
    4356             :       GIM_Try, /*On fail goto*//*Label 235*/ 9616, // Rule ID 1909 //
    4357             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    4358             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4359             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4360             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_LSHR,
    4361             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4362             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4363             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4364             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 8,
    4365             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 16711935,
    4366             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4367             :         // (and:{ *:[i32] } (srl:{ *:[i32] } rGPR:{ *:[i32] }:$Src, 8:{ *:[i32] }), 16711935:{ *:[i32] })  =>  (t2UXTB16:{ *:[i32] } rGPR:{ *:[i32] }:$Src, 1:{ *:[i32] })
    4368             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTB16,
    4369             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4370             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Src
    4371             :         GIR_AddImm, /*InsnID*/0, /*Imm*/1,
    4372             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4373             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4374             :         GIR_EraseFromParent, /*InsnID*/0,
    4375             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4376             :         // GIR_Coverage, 1909,
    4377             :         GIR_Done,
    4378             :       // Label 235: @9616
    4379             :       GIM_Try, /*On fail goto*//*Label 236*/ 9657, // Rule ID 1810 //
    4380             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    4381             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    4382             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4383             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 255,
    4384             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Src, 255:{ *:[i32] })  =>  (UXTB:{ *:[i32] } GPR:{ *:[i32] }:$Src, 0:{ *:[i32] })
    4385             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTB,
    4386             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4387             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Src
    4388             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    4389             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4390             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4391             :         GIR_EraseFromParent, /*InsnID*/0,
    4392             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4393             :         // GIR_Coverage, 1810,
    4394             :         GIR_Done,
    4395             :       // Label 236: @9657
    4396             :       GIM_Try, /*On fail goto*//*Label 237*/ 9698, // Rule ID 1811 //
    4397             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    4398             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    4399             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4400             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 65535,
    4401             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Src, 65535:{ *:[i32] })  =>  (UXTH:{ *:[i32] } GPR:{ *:[i32] }:$Src, 0:{ *:[i32] })
    4402             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTH,
    4403             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4404             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Src
    4405             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    4406             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4407             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4408             :         GIR_EraseFromParent, /*InsnID*/0,
    4409             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4410             :         // GIR_Coverage, 1811,
    4411             :         GIR_Done,
    4412             :       // Label 237: @9698
    4413             :       GIM_Try, /*On fail goto*//*Label 238*/ 9739, // Rule ID 1812 //
    4414             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    4415             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    4416             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4417             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 16711935,
    4418             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Src, 16711935:{ *:[i32] })  =>  (UXTB16:{ *:[i32] } GPR:{ *:[i32] }:$Src, 0:{ *:[i32] })
    4419             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTB16,
    4420             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4421             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Src
    4422             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    4423             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4424             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4425             :         GIR_EraseFromParent, /*InsnID*/0,
    4426             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4427             :         // GIR_Coverage, 1812,
    4428             :         GIR_Done,
    4429             :       // Label 238: @9739
    4430             :       GIM_Try, /*On fail goto*//*Label 239*/ 9780, // Rule ID 1996 //
    4431             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4432             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4433             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4434             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 255,
    4435             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 255:{ *:[i32] })  =>  (t2UXTB:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
    4436             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTB,
    4437             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4438             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    4439             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    4440             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4441             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4442             :         GIR_EraseFromParent, /*InsnID*/0,
    4443             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4444             :         // GIR_Coverage, 1996,
    4445             :         GIR_Done,
    4446             :       // Label 239: @9780
    4447             :       GIM_Try, /*On fail goto*//*Label 240*/ 9821, // Rule ID 1997 //
    4448             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4449             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4450             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4451             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 65535,
    4452             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 65535:{ *:[i32] })  =>  (t2UXTH:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
    4453             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTH,
    4454             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4455             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    4456             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    4457             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4458             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4459             :         GIR_EraseFromParent, /*InsnID*/0,
    4460             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4461             :         // GIR_Coverage, 1997,
    4462             :         GIR_Done,
    4463             :       // Label 240: @9821
    4464             :       GIM_Try, /*On fail goto*//*Label 241*/ 9862, // Rule ID 1998 //
    4465             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    4466             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4467             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4468             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 16711935,
    4469             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 16711935:{ *:[i32] })  =>  (t2UXTB16:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
    4470             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTB16,
    4471             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4472             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    4473             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    4474             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4475             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4476             :         GIR_EraseFromParent, /*InsnID*/0,
    4477             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4478             :         // GIR_Coverage, 1998,
    4479             :         GIR_Done,
    4480             :       // Label 241: @9862
    4481             :       GIM_Try, /*On fail goto*//*Label 242*/ 9935, // Rule ID 2513 //
    4482             :         GIM_CheckFeatures, GIFBS_IsARM,
    4483             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4484             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4485             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4486             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4487             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4488             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -1,
    4489             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    4490             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4491             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    4492             :         // MIs[2] Operand 1
    4493             :         // No operand predicates
    4494             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    4495             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4496             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4497             :         // (and:{ *:[i32] } (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm), GPR:{ *:[i32] }:$Rn)  =>  (BICri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4498             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BICri,
    4499             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4500             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    4501             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4502             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4503             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4504             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4505             :         GIR_EraseFromParent, /*InsnID*/0,
    4506             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4507             :         // GIR_Coverage, 2513,
    4508             :         GIR_Done,
    4509             :       // Label 242: @9935
    4510             :       GIM_Try, /*On fail goto*//*Label 243*/ 10008, // Rule ID 2546 //
    4511             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4512             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4513             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4514             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4515             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4516             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4517             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -1,
    4518             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    4519             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4520             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    4521             :         // MIs[2] Operand 1
    4522             :         // No operand predicates
    4523             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4524             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4525             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4526             :         // (and:{ *:[i32] } (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm), rGPR:{ *:[i32] }:$Rn)  =>  (t2BICri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4527             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BICri,
    4528             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4529             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    4530             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4531             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4532             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4533             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4534             :         GIR_EraseFromParent, /*InsnID*/0,
    4535             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4536             :         // GIR_Coverage, 2546,
    4537             :         GIR_Done,
    4538             :       // Label 243: @10008
    4539             :       GIM_Try, /*On fail goto*//*Label 244*/ 10081, // Rule ID 2512 //
    4540             :         GIM_CheckFeatures, GIFBS_IsARM,
    4541             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4542             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4543             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4544             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4545             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4546             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    4547             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4548             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    4549             :         // MIs[2] Operand 1
    4550             :         // No operand predicates
    4551             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4552             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    4553             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4554             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4555             :         // (and:{ *:[i32] } (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm, -1:{ *:[i32] }), GPR:{ *:[i32] }:$Rn)  =>  (BICri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4556             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BICri,
    4557             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4558             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    4559             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4560             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4561             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4562             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4563             :         GIR_EraseFromParent, /*InsnID*/0,
    4564             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4565             :         // GIR_Coverage, 2512,
    4566             :         GIR_Done,
    4567             :       // Label 244: @10081
    4568             :       GIM_Try, /*On fail goto*//*Label 245*/ 10154, // Rule ID 2545 //
    4569             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4570             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4571             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4572             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4573             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4574             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4575             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    4576             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4577             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    4578             :         // MIs[2] Operand 1
    4579             :         // No operand predicates
    4580             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4581             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4582             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4583             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4584             :         // (and:{ *:[i32] } (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm, -1:{ *:[i32] }), rGPR:{ *:[i32] }:$Rn)  =>  (t2BICri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4585             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BICri,
    4586             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4587             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    4588             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4589             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4590             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4591             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4592             :         GIR_EraseFromParent, /*InsnID*/0,
    4593             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4594             :         // GIR_Coverage, 2545,
    4595             :         GIR_Done,
    4596             :       // Label 245: @10154
    4597             :       GIM_Try, /*On fail goto*//*Label 246*/ 10227, // Rule ID 2511 //
    4598             :         GIM_CheckFeatures, GIFBS_IsARM,
    4599             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4600             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4601             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4602             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4603             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4604             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4605             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -1,
    4606             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    4607             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4608             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    4609             :         // MIs[2] Operand 1
    4610             :         // No operand predicates
    4611             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4612             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4613             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm))  =>  (BICri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4614             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BICri,
    4615             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4616             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4617             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4618             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4619             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4620             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4621             :         GIR_EraseFromParent, /*InsnID*/0,
    4622             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4623             :         // GIR_Coverage, 2511,
    4624             :         GIR_Done,
    4625             :       // Label 246: @10227
    4626             :       GIM_Try, /*On fail goto*//*Label 247*/ 10300, // Rule ID 2544 //
    4627             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4628             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4629             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4630             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4631             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4632             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4633             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4634             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -1,
    4635             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    4636             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4637             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    4638             :         // MIs[2] Operand 1
    4639             :         // No operand predicates
    4640             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4641             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4642             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm))  =>  (t2BICri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4643             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BICri,
    4644             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4645             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4646             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4647             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4648             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4649             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4650             :         GIR_EraseFromParent, /*InsnID*/0,
    4651             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4652             :         // GIR_Coverage, 2544,
    4653             :         GIR_Done,
    4654             :       // Label 247: @10300
    4655             :       GIM_Try, /*On fail goto*//*Label 248*/ 10373, // Rule ID 161 //
    4656             :         GIM_CheckFeatures, GIFBS_IsARM,
    4657             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4658             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4659             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4660             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4661             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4662             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4663             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    4664             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4665             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    4666             :         // MIs[2] Operand 1
    4667             :         // No operand predicates
    4668             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4669             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4670             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4671             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm, -1:{ *:[i32] }))  =>  (BICri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4672             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BICri,
    4673             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4674             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4675             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4676             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4677             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4678             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4679             :         GIR_EraseFromParent, /*InsnID*/0,
    4680             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4681             :         // GIR_Coverage, 161,
    4682             :         GIR_Done,
    4683             :       // Label 248: @10373
    4684             :       GIM_Try, /*On fail goto*//*Label 249*/ 10446, // Rule ID 494 //
    4685             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4686             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4687             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4688             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4689             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4690             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4691             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4692             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    4693             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    4694             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    4695             :         // MIs[2] Operand 1
    4696             :         // No operand predicates
    4697             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4698             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4699             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    4700             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm, -1:{ *:[i32] }))  =>  (t2BICri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4701             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BICri,
    4702             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4703             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4704             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    4705             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4706             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4707             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4708             :         GIR_EraseFromParent, /*InsnID*/0,
    4709             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4710             :         // GIR_Coverage, 494,
    4711             :         GIR_Done,
    4712             :       // Label 249: @10446
    4713             :       GIM_Try, /*On fail goto*//*Label 250*/ 10512, // Rule ID 2514 //
    4714             :         GIM_CheckFeatures, GIFBS_IsARM,
    4715             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4716             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4717             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4718             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4719             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4720             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4721             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4722             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    4723             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4724             :         // (and:{ *:[i32] } (xor:{ *:[i32] } GPR:{ *:[i32] }:$Rm, -1:{ *:[i32] }), GPR:{ *:[i32] }:$Rn)  =>  (BICrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    4725             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BICrr,
    4726             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4727             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    4728             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    4729             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4730             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4731             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4732             :         GIR_EraseFromParent, /*InsnID*/0,
    4733             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4734             :         // GIR_Coverage, 2514,
    4735             :         GIR_Done,
    4736             :       // Label 250: @10512
    4737             :       GIM_Try, /*On fail goto*//*Label 251*/ 10578, // Rule ID 2547 //
    4738             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4739             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4740             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    4741             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4742             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4743             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4744             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4745             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4746             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4747             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4748             :         // (and:{ *:[i32] } (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, -1:{ *:[i32] }), rGPR:{ *:[i32] }:$Rn)  =>  (t2BICrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4749             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BICrr,
    4750             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4751             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    4752             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    4753             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4754             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4755             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4756             :         GIR_EraseFromParent, /*InsnID*/0,
    4757             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4758             :         // GIR_Coverage, 2547,
    4759             :         GIR_Done,
    4760             :       // Label 251: @10578
    4761             :       GIM_Try, /*On fail goto*//*Label 252*/ 10644, // Rule ID 162 //
    4762             :         GIM_CheckFeatures, GIFBS_IsARM,
    4763             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4764             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4765             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4766             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4767             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4768             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4769             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4770             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4771             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4772             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } GPR:{ *:[i32] }:$Rm, -1:{ *:[i32] }))  =>  (BICrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    4773             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BICrr,
    4774             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4775             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4776             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    4777             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4778             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4779             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4780             :         GIR_EraseFromParent, /*InsnID*/0,
    4781             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4782             :         // GIR_Coverage, 162,
    4783             :         GIR_Done,
    4784             :       // Label 252: @10644
    4785             :       GIM_Try, /*On fail goto*//*Label 253*/ 10710, // Rule ID 495 //
    4786             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4787             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4788             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4789             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4790             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    4791             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    4792             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    4793             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4794             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    4795             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4796             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, -1:{ *:[i32] }))  =>  (t2BICrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4797             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BICrr,
    4798             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4799             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4800             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    4801             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4802             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4803             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4804             :         GIR_EraseFromParent, /*InsnID*/0,
    4805             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4806             :         // GIR_Coverage, 495,
    4807             :         GIR_Done,
    4808             :       // Label 253: @10710
    4809             :       GIM_Try, /*On fail goto*//*Label 254*/ 10748, // Rule ID 351 //
    4810             :         GIM_CheckFeatures, GIFBS_HasV6_IsThumb_IsThumb1Only,
    4811             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::tGPRRegClassID,
    4812             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::tGPRRegClassID,
    4813             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 255,
    4814             :         // (and:{ *:[i32] } tGPR:{ *:[i32] }:$Rm, 255:{ *:[i32] })  =>  (tUXTB:{ *:[i32] } tGPR:{ *:[i32] }:$Rm)
    4815             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::tUXTB,
    4816             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4817             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    4818             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4819             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4820             :         GIR_EraseFromParent, /*InsnID*/0,
    4821             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4822             :         // GIR_Coverage, 351,
    4823             :         GIR_Done,
    4824             :       // Label 254: @10748
    4825             :       GIM_Try, /*On fail goto*//*Label 255*/ 10786, // Rule ID 352 //
    4826             :         GIM_CheckFeatures, GIFBS_HasV6_IsThumb_IsThumb1Only,
    4827             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::tGPRRegClassID,
    4828             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::tGPRRegClassID,
    4829             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 65535,
    4830             :         // (and:{ *:[i32] } tGPR:{ *:[i32] }:$Rm, 65535:{ *:[i32] })  =>  (tUXTH:{ *:[i32] } tGPR:{ *:[i32] }:$Rm)
    4831             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::tUXTH,
    4832             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4833             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    4834             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4835             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4836             :         GIR_EraseFromParent, /*InsnID*/0,
    4837             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4838             :         // GIR_Coverage, 352,
    4839             :         GIR_Done,
    4840             :       // Label 255: @10786
    4841             :       GIM_Try, /*On fail goto*//*Label 256*/ 10838, // Rule ID 149 //
    4842             :         GIM_CheckFeatures, GIFBS_IsARM,
    4843             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4844             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4845             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4846             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    4847             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    4848             :         // MIs[1] Operand 1
    4849             :         // No operand predicates
    4850             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4851             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm)  =>  (ANDri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4852             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::ANDri,
    4853             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4854             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4855             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    4856             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4857             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4858             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4859             :         GIR_EraseFromParent, /*InsnID*/0,
    4860             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4861             :         // GIR_Coverage, 149,
    4862             :         GIR_Done,
    4863             :       // Label 256: @10838
    4864             :       GIM_Try, /*On fail goto*//*Label 257*/ 10890, // Rule ID 485 //
    4865             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4866             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4867             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4868             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4869             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    4870             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    4871             :         // MIs[1] Operand 1
    4872             :         // No operand predicates
    4873             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4874             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm)  =>  (t2ANDri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    4875             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ANDri,
    4876             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4877             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4878             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    4879             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4880             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4881             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4882             :         GIR_EraseFromParent, /*InsnID*/0,
    4883             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4884             :         // GIR_Coverage, 485,
    4885             :         GIR_Done,
    4886             :       // Label 257: @10890
    4887             :       GIM_Try, /*On fail goto*//*Label 258*/ 10939, // Rule ID 165 //
    4888             :         GIM_CheckFeatures, GIFBS_HasV6T2_IsARM,
    4889             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4890             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4891             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4892             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    4893             :         GIM_CheckCxxInsnPredicate, /*MI*/1, /*FnId*/GIPFP_MI_Predicate_bf_inv_mask_imm,
    4894             :         // MIs[1] Operand 1
    4895             :         // No operand predicates
    4896             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4897             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_bf_inv_mask_imm>>:$imm)  =>  (BFC:{ *:[i32] } GPR:{ *:[i32] }:$src, (imm:{ *:[i32] }):$imm)
    4898             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::BFC,
    4899             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4900             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    4901             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    4902             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4903             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4904             :         GIR_EraseFromParent, /*InsnID*/0,
    4905             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4906             :         // GIR_Coverage, 165,
    4907             :         GIR_Done,
    4908             :       // Label 258: @10939
    4909             :       GIM_Try, /*On fail goto*//*Label 259*/ 10988, // Rule ID 497 //
    4910             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4911             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4912             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4913             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    4914             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    4915             :         GIM_CheckCxxInsnPredicate, /*MI*/1, /*FnId*/GIPFP_MI_Predicate_bf_inv_mask_imm,
    4916             :         // MIs[1] Operand 1
    4917             :         // No operand predicates
    4918             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    4919             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$src, (imm:{ *:[i32] })<<P:Predicate_bf_inv_mask_imm>>:$imm)  =>  (t2BFC:{ *:[i32] } rGPR:{ *:[i32] }:$src, (imm:{ *:[i32] }):$imm)
    4920             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2BFC,
    4921             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4922             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    4923             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    4924             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4925             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4926             :         GIR_EraseFromParent, /*InsnID*/0,
    4927             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4928             :         // GIR_Coverage, 497,
    4929             :         GIR_Done,
    4930             :       // Label 259: @10988
    4931             :       GIM_Try, /*On fail goto*//*Label 260*/ 11033, // Rule ID 150 //
    4932             :         GIM_CheckFeatures, GIFBS_IsARM,
    4933             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    4934             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    4935             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    4936             :         // (and:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (ANDrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    4937             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::ANDrr,
    4938             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4939             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4940             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4941             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4942             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4943             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4944             :         GIR_EraseFromParent, /*InsnID*/0,
    4945             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4946             :         // GIR_Coverage, 150,
    4947             :         GIR_Done,
    4948             :       // Label 260: @11033
    4949             :       GIM_Try, /*On fail goto*//*Label 261*/ 11078, // Rule ID 486 //
    4950             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    4951             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    4952             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    4953             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    4954             :         // (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2ANDrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    4955             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ANDrr,
    4956             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    4957             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    4958             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    4959             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4960             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4961             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4962             :         GIR_EraseFromParent, /*InsnID*/0,
    4963             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4964             :         // GIR_Coverage, 486,
    4965             :         GIR_Done,
    4966             :       // Label 261: @11078
    4967             :       GIM_Reject,
    4968             :     // Label 233: @11079
    4969             :     GIM_Reject,
    4970             :     // Label 230: @11080
    4971             :     GIM_Try, /*On fail goto*//*Label 262*/ 11130, // Rule ID 1102 //
    4972             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4973             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    4974             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    4975             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    4976             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    4977             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    4978             :       // (and:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)  =>  (VANDd:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    4979             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VANDd,
    4980             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    4981             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    4982             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    4983             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    4984             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    4985             :       GIR_EraseFromParent, /*InsnID*/0,
    4986             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    4987             :       // GIR_Coverage, 1102,
    4988             :       GIR_Done,
    4989             :     // Label 262: @11130
    4990             :     GIM_Reject,
    4991             :     // Label 231: @11131
    4992             :     GIM_Try, /*On fail goto*//*Label 263*/ 11181, // Rule ID 1103 //
    4993             :       GIM_CheckFeatures, GIFBS_HasNEON,
    4994             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    4995             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    4996             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    4997             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    4998             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    4999             :       // (and:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)  =>  (VANDq:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    5000             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VANDq,
    5001             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    5002             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    5003             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    5004             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5005             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5006             :       GIR_EraseFromParent, /*InsnID*/0,
    5007             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5008             :       // GIR_Coverage, 1103,
    5009             :       GIR_Done,
    5010             :     // Label 263: @11181
    5011             :     GIM_Reject,
    5012             :     // Label 232: @11182
    5013             :     GIM_Reject,
    5014             :     // Label 6: @11183
    5015             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 7, /*)*//*default:*//*Label 267*/ 15365,
    5016             :     /*GILLT_s32*//*Label 264*/ 11195, 0,
    5017             :     /*GILLT_v2s32*//*Label 265*/ 15263, 0, 0,
    5018             :     /*GILLT_v4s32*//*Label 266*/ 15314,
    5019             :     // Label 264: @11195
    5020             :     GIM_Try, /*On fail goto*//*Label 268*/ 15262,
    5021             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    5022             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    5023             :       GIM_Try, /*On fail goto*//*Label 269*/ 11324, // Rule ID 2727 //
    5024             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5025             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    5026             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5027             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5028             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5029             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5030             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5031             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_LSHR,
    5032             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5033             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5034             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    5035             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 8,
    5036             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 255,
    5037             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    5038             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    5039             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5040             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5041             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/1, // MIs[4]
    5042             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_SHL,
    5043             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5044             :         // MIs[4] Rm
    5045             :         GIM_CheckIsSameOperand, /*MI*/4, /*OpIdx*/1, /*OtherMI*/2, /*OtherOpIdx*/1,
    5046             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 24,
    5047             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 16,
    5048             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5049             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5050             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5051             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5052             :         // (or:{ *:[i32] } (and:{ *:[i32] } (srl:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 8:{ *:[i32] }), 255:{ *:[i32] }), (sra:{ *:[i32] } (shl:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 24:{ *:[i32] }), 16:{ *:[i32] }))  =>  (REVSH:{ *:[i32] } GPR:{ *:[i32] }:$Rm)
    5053             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::REVSH,
    5054             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5055             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5056             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5057             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5058             :         GIR_EraseFromParent, /*InsnID*/0,
    5059             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5060             :         // GIR_Coverage, 2727,
    5061             :         GIR_Done,
    5062             :       // Label 269: @11324
    5063             :       GIM_Try, /*On fail goto*//*Label 270*/ 11443, // Rule ID 2760 //
    5064             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    5065             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5066             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5067             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5068             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5069             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5070             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5071             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_LSHR,
    5072             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5073             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5074             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5075             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 8,
    5076             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 255,
    5077             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    5078             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    5079             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5080             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5081             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/1, // MIs[4]
    5082             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_SHL,
    5083             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5084             :         // MIs[4] Rm
    5085             :         GIM_CheckIsSameOperand, /*MI*/4, /*OpIdx*/1, /*OtherMI*/2, /*OtherOpIdx*/1,
    5086             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 24,
    5087             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 16,
    5088             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5089             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5090             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5091             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5092             :         // (or:{ *:[i32] } (and:{ *:[i32] } (srl:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 8:{ *:[i32] }), 255:{ *:[i32] }), (sra:{ *:[i32] } (shl:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 24:{ *:[i32] }), 16:{ *:[i32] }))  =>  (t2REVSH:{ *:[i32] } rGPR:{ *:[i32] }:$Rm)
    5093             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2REVSH,
    5094             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5095             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5096             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5097             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5098             :         GIR_EraseFromParent, /*InsnID*/0,
    5099             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5100             :         // GIR_Coverage, 2760,
    5101             :         GIR_Done,
    5102             :       // Label 270: @11443
    5103             :       GIM_Try, /*On fail goto*//*Label 271*/ 11562, // Rule ID 1743 //
    5104             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5105             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    5106             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5107             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ASHR,
    5108             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5109             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5110             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5111             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SHL,
    5112             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5113             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5114             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    5115             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 24,
    5116             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 16,
    5117             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    5118             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    5119             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5120             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5121             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/1, // MIs[4]
    5122             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_LSHR,
    5123             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5124             :         // MIs[4] Rm
    5125             :         GIM_CheckIsSameOperand, /*MI*/4, /*OpIdx*/1, /*OtherMI*/2, /*OtherOpIdx*/1,
    5126             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 8,
    5127             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 255,
    5128             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5129             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5130             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5131             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5132             :         // (or:{ *:[i32] } (sra:{ *:[i32] } (shl:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 24:{ *:[i32] }), 16:{ *:[i32] }), (and:{ *:[i32] } (srl:{ *:[i32] } GPR:{ *:[i32] }:$Rm, 8:{ *:[i32] }), 255:{ *:[i32] }))  =>  (REVSH:{ *:[i32] } GPR:{ *:[i32] }:$Rm)
    5133             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::REVSH,
    5134             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5135             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5136             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5137             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5138             :         GIR_EraseFromParent, /*InsnID*/0,
    5139             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5140             :         // GIR_Coverage, 1743,
    5141             :         GIR_Done,
    5142             :       // Label 271: @11562
    5143             :       GIM_Try, /*On fail goto*//*Label 272*/ 11681, // Rule ID 1969 //
    5144             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    5145             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5146             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5147             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ASHR,
    5148             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5149             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5150             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5151             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SHL,
    5152             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5153             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5154             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5155             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 24,
    5156             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 16,
    5157             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    5158             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    5159             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5160             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5161             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/1, // MIs[4]
    5162             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_LSHR,
    5163             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5164             :         // MIs[4] Rm
    5165             :         GIM_CheckIsSameOperand, /*MI*/4, /*OpIdx*/1, /*OtherMI*/2, /*OtherOpIdx*/1,
    5166             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 8,
    5167             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 255,
    5168             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5169             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5170             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5171             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5172             :         // (or:{ *:[i32] } (sra:{ *:[i32] } (shl:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 24:{ *:[i32] }), 16:{ *:[i32] }), (and:{ *:[i32] } (srl:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 8:{ *:[i32] }), 255:{ *:[i32] }))  =>  (t2REVSH:{ *:[i32] } rGPR:{ *:[i32] }:$Rm)
    5173             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2REVSH,
    5174             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5175             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5176             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5177             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5178             :         GIR_EraseFromParent, /*InsnID*/0,
    5179             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5180             :         // GIR_Coverage, 1969,
    5181             :         GIR_Done,
    5182             :       // Label 272: @11681
    5183             :       GIM_Try, /*On fail goto*//*Label 273*/ 11797, // Rule ID 2527 //
    5184             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5185             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5186             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5187             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5188             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5189             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5190             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5191             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    5192             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5193             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5194             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5195             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5196             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5197             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_pkh_asr_amt,
    5198             :         // MIs[3] Operand 1
    5199             :         // No operand predicates
    5200             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5201             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/0, /*OpIdx*/2, // MIs[4]
    5202             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_AND,
    5203             :         GIM_CheckType, /*MI*/4, /*Op*/1, /*Type*/GILLT_s32,
    5204             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5205             :         GIM_CheckRegBankForClass, /*MI*/4, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5206             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 4294901760,
    5207             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5208             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5209             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5210             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5211             :         // (or:{ *:[i32] } (and:{ *:[i32] } (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_asr_amt>>:$sh), 65535:{ *:[i32] }), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 4294901760:{ *:[i32] }))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5212             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    5213             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5214             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // Rn
    5215             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5216             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5217             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5218             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5219             :         GIR_EraseFromParent, /*InsnID*/0,
    5220             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5221             :         // GIR_Coverage, 2527,
    5222             :         GIR_Done,
    5223             :       // Label 273: @11797
    5224             :       GIM_Try, /*On fail goto*//*Label 274*/ 11913, // Rule ID 2564 //
    5225             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5226             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5227             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5228             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5229             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5230             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5231             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5232             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    5233             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5234             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5235             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5236             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5237             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5238             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_pkh_asr_amt,
    5239             :         // MIs[3] Operand 1
    5240             :         // No operand predicates
    5241             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5242             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/0, /*OpIdx*/2, // MIs[4]
    5243             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_AND,
    5244             :         GIM_CheckType, /*MI*/4, /*Op*/1, /*Type*/GILLT_s32,
    5245             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5246             :         GIM_CheckRegBankForClass, /*MI*/4, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5247             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 4294901760,
    5248             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5249             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5250             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5251             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5252             :         // (or:{ *:[i32] } (and:{ *:[i32] } (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_asr_amt>>:$sh), 65535:{ *:[i32] }), (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 4294901760:{ *:[i32] }))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5253             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    5254             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5255             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // Rn
    5256             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5257             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5258             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5259             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5260             :         GIR_EraseFromParent, /*InsnID*/0,
    5261             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5262             :         // GIR_Coverage, 2564,
    5263             :         GIR_Done,
    5264             :       // Label 274: @11913
    5265             :       GIM_Try, /*On fail goto*//*Label 275*/ 12029, // Rule ID 2732 //
    5266             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5267             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5268             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5269             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5270             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5271             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5272             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5273             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_LSHR,
    5274             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5275             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5276             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5277             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5278             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5279             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm1_15,
    5280             :         // MIs[3] Operand 1
    5281             :         // No operand predicates
    5282             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5283             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/0, /*OpIdx*/2, // MIs[4]
    5284             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_AND,
    5285             :         GIM_CheckType, /*MI*/4, /*Op*/1, /*Type*/GILLT_s32,
    5286             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5287             :         GIM_CheckRegBankForClass, /*MI*/4, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5288             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 4294901760,
    5289             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5290             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5291             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5292             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5293             :         // (or:{ *:[i32] } (and:{ *:[i32] } (srl:{ *:[i32] } GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh), 65535:{ *:[i32] }), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh)
    5294             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    5295             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5296             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // src1
    5297             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5298             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5299             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5300             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5301             :         GIR_EraseFromParent, /*InsnID*/0,
    5302             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5303             :         // GIR_Coverage, 2732,
    5304             :         GIR_Done,
    5305             :       // Label 275: @12029
    5306             :       GIM_Try, /*On fail goto*//*Label 276*/ 12145, // Rule ID 2765 //
    5307             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5308             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5309             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5310             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5311             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5312             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5313             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5314             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_LSHR,
    5315             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5316             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5317             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5318             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5319             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5320             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm1_15,
    5321             :         // MIs[3] Operand 1
    5322             :         // No operand predicates
    5323             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5324             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/0, /*OpIdx*/2, // MIs[4]
    5325             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_AND,
    5326             :         GIM_CheckType, /*MI*/4, /*Op*/1, /*Type*/GILLT_s32,
    5327             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5328             :         GIM_CheckRegBankForClass, /*MI*/4, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5329             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 4294901760,
    5330             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5331             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5332             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5333             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5334             :         // (or:{ *:[i32] } (and:{ *:[i32] } (srl:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh), 65535:{ *:[i32] }), (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh)
    5335             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    5336             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5337             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // src1
    5338             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5339             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5340             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5341             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5342             :         GIR_EraseFromParent, /*InsnID*/0,
    5343             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5344             :         // GIR_Coverage, 2765,
    5345             :         GIR_Done,
    5346             :       // Label 276: @12145
    5347             :       GIM_Try, /*On fail goto*//*Label 277*/ 12261, // Rule ID 2526 //
    5348             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5349             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5350             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5351             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5352             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5353             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5354             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5355             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SHL,
    5356             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5357             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5358             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5359             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5360             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5361             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_pkh_lsl_amt,
    5362             :         // MIs[3] Operand 1
    5363             :         // No operand predicates
    5364             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5365             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/0, /*OpIdx*/2, // MIs[4]
    5366             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_AND,
    5367             :         GIM_CheckType, /*MI*/4, /*Op*/1, /*Type*/GILLT_s32,
    5368             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5369             :         GIM_CheckRegBankForClass, /*MI*/4, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5370             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 65535,
    5371             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5372             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5373             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5374             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5375             :         // (or:{ *:[i32] } (and:{ *:[i32] } (shl:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_lsl_amt>>:$sh), 4294901760:{ *:[i32] }), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 65535:{ *:[i32] }))  =>  (PKHBT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5376             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHBT,
    5377             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5378             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // Rn
    5379             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5380             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5381             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5382             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5383             :         GIR_EraseFromParent, /*InsnID*/0,
    5384             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5385             :         // GIR_Coverage, 2526,
    5386             :         GIR_Done,
    5387             :       // Label 277: @12261
    5388             :       GIM_Try, /*On fail goto*//*Label 278*/ 12377, // Rule ID 2563 //
    5389             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5390             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5391             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5392             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5393             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5394             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5395             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    5396             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SHL,
    5397             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5398             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5399             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5400             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5401             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5402             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_pkh_lsl_amt,
    5403             :         // MIs[3] Operand 1
    5404             :         // No operand predicates
    5405             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5406             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/0, /*OpIdx*/2, // MIs[4]
    5407             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_AND,
    5408             :         GIM_CheckType, /*MI*/4, /*Op*/1, /*Type*/GILLT_s32,
    5409             :         GIM_CheckType, /*MI*/4, /*Op*/2, /*Type*/GILLT_s32,
    5410             :         GIM_CheckRegBankForClass, /*MI*/4, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5411             :         GIM_CheckConstantInt, /*MI*/4, /*Op*/2, 65535,
    5412             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5413             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5414             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5415             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5416             :         // (or:{ *:[i32] } (and:{ *:[i32] } (shl:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_lsl_amt>>:$sh), 4294901760:{ *:[i32] }), (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 65535:{ *:[i32] }))  =>  (t2PKHBT:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5417             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHBT,
    5418             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5419             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // Rn
    5420             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5421             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5422             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5423             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5424             :         GIR_EraseFromParent, /*InsnID*/0,
    5425             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5426             :         // GIR_Coverage, 2563,
    5427             :         GIR_Done,
    5428             :       // Label 278: @12377
    5429             :       GIM_Try, /*On fail goto*//*Label 279*/ 12493, // Rule ID 205 //
    5430             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5431             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5432             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5433             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5434             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5435             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5436             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5437             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5438             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5439             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5440             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5441             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5442             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
    5443             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    5444             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5445             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5446             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5447             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/2, // MIs[4]
    5448             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_CONSTANT,
    5449             :         GIM_CheckI64ImmPredicate, /*MI*/4, /*Predicate*/GIPFP_I64_Predicate_pkh_asr_amt,
    5450             :         // MIs[4] Operand 1
    5451             :         // No operand predicates
    5452             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 65535,
    5453             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5454             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5455             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5456             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5457             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 4294901760:{ *:[i32] }), (and:{ *:[i32] } (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_asr_amt>>:$sh), 65535:{ *:[i32] }))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5458             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    5459             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5460             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    5461             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    5462             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/4, // sh
    5463             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5464             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5465             :         GIR_EraseFromParent, /*InsnID*/0,
    5466             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5467             :         // GIR_Coverage, 205,
    5468             :         GIR_Done,
    5469             :       // Label 279: @12493
    5470             :       GIM_Try, /*On fail goto*//*Label 280*/ 12609, // Rule ID 544 //
    5471             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5472             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5473             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5474             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5475             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5476             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5477             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5478             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5479             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5480             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5481             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5482             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5483             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
    5484             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_ASHR,
    5485             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5486             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5487             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5488             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/2, // MIs[4]
    5489             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_CONSTANT,
    5490             :         GIM_CheckI64ImmPredicate, /*MI*/4, /*Predicate*/GIPFP_I64_Predicate_pkh_asr_amt,
    5491             :         // MIs[4] Operand 1
    5492             :         // No operand predicates
    5493             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 65535,
    5494             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5495             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5496             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5497             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5498             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 4294901760:{ *:[i32] }), (and:{ *:[i32] } (sra:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_asr_amt>>:$sh), 65535:{ *:[i32] }))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5499             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    5500             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5501             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    5502             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    5503             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/4, // sh
    5504             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5505             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5506             :         GIR_EraseFromParent, /*InsnID*/0,
    5507             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5508             :         // GIR_Coverage, 544,
    5509             :         GIR_Done,
    5510             :       // Label 280: @12609
    5511             :       GIM_Try, /*On fail goto*//*Label 281*/ 12725, // Rule ID 1748 //
    5512             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5513             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5514             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5515             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5516             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5517             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5518             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5519             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5520             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5521             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5522             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5523             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5524             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
    5525             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_LSHR,
    5526             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5527             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5528             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5529             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/2, // MIs[4]
    5530             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_CONSTANT,
    5531             :         GIM_CheckI64ImmPredicate, /*MI*/4, /*Predicate*/GIPFP_I64_Predicate_imm1_15,
    5532             :         // MIs[4] Operand 1
    5533             :         // No operand predicates
    5534             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 65535,
    5535             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5536             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5537             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5538             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5539             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }), (and:{ *:[i32] } (srl:{ *:[i32] } GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh), 65535:{ *:[i32] }))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh)
    5540             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    5541             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5542             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5543             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src2
    5544             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/4, // sh
    5545             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5546             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5547             :         GIR_EraseFromParent, /*InsnID*/0,
    5548             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5549             :         // GIR_Coverage, 1748,
    5550             :         GIR_Done,
    5551             :       // Label 281: @12725
    5552             :       GIM_Try, /*On fail goto*//*Label 282*/ 12841, // Rule ID 1974 //
    5553             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5554             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5555             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5556             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5557             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5558             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5559             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5560             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5561             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5562             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5563             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5564             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5565             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
    5566             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_LSHR,
    5567             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5568             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5569             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5570             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/2, // MIs[4]
    5571             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_CONSTANT,
    5572             :         GIM_CheckI64ImmPredicate, /*MI*/4, /*Predicate*/GIPFP_I64_Predicate_imm1_15,
    5573             :         // MIs[4] Operand 1
    5574             :         // No operand predicates
    5575             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 65535,
    5576             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5577             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5578             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5579             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5580             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }), (and:{ *:[i32] } (srl:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh), 65535:{ *:[i32] }))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm1_15>>:$sh)
    5581             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    5582             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5583             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5584             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src2
    5585             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/4, // sh
    5586             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5587             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5588             :         GIR_EraseFromParent, /*InsnID*/0,
    5589             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5590             :         // GIR_Coverage, 1974,
    5591             :         GIR_Done,
    5592             :       // Label 282: @12841
    5593             :       GIM_Try, /*On fail goto*//*Label 283*/ 12957, // Rule ID 204 //
    5594             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5595             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5596             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5597             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5598             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5599             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5600             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5601             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5602             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5603             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5604             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5605             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5606             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
    5607             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_SHL,
    5608             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5609             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5610             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5611             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/2, // MIs[4]
    5612             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_CONSTANT,
    5613             :         GIM_CheckI64ImmPredicate, /*MI*/4, /*Predicate*/GIPFP_I64_Predicate_pkh_lsl_amt,
    5614             :         // MIs[4] Operand 1
    5615             :         // No operand predicates
    5616             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 4294901760,
    5617             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5618             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5619             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5620             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5621             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 65535:{ *:[i32] }), (and:{ *:[i32] } (shl:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_lsl_amt>>:$sh), 4294901760:{ *:[i32] }))  =>  (PKHBT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5622             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHBT,
    5623             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5624             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    5625             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    5626             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/4, // sh
    5627             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5628             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5629             :         GIR_EraseFromParent, /*InsnID*/0,
    5630             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5631             :         // GIR_Coverage, 204,
    5632             :         GIR_Done,
    5633             :       // Label 283: @12957
    5634             :       GIM_Try, /*On fail goto*//*Label 284*/ 13073, // Rule ID 543 //
    5635             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5636             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5637             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5638             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5639             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5640             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5641             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5642             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5643             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5644             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5645             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5646             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5647             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
    5648             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_SHL,
    5649             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    5650             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    5651             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5652             :         GIM_RecordInsn, /*DefineMI*/4, /*MI*/3, /*OpIdx*/2, // MIs[4]
    5653             :         GIM_CheckOpcode, /*MI*/4, TargetOpcode::G_CONSTANT,
    5654             :         GIM_CheckI64ImmPredicate, /*MI*/4, /*Predicate*/GIPFP_I64_Predicate_pkh_lsl_amt,
    5655             :         // MIs[4] Operand 1
    5656             :         // No operand predicates
    5657             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 4294901760,
    5658             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5659             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5660             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5661             :         GIM_CheckIsSafeToFold, /*InsnID*/4,
    5662             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, 65535:{ *:[i32] }), (and:{ *:[i32] } (shl:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_pkh_lsl_amt>>:$sh), 4294901760:{ *:[i32] }))  =>  (t2PKHBT:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm, (imm:{ *:[i32] }):$sh)
    5663             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHBT,
    5664             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5665             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    5666             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rm
    5667             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/4, // sh
    5668             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5669             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5670             :         GIR_EraseFromParent, /*InsnID*/0,
    5671             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5672             :         // GIR_Coverage, 543,
    5673             :         GIR_Done,
    5674             :       // Label 284: @13073
    5675             :       GIM_Try, /*On fail goto*//*Label 285*/ 13160, // Rule ID 1744 //
    5676             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5677             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5678             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5679             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5680             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5681             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5682             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5683             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5684             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5685             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5686             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5687             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5688             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5689             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 4294901760,
    5690             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5691             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5692             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 65535:{ *:[i32] }), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, 4294901760:{ *:[i32] }))  =>  (PKHBT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, 0:{ *:[i32] })
    5693             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHBT,
    5694             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5695             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    5696             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5697             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    5698             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5699             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5700             :         GIR_EraseFromParent, /*InsnID*/0,
    5701             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5702             :         // GIR_Coverage, 1744,
    5703             :         GIR_Done,
    5704             :       // Label 285: @13160
    5705             :       GIM_Try, /*On fail goto*//*Label 286*/ 13247, // Rule ID 1970 //
    5706             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5707             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5708             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5709             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5710             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5711             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5712             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5713             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5714             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5715             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5716             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5717             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5718             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5719             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 4294901760,
    5720             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5721             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5722             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 65535:{ *:[i32] }), (and:{ *:[i32] } rGPR:{ *:[i32] }:$src2, 4294901760:{ *:[i32] }))  =>  (t2PKHBT:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, 0:{ *:[i32] })
    5723             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHBT,
    5724             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5725             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5726             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5727             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    5728             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5729             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5730             :         GIR_EraseFromParent, /*InsnID*/0,
    5731             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5732             :         // GIR_Coverage, 1970,
    5733             :         GIR_Done,
    5734             :       // Label 286: @13247
    5735             :       GIM_Try, /*On fail goto*//*Label 287*/ 13334, // Rule ID 2728 //
    5736             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5737             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5738             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5739             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5740             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5741             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5742             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5743             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5744             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5745             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5746             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5747             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5748             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5749             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 65535,
    5750             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5751             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5752             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, 4294901760:{ *:[i32] }), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 65535:{ *:[i32] }))  =>  (PKHBT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, 0:{ *:[i32] })
    5753             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHBT,
    5754             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5755             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rn
    5756             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    5757             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    5758             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5759             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5760             :         GIR_EraseFromParent, /*InsnID*/0,
    5761             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5762             :         // GIR_Coverage, 2728,
    5763             :         GIR_Done,
    5764             :       // Label 287: @13334
    5765             :       GIM_Try, /*On fail goto*//*Label 288*/ 13421, // Rule ID 2761 //
    5766             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5767             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5768             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5769             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5770             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5771             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5772             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5773             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5774             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5775             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_AND,
    5776             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5777             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5778             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5779             :         GIM_CheckConstantInt, /*MI*/2, /*Op*/2, 65535,
    5780             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5781             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5782             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$src2, 4294901760:{ *:[i32] }), (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 65535:{ *:[i32] }))  =>  (t2PKHBT:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, 0:{ *:[i32] })
    5783             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHBT,
    5784             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5785             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src1
    5786             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src2
    5787             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    5788             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5789             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5790             :         GIR_EraseFromParent, /*InsnID*/0,
    5791             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5792             :         // GIR_Coverage, 2761,
    5793             :         GIR_Done,
    5794             :       // Label 288: @13421
    5795             :       GIM_Try, /*On fail goto*//*Label 289*/ 13516, // Rule ID 1747 //
    5796             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5797             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5798             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5799             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5800             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5801             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5802             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5803             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5804             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5805             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    5806             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5807             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5808             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5809             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5810             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5811             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    5812             :         // MIs[3] Operand 1
    5813             :         // No operand predicates
    5814             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5815             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5816             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5817             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }), (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    5818             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    5819             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5820             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5821             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5822             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5823             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5824             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5825             :         GIR_EraseFromParent, /*InsnID*/0,
    5826             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5827             :         // GIR_Coverage, 1747,
    5828             :         GIR_Done,
    5829             :       // Label 289: @13516
    5830             :       GIM_Try, /*On fail goto*//*Label 290*/ 13611, // Rule ID 1973 //
    5831             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5832             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5833             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5834             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5835             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5836             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5837             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5838             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5839             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5840             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_ASHR,
    5841             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5842             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5843             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5844             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5845             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5846             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    5847             :         // MIs[3] Operand 1
    5848             :         // No operand predicates
    5849             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5850             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5851             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5852             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }), (sra:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    5853             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    5854             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5855             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5856             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5857             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5858             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5859             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5860             :         GIR_EraseFromParent, /*InsnID*/0,
    5861             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5862             :         // GIR_Coverage, 1973,
    5863             :         GIR_Done,
    5864             :       // Label 290: @13611
    5865             :       GIM_Try, /*On fail goto*//*Label 291*/ 13706, // Rule ID 1746 //
    5866             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5867             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5868             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5869             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5870             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5871             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5872             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5873             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5874             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5875             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_LSHR,
    5876             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5877             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5878             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5879             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5880             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5881             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm16,
    5882             :         // MIs[3] Operand 1
    5883             :         // No operand predicates
    5884             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5885             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5886             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5887             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }), (srl:{ *:[i32] } GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh)
    5888             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    5889             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5890             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5891             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5892             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5893             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5894             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5895             :         GIR_EraseFromParent, /*InsnID*/0,
    5896             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5897             :         // GIR_Coverage, 1746,
    5898             :         GIR_Done,
    5899             :       // Label 291: @13706
    5900             :       GIM_Try, /*On fail goto*//*Label 292*/ 13801, // Rule ID 1972 //
    5901             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5902             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5903             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5904             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5905             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5906             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5907             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5908             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 4294901760,
    5909             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5910             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_LSHR,
    5911             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5912             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5913             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5914             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5915             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5916             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm16,
    5917             :         // MIs[3] Operand 1
    5918             :         // No operand predicates
    5919             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5920             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5921             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5922             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }), (srl:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh)
    5923             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    5924             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5925             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5926             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5927             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5928             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5929             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5930             :         GIR_EraseFromParent, /*InsnID*/0,
    5931             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5932             :         // GIR_Coverage, 1972,
    5933             :         GIR_Done,
    5934             :       // Label 292: @13801
    5935             :       GIM_Try, /*On fail goto*//*Label 293*/ 13896, // Rule ID 1745 //
    5936             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    5937             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    5938             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5939             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5940             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5941             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5942             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5943             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5944             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5945             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SHL,
    5946             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5947             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5948             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    5949             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5950             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5951             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    5952             :         // MIs[3] Operand 1
    5953             :         // No operand predicates
    5954             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5955             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5956             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5957             :         // (or:{ *:[i32] } (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 65535:{ *:[i32] }), (shl:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh))  =>  (PKHBT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    5958             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHBT,
    5959             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5960             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rn
    5961             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // Rm
    5962             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5963             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5964             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    5965             :         GIR_EraseFromParent, /*InsnID*/0,
    5966             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    5967             :         // GIR_Coverage, 1745,
    5968             :         GIR_Done,
    5969             :       // Label 293: @13896
    5970             :       GIM_Try, /*On fail goto*//*Label 294*/ 13991, // Rule ID 1971 //
    5971             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    5972             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    5973             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    5974             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_AND,
    5975             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    5976             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    5977             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5978             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, 65535,
    5979             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
    5980             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_SHL,
    5981             :         GIM_CheckType, /*MI*/2, /*Op*/1, /*Type*/GILLT_s32,
    5982             :         GIM_CheckType, /*MI*/2, /*Op*/2, /*Type*/GILLT_s32,
    5983             :         GIM_CheckRegBankForClass, /*MI*/2, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    5984             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
    5985             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_CONSTANT,
    5986             :         GIM_CheckI64ImmPredicate, /*MI*/3, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    5987             :         // MIs[3] Operand 1
    5988             :         // No operand predicates
    5989             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    5990             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    5991             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    5992             :         // (or:{ *:[i32] } (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 65535:{ *:[i32] }), (shl:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh))  =>  (t2PKHBT:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    5993             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHBT,
    5994             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    5995             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
    5996             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // src2
    5997             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/3, // sh
    5998             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    5999             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6000             :         GIR_EraseFromParent, /*InsnID*/0,
    6001             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6002             :         // GIR_Coverage, 1971,
    6003             :         GIR_Done,
    6004             :       // Label 294: @13991
    6005             :       GIM_Try, /*On fail goto*//*Label 295*/ 14086, // Rule ID 2731 //
    6006             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    6007             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    6008             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6009             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ASHR,
    6010             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6011             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6012             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    6013             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6014             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6015             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    6016             :         // MIs[2] Operand 1
    6017             :         // No operand predicates
    6018             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    6019             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    6020             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    6021             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    6022             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    6023             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 4294901760,
    6024             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6025             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6026             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    6027             :         // (or:{ *:[i32] } (sra:{ *:[i32] } GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    6028             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    6029             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6030             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src1
    6031             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src2
    6032             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // sh
    6033             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6034             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6035             :         GIR_EraseFromParent, /*InsnID*/0,
    6036             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6037             :         // GIR_Coverage, 2731,
    6038             :         GIR_Done,
    6039             :       // Label 295: @14086
    6040             :       GIM_Try, /*On fail goto*//*Label 296*/ 14181, // Rule ID 2764 //
    6041             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    6042             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6043             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6044             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_ASHR,
    6045             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6046             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6047             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6048             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6049             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6050             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    6051             :         // MIs[2] Operand 1
    6052             :         // No operand predicates
    6053             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    6054             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    6055             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    6056             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    6057             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6058             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 4294901760,
    6059             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6060             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6061             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    6062             :         // (or:{ *:[i32] } (sra:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh), (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    6063             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    6064             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6065             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src1
    6066             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src2
    6067             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // sh
    6068             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6069             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6070             :         GIR_EraseFromParent, /*InsnID*/0,
    6071             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6072             :         // GIR_Coverage, 2764,
    6073             :         GIR_Done,
    6074             :       // Label 296: @14181
    6075             :       GIM_Try, /*On fail goto*//*Label 297*/ 14276, // Rule ID 2730 //
    6076             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    6077             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    6078             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6079             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_LSHR,
    6080             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6081             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6082             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    6083             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6084             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6085             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_imm16,
    6086             :         // MIs[2] Operand 1
    6087             :         // No operand predicates
    6088             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    6089             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    6090             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    6091             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    6092             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    6093             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 4294901760,
    6094             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6095             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6096             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    6097             :         // (or:{ *:[i32] } (srl:{ *:[i32] } GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }))  =>  (PKHTB:{ *:[i32] } GPRnopc:{ *:[i32] }:$src1, GPRnopc:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh)
    6098             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHTB,
    6099             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6100             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src1
    6101             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src2
    6102             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // sh
    6103             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6104             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6105             :         GIR_EraseFromParent, /*InsnID*/0,
    6106             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6107             :         // GIR_Coverage, 2730,
    6108             :         GIR_Done,
    6109             :       // Label 297: @14276
    6110             :       GIM_Try, /*On fail goto*//*Label 298*/ 14371, // Rule ID 2763 //
    6111             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    6112             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6113             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6114             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_LSHR,
    6115             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6116             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6117             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6118             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6119             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6120             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_imm16,
    6121             :         // MIs[2] Operand 1
    6122             :         // No operand predicates
    6123             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    6124             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    6125             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    6126             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    6127             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6128             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 4294901760,
    6129             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6130             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6131             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    6132             :         // (or:{ *:[i32] } (srl:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh), (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 4294901760:{ *:[i32] }))  =>  (t2PKHTB:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16>>:$sh)
    6133             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHTB,
    6134             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6135             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src1
    6136             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src2
    6137             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // sh
    6138             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6139             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6140             :         GIR_EraseFromParent, /*InsnID*/0,
    6141             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6142             :         // GIR_Coverage, 2763,
    6143             :         GIR_Done,
    6144             :       // Label 298: @14371
    6145             :       GIM_Try, /*On fail goto*//*Label 299*/ 14466, // Rule ID 2729 //
    6146             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    6147             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    6148             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6149             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
    6150             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6151             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6152             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    6153             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6154             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6155             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    6156             :         // MIs[2] Operand 1
    6157             :         // No operand predicates
    6158             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    6159             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    6160             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    6161             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    6162             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::GPRnopcRegClassID,
    6163             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 65535,
    6164             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6165             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6166             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    6167             :         // (or:{ *:[i32] } (shl:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh), (and:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, 65535:{ *:[i32] }))  =>  (PKHBT:{ *:[i32] } GPRnopc:{ *:[i32] }:$Rn, GPRnopc:{ *:[i32] }:$Rm, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    6168             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::PKHBT,
    6169             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6170             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // Rn
    6171             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    6172             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // sh
    6173             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6174             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6175             :         GIR_EraseFromParent, /*InsnID*/0,
    6176             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6177             :         // GIR_Coverage, 2729,
    6178             :         GIR_Done,
    6179             :       // Label 299: @14466
    6180             :       GIM_Try, /*On fail goto*//*Label 300*/ 14561, // Rule ID 2762 //
    6181             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    6182             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6183             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6184             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_SHL,
    6185             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6186             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6187             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6188             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6189             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6190             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_imm16_31,
    6191             :         // MIs[2] Operand 1
    6192             :         // No operand predicates
    6193             :         GIM_RecordInsn, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
    6194             :         GIM_CheckOpcode, /*MI*/3, TargetOpcode::G_AND,
    6195             :         GIM_CheckType, /*MI*/3, /*Op*/1, /*Type*/GILLT_s32,
    6196             :         GIM_CheckType, /*MI*/3, /*Op*/2, /*Type*/GILLT_s32,
    6197             :         GIM_CheckRegBankForClass, /*MI*/3, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6198             :         GIM_CheckConstantInt, /*MI*/3, /*Op*/2, 65535,
    6199             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6200             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6201             :         GIM_CheckIsSafeToFold, /*InsnID*/3,
    6202             :         // (or:{ *:[i32] } (shl:{ *:[i32] } rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh), (and:{ *:[i32] } rGPR:{ *:[i32] }:$src1, 65535:{ *:[i32] }))  =>  (t2PKHBT:{ *:[i32] } rGPR:{ *:[i32] }:$src1, rGPR:{ *:[i32] }:$src2, (imm:{ *:[i32] })<<P:Predicate_imm16_31>>:$sh)
    6203             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2PKHBT,
    6204             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6205             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // src1
    6206             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src2
    6207             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // sh
    6208             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6209             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6210             :         GIR_EraseFromParent, /*InsnID*/0,
    6211             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6212             :         // GIR_Coverage, 2762,
    6213             :         GIR_Done,
    6214             :       // Label 300: @14561
    6215             :       GIM_Try, /*On fail goto*//*Label 301*/ 14634, // Rule ID 2551 //
    6216             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6217             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6218             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6219             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    6220             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6221             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6222             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -1,
    6223             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6224             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6225             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6226             :         // MIs[2] Operand 1
    6227             :         // No operand predicates
    6228             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    6229             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6230             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6231             :         // (or:{ *:[i32] } (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm), rGPR:{ *:[i32] }:$Rn)  =>  (t2ORNri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6232             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORNri,
    6233             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6234             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    6235             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    6236             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6237             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6238             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6239             :         GIR_EraseFromParent, /*InsnID*/0,
    6240             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6241             :         // GIR_Coverage, 2551,
    6242             :         GIR_Done,
    6243             :       // Label 301: @14634
    6244             :       GIM_Try, /*On fail goto*//*Label 302*/ 14707, // Rule ID 2550 //
    6245             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6246             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6247             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6248             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    6249             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6250             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6251             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    6252             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6253             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6254             :         // MIs[2] Operand 1
    6255             :         // No operand predicates
    6256             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    6257             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    6258             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6259             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6260             :         // (or:{ *:[i32] } (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm, -1:{ *:[i32] }), rGPR:{ *:[i32] }:$Rn)  =>  (t2ORNri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6261             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORNri,
    6262             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6263             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    6264             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    6265             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6266             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6267             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6268             :         GIR_EraseFromParent, /*InsnID*/0,
    6269             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6270             :         // GIR_Coverage, 2550,
    6271             :         GIR_Done,
    6272             :       // Label 302: @14707
    6273             :       GIM_Try, /*On fail goto*//*Label 303*/ 14780, // Rule ID 2549 //
    6274             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6275             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6276             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6277             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6278             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    6279             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6280             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6281             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/1, -1,
    6282             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
    6283             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6284             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6285             :         // MIs[2] Operand 1
    6286             :         // No operand predicates
    6287             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6288             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6289             :         // (or:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm))  =>  (t2ORNri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6290             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORNri,
    6291             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6292             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6293             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    6294             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6295             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6296             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6297             :         GIR_EraseFromParent, /*InsnID*/0,
    6298             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6299             :         // GIR_Coverage, 2549,
    6300             :         GIR_Done,
    6301             :       // Label 303: @14780
    6302             :       GIM_Try, /*On fail goto*//*Label 304*/ 14853, // Rule ID 500 //
    6303             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6304             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6305             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6306             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6307             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    6308             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6309             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6310             :         GIM_RecordInsn, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
    6311             :         GIM_CheckOpcode, /*MI*/2, TargetOpcode::G_CONSTANT,
    6312             :         GIM_CheckI64ImmPredicate, /*MI*/2, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6313             :         // MIs[2] Operand 1
    6314             :         // No operand predicates
    6315             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    6316             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6317             :         GIM_CheckIsSafeToFold, /*InsnID*/2,
    6318             :         // (or:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm, -1:{ *:[i32] }))  =>  (t2ORNri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6319             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORNri,
    6320             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6321             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6322             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
    6323             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6324             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6325             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6326             :         GIR_EraseFromParent, /*InsnID*/0,
    6327             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6328             :         // GIR_Coverage, 500,
    6329             :         GIR_Done,
    6330             :       // Label 304: @14853
    6331             :       GIM_Try, /*On fail goto*//*Label 305*/ 14919, // Rule ID 2552 //
    6332             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6333             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6334             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6335             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    6336             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6337             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6338             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6339             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    6340             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    6341             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6342             :         // (or:{ *:[i32] } (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, -1:{ *:[i32] }), rGPR:{ *:[i32] }:$Rn)  =>  (t2ORNrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    6343             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORNrr,
    6344             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6345             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rn
    6346             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    6347             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6348             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6349             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6350             :         GIR_EraseFromParent, /*InsnID*/0,
    6351             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6352             :         // GIR_Coverage, 2552,
    6353             :         GIR_Done,
    6354             :       // Label 305: @14919
    6355             :       GIM_Try, /*On fail goto*//*Label 306*/ 14985, // Rule ID 501 //
    6356             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6357             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6358             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6359             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6360             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_XOR,
    6361             :         GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
    6362             :         GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_s32,
    6363             :         GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6364             :         GIM_CheckConstantInt, /*MI*/1, /*Op*/2, -1,
    6365             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6366             :         // (or:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, -1:{ *:[i32] }))  =>  (t2ORNrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    6367             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORNrr,
    6368             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6369             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6370             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // Rm
    6371             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6372             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6373             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6374             :         GIR_EraseFromParent, /*InsnID*/0,
    6375             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6376             :         // GIR_Coverage, 501,
    6377             :         GIR_Done,
    6378             :       // Label 306: @14985
    6379             :       GIM_Try, /*On fail goto*//*Label 307*/ 15026, // Rule ID 1702 //
    6380             :         GIM_CheckFeatures, GIFBS_HasV6T2_IsARM,
    6381             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    6382             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6383             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 4294901760,
    6384             :         // (or:{ *:[i32] } GPR:{ *:[i32] }:$src, 4294901760:{ *:[i32] })  =>  (MOVTi16:{ *:[i32] } GPR:{ *:[i32] }:$src, 65535:{ *:[i32] })
    6385             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MOVTi16,
    6386             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6387             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6388             :         GIR_AddImm, /*InsnID*/0, /*Imm*/65535,
    6389             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6390             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6391             :         GIR_EraseFromParent, /*InsnID*/0,
    6392             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6393             :         // GIR_Coverage, 1702,
    6394             :         GIR_Done,
    6395             :       // Label 307: @15026
    6396             :       GIM_Try, /*On fail goto*//*Label 308*/ 15067, // Rule ID 1894 //
    6397             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6398             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6399             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6400             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, 4294901760,
    6401             :         // (or:{ *:[i32] } rGPR:{ *:[i32] }:$src, 4294901760:{ *:[i32] })  =>  (t2MOVTi16:{ *:[i32] } rGPR:{ *:[i32] }:$src, 65535:{ *:[i32] })
    6402             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MOVTi16,
    6403             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6404             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6405             :         GIR_AddImm, /*InsnID*/0, /*Imm*/65535,
    6406             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6407             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6408             :         GIR_EraseFromParent, /*InsnID*/0,
    6409             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6410             :         // GIR_Coverage, 1894,
    6411             :         GIR_Done,
    6412             :       // Label 308: @15067
    6413             :       GIM_Try, /*On fail goto*//*Label 309*/ 15119, // Rule ID 153 //
    6414             :         GIM_CheckFeatures, GIFBS_IsARM,
    6415             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    6416             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6417             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6418             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    6419             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    6420             :         // MIs[1] Operand 1
    6421             :         // No operand predicates
    6422             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6423             :         // (or:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm)  =>  (ORRri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6424             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::ORRri,
    6425             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6426             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6427             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    6428             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6429             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6430             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6431             :         GIR_EraseFromParent, /*InsnID*/0,
    6432             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6433             :         // GIR_Coverage, 153,
    6434             :         GIR_Done,
    6435             :       // Label 309: @15119
    6436             :       GIM_Try, /*On fail goto*//*Label 310*/ 15171, // Rule ID 488 //
    6437             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6438             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6439             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6440             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6441             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    6442             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6443             :         // MIs[1] Operand 1
    6444             :         // No operand predicates
    6445             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6446             :         // (or:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm)  =>  (t2ORRri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6447             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORRri,
    6448             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6449             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6450             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    6451             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6452             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6453             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6454             :         GIR_EraseFromParent, /*InsnID*/0,
    6455             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6456             :         // GIR_Coverage, 488,
    6457             :         GIR_Done,
    6458             :       // Label 310: @15171
    6459             :       GIM_Try, /*On fail goto*//*Label 311*/ 15216, // Rule ID 154 //
    6460             :         GIM_CheckFeatures, GIFBS_IsARM,
    6461             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    6462             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6463             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    6464             :         // (or:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (ORRrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    6465             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::ORRrr,
    6466             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6467             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6468             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    6469             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6470             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6471             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6472             :         GIR_EraseFromParent, /*InsnID*/0,
    6473             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6474             :         // GIR_Coverage, 154,
    6475             :         GIR_Done,
    6476             :       // Label 311: @15216
    6477             :       GIM_Try, /*On fail goto*//*Label 312*/ 15261, // Rule ID 489 //
    6478             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6479             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6480             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6481             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    6482             :         // (or:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2ORRrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    6483             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2ORRrr,
    6484             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6485             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6486             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    6487             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6488             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6489             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6490             :         GIR_EraseFromParent, /*InsnID*/0,
    6491             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6492             :         // GIR_Coverage, 489,
    6493             :         GIR_Done,
    6494             :       // Label 312: @15261
    6495             :       GIM_Reject,
    6496             :     // Label 268: @15262
    6497             :     GIM_Reject,
    6498             :     // Label 265: @15263
    6499             :     GIM_Try, /*On fail goto*//*Label 313*/ 15313, // Rule ID 1106 //
    6500             :       GIM_CheckFeatures, GIFBS_HasNEON,
    6501             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6502             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    6503             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6504             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6505             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    6506             :       // (or:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)  =>  (VORRd:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    6507             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VORRd,
    6508             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6509             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    6510             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    6511             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6512             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6513             :       GIR_EraseFromParent, /*InsnID*/0,
    6514             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6515             :       // GIR_Coverage, 1106,
    6516             :       GIR_Done,
    6517             :     // Label 313: @15313
    6518             :     GIM_Reject,
    6519             :     // Label 266: @15314
    6520             :     GIM_Try, /*On fail goto*//*Label 314*/ 15364, // Rule ID 1107 //
    6521             :       GIM_CheckFeatures, GIFBS_HasNEON,
    6522             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    6523             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    6524             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    6525             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    6526             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    6527             :       // (or:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)  =>  (VORRq:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    6528             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VORRq,
    6529             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6530             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    6531             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    6532             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6533             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6534             :       GIR_EraseFromParent, /*InsnID*/0,
    6535             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6536             :       // GIR_Coverage, 1107,
    6537             :       GIR_Done,
    6538             :     // Label 314: @15364
    6539             :     GIM_Reject,
    6540             :     // Label 267: @15365
    6541             :     GIM_Reject,
    6542             :     // Label 7: @15366
    6543             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 7, /*)*//*default:*//*Label 318*/ 15864,
    6544             :     /*GILLT_s32*//*Label 315*/ 15378, 0,
    6545             :     /*GILLT_v2s32*//*Label 316*/ 15762, 0, 0,
    6546             :     /*GILLT_v4s32*//*Label 317*/ 15813,
    6547             :     // Label 315: @15378
    6548             :     GIM_Try, /*On fail goto*//*Label 319*/ 15761,
    6549             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    6550             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    6551             :       GIM_Try, /*On fail goto*//*Label 320*/ 15436, // Rule ID 2554 //
    6552             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6553             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6554             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/1, -1,
    6555             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6556             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    6557             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6558             :         // MIs[1] Operand 1
    6559             :         // No operand predicates
    6560             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6561             :         // (xor:{ *:[i32] } -1:{ *:[i32] }, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm)  =>  (t2MVNi:{ *:[i32] } (imm:{ *:[i32] }):$imm)
    6562             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MVNi,
    6563             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6564             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    6565             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6566             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6567             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6568             :         GIR_EraseFromParent, /*InsnID*/0,
    6569             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6570             :         // GIR_Coverage, 2554,
    6571             :         GIR_Done,
    6572             :       // Label 320: @15436
    6573             :       GIM_Try, /*On fail goto*//*Label 321*/ 15484, // Rule ID 503 //
    6574             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6575             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6576             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
    6577             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    6578             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6579             :         // MIs[1] Operand 1
    6580             :         // No operand predicates
    6581             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
    6582             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6583             :         // (xor:{ *:[i32] } (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm, -1:{ *:[i32] })  =>  (t2MVNi:{ *:[i32] } (imm:{ *:[i32] }):$imm)
    6584             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MVNi,
    6585             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6586             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    6587             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6588             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6589             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6590             :         GIR_EraseFromParent, /*InsnID*/0,
    6591             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6592             :         // GIR_Coverage, 503,
    6593             :         GIR_Done,
    6594             :       // Label 321: @15484
    6595             :       GIM_Try, /*On fail goto*//*Label 322*/ 15525, // Rule ID 504 //
    6596             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6597             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6598             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6599             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
    6600             :         // (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, -1:{ *:[i32] })  =>  (t2MVNr:{ *:[i32] } rGPR:{ *:[i32] }:$Rm)
    6601             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2MVNr,
    6602             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6603             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    6604             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6605             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6606             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6607             :         GIR_EraseFromParent, /*InsnID*/0,
    6608             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6609             :         // GIR_Coverage, 504,
    6610             :         GIR_Done,
    6611             :       // Label 322: @15525
    6612             :       GIM_Try, /*On fail goto*//*Label 323*/ 15566, // Rule ID 167 //
    6613             :         GIM_CheckFeatures, GIFBS_IsARM,
    6614             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    6615             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6616             :         GIM_CheckConstantInt, /*MI*/0, /*Op*/2, -1,
    6617             :         // (xor:{ *:[i32] } GPR:{ *:[i32] }:$Rm, -1:{ *:[i32] })  =>  (MVNr:{ *:[i32] } GPR:{ *:[i32] }:$Rm)
    6618             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::MVNr,
    6619             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6620             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rm
    6621             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6622             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6623             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6624             :         GIR_EraseFromParent, /*InsnID*/0,
    6625             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6626             :         // GIR_Coverage, 167,
    6627             :         GIR_Done,
    6628             :       // Label 323: @15566
    6629             :       GIM_Try, /*On fail goto*//*Label 324*/ 15618, // Rule ID 157 //
    6630             :         GIM_CheckFeatures, GIFBS_IsARM,
    6631             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    6632             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6633             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6634             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    6635             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_mod_imm,
    6636             :         // MIs[1] Operand 1
    6637             :         // No operand predicates
    6638             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6639             :         // (xor:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_mod_imm>>:$imm)  =>  (EORri:{ *:[i32] } GPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6640             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::EORri,
    6641             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6642             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6643             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    6644             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6645             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6646             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6647             :         GIR_EraseFromParent, /*InsnID*/0,
    6648             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6649             :         // GIR_Coverage, 157,
    6650             :         GIR_Done,
    6651             :       // Label 324: @15618
    6652             :       GIM_Try, /*On fail goto*//*Label 325*/ 15670, // Rule ID 491 //
    6653             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6654             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6655             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6656             :         GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
    6657             :         GIM_CheckOpcode, /*MI*/1, TargetOpcode::G_CONSTANT,
    6658             :         GIM_CheckI64ImmPredicate, /*MI*/1, /*Predicate*/GIPFP_I64_Predicate_t2_so_imm,
    6659             :         // MIs[1] Operand 1
    6660             :         // No operand predicates
    6661             :         GIM_CheckIsSafeToFold, /*InsnID*/1,
    6662             :         // (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] })<<P:Predicate_t2_so_imm>>:$imm)  =>  (t2EORri:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, (imm:{ *:[i32] }):$imm)
    6663             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2EORri,
    6664             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6665             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6666             :         GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // imm
    6667             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6668             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6669             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6670             :         GIR_EraseFromParent, /*InsnID*/0,
    6671             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6672             :         // GIR_Coverage, 491,
    6673             :         GIR_Done,
    6674             :       // Label 325: @15670
    6675             :       GIM_Try, /*On fail goto*//*Label 326*/ 15715, // Rule ID 158 //
    6676             :         GIM_CheckFeatures, GIFBS_IsARM,
    6677             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    6678             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6679             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    6680             :         // (xor:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)  =>  (EORrr:{ *:[i32] } GPR:{ *:[i32] }:$Rn, GPR:{ *:[i32] }:$Rm)
    6681             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::EORrr,
    6682             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6683             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6684             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    6685             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6686             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6687             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6688             :         GIR_EraseFromParent, /*InsnID*/0,
    6689             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6690             :         // GIR_Coverage, 158,
    6691             :         GIR_Done,
    6692             :       // Label 326: @15715
    6693             :       GIM_Try, /*On fail goto*//*Label 327*/ 15760, // Rule ID 492 //
    6694             :         GIM_CheckFeatures, GIFBS_IsThumb2,
    6695             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    6696             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::rGPRRegClassID,
    6697             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    6698             :         // (xor:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)  =>  (t2EORrr:{ *:[i32] } rGPR:{ *:[i32] }:$Rn, rGPR:{ *:[i32] }:$Rm)
    6699             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2EORrr,
    6700             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    6701             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rn
    6702             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    6703             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6704             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6705             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6706             :         GIR_EraseFromParent, /*InsnID*/0,
    6707             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6708             :         // GIR_Coverage, 492,
    6709             :         GIR_Done,
    6710             :       // Label 327: @15760
    6711             :       GIM_Reject,
    6712             :     // Label 319: @15761
    6713             :     GIM_Reject,
    6714             :     // Label 316: @15762
    6715             :     GIM_Try, /*On fail goto*//*Label 328*/ 15812, // Rule ID 1104 //
    6716             :       GIM_CheckFeatures, GIFBS_HasNEON,
    6717             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6718             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    6719             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6720             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6721             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    6722             :       // (xor:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)  =>  (VEORd:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vn, DPR:{ *:[v2i32] }:$Vm)
    6723             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VEORd,
    6724             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6725             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    6726             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    6727             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6728             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6729             :       GIR_EraseFromParent, /*InsnID*/0,
    6730             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6731             :       // GIR_Coverage, 1104,
    6732             :       GIR_Done,
    6733             :     // Label 328: @15812
    6734             :     GIM_Reject,
    6735             :     // Label 317: @15813
    6736             :     GIM_Try, /*On fail goto*//*Label 329*/ 15863, // Rule ID 1105 //
    6737             :       GIM_CheckFeatures, GIFBS_HasNEON,
    6738             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    6739             :       GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    6740             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    6741             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    6742             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    6743             :       // (xor:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)  =>  (VEORq:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vn, QPR:{ *:[v4i32] }:$Vm)
    6744             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VEORq,
    6745             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6746             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Vn
    6747             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    6748             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6749             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6750             :       GIR_EraseFromParent, /*InsnID*/0,
    6751             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6752             :       // GIR_Coverage, 1105,
    6753             :       GIR_Done,
    6754             :     // Label 329: @15863
    6755             :     GIM_Reject,
    6756             :     // Label 318: @15864
    6757             :     GIM_Reject,
    6758             :     // Label 8: @15865
    6759             :     GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/1, 10, /*)*//*default:*//*Label 339*/ 20252,
    6760             :     /*GILLT_s32*//*Label 330*/ 15880,
    6761             :     /*GILLT_s64*//*Label 331*/ 15956,
    6762             :     /*GILLT_v2s32*//*Label 332*/ 16669,
    6763             :     /*GILLT_v2s64*//*Label 333*/ 17310,
    6764             :     /*GILLT_v4s16*//*Label 334*/ 18023,
    6765             :     /*GILLT_v4s32*//*Label 335*/ 18418,
    6766             :     /*GILLT_v8s8*//*Label 336*/ 19097,
    6767             :     /*GILLT_v8s16*//*Label 337*/ 19458,
    6768             :     /*GILLT_v16s8*//*Label 338*/ 19891,
    6769             :     // Label 330: @15880
    6770             :     GIM_Try, /*On fail goto*//*Label 340*/ 15955,
    6771             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
    6772             :       GIM_Try, /*On fail goto*//*Label 341*/ 15920, // Rule ID 686 //
    6773             :         GIM_CheckFeatures, GIFBS_HasVFP2,
    6774             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRRegClassID,
    6775             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::SPRRegClassID,
    6776             :         // (bitconvert:{ *:[i32] } SPR:{ *:[f32] }:$Sn)  =>  (VMOVRS:{ *:[i32] } SPR:{ *:[f32] }:$Sn)
    6777             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMOVRS,
    6778             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rt
    6779             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Sn
    6780             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6781             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6782             :         GIR_EraseFromParent, /*InsnID*/0,
    6783             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6784             :         // GIR_Coverage, 686,
    6785             :         GIR_Done,
    6786             :       // Label 341: @15920
    6787             :       GIM_Try, /*On fail goto*//*Label 342*/ 15954, // Rule ID 687 //
    6788             :         GIM_CheckFeatures, GIFBS_HasVFP2_UseVMOVSR,
    6789             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::SPRRegClassID,
    6790             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::GPRRegClassID,
    6791             :         // (bitconvert:{ *:[f32] } GPR:{ *:[i32] }:$Rt)  =>  (VMOVSR:{ *:[f32] } GPR:{ *:[i32] }:$Rt)
    6792             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VMOVSR,
    6793             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Sn
    6794             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // Rt
    6795             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6796             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6797             :         GIR_EraseFromParent, /*InsnID*/0,
    6798             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6799             :         // GIR_Coverage, 687,
    6800             :         GIR_Done,
    6801             :       // Label 342: @15954
    6802             :       GIM_Reject,
    6803             :     // Label 340: @15955
    6804             :     GIM_Reject,
    6805             :     // Label 331: @15956
    6806             :     GIM_Try, /*On fail goto*//*Label 343*/ 15990, // Rule ID 2321 //
    6807             :       GIM_CheckFeatures, GIFBS_IsLE,
    6808             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6809             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6810             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6811             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v2i32] }:$src)  =>  DPR:{ *:[v1i64] }:$src
    6812             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6813             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6814             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6815             :       GIR_EraseFromParent, /*InsnID*/0,
    6816             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6817             :       // GIR_Coverage, 2321,
    6818             :       GIR_Done,
    6819             :     // Label 343: @15990
    6820             :     GIM_Try, /*On fail goto*//*Label 344*/ 16024, // Rule ID 2322 //
    6821             :       GIM_CheckFeatures, GIFBS_IsLE,
    6822             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    6823             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6824             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6825             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v4i16] }:$src)  =>  DPR:{ *:[v1i64] }:$src
    6826             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6827             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6828             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6829             :       GIR_EraseFromParent, /*InsnID*/0,
    6830             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6831             :       // GIR_Coverage, 2322,
    6832             :       GIR_Done,
    6833             :     // Label 344: @16024
    6834             :     GIM_Try, /*On fail goto*//*Label 345*/ 16058, // Rule ID 2323 //
    6835             :       GIM_CheckFeatures, GIFBS_IsLE,
    6836             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    6837             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6838             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6839             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v8i8] }:$src)  =>  DPR:{ *:[v1i64] }:$src
    6840             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6841             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6842             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6843             :       GIR_EraseFromParent, /*InsnID*/0,
    6844             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6845             :       // GIR_Coverage, 2323,
    6846             :       GIR_Done,
    6847             :     // Label 345: @16058
    6848             :     GIM_Try, /*On fail goto*//*Label 346*/ 16090, // Rule ID 2324 //
    6849             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    6850             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6851             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6852             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[f64] }:$src)  =>  DPR:{ *:[v1i64] }:$src
    6853             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6854             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6855             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6856             :       GIR_EraseFromParent, /*InsnID*/0,
    6857             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6858             :       // GIR_Coverage, 2324,
    6859             :       GIR_Done,
    6860             :     // Label 346: @16090
    6861             :     GIM_Try, /*On fail goto*//*Label 347*/ 16124, // Rule ID 2325 //
    6862             :       GIM_CheckFeatures, GIFBS_IsLE,
    6863             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6864             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6865             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6866             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v2f32] }:$src)  =>  DPR:{ *:[v1i64] }:$src
    6867             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6868             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6869             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6870             :       GIR_EraseFromParent, /*InsnID*/0,
    6871             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6872             :       // GIR_Coverage, 2325,
    6873             :       GIR_Done,
    6874             :     // Label 347: @16124
    6875             :     GIM_Try, /*On fail goto*//*Label 348*/ 16156, // Rule ID 2341 //
    6876             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    6877             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6878             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6879             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v1i64] }:$src)  =>  DPR:{ *:[f64] }:$src
    6880             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6881             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6882             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6883             :       GIR_EraseFromParent, /*InsnID*/0,
    6884             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6885             :       // GIR_Coverage, 2341,
    6886             :       GIR_Done,
    6887             :     // Label 348: @16156
    6888             :     GIM_Try, /*On fail goto*//*Label 349*/ 16190, // Rule ID 2342 //
    6889             :       GIM_CheckFeatures, GIFBS_IsLE,
    6890             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6891             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6892             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6893             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v2i32] }:$src)  =>  DPR:{ *:[f64] }:$src
    6894             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6895             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6896             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6897             :       GIR_EraseFromParent, /*InsnID*/0,
    6898             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6899             :       // GIR_Coverage, 2342,
    6900             :       GIR_Done,
    6901             :     // Label 349: @16190
    6902             :     GIM_Try, /*On fail goto*//*Label 350*/ 16224, // Rule ID 2343 //
    6903             :       GIM_CheckFeatures, GIFBS_IsLE,
    6904             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    6905             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6906             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6907             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v4i16] }:$src)  =>  DPR:{ *:[f64] }:$src
    6908             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6909             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6910             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6911             :       GIR_EraseFromParent, /*InsnID*/0,
    6912             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6913             :       // GIR_Coverage, 2343,
    6914             :       GIR_Done,
    6915             :     // Label 350: @16224
    6916             :     GIM_Try, /*On fail goto*//*Label 351*/ 16258, // Rule ID 2344 //
    6917             :       GIM_CheckFeatures, GIFBS_IsLE,
    6918             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    6919             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6920             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6921             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v4f16] }:$src)  =>  DPR:{ *:[f64] }:$src
    6922             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6923             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6924             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6925             :       GIR_EraseFromParent, /*InsnID*/0,
    6926             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6927             :       // GIR_Coverage, 2344,
    6928             :       GIR_Done,
    6929             :     // Label 351: @16258
    6930             :     GIM_Try, /*On fail goto*//*Label 352*/ 16292, // Rule ID 2345 //
    6931             :       GIM_CheckFeatures, GIFBS_IsLE,
    6932             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    6933             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6934             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6935             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v8i8] }:$src)  =>  DPR:{ *:[f64] }:$src
    6936             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6937             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6938             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6939             :       GIR_EraseFromParent, /*InsnID*/0,
    6940             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6941             :       // GIR_Coverage, 2345,
    6942             :       GIR_Done,
    6943             :     // Label 352: @16292
    6944             :     GIM_Try, /*On fail goto*//*Label 353*/ 16326, // Rule ID 2346 //
    6945             :       GIM_CheckFeatures, GIFBS_IsLE,
    6946             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6947             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6948             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6949             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v2f32] }:$src)  =>  DPR:{ *:[f64] }:$src
    6950             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    6951             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    6952             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6953             :       GIR_EraseFromParent, /*InsnID*/0,
    6954             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    6955             :       // GIR_Coverage, 2346,
    6956             :       GIR_Done,
    6957             :     // Label 353: @16326
    6958             :     GIM_Try, /*On fail goto*//*Label 354*/ 16364, // Rule ID 2385 //
    6959             :       GIM_CheckFeatures, GIFBS_IsBE,
    6960             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    6961             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6962             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6963             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v2i32] }:$src)  =>  (VREV64d32:{ *:[v1i64] } DPR:{ *:[v2i32] }:$src)
    6964             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    6965             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6966             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6967             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6968             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6969             :       GIR_EraseFromParent, /*InsnID*/0,
    6970             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6971             :       // GIR_Coverage, 2385,
    6972             :       GIR_Done,
    6973             :     // Label 354: @16364
    6974             :     GIM_Try, /*On fail goto*//*Label 355*/ 16402, // Rule ID 2386 //
    6975             :       GIM_CheckFeatures, GIFBS_IsBE,
    6976             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    6977             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6978             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6979             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v4i16] }:$src)  =>  (VREV64d16:{ *:[v1i64] } DPR:{ *:[v4i16] }:$src)
    6980             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d16,
    6981             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6982             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6983             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    6984             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    6985             :       GIR_EraseFromParent, /*InsnID*/0,
    6986             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    6987             :       // GIR_Coverage, 2386,
    6988             :       GIR_Done,
    6989             :     // Label 355: @16402
    6990             :     GIM_Try, /*On fail goto*//*Label 356*/ 16440, // Rule ID 2387 //
    6991             :       GIM_CheckFeatures, GIFBS_IsBE,
    6992             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    6993             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    6994             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    6995             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v8i8] }:$src)  =>  (VREV64d8:{ *:[v1i64] } DPR:{ *:[v8i8] }:$src)
    6996             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d8,
    6997             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    6998             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    6999             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7000             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7001             :       GIR_EraseFromParent, /*InsnID*/0,
    7002             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7003             :       // GIR_Coverage, 2387,
    7004             :       GIR_Done,
    7005             :     // Label 356: @16440
    7006             :     GIM_Try, /*On fail goto*//*Label 357*/ 16478, // Rule ID 2388 //
    7007             :       GIM_CheckFeatures, GIFBS_IsBE,
    7008             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7009             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7010             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7011             :       // (bitconvert:{ *:[v1i64] } DPR:{ *:[v2f32] }:$src)  =>  (VREV64d32:{ *:[v1i64] } DPR:{ *:[v2f32] }:$src)
    7012             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7013             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7014             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7015             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7016             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7017             :       GIR_EraseFromParent, /*InsnID*/0,
    7018             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7019             :       // GIR_Coverage, 2388,
    7020             :       GIR_Done,
    7021             :     // Label 357: @16478
    7022             :     GIM_Try, /*On fail goto*//*Label 358*/ 16516, // Rule ID 2403 //
    7023             :       GIM_CheckFeatures, GIFBS_IsBE,
    7024             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7025             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7026             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7027             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v2i32] }:$src)  =>  (VREV64d32:{ *:[f64] } DPR:{ *:[v2i32] }:$src)
    7028             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7029             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7030             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7031             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7032             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7033             :       GIR_EraseFromParent, /*InsnID*/0,
    7034             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7035             :       // GIR_Coverage, 2403,
    7036             :       GIR_Done,
    7037             :     // Label 358: @16516
    7038             :     GIM_Try, /*On fail goto*//*Label 359*/ 16554, // Rule ID 2404 //
    7039             :       GIM_CheckFeatures, GIFBS_IsBE,
    7040             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    7041             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7042             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7043             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v4f16] }:$src)  =>  (VREV64d16:{ *:[f64] } DPR:{ *:[v4f16] }:$src)
    7044             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d16,
    7045             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7046             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7047             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7048             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7049             :       GIR_EraseFromParent, /*InsnID*/0,
    7050             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7051             :       // GIR_Coverage, 2404,
    7052             :       GIR_Done,
    7053             :     // Label 359: @16554
    7054             :     GIM_Try, /*On fail goto*//*Label 360*/ 16592, // Rule ID 2405 //
    7055             :       GIM_CheckFeatures, GIFBS_IsBE,
    7056             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    7057             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7058             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7059             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v4i16] }:$src)  =>  (VREV64d16:{ *:[f64] } DPR:{ *:[v4i16] }:$src)
    7060             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d16,
    7061             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7062             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7063             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7064             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7065             :       GIR_EraseFromParent, /*InsnID*/0,
    7066             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7067             :       // GIR_Coverage, 2405,
    7068             :       GIR_Done,
    7069             :     // Label 360: @16592
    7070             :     GIM_Try, /*On fail goto*//*Label 361*/ 16630, // Rule ID 2406 //
    7071             :       GIM_CheckFeatures, GIFBS_IsBE,
    7072             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7073             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7074             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7075             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v8i8] }:$src)  =>  (VREV64d8:{ *:[f64] } DPR:{ *:[v8i8] }:$src)
    7076             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d8,
    7077             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7078             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7079             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7080             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7081             :       GIR_EraseFromParent, /*InsnID*/0,
    7082             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7083             :       // GIR_Coverage, 2406,
    7084             :       GIR_Done,
    7085             :     // Label 361: @16630
    7086             :     GIM_Try, /*On fail goto*//*Label 362*/ 16668, // Rule ID 2407 //
    7087             :       GIM_CheckFeatures, GIFBS_IsBE,
    7088             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7089             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7090             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7091             :       // (bitconvert:{ *:[f64] } DPR:{ *:[v2f32] }:$src)  =>  (VREV64d32:{ *:[f64] } DPR:{ *:[v2f32] }:$src)
    7092             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7093             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7094             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7095             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7096             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7097             :       GIR_EraseFromParent, /*InsnID*/0,
    7098             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7099             :       // GIR_Coverage, 2407,
    7100             :       GIR_Done,
    7101             :     // Label 362: @16668
    7102             :     GIM_Reject,
    7103             :     // Label 332: @16669
    7104             :     GIM_Try, /*On fail goto*//*Label 363*/ 16703, // Rule ID 2326 //
    7105             :       GIM_CheckFeatures, GIFBS_IsLE,
    7106             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7107             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7108             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7109             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v1i64] }:$src)  =>  DPR:{ *:[v2i32] }:$src
    7110             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7111             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7112             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7113             :       GIR_EraseFromParent, /*InsnID*/0,
    7114             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7115             :       // GIR_Coverage, 2326,
    7116             :       GIR_Done,
    7117             :     // Label 363: @16703
    7118             :     GIM_Try, /*On fail goto*//*Label 364*/ 16737, // Rule ID 2327 //
    7119             :       GIM_CheckFeatures, GIFBS_IsLE,
    7120             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    7121             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7122             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7123             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v4i16] }:$src)  =>  DPR:{ *:[v2i32] }:$src
    7124             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7125             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7126             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7127             :       GIR_EraseFromParent, /*InsnID*/0,
    7128             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7129             :       // GIR_Coverage, 2327,
    7130             :       GIR_Done,
    7131             :     // Label 364: @16737
    7132             :     GIM_Try, /*On fail goto*//*Label 365*/ 16771, // Rule ID 2328 //
    7133             :       GIM_CheckFeatures, GIFBS_IsLE,
    7134             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7135             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7136             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7137             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v8i8] }:$src)  =>  DPR:{ *:[v2i32] }:$src
    7138             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7139             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7140             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7141             :       GIR_EraseFromParent, /*InsnID*/0,
    7142             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7143             :       // GIR_Coverage, 2328,
    7144             :       GIR_Done,
    7145             :     // Label 365: @16771
    7146             :     GIM_Try, /*On fail goto*//*Label 366*/ 16805, // Rule ID 2329 //
    7147             :       GIM_CheckFeatures, GIFBS_IsLE,
    7148             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7149             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7150             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7151             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[f64] }:$src)  =>  DPR:{ *:[v2i32] }:$src
    7152             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7153             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7154             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7155             :       GIR_EraseFromParent, /*InsnID*/0,
    7156             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7157             :       // GIR_Coverage, 2329,
    7158             :       GIR_Done,
    7159             :     // Label 366: @16805
    7160             :     GIM_Try, /*On fail goto*//*Label 367*/ 16837, // Rule ID 2330 //
    7161             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7162             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7163             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7164             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v2f32] }:$src)  =>  DPR:{ *:[v2i32] }:$src
    7165             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7166             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7167             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7168             :       GIR_EraseFromParent, /*InsnID*/0,
    7169             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7170             :       // GIR_Coverage, 2330,
    7171             :       GIR_Done,
    7172             :     // Label 367: @16837
    7173             :     GIM_Try, /*On fail goto*//*Label 368*/ 16871, // Rule ID 2347 //
    7174             :       GIM_CheckFeatures, GIFBS_IsLE,
    7175             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7176             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7177             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7178             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[f64] }:$src)  =>  DPR:{ *:[v2f32] }:$src
    7179             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7180             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7181             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7182             :       GIR_EraseFromParent, /*InsnID*/0,
    7183             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7184             :       // GIR_Coverage, 2347,
    7185             :       GIR_Done,
    7186             :     // Label 368: @16871
    7187             :     GIM_Try, /*On fail goto*//*Label 369*/ 16905, // Rule ID 2349 //
    7188             :       GIM_CheckFeatures, GIFBS_IsLE,
    7189             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7190             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7191             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7192             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v1i64] }:$src)  =>  DPR:{ *:[v2f32] }:$src
    7193             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7194             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7195             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7196             :       GIR_EraseFromParent, /*InsnID*/0,
    7197             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7198             :       // GIR_Coverage, 2349,
    7199             :       GIR_Done,
    7200             :     // Label 369: @16905
    7201             :     GIM_Try, /*On fail goto*//*Label 370*/ 16937, // Rule ID 2350 //
    7202             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7203             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7204             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7205             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v2i32] }:$src)  =>  DPR:{ *:[v2f32] }:$src
    7206             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7207             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7208             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7209             :       GIR_EraseFromParent, /*InsnID*/0,
    7210             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7211             :       // GIR_Coverage, 2350,
    7212             :       GIR_Done,
    7213             :     // Label 370: @16937
    7214             :     GIM_Try, /*On fail goto*//*Label 371*/ 16971, // Rule ID 2351 //
    7215             :       GIM_CheckFeatures, GIFBS_IsLE,
    7216             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    7217             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7218             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7219             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v4i16] }:$src)  =>  DPR:{ *:[v2f32] }:$src
    7220             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7221             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7222             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7223             :       GIR_EraseFromParent, /*InsnID*/0,
    7224             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7225             :       // GIR_Coverage, 2351,
    7226             :       GIR_Done,
    7227             :     // Label 371: @16971
    7228             :     GIM_Try, /*On fail goto*//*Label 372*/ 17005, // Rule ID 2352 //
    7229             :       GIM_CheckFeatures, GIFBS_IsLE,
    7230             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7231             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7232             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7233             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v8i8] }:$src)  =>  DPR:{ *:[v2f32] }:$src
    7234             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7235             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7236             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7237             :       GIR_EraseFromParent, /*InsnID*/0,
    7238             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7239             :       // GIR_Coverage, 2352,
    7240             :       GIR_Done,
    7241             :     // Label 372: @17005
    7242             :     GIM_Try, /*On fail goto*//*Label 373*/ 17043, // Rule ID 2389 //
    7243             :       GIM_CheckFeatures, GIFBS_IsBE,
    7244             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7245             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7246             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7247             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v1i64] }:$src)  =>  (VREV64d32:{ *:[v2i32] } DPR:{ *:[v1i64] }:$src)
    7248             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7249             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7250             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7251             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7252             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7253             :       GIR_EraseFromParent, /*InsnID*/0,
    7254             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7255             :       // GIR_Coverage, 2389,
    7256             :       GIR_Done,
    7257             :     // Label 373: @17043
    7258             :     GIM_Try, /*On fail goto*//*Label 374*/ 17081, // Rule ID 2390 //
    7259             :       GIM_CheckFeatures, GIFBS_IsBE,
    7260             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    7261             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7262             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7263             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v4i16] }:$src)  =>  (VREV32d16:{ *:[v2i32] } DPR:{ *:[v4i16] }:$src)
    7264             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d16,
    7265             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7266             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7267             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7268             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7269             :       GIR_EraseFromParent, /*InsnID*/0,
    7270             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7271             :       // GIR_Coverage, 2390,
    7272             :       GIR_Done,
    7273             :     // Label 374: @17081
    7274             :     GIM_Try, /*On fail goto*//*Label 375*/ 17119, // Rule ID 2391 //
    7275             :       GIM_CheckFeatures, GIFBS_IsBE,
    7276             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7277             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7278             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7279             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[v8i8] }:$src)  =>  (VREV32d8:{ *:[v2i32] } DPR:{ *:[v8i8] }:$src)
    7280             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d8,
    7281             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7282             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7283             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7284             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7285             :       GIR_EraseFromParent, /*InsnID*/0,
    7286             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7287             :       // GIR_Coverage, 2391,
    7288             :       GIR_Done,
    7289             :     // Label 375: @17119
    7290             :     GIM_Try, /*On fail goto*//*Label 376*/ 17157, // Rule ID 2392 //
    7291             :       GIM_CheckFeatures, GIFBS_IsBE,
    7292             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7293             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7294             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7295             :       // (bitconvert:{ *:[v2i32] } DPR:{ *:[f64] }:$src)  =>  (VREV64d32:{ *:[v2i32] } DPR:{ *:[f64] }:$src)
    7296             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7297             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7298             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7299             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7300             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7301             :       GIR_EraseFromParent, /*InsnID*/0,
    7302             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7303             :       // GIR_Coverage, 2392,
    7304             :       GIR_Done,
    7305             :     // Label 376: @17157
    7306             :     GIM_Try, /*On fail goto*//*Label 377*/ 17195, // Rule ID 2408 //
    7307             :       GIM_CheckFeatures, GIFBS_IsBE,
    7308             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7309             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7310             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7311             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[f64] }:$src)  =>  (VREV64d32:{ *:[v2f32] } DPR:{ *:[f64] }:$src)
    7312             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7313             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7314             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7315             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7316             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7317             :       GIR_EraseFromParent, /*InsnID*/0,
    7318             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7319             :       // GIR_Coverage, 2408,
    7320             :       GIR_Done,
    7321             :     // Label 377: @17195
    7322             :     GIM_Try, /*On fail goto*//*Label 378*/ 17233, // Rule ID 2409 //
    7323             :       GIM_CheckFeatures, GIFBS_IsBE,
    7324             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7325             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7326             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7327             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v1i64] }:$src)  =>  (VREV64d32:{ *:[v2f32] } DPR:{ *:[v1i64] }:$src)
    7328             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d32,
    7329             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7330             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7331             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7332             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7333             :       GIR_EraseFromParent, /*InsnID*/0,
    7334             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7335             :       // GIR_Coverage, 2409,
    7336             :       GIR_Done,
    7337             :     // Label 378: @17233
    7338             :     GIM_Try, /*On fail goto*//*Label 379*/ 17271, // Rule ID 2410 //
    7339             :       GIM_CheckFeatures, GIFBS_IsBE,
    7340             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    7341             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7342             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7343             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v4i16] }:$src)  =>  (VREV32d16:{ *:[v2f32] } DPR:{ *:[v4i16] }:$src)
    7344             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d16,
    7345             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7346             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7347             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7348             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7349             :       GIR_EraseFromParent, /*InsnID*/0,
    7350             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7351             :       // GIR_Coverage, 2410,
    7352             :       GIR_Done,
    7353             :     // Label 379: @17271
    7354             :     GIM_Try, /*On fail goto*//*Label 380*/ 17309, // Rule ID 2411 //
    7355             :       GIM_CheckFeatures, GIFBS_IsBE,
    7356             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7357             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7358             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7359             :       // (bitconvert:{ *:[v2f32] } DPR:{ *:[v8i8] }:$src)  =>  (VREV32d8:{ *:[v2f32] } DPR:{ *:[v8i8] }:$src)
    7360             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d8,
    7361             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7362             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7363             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7364             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7365             :       GIR_EraseFromParent, /*InsnID*/0,
    7366             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7367             :       // GIR_Coverage, 2411,
    7368             :       GIR_Done,
    7369             :     // Label 380: @17309
    7370             :     GIM_Reject,
    7371             :     // Label 333: @17310
    7372             :     GIM_Try, /*On fail goto*//*Label 381*/ 17344, // Rule ID 2353 //
    7373             :       GIM_CheckFeatures, GIFBS_IsLE,
    7374             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7375             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7376             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7377             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v4i32] }:$src)  =>  QPR:{ *:[v2i64] }:$src
    7378             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7379             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7380             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7381             :       GIR_EraseFromParent, /*InsnID*/0,
    7382             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7383             :       // GIR_Coverage, 2353,
    7384             :       GIR_Done,
    7385             :     // Label 381: @17344
    7386             :     GIM_Try, /*On fail goto*//*Label 382*/ 17378, // Rule ID 2354 //
    7387             :       GIM_CheckFeatures, GIFBS_IsLE,
    7388             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7389             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7390             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7391             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v8i16] }:$src)  =>  QPR:{ *:[v2i64] }:$src
    7392             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7393             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7394             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7395             :       GIR_EraseFromParent, /*InsnID*/0,
    7396             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7397             :       // GIR_Coverage, 2354,
    7398             :       GIR_Done,
    7399             :     // Label 382: @17378
    7400             :     GIM_Try, /*On fail goto*//*Label 383*/ 17412, // Rule ID 2355 //
    7401             :       GIM_CheckFeatures, GIFBS_IsLE,
    7402             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    7403             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7404             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7405             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v16i8] }:$src)  =>  QPR:{ *:[v2i64] }:$src
    7406             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7407             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7408             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7409             :       GIR_EraseFromParent, /*InsnID*/0,
    7410             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7411             :       // GIR_Coverage, 2355,
    7412             :       GIR_Done,
    7413             :     // Label 383: @17412
    7414             :     GIM_Try, /*On fail goto*//*Label 384*/ 17444, // Rule ID 2356 //
    7415             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7416             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7417             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7418             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v2f64] }:$src)  =>  QPR:{ *:[v2i64] }:$src
    7419             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7420             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7421             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7422             :       GIR_EraseFromParent, /*InsnID*/0,
    7423             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7424             :       // GIR_Coverage, 2356,
    7425             :       GIR_Done,
    7426             :     // Label 384: @17444
    7427             :     GIM_Try, /*On fail goto*//*Label 385*/ 17478, // Rule ID 2357 //
    7428             :       GIM_CheckFeatures, GIFBS_IsLE,
    7429             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7430             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7431             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7432             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v4f32] }:$src)  =>  QPR:{ *:[v2i64] }:$src
    7433             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7434             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7435             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7436             :       GIR_EraseFromParent, /*InsnID*/0,
    7437             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7438             :       // GIR_Coverage, 2357,
    7439             :       GIR_Done,
    7440             :     // Label 385: @17478
    7441             :     GIM_Try, /*On fail goto*//*Label 386*/ 17510, // Rule ID 2379 //
    7442             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7443             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7444             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7445             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v2i64] }:$src)  =>  QPR:{ *:[v2f64] }:$src
    7446             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7447             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7448             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7449             :       GIR_EraseFromParent, /*InsnID*/0,
    7450             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7451             :       // GIR_Coverage, 2379,
    7452             :       GIR_Done,
    7453             :     // Label 386: @17510
    7454             :     GIM_Try, /*On fail goto*//*Label 387*/ 17544, // Rule ID 2380 //
    7455             :       GIM_CheckFeatures, GIFBS_IsLE,
    7456             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7457             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7458             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7459             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v4i32] }:$src)  =>  QPR:{ *:[v2f64] }:$src
    7460             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7461             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7462             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7463             :       GIR_EraseFromParent, /*InsnID*/0,
    7464             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7465             :       // GIR_Coverage, 2380,
    7466             :       GIR_Done,
    7467             :     // Label 387: @17544
    7468             :     GIM_Try, /*On fail goto*//*Label 388*/ 17578, // Rule ID 2381 //
    7469             :       GIM_CheckFeatures, GIFBS_IsLE,
    7470             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7471             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7472             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7473             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v8i16] }:$src)  =>  QPR:{ *:[v2f64] }:$src
    7474             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7475             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7476             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7477             :       GIR_EraseFromParent, /*InsnID*/0,
    7478             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7479             :       // GIR_Coverage, 2381,
    7480             :       GIR_Done,
    7481             :     // Label 388: @17578
    7482             :     GIM_Try, /*On fail goto*//*Label 389*/ 17612, // Rule ID 2382 //
    7483             :       GIM_CheckFeatures, GIFBS_IsLE,
    7484             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7485             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7486             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7487             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v8f16] }:$src)  =>  QPR:{ *:[v2f64] }:$src
    7488             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7489             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7490             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7491             :       GIR_EraseFromParent, /*InsnID*/0,
    7492             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7493             :       // GIR_Coverage, 2382,
    7494             :       GIR_Done,
    7495             :     // Label 389: @17612
    7496             :     GIM_Try, /*On fail goto*//*Label 390*/ 17646, // Rule ID 2383 //
    7497             :       GIM_CheckFeatures, GIFBS_IsLE,
    7498             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    7499             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7500             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7501             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v16i8] }:$src)  =>  QPR:{ *:[v2f64] }:$src
    7502             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7503             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7504             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7505             :       GIR_EraseFromParent, /*InsnID*/0,
    7506             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7507             :       // GIR_Coverage, 2383,
    7508             :       GIR_Done,
    7509             :     // Label 390: @17646
    7510             :     GIM_Try, /*On fail goto*//*Label 391*/ 17680, // Rule ID 2384 //
    7511             :       GIM_CheckFeatures, GIFBS_IsLE,
    7512             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7513             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7514             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7515             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v4f32] }:$src)  =>  QPR:{ *:[v2f64] }:$src
    7516             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7517             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7518             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7519             :       GIR_EraseFromParent, /*InsnID*/0,
    7520             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7521             :       // GIR_Coverage, 2384,
    7522             :       GIR_Done,
    7523             :     // Label 391: @17680
    7524             :     GIM_Try, /*On fail goto*//*Label 392*/ 17718, // Rule ID 2412 //
    7525             :       GIM_CheckFeatures, GIFBS_IsBE,
    7526             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7527             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7528             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7529             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v4i32] }:$src)  =>  (VREV64q32:{ *:[v2i64] } QPR:{ *:[v4i32] }:$src)
    7530             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    7531             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7532             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7533             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7534             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7535             :       GIR_EraseFromParent, /*InsnID*/0,
    7536             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7537             :       // GIR_Coverage, 2412,
    7538             :       GIR_Done,
    7539             :     // Label 392: @17718
    7540             :     GIM_Try, /*On fail goto*//*Label 393*/ 17756, // Rule ID 2413 //
    7541             :       GIM_CheckFeatures, GIFBS_IsBE,
    7542             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7543             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7544             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7545             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v8i16] }:$src)  =>  (VREV64q16:{ *:[v2i64] } QPR:{ *:[v8i16] }:$src)
    7546             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q16,
    7547             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7548             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7549             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7550             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7551             :       GIR_EraseFromParent, /*InsnID*/0,
    7552             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7553             :       // GIR_Coverage, 2413,
    7554             :       GIR_Done,
    7555             :     // Label 393: @17756
    7556             :     GIM_Try, /*On fail goto*//*Label 394*/ 17794, // Rule ID 2414 //
    7557             :       GIM_CheckFeatures, GIFBS_IsBE,
    7558             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    7559             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7560             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7561             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v16i8] }:$src)  =>  (VREV64q8:{ *:[v2i64] } QPR:{ *:[v16i8] }:$src)
    7562             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q8,
    7563             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7564             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7565             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7566             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7567             :       GIR_EraseFromParent, /*InsnID*/0,
    7568             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7569             :       // GIR_Coverage, 2414,
    7570             :       GIR_Done,
    7571             :     // Label 394: @17794
    7572             :     GIM_Try, /*On fail goto*//*Label 395*/ 17832, // Rule ID 2415 //
    7573             :       GIM_CheckFeatures, GIFBS_IsBE,
    7574             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7575             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7576             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7577             :       // (bitconvert:{ *:[v2i64] } QPR:{ *:[v4f32] }:$src)  =>  (VREV64q32:{ *:[v2i64] } QPR:{ *:[v4f32] }:$src)
    7578             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    7579             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7580             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7581             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7582             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7583             :       GIR_EraseFromParent, /*InsnID*/0,
    7584             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7585             :       // GIR_Coverage, 2415,
    7586             :       GIR_Done,
    7587             :     // Label 395: @17832
    7588             :     GIM_Try, /*On fail goto*//*Label 396*/ 17870, // Rule ID 2436 //
    7589             :       GIM_CheckFeatures, GIFBS_IsBE,
    7590             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7591             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7592             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7593             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v4i32] }:$src)  =>  (VREV64q32:{ *:[v2f64] } QPR:{ *:[v4i32] }:$src)
    7594             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    7595             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7596             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7597             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7598             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7599             :       GIR_EraseFromParent, /*InsnID*/0,
    7600             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7601             :       // GIR_Coverage, 2436,
    7602             :       GIR_Done,
    7603             :     // Label 396: @17870
    7604             :     GIM_Try, /*On fail goto*//*Label 397*/ 17908, // Rule ID 2437 //
    7605             :       GIM_CheckFeatures, GIFBS_IsBE,
    7606             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7607             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7608             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7609             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v8i16] }:$src)  =>  (VREV64q16:{ *:[v2f64] } QPR:{ *:[v8i16] }:$src)
    7610             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q16,
    7611             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7612             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7613             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7614             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7615             :       GIR_EraseFromParent, /*InsnID*/0,
    7616             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7617             :       // GIR_Coverage, 2437,
    7618             :       GIR_Done,
    7619             :     // Label 397: @17908
    7620             :     GIM_Try, /*On fail goto*//*Label 398*/ 17946, // Rule ID 2438 //
    7621             :       GIM_CheckFeatures, GIFBS_IsBE,
    7622             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7623             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7624             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7625             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v8f16] }:$src)  =>  (VREV64q16:{ *:[v2f64] } QPR:{ *:[v8f16] }:$src)
    7626             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q16,
    7627             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7628             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7629             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7630             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7631             :       GIR_EraseFromParent, /*InsnID*/0,
    7632             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7633             :       // GIR_Coverage, 2438,
    7634             :       GIR_Done,
    7635             :     // Label 398: @17946
    7636             :     GIM_Try, /*On fail goto*//*Label 399*/ 17984, // Rule ID 2439 //
    7637             :       GIM_CheckFeatures, GIFBS_IsBE,
    7638             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    7639             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7640             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7641             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v16i8] }:$src)  =>  (VREV64q8:{ *:[v2f64] } QPR:{ *:[v16i8] }:$src)
    7642             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q8,
    7643             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7644             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7645             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7646             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7647             :       GIR_EraseFromParent, /*InsnID*/0,
    7648             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7649             :       // GIR_Coverage, 2439,
    7650             :       GIR_Done,
    7651             :     // Label 399: @17984
    7652             :     GIM_Try, /*On fail goto*//*Label 400*/ 18022, // Rule ID 2440 //
    7653             :       GIM_CheckFeatures, GIFBS_IsBE,
    7654             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7655             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7656             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7657             :       // (bitconvert:{ *:[v2f64] } QPR:{ *:[v4f32] }:$src)  =>  (VREV64q32:{ *:[v2f64] } QPR:{ *:[v4f32] }:$src)
    7658             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    7659             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7660             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7661             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7662             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7663             :       GIR_EraseFromParent, /*InsnID*/0,
    7664             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7665             :       // GIR_Coverage, 2440,
    7666             :       GIR_Done,
    7667             :     // Label 400: @18022
    7668             :     GIM_Reject,
    7669             :     // Label 334: @18023
    7670             :     GIM_Try, /*On fail goto*//*Label 401*/ 18057, // Rule ID 2331 //
    7671             :       GIM_CheckFeatures, GIFBS_IsLE,
    7672             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7673             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7674             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7675             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v1i64] }:$src)  =>  DPR:{ *:[v4i16] }:$src
    7676             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7677             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7678             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7679             :       GIR_EraseFromParent, /*InsnID*/0,
    7680             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7681             :       // GIR_Coverage, 2331,
    7682             :       GIR_Done,
    7683             :     // Label 401: @18057
    7684             :     GIM_Try, /*On fail goto*//*Label 402*/ 18091, // Rule ID 2332 //
    7685             :       GIM_CheckFeatures, GIFBS_IsLE,
    7686             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7687             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7688             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7689             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v2i32] }:$src)  =>  DPR:{ *:[v4i16] }:$src
    7690             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7691             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7692             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7693             :       GIR_EraseFromParent, /*InsnID*/0,
    7694             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7695             :       // GIR_Coverage, 2332,
    7696             :       GIR_Done,
    7697             :     // Label 402: @18091
    7698             :     GIM_Try, /*On fail goto*//*Label 403*/ 18125, // Rule ID 2333 //
    7699             :       GIM_CheckFeatures, GIFBS_IsLE,
    7700             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7701             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7702             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7703             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v8i8] }:$src)  =>  DPR:{ *:[v4i16] }:$src
    7704             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7705             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7706             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7707             :       GIR_EraseFromParent, /*InsnID*/0,
    7708             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7709             :       // GIR_Coverage, 2333,
    7710             :       GIR_Done,
    7711             :     // Label 403: @18125
    7712             :     GIM_Try, /*On fail goto*//*Label 404*/ 18159, // Rule ID 2334 //
    7713             :       GIM_CheckFeatures, GIFBS_IsLE,
    7714             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7715             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7716             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7717             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[f64] }:$src)  =>  DPR:{ *:[v4i16] }:$src
    7718             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7719             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7720             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7721             :       GIR_EraseFromParent, /*InsnID*/0,
    7722             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7723             :       // GIR_Coverage, 2334,
    7724             :       GIR_Done,
    7725             :     // Label 404: @18159
    7726             :     GIM_Try, /*On fail goto*//*Label 405*/ 18193, // Rule ID 2335 //
    7727             :       GIM_CheckFeatures, GIFBS_IsLE,
    7728             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7729             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7730             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7731             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v2f32] }:$src)  =>  DPR:{ *:[v4i16] }:$src
    7732             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7733             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7734             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7735             :       GIR_EraseFromParent, /*InsnID*/0,
    7736             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7737             :       // GIR_Coverage, 2335,
    7738             :       GIR_Done,
    7739             :     // Label 405: @18193
    7740             :     GIM_Try, /*On fail goto*//*Label 406*/ 18227, // Rule ID 2348 //
    7741             :       GIM_CheckFeatures, GIFBS_IsLE,
    7742             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7743             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7744             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7745             :       // (bitconvert:{ *:[v4f16] } DPR:{ *:[f64] }:$src)  =>  DPR:{ *:[v4f16] }:$src
    7746             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7747             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7748             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7749             :       GIR_EraseFromParent, /*InsnID*/0,
    7750             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    7751             :       // GIR_Coverage, 2348,
    7752             :       GIR_Done,
    7753             :     // Label 406: @18227
    7754             :     GIM_Try, /*On fail goto*//*Label 407*/ 18265, // Rule ID 2393 //
    7755             :       GIM_CheckFeatures, GIFBS_IsBE,
    7756             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7757             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7758             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7759             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v1i64] }:$src)  =>  (VREV64d16:{ *:[v4i16] } DPR:{ *:[v1i64] }:$src)
    7760             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d16,
    7761             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7762             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7763             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7764             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7765             :       GIR_EraseFromParent, /*InsnID*/0,
    7766             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7767             :       // GIR_Coverage, 2393,
    7768             :       GIR_Done,
    7769             :     // Label 407: @18265
    7770             :     GIM_Try, /*On fail goto*//*Label 408*/ 18303, // Rule ID 2394 //
    7771             :       GIM_CheckFeatures, GIFBS_IsBE,
    7772             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7773             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7774             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7775             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v2i32] }:$src)  =>  (VREV32d16:{ *:[v4i16] } DPR:{ *:[v2i32] }:$src)
    7776             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d16,
    7777             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7778             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7779             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7780             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7781             :       GIR_EraseFromParent, /*InsnID*/0,
    7782             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7783             :       // GIR_Coverage, 2394,
    7784             :       GIR_Done,
    7785             :     // Label 408: @18303
    7786             :     GIM_Try, /*On fail goto*//*Label 409*/ 18341, // Rule ID 2395 //
    7787             :       GIM_CheckFeatures, GIFBS_IsBE,
    7788             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s8,
    7789             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7790             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7791             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v8i8] }:$src)  =>  (VREV16d8:{ *:[v4i16] } DPR:{ *:[v8i8] }:$src)
    7792             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV16d8,
    7793             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7794             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7795             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7796             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7797             :       GIR_EraseFromParent, /*InsnID*/0,
    7798             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7799             :       // GIR_Coverage, 2395,
    7800             :       GIR_Done,
    7801             :     // Label 409: @18341
    7802             :     GIM_Try, /*On fail goto*//*Label 410*/ 18379, // Rule ID 2396 //
    7803             :       GIM_CheckFeatures, GIFBS_IsBE,
    7804             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    7805             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7806             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7807             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[f64] }:$src)  =>  (VREV64d16:{ *:[v4i16] } DPR:{ *:[f64] }:$src)
    7808             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d16,
    7809             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7810             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7811             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7812             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7813             :       GIR_EraseFromParent, /*InsnID*/0,
    7814             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7815             :       // GIR_Coverage, 2396,
    7816             :       GIR_Done,
    7817             :     // Label 410: @18379
    7818             :     GIM_Try, /*On fail goto*//*Label 411*/ 18417, // Rule ID 2397 //
    7819             :       GIM_CheckFeatures, GIFBS_IsBE,
    7820             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    7821             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    7822             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    7823             :       // (bitconvert:{ *:[v4i16] } DPR:{ *:[v2f32] }:$src)  =>  (VREV32d16:{ *:[v4i16] } DPR:{ *:[v2f32] }:$src)
    7824             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d16,
    7825             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7826             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7827             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7828             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7829             :       GIR_EraseFromParent, /*InsnID*/0,
    7830             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7831             :       // GIR_Coverage, 2397,
    7832             :       GIR_Done,
    7833             :     // Label 411: @18417
    7834             :     GIM_Reject,
    7835             :     // Label 335: @18418
    7836             :     GIM_Try, /*On fail goto*//*Label 412*/ 18452, // Rule ID 2358 //
    7837             :       GIM_CheckFeatures, GIFBS_IsLE,
    7838             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7839             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7840             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7841             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v2i64] }:$src)  =>  QPR:{ *:[v4i32] }:$src
    7842             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7843             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7844             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7845             :       GIR_EraseFromParent, /*InsnID*/0,
    7846             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7847             :       // GIR_Coverage, 2358,
    7848             :       GIR_Done,
    7849             :     // Label 412: @18452
    7850             :     GIM_Try, /*On fail goto*//*Label 413*/ 18486, // Rule ID 2359 //
    7851             :       GIM_CheckFeatures, GIFBS_IsLE,
    7852             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7853             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7854             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7855             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v8i16] }:$src)  =>  QPR:{ *:[v4i32] }:$src
    7856             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7857             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7858             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7859             :       GIR_EraseFromParent, /*InsnID*/0,
    7860             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7861             :       // GIR_Coverage, 2359,
    7862             :       GIR_Done,
    7863             :     // Label 413: @18486
    7864             :     GIM_Try, /*On fail goto*//*Label 414*/ 18520, // Rule ID 2360 //
    7865             :       GIM_CheckFeatures, GIFBS_IsLE,
    7866             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    7867             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7868             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7869             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v16i8] }:$src)  =>  QPR:{ *:[v4i32] }:$src
    7870             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7871             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7872             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7873             :       GIR_EraseFromParent, /*InsnID*/0,
    7874             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7875             :       // GIR_Coverage, 2360,
    7876             :       GIR_Done,
    7877             :     // Label 414: @18520
    7878             :     GIM_Try, /*On fail goto*//*Label 415*/ 18554, // Rule ID 2361 //
    7879             :       GIM_CheckFeatures, GIFBS_IsLE,
    7880             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7881             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7882             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7883             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v2f64] }:$src)  =>  QPR:{ *:[v4i32] }:$src
    7884             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7885             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7886             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7887             :       GIR_EraseFromParent, /*InsnID*/0,
    7888             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7889             :       // GIR_Coverage, 2361,
    7890             :       GIR_Done,
    7891             :     // Label 415: @18554
    7892             :     GIM_Try, /*On fail goto*//*Label 416*/ 18586, // Rule ID 2362 //
    7893             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7894             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7895             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7896             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v4f32] }:$src)  =>  QPR:{ *:[v4i32] }:$src
    7897             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7898             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7899             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7900             :       GIR_EraseFromParent, /*InsnID*/0,
    7901             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7902             :       // GIR_Coverage, 2362,
    7903             :       GIR_Done,
    7904             :     // Label 416: @18586
    7905             :     GIM_Try, /*On fail goto*//*Label 417*/ 18620, // Rule ID 2374 //
    7906             :       GIM_CheckFeatures, GIFBS_IsLE,
    7907             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7908             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7909             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7910             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v2i64] }:$src)  =>  QPR:{ *:[v4f32] }:$src
    7911             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7912             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7913             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7914             :       GIR_EraseFromParent, /*InsnID*/0,
    7915             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7916             :       // GIR_Coverage, 2374,
    7917             :       GIR_Done,
    7918             :     // Label 417: @18620
    7919             :     GIM_Try, /*On fail goto*//*Label 418*/ 18652, // Rule ID 2375 //
    7920             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    7921             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7922             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7923             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v4i32] }:$src)  =>  QPR:{ *:[v4f32] }:$src
    7924             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7925             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7926             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7927             :       GIR_EraseFromParent, /*InsnID*/0,
    7928             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7929             :       // GIR_Coverage, 2375,
    7930             :       GIR_Done,
    7931             :     // Label 418: @18652
    7932             :     GIM_Try, /*On fail goto*//*Label 419*/ 18686, // Rule ID 2376 //
    7933             :       GIM_CheckFeatures, GIFBS_IsLE,
    7934             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7935             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7936             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7937             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v8i16] }:$src)  =>  QPR:{ *:[v4f32] }:$src
    7938             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7939             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7940             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7941             :       GIR_EraseFromParent, /*InsnID*/0,
    7942             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7943             :       // GIR_Coverage, 2376,
    7944             :       GIR_Done,
    7945             :     // Label 419: @18686
    7946             :     GIM_Try, /*On fail goto*//*Label 420*/ 18720, // Rule ID 2377 //
    7947             :       GIM_CheckFeatures, GIFBS_IsLE,
    7948             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    7949             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7950             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7951             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v16i8] }:$src)  =>  QPR:{ *:[v4f32] }:$src
    7952             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7953             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7954             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7955             :       GIR_EraseFromParent, /*InsnID*/0,
    7956             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7957             :       // GIR_Coverage, 2377,
    7958             :       GIR_Done,
    7959             :     // Label 420: @18720
    7960             :     GIM_Try, /*On fail goto*//*Label 421*/ 18754, // Rule ID 2378 //
    7961             :       GIM_CheckFeatures, GIFBS_IsLE,
    7962             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7963             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7964             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7965             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v2f64] }:$src)  =>  QPR:{ *:[v4f32] }:$src
    7966             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    7967             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    7968             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7969             :       GIR_EraseFromParent, /*InsnID*/0,
    7970             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    7971             :       // GIR_Coverage, 2378,
    7972             :       GIR_Done,
    7973             :     // Label 421: @18754
    7974             :     GIM_Try, /*On fail goto*//*Label 422*/ 18792, // Rule ID 2416 //
    7975             :       GIM_CheckFeatures, GIFBS_IsBE,
    7976             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    7977             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7978             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7979             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v2i64] }:$src)  =>  (VREV64q32:{ *:[v4i32] } QPR:{ *:[v2i64] }:$src)
    7980             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    7981             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7982             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7983             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    7984             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    7985             :       GIR_EraseFromParent, /*InsnID*/0,
    7986             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    7987             :       // GIR_Coverage, 2416,
    7988             :       GIR_Done,
    7989             :     // Label 422: @18792
    7990             :     GIM_Try, /*On fail goto*//*Label 423*/ 18830, // Rule ID 2417 //
    7991             :       GIM_CheckFeatures, GIFBS_IsBE,
    7992             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    7993             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    7994             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    7995             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v8i16] }:$src)  =>  (VREV32q16:{ *:[v4i32] } QPR:{ *:[v8i16] }:$src)
    7996             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q16,
    7997             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    7998             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    7999             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8000             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8001             :       GIR_EraseFromParent, /*InsnID*/0,
    8002             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8003             :       // GIR_Coverage, 2417,
    8004             :       GIR_Done,
    8005             :     // Label 423: @18830
    8006             :     GIM_Try, /*On fail goto*//*Label 424*/ 18868, // Rule ID 2418 //
    8007             :       GIM_CheckFeatures, GIFBS_IsBE,
    8008             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    8009             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8010             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8011             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v16i8] }:$src)  =>  (VREV32q8:{ *:[v4i32] } QPR:{ *:[v16i8] }:$src)
    8012             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q8,
    8013             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8014             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8015             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8016             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8017             :       GIR_EraseFromParent, /*InsnID*/0,
    8018             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8019             :       // GIR_Coverage, 2418,
    8020             :       GIR_Done,
    8021             :     // Label 424: @18868
    8022             :     GIM_Try, /*On fail goto*//*Label 425*/ 18906, // Rule ID 2419 //
    8023             :       GIM_CheckFeatures, GIFBS_IsBE,
    8024             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8025             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8026             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8027             :       // (bitconvert:{ *:[v4i32] } QPR:{ *:[v2f64] }:$src)  =>  (VREV64q32:{ *:[v4i32] } QPR:{ *:[v2f64] }:$src)
    8028             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    8029             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8030             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8031             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8032             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8033             :       GIR_EraseFromParent, /*InsnID*/0,
    8034             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8035             :       // GIR_Coverage, 2419,
    8036             :       GIR_Done,
    8037             :     // Label 425: @18906
    8038             :     GIM_Try, /*On fail goto*//*Label 426*/ 18944, // Rule ID 2431 //
    8039             :       GIM_CheckFeatures, GIFBS_IsBE,
    8040             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8041             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8042             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8043             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v2i64] }:$src)  =>  (VREV64q32:{ *:[v4f32] } QPR:{ *:[v2i64] }:$src)
    8044             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    8045             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8046             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8047             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8048             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8049             :       GIR_EraseFromParent, /*InsnID*/0,
    8050             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8051             :       // GIR_Coverage, 2431,
    8052             :       GIR_Done,
    8053             :     // Label 426: @18944
    8054             :     GIM_Try, /*On fail goto*//*Label 427*/ 18982, // Rule ID 2432 //
    8055             :       GIM_CheckFeatures, GIFBS_IsBE,
    8056             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    8057             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8058             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8059             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v8i16] }:$src)  =>  (VREV32q16:{ *:[v4f32] } QPR:{ *:[v8i16] }:$src)
    8060             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q16,
    8061             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8062             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8063             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8064             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8065             :       GIR_EraseFromParent, /*InsnID*/0,
    8066             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8067             :       // GIR_Coverage, 2432,
    8068             :       GIR_Done,
    8069             :     // Label 427: @18982
    8070             :     GIM_Try, /*On fail goto*//*Label 428*/ 19020, // Rule ID 2433 //
    8071             :       GIM_CheckFeatures, GIFBS_IsBE,
    8072             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    8073             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8074             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8075             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v8f16] }:$src)  =>  (VREV32q16:{ *:[v4f32] } QPR:{ *:[v8f16] }:$src)
    8076             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q16,
    8077             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8078             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8079             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8080             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8081             :       GIR_EraseFromParent, /*InsnID*/0,
    8082             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8083             :       // GIR_Coverage, 2433,
    8084             :       GIR_Done,
    8085             :     // Label 428: @19020
    8086             :     GIM_Try, /*On fail goto*//*Label 429*/ 19058, // Rule ID 2434 //
    8087             :       GIM_CheckFeatures, GIFBS_IsBE,
    8088             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    8089             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8090             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8091             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v16i8] }:$src)  =>  (VREV32q8:{ *:[v4f32] } QPR:{ *:[v16i8] }:$src)
    8092             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q8,
    8093             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8094             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8095             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8096             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8097             :       GIR_EraseFromParent, /*InsnID*/0,
    8098             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8099             :       // GIR_Coverage, 2434,
    8100             :       GIR_Done,
    8101             :     // Label 429: @19058
    8102             :     GIM_Try, /*On fail goto*//*Label 430*/ 19096, // Rule ID 2435 //
    8103             :       GIM_CheckFeatures, GIFBS_IsBE,
    8104             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8105             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8106             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8107             :       // (bitconvert:{ *:[v4f32] } QPR:{ *:[v2f64] }:$src)  =>  (VREV64q32:{ *:[v4f32] } QPR:{ *:[v2f64] }:$src)
    8108             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q32,
    8109             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8110             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8111             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8112             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8113             :       GIR_EraseFromParent, /*InsnID*/0,
    8114             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8115             :       // GIR_Coverage, 2435,
    8116             :       GIR_Done,
    8117             :     // Label 430: @19096
    8118             :     GIM_Reject,
    8119             :     // Label 336: @19097
    8120             :     GIM_Try, /*On fail goto*//*Label 431*/ 19131, // Rule ID 2336 //
    8121             :       GIM_CheckFeatures, GIFBS_IsLE,
    8122             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    8123             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8124             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8125             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v1i64] }:$src)  =>  DPR:{ *:[v8i8] }:$src
    8126             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8127             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8128             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8129             :       GIR_EraseFromParent, /*InsnID*/0,
    8130             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    8131             :       // GIR_Coverage, 2336,
    8132             :       GIR_Done,
    8133             :     // Label 431: @19131
    8134             :     GIM_Try, /*On fail goto*//*Label 432*/ 19165, // Rule ID 2337 //
    8135             :       GIM_CheckFeatures, GIFBS_IsLE,
    8136             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    8137             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8138             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8139             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v2i32] }:$src)  =>  DPR:{ *:[v8i8] }:$src
    8140             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8141             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8142             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8143             :       GIR_EraseFromParent, /*InsnID*/0,
    8144             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    8145             :       // GIR_Coverage, 2337,
    8146             :       GIR_Done,
    8147             :     // Label 432: @19165
    8148             :     GIM_Try, /*On fail goto*//*Label 433*/ 19199, // Rule ID 2338 //
    8149             :       GIM_CheckFeatures, GIFBS_IsLE,
    8150             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    8151             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8152             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8153             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v4i16] }:$src)  =>  DPR:{ *:[v8i8] }:$src
    8154             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8155             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8156             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8157             :       GIR_EraseFromParent, /*InsnID*/0,
    8158             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    8159             :       // GIR_Coverage, 2338,
    8160             :       GIR_Done,
    8161             :     // Label 433: @19199
    8162             :     GIM_Try, /*On fail goto*//*Label 434*/ 19233, // Rule ID 2339 //
    8163             :       GIM_CheckFeatures, GIFBS_IsLE,
    8164             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    8165             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8166             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8167             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[f64] }:$src)  =>  DPR:{ *:[v8i8] }:$src
    8168             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8169             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8170             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8171             :       GIR_EraseFromParent, /*InsnID*/0,
    8172             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    8173             :       // GIR_Coverage, 2339,
    8174             :       GIR_Done,
    8175             :     // Label 434: @19233
    8176             :     GIM_Try, /*On fail goto*//*Label 435*/ 19267, // Rule ID 2340 //
    8177             :       GIM_CheckFeatures, GIFBS_IsLE,
    8178             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    8179             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8180             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8181             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v2f32] }:$src)  =>  DPR:{ *:[v8i8] }:$src
    8182             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8183             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8184             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8185             :       GIR_EraseFromParent, /*InsnID*/0,
    8186             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC DPR*/18,
    8187             :       // GIR_Coverage, 2340,
    8188             :       GIR_Done,
    8189             :     // Label 435: @19267
    8190             :     GIM_Try, /*On fail goto*//*Label 436*/ 19305, // Rule ID 2398 //
    8191             :       GIM_CheckFeatures, GIFBS_IsBE,
    8192             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    8193             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8194             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8195             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v1i64] }:$src)  =>  (VREV64d8:{ *:[v8i8] } DPR:{ *:[v1i64] }:$src)
    8196             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d8,
    8197             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8198             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8199             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8200             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8201             :       GIR_EraseFromParent, /*InsnID*/0,
    8202             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8203             :       // GIR_Coverage, 2398,
    8204             :       GIR_Done,
    8205             :     // Label 436: @19305
    8206             :     GIM_Try, /*On fail goto*//*Label 437*/ 19343, // Rule ID 2399 //
    8207             :       GIM_CheckFeatures, GIFBS_IsBE,
    8208             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    8209             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8210             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8211             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v2i32] }:$src)  =>  (VREV32d8:{ *:[v8i8] } DPR:{ *:[v2i32] }:$src)
    8212             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d8,
    8213             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8214             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8215             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8216             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8217             :       GIR_EraseFromParent, /*InsnID*/0,
    8218             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8219             :       // GIR_Coverage, 2399,
    8220             :       GIR_Done,
    8221             :     // Label 437: @19343
    8222             :     GIM_Try, /*On fail goto*//*Label 438*/ 19381, // Rule ID 2400 //
    8223             :       GIM_CheckFeatures, GIFBS_IsBE,
    8224             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s16,
    8225             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8226             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8227             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v4i16] }:$src)  =>  (VREV16d8:{ *:[v8i8] } DPR:{ *:[v4i16] }:$src)
    8228             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV16d8,
    8229             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8230             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8231             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8232             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8233             :       GIR_EraseFromParent, /*InsnID*/0,
    8234             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8235             :       // GIR_Coverage, 2400,
    8236             :       GIR_Done,
    8237             :     // Label 438: @19381
    8238             :     GIM_Try, /*On fail goto*//*Label 439*/ 19419, // Rule ID 2401 //
    8239             :       GIM_CheckFeatures, GIFBS_IsBE,
    8240             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
    8241             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8242             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8243             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[f64] }:$src)  =>  (VREV64d8:{ *:[v8i8] } DPR:{ *:[f64] }:$src)
    8244             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64d8,
    8245             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8246             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8247             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8248             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8249             :       GIR_EraseFromParent, /*InsnID*/0,
    8250             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8251             :       // GIR_Coverage, 2401,
    8252             :       GIR_Done,
    8253             :     // Label 439: @19419
    8254             :     GIM_Try, /*On fail goto*//*Label 440*/ 19457, // Rule ID 2402 //
    8255             :       GIM_CheckFeatures, GIFBS_IsBE,
    8256             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s32,
    8257             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8258             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::DPRRegClassID,
    8259             :       // (bitconvert:{ *:[v8i8] } DPR:{ *:[v2f32] }:$src)  =>  (VREV32d8:{ *:[v8i8] } DPR:{ *:[v2f32] }:$src)
    8260             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32d8,
    8261             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8262             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8263             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8264             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8265             :       GIR_EraseFromParent, /*InsnID*/0,
    8266             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8267             :       // GIR_Coverage, 2402,
    8268             :       GIR_Done,
    8269             :     // Label 440: @19457
    8270             :     GIM_Reject,
    8271             :     // Label 337: @19458
    8272             :     GIM_Try, /*On fail goto*//*Label 441*/ 19492, // Rule ID 2363 //
    8273             :       GIM_CheckFeatures, GIFBS_IsLE,
    8274             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8275             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8276             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8277             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v2i64] }:$src)  =>  QPR:{ *:[v8i16] }:$src
    8278             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8279             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8280             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8281             :       GIR_EraseFromParent, /*InsnID*/0,
    8282             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8283             :       // GIR_Coverage, 2363,
    8284             :       GIR_Done,
    8285             :     // Label 441: @19492
    8286             :     GIM_Try, /*On fail goto*//*Label 442*/ 19526, // Rule ID 2364 //
    8287             :       GIM_CheckFeatures, GIFBS_IsLE,
    8288             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8289             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8290             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8291             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v4i32] }:$src)  =>  QPR:{ *:[v8i16] }:$src
    8292             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8293             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8294             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8295             :       GIR_EraseFromParent, /*InsnID*/0,
    8296             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8297             :       // GIR_Coverage, 2364,
    8298             :       GIR_Done,
    8299             :     // Label 442: @19526
    8300             :     GIM_Try, /*On fail goto*//*Label 443*/ 19560, // Rule ID 2365 //
    8301             :       GIM_CheckFeatures, GIFBS_IsLE,
    8302             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    8303             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8304             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8305             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v16i8] }:$src)  =>  QPR:{ *:[v8i16] }:$src
    8306             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8307             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8308             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8309             :       GIR_EraseFromParent, /*InsnID*/0,
    8310             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8311             :       // GIR_Coverage, 2365,
    8312             :       GIR_Done,
    8313             :     // Label 443: @19560
    8314             :     GIM_Try, /*On fail goto*//*Label 444*/ 19594, // Rule ID 2366 //
    8315             :       GIM_CheckFeatures, GIFBS_IsLE,
    8316             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8317             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8318             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8319             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v2f64] }:$src)  =>  QPR:{ *:[v8i16] }:$src
    8320             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8321             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8322             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8323             :       GIR_EraseFromParent, /*InsnID*/0,
    8324             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8325             :       // GIR_Coverage, 2366,
    8326             :       GIR_Done,
    8327             :     // Label 444: @19594
    8328             :     GIM_Try, /*On fail goto*//*Label 445*/ 19628, // Rule ID 2367 //
    8329             :       GIM_CheckFeatures, GIFBS_IsLE,
    8330             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8331             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8332             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8333             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v4f32] }:$src)  =>  QPR:{ *:[v8i16] }:$src
    8334             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8335             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8336             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8337             :       GIR_EraseFromParent, /*InsnID*/0,
    8338             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8339             :       // GIR_Coverage, 2367,
    8340             :       GIR_Done,
    8341             :     // Label 445: @19628
    8342             :     GIM_Try, /*On fail goto*//*Label 446*/ 19662, // Rule ID 2368 //
    8343             :       GIM_CheckFeatures, GIFBS_IsLE,
    8344             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8345             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8346             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8347             :       // (bitconvert:{ *:[v8f16] } QPR:{ *:[v2f64] }:$src)  =>  QPR:{ *:[v8f16] }:$src
    8348             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8349             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8350             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8351             :       GIR_EraseFromParent, /*InsnID*/0,
    8352             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8353             :       // GIR_Coverage, 2368,
    8354             :       GIR_Done,
    8355             :     // Label 446: @19662
    8356             :     GIM_Try, /*On fail goto*//*Label 447*/ 19700, // Rule ID 2420 //
    8357             :       GIM_CheckFeatures, GIFBS_IsBE,
    8358             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8359             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8360             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8361             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v2i64] }:$src)  =>  (VREV64q16:{ *:[v8i16] } QPR:{ *:[v2i64] }:$src)
    8362             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q16,
    8363             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8364             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8365             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8366             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8367             :       GIR_EraseFromParent, /*InsnID*/0,
    8368             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8369             :       // GIR_Coverage, 2420,
    8370             :       GIR_Done,
    8371             :     // Label 447: @19700
    8372             :     GIM_Try, /*On fail goto*//*Label 448*/ 19738, // Rule ID 2421 //
    8373             :       GIM_CheckFeatures, GIFBS_IsBE,
    8374             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8375             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8376             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8377             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v4i32] }:$src)  =>  (VREV32q16:{ *:[v8i16] } QPR:{ *:[v4i32] }:$src)
    8378             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q16,
    8379             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8380             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8381             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8382             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8383             :       GIR_EraseFromParent, /*InsnID*/0,
    8384             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8385             :       // GIR_Coverage, 2421,
    8386             :       GIR_Done,
    8387             :     // Label 448: @19738
    8388             :     GIM_Try, /*On fail goto*//*Label 449*/ 19776, // Rule ID 2422 //
    8389             :       GIM_CheckFeatures, GIFBS_IsBE,
    8390             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v16s8,
    8391             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8392             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8393             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v16i8] }:$src)  =>  (VREV16q8:{ *:[v8i16] } QPR:{ *:[v16i8] }:$src)
    8394             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV16q8,
    8395             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8396             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8397             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8398             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8399             :       GIR_EraseFromParent, /*InsnID*/0,
    8400             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8401             :       // GIR_Coverage, 2422,
    8402             :       GIR_Done,
    8403             :     // Label 449: @19776
    8404             :     GIM_Try, /*On fail goto*//*Label 450*/ 19814, // Rule ID 2423 //
    8405             :       GIM_CheckFeatures, GIFBS_IsBE,
    8406             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8407             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8408             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8409             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v2f64] }:$src)  =>  (VREV64q16:{ *:[v8i16] } QPR:{ *:[v2f64] }:$src)
    8410             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q16,
    8411             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8412             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8413             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8414             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8415             :       GIR_EraseFromParent, /*InsnID*/0,
    8416             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8417             :       // GIR_Coverage, 2423,
    8418             :       GIR_Done,
    8419             :     // Label 450: @19814
    8420             :     GIM_Try, /*On fail goto*//*Label 451*/ 19852, // Rule ID 2424 //
    8421             :       GIM_CheckFeatures, GIFBS_IsBE,
    8422             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8423             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8424             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8425             :       // (bitconvert:{ *:[v8f16] } QPR:{ *:[v2f64] }:$src)  =>  (VREV64q16:{ *:[v8f16] } QPR:{ *:[v2f64] }:$src)
    8426             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q16,
    8427             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8428             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8429             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8430             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8431             :       GIR_EraseFromParent, /*InsnID*/0,
    8432             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8433             :       // GIR_Coverage, 2424,
    8434             :       GIR_Done,
    8435             :     // Label 451: @19852
    8436             :     GIM_Try, /*On fail goto*//*Label 452*/ 19890, // Rule ID 2425 //
    8437             :       GIM_CheckFeatures, GIFBS_IsBE,
    8438             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8439             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8440             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8441             :       // (bitconvert:{ *:[v8i16] } QPR:{ *:[v4f32] }:$src)  =>  (VREV32q16:{ *:[v8i16] } QPR:{ *:[v4f32] }:$src)
    8442             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q16,
    8443             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8444             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8445             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8446             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8447             :       GIR_EraseFromParent, /*InsnID*/0,
    8448             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8449             :       // GIR_Coverage, 2425,
    8450             :       GIR_Done,
    8451             :     // Label 452: @19890
    8452             :     GIM_Reject,
    8453             :     // Label 338: @19891
    8454             :     GIM_Try, /*On fail goto*//*Label 453*/ 19925, // Rule ID 2369 //
    8455             :       GIM_CheckFeatures, GIFBS_IsLE,
    8456             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8457             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8458             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8459             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v2i64] }:$src)  =>  QPR:{ *:[v16i8] }:$src
    8460             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8461             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8462             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8463             :       GIR_EraseFromParent, /*InsnID*/0,
    8464             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8465             :       // GIR_Coverage, 2369,
    8466             :       GIR_Done,
    8467             :     // Label 453: @19925
    8468             :     GIM_Try, /*On fail goto*//*Label 454*/ 19959, // Rule ID 2370 //
    8469             :       GIM_CheckFeatures, GIFBS_IsLE,
    8470             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8471             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8472             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8473             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v4i32] }:$src)  =>  QPR:{ *:[v16i8] }:$src
    8474             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8475             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8476             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8477             :       GIR_EraseFromParent, /*InsnID*/0,
    8478             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8479             :       // GIR_Coverage, 2370,
    8480             :       GIR_Done,
    8481             :     // Label 454: @19959
    8482             :     GIM_Try, /*On fail goto*//*Label 455*/ 19993, // Rule ID 2371 //
    8483             :       GIM_CheckFeatures, GIFBS_IsLE,
    8484             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    8485             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8486             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8487             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v8i16] }:$src)  =>  QPR:{ *:[v16i8] }:$src
    8488             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8489             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8490             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8491             :       GIR_EraseFromParent, /*InsnID*/0,
    8492             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8493             :       // GIR_Coverage, 2371,
    8494             :       GIR_Done,
    8495             :     // Label 455: @19993
    8496             :     GIM_Try, /*On fail goto*//*Label 456*/ 20027, // Rule ID 2372 //
    8497             :       GIM_CheckFeatures, GIFBS_IsLE,
    8498             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8499             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8500             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8501             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v2f64] }:$src)  =>  QPR:{ *:[v16i8] }:$src
    8502             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8503             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8504             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8505             :       GIR_EraseFromParent, /*InsnID*/0,
    8506             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8507             :       // GIR_Coverage, 2372,
    8508             :       GIR_Done,
    8509             :     // Label 456: @20027
    8510             :     GIM_Try, /*On fail goto*//*Label 457*/ 20061, // Rule ID 2373 //
    8511             :       GIM_CheckFeatures, GIFBS_IsLE,
    8512             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8513             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8514             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8515             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v4f32] }:$src)  =>  QPR:{ *:[v16i8] }:$src
    8516             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/TargetOpcode::COPY,
    8517             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // dst
    8518             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8519             :       GIR_EraseFromParent, /*InsnID*/0,
    8520             :       GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, /*RC QPR*/36,
    8521             :       // GIR_Coverage, 2373,
    8522             :       GIR_Done,
    8523             :     // Label 457: @20061
    8524             :     GIM_Try, /*On fail goto*//*Label 458*/ 20099, // Rule ID 2426 //
    8525             :       GIM_CheckFeatures, GIFBS_IsBE,
    8526             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8527             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8528             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8529             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v2i64] }:$src)  =>  (VREV64q8:{ *:[v16i8] } QPR:{ *:[v2i64] }:$src)
    8530             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q8,
    8531             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8532             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8533             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8534             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8535             :       GIR_EraseFromParent, /*InsnID*/0,
    8536             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8537             :       // GIR_Coverage, 2426,
    8538             :       GIR_Done,
    8539             :     // Label 458: @20099
    8540             :     GIM_Try, /*On fail goto*//*Label 459*/ 20137, // Rule ID 2427 //
    8541             :       GIM_CheckFeatures, GIFBS_IsBE,
    8542             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8543             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8544             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8545             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v4i32] }:$src)  =>  (VREV32q8:{ *:[v16i8] } QPR:{ *:[v4i32] }:$src)
    8546             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q8,
    8547             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8548             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8549             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8550             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8551             :       GIR_EraseFromParent, /*InsnID*/0,
    8552             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8553             :       // GIR_Coverage, 2427,
    8554             :       GIR_Done,
    8555             :     // Label 459: @20137
    8556             :     GIM_Try, /*On fail goto*//*Label 460*/ 20175, // Rule ID 2428 //
    8557             :       GIM_CheckFeatures, GIFBS_IsBE,
    8558             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v8s16,
    8559             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8560             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8561             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v8i16] }:$src)  =>  (VREV16q8:{ *:[v16i8] } QPR:{ *:[v8i16] }:$src)
    8562             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV16q8,
    8563             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8564             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8565             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8566             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8567             :       GIR_EraseFromParent, /*InsnID*/0,
    8568             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8569             :       // GIR_Coverage, 2428,
    8570             :       GIR_Done,
    8571             :     // Label 460: @20175
    8572             :     GIM_Try, /*On fail goto*//*Label 461*/ 20213, // Rule ID 2429 //
    8573             :       GIM_CheckFeatures, GIFBS_IsBE,
    8574             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v2s64,
    8575             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8576             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8577             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v2f64] }:$src)  =>  (VREV64q8:{ *:[v16i8] } QPR:{ *:[v2f64] }:$src)
    8578             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV64q8,
    8579             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8580             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8581             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8582             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8583             :       GIR_EraseFromParent, /*InsnID*/0,
    8584             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8585             :       // GIR_Coverage, 2429,
    8586             :       GIR_Done,
    8587             :     // Label 461: @20213
    8588             :     GIM_Try, /*On fail goto*//*Label 462*/ 20251, // Rule ID 2430 //
    8589             :       GIM_CheckFeatures, GIFBS_IsBE,
    8590             :       GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_v4s32,
    8591             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8592             :       GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/ARM::QPRRegClassID,
    8593             :       // (bitconvert:{ *:[v16i8] } QPR:{ *:[v4f32] }:$src)  =>  (VREV32q8:{ *:[v16i8] } QPR:{ *:[v4f32] }:$src)
    8594             :       GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VREV32q8,
    8595             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8596             :       GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
    8597             :       GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8598             :       GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8599             :       GIR_EraseFromParent, /*InsnID*/0,
    8600             :       GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8601             :       // GIR_Coverage, 2430,
    8602             :       GIR_Done,
    8603             :     // Label 462: @20251
    8604             :     GIM_Reject,
    8605             :     // Label 339: @20252
    8606             :     GIM_Reject,
    8607             :     // Label 9: @20253
    8608             :     GIM_Try, /*On fail goto*//*Label 463*/ 25477,
    8609             :       GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
    8610             :       GIM_Try, /*On fail goto*//*Label 464*/ 20307, // Rule ID 1708 //
    8611             :         GIM_CheckFeatures, GIFBS_HasV6_IsARM,
    8612             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_uxtb16,
    8613             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8614             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    8615             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::GPRnopcRegClassID,
    8616             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::GPRRegClassID,
    8617             :         // (intrinsic_wo_chain:{ *:[i32] } 1215:{ *:[iPTR] }, GPR:{ *:[i32] }:$Src)  =>  (UXTB16:{ *:[i32] } GPR:{ *:[i32] }:$Src, 0:{ *:[i32] })
    8618             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::UXTB16,
    8619             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    8620             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Src
    8621             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    8622             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8623             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8624             :         GIR_EraseFromParent, /*InsnID*/0,
    8625             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8626             :         // GIR_Coverage, 1708,
    8627             :         GIR_Done,
    8628             :       // Label 464: @20307
    8629             :       GIM_Try, /*On fail goto*//*Label 465*/ 20356, // Rule ID 1908 //
    8630             :         GIM_CheckFeatures, GIFBS_HasDSP_IsThumb2,
    8631             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_uxtb16,
    8632             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8633             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    8634             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::rGPRRegClassID,
    8635             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::rGPRRegClassID,
    8636             :         // (intrinsic_wo_chain:{ *:[i32] } 1215:{ *:[iPTR] }, rGPR:{ *:[i32] }:$Rm)  =>  (t2UXTB16:{ *:[i32] } rGPR:{ *:[i32] }:$Rm, 0:{ *:[i32] })
    8637             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::t2UXTB16,
    8638             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Rd
    8639             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Rm
    8640             :         GIR_AddImm, /*InsnID*/0, /*Imm*/0,
    8641             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8642             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8643             :         GIR_EraseFromParent, /*InsnID*/0,
    8644             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8645             :         // GIR_Coverage, 1908,
    8646             :         GIR_Done,
    8647             :       // Label 465: @20356
    8648             :       GIM_Try, /*On fail goto*//*Label 466*/ 20396, // Rule ID 678 //
    8649             :         GIM_CheckFeatures, GIFBS_HasFPARMv8,
    8650             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrintn,
    8651             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8652             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    8653             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::SPRRegClassID,
    8654             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::SPRRegClassID,
    8655             :         // (intrinsic_wo_chain:{ *:[f32] } 1101:{ *:[iPTR] }, SPR:{ *:[f32] }:$Sm)  =>  (VRINTNS:{ *:[f32] } SPR:{ *:[f32] }:$Sm)
    8656             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRINTNS,
    8657             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Sd
    8658             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Sm
    8659             :         GIR_EraseFromParent, /*InsnID*/0,
    8660             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8661             :         // GIR_Coverage, 678,
    8662             :         GIR_Done,
    8663             :       // Label 466: @20396
    8664             :       GIM_Try, /*On fail goto*//*Label 467*/ 20436, // Rule ID 679 //
    8665             :         GIM_CheckFeatures, GIFBS_HasDPVFP_HasFPARMv8,
    8666             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrintn,
    8667             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
    8668             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
    8669             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8670             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8671             :         // (intrinsic_wo_chain:{ *:[f64] } 1101:{ *:[iPTR] }, DPR:{ *:[f64] }:$Dm)  =>  (VRINTND:{ *:[f64] } DPR:{ *:[f64] }:$Dm)
    8672             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRINTND,
    8673             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Dd
    8674             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Dm
    8675             :         GIR_EraseFromParent, /*InsnID*/0,
    8676             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8677             :         // GIR_Coverage, 679,
    8678             :         GIR_Done,
    8679             :       // Label 467: @20436
    8680             :       GIM_Try, /*On fail goto*//*Label 468*/ 20482, // Rule ID 692 //
    8681             :         GIM_CheckFeatures, GIFBS_HasDPVFP_HasVFP2,
    8682             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_vcvtr,
    8683             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8684             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
    8685             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::SPRRegClassID,
    8686             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8687             :         // (intrinsic_wo_chain:{ *:[f32] } 1216:{ *:[iPTR] }, DPR:{ *:[f64] }:$Dm)  =>  (VTOSIRD:{ *:[f32] } DPR:{ *:[f64] }:$Dm)
    8688             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VTOSIRD,
    8689             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Sd
    8690             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Dm
    8691             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8692             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8693             :         GIR_EraseFromParent, /*InsnID*/0,
    8694             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8695             :         // GIR_Coverage, 692,
    8696             :         GIR_Done,
    8697             :       // Label 468: @20482
    8698             :       GIM_Try, /*On fail goto*//*Label 469*/ 20528, // Rule ID 693 //
    8699             :         GIM_CheckFeatures, GIFBS_DontUseNEONForFP_HasVFP2,
    8700             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_vcvtr,
    8701             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8702             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    8703             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::SPRRegClassID,
    8704             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::SPRRegClassID,
    8705             :         // (intrinsic_wo_chain:{ *:[f32] } 1216:{ *:[iPTR] }, SPR:{ *:[f32] }:$Sm)  =>  (VTOSIRS:{ *:[f32] } SPR:{ *:[f32] }:$Sm)
    8706             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VTOSIRS,
    8707             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Sd
    8708             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Sm
    8709             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8710             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8711             :         GIR_EraseFromParent, /*InsnID*/0,
    8712             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8713             :         // GIR_Coverage, 693,
    8714             :         GIR_Done,
    8715             :       // Label 469: @20528
    8716             :       GIM_Try, /*On fail goto*//*Label 470*/ 20574, // Rule ID 694 //
    8717             :         GIM_CheckFeatures, GIFBS_HasDPVFP_HasVFP2,
    8718             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_vcvtru,
    8719             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8720             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
    8721             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::SPRRegClassID,
    8722             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8723             :         // (intrinsic_wo_chain:{ *:[f32] } 1217:{ *:[iPTR] }, DPR:{ *:[f64] }:$Dm)  =>  (VTOUIRD:{ *:[f32] } DPR:{ *:[f64] }:$Dm)
    8724             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VTOUIRD,
    8725             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Sd
    8726             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Dm
    8727             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8728             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8729             :         GIR_EraseFromParent, /*InsnID*/0,
    8730             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8731             :         // GIR_Coverage, 694,
    8732             :         GIR_Done,
    8733             :       // Label 470: @20574
    8734             :       GIM_Try, /*On fail goto*//*Label 471*/ 20620, // Rule ID 695 //
    8735             :         GIM_CheckFeatures, GIFBS_DontUseNEONForFP_HasVFP2,
    8736             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_vcvtru,
    8737             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
    8738             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
    8739             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::SPRRegClassID,
    8740             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::SPRRegClassID,
    8741             :         // (intrinsic_wo_chain:{ *:[f32] } 1217:{ *:[iPTR] }, SPR:{ *:[f32] }:$Sm)  =>  (VTOUIRS:{ *:[f32] } SPR:{ *:[f32] }:$Sm)
    8742             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VTOUIRS,
    8743             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Sd
    8744             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Sm
    8745             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8746             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8747             :         GIR_EraseFromParent, /*InsnID*/0,
    8748             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8749             :         // GIR_Coverage, 695,
    8750             :         GIR_Done,
    8751             :       // Label 471: @20620
    8752             :       GIM_Try, /*On fail goto*//*Label 472*/ 20666, // Rule ID 1213 //
    8753             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8754             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddls,
    8755             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    8756             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    8757             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8758             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8759             :         // (intrinsic_wo_chain:{ *:[v4i16] } 1065:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vm)  =>  (VPADDLsv8i8:{ *:[v4i16] } DPR:{ *:[v8i8] }:$Vm)
    8760             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLsv8i8,
    8761             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8762             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8763             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8764             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8765             :         GIR_EraseFromParent, /*InsnID*/0,
    8766             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8767             :         // GIR_Coverage, 1213,
    8768             :         GIR_Done,
    8769             :       // Label 472: @20666
    8770             :       GIM_Try, /*On fail goto*//*Label 473*/ 20712, // Rule ID 1214 //
    8771             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8772             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddls,
    8773             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    8774             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    8775             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8776             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8777             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1065:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vm)  =>  (VPADDLsv4i16:{ *:[v2i32] } DPR:{ *:[v4i16] }:$Vm)
    8778             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLsv4i16,
    8779             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8780             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8781             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8782             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8783             :         GIR_EraseFromParent, /*InsnID*/0,
    8784             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8785             :         // GIR_Coverage, 1214,
    8786             :         GIR_Done,
    8787             :       // Label 473: @20712
    8788             :       GIM_Try, /*On fail goto*//*Label 474*/ 20758, // Rule ID 1215 //
    8789             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8790             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddls,
    8791             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
    8792             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    8793             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8794             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8795             :         // (intrinsic_wo_chain:{ *:[v1i64] } 1065:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VPADDLsv2i32:{ *:[v1i64] } DPR:{ *:[v2i32] }:$Vm)
    8796             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLsv2i32,
    8797             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8798             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8799             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8800             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8801             :         GIR_EraseFromParent, /*InsnID*/0,
    8802             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8803             :         // GIR_Coverage, 1215,
    8804             :         GIR_Done,
    8805             :       // Label 474: @20758
    8806             :       GIM_Try, /*On fail goto*//*Label 475*/ 20804, // Rule ID 1216 //
    8807             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8808             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddls,
    8809             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    8810             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    8811             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8812             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8813             :         // (intrinsic_wo_chain:{ *:[v8i16] } 1065:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vm)  =>  (VPADDLsv16i8:{ *:[v8i16] } QPR:{ *:[v16i8] }:$Vm)
    8814             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLsv16i8,
    8815             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8816             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8817             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8818             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8819             :         GIR_EraseFromParent, /*InsnID*/0,
    8820             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8821             :         // GIR_Coverage, 1216,
    8822             :         GIR_Done,
    8823             :       // Label 475: @20804
    8824             :       GIM_Try, /*On fail goto*//*Label 476*/ 20850, // Rule ID 1217 //
    8825             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8826             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddls,
    8827             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    8828             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    8829             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8830             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8831             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1065:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vm)  =>  (VPADDLsv8i16:{ *:[v4i32] } QPR:{ *:[v8i16] }:$Vm)
    8832             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLsv8i16,
    8833             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8834             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8835             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8836             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8837             :         GIR_EraseFromParent, /*InsnID*/0,
    8838             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8839             :         // GIR_Coverage, 1217,
    8840             :         GIR_Done,
    8841             :       // Label 476: @20850
    8842             :       GIM_Try, /*On fail goto*//*Label 477*/ 20896, // Rule ID 1218 //
    8843             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8844             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddls,
    8845             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
    8846             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    8847             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8848             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8849             :         // (intrinsic_wo_chain:{ *:[v2i64] } 1065:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VPADDLsv4i32:{ *:[v2i64] } QPR:{ *:[v4i32] }:$Vm)
    8850             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLsv4i32,
    8851             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8852             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8853             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8854             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8855             :         GIR_EraseFromParent, /*InsnID*/0,
    8856             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8857             :         // GIR_Coverage, 1218,
    8858             :         GIR_Done,
    8859             :       // Label 477: @20896
    8860             :       GIM_Try, /*On fail goto*//*Label 478*/ 20942, // Rule ID 1219 //
    8861             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8862             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddlu,
    8863             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    8864             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    8865             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8866             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8867             :         // (intrinsic_wo_chain:{ *:[v4i16] } 1066:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vm)  =>  (VPADDLuv8i8:{ *:[v4i16] } DPR:{ *:[v8i8] }:$Vm)
    8868             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLuv8i8,
    8869             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8870             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8871             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8872             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8873             :         GIR_EraseFromParent, /*InsnID*/0,
    8874             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8875             :         // GIR_Coverage, 1219,
    8876             :         GIR_Done,
    8877             :       // Label 478: @20942
    8878             :       GIM_Try, /*On fail goto*//*Label 479*/ 20988, // Rule ID 1220 //
    8879             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8880             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddlu,
    8881             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    8882             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    8883             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8884             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8885             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1066:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vm)  =>  (VPADDLuv4i16:{ *:[v2i32] } DPR:{ *:[v4i16] }:$Vm)
    8886             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLuv4i16,
    8887             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8888             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8889             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8890             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8891             :         GIR_EraseFromParent, /*InsnID*/0,
    8892             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8893             :         // GIR_Coverage, 1220,
    8894             :         GIR_Done,
    8895             :       // Label 479: @20988
    8896             :       GIM_Try, /*On fail goto*//*Label 480*/ 21034, // Rule ID 1221 //
    8897             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8898             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddlu,
    8899             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
    8900             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    8901             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8902             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8903             :         // (intrinsic_wo_chain:{ *:[v1i64] } 1066:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VPADDLuv2i32:{ *:[v1i64] } DPR:{ *:[v2i32] }:$Vm)
    8904             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLuv2i32,
    8905             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8906             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8907             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8908             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8909             :         GIR_EraseFromParent, /*InsnID*/0,
    8910             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8911             :         // GIR_Coverage, 1221,
    8912             :         GIR_Done,
    8913             :       // Label 480: @21034
    8914             :       GIM_Try, /*On fail goto*//*Label 481*/ 21080, // Rule ID 1222 //
    8915             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8916             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddlu,
    8917             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    8918             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    8919             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8920             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8921             :         // (intrinsic_wo_chain:{ *:[v8i16] } 1066:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vm)  =>  (VPADDLuv16i8:{ *:[v8i16] } QPR:{ *:[v16i8] }:$Vm)
    8922             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLuv16i8,
    8923             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8924             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8925             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8926             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8927             :         GIR_EraseFromParent, /*InsnID*/0,
    8928             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8929             :         // GIR_Coverage, 1222,
    8930             :         GIR_Done,
    8931             :       // Label 481: @21080
    8932             :       GIM_Try, /*On fail goto*//*Label 482*/ 21126, // Rule ID 1223 //
    8933             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8934             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddlu,
    8935             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    8936             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    8937             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8938             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8939             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1066:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vm)  =>  (VPADDLuv8i16:{ *:[v4i32] } QPR:{ *:[v8i16] }:$Vm)
    8940             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLuv8i16,
    8941             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8942             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8943             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8944             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8945             :         GIR_EraseFromParent, /*InsnID*/0,
    8946             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8947             :         // GIR_Coverage, 1223,
    8948             :         GIR_Done,
    8949             :       // Label 482: @21126
    8950             :       GIM_Try, /*On fail goto*//*Label 483*/ 21172, // Rule ID 1224 //
    8951             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8952             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vpaddlu,
    8953             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s64,
    8954             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    8955             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8956             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8957             :         // (intrinsic_wo_chain:{ *:[v2i64] } 1066:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VPADDLuv4i32:{ *:[v2i64] } QPR:{ *:[v4i32] }:$Vm)
    8958             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VPADDLuv4i32,
    8959             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8960             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8961             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8962             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8963             :         GIR_EraseFromParent, /*InsnID*/0,
    8964             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8965             :         // GIR_Coverage, 1224,
    8966             :         GIR_Done,
    8967             :       // Label 483: @21172
    8968             :       GIM_Try, /*On fail goto*//*Label 484*/ 21218, // Rule ID 1253 //
    8969             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8970             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrecpe,
    8971             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    8972             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    8973             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    8974             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    8975             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1095:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VRECPEd:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vm)
    8976             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRECPEd,
    8977             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8978             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8979             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8980             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8981             :         GIR_EraseFromParent, /*InsnID*/0,
    8982             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    8983             :         // GIR_Coverage, 1253,
    8984             :         GIR_Done,
    8985             :       // Label 484: @21218
    8986             :       GIM_Try, /*On fail goto*//*Label 485*/ 21264, // Rule ID 1254 //
    8987             :         GIM_CheckFeatures, GIFBS_HasNEON,
    8988             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrecpe,
    8989             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    8990             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    8991             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    8992             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    8993             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1095:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VRECPEq:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vm)
    8994             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRECPEq,
    8995             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    8996             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    8997             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    8998             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    8999             :         GIR_EraseFromParent, /*InsnID*/0,
    9000             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9001             :         // GIR_Coverage, 1254,
    9002             :         GIR_Done,
    9003             :       // Label 485: @21264
    9004             :       GIM_Try, /*On fail goto*//*Label 486*/ 21310, // Rule ID 1255 //
    9005             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9006             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrecpe,
    9007             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    9008             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    9009             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9010             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9011             :         // (intrinsic_wo_chain:{ *:[v2f32] } 1095:{ *:[iPTR] }, DPR:{ *:[v2f32] }:$Vm)  =>  (VRECPEfd:{ *:[v2f32] } DPR:{ *:[v2f32] }:$Vm)
    9012             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRECPEfd,
    9013             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9014             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9015             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9016             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9017             :         GIR_EraseFromParent, /*InsnID*/0,
    9018             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9019             :         // GIR_Coverage, 1255,
    9020             :         GIR_Done,
    9021             :       // Label 486: @21310
    9022             :       GIM_Try, /*On fail goto*//*Label 487*/ 21356, // Rule ID 1256 //
    9023             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9024             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrecpe,
    9025             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    9026             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    9027             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9028             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9029             :         // (intrinsic_wo_chain:{ *:[v4f32] } 1095:{ *:[iPTR] }, QPR:{ *:[v4f32] }:$Vm)  =>  (VRECPEfq:{ *:[v4f32] } QPR:{ *:[v4f32] }:$Vm)
    9030             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRECPEfq,
    9031             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9032             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9033             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9034             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9035             :         GIR_EraseFromParent, /*InsnID*/0,
    9036             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9037             :         // GIR_Coverage, 1256,
    9038             :         GIR_Done,
    9039             :       // Label 487: @21356
    9040             :       GIM_Try, /*On fail goto*//*Label 488*/ 21402, // Rule ID 1257 //
    9041             :         GIM_CheckFeatures, GIFBS_HasFullFP16_HasNEON,
    9042             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrecpe,
    9043             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    9044             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    9045             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9046             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9047             :         // (intrinsic_wo_chain:{ *:[v4f16] } 1095:{ *:[iPTR] }, DPR:{ *:[v4f16] }:$Vm)  =>  (VRECPEhd:{ *:[v4f16] } DPR:{ *:[v4f16] }:$Vm)
    9048             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRECPEhd,
    9049             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9050             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9051             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9052             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9053             :         GIR_EraseFromParent, /*InsnID*/0,
    9054             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9055             :         // GIR_Coverage, 1257,
    9056             :         GIR_Done,
    9057             :       // Label 488: @21402
    9058             :       GIM_Try, /*On fail goto*//*Label 489*/ 21448, // Rule ID 1258 //
    9059             :         GIM_CheckFeatures, GIFBS_HasFullFP16_HasNEON,
    9060             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrecpe,
    9061             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    9062             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    9063             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9064             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9065             :         // (intrinsic_wo_chain:{ *:[v8f16] } 1095:{ *:[iPTR] }, QPR:{ *:[v8f16] }:$Vm)  =>  (VRECPEhq:{ *:[v8f16] } QPR:{ *:[v8f16] }:$Vm)
    9066             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRECPEhq,
    9067             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9068             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9069             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9070             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9071             :         GIR_EraseFromParent, /*InsnID*/0,
    9072             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9073             :         // GIR_Coverage, 1258,
    9074             :         GIR_Done,
    9075             :       // Label 489: @21448
    9076             :       GIM_Try, /*On fail goto*//*Label 490*/ 21494, // Rule ID 1263 //
    9077             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9078             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrsqrte,
    9079             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    9080             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    9081             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9082             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9083             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1108:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VRSQRTEd:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vm)
    9084             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRSQRTEd,
    9085             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9086             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9087             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9088             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9089             :         GIR_EraseFromParent, /*InsnID*/0,
    9090             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9091             :         // GIR_Coverage, 1263,
    9092             :         GIR_Done,
    9093             :       // Label 490: @21494
    9094             :       GIM_Try, /*On fail goto*//*Label 491*/ 21540, // Rule ID 1264 //
    9095             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9096             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrsqrte,
    9097             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    9098             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    9099             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9100             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9101             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1108:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VRSQRTEq:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vm)
    9102             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRSQRTEq,
    9103             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9104             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9105             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9106             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9107             :         GIR_EraseFromParent, /*InsnID*/0,
    9108             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9109             :         // GIR_Coverage, 1264,
    9110             :         GIR_Done,
    9111             :       // Label 491: @21540
    9112             :       GIM_Try, /*On fail goto*//*Label 492*/ 21586, // Rule ID 1265 //
    9113             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9114             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrsqrte,
    9115             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    9116             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    9117             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9118             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9119             :         // (intrinsic_wo_chain:{ *:[v2f32] } 1108:{ *:[iPTR] }, DPR:{ *:[v2f32] }:$Vm)  =>  (VRSQRTEfd:{ *:[v2f32] } DPR:{ *:[v2f32] }:$Vm)
    9120             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRSQRTEfd,
    9121             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9122             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9123             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9124             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9125             :         GIR_EraseFromParent, /*InsnID*/0,
    9126             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9127             :         // GIR_Coverage, 1265,
    9128             :         GIR_Done,
    9129             :       // Label 492: @21586
    9130             :       GIM_Try, /*On fail goto*//*Label 493*/ 21632, // Rule ID 1266 //
    9131             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9132             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrsqrte,
    9133             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    9134             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    9135             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9136             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9137             :         // (intrinsic_wo_chain:{ *:[v4f32] } 1108:{ *:[iPTR] }, QPR:{ *:[v4f32] }:$Vm)  =>  (VRSQRTEfq:{ *:[v4f32] } QPR:{ *:[v4f32] }:$Vm)
    9138             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRSQRTEfq,
    9139             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9140             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9141             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9142             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9143             :         GIR_EraseFromParent, /*InsnID*/0,
    9144             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9145             :         // GIR_Coverage, 1266,
    9146             :         GIR_Done,
    9147             :       // Label 493: @21632
    9148             :       GIM_Try, /*On fail goto*//*Label 494*/ 21678, // Rule ID 1267 //
    9149             :         GIM_CheckFeatures, GIFBS_HasFullFP16_HasNEON,
    9150             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrsqrte,
    9151             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    9152             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    9153             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9154             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9155             :         // (intrinsic_wo_chain:{ *:[v4f16] } 1108:{ *:[iPTR] }, DPR:{ *:[v4f16] }:$Vm)  =>  (VRSQRTEhd:{ *:[v4f16] } DPR:{ *:[v4f16] }:$Vm)
    9156             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRSQRTEhd,
    9157             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9158             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9159             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9160             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9161             :         GIR_EraseFromParent, /*InsnID*/0,
    9162             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9163             :         // GIR_Coverage, 1267,
    9164             :         GIR_Done,
    9165             :       // Label 494: @21678
    9166             :       GIM_Try, /*On fail goto*//*Label 495*/ 21724, // Rule ID 1268 //
    9167             :         GIM_CheckFeatures, GIFBS_HasFullFP16_HasNEON,
    9168             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vrsqrte,
    9169             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    9170             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    9171             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9172             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9173             :         // (intrinsic_wo_chain:{ *:[v8f16] } 1108:{ *:[iPTR] }, QPR:{ *:[v8f16] }:$Vm)  =>  (VRSQRTEhq:{ *:[v8f16] } QPR:{ *:[v8f16] }:$Vm)
    9174             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VRSQRTEhq,
    9175             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9176             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9177             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9178             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9179             :         GIR_EraseFromParent, /*InsnID*/0,
    9180             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9181             :         // GIR_Coverage, 1268,
    9182             :         GIR_Done,
    9183             :       // Label 495: @21724
    9184             :       GIM_Try, /*On fail goto*//*Label 496*/ 21770, // Rule ID 1489 //
    9185             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9186             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqabs,
    9187             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s8,
    9188             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    9189             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9190             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9191             :         // (intrinsic_wo_chain:{ *:[v8i8] } 1071:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vm)  =>  (VQABSv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vm)
    9192             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQABSv8i8,
    9193             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9194             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9195             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9196             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9197             :         GIR_EraseFromParent, /*InsnID*/0,
    9198             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9199             :         // GIR_Coverage, 1489,
    9200             :         GIR_Done,
    9201             :       // Label 496: @21770
    9202             :       GIM_Try, /*On fail goto*//*Label 497*/ 21816, // Rule ID 1490 //
    9203             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9204             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqabs,
    9205             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    9206             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    9207             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9208             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9209             :         // (intrinsic_wo_chain:{ *:[v4i16] } 1071:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vm)  =>  (VQABSv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vm)
    9210             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQABSv4i16,
    9211             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9212             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9213             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9214             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9215             :         GIR_EraseFromParent, /*InsnID*/0,
    9216             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9217             :         // GIR_Coverage, 1490,
    9218             :         GIR_Done,
    9219             :       // Label 497: @21816
    9220             :       GIM_Try, /*On fail goto*//*Label 498*/ 21862, // Rule ID 1491 //
    9221             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9222             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqabs,
    9223             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    9224             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    9225             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9226             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9227             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1071:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VQABSv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vm)
    9228             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQABSv2i32,
    9229             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9230             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9231             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9232             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9233             :         GIR_EraseFromParent, /*InsnID*/0,
    9234             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9235             :         // GIR_Coverage, 1491,
    9236             :         GIR_Done,
    9237             :       // Label 498: @21862
    9238             :       GIM_Try, /*On fail goto*//*Label 499*/ 21908, // Rule ID 1492 //
    9239             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9240             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqabs,
    9241             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s8,
    9242             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    9243             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9244             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9245             :         // (intrinsic_wo_chain:{ *:[v16i8] } 1071:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vm)  =>  (VQABSv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vm)
    9246             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQABSv16i8,
    9247             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9248             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9249             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9250             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9251             :         GIR_EraseFromParent, /*InsnID*/0,
    9252             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9253             :         // GIR_Coverage, 1492,
    9254             :         GIR_Done,
    9255             :       // Label 499: @21908
    9256             :       GIM_Try, /*On fail goto*//*Label 500*/ 21954, // Rule ID 1493 //
    9257             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9258             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqabs,
    9259             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    9260             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    9261             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9262             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9263             :         // (intrinsic_wo_chain:{ *:[v8i16] } 1071:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vm)  =>  (VQABSv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vm)
    9264             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQABSv8i16,
    9265             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9266             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9267             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9268             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9269             :         GIR_EraseFromParent, /*InsnID*/0,
    9270             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9271             :         // GIR_Coverage, 1493,
    9272             :         GIR_Done,
    9273             :       // Label 500: @21954
    9274             :       GIM_Try, /*On fail goto*//*Label 501*/ 22000, // Rule ID 1494 //
    9275             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9276             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqabs,
    9277             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    9278             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    9279             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9280             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9281             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1071:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VQABSv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vm)
    9282             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQABSv4i32,
    9283             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9284             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9285             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9286             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9287             :         GIR_EraseFromParent, /*InsnID*/0,
    9288             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9289             :         // GIR_Coverage, 1494,
    9290             :         GIR_Done,
    9291             :       // Label 501: @22000
    9292             :       GIM_Try, /*On fail goto*//*Label 502*/ 22046, // Rule ID 1505 //
    9293             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9294             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqneg,
    9295             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s8,
    9296             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    9297             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9298             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9299             :         // (intrinsic_wo_chain:{ *:[v8i8] } 1079:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vm)  =>  (VQNEGv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vm)
    9300             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQNEGv8i8,
    9301             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9302             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9303             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9304             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9305             :         GIR_EraseFromParent, /*InsnID*/0,
    9306             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9307             :         // GIR_Coverage, 1505,
    9308             :         GIR_Done,
    9309             :       // Label 502: @22046
    9310             :       GIM_Try, /*On fail goto*//*Label 503*/ 22092, // Rule ID 1506 //
    9311             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9312             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqneg,
    9313             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    9314             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    9315             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9316             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9317             :         // (intrinsic_wo_chain:{ *:[v4i16] } 1079:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vm)  =>  (VQNEGv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vm)
    9318             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQNEGv4i16,
    9319             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9320             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9321             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9322             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9323             :         GIR_EraseFromParent, /*InsnID*/0,
    9324             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9325             :         // GIR_Coverage, 1506,
    9326             :         GIR_Done,
    9327             :       // Label 503: @22092
    9328             :       GIM_Try, /*On fail goto*//*Label 504*/ 22138, // Rule ID 1507 //
    9329             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9330             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqneg,
    9331             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    9332             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    9333             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9334             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9335             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1079:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VQNEGv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vm)
    9336             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQNEGv2i32,
    9337             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9338             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9339             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9340             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9341             :         GIR_EraseFromParent, /*InsnID*/0,
    9342             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9343             :         // GIR_Coverage, 1507,
    9344             :         GIR_Done,
    9345             :       // Label 504: @22138
    9346             :       GIM_Try, /*On fail goto*//*Label 505*/ 22184, // Rule ID 1508 //
    9347             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9348             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqneg,
    9349             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s8,
    9350             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    9351             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9352             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9353             :         // (intrinsic_wo_chain:{ *:[v16i8] } 1079:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vm)  =>  (VQNEGv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vm)
    9354             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQNEGv16i8,
    9355             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9356             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9357             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9358             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9359             :         GIR_EraseFromParent, /*InsnID*/0,
    9360             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9361             :         // GIR_Coverage, 1508,
    9362             :         GIR_Done,
    9363             :       // Label 505: @22184
    9364             :       GIM_Try, /*On fail goto*//*Label 506*/ 22230, // Rule ID 1509 //
    9365             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9366             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqneg,
    9367             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    9368             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    9369             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9370             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9371             :         // (intrinsic_wo_chain:{ *:[v8i16] } 1079:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vm)  =>  (VQNEGv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vm)
    9372             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQNEGv8i16,
    9373             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9374             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9375             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9376             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9377             :         GIR_EraseFromParent, /*InsnID*/0,
    9378             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9379             :         // GIR_Coverage, 1509,
    9380             :         GIR_Done,
    9381             :       // Label 506: @22230
    9382             :       GIM_Try, /*On fail goto*//*Label 507*/ 22276, // Rule ID 1510 //
    9383             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9384             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vqneg,
    9385             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    9386             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    9387             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9388             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9389             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1079:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VQNEGv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vm)
    9390             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VQNEGv4i32,
    9391             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9392             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9393             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9394             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9395             :         GIR_EraseFromParent, /*InsnID*/0,
    9396             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9397             :         // GIR_Coverage, 1510,
    9398             :         GIR_Done,
    9399             :       // Label 507: @22276
    9400             :       GIM_Try, /*On fail goto*//*Label 508*/ 22322, // Rule ID 1511 //
    9401             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9402             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vcls,
    9403             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s8,
    9404             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s8,
    9405             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9406             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9407             :         // (intrinsic_wo_chain:{ *:[v8i8] } 1020:{ *:[iPTR] }, DPR:{ *:[v8i8] }:$Vm)  =>  (VCLSv8i8:{ *:[v8i8] } DPR:{ *:[v8i8] }:$Vm)
    9408             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VCLSv8i8,
    9409             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9410             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9411             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9412             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9413             :         GIR_EraseFromParent, /*InsnID*/0,
    9414             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9415             :         // GIR_Coverage, 1511,
    9416             :         GIR_Done,
    9417             :       // Label 508: @22322
    9418             :       GIM_Try, /*On fail goto*//*Label 509*/ 22368, // Rule ID 1512 //
    9419             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9420             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vcls,
    9421             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s16,
    9422             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s16,
    9423             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9424             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9425             :         // (intrinsic_wo_chain:{ *:[v4i16] } 1020:{ *:[iPTR] }, DPR:{ *:[v4i16] }:$Vm)  =>  (VCLSv4i16:{ *:[v4i16] } DPR:{ *:[v4i16] }:$Vm)
    9426             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VCLSv4i16,
    9427             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9428             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9429             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9430             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9431             :         GIR_EraseFromParent, /*InsnID*/0,
    9432             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9433             :         // GIR_Coverage, 1512,
    9434             :         GIR_Done,
    9435             :       // Label 509: @22368
    9436             :       GIM_Try, /*On fail goto*//*Label 510*/ 22414, // Rule ID 1513 //
    9437             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9438             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vcls,
    9439             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v2s32,
    9440             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v2s32,
    9441             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::DPRRegClassID,
    9442             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::DPRRegClassID,
    9443             :         // (intrinsic_wo_chain:{ *:[v2i32] } 1020:{ *:[iPTR] }, DPR:{ *:[v2i32] }:$Vm)  =>  (VCLSv2i32:{ *:[v2i32] } DPR:{ *:[v2i32] }:$Vm)
    9444             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VCLSv2i32,
    9445             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9446             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9447             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9448             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9449             :         GIR_EraseFromParent, /*InsnID*/0,
    9450             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9451             :         // GIR_Coverage, 1513,
    9452             :         GIR_Done,
    9453             :       // Label 510: @22414
    9454             :       GIM_Try, /*On fail goto*//*Label 511*/ 22460, // Rule ID 1514 //
    9455             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9456             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vcls,
    9457             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v16s8,
    9458             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v16s8,
    9459             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9460             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9461             :         // (intrinsic_wo_chain:{ *:[v16i8] } 1020:{ *:[iPTR] }, QPR:{ *:[v16i8] }:$Vm)  =>  (VCLSv16i8:{ *:[v16i8] } QPR:{ *:[v16i8] }:$Vm)
    9462             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VCLSv16i8,
    9463             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9464             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9465             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9466             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9467             :         GIR_EraseFromParent, /*InsnID*/0,
    9468             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9469             :         // GIR_Coverage, 1514,
    9470             :         GIR_Done,
    9471             :       // Label 511: @22460
    9472             :       GIM_Try, /*On fail goto*//*Label 512*/ 22506, // Rule ID 1515 //
    9473             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9474             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vcls,
    9475             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v8s16,
    9476             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v8s16,
    9477             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9478             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9479             :         // (intrinsic_wo_chain:{ *:[v8i16] } 1020:{ *:[iPTR] }, QPR:{ *:[v8i16] }:$Vm)  =>  (VCLSv8i16:{ *:[v8i16] } QPR:{ *:[v8i16] }:$Vm)
    9480             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VCLSv8i16,
    9481             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9482             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9483             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9484             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9485             :         GIR_EraseFromParent, /*InsnID*/0,
    9486             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9487             :         // GIR_Coverage, 1515,
    9488             :         GIR_Done,
    9489             :       // Label 512: @22506
    9490             :       GIM_Try, /*On fail goto*//*Label 513*/ 22552, // Rule ID 1516 //
    9491             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9492             :         GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, Intrinsic::arm_neon_vcls,
    9493             :         GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_v4s32,
    9494             :         GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_v4s32,
    9495             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/ARM::QPRRegClassID,
    9496             :         GIM_CheckRegBankForClass, /*MI*/0, /*Op*/2, /*RC*/ARM::QPRRegClassID,
    9497             :         // (intrinsic_wo_chain:{ *:[v4i32] } 1020:{ *:[iPTR] }, QPR:{ *:[v4i32] }:$Vm)  =>  (VCLSv4i32:{ *:[v4i32] } QPR:{ *:[v4i32] }:$Vm)
    9498             :         GIR_BuildMI, /*InsnID*/0, /*Opcode*/ARM::VCLSv4i32,
    9499             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // Vd
    9500             :         GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // Vm
    9501             :         GIR_AddImm, /*InsnID*/0, /*Imm*/14,
    9502             :         GIR_AddRegister, /*InsnID*/0, ::zero_reg,
    9503             :         GIR_EraseFromParent, /*InsnID*/0,
    9504             :         GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
    9505             :         // GIR_Coverage, 1516,
    9506             :         GIR_Done,
    9507             :       // Label 513: @22552
    9508             :       GIM_Try, /*On fail goto*//*Label 514*/ 22598, // Rule ID 1560 //
    9509             :         GIM_CheckFeatures, GIFBS_HasNEON,
    9510             :         GIM_Check