Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/BPF/BPFGenGlobalISel.inc
Line
Count
Source (jump to first uncovered line)
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* Global Instruction Selector for the BPF target                             *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
#ifdef GET_GLOBALISEL_PREDICATE_BITSET
10
const unsigned MAX_SUBTARGET_PREDICATES = 10;
11
using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
12
#endif // ifdef GET_GLOBALISEL_PREDICATE_BITSET
13
14
#ifdef GET_GLOBALISEL_TEMPORARIES_DECL
15
  mutable MatcherState State;
16
  typedef ComplexRendererFns(BPFInstructionSelector::*ComplexMatcherMemFn)(MachineOperand &) const;
17
  typedef void(BPFInstructionSelector::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
18
  const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
19
  static BPFInstructionSelector::ComplexMatcherMemFn ComplexPredicateFns[];
20
  static BPFInstructionSelector::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 uint8_t *getMatchTable() const override;
25
  bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
26
  bool testSimplePredicate(unsigned PredicateID) const override;
27
  void runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
28
#endif // ifdef GET_GLOBALISEL_TEMPORARIES_DECL
29
30
#ifdef GET_GLOBALISEL_TEMPORARIES_INIT
31
, State(0),
32
ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
33
#endif // ifdef GET_GLOBALISEL_TEMPORARIES_INIT
34
35
#ifdef GET_GLOBALISEL_IMPL
36
// LLT Objects.
37
enum {
38
  GILLT_s32,
39
  GILLT_s64,
40
};
41
const static size_t NumTypeObjects = 2;
42
const static LLT TypeObjects[] = {
43
  LLT::scalar(32),
44
  LLT::scalar(64),
45
};
46
47
// Bits for subtarget features that participate in instruction matching.
48
enum SubtargetFeatureBits : uint8_t {
49
  Feature_BPFIsLittleEndianBit = 7,
50
  Feature_BPFIsBigEndianBit = 8,
51
  Feature_BPFHasALU32Bit = 5,
52
  Feature_BPFNoALU32Bit = 2,
53
  Feature_BPFHasLdsxBit = 4,
54
  Feature_BPFHasMovsxBit = 1,
55
  Feature_BPFHasBswapBit = 6,
56
  Feature_BPFHasSdivSmodBit = 0,
57
  Feature_BPFNoMovsxBit = 9,
58
  Feature_BPFHasStoreImmBit = 3,
59
};
60
61
PredicateBitset BPFInstructionSelector::
62
2
computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const {
63
2
  PredicateBitset Features;
64
2
  if (Subtarget->isLittleEndian())
65
2
    Features.set(Feature_BPFIsLittleEndianBit);
66
2
  if (!Subtarget->isLittleEndian())
67
0
    Features.set(Feature_BPFIsBigEndianBit);
68
2
  if (Subtarget->getHasAlu32())
69
0
    Features.set(Feature_BPFHasALU32Bit);
70
2
  if (!Subtarget->getHasAlu32())
71
2
    Features.set(Feature_BPFNoALU32Bit);
72
2
  if (Subtarget->hasLdsx())
73
0
    Features.set(Feature_BPFHasLdsxBit);
74
2
  if (Subtarget->hasMovsx())
75
0
    Features.set(Feature_BPFHasMovsxBit);
76
2
  if (Subtarget->hasBswap())
77
0
    Features.set(Feature_BPFHasBswapBit);
78
2
  if (Subtarget->hasSdivSmod())
79
0
    Features.set(Feature_BPFHasSdivSmodBit);
80
2
  if (!Subtarget->hasMovsx())
81
2
    Features.set(Feature_BPFNoMovsxBit);
82
2
  if (Subtarget->hasStoreImm())
83
0
    Features.set(Feature_BPFHasStoreImmBit);
84
2
  return Features;
85
2
}
86
87
0
void BPFInstructionSelector::setupGeneratedPerFunctionState(MachineFunction &MF) {
88
0
  AvailableFunctionFeatures = computeAvailableFunctionFeatures((const BPFSubtarget *)&MF.getSubtarget(), &MF);
89
0
}
90
PredicateBitset BPFInstructionSelector::
91
0
computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget, const MachineFunction *MF) const {
92
0
  PredicateBitset Features;
93
0
  return Features;
94
0
}
95
96
// Feature bitsets.
97
enum {
98
  GIFBS_Invalid,
99
  GIFBS_BPFHasBswap,
100
  GIFBS_BPFHasMovsx,
101
  GIFBS_BPFHasSdivSmod,
102
  GIFBS_BPFIsBigEndian,
103
  GIFBS_BPFIsLittleEndian,
104
  GIFBS_BPFNoMovsx,
105
};
106
constexpr static PredicateBitset FeatureBitsets[] {
107
  {}, // GIFBS_Invalid
108
  {Feature_BPFHasBswapBit, },
109
  {Feature_BPFHasMovsxBit, },
110
  {Feature_BPFHasSdivSmodBit, },
111
  {Feature_BPFIsBigEndianBit, },
112
  {Feature_BPFIsLittleEndianBit, },
113
  {Feature_BPFNoMovsxBit, },
114
};
115
116
// ComplexPattern predicates.
117
enum {
118
  GICP_Invalid,
119
};
120
// See constructor for table contents
121
122
BPFInstructionSelector::ComplexMatcherMemFn
123
BPFInstructionSelector::ComplexPredicateFns[] = {
124
  nullptr, // GICP_Invalid
125
};
126
127
// PatFrag predicates.
128
0
bool BPFInstructionSelector::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
129
0
  const MachineFunction &MF = *MI.getParent()->getParent();
130
0
  const MachineRegisterInfo &MRI = MF.getRegInfo();
131
0
  const auto &Operands = State.RecordedOperands;
132
0
  (void)Operands;
133
0
  (void)MRI;
134
0
  llvm_unreachable("Unknown predicate");
135
0
  return false;
136
0
}
137
// PatFrag predicates.
138
0
bool BPFInstructionSelector::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
139
0
  llvm_unreachable("Unknown predicate");
140
0
  return false;
141
0
}
142
// PatFrag predicates.
143
0
bool BPFInstructionSelector::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
144
0
  llvm_unreachable("Unknown predicate");
145
0
  return false;
146
0
}
147
// PatFrag predicates.
148
0
bool BPFInstructionSelector::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
149
0
  llvm_unreachable("Unknown predicate");
150
0
  return false;
151
0
}
152
0
bool BPFInstructionSelector::testSimplePredicate(unsigned) const {
153
0
    llvm_unreachable("BPFInstructionSelector does not support simple predicates!");
154
0
  return false;
155
0
}
156
// Custom renderers.
157
enum {
158
  GICR_Invalid,
159
};
160
BPFInstructionSelector::CustomRendererFn
161
BPFInstructionSelector::CustomRenderers[] = {
162
  nullptr, // GICR_Invalid
163
};
164
165
0
bool BPFInstructionSelector::selectImpl(MachineInstr &I, CodeGenCoverage &CoverageInfo) const {
166
0
  const PredicateBitset AvailableFeatures = getAvailableFeatures();
167
0
  MachineIRBuilder B(I);
168
0
  State.MIs.clear();
169
0
  State.MIs.push_back(&I);
170
171
0
  if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), TII, MF->getRegInfo(), TRI, RBI, AvailableFeatures, &CoverageInfo)) {
172
0
    return true;
173
0
  }
174
175
0
  return false;
176
0
}
177
178
0
void BPFInstructionSelector::runCustomAction(unsigned, const MatcherState&, NewMIVector &) const {
179
0
    llvm_unreachable("BPFInstructionSelector does not support custom C++ actions!");
180
0
}
181
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
182
0
#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((uint16_t)Val >> 8)
183
0
#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((uint32_t)Val >> 8), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 24)
184
0
#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((uint64_t)Val >> 8), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_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)
185
#else
186
#define GIMT_Encode2(Val) uint8_t((uint16_t)Val >> 8), uint8_t(Val)
187
#define GIMT_Encode4(Val) uint8_t((uint32_t)Val >> 24), uint8_t((uint32_t)Val >> 16), uint8_t((uint32_t)Val >> 8), uint8_t(Val)
188
#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((uint64_t)Val >> 24), uint8_t((uint64_t)Val >> 16), uint8_t((uint64_t)Val >> 8), uint8_t(Val)
189
#endif
190
0
const uint8_t *BPFInstructionSelector::getMatchTable() const {
191
0
  constexpr static uint8_t MatchTable0[] = {
192
0
    GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(47), GIMT_Encode2(223), /*)*//*default:*//*Label 21*/ GIMT_Encode4(2599),
193
0
    /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(714),
194
0
    /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(788),
195
0
    /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(926),
196
0
    /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1000),
197
0
    /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1080),
198
0
    /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1154),
199
0
    /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1234), GIMT_Encode4(0), GIMT_Encode4(0),
200
0
    /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1308),
201
0
    /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1449),
202
0
    /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1523), 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),
203
0
    /*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ GIMT_Encode4(1597), GIMT_Encode4(0), GIMT_Encode4(0),
204
0
    /*TargetOpcode::G_ANYEXT*//*Label 11*/ GIMT_Encode4(1673),
205
0
    /*TargetOpcode::G_TRUNC*//*Label 12*/ GIMT_Encode4(1747),
206
0
    /*TargetOpcode::G_CONSTANT*//*Label 13*/ GIMT_Encode4(1798), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
207
0
    /*TargetOpcode::G_SEXT*//*Label 14*/ GIMT_Encode4(1829), GIMT_Encode4(0),
208
0
    /*TargetOpcode::G_ZEXT*//*Label 15*/ GIMT_Encode4(1961),
209
0
    /*TargetOpcode::G_SHL*//*Label 16*/ GIMT_Encode4(1993),
210
0
    /*TargetOpcode::G_LSHR*//*Label 17*/ GIMT_Encode4(2067),
211
0
    /*TargetOpcode::G_ASHR*//*Label 18*/ GIMT_Encode4(2435), 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),
212
0
    /*TargetOpcode::G_BR*//*Label 19*/ GIMT_Encode4(2509), 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),
213
0
    /*TargetOpcode::G_BSWAP*//*Label 20*/ GIMT_Encode4(2526),
214
    // Label 0: @714
215
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 24*/ GIMT_Encode4(787),
216
0
    /*GILLT_s32*//*Label 22*/ GIMT_Encode4(733),
217
0
    /*GILLT_s64*//*Label 23*/ GIMT_Encode4(760),
218
    // Label 22: @733
219
0
    GIM_Try, /*On fail goto*//*Label 25*/ GIMT_Encode4(759), // Rule ID 46 //
220
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
221
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
222
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
223
      // (add:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (ADD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
224
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr_32),
225
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
226
      // GIR_Coverage, 46,
227
0
      GIR_Done,
228
    // Label 25: @759
229
0
    GIM_Reject,
230
    // Label 23: @760
231
0
    GIM_Try, /*On fail goto*//*Label 26*/ GIMT_Encode4(786), // Rule ID 44 //
232
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
233
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
234
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
235
      // (add:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (ADD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
236
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr),
237
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
238
      // GIR_Coverage, 44,
239
0
      GIR_Done,
240
    // Label 26: @786
241
0
    GIM_Reject,
242
    // Label 24: @787
243
0
    GIM_Reject,
244
    // Label 1: @788
245
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 29*/ GIMT_Encode4(925),
246
0
    /*GILLT_s32*//*Label 27*/ GIMT_Encode4(807),
247
0
    /*GILLT_s64*//*Label 28*/ GIMT_Encode4(866),
248
    // Label 27: @807
249
0
    GIM_Try, /*On fail goto*//*Label 30*/ GIMT_Encode4(865),
250
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
251
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
252
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
253
0
      GIM_Try, /*On fail goto*//*Label 31*/ GIMT_Encode4(851), // Rule ID 97 //
254
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
255
        // (sub:{ *:[i32] } 0:{ *:[i32] }, i32:{ *:[i32] }:$src)  =>  (NEG_32:{ *:[i32] } i32:{ *:[i32] }:$src)
256
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::NEG_32),
257
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
258
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
259
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
260
0
        GIR_EraseFromParent, /*InsnID*/0,
261
        // GIR_Coverage, 97,
262
0
        GIR_Done,
263
      // Label 31: @851
264
0
      GIM_Try, /*On fail goto*//*Label 32*/ GIMT_Encode4(864), // Rule ID 50 //
265
        // (sub:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SUB_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
266
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr_32),
267
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
268
        // GIR_Coverage, 50,
269
0
        GIR_Done,
270
      // Label 32: @864
271
0
      GIM_Reject,
272
    // Label 30: @865
273
0
    GIM_Reject,
274
    // Label 28: @866
275
0
    GIM_Try, /*On fail goto*//*Label 33*/ GIMT_Encode4(924),
276
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
277
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
278
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
279
0
      GIM_Try, /*On fail goto*//*Label 34*/ GIMT_Encode4(910), // Rule ID 96 //
280
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
281
        // (sub:{ *:[i64] } 0:{ *:[i64] }, i64:{ *:[i64] }:$src)  =>  (NEG_64:{ *:[i64] } i64:{ *:[i64] }:$src)
282
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::NEG_64),
283
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
284
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/2, // src
285
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
286
0
        GIR_EraseFromParent, /*InsnID*/0,
287
        // GIR_Coverage, 96,
288
0
        GIR_Done,
289
      // Label 34: @910
290
0
      GIM_Try, /*On fail goto*//*Label 35*/ GIMT_Encode4(923), // Rule ID 48 //
291
        // (sub:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SUB_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
292
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr),
293
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
294
        // GIR_Coverage, 48,
295
0
        GIR_Done,
296
      // Label 35: @923
297
0
      GIM_Reject,
298
    // Label 33: @924
299
0
    GIM_Reject,
300
    // Label 29: @925
301
0
    GIM_Reject,
302
    // Label 2: @926
303
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 38*/ GIMT_Encode4(999),
304
0
    /*GILLT_s32*//*Label 36*/ GIMT_Encode4(945),
305
0
    /*GILLT_s64*//*Label 37*/ GIMT_Encode4(972),
306
    // Label 36: @945
307
0
    GIM_Try, /*On fail goto*//*Label 39*/ GIMT_Encode4(971), // Rule ID 78 //
308
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
309
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
310
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
311
      // (mul:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (MUL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
312
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr_32),
313
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
314
      // GIR_Coverage, 78,
315
0
      GIR_Done,
316
    // Label 39: @971
317
0
    GIM_Reject,
318
    // Label 37: @972
319
0
    GIM_Try, /*On fail goto*//*Label 40*/ GIMT_Encode4(998), // Rule ID 76 //
320
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
321
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
322
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
323
      // (mul:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (MUL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
324
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr),
325
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
326
      // GIR_Coverage, 76,
327
0
      GIR_Done,
328
    // Label 40: @998
329
0
    GIM_Reject,
330
    // Label 38: @999
331
0
    GIM_Reject,
332
    // Label 3: @1000
333
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 43*/ GIMT_Encode4(1079),
334
0
    /*GILLT_s32*//*Label 41*/ GIMT_Encode4(1019),
335
0
    /*GILLT_s64*//*Label 42*/ GIMT_Encode4(1049),
336
    // Label 41: @1019
337
0
    GIM_Try, /*On fail goto*//*Label 44*/ GIMT_Encode4(1048), // Rule ID 90 //
338
0
      GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
339
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
340
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
341
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
342
      // (sdiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SDIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
343
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr_32),
344
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
345
      // GIR_Coverage, 90,
346
0
      GIR_Done,
347
    // Label 44: @1048
348
0
    GIM_Reject,
349
    // Label 42: @1049
350
0
    GIM_Try, /*On fail goto*//*Label 45*/ GIMT_Encode4(1078), // Rule ID 88 //
351
0
      GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
352
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
353
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
354
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
355
      // (sdiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SDIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
356
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr),
357
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
358
      // GIR_Coverage, 88,
359
0
      GIR_Done,
360
    // Label 45: @1078
361
0
    GIM_Reject,
362
    // Label 43: @1079
363
0
    GIM_Reject,
364
    // Label 4: @1080
365
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 48*/ GIMT_Encode4(1153),
366
0
    /*GILLT_s32*//*Label 46*/ GIMT_Encode4(1099),
367
0
    /*GILLT_s64*//*Label 47*/ GIMT_Encode4(1126),
368
    // Label 46: @1099
369
0
    GIM_Try, /*On fail goto*//*Label 49*/ GIMT_Encode4(1125), // Rule ID 82 //
370
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
371
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
372
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
373
      // (udiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (DIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
374
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr_32),
375
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
376
      // GIR_Coverage, 82,
377
0
      GIR_Done,
378
    // Label 49: @1125
379
0
    GIM_Reject,
380
    // Label 47: @1126
381
0
    GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(1152), // Rule ID 80 //
382
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
383
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
384
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
385
      // (udiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (DIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
386
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr),
387
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
388
      // GIR_Coverage, 80,
389
0
      GIR_Done,
390
    // Label 50: @1152
391
0
    GIM_Reject,
392
    // Label 48: @1153
393
0
    GIM_Reject,
394
    // Label 5: @1154
395
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 53*/ GIMT_Encode4(1233),
396
0
    /*GILLT_s32*//*Label 51*/ GIMT_Encode4(1173),
397
0
    /*GILLT_s64*//*Label 52*/ GIMT_Encode4(1203),
398
    // Label 51: @1173
399
0
    GIM_Try, /*On fail goto*//*Label 54*/ GIMT_Encode4(1202), // Rule ID 94 //
400
0
      GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
401
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
402
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
403
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
404
      // (srem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SMOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
405
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr_32),
406
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
407
      // GIR_Coverage, 94,
408
0
      GIR_Done,
409
    // Label 54: @1202
410
0
    GIM_Reject,
411
    // Label 52: @1203
412
0
    GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(1232), // Rule ID 92 //
413
0
      GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
414
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
415
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
416
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
417
      // (srem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SMOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
418
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr),
419
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
420
      // GIR_Coverage, 92,
421
0
      GIR_Done,
422
    // Label 55: @1232
423
0
    GIM_Reject,
424
    // Label 53: @1233
425
0
    GIM_Reject,
426
    // Label 6: @1234
427
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 58*/ GIMT_Encode4(1307),
428
0
    /*GILLT_s32*//*Label 56*/ GIMT_Encode4(1253),
429
0
    /*GILLT_s64*//*Label 57*/ GIMT_Encode4(1280),
430
    // Label 56: @1253
431
0
    GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(1279), // Rule ID 86 //
432
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
433
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
434
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
435
      // (urem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (MOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
436
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr_32),
437
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
438
      // GIR_Coverage, 86,
439
0
      GIR_Done,
440
    // Label 59: @1279
441
0
    GIM_Reject,
442
    // Label 57: @1280
443
0
    GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1306), // Rule ID 84 //
444
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
445
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
446
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
447
      // (urem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (MOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
448
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr),
449
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
450
      // GIR_Coverage, 84,
451
0
      GIR_Done,
452
    // Label 60: @1306
453
0
    GIM_Reject,
454
    // Label 58: @1307
455
0
    GIM_Reject,
456
    // Label 7: @1308
457
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 63*/ GIMT_Encode4(1448),
458
0
    /*GILLT_s32*//*Label 61*/ GIMT_Encode4(1327),
459
0
    /*GILLT_s64*//*Label 62*/ GIMT_Encode4(1354),
460
    // Label 61: @1327
461
0
    GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(1353), // Rule ID 58 //
462
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
463
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
464
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
465
      // (and:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (AND_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
466
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr_32),
467
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
468
      // GIR_Coverage, 58,
469
0
      GIR_Done,
470
    // Label 64: @1353
471
0
    GIM_Reject,
472
    // Label 62: @1354
473
0
    GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1447),
474
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
475
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
476
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
477
0
      GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1433), // Rule ID 174 //
478
0
        GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
479
0
        GIM_CheckConstantInt, /*MI*/0, /*Op*/2, GIMT_Encode8(4294967295),
480
        // (and:{ *:[i64] } GPR:{ *:[i64] }:$src, 4294967295:{ *:[i64] })  =>  (SRL_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } GPR:{ *:[i64] }:$src, 32:{ *:[i64] }), 32:{ *:[i64] })
481
0
        GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
482
0
        GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
483
0
        GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
484
0
        GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
485
0
        GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
486
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
487
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_ri),
488
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
489
0
        GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
490
0
        GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
491
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
492
0
        GIR_EraseFromParent, /*InsnID*/0,
493
        // GIR_Coverage, 174,
494
0
        GIR_Done,
495
      // Label 66: @1433
496
0
      GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1446), // Rule ID 56 //
497
        // (and:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (AND_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
498
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr),
499
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
500
        // GIR_Coverage, 56,
501
0
        GIR_Done,
502
      // Label 67: @1446
503
0
      GIM_Reject,
504
    // Label 65: @1447
505
0
    GIM_Reject,
506
    // Label 63: @1448
507
0
    GIM_Reject,
508
    // Label 8: @1449
509
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 70*/ GIMT_Encode4(1522),
510
0
    /*GILLT_s32*//*Label 68*/ GIMT_Encode4(1468),
511
0
    /*GILLT_s64*//*Label 69*/ GIMT_Encode4(1495),
512
    // Label 68: @1468
513
0
    GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1494), // Rule ID 54 //
514
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
515
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
516
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
517
      // (or:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (OR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
518
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr_32),
519
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
520
      // GIR_Coverage, 54,
521
0
      GIR_Done,
522
    // Label 71: @1494
523
0
    GIM_Reject,
524
    // Label 69: @1495
525
0
    GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1521), // Rule ID 52 //
526
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
527
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
528
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
529
      // (or:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (OR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
530
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr),
531
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
532
      // GIR_Coverage, 52,
533
0
      GIR_Done,
534
    // Label 72: @1521
535
0
    GIM_Reject,
536
    // Label 70: @1522
537
0
    GIM_Reject,
538
    // Label 9: @1523
539
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 75*/ GIMT_Encode4(1596),
540
0
    /*GILLT_s32*//*Label 73*/ GIMT_Encode4(1542),
541
0
    /*GILLT_s64*//*Label 74*/ GIMT_Encode4(1569),
542
    // Label 73: @1542
543
0
    GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1568), // Rule ID 70 //
544
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
545
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
546
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
547
      // (xor:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (XOR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
548
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr_32),
549
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
550
      // GIR_Coverage, 70,
551
0
      GIR_Done,
552
    // Label 76: @1568
553
0
    GIM_Reject,
554
    // Label 74: @1569
555
0
    GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1595), // Rule ID 68 //
556
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
557
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
558
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
559
      // (xor:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (XOR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
560
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr),
561
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
562
      // GIR_Coverage, 68,
563
0
      GIR_Done,
564
    // Label 77: @1595
565
0
    GIM_Reject,
566
    // Label 75: @1596
567
0
    GIM_Reject,
568
    // Label 10: @1597
569
0
    GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1672), // Rule ID 107 //
570
0
      GIM_CheckNumOperands, /*MI*/0, /*Expected*/4,
571
0
      GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, GIMT_Encode2(Intrinsic::bpf_pseudo),
572
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
573
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
574
0
      GIM_CheckType, /*MI*/0, /*Op*/3, /*Type*/GILLT_s64,
575
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
576
0
      GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
577
0
      GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
578
      // MIs[1] Operand 1
579
      // No operand predicates
580
0
      GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/3, // MIs[2]
581
0
      GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
582
      // MIs[2] Operand 1
583
      // No operand predicates
584
0
      GIM_CheckIsSafeToFold, /*InsnID*/1,
585
0
      GIM_CheckIsSafeToFold, /*InsnID*/2,
586
      // (intrinsic_w_chain:{ *:[i64] } 3279:{ *:[iPTR] }, (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)  =>  (LD_pseudo:{ *:[i64] } (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)
587
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LD_pseudo),
588
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
589
0
      GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // pseudo
590
0
      GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
591
0
      GIR_MergeMemOperands, /*InsnID*/0, /*NumInsns*/3, /*MergeInsnID's*/0, 1, 2,
592
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
593
0
      GIR_EraseFromParent, /*InsnID*/0,
594
      // GIR_Coverage, 107,
595
0
      GIR_Done,
596
    // Label 78: @1672
597
0
    GIM_Reject,
598
    // Label 11: @1673
599
0
    GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1746), // Rule ID 188 //
600
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
601
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
602
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
603
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
604
      // (anyext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GPR32:{ *:[i32] }:$src, sub_32:{ *:[i32] })
605
0
      GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
606
0
      GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::IMPLICIT_DEF),
607
0
      GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
608
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
609
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(TargetOpcode::INSERT_SUBREG),
610
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
611
0
      GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
612
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, // src
613
0
      GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
614
0
      GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPRRegClassID),
615
0
      GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
616
0
      GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/2, GIMT_Encode2(BPF::GPR32RegClassID),
617
0
      GIR_EraseFromParent, /*InsnID*/0,
618
      // GIR_Coverage, 188,
619
0
      GIR_Done,
620
    // Label 79: @1746
621
0
    GIM_Reject,
622
    // Label 12: @1747
623
0
    GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1797), // Rule ID 187 //
624
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s32,
625
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
626
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
627
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
628
      // (trunc:{ *:[i32] } GPR:{ *:[i64] }:$src)  =>  (EXTRACT_SUBREG:{ *:[i32] } GPR:{ *:[i64] }:$src, sub_32:{ *:[i32] })
629
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
630
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
631
0
      GIR_CopySubReg, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/GIMT_Encode2(1), // src
632
0
      GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPR32RegClassID),
633
0
      GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
634
0
      GIR_EraseFromParent, /*InsnID*/0,
635
      // GIR_Coverage, 187,
636
0
      GIR_Done,
637
    // Label 80: @1797
638
0
    GIM_Reject,
639
    // Label 13: @1798
640
0
    GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1828), // Rule ID 98 //
641
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
642
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
643
      // MIs[0] Operand 1
644
      // No operand predicates
645
      // (imm:{ *:[i64] }):$imm  =>  (LD_imm64:{ *:[i64] } (imm:{ *:[i64] }):$imm)
646
0
      GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LD_imm64),
647
0
      GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
648
0
      GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/0, // imm
649
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
650
0
      GIR_EraseFromParent, /*InsnID*/0,
651
      // GIR_Coverage, 98,
652
0
      GIR_Done,
653
    // Label 81: @1828
654
0
    GIM_Reject,
655
    // Label 14: @1829
656
0
    GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1960),
657
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
658
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
659
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
660
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
661
0
      GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1917), // Rule ID 184 //
662
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFNoMovsx),
663
        // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (SRA_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src), 32:{ *:[i64] }), 32:{ *:[i64] })
664
0
        GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
665
0
        GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
666
0
        GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
667
0
        GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
668
0
        GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
669
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
670
0
        GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
671
0
        GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
672
0
        GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
673
0
        GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
674
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
675
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_ri),
676
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
677
0
        GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
678
0
        GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
679
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
680
0
        GIR_EraseFromParent, /*InsnID*/0,
681
        // GIR_Coverage, 184,
682
0
        GIR_Done,
683
      // Label 83: @1917
684
0
      GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1959), // Rule ID 185 //
685
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
686
        // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (MOVSX_rr_32:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src))
687
0
        GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
688
0
        GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
689
0
        GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(RegState::Define),
690
0
        GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
691
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
692
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
693
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
694
0
        GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
695
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
696
0
        GIR_EraseFromParent, /*InsnID*/0,
697
        // GIR_Coverage, 185,
698
0
        GIR_Done,
699
      // Label 84: @1959
700
0
      GIM_Reject,
701
    // Label 82: @1960
702
0
    GIM_Reject,
703
    // Label 15: @1961
704
0
    GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1992), // Rule ID 186 //
705
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
706
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
707
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
708
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
709
      // (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src)  =>  (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src)
710
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
711
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
712
      // GIR_Coverage, 186,
713
0
      GIR_Done,
714
    // Label 85: @1992
715
0
    GIM_Reject,
716
    // Label 16: @1993
717
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 88*/ GIMT_Encode4(2066),
718
0
    /*GILLT_s32*//*Label 86*/ GIMT_Encode4(2012),
719
0
    /*GILLT_s64*//*Label 87*/ GIMT_Encode4(2039),
720
    // Label 86: @2012
721
0
    GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(2038), // Rule ID 62 //
722
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
723
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
724
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
725
      // (shl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SLL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
726
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr_32),
727
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
728
      // GIR_Coverage, 62,
729
0
      GIR_Done,
730
    // Label 89: @2038
731
0
    GIM_Reject,
732
    // Label 87: @2039
733
0
    GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(2065), // Rule ID 60 //
734
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
735
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
736
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
737
      // (shl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SLL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
738
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr),
739
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
740
      // GIR_Coverage, 60,
741
0
      GIR_Done,
742
    // Label 90: @2065
743
0
    GIM_Reject,
744
    // Label 88: @2066
745
0
    GIM_Reject,
746
    // Label 17: @2067
747
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 93*/ GIMT_Encode4(2434),
748
0
    /*GILLT_s32*//*Label 91*/ GIMT_Encode4(2086),
749
0
    /*GILLT_s64*//*Label 92*/ GIMT_Encode4(2113),
750
    // Label 91: @2086
751
0
    GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(2112), // Rule ID 66 //
752
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
753
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
754
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
755
      // (srl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SRL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
756
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr_32),
757
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
758
      // GIR_Coverage, 66,
759
0
      GIR_Done,
760
    // Label 94: @2112
761
0
    GIM_Reject,
762
    // Label 92: @2113
763
0
    GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(2433),
764
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
765
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
766
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
767
0
      GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(2179), // Rule ID 148 //
768
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
769
0
        GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
770
0
        GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
771
0
        GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
772
0
        GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
773
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
774
0
        GIM_CheckIsSafeToFold, /*InsnID*/1,
775
        // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] })  =>  (BSWAP16:{ *:[i64] } GPR:{ *:[i64] }:$src)
776
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP16),
777
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
778
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
779
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
780
0
        GIR_EraseFromParent, /*InsnID*/0,
781
        // GIR_Coverage, 148,
782
0
        GIR_Done,
783
      // Label 96: @2179
784
0
      GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(2227), // Rule ID 149 //
785
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
786
0
        GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
787
0
        GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
788
0
        GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
789
0
        GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
790
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
791
0
        GIM_CheckIsSafeToFold, /*InsnID*/1,
792
        // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] })  =>  (BSWAP32:{ *:[i64] } GPR:{ *:[i64] }:$src)
793
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP32),
794
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
795
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
796
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
797
0
        GIR_EraseFromParent, /*InsnID*/0,
798
        // GIR_Coverage, 149,
799
0
        GIR_Done,
800
      // Label 97: @2227
801
0
      GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(2275), // Rule ID 151 //
802
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
803
0
        GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
804
0
        GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
805
0
        GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
806
0
        GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
807
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
808
0
        GIM_CheckIsSafeToFold, /*InsnID*/1,
809
        // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] })  =>  (BE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
810
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE16),
811
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
812
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
813
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
814
0
        GIR_EraseFromParent, /*InsnID*/0,
815
        // GIR_Coverage, 151,
816
0
        GIR_Done,
817
      // Label 98: @2275
818
0
      GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(2323), // Rule ID 152 //
819
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
820
0
        GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
821
0
        GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
822
0
        GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
823
0
        GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
824
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
825
0
        GIM_CheckIsSafeToFold, /*InsnID*/1,
826
        // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] })  =>  (BE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
827
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE32),
828
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
829
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
830
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
831
0
        GIR_EraseFromParent, /*InsnID*/0,
832
        // GIR_Coverage, 152,
833
0
        GIR_Done,
834
      // Label 99: @2323
835
0
      GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(2371), // Rule ID 154 //
836
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
837
0
        GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
838
0
        GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
839
0
        GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
840
0
        GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
841
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
842
0
        GIM_CheckIsSafeToFold, /*InsnID*/1,
843
        // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] })  =>  (LE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
844
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE16),
845
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
846
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
847
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
848
0
        GIR_EraseFromParent, /*InsnID*/0,
849
        // GIR_Coverage, 154,
850
0
        GIR_Done,
851
      // Label 100: @2371
852
0
      GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(2419), // Rule ID 155 //
853
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
854
0
        GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
855
0
        GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
856
0
        GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
857
0
        GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
858
0
        GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
859
0
        GIM_CheckIsSafeToFold, /*InsnID*/1,
860
        // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] })  =>  (LE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
861
0
        GIR_BuildMI, /*InsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE32),
862
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/0, // DstI[dst]
863
0
        GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
864
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
865
0
        GIR_EraseFromParent, /*InsnID*/0,
866
        // GIR_Coverage, 155,
867
0
        GIR_Done,
868
      // Label 101: @2419
869
0
      GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(2432), // Rule ID 64 //
870
        // (srl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SRL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
871
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr),
872
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
873
        // GIR_Coverage, 64,
874
0
        GIR_Done,
875
      // Label 102: @2432
876
0
      GIM_Reject,
877
    // Label 95: @2433
878
0
    GIM_Reject,
879
    // Label 93: @2434
880
0
    GIM_Reject,
881
    // Label 18: @2435
882
0
    GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 105*/ GIMT_Encode4(2508),
883
0
    /*GILLT_s32*//*Label 103*/ GIMT_Encode4(2454),
884
0
    /*GILLT_s64*//*Label 104*/ GIMT_Encode4(2481),
885
    // Label 103: @2454
886
0
    GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(2480), // Rule ID 74 //
887
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s32,
888
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s32,
889
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
890
      // (sra:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)  =>  (SRA_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
891
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr_32),
892
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
893
      // GIR_Coverage, 74,
894
0
      GIR_Done,
895
    // Label 106: @2480
896
0
    GIM_Reject,
897
    // Label 104: @2481
898
0
    GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(2507), // Rule ID 72 //
899
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
900
0
      GIM_CheckType, /*MI*/0, /*Op*/2, /*Type*/GILLT_s64,
901
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
902
      // (sra:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)  =>  (SRA_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
903
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr),
904
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
905
      // GIR_Coverage, 72,
906
0
      GIR_Done,
907
    // Label 107: @2507
908
0
    GIM_Reject,
909
    // Label 105: @2508
910
0
    GIM_Reject,
911
    // Label 19: @2509
912
0
    GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(2525), // Rule ID 123 //
913
      // MIs[0] BrDst
914
0
      GIM_CheckIsMBB, /*MI*/0, /*Op*/0,
915
      // (br (bb:{ *:[Other] }):$BrDst)  =>  (JMP (bb:{ *:[Other] }):$BrDst)
916
0
      GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::JMP),
917
0
      GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
918
      // GIR_Coverage, 123,
919
0
      GIR_Done,
920
    // Label 108: @2525
921
0
    GIM_Reject,
922
    // Label 20: @2526
923
0
    GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(2598),
924
0
      GIM_CheckType, /*MI*/0, /*Op*/0, /*Type*/GILLT_s64,
925
0
      GIM_CheckType, /*MI*/0, /*Op*/1, /*Type*/GILLT_s64,
926
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
927
0
      GIM_CheckRegBankForClass, /*MI*/0, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
928
0
      GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(2565), // Rule ID 150 //
929
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
930
        // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src)  =>  (BSWAP64:{ *:[i64] } GPR:{ *:[i64] }:$src)
931
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP64),
932
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
933
        // GIR_Coverage, 150,
934
0
        GIR_Done,
935
      // Label 110: @2565
936
0
      GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(2581), // Rule ID 153 //
937
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
938
        // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src)  =>  (BE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
939
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE64),
940
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
941
        // GIR_Coverage, 153,
942
0
        GIR_Done,
943
      // Label 111: @2581
944
0
      GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2597), // Rule ID 156 //
945
0
        GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
946
        // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src)  =>  (LE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
947
0
        GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE64),
948
0
        GIR_ConstrainSelectedInstOperands, /*InsnID*/0,
949
        // GIR_Coverage, 156,
950
0
        GIR_Done,
951
      // Label 112: @2597
952
0
      GIM_Reject,
953
    // Label 109: @2598
954
0
    GIM_Reject,
955
    // Label 21: @2599
956
0
    GIM_Reject,
957
0
    }; // Size: 2600 bytes
958
0
  return MatchTable0;
959
0
}
960
#undef GIMT_Encode2
961
#undef GIMT_Encode4
962
#undef GIMT_Encode8
963
964
#endif // ifdef GET_GLOBALISEL_IMPL
965
966
#ifdef GET_GLOBALISEL_PREDICATES_DECL
967
PredicateBitset AvailableModuleFeatures;
968
mutable PredicateBitset AvailableFunctionFeatures;
969
0
PredicateBitset getAvailableFeatures() const {
970
0
  return AvailableModuleFeatures | AvailableFunctionFeatures;
971
0
}
972
PredicateBitset
973
computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const;
974
PredicateBitset
975
computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget,
976
                                 const MachineFunction *MF) const;
977
void setupGeneratedPerFunctionState(MachineFunction &MF) override;
978
#endif // ifdef GET_GLOBALISEL_PREDICATES_DECL
979
#ifdef GET_GLOBALISEL_PREDICATES_INIT
980
AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
981
AvailableFunctionFeatures()
982
#endif // ifdef GET_GLOBALISEL_PREDICATES_INIT