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
10const unsigned MAX_SUBTARGET_PREDICATES = 12;
11using 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 testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
27 bool testSimplePredicate(unsigned PredicateID) const override;
28 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
29#endif // ifdef GET_GLOBALISEL_TEMPORARIES_DECL
30
31#ifdef GET_GLOBALISEL_TEMPORARIES_INIT
32, State(0),
33ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
34#endif // ifdef GET_GLOBALISEL_TEMPORARIES_INIT
35
36#ifdef GET_GLOBALISEL_IMPL
37// LLT Objects.
38enum {
39 GILLT_s32,
40 GILLT_s64,
41};
42const static size_t NumTypeObjects = 2;
43const static LLT TypeObjects[] = {
44 LLT::scalar(32),
45 LLT::scalar(64),
46};
47
48// Bits for subtarget features that participate in instruction matching.
49enum SubtargetFeatureBits : uint8_t {
50 Feature_BPFIsLittleEndianBit = 8,
51 Feature_BPFIsBigEndianBit = 9,
52 Feature_BPFHasALU32Bit = 6,
53 Feature_BPFNoALU32Bit = 3,
54 Feature_BPFHasLdsxBit = 5,
55 Feature_BPFHasMovsxBit = 2,
56 Feature_BPFHasBswapBit = 7,
57 Feature_BPFHasSdivSmodBit = 1,
58 Feature_BPFNoMovsxBit = 11,
59 Feature_BPFHasStoreImmBit = 4,
60 Feature_BPFHasLoadAcqStoreRelBit = 10,
61 Feature_BPFHasGotoxBit = 0,
62};
63
64PredicateBitset BPFInstructionSelector::
65computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const {
66 PredicateBitset Features{};
67 if (Subtarget->isLittleEndian())
68 Features.set(Feature_BPFIsLittleEndianBit);
69 if (!Subtarget->isLittleEndian())
70 Features.set(Feature_BPFIsBigEndianBit);
71 if (Subtarget->getHasAlu32())
72 Features.set(Feature_BPFHasALU32Bit);
73 if (!Subtarget->getHasAlu32())
74 Features.set(Feature_BPFNoALU32Bit);
75 if (Subtarget->hasLdsx())
76 Features.set(Feature_BPFHasLdsxBit);
77 if (Subtarget->hasMovsx())
78 Features.set(Feature_BPFHasMovsxBit);
79 if (Subtarget->hasBswap())
80 Features.set(Feature_BPFHasBswapBit);
81 if (Subtarget->hasSdivSmod())
82 Features.set(Feature_BPFHasSdivSmodBit);
83 if (!Subtarget->hasMovsx())
84 Features.set(Feature_BPFNoMovsxBit);
85 if (Subtarget->hasStoreImm())
86 Features.set(Feature_BPFHasStoreImmBit);
87 if (Subtarget->hasLoadAcqStoreRel())
88 Features.set(Feature_BPFHasLoadAcqStoreRelBit);
89 if (Subtarget->hasGotox())
90 Features.set(Feature_BPFHasGotoxBit);
91 return Features;
92}
93
94void BPFInstructionSelector::setupGeneratedPerFunctionState(MachineFunction &MF) {
95 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const BPFSubtarget *)&MF.getSubtarget(), &MF);
96}
97PredicateBitset BPFInstructionSelector::
98computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget, const MachineFunction *MF) const {
99 PredicateBitset Features{};
100 return Features;
101}
102
103// Feature bitsets.
104enum {
105 GIFBS_Invalid,
106 GIFBS_BPFHasBswap,
107 GIFBS_BPFHasMovsx,
108 GIFBS_BPFHasSdivSmod,
109 GIFBS_BPFIsBigEndian,
110 GIFBS_BPFIsLittleEndian,
111 GIFBS_BPFNoMovsx,
112};
113constexpr static PredicateBitset FeatureBitsets[] {
114 {}, // GIFBS_Invalid
115 {Feature_BPFHasBswapBit, },
116 {Feature_BPFHasMovsxBit, },
117 {Feature_BPFHasSdivSmodBit, },
118 {Feature_BPFIsBigEndianBit, },
119 {Feature_BPFIsLittleEndianBit, },
120 {Feature_BPFNoMovsxBit, },
121};
122
123// ComplexPattern predicates.
124enum {
125 GICP_Invalid,
126};
127// See constructor for table contents
128
129BPFInstructionSelector::ComplexMatcherMemFn
130BPFInstructionSelector::ComplexPredicateFns[] = {
131 nullptr, // GICP_Invalid
132};
133
134// PatFrag predicates.
135enum {
136 GICXXPred_MI_Predicate_ffloor_nnan = GICXXPred_Invalid + 1,
137 GICXXPred_MI_Predicate_or_disjoint,
138};
139bool BPFInstructionSelector::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
140 const MachineFunction &MF = *MI.getParent()->getParent();
141 const MachineRegisterInfo &MRI = MF.getRegInfo();
142 const auto &Operands = State.RecordedOperands;
143 (void)Operands;
144 (void)MRI;
145 switch (PredicateID) {
146 case GICXXPred_MI_Predicate_ffloor_nnan: {
147
148 return MI.getFlag(MachineInstr::FmNoNans);
149
150 }
151 case GICXXPred_MI_Predicate_or_disjoint: {
152
153 return MI.getFlag(MachineInstr::Disjoint);
154
155 }
156 }
157 llvm_unreachable("Unknown predicate");
158 return false;
159}
160// PatFrag predicates.
161bool BPFInstructionSelector::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
162 const auto &Operands = State.RecordedOperands;
163 Register Reg = MO.getReg();
164 (void)Operands;
165 (void)Reg;
166 llvm_unreachable("Unknown predicate");
167 return false;
168}
169// PatFrag predicates.
170bool BPFInstructionSelector::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
171 llvm_unreachable("Unknown predicate");
172 return false;
173}
174// PatFrag predicates.
175bool BPFInstructionSelector::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
176 llvm_unreachable("Unknown predicate");
177 return false;
178}
179// PatFrag predicates.
180bool BPFInstructionSelector::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
181 llvm_unreachable("Unknown predicate");
182 return false;
183}
184bool BPFInstructionSelector::testSimplePredicate(unsigned) const {
185 llvm_unreachable("BPFInstructionSelector does not support simple predicates!");
186 return false;
187}
188// Custom renderers.
189enum {
190 GICR_Invalid,
191};
192BPFInstructionSelector::CustomRendererFn
193BPFInstructionSelector::CustomRenderers[] = {
194 nullptr, // GICR_Invalid
195};
196
197bool BPFInstructionSelector::selectImpl(MachineInstr &I, CodeGenCoverage &CoverageInfo) const {
198 const PredicateBitset AvailableFeatures = getAvailableFeatures();
199 MachineIRBuilder B(I);
200 State.MIs.clear();
201 State.MIs.push_back(&I);
202
203 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), TII, MF->getRegInfo(), TRI, RBI, AvailableFeatures, &CoverageInfo)) {
204 return true;
205 }
206
207 return false;
208}
209
210bool BPFInstructionSelector::runCustomAction(unsigned, const MatcherState&, NewMIVector &) const {
211 llvm_unreachable("BPFInstructionSelector does not support custom C++ actions!");
212}
213#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
214#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
215#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
216#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)
217#else
218#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
219#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
220#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)
221#endif
222const uint8_t *BPFInstructionSelector::getMatchTable() const {
223 constexpr static uint8_t MatchTable0[] = {
224 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(55), GIMT_Encode2(263), /*)*//*default:*//*Label 22*/ GIMT_Encode4(2691),
225 /* 10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(842),
226 /* 14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(908),
227 /* 18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(1022),
228 /* 22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1088),
229 /* 26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1160),
230 /* 30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1226),
231 /* 34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1298), GIMT_Encode4(0), GIMT_Encode4(0),
232 /* 46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1364),
233 /* 50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1490),
234 /* 54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1556), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
235 /* 334 */ /*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ GIMT_Encode4(1622), GIMT_Encode4(0), GIMT_Encode4(0),
236 /* 346 */ /*TargetOpcode::G_ANYEXT*//*Label 11*/ GIMT_Encode4(1686),
237 /* 350 */ /*TargetOpcode::G_TRUNC*//*Label 12*/ GIMT_Encode4(1749), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
238 /* 366 */ /*TargetOpcode::G_CONSTANT*//*Label 13*/ GIMT_Encode4(1791), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
239 /* 382 */ /*TargetOpcode::G_SEXT*//*Label 14*/ GIMT_Encode4(1814),
240 /* 386 */ /*TargetOpcode::G_SEXT_INREG*//*Label 15*/ GIMT_Encode4(1930),
241 /* 390 */ /*TargetOpcode::G_ZEXT*//*Label 16*/ GIMT_Encode4(2126),
242 /* 394 */ /*TargetOpcode::G_SHL*//*Label 17*/ GIMT_Encode4(2153),
243 /* 398 */ /*TargetOpcode::G_LSHR*//*Label 18*/ GIMT_Encode4(2219),
244 /* 402 */ /*TargetOpcode::G_ASHR*//*Label 19*/ GIMT_Encode4(2543), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
245 /* 770 */ /*TargetOpcode::G_BR*//*Label 20*/ GIMT_Encode4(2609), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
246 /* 838 */ /*TargetOpcode::G_BSWAP*//*Label 21*/ GIMT_Encode4(2625),
247 /* 842 */ // Label 0: @842
248 /* 842 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 25*/ GIMT_Encode4(907),
249 /* 853 */ /*GILLT_s32*//*Label 23*/ GIMT_Encode4(861),
250 /* 857 */ /*GILLT_s64*//*Label 24*/ GIMT_Encode4(884),
251 /* 861 */ // Label 23: @861
252 /* 861 */ GIM_Try, /*On fail goto*//*Label 26*/ GIMT_Encode4(883), // Rule ID 47 //
253 /* 866 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
254 /* 869 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
255 /* 872 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
256 /* 876 */ // (add:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (ADD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
257 /* 876 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr_32),
258 /* 881 */ GIR_RootConstrainSelectedInstOperands,
259 /* 882 */ // GIR_Coverage, 47,
260 /* 882 */ GIR_Done,
261 /* 883 */ // Label 26: @883
262 /* 883 */ GIM_Reject,
263 /* 884 */ // Label 24: @884
264 /* 884 */ GIM_Try, /*On fail goto*//*Label 27*/ GIMT_Encode4(906), // Rule ID 45 //
265 /* 889 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
266 /* 892 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
267 /* 895 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
268 /* 899 */ // (add:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (ADD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
269 /* 899 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr),
270 /* 904 */ GIR_RootConstrainSelectedInstOperands,
271 /* 905 */ // GIR_Coverage, 45,
272 /* 905 */ GIR_Done,
273 /* 906 */ // Label 27: @906
274 /* 906 */ GIM_Reject,
275 /* 907 */ // Label 25: @907
276 /* 907 */ GIM_Reject,
277 /* 908 */ // Label 1: @908
278 /* 908 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 30*/ GIMT_Encode4(1021),
279 /* 919 */ /*GILLT_s32*//*Label 28*/ GIMT_Encode4(927),
280 /* 923 */ /*GILLT_s64*//*Label 29*/ GIMT_Encode4(974),
281 /* 927 */ // Label 28: @927
282 /* 927 */ GIM_Try, /*On fail goto*//*Label 31*/ GIMT_Encode4(973),
283 /* 932 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
284 /* 935 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
285 /* 938 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
286 /* 942 */ GIM_Try, /*On fail goto*//*Label 32*/ GIMT_Encode4(960), // Rule ID 98 //
287 /* 947 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
288 /* 951 */ // (sub:{ *:[i32] } 0:{ *:[i32] }, i32:{ *:[i32] }:$src) => (NEG_32:{ *:[i32] } i32:{ *:[i32] }:$src)
289 /* 951 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_32),
290 /* 954 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
291 /* 956 */ GIR_RootToRootCopy, /*OpIdx*/2, // src
292 /* 958 */ GIR_RootConstrainSelectedInstOperands,
293 /* 959 */ // GIR_Coverage, 98,
294 /* 959 */ GIR_EraseRootFromParent_Done,
295 /* 960 */ // Label 32: @960
296 /* 960 */ GIM_Try, /*On fail goto*//*Label 33*/ GIMT_Encode4(972), // Rule ID 51 //
297 /* 965 */ // (sub:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SUB_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
298 /* 965 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr_32),
299 /* 970 */ GIR_RootConstrainSelectedInstOperands,
300 /* 971 */ // GIR_Coverage, 51,
301 /* 971 */ GIR_Done,
302 /* 972 */ // Label 33: @972
303 /* 972 */ GIM_Reject,
304 /* 973 */ // Label 31: @973
305 /* 973 */ GIM_Reject,
306 /* 974 */ // Label 29: @974
307 /* 974 */ GIM_Try, /*On fail goto*//*Label 34*/ GIMT_Encode4(1020),
308 /* 979 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
309 /* 982 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
310 /* 985 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
311 /* 989 */ GIM_Try, /*On fail goto*//*Label 35*/ GIMT_Encode4(1007), // Rule ID 97 //
312 /* 994 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
313 /* 998 */ // (sub:{ *:[i64] } 0:{ *:[i64] }, i64:{ *:[i64] }:$src) => (NEG_64:{ *:[i64] } i64:{ *:[i64] }:$src)
314 /* 998 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_64),
315 /* 1001 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
316 /* 1003 */ GIR_RootToRootCopy, /*OpIdx*/2, // src
317 /* 1005 */ GIR_RootConstrainSelectedInstOperands,
318 /* 1006 */ // GIR_Coverage, 97,
319 /* 1006 */ GIR_EraseRootFromParent_Done,
320 /* 1007 */ // Label 35: @1007
321 /* 1007 */ GIM_Try, /*On fail goto*//*Label 36*/ GIMT_Encode4(1019), // Rule ID 49 //
322 /* 1012 */ // (sub:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SUB_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
323 /* 1012 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr),
324 /* 1017 */ GIR_RootConstrainSelectedInstOperands,
325 /* 1018 */ // GIR_Coverage, 49,
326 /* 1018 */ GIR_Done,
327 /* 1019 */ // Label 36: @1019
328 /* 1019 */ GIM_Reject,
329 /* 1020 */ // Label 34: @1020
330 /* 1020 */ GIM_Reject,
331 /* 1021 */ // Label 30: @1021
332 /* 1021 */ GIM_Reject,
333 /* 1022 */ // Label 2: @1022
334 /* 1022 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 39*/ GIMT_Encode4(1087),
335 /* 1033 */ /*GILLT_s32*//*Label 37*/ GIMT_Encode4(1041),
336 /* 1037 */ /*GILLT_s64*//*Label 38*/ GIMT_Encode4(1064),
337 /* 1041 */ // Label 37: @1041
338 /* 1041 */ GIM_Try, /*On fail goto*//*Label 40*/ GIMT_Encode4(1063), // Rule ID 79 //
339 /* 1046 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
340 /* 1049 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
341 /* 1052 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
342 /* 1056 */ // (mul:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (MUL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
343 /* 1056 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr_32),
344 /* 1061 */ GIR_RootConstrainSelectedInstOperands,
345 /* 1062 */ // GIR_Coverage, 79,
346 /* 1062 */ GIR_Done,
347 /* 1063 */ // Label 40: @1063
348 /* 1063 */ GIM_Reject,
349 /* 1064 */ // Label 38: @1064
350 /* 1064 */ GIM_Try, /*On fail goto*//*Label 41*/ GIMT_Encode4(1086), // Rule ID 77 //
351 /* 1069 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
352 /* 1072 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
353 /* 1075 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
354 /* 1079 */ // (mul:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (MUL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
355 /* 1079 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr),
356 /* 1084 */ GIR_RootConstrainSelectedInstOperands,
357 /* 1085 */ // GIR_Coverage, 77,
358 /* 1085 */ GIR_Done,
359 /* 1086 */ // Label 41: @1086
360 /* 1086 */ GIM_Reject,
361 /* 1087 */ // Label 39: @1087
362 /* 1087 */ GIM_Reject,
363 /* 1088 */ // Label 3: @1088
364 /* 1088 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 44*/ GIMT_Encode4(1159),
365 /* 1099 */ /*GILLT_s32*//*Label 42*/ GIMT_Encode4(1107),
366 /* 1103 */ /*GILLT_s64*//*Label 43*/ GIMT_Encode4(1133),
367 /* 1107 */ // Label 42: @1107
368 /* 1107 */ GIM_Try, /*On fail goto*//*Label 45*/ GIMT_Encode4(1132), // Rule ID 91 //
369 /* 1112 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
370 /* 1115 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
371 /* 1118 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
372 /* 1121 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
373 /* 1125 */ // (sdiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SDIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
374 /* 1125 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr_32),
375 /* 1130 */ GIR_RootConstrainSelectedInstOperands,
376 /* 1131 */ // GIR_Coverage, 91,
377 /* 1131 */ GIR_Done,
378 /* 1132 */ // Label 45: @1132
379 /* 1132 */ GIM_Reject,
380 /* 1133 */ // Label 43: @1133
381 /* 1133 */ GIM_Try, /*On fail goto*//*Label 46*/ GIMT_Encode4(1158), // Rule ID 89 //
382 /* 1138 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
383 /* 1141 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
384 /* 1144 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
385 /* 1147 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
386 /* 1151 */ // (sdiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SDIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
387 /* 1151 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr),
388 /* 1156 */ GIR_RootConstrainSelectedInstOperands,
389 /* 1157 */ // GIR_Coverage, 89,
390 /* 1157 */ GIR_Done,
391 /* 1158 */ // Label 46: @1158
392 /* 1158 */ GIM_Reject,
393 /* 1159 */ // Label 44: @1159
394 /* 1159 */ GIM_Reject,
395 /* 1160 */ // Label 4: @1160
396 /* 1160 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 49*/ GIMT_Encode4(1225),
397 /* 1171 */ /*GILLT_s32*//*Label 47*/ GIMT_Encode4(1179),
398 /* 1175 */ /*GILLT_s64*//*Label 48*/ GIMT_Encode4(1202),
399 /* 1179 */ // Label 47: @1179
400 /* 1179 */ GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(1201), // Rule ID 83 //
401 /* 1184 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
402 /* 1187 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
403 /* 1190 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
404 /* 1194 */ // (udiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (DIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
405 /* 1194 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr_32),
406 /* 1199 */ GIR_RootConstrainSelectedInstOperands,
407 /* 1200 */ // GIR_Coverage, 83,
408 /* 1200 */ GIR_Done,
409 /* 1201 */ // Label 50: @1201
410 /* 1201 */ GIM_Reject,
411 /* 1202 */ // Label 48: @1202
412 /* 1202 */ GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(1224), // Rule ID 81 //
413 /* 1207 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
414 /* 1210 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
415 /* 1213 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
416 /* 1217 */ // (udiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (DIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
417 /* 1217 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr),
418 /* 1222 */ GIR_RootConstrainSelectedInstOperands,
419 /* 1223 */ // GIR_Coverage, 81,
420 /* 1223 */ GIR_Done,
421 /* 1224 */ // Label 51: @1224
422 /* 1224 */ GIM_Reject,
423 /* 1225 */ // Label 49: @1225
424 /* 1225 */ GIM_Reject,
425 /* 1226 */ // Label 5: @1226
426 /* 1226 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 54*/ GIMT_Encode4(1297),
427 /* 1237 */ /*GILLT_s32*//*Label 52*/ GIMT_Encode4(1245),
428 /* 1241 */ /*GILLT_s64*//*Label 53*/ GIMT_Encode4(1271),
429 /* 1245 */ // Label 52: @1245
430 /* 1245 */ GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(1270), // Rule ID 95 //
431 /* 1250 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
432 /* 1253 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
433 /* 1256 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
434 /* 1259 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
435 /* 1263 */ // (srem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SMOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
436 /* 1263 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr_32),
437 /* 1268 */ GIR_RootConstrainSelectedInstOperands,
438 /* 1269 */ // GIR_Coverage, 95,
439 /* 1269 */ GIR_Done,
440 /* 1270 */ // Label 55: @1270
441 /* 1270 */ GIM_Reject,
442 /* 1271 */ // Label 53: @1271
443 /* 1271 */ GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(1296), // Rule ID 93 //
444 /* 1276 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
445 /* 1279 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
446 /* 1282 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
447 /* 1285 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
448 /* 1289 */ // (srem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SMOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
449 /* 1289 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr),
450 /* 1294 */ GIR_RootConstrainSelectedInstOperands,
451 /* 1295 */ // GIR_Coverage, 93,
452 /* 1295 */ GIR_Done,
453 /* 1296 */ // Label 56: @1296
454 /* 1296 */ GIM_Reject,
455 /* 1297 */ // Label 54: @1297
456 /* 1297 */ GIM_Reject,
457 /* 1298 */ // Label 6: @1298
458 /* 1298 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 59*/ GIMT_Encode4(1363),
459 /* 1309 */ /*GILLT_s32*//*Label 57*/ GIMT_Encode4(1317),
460 /* 1313 */ /*GILLT_s64*//*Label 58*/ GIMT_Encode4(1340),
461 /* 1317 */ // Label 57: @1317
462 /* 1317 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1339), // Rule ID 87 //
463 /* 1322 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
464 /* 1325 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
465 /* 1328 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
466 /* 1332 */ // (urem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (MOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
467 /* 1332 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr_32),
468 /* 1337 */ GIR_RootConstrainSelectedInstOperands,
469 /* 1338 */ // GIR_Coverage, 87,
470 /* 1338 */ GIR_Done,
471 /* 1339 */ // Label 60: @1339
472 /* 1339 */ GIM_Reject,
473 /* 1340 */ // Label 58: @1340
474 /* 1340 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1362), // Rule ID 85 //
475 /* 1345 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
476 /* 1348 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
477 /* 1351 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
478 /* 1355 */ // (urem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (MOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
479 /* 1355 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr),
480 /* 1360 */ GIR_RootConstrainSelectedInstOperands,
481 /* 1361 */ // GIR_Coverage, 85,
482 /* 1361 */ GIR_Done,
483 /* 1362 */ // Label 61: @1362
484 /* 1362 */ GIM_Reject,
485 /* 1363 */ // Label 59: @1363
486 /* 1363 */ GIM_Reject,
487 /* 1364 */ // Label 7: @1364
488 /* 1364 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 64*/ GIMT_Encode4(1489),
489 /* 1375 */ /*GILLT_s32*//*Label 62*/ GIMT_Encode4(1383),
490 /* 1379 */ /*GILLT_s64*//*Label 63*/ GIMT_Encode4(1406),
491 /* 1383 */ // Label 62: @1383
492 /* 1383 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1405), // Rule ID 59 //
493 /* 1388 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
494 /* 1391 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
495 /* 1394 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
496 /* 1398 */ // (and:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (AND_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
497 /* 1398 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr_32),
498 /* 1403 */ GIR_RootConstrainSelectedInstOperands,
499 /* 1404 */ // GIR_Coverage, 59,
500 /* 1404 */ GIR_Done,
501 /* 1405 */ // Label 65: @1405
502 /* 1405 */ GIM_Reject,
503 /* 1406 */ // Label 63: @1406
504 /* 1406 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1488),
505 /* 1411 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
506 /* 1414 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
507 /* 1417 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
508 /* 1421 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1475), // Rule ID 172 //
509 /* 1426 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
510 /* 1430 */ GIM_CheckConstantInt, /*MI*/0, /*Op*/2, GIMT_Encode8(4294967295),
511 /* 1441 */ // (and:{ *:[i64] } GPR:{ *:[i64] }:$src, 4294967295:{ *:[i64] }) => (SRL_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } GPR:{ *:[i64] }:$src, 32:{ *:[i64] }), 32:{ *:[i64] })
512 /* 1441 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
513 /* 1444 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
514 /* 1448 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
515 /* 1453 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
516 /* 1457 */ GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
517 /* 1460 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
518 /* 1462 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRL_ri),
519 /* 1465 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
520 /* 1467 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
521 /* 1470 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
522 /* 1473 */ GIR_RootConstrainSelectedInstOperands,
523 /* 1474 */ // GIR_Coverage, 172,
524 /* 1474 */ GIR_EraseRootFromParent_Done,
525 /* 1475 */ // Label 67: @1475
526 /* 1475 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1487), // Rule ID 57 //
527 /* 1480 */ // (and:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (AND_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
528 /* 1480 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr),
529 /* 1485 */ GIR_RootConstrainSelectedInstOperands,
530 /* 1486 */ // GIR_Coverage, 57,
531 /* 1486 */ GIR_Done,
532 /* 1487 */ // Label 68: @1487
533 /* 1487 */ GIM_Reject,
534 /* 1488 */ // Label 66: @1488
535 /* 1488 */ GIM_Reject,
536 /* 1489 */ // Label 64: @1489
537 /* 1489 */ GIM_Reject,
538 /* 1490 */ // Label 8: @1490
539 /* 1490 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 71*/ GIMT_Encode4(1555),
540 /* 1501 */ /*GILLT_s32*//*Label 69*/ GIMT_Encode4(1509),
541 /* 1505 */ /*GILLT_s64*//*Label 70*/ GIMT_Encode4(1532),
542 /* 1509 */ // Label 69: @1509
543 /* 1509 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1531), // Rule ID 55 //
544 /* 1514 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
545 /* 1517 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
546 /* 1520 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
547 /* 1524 */ // (or:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (OR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
548 /* 1524 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr_32),
549 /* 1529 */ GIR_RootConstrainSelectedInstOperands,
550 /* 1530 */ // GIR_Coverage, 55,
551 /* 1530 */ GIR_Done,
552 /* 1531 */ // Label 72: @1531
553 /* 1531 */ GIM_Reject,
554 /* 1532 */ // Label 70: @1532
555 /* 1532 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1554), // Rule ID 53 //
556 /* 1537 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
557 /* 1540 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
558 /* 1543 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
559 /* 1547 */ // (or:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (OR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
560 /* 1547 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr),
561 /* 1552 */ GIR_RootConstrainSelectedInstOperands,
562 /* 1553 */ // GIR_Coverage, 53,
563 /* 1553 */ GIR_Done,
564 /* 1554 */ // Label 73: @1554
565 /* 1554 */ GIM_Reject,
566 /* 1555 */ // Label 71: @1555
567 /* 1555 */ GIM_Reject,
568 /* 1556 */ // Label 9: @1556
569 /* 1556 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 76*/ GIMT_Encode4(1621),
570 /* 1567 */ /*GILLT_s32*//*Label 74*/ GIMT_Encode4(1575),
571 /* 1571 */ /*GILLT_s64*//*Label 75*/ GIMT_Encode4(1598),
572 /* 1575 */ // Label 74: @1575
573 /* 1575 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1597), // Rule ID 71 //
574 /* 1580 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
575 /* 1583 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
576 /* 1586 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
577 /* 1590 */ // (xor:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (XOR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
578 /* 1590 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr_32),
579 /* 1595 */ GIR_RootConstrainSelectedInstOperands,
580 /* 1596 */ // GIR_Coverage, 71,
581 /* 1596 */ GIR_Done,
582 /* 1597 */ // Label 77: @1597
583 /* 1597 */ GIM_Reject,
584 /* 1598 */ // Label 75: @1598
585 /* 1598 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1620), // Rule ID 69 //
586 /* 1603 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
587 /* 1606 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
588 /* 1609 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
589 /* 1613 */ // (xor:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (XOR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
590 /* 1613 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr),
591 /* 1618 */ GIR_RootConstrainSelectedInstOperands,
592 /* 1619 */ // GIR_Coverage, 69,
593 /* 1619 */ GIR_Done,
594 /* 1620 */ // Label 78: @1620
595 /* 1620 */ GIM_Reject,
596 /* 1621 */ // Label 76: @1621
597 /* 1621 */ GIM_Reject,
598 /* 1622 */ // Label 10: @1622
599 /* 1622 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1685), // Rule ID 108 //
600 /* 1627 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/4,
601 /* 1630 */ GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, GIMT_Encode2(Intrinsic::bpf_pseudo),
602 /* 1635 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
603 /* 1638 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
604 /* 1641 */ GIM_RootCheckType, /*Op*/3, /*Type*/GILLT_s64,
605 /* 1644 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
606 /* 1648 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
607 /* 1652 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
608 /* 1656 */ // MIs[1] Operand 1
609 /* 1656 */ // No operand predicates
610 /* 1656 */ GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/3, // MIs[2]
611 /* 1660 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
612 /* 1664 */ // MIs[2] Operand 1
613 /* 1664 */ // No operand predicates
614 /* 1664 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
615 /* 1666 */ // (intrinsic_w_chain:{ *:[i64] } 4200:{ *:[iPTR] }, (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm) => (LD_pseudo:{ *:[i64] } (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)
616 /* 1666 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_pseudo),
617 /* 1669 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
618 /* 1671 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // pseudo
619 /* 1674 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
620 /* 1677 */ GIR_MergeMemOperands, /*InsnID*/0, /*NumInsns*/3, /*MergeInsnID's*/0, 1, 2,
621 /* 1683 */ GIR_RootConstrainSelectedInstOperands,
622 /* 1684 */ // GIR_Coverage, 108,
623 /* 1684 */ GIR_EraseRootFromParent_Done,
624 /* 1685 */ // Label 79: @1685
625 /* 1685 */ GIM_Reject,
626 /* 1686 */ // Label 11: @1686
627 /* 1686 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1748), // Rule ID 239 //
628 /* 1691 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
629 /* 1694 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
630 /* 1697 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
631 /* 1701 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
632 /* 1705 */ // (anyext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GPR32:{ *:[i32] }:$src, sub_32:{ *:[i32] })
633 /* 1705 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
634 /* 1708 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::IMPLICIT_DEF),
635 /* 1712 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
636 /* 1717 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
637 /* 1719 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::INSERT_SUBREG),
638 /* 1722 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
639 /* 1724 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
640 /* 1727 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
641 /* 1729 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
642 /* 1732 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPRRegClassID),
643 /* 1737 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
644 /* 1742 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/2, GIMT_Encode2(BPF::GPR32RegClassID),
645 /* 1747 */ // GIR_Coverage, 239,
646 /* 1747 */ GIR_EraseRootFromParent_Done,
647 /* 1748 */ // Label 80: @1748
648 /* 1748 */ GIM_Reject,
649 /* 1749 */ // Label 12: @1749
650 /* 1749 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1790), // Rule ID 238 //
651 /* 1754 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s32,
652 /* 1757 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
653 /* 1760 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
654 /* 1764 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
655 /* 1768 */ // (trunc:{ *:[i32] } GPR:{ *:[i64] }:$src) => (EXTRACT_SUBREG:{ *:[i32] } GPR:{ *:[i64] }:$src, sub_32:{ *:[i32] })
656 /* 1768 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
657 /* 1771 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
658 /* 1773 */ GIR_CopySubReg, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/GIMT_Encode2(1), // src
659 /* 1779 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPR32RegClassID),
660 /* 1784 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
661 /* 1789 */ // GIR_Coverage, 238,
662 /* 1789 */ GIR_EraseRootFromParent_Done,
663 /* 1790 */ // Label 81: @1790
664 /* 1790 */ GIM_Reject,
665 /* 1791 */ // Label 13: @1791
666 /* 1791 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1813), // Rule ID 99 //
667 /* 1796 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
668 /* 1799 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
669 /* 1803 */ // MIs[0] Operand 1
670 /* 1803 */ // No operand predicates
671 /* 1803 */ // (imm:{ *:[i64] }):$imm => (LD_imm64:{ *:[i64] } (imm:{ *:[i64] }):$imm)
672 /* 1803 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_imm64),
673 /* 1806 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
674 /* 1808 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/0, // imm
675 /* 1811 */ GIR_RootConstrainSelectedInstOperands,
676 /* 1812 */ // GIR_Coverage, 99,
677 /* 1812 */ GIR_EraseRootFromParent_Done,
678 /* 1813 */ // Label 82: @1813
679 /* 1813 */ GIM_Reject,
680 /* 1814 */ // Label 14: @1814
681 /* 1814 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1929),
682 /* 1819 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
683 /* 1822 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
684 /* 1825 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
685 /* 1829 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
686 /* 1833 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1892), // Rule ID 235 //
687 /* 1838 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFNoMovsx),
688 /* 1841 */ // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (SRA_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src), 32:{ *:[i64] }), 32:{ *:[i64] })
689 /* 1841 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
690 /* 1844 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
691 /* 1848 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
692 /* 1853 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
693 /* 1857 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
694 /* 1859 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
695 /* 1862 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
696 /* 1866 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
697 /* 1871 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
698 /* 1874 */ GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
699 /* 1877 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
700 /* 1879 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRA_ri),
701 /* 1882 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
702 /* 1884 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
703 /* 1887 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
704 /* 1890 */ GIR_RootConstrainSelectedInstOperands,
705 /* 1891 */ // GIR_Coverage, 235,
706 /* 1891 */ GIR_EraseRootFromParent_Done,
707 /* 1892 */ // Label 84: @1892
708 /* 1892 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1928), // Rule ID 236 //
709 /* 1897 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
710 /* 1900 */ // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (MOVSX_rr_32:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src))
711 /* 1900 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
712 /* 1903 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
713 /* 1907 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
714 /* 1912 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
715 /* 1916 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
716 /* 1918 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
717 /* 1921 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
718 /* 1923 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
719 /* 1926 */ GIR_RootConstrainSelectedInstOperands,
720 /* 1927 */ // GIR_Coverage, 236,
721 /* 1927 */ GIR_EraseRootFromParent_Done,
722 /* 1928 */ // Label 85: @1928
723 /* 1928 */ GIM_Reject,
724 /* 1929 */ // Label 83: @1929
725 /* 1929 */ GIM_Reject,
726 /* 1930 */ // Label 15: @1930
727 /* 1930 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 88*/ GIMT_Encode4(2125),
728 /* 1941 */ /*GILLT_s32*//*Label 86*/ GIMT_Encode4(1949),
729 /* 1945 */ /*GILLT_s64*//*Label 87*/ GIMT_Encode4(2023),
730 /* 1949 */ // Label 86: @1949
731 /* 1949 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(2022),
732 /* 1954 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
733 /* 1957 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
734 /* 1961 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
735 /* 1965 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1993), // Rule ID 105 //
736 /* 1970 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
737 /* 1973 */ // MIs[0] Operand 2
738 /* 1973 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
739 /* 1984 */ // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i8:{ *:[Other] }) => (MOVSX_rr_32_8:{ *:[i32] } GPR32:{ *:[i32] }:$src)
740 /* 1984 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_8),
741 /* 1987 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
742 /* 1989 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
743 /* 1991 */ GIR_RootConstrainSelectedInstOperands,
744 /* 1992 */ // GIR_Coverage, 105,
745 /* 1992 */ GIR_EraseRootFromParent_Done,
746 /* 1993 */ // Label 90: @1993
747 /* 1993 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(2021), // Rule ID 106 //
748 /* 1998 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
749 /* 2001 */ // MIs[0] Operand 2
750 /* 2001 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
751 /* 2012 */ // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i16:{ *:[Other] }) => (MOVSX_rr_32_16:{ *:[i32] } GPR32:{ *:[i32] }:$src)
752 /* 2012 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_16),
753 /* 2015 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
754 /* 2017 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
755 /* 2019 */ GIR_RootConstrainSelectedInstOperands,
756 /* 2020 */ // GIR_Coverage, 106,
757 /* 2020 */ GIR_EraseRootFromParent_Done,
758 /* 2021 */ // Label 91: @2021
759 /* 2021 */ GIM_Reject,
760 /* 2022 */ // Label 89: @2022
761 /* 2022 */ GIM_Reject,
762 /* 2023 */ // Label 87: @2023
763 /* 2023 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(2124),
764 /* 2028 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
765 /* 2031 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
766 /* 2035 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
767 /* 2039 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(2067), // Rule ID 102 //
768 /* 2044 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
769 /* 2047 */ // MIs[0] Operand 2
770 /* 2047 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
771 /* 2058 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i8:{ *:[Other] }) => (MOVSX_rr_8:{ *:[i64] } GPR:{ *:[i64] }:$src)
772 /* 2058 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_8),
773 /* 2061 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
774 /* 2063 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
775 /* 2065 */ GIR_RootConstrainSelectedInstOperands,
776 /* 2066 */ // GIR_Coverage, 102,
777 /* 2066 */ GIR_EraseRootFromParent_Done,
778 /* 2067 */ // Label 93: @2067
779 /* 2067 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(2095), // Rule ID 103 //
780 /* 2072 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
781 /* 2075 */ // MIs[0] Operand 2
782 /* 2075 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
783 /* 2086 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i16:{ *:[Other] }) => (MOVSX_rr_16:{ *:[i64] } GPR:{ *:[i64] }:$src)
784 /* 2086 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_16),
785 /* 2089 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
786 /* 2091 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
787 /* 2093 */ GIR_RootConstrainSelectedInstOperands,
788 /* 2094 */ // GIR_Coverage, 103,
789 /* 2094 */ GIR_EraseRootFromParent_Done,
790 /* 2095 */ // Label 94: @2095
791 /* 2095 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(2123), // Rule ID 104 //
792 /* 2100 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
793 /* 2103 */ // MIs[0] Operand 2
794 /* 2103 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(32),
795 /* 2114 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i32:{ *:[Other] }) => (MOVSX_rr_32:{ *:[i64] } GPR:{ *:[i64] }:$src)
796 /* 2114 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
797 /* 2117 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
798 /* 2119 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
799 /* 2121 */ GIR_RootConstrainSelectedInstOperands,
800 /* 2122 */ // GIR_Coverage, 104,
801 /* 2122 */ GIR_EraseRootFromParent_Done,
802 /* 2123 */ // Label 95: @2123
803 /* 2123 */ GIM_Reject,
804 /* 2124 */ // Label 92: @2124
805 /* 2124 */ GIM_Reject,
806 /* 2125 */ // Label 88: @2125
807 /* 2125 */ GIM_Reject,
808 /* 2126 */ // Label 16: @2126
809 /* 2126 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(2152), // Rule ID 237 //
810 /* 2131 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
811 /* 2134 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
812 /* 2137 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
813 /* 2141 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
814 /* 2145 */ // (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src)
815 /* 2145 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
816 /* 2150 */ GIR_RootConstrainSelectedInstOperands,
817 /* 2151 */ // GIR_Coverage, 237,
818 /* 2151 */ GIR_Done,
819 /* 2152 */ // Label 96: @2152
820 /* 2152 */ GIM_Reject,
821 /* 2153 */ // Label 17: @2153
822 /* 2153 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 99*/ GIMT_Encode4(2218),
823 /* 2164 */ /*GILLT_s32*//*Label 97*/ GIMT_Encode4(2172),
824 /* 2168 */ /*GILLT_s64*//*Label 98*/ GIMT_Encode4(2195),
825 /* 2172 */ // Label 97: @2172
826 /* 2172 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(2194), // Rule ID 63 //
827 /* 2177 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
828 /* 2180 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
829 /* 2183 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
830 /* 2187 */ // (shl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SLL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
831 /* 2187 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr_32),
832 /* 2192 */ GIR_RootConstrainSelectedInstOperands,
833 /* 2193 */ // GIR_Coverage, 63,
834 /* 2193 */ GIR_Done,
835 /* 2194 */ // Label 100: @2194
836 /* 2194 */ GIM_Reject,
837 /* 2195 */ // Label 98: @2195
838 /* 2195 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(2217), // Rule ID 61 //
839 /* 2200 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
840 /* 2203 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
841 /* 2206 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
842 /* 2210 */ // (shl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SLL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
843 /* 2210 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr),
844 /* 2215 */ GIR_RootConstrainSelectedInstOperands,
845 /* 2216 */ // GIR_Coverage, 61,
846 /* 2216 */ GIR_Done,
847 /* 2217 */ // Label 101: @2217
848 /* 2217 */ GIM_Reject,
849 /* 2218 */ // Label 99: @2218
850 /* 2218 */ GIM_Reject,
851 /* 2219 */ // Label 18: @2219
852 /* 2219 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 104*/ GIMT_Encode4(2542),
853 /* 2230 */ /*GILLT_s32*//*Label 102*/ GIMT_Encode4(2238),
854 /* 2234 */ /*GILLT_s64*//*Label 103*/ GIMT_Encode4(2261),
855 /* 2238 */ // Label 102: @2238
856 /* 2238 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(2260), // Rule ID 67 //
857 /* 2243 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
858 /* 2246 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
859 /* 2249 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
860 /* 2253 */ // (srl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SRL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
861 /* 2253 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr_32),
862 /* 2258 */ GIR_RootConstrainSelectedInstOperands,
863 /* 2259 */ // GIR_Coverage, 67,
864 /* 2259 */ GIR_Done,
865 /* 2260 */ // Label 105: @2260
866 /* 2260 */ GIM_Reject,
867 /* 2261 */ // Label 103: @2261
868 /* 2261 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(2541),
869 /* 2266 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
870 /* 2269 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
871 /* 2272 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
872 /* 2276 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(2318), // Rule ID 140 //
873 /* 2281 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
874 /* 2284 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
875 /* 2288 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
876 /* 2292 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
877 /* 2296 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
878 /* 2301 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
879 /* 2305 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
880 /* 2307 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (BSWAP16:{ *:[i64] } GPR:{ *:[i64] }:$src)
881 /* 2307 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP16),
882 /* 2310 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
883 /* 2312 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
884 /* 2316 */ GIR_RootConstrainSelectedInstOperands,
885 /* 2317 */ // GIR_Coverage, 140,
886 /* 2317 */ GIR_EraseRootFromParent_Done,
887 /* 2318 */ // Label 107: @2318
888 /* 2318 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(2360), // Rule ID 141 //
889 /* 2323 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
890 /* 2326 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
891 /* 2330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
892 /* 2334 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
893 /* 2338 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
894 /* 2343 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
895 /* 2347 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
896 /* 2349 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (BSWAP32:{ *:[i64] } GPR:{ *:[i64] }:$src)
897 /* 2349 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP32),
898 /* 2352 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
899 /* 2354 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
900 /* 2358 */ GIR_RootConstrainSelectedInstOperands,
901 /* 2359 */ // GIR_Coverage, 141,
902 /* 2359 */ GIR_EraseRootFromParent_Done,
903 /* 2360 */ // Label 108: @2360
904 /* 2360 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(2402), // Rule ID 143 //
905 /* 2365 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
906 /* 2368 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
907 /* 2372 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
908 /* 2376 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
909 /* 2380 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
910 /* 2385 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
911 /* 2389 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
912 /* 2391 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (BE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
913 /* 2391 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE16),
914 /* 2394 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
915 /* 2396 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
916 /* 2400 */ GIR_RootConstrainSelectedInstOperands,
917 /* 2401 */ // GIR_Coverage, 143,
918 /* 2401 */ GIR_EraseRootFromParent_Done,
919 /* 2402 */ // Label 109: @2402
920 /* 2402 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(2444), // Rule ID 144 //
921 /* 2407 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
922 /* 2410 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
923 /* 2414 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
924 /* 2418 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
925 /* 2422 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
926 /* 2427 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
927 /* 2431 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
928 /* 2433 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (BE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
929 /* 2433 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE32),
930 /* 2436 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
931 /* 2438 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
932 /* 2442 */ GIR_RootConstrainSelectedInstOperands,
933 /* 2443 */ // GIR_Coverage, 144,
934 /* 2443 */ GIR_EraseRootFromParent_Done,
935 /* 2444 */ // Label 110: @2444
936 /* 2444 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(2486), // Rule ID 146 //
937 /* 2449 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
938 /* 2452 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
939 /* 2456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
940 /* 2460 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
941 /* 2464 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
942 /* 2469 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
943 /* 2473 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
944 /* 2475 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (LE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
945 /* 2475 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE16),
946 /* 2478 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
947 /* 2480 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
948 /* 2484 */ GIR_RootConstrainSelectedInstOperands,
949 /* 2485 */ // GIR_Coverage, 146,
950 /* 2485 */ GIR_EraseRootFromParent_Done,
951 /* 2486 */ // Label 111: @2486
952 /* 2486 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2528), // Rule ID 147 //
953 /* 2491 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
954 /* 2494 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
955 /* 2498 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
956 /* 2502 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
957 /* 2506 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
958 /* 2511 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
959 /* 2515 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
960 /* 2517 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (LE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
961 /* 2517 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE32),
962 /* 2520 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
963 /* 2522 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
964 /* 2526 */ GIR_RootConstrainSelectedInstOperands,
965 /* 2527 */ // GIR_Coverage, 147,
966 /* 2527 */ GIR_EraseRootFromParent_Done,
967 /* 2528 */ // Label 112: @2528
968 /* 2528 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2540), // Rule ID 65 //
969 /* 2533 */ // (srl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SRL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
970 /* 2533 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr),
971 /* 2538 */ GIR_RootConstrainSelectedInstOperands,
972 /* 2539 */ // GIR_Coverage, 65,
973 /* 2539 */ GIR_Done,
974 /* 2540 */ // Label 113: @2540
975 /* 2540 */ GIM_Reject,
976 /* 2541 */ // Label 106: @2541
977 /* 2541 */ GIM_Reject,
978 /* 2542 */ // Label 104: @2542
979 /* 2542 */ GIM_Reject,
980 /* 2543 */ // Label 19: @2543
981 /* 2543 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 116*/ GIMT_Encode4(2608),
982 /* 2554 */ /*GILLT_s32*//*Label 114*/ GIMT_Encode4(2562),
983 /* 2558 */ /*GILLT_s64*//*Label 115*/ GIMT_Encode4(2585),
984 /* 2562 */ // Label 114: @2562
985 /* 2562 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2584), // Rule ID 75 //
986 /* 2567 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
987 /* 2570 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
988 /* 2573 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
989 /* 2577 */ // (sra:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SRA_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
990 /* 2577 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr_32),
991 /* 2582 */ GIR_RootConstrainSelectedInstOperands,
992 /* 2583 */ // GIR_Coverage, 75,
993 /* 2583 */ GIR_Done,
994 /* 2584 */ // Label 117: @2584
995 /* 2584 */ GIM_Reject,
996 /* 2585 */ // Label 115: @2585
997 /* 2585 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2607), // Rule ID 73 //
998 /* 2590 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
999 /* 2593 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
1000 /* 2596 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1001 /* 2600 */ // (sra:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SRA_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
1002 /* 2600 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr),
1003 /* 2605 */ GIR_RootConstrainSelectedInstOperands,
1004 /* 2606 */ // GIR_Coverage, 73,
1005 /* 2606 */ GIR_Done,
1006 /* 2607 */ // Label 118: @2607
1007 /* 2607 */ GIM_Reject,
1008 /* 2608 */ // Label 116: @2608
1009 /* 2608 */ GIM_Reject,
1010 /* 2609 */ // Label 20: @2609
1011 /* 2609 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2624), // Rule ID 124 //
1012 /* 2614 */ // MIs[0] BrDst
1013 /* 2614 */ GIM_CheckIsMBB, /*MI*/0, /*Op*/0,
1014 /* 2617 */ // (br (bb:{ *:[Other] }):$BrDst) => (JMP (bb:{ *:[Other] }):$BrDst)
1015 /* 2617 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::JMP),
1016 /* 2622 */ GIR_RootConstrainSelectedInstOperands,
1017 /* 2623 */ // GIR_Coverage, 124,
1018 /* 2623 */ GIR_Done,
1019 /* 2624 */ // Label 119: @2624
1020 /* 2624 */ GIM_Reject,
1021 /* 2625 */ // Label 21: @2625
1022 /* 2625 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2690),
1023 /* 2630 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
1024 /* 2633 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
1025 /* 2636 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1026 /* 2640 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1027 /* 2644 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2659), // Rule ID 142 //
1028 /* 2649 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
1029 /* 2652 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (BSWAP64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1030 /* 2652 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP64),
1031 /* 2657 */ GIR_RootConstrainSelectedInstOperands,
1032 /* 2658 */ // GIR_Coverage, 142,
1033 /* 2658 */ GIR_Done,
1034 /* 2659 */ // Label 121: @2659
1035 /* 2659 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2674), // Rule ID 145 //
1036 /* 2664 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
1037 /* 2667 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (BE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1038 /* 2667 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE64),
1039 /* 2672 */ GIR_RootConstrainSelectedInstOperands,
1040 /* 2673 */ // GIR_Coverage, 145,
1041 /* 2673 */ GIR_Done,
1042 /* 2674 */ // Label 122: @2674
1043 /* 2674 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2689), // Rule ID 148 //
1044 /* 2679 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
1045 /* 2682 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (LE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1046 /* 2682 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE64),
1047 /* 2687 */ GIR_RootConstrainSelectedInstOperands,
1048 /* 2688 */ // GIR_Coverage, 148,
1049 /* 2688 */ GIR_Done,
1050 /* 2689 */ // Label 123: @2689
1051 /* 2689 */ GIM_Reject,
1052 /* 2690 */ // Label 120: @2690
1053 /* 2690 */ GIM_Reject,
1054 /* 2691 */ // Label 22: @2691
1055 /* 2691 */ GIM_Reject,
1056 /* 2692 */ }; // Size: 2692 bytes
1057 return MatchTable0;
1058}
1059#undef GIMT_Encode2
1060#undef GIMT_Encode4
1061#undef GIMT_Encode8
1062
1063#endif // ifdef GET_GLOBALISEL_IMPL
1064
1065#ifdef GET_GLOBALISEL_PREDICATES_DECL
1066PredicateBitset AvailableModuleFeatures;
1067mutable PredicateBitset AvailableFunctionFeatures;
1068PredicateBitset getAvailableFeatures() const {
1069 return AvailableModuleFeatures | AvailableFunctionFeatures;
1070}
1071PredicateBitset
1072computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const;
1073PredicateBitset
1074computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget,
1075 const MachineFunction *MF) const;
1076void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1077#endif // ifdef GET_GLOBALISEL_PREDICATES_DECL
1078#ifdef GET_GLOBALISEL_PREDICATES_INIT
1079AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
1080AvailableFunctionFeatures()
1081#endif // ifdef GET_GLOBALISEL_PREDICATES_INIT
1082