/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Global Instruction Selector for the BPF target                             *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

#ifdef GET_GLOBALISEL_PREDICATE_BITSET
const unsigned MAX_SUBTARGET_PREDICATES = 12;
using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
#endif // ifdef GET_GLOBALISEL_PREDICATE_BITSET

#ifdef GET_GLOBALISEL_TEMPORARIES_DECL
  mutable MatcherState State;
  typedef ComplexRendererFns(BPFInstructionSelector::*ComplexMatcherMemFn)(MachineOperand &) const;
  typedef void(BPFInstructionSelector::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
  const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
  static BPFInstructionSelector::ComplexMatcherMemFn ComplexPredicateFns[];
  static BPFInstructionSelector::CustomRendererFn CustomRenderers[];
  bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
  bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
  bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
  const uint8_t *getMatchTable() const override;
  bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
  bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
  bool testSimplePredicate(unsigned PredicateID) const override;
  bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
#endif // ifdef GET_GLOBALISEL_TEMPORARIES_DECL

#ifdef GET_GLOBALISEL_TEMPORARIES_INIT
, State(0),
ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
#endif // ifdef GET_GLOBALISEL_TEMPORARIES_INIT

#ifdef GET_GLOBALISEL_IMPL
// LLT Objects.
enum {
  GILLT_s32,
  GILLT_s64,
};
const static size_t NumTypeObjects = 2;
const static LLT TypeObjects[] = {
  LLT::scalar(32),
  LLT::scalar(64),
};

// Bits for subtarget features that participate in instruction matching.
enum SubtargetFeatureBits : uint8_t {
  Feature_BPFIsLittleEndianBit = 8,
  Feature_BPFIsBigEndianBit = 9,
  Feature_BPFHasALU32Bit = 6,
  Feature_BPFNoALU32Bit = 3,
  Feature_BPFHasLdsxBit = 5,
  Feature_BPFHasMovsxBit = 2,
  Feature_BPFHasBswapBit = 7,
  Feature_BPFHasSdivSmodBit = 1,
  Feature_BPFNoMovsxBit = 11,
  Feature_BPFHasStoreImmBit = 4,
  Feature_BPFHasLoadAcqStoreRelBit = 10,
  Feature_BPFHasGotoxBit = 0,
};

PredicateBitset BPFInstructionSelector::
computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const {
  PredicateBitset Features{};
  if (Subtarget->isLittleEndian())
    Features.set(Feature_BPFIsLittleEndianBit);
  if (!Subtarget->isLittleEndian())
    Features.set(Feature_BPFIsBigEndianBit);
  if (Subtarget->getHasAlu32())
    Features.set(Feature_BPFHasALU32Bit);
  if (!Subtarget->getHasAlu32())
    Features.set(Feature_BPFNoALU32Bit);
  if (Subtarget->hasLdsx())
    Features.set(Feature_BPFHasLdsxBit);
  if (Subtarget->hasMovsx())
    Features.set(Feature_BPFHasMovsxBit);
  if (Subtarget->hasBswap())
    Features.set(Feature_BPFHasBswapBit);
  if (Subtarget->hasSdivSmod())
    Features.set(Feature_BPFHasSdivSmodBit);
  if (!Subtarget->hasMovsx())
    Features.set(Feature_BPFNoMovsxBit);
  if (Subtarget->hasStoreImm())
    Features.set(Feature_BPFHasStoreImmBit);
  if (Subtarget->hasLoadAcqStoreRel())
    Features.set(Feature_BPFHasLoadAcqStoreRelBit);
  if (Subtarget->hasGotox())
    Features.set(Feature_BPFHasGotoxBit);
  return Features;
}

void BPFInstructionSelector::setupGeneratedPerFunctionState(MachineFunction &MF) {
  AvailableFunctionFeatures = computeAvailableFunctionFeatures((const BPFSubtarget *)&MF.getSubtarget(), &MF);
}
PredicateBitset BPFInstructionSelector::
computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget, const MachineFunction *MF) const {
  PredicateBitset Features{};
  return Features;
}

// Feature bitsets.
enum {
  GIFBS_Invalid,
  GIFBS_BPFHasBswap,
  GIFBS_BPFHasMovsx,
  GIFBS_BPFHasSdivSmod,
  GIFBS_BPFIsBigEndian,
  GIFBS_BPFIsLittleEndian,
  GIFBS_BPFNoMovsx,
};
constexpr static PredicateBitset FeatureBitsets[] {
  {}, // GIFBS_Invalid
  {Feature_BPFHasBswapBit, },
  {Feature_BPFHasMovsxBit, },
  {Feature_BPFHasSdivSmodBit, },
  {Feature_BPFIsBigEndianBit, },
  {Feature_BPFIsLittleEndianBit, },
  {Feature_BPFNoMovsxBit, },
};

// ComplexPattern predicates.
enum {
  GICP_Invalid,
};
// See constructor for table contents

BPFInstructionSelector::ComplexMatcherMemFn
BPFInstructionSelector::ComplexPredicateFns[] = {
  nullptr, // GICP_Invalid
};

// PatFrag predicates.
enum {
  GICXXPred_MI_Predicate_or_disjoint = GICXXPred_Invalid + 1,
};
bool BPFInstructionSelector::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
  const MachineFunction &MF = *MI.getParent()->getParent();
  const MachineRegisterInfo &MRI = MF.getRegInfo();
  const auto &Operands = State.RecordedOperands;
  (void)Operands;
  (void)MRI;
  switch (PredicateID) {
  case GICXXPred_MI_Predicate_or_disjoint: {
    
        return MI.getFlag(MachineInstr::Disjoint);
      
  }
  }
  llvm_unreachable("Unknown predicate");
  return false;
}
// PatFrag predicates.
bool BPFInstructionSelector::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
  const auto &Operands = State.RecordedOperands;
  Register Reg = MO.getReg();
  (void)Operands;
  (void)Reg;
  llvm_unreachable("Unknown predicate");
  return false;
}
// PatFrag predicates.
bool BPFInstructionSelector::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
// PatFrag predicates.
bool BPFInstructionSelector::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
// PatFrag predicates.
bool BPFInstructionSelector::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
  llvm_unreachable("Unknown predicate");
  return false;
}
bool BPFInstructionSelector::testSimplePredicate(unsigned) const {
    llvm_unreachable("BPFInstructionSelector does not support simple predicates!");
  return false;
}
// Custom renderers.
enum {
  GICR_Invalid,
};
BPFInstructionSelector::CustomRendererFn
BPFInstructionSelector::CustomRenderers[] = {
  nullptr, // GICR_Invalid
};

bool BPFInstructionSelector::selectImpl(MachineInstr &I, CodeGenCoverage &CoverageInfo) const {
  const PredicateBitset AvailableFeatures = getAvailableFeatures();
  MachineIRBuilder B(I);
  State.MIs.clear();
  State.MIs.push_back(&I);

  if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), TII, MF->getRegInfo(), TRI, RBI, AvailableFeatures, &CoverageInfo)) {
    return true;
  }

  return false;
}

bool BPFInstructionSelector::runCustomAction(unsigned, const MatcherState&, NewMIVector &) const {
    llvm_unreachable("BPFInstructionSelector does not support custom C++ actions!");
}
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24),  uint8_t(uint64_t(Val) >> 32), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 56)
#else
#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
#define GIMT_Encode8(Val) uint8_t(uint64_t(Val) >> 56), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 32),  uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
#endif
const uint8_t *BPFInstructionSelector::getMatchTable() const {
  constexpr static uint8_t MatchTable0[] = {
     /*    0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(55), GIMT_Encode2(262), /*)*//*default:*//*Label 22*/ GIMT_Encode4(2687),
     /*   10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(838),
     /*   14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(904),
     /*   18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(1018),
     /*   22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1084),
     /*   26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1156),
     /*   30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1222),
     /*   34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1294), GIMT_Encode4(0), GIMT_Encode4(0),
     /*   46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1360),
     /*   50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1486),
     /*   54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1552), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  334 */ /*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ GIMT_Encode4(1618), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  346 */ /*TargetOpcode::G_ANYEXT*//*Label 11*/ GIMT_Encode4(1682),
     /*  350 */ /*TargetOpcode::G_TRUNC*//*Label 12*/ GIMT_Encode4(1745), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  366 */ /*TargetOpcode::G_CONSTANT*//*Label 13*/ GIMT_Encode4(1787), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  382 */ /*TargetOpcode::G_SEXT*//*Label 14*/ GIMT_Encode4(1810),
     /*  386 */ /*TargetOpcode::G_SEXT_INREG*//*Label 15*/ GIMT_Encode4(1926),
     /*  390 */ /*TargetOpcode::G_ZEXT*//*Label 16*/ GIMT_Encode4(2122),
     /*  394 */ /*TargetOpcode::G_SHL*//*Label 17*/ GIMT_Encode4(2149),
     /*  398 */ /*TargetOpcode::G_LSHR*//*Label 18*/ GIMT_Encode4(2215),
     /*  402 */ /*TargetOpcode::G_ASHR*//*Label 19*/ GIMT_Encode4(2539), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  770 */ /*TargetOpcode::G_BR*//*Label 20*/ GIMT_Encode4(2605), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
     /*  834 */ /*TargetOpcode::G_BSWAP*//*Label 21*/ GIMT_Encode4(2621),
     /*  838 */ // Label 0: @838
     /*  838 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 25*/ GIMT_Encode4(903),
     /*  849 */ /*GILLT_s32*//*Label 23*/ GIMT_Encode4(857),
     /*  853 */ /*GILLT_s64*//*Label 24*/ GIMT_Encode4(880),
     /*  857 */ // Label 23: @857
     /*  857 */ GIM_Try, /*On fail goto*//*Label 26*/ GIMT_Encode4(879), // Rule ID 47 //
     /*  862 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /*  865 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /*  868 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /*  872 */   // (add:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (ADD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /*  872 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr_32),
     /*  877 */   GIR_RootConstrainSelectedInstOperands,
     /*  878 */   // GIR_Coverage, 47,
     /*  878 */   GIR_Done,
     /*  879 */ // Label 26: @879
     /*  879 */ GIM_Reject,
     /*  880 */ // Label 24: @880
     /*  880 */ GIM_Try, /*On fail goto*//*Label 27*/ GIMT_Encode4(902), // Rule ID 45 //
     /*  885 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /*  888 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /*  891 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /*  895 */   // (add:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (ADD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /*  895 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr),
     /*  900 */   GIR_RootConstrainSelectedInstOperands,
     /*  901 */   // GIR_Coverage, 45,
     /*  901 */   GIR_Done,
     /*  902 */ // Label 27: @902
     /*  902 */ GIM_Reject,
     /*  903 */ // Label 25: @903
     /*  903 */ GIM_Reject,
     /*  904 */ // Label 1: @904
     /*  904 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 30*/ GIMT_Encode4(1017),
     /*  915 */ /*GILLT_s32*//*Label 28*/ GIMT_Encode4(923),
     /*  919 */ /*GILLT_s64*//*Label 29*/ GIMT_Encode4(970),
     /*  923 */ // Label 28: @923
     /*  923 */ GIM_Try, /*On fail goto*//*Label 31*/ GIMT_Encode4(969),
     /*  928 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /*  931 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /*  934 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /*  938 */   GIM_Try, /*On fail goto*//*Label 32*/ GIMT_Encode4(956), // Rule ID 98 //
     /*  943 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
     /*  947 */     // (sub:{ *:[i32] } 0:{ *:[i32] }, i32:{ *:[i32] }:$src)  =>  (NEG_32:{ *:[i32] } i32:{ *:[i32] }:$src)
     /*  947 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_32),
     /*  950 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /*  952 */     GIR_RootToRootCopy, /*OpIdx*/2, // src
     /*  954 */     GIR_RootConstrainSelectedInstOperands,
     /*  955 */     // GIR_Coverage, 98,
     /*  955 */     GIR_EraseRootFromParent_Done,
     /*  956 */   // Label 32: @956
     /*  956 */   GIM_Try, /*On fail goto*//*Label 33*/ GIMT_Encode4(968), // Rule ID 51 //
     /*  961 */     // (sub:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SUB_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /*  961 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr_32),
     /*  966 */     GIR_RootConstrainSelectedInstOperands,
     /*  967 */     // GIR_Coverage, 51,
     /*  967 */     GIR_Done,
     /*  968 */   // Label 33: @968
     /*  968 */   GIM_Reject,
     /*  969 */ // Label 31: @969
     /*  969 */ GIM_Reject,
     /*  970 */ // Label 29: @970
     /*  970 */ GIM_Try, /*On fail goto*//*Label 34*/ GIMT_Encode4(1016),
     /*  975 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /*  978 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /*  981 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /*  985 */   GIM_Try, /*On fail goto*//*Label 35*/ GIMT_Encode4(1003), // Rule ID 97 //
     /*  990 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
     /*  994 */     // (sub:{ *:[i64] } 0:{ *:[i64] }, i64:{ *:[i64] }:$src)  =>  (NEG_64:{ *:[i64] } i64:{ *:[i64] }:$src)
     /*  994 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_64),
     /*  997 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /*  999 */     GIR_RootToRootCopy, /*OpIdx*/2, // src
     /* 1001 */     GIR_RootConstrainSelectedInstOperands,
     /* 1002 */     // GIR_Coverage, 97,
     /* 1002 */     GIR_EraseRootFromParent_Done,
     /* 1003 */   // Label 35: @1003
     /* 1003 */   GIM_Try, /*On fail goto*//*Label 36*/ GIMT_Encode4(1015), // Rule ID 49 //
     /* 1008 */     // (sub:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SUB_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1008 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr),
     /* 1013 */     GIR_RootConstrainSelectedInstOperands,
     /* 1014 */     // GIR_Coverage, 49,
     /* 1014 */     GIR_Done,
     /* 1015 */   // Label 36: @1015
     /* 1015 */   GIM_Reject,
     /* 1016 */ // Label 34: @1016
     /* 1016 */ GIM_Reject,
     /* 1017 */ // Label 30: @1017
     /* 1017 */ GIM_Reject,
     /* 1018 */ // Label 2: @1018
     /* 1018 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 39*/ GIMT_Encode4(1083),
     /* 1029 */ /*GILLT_s32*//*Label 37*/ GIMT_Encode4(1037),
     /* 1033 */ /*GILLT_s64*//*Label 38*/ GIMT_Encode4(1060),
     /* 1037 */ // Label 37: @1037
     /* 1037 */ GIM_Try, /*On fail goto*//*Label 40*/ GIMT_Encode4(1059), // Rule ID 79 //
     /* 1042 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1045 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1048 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1052 */   // (mul:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (MUL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1052 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr_32),
     /* 1057 */   GIR_RootConstrainSelectedInstOperands,
     /* 1058 */   // GIR_Coverage, 79,
     /* 1058 */   GIR_Done,
     /* 1059 */ // Label 40: @1059
     /* 1059 */ GIM_Reject,
     /* 1060 */ // Label 38: @1060
     /* 1060 */ GIM_Try, /*On fail goto*//*Label 41*/ GIMT_Encode4(1082), // Rule ID 77 //
     /* 1065 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1068 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1071 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1075 */   // (mul:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (MUL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1075 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr),
     /* 1080 */   GIR_RootConstrainSelectedInstOperands,
     /* 1081 */   // GIR_Coverage, 77,
     /* 1081 */   GIR_Done,
     /* 1082 */ // Label 41: @1082
     /* 1082 */ GIM_Reject,
     /* 1083 */ // Label 39: @1083
     /* 1083 */ GIM_Reject,
     /* 1084 */ // Label 3: @1084
     /* 1084 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 44*/ GIMT_Encode4(1155),
     /* 1095 */ /*GILLT_s32*//*Label 42*/ GIMT_Encode4(1103),
     /* 1099 */ /*GILLT_s64*//*Label 43*/ GIMT_Encode4(1129),
     /* 1103 */ // Label 42: @1103
     /* 1103 */ GIM_Try, /*On fail goto*//*Label 45*/ GIMT_Encode4(1128), // Rule ID 91 //
     /* 1108 */   GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
     /* 1111 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1114 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1117 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1121 */   // (sdiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SDIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1121 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr_32),
     /* 1126 */   GIR_RootConstrainSelectedInstOperands,
     /* 1127 */   // GIR_Coverage, 91,
     /* 1127 */   GIR_Done,
     /* 1128 */ // Label 45: @1128
     /* 1128 */ GIM_Reject,
     /* 1129 */ // Label 43: @1129
     /* 1129 */ GIM_Try, /*On fail goto*//*Label 46*/ GIMT_Encode4(1154), // Rule ID 89 //
     /* 1134 */   GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
     /* 1137 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1140 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1143 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1147 */   // (sdiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SDIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1147 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr),
     /* 1152 */   GIR_RootConstrainSelectedInstOperands,
     /* 1153 */   // GIR_Coverage, 89,
     /* 1153 */   GIR_Done,
     /* 1154 */ // Label 46: @1154
     /* 1154 */ GIM_Reject,
     /* 1155 */ // Label 44: @1155
     /* 1155 */ GIM_Reject,
     /* 1156 */ // Label 4: @1156
     /* 1156 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 49*/ GIMT_Encode4(1221),
     /* 1167 */ /*GILLT_s32*//*Label 47*/ GIMT_Encode4(1175),
     /* 1171 */ /*GILLT_s64*//*Label 48*/ GIMT_Encode4(1198),
     /* 1175 */ // Label 47: @1175
     /* 1175 */ GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(1197), // Rule ID 83 //
     /* 1180 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1183 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1186 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1190 */   // (udiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (DIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1190 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr_32),
     /* 1195 */   GIR_RootConstrainSelectedInstOperands,
     /* 1196 */   // GIR_Coverage, 83,
     /* 1196 */   GIR_Done,
     /* 1197 */ // Label 50: @1197
     /* 1197 */ GIM_Reject,
     /* 1198 */ // Label 48: @1198
     /* 1198 */ GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(1220), // Rule ID 81 //
     /* 1203 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1206 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1209 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1213 */   // (udiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (DIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1213 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr),
     /* 1218 */   GIR_RootConstrainSelectedInstOperands,
     /* 1219 */   // GIR_Coverage, 81,
     /* 1219 */   GIR_Done,
     /* 1220 */ // Label 51: @1220
     /* 1220 */ GIM_Reject,
     /* 1221 */ // Label 49: @1221
     /* 1221 */ GIM_Reject,
     /* 1222 */ // Label 5: @1222
     /* 1222 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 54*/ GIMT_Encode4(1293),
     /* 1233 */ /*GILLT_s32*//*Label 52*/ GIMT_Encode4(1241),
     /* 1237 */ /*GILLT_s64*//*Label 53*/ GIMT_Encode4(1267),
     /* 1241 */ // Label 52: @1241
     /* 1241 */ GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(1266), // Rule ID 95 //
     /* 1246 */   GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
     /* 1249 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1252 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1255 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1259 */   // (srem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SMOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1259 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr_32),
     /* 1264 */   GIR_RootConstrainSelectedInstOperands,
     /* 1265 */   // GIR_Coverage, 95,
     /* 1265 */   GIR_Done,
     /* 1266 */ // Label 55: @1266
     /* 1266 */ GIM_Reject,
     /* 1267 */ // Label 53: @1267
     /* 1267 */ GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(1292), // Rule ID 93 //
     /* 1272 */   GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
     /* 1275 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1278 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1281 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1285 */   // (srem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SMOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1285 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr),
     /* 1290 */   GIR_RootConstrainSelectedInstOperands,
     /* 1291 */   // GIR_Coverage, 93,
     /* 1291 */   GIR_Done,
     /* 1292 */ // Label 56: @1292
     /* 1292 */ GIM_Reject,
     /* 1293 */ // Label 54: @1293
     /* 1293 */ GIM_Reject,
     /* 1294 */ // Label 6: @1294
     /* 1294 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 59*/ GIMT_Encode4(1359),
     /* 1305 */ /*GILLT_s32*//*Label 57*/ GIMT_Encode4(1313),
     /* 1309 */ /*GILLT_s64*//*Label 58*/ GIMT_Encode4(1336),
     /* 1313 */ // Label 57: @1313
     /* 1313 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1335), // Rule ID 87 //
     /* 1318 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1321 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1324 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1328 */   // (urem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (MOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1328 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr_32),
     /* 1333 */   GIR_RootConstrainSelectedInstOperands,
     /* 1334 */   // GIR_Coverage, 87,
     /* 1334 */   GIR_Done,
     /* 1335 */ // Label 60: @1335
     /* 1335 */ GIM_Reject,
     /* 1336 */ // Label 58: @1336
     /* 1336 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1358), // Rule ID 85 //
     /* 1341 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1344 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1347 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1351 */   // (urem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (MOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1351 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr),
     /* 1356 */   GIR_RootConstrainSelectedInstOperands,
     /* 1357 */   // GIR_Coverage, 85,
     /* 1357 */   GIR_Done,
     /* 1358 */ // Label 61: @1358
     /* 1358 */ GIM_Reject,
     /* 1359 */ // Label 59: @1359
     /* 1359 */ GIM_Reject,
     /* 1360 */ // Label 7: @1360
     /* 1360 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 64*/ GIMT_Encode4(1485),
     /* 1371 */ /*GILLT_s32*//*Label 62*/ GIMT_Encode4(1379),
     /* 1375 */ /*GILLT_s64*//*Label 63*/ GIMT_Encode4(1402),
     /* 1379 */ // Label 62: @1379
     /* 1379 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1401), // Rule ID 59 //
     /* 1384 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1387 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1390 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1394 */   // (and:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (AND_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1394 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr_32),
     /* 1399 */   GIR_RootConstrainSelectedInstOperands,
     /* 1400 */   // GIR_Coverage, 59,
     /* 1400 */   GIR_Done,
     /* 1401 */ // Label 65: @1401
     /* 1401 */ GIM_Reject,
     /* 1402 */ // Label 63: @1402
     /* 1402 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1484),
     /* 1407 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1410 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1413 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1417 */   GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1471), // Rule ID 172 //
     /* 1422 */     GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1426 */     GIM_CheckConstantInt, /*MI*/0, /*Op*/2, GIMT_Encode8(4294967295),
     /* 1437 */     // (and:{ *:[i64] } GPR:{ *:[i64] }:$src, 4294967295:{ *:[i64] })  =>  (SRL_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } GPR:{ *:[i64] }:$src, 32:{ *:[i64] }), 32:{ *:[i64] })
     /* 1437 */     GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
     /* 1440 */     GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
     /* 1444 */     GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
     /* 1449 */     GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
     /* 1453 */     GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
     /* 1456 */     GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
     /* 1458 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRL_ri),
     /* 1461 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1463 */     GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
     /* 1466 */     GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
     /* 1469 */     GIR_RootConstrainSelectedInstOperands,
     /* 1470 */     // GIR_Coverage, 172,
     /* 1470 */     GIR_EraseRootFromParent_Done,
     /* 1471 */   // Label 67: @1471
     /* 1471 */   GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1483), // Rule ID 57 //
     /* 1476 */     // (and:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (AND_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1476 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr),
     /* 1481 */     GIR_RootConstrainSelectedInstOperands,
     /* 1482 */     // GIR_Coverage, 57,
     /* 1482 */     GIR_Done,
     /* 1483 */   // Label 68: @1483
     /* 1483 */   GIM_Reject,
     /* 1484 */ // Label 66: @1484
     /* 1484 */ GIM_Reject,
     /* 1485 */ // Label 64: @1485
     /* 1485 */ GIM_Reject,
     /* 1486 */ // Label 8: @1486
     /* 1486 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 71*/ GIMT_Encode4(1551),
     /* 1497 */ /*GILLT_s32*//*Label 69*/ GIMT_Encode4(1505),
     /* 1501 */ /*GILLT_s64*//*Label 70*/ GIMT_Encode4(1528),
     /* 1505 */ // Label 69: @1505
     /* 1505 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1527), // Rule ID 55 //
     /* 1510 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1513 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1516 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1520 */   // (or:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (OR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1520 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr_32),
     /* 1525 */   GIR_RootConstrainSelectedInstOperands,
     /* 1526 */   // GIR_Coverage, 55,
     /* 1526 */   GIR_Done,
     /* 1527 */ // Label 72: @1527
     /* 1527 */ GIM_Reject,
     /* 1528 */ // Label 70: @1528
     /* 1528 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1550), // Rule ID 53 //
     /* 1533 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1536 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1539 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1543 */   // (or:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (OR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1543 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr),
     /* 1548 */   GIR_RootConstrainSelectedInstOperands,
     /* 1549 */   // GIR_Coverage, 53,
     /* 1549 */   GIR_Done,
     /* 1550 */ // Label 73: @1550
     /* 1550 */ GIM_Reject,
     /* 1551 */ // Label 71: @1551
     /* 1551 */ GIM_Reject,
     /* 1552 */ // Label 9: @1552
     /* 1552 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 76*/ GIMT_Encode4(1617),
     /* 1563 */ /*GILLT_s32*//*Label 74*/ GIMT_Encode4(1571),
     /* 1567 */ /*GILLT_s64*//*Label 75*/ GIMT_Encode4(1594),
     /* 1571 */ // Label 74: @1571
     /* 1571 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1593), // Rule ID 71 //
     /* 1576 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1579 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 1582 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1586 */   // (xor:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (XOR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 1586 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr_32),
     /* 1591 */   GIR_RootConstrainSelectedInstOperands,
     /* 1592 */   // GIR_Coverage, 71,
     /* 1592 */   GIR_Done,
     /* 1593 */ // Label 77: @1593
     /* 1593 */ GIM_Reject,
     /* 1594 */ // Label 75: @1594
     /* 1594 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1616), // Rule ID 69 //
     /* 1599 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1602 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1605 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1609 */   // (xor:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (XOR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 1609 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr),
     /* 1614 */   GIR_RootConstrainSelectedInstOperands,
     /* 1615 */   // GIR_Coverage, 69,
     /* 1615 */   GIR_Done,
     /* 1616 */ // Label 78: @1616
     /* 1616 */ GIM_Reject,
     /* 1617 */ // Label 76: @1617
     /* 1617 */ GIM_Reject,
     /* 1618 */ // Label 10: @1618
     /* 1618 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1681), // Rule ID 108 //
     /* 1623 */   GIM_CheckNumOperands, /*MI*/0, /*Expected*/4,
     /* 1626 */   GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, GIMT_Encode2(Intrinsic::bpf_pseudo),
     /* 1631 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
     /* 1634 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 1637 */   GIM_RootCheckType, /*Op*/3, /*Type*/GILLT_s64,
     /* 1640 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1644 */   GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
     /* 1648 */   GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
     /* 1652 */   // MIs[1] Operand 1
     /* 1652 */   // No operand predicates
     /* 1652 */   GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/3, // MIs[2]
     /* 1656 */   GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
     /* 1660 */   // MIs[2] Operand 1
     /* 1660 */   // No operand predicates
     /* 1660 */   GIM_CheckIsSafeToFold, /*NumInsns*/2,
     /* 1662 */   // (intrinsic_w_chain:{ *:[i64] } 4198:{ *:[iPTR] }, (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)  =>  (LD_pseudo:{ *:[i64] } (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)
     /* 1662 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_pseudo),
     /* 1665 */   GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1667 */   GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // pseudo
     /* 1670 */   GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
     /* 1673 */   GIR_MergeMemOperands, /*InsnID*/0, /*NumInsns*/3, /*MergeInsnID's*/0, 1, 2,
     /* 1679 */   GIR_RootConstrainSelectedInstOperands,
     /* 1680 */   // GIR_Coverage, 108,
     /* 1680 */   GIR_EraseRootFromParent_Done,
     /* 1681 */ // Label 79: @1681
     /* 1681 */ GIM_Reject,
     /* 1682 */ // Label 11: @1682
     /* 1682 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1744), // Rule ID 239 //
     /* 1687 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
     /* 1690 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1693 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1697 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1701 */   // (anyext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GPR32:{ *:[i32] }:$src, sub_32:{ *:[i32] })
     /* 1701 */   GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
     /* 1704 */   GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::IMPLICIT_DEF),
     /* 1708 */   GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
     /* 1713 */   GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
     /* 1715 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::INSERT_SUBREG),
     /* 1718 */   GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1720 */   GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
     /* 1723 */   GIR_RootToRootCopy, /*OpIdx*/1, // src
     /* 1725 */   GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
     /* 1728 */   GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPRRegClassID),
     /* 1733 */   GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
     /* 1738 */   GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/2, GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1743 */   // GIR_Coverage, 239,
     /* 1743 */   GIR_EraseRootFromParent_Done,
     /* 1744 */ // Label 80: @1744
     /* 1744 */ GIM_Reject,
     /* 1745 */ // Label 12: @1745
     /* 1745 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1786), // Rule ID 238 //
     /* 1750 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s32,
     /* 1753 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 1756 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1760 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1764 */   // (trunc:{ *:[i32] } GPR:{ *:[i64] }:$src)  =>  (EXTRACT_SUBREG:{ *:[i32] } GPR:{ *:[i64] }:$src, sub_32:{ *:[i32] })
     /* 1764 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
     /* 1767 */   GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1769 */   GIR_CopySubReg, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/GIMT_Encode2(1), // src
     /* 1775 */   GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1780 */   GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
     /* 1785 */   // GIR_Coverage, 238,
     /* 1785 */   GIR_EraseRootFromParent_Done,
     /* 1786 */ // Label 81: @1786
     /* 1786 */ GIM_Reject,
     /* 1787 */ // Label 13: @1787
     /* 1787 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1809), // Rule ID 99 //
     /* 1792 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
     /* 1795 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1799 */   // MIs[0] Operand 1
     /* 1799 */   // No operand predicates
     /* 1799 */   // (imm:{ *:[i64] }):$imm  =>  (LD_imm64:{ *:[i64] } (imm:{ *:[i64] }):$imm)
     /* 1799 */   GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_imm64),
     /* 1802 */   GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1804 */   GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/0, // imm
     /* 1807 */   GIR_RootConstrainSelectedInstOperands,
     /* 1808 */   // GIR_Coverage, 99,
     /* 1808 */   GIR_EraseRootFromParent_Done,
     /* 1809 */ // Label 82: @1809
     /* 1809 */ GIM_Reject,
     /* 1810 */ // Label 14: @1810
     /* 1810 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1925),
     /* 1815 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
     /* 1818 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1821 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 1825 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1829 */   GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1888), // Rule ID 235 //
     /* 1834 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFNoMovsx),
     /* 1837 */     // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (SRA_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src), 32:{ *:[i64] }), 32:{ *:[i64] })
     /* 1837 */     GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
     /* 1840 */     GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
     /* 1844 */     GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
     /* 1849 */     GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
     /* 1853 */     GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
     /* 1855 */     GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
     /* 1858 */     GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
     /* 1862 */     GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
     /* 1867 */     GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
     /* 1870 */     GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
     /* 1873 */     GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
     /* 1875 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRA_ri),
     /* 1878 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1880 */     GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
     /* 1883 */     GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
     /* 1886 */     GIR_RootConstrainSelectedInstOperands,
     /* 1887 */     // GIR_Coverage, 235,
     /* 1887 */     GIR_EraseRootFromParent_Done,
     /* 1888 */   // Label 84: @1888
     /* 1888 */   GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1924), // Rule ID 236 //
     /* 1893 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
     /* 1896 */     // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (MOVSX_rr_32:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src))
     /* 1896 */     GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
     /* 1899 */     GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
     /* 1903 */     GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
     /* 1908 */     GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
     /* 1912 */     GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
     /* 1914 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
     /* 1917 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1919 */     GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
     /* 1922 */     GIR_RootConstrainSelectedInstOperands,
     /* 1923 */     // GIR_Coverage, 236,
     /* 1923 */     GIR_EraseRootFromParent_Done,
     /* 1924 */   // Label 85: @1924
     /* 1924 */   GIM_Reject,
     /* 1925 */ // Label 83: @1925
     /* 1925 */ GIM_Reject,
     /* 1926 */ // Label 15: @1926
     /* 1926 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 88*/ GIMT_Encode4(2121),
     /* 1937 */ /*GILLT_s32*//*Label 86*/ GIMT_Encode4(1945),
     /* 1941 */ /*GILLT_s64*//*Label 87*/ GIMT_Encode4(2019),
     /* 1945 */ // Label 86: @1945
     /* 1945 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(2018),
     /* 1950 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 1953 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1957 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 1961 */   GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1989), // Rule ID 105 //
     /* 1966 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
     /* 1969 */     // MIs[0] Operand 2
     /* 1969 */     GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
     /* 1980 */     // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i8:{ *:[Other] })  =>  (MOVSX_rr_32_8:{ *:[i32] } GPR32:{ *:[i32] }:$src)
     /* 1980 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_8),
     /* 1983 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 1985 */     GIR_RootToRootCopy, /*OpIdx*/1, // src
     /* 1987 */     GIR_RootConstrainSelectedInstOperands,
     /* 1988 */     // GIR_Coverage, 105,
     /* 1988 */     GIR_EraseRootFromParent_Done,
     /* 1989 */   // Label 90: @1989
     /* 1989 */   GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(2017), // Rule ID 106 //
     /* 1994 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
     /* 1997 */     // MIs[0] Operand 2
     /* 1997 */     GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
     /* 2008 */     // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i16:{ *:[Other] })  =>  (MOVSX_rr_32_16:{ *:[i32] } GPR32:{ *:[i32] }:$src)
     /* 2008 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_16),
     /* 2011 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2013 */     GIR_RootToRootCopy, /*OpIdx*/1, // src
     /* 2015 */     GIR_RootConstrainSelectedInstOperands,
     /* 2016 */     // GIR_Coverage, 106,
     /* 2016 */     GIR_EraseRootFromParent_Done,
     /* 2017 */   // Label 91: @2017
     /* 2017 */   GIM_Reject,
     /* 2018 */ // Label 89: @2018
     /* 2018 */ GIM_Reject,
     /* 2019 */ // Label 87: @2019
     /* 2019 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(2120),
     /* 2024 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 2027 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2031 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2035 */   GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(2063), // Rule ID 102 //
     /* 2040 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
     /* 2043 */     // MIs[0] Operand 2
     /* 2043 */     GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
     /* 2054 */     // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i8:{ *:[Other] })  =>  (MOVSX_rr_8:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2054 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_8),
     /* 2057 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2059 */     GIR_RootToRootCopy, /*OpIdx*/1, // src
     /* 2061 */     GIR_RootConstrainSelectedInstOperands,
     /* 2062 */     // GIR_Coverage, 102,
     /* 2062 */     GIR_EraseRootFromParent_Done,
     /* 2063 */   // Label 93: @2063
     /* 2063 */   GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(2091), // Rule ID 103 //
     /* 2068 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
     /* 2071 */     // MIs[0] Operand 2
     /* 2071 */     GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
     /* 2082 */     // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i16:{ *:[Other] })  =>  (MOVSX_rr_16:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2082 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_16),
     /* 2085 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2087 */     GIR_RootToRootCopy, /*OpIdx*/1, // src
     /* 2089 */     GIR_RootConstrainSelectedInstOperands,
     /* 2090 */     // GIR_Coverage, 103,
     /* 2090 */     GIR_EraseRootFromParent_Done,
     /* 2091 */   // Label 94: @2091
     /* 2091 */   GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(2119), // Rule ID 104 //
     /* 2096 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
     /* 2099 */     // MIs[0] Operand 2
     /* 2099 */     GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(32),
     /* 2110 */     // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i32:{ *:[Other] })  =>  (MOVSX_rr_32:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2110 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
     /* 2113 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2115 */     GIR_RootToRootCopy, /*OpIdx*/1, // src
     /* 2117 */     GIR_RootConstrainSelectedInstOperands,
     /* 2118 */     // GIR_Coverage, 104,
     /* 2118 */     GIR_EraseRootFromParent_Done,
     /* 2119 */   // Label 95: @2119
     /* 2119 */   GIM_Reject,
     /* 2120 */ // Label 92: @2120
     /* 2120 */ GIM_Reject,
     /* 2121 */ // Label 88: @2121
     /* 2121 */ GIM_Reject,
     /* 2122 */ // Label 16: @2122
     /* 2122 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(2148), // Rule ID 237 //
     /* 2127 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
     /* 2130 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 2133 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2137 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 2141 */   // (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src)
     /* 2141 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
     /* 2146 */   GIR_RootConstrainSelectedInstOperands,
     /* 2147 */   // GIR_Coverage, 237,
     /* 2147 */   GIR_Done,
     /* 2148 */ // Label 96: @2148
     /* 2148 */ GIM_Reject,
     /* 2149 */ // Label 17: @2149
     /* 2149 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 99*/ GIMT_Encode4(2214),
     /* 2160 */ /*GILLT_s32*//*Label 97*/ GIMT_Encode4(2168),
     /* 2164 */ /*GILLT_s64*//*Label 98*/ GIMT_Encode4(2191),
     /* 2168 */ // Label 97: @2168
     /* 2168 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(2190), // Rule ID 63 //
     /* 2173 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 2176 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 2179 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 2183 */   // (shl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SLL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 2183 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr_32),
     /* 2188 */   GIR_RootConstrainSelectedInstOperands,
     /* 2189 */   // GIR_Coverage, 63,
     /* 2189 */   GIR_Done,
     /* 2190 */ // Label 100: @2190
     /* 2190 */ GIM_Reject,
     /* 2191 */ // Label 98: @2191
     /* 2191 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(2213), // Rule ID 61 //
     /* 2196 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 2199 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 2202 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2206 */   // (shl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SLL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 2206 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr),
     /* 2211 */   GIR_RootConstrainSelectedInstOperands,
     /* 2212 */   // GIR_Coverage, 61,
     /* 2212 */   GIR_Done,
     /* 2213 */ // Label 101: @2213
     /* 2213 */ GIM_Reject,
     /* 2214 */ // Label 99: @2214
     /* 2214 */ GIM_Reject,
     /* 2215 */ // Label 18: @2215
     /* 2215 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 104*/ GIMT_Encode4(2538),
     /* 2226 */ /*GILLT_s32*//*Label 102*/ GIMT_Encode4(2234),
     /* 2230 */ /*GILLT_s64*//*Label 103*/ GIMT_Encode4(2257),
     /* 2234 */ // Label 102: @2234
     /* 2234 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(2256), // Rule ID 67 //
     /* 2239 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 2242 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 2245 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 2249 */   // (srl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SRL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 2249 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr_32),
     /* 2254 */   GIR_RootConstrainSelectedInstOperands,
     /* 2255 */   // GIR_Coverage, 67,
     /* 2255 */   GIR_Done,
     /* 2256 */ // Label 105: @2256
     /* 2256 */ GIM_Reject,
     /* 2257 */ // Label 103: @2257
     /* 2257 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(2537),
     /* 2262 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 2265 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 2268 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2272 */   GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(2314), // Rule ID 140 //
     /* 2277 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
     /* 2280 */     GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2284 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
     /* 2288 */     GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
     /* 2292 */     GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2297 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
     /* 2301 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2303 */     // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] })  =>  (BSWAP16:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2303 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP16),
     /* 2306 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2308 */     GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
     /* 2312 */     GIR_RootConstrainSelectedInstOperands,
     /* 2313 */     // GIR_Coverage, 140,
     /* 2313 */     GIR_EraseRootFromParent_Done,
     /* 2314 */   // Label 107: @2314
     /* 2314 */   GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(2356), // Rule ID 141 //
     /* 2319 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
     /* 2322 */     GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2326 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
     /* 2330 */     GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
     /* 2334 */     GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2339 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
     /* 2343 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2345 */     // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] })  =>  (BSWAP32:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2345 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP32),
     /* 2348 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2350 */     GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
     /* 2354 */     GIR_RootConstrainSelectedInstOperands,
     /* 2355 */     // GIR_Coverage, 141,
     /* 2355 */     GIR_EraseRootFromParent_Done,
     /* 2356 */   // Label 108: @2356
     /* 2356 */   GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(2398), // Rule ID 143 //
     /* 2361 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
     /* 2364 */     GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2368 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
     /* 2372 */     GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
     /* 2376 */     GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2381 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
     /* 2385 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2387 */     // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] })  =>  (BE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2387 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE16),
     /* 2390 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2392 */     GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
     /* 2396 */     GIR_RootConstrainSelectedInstOperands,
     /* 2397 */     // GIR_Coverage, 143,
     /* 2397 */     GIR_EraseRootFromParent_Done,
     /* 2398 */   // Label 109: @2398
     /* 2398 */   GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(2440), // Rule ID 144 //
     /* 2403 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
     /* 2406 */     GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2410 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
     /* 2414 */     GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
     /* 2418 */     GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2423 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
     /* 2427 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2429 */     // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] })  =>  (BE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2429 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE32),
     /* 2432 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2434 */     GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
     /* 2438 */     GIR_RootConstrainSelectedInstOperands,
     /* 2439 */     // GIR_Coverage, 144,
     /* 2439 */     GIR_EraseRootFromParent_Done,
     /* 2440 */   // Label 110: @2440
     /* 2440 */   GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(2482), // Rule ID 146 //
     /* 2445 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
     /* 2448 */     GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2452 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
     /* 2456 */     GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
     /* 2460 */     GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2465 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
     /* 2469 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2471 */     // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] })  =>  (LE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2471 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE16),
     /* 2474 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2476 */     GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
     /* 2480 */     GIR_RootConstrainSelectedInstOperands,
     /* 2481 */     // GIR_Coverage, 146,
     /* 2481 */     GIR_EraseRootFromParent_Done,
     /* 2482 */   // Label 111: @2482
     /* 2482 */   GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2524), // Rule ID 147 //
     /* 2487 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
     /* 2490 */     GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
     /* 2494 */     GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
     /* 2498 */     GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
     /* 2502 */     GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2507 */     GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
     /* 2511 */     GIM_CheckIsSafeToFold, /*NumInsns*/1,
     /* 2513 */     // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] })  =>  (LE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2513 */     GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE32),
     /* 2516 */     GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
     /* 2518 */     GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
     /* 2522 */     GIR_RootConstrainSelectedInstOperands,
     /* 2523 */     // GIR_Coverage, 147,
     /* 2523 */     GIR_EraseRootFromParent_Done,
     /* 2524 */   // Label 112: @2524
     /* 2524 */   GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2536), // Rule ID 65 //
     /* 2529 */     // (srl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SRL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 2529 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr),
     /* 2534 */     GIR_RootConstrainSelectedInstOperands,
     /* 2535 */     // GIR_Coverage, 65,
     /* 2535 */     GIR_Done,
     /* 2536 */   // Label 113: @2536
     /* 2536 */   GIM_Reject,
     /* 2537 */ // Label 106: @2537
     /* 2537 */ GIM_Reject,
     /* 2538 */ // Label 104: @2538
     /* 2538 */ GIM_Reject,
     /* 2539 */ // Label 19: @2539
     /* 2539 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 116*/ GIMT_Encode4(2604),
     /* 2550 */ /*GILLT_s32*//*Label 114*/ GIMT_Encode4(2558),
     /* 2554 */ /*GILLT_s64*//*Label 115*/ GIMT_Encode4(2581),
     /* 2558 */ // Label 114: @2558
     /* 2558 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2580), // Rule ID 75 //
     /* 2563 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
     /* 2566 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
     /* 2569 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
     /* 2573 */   // (sra:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SRA_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
     /* 2573 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr_32),
     /* 2578 */   GIR_RootConstrainSelectedInstOperands,
     /* 2579 */   // GIR_Coverage, 75,
     /* 2579 */   GIR_Done,
     /* 2580 */ // Label 117: @2580
     /* 2580 */ GIM_Reject,
     /* 2581 */ // Label 115: @2581
     /* 2581 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2603), // Rule ID 73 //
     /* 2586 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 2589 */   GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
     /* 2592 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2596 */   // (sra:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SRA_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
     /* 2596 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr),
     /* 2601 */   GIR_RootConstrainSelectedInstOperands,
     /* 2602 */   // GIR_Coverage, 73,
     /* 2602 */   GIR_Done,
     /* 2603 */ // Label 118: @2603
     /* 2603 */ GIM_Reject,
     /* 2604 */ // Label 116: @2604
     /* 2604 */ GIM_Reject,
     /* 2605 */ // Label 20: @2605
     /* 2605 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2620), // Rule ID 124 //
     /* 2610 */   // MIs[0] BrDst
     /* 2610 */   GIM_CheckIsMBB, /*MI*/0, /*Op*/0,
     /* 2613 */   // (br (bb:{ *:[Other] }):$BrDst)  =>  (JMP (bb:{ *:[Other] }):$BrDst)
     /* 2613 */   GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::JMP),
     /* 2618 */   GIR_RootConstrainSelectedInstOperands,
     /* 2619 */   // GIR_Coverage, 124,
     /* 2619 */   GIR_Done,
     /* 2620 */ // Label 119: @2620
     /* 2620 */ GIM_Reject,
     /* 2621 */ // Label 21: @2621
     /* 2621 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2686),
     /* 2626 */   GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
     /* 2629 */   GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
     /* 2632 */   GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2636 */   GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
     /* 2640 */   GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2655), // Rule ID 142 //
     /* 2645 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
     /* 2648 */     // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src)  =>  (BSWAP64:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2648 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP64),
     /* 2653 */     GIR_RootConstrainSelectedInstOperands,
     /* 2654 */     // GIR_Coverage, 142,
     /* 2654 */     GIR_Done,
     /* 2655 */   // Label 121: @2655
     /* 2655 */   GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2670), // Rule ID 145 //
     /* 2660 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
     /* 2663 */     // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src)  =>  (BE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2663 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE64),
     /* 2668 */     GIR_RootConstrainSelectedInstOperands,
     /* 2669 */     // GIR_Coverage, 145,
     /* 2669 */     GIR_Done,
     /* 2670 */   // Label 122: @2670
     /* 2670 */   GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2685), // Rule ID 148 //
     /* 2675 */     GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
     /* 2678 */     // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src)  =>  (LE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
     /* 2678 */     GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE64),
     /* 2683 */     GIR_RootConstrainSelectedInstOperands,
     /* 2684 */     // GIR_Coverage, 148,
     /* 2684 */     GIR_Done,
     /* 2685 */   // Label 123: @2685
     /* 2685 */   GIM_Reject,
     /* 2686 */ // Label 120: @2686
     /* 2686 */ GIM_Reject,
     /* 2687 */ // Label 22: @2687
     /* 2687 */ GIM_Reject,
     /* 2688 */ }; // Size: 2688 bytes
  return MatchTable0;
}
#undef GIMT_Encode2
#undef GIMT_Encode4
#undef GIMT_Encode8

#endif // ifdef GET_GLOBALISEL_IMPL

#ifdef GET_GLOBALISEL_PREDICATES_DECL
PredicateBitset AvailableModuleFeatures;
mutable PredicateBitset AvailableFunctionFeatures;
PredicateBitset getAvailableFeatures() const {
  return AvailableModuleFeatures | AvailableFunctionFeatures;
}
PredicateBitset
computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const;
PredicateBitset
computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget,
                                 const MachineFunction *MF) const;
void setupGeneratedPerFunctionState(MachineFunction &MF) override;
#endif // ifdef GET_GLOBALISEL_PREDICATES_DECL
#ifdef GET_GLOBALISEL_PREDICATES_INIT
AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
AvailableFunctionFeatures()
#endif // ifdef GET_GLOBALISEL_PREDICATES_INIT
