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
11const unsigned MAX_SUBTARGET_PREDICATES = 12;
12using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
13
14#endif // GET_GLOBALISEL_PREDICATE_BITSET
15
16#ifdef GET_GLOBALISEL_TEMPORARIES_DECL
17
18 mutable MatcherState State;
19 typedef ComplexRendererFns(BPFInstructionSelector::*ComplexMatcherMemFn)(MachineOperand &) const;
20 typedef void(BPFInstructionSelector::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
21 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
22 static BPFInstructionSelector::ComplexMatcherMemFn ComplexPredicateFns[];
23 static BPFInstructionSelector::CustomRendererFn CustomRenderers[];
24 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
25 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
26 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
27 const uint8_t *getMatchTable() const override;
28 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
29 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
30 bool testSimplePredicate(unsigned PredicateID) const override;
31 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
32
33#endif // GET_GLOBALISEL_TEMPORARIES_DECL
34
35#ifdef GET_GLOBALISEL_TEMPORARIES_INIT
36
37, State(0),
38ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
39
40#endif // GET_GLOBALISEL_TEMPORARIES_INIT
41
42#ifdef GET_GLOBALISEL_IMPL
43
44// LLT Objects.
45enum {
46 GILLT_s32,
47 GILLT_s64,
48};
49const static size_t NumTypeObjects = 2;
50const static LLT TypeObjects[] = {
51 LLT::scalar(32),
52 LLT::scalar(64),
53};
54
55// Bits for subtarget features that participate in instruction matching.
56enum SubtargetFeatureBits : uint8_t {
57 Feature_BPFIsLittleEndianBit = 8,
58 Feature_BPFIsBigEndianBit = 9,
59 Feature_BPFHasALU32Bit = 6,
60 Feature_BPFNoALU32Bit = 3,
61 Feature_BPFHasLdsxBit = 5,
62 Feature_BPFHasMovsxBit = 2,
63 Feature_BPFHasBswapBit = 7,
64 Feature_BPFHasSdivSmodBit = 1,
65 Feature_BPFNoMovsxBit = 11,
66 Feature_BPFHasStoreImmBit = 4,
67 Feature_BPFHasLoadAcqStoreRelBit = 10,
68 Feature_BPFHasGotoxBit = 0,
69};
70
71PredicateBitset BPFInstructionSelector::
72computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const {
73 PredicateBitset Features{};
74 if (Subtarget->isLittleEndian())
75 Features.set(Feature_BPFIsLittleEndianBit);
76 if (!Subtarget->isLittleEndian())
77 Features.set(Feature_BPFIsBigEndianBit);
78 if (Subtarget->getHasAlu32())
79 Features.set(Feature_BPFHasALU32Bit);
80 if (!Subtarget->getHasAlu32())
81 Features.set(Feature_BPFNoALU32Bit);
82 if (Subtarget->hasLdsx())
83 Features.set(Feature_BPFHasLdsxBit);
84 if (Subtarget->hasMovsx())
85 Features.set(Feature_BPFHasMovsxBit);
86 if (Subtarget->hasBswap())
87 Features.set(Feature_BPFHasBswapBit);
88 if (Subtarget->hasSdivSmod())
89 Features.set(Feature_BPFHasSdivSmodBit);
90 if (!Subtarget->hasMovsx())
91 Features.set(Feature_BPFNoMovsxBit);
92 if (Subtarget->hasStoreImm())
93 Features.set(Feature_BPFHasStoreImmBit);
94 if (Subtarget->hasLoadAcqStoreRel())
95 Features.set(Feature_BPFHasLoadAcqStoreRelBit);
96 if (Subtarget->hasGotox())
97 Features.set(Feature_BPFHasGotoxBit);
98 return Features;
99}
100
101void BPFInstructionSelector::setupGeneratedPerFunctionState(MachineFunction &MF) {
102 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const BPFSubtarget *)&MF.getSubtarget(), &MF);
103}
104PredicateBitset BPFInstructionSelector::
105computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget, const MachineFunction *MF) const {
106 PredicateBitset Features{};
107 return Features;
108}
109
110// Feature bitsets.
111enum {
112 GIFBS_Invalid,
113 GIFBS_BPFHasBswap,
114 GIFBS_BPFHasMovsx,
115 GIFBS_BPFHasSdivSmod,
116 GIFBS_BPFIsBigEndian,
117 GIFBS_BPFIsLittleEndian,
118 GIFBS_BPFNoMovsx,
119};
120constexpr static PredicateBitset FeatureBitsets[] {
121 {}, // GIFBS_Invalid
122 {Feature_BPFHasBswapBit, },
123 {Feature_BPFHasMovsxBit, },
124 {Feature_BPFHasSdivSmodBit, },
125 {Feature_BPFIsBigEndianBit, },
126 {Feature_BPFIsLittleEndianBit, },
127 {Feature_BPFNoMovsxBit, },
128};
129
130// ComplexPattern predicates.
131enum {
132 GICP_Invalid,
133};
134// See constructor for table contents
135
136BPFInstructionSelector::ComplexMatcherMemFn
137BPFInstructionSelector::ComplexPredicateFns[] = {
138 nullptr, // GICP_Invalid
139};
140
141// PatFrag predicates.
142enum {
143 GICXXPred_MI_Predicate_ffloor_nnan = GICXXPred_Invalid + 1,
144 GICXXPred_MI_Predicate_or_disjoint,
145};
146bool BPFInstructionSelector::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
147 const MachineFunction &MF = *MI.getParent()->getParent();
148 const MachineRegisterInfo &MRI = MF.getRegInfo();
149 const auto &Operands = State.RecordedOperands;
150 (void)Operands;
151 (void)MRI;
152 switch (PredicateID) {
153 case GICXXPred_MI_Predicate_ffloor_nnan: {
154
155 return MI.getFlag(MachineInstr::FmNoNans);
156
157 }
158 case GICXXPred_MI_Predicate_or_disjoint: {
159
160 return MI.getFlag(MachineInstr::Disjoint);
161
162 }
163 }
164 llvm_unreachable("Unknown predicate");
165 return false;
166}
167// PatFrag predicates.
168bool BPFInstructionSelector::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
169 const auto &Operands = State.RecordedOperands;
170 Register Reg = MO.getReg();
171 (void)Operands;
172 (void)Reg;
173 llvm_unreachable("Unknown predicate");
174 return false;
175}
176// PatFrag predicates.
177bool BPFInstructionSelector::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
178 llvm_unreachable("Unknown predicate");
179 return false;
180}
181// PatFrag predicates.
182bool BPFInstructionSelector::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
183 llvm_unreachable("Unknown predicate");
184 return false;
185}
186// PatFrag predicates.
187bool BPFInstructionSelector::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
188 llvm_unreachable("Unknown predicate");
189 return false;
190}
191bool BPFInstructionSelector::testSimplePredicate(unsigned) const {
192 llvm_unreachable("BPFInstructionSelector does not support simple predicates!");
193 return false;
194}
195// Custom renderers.
196enum {
197 GICR_Invalid,
198};
199BPFInstructionSelector::CustomRendererFn
200BPFInstructionSelector::CustomRenderers[] = {
201 nullptr, // GICR_Invalid
202};
203
204bool BPFInstructionSelector::selectImpl(MachineInstr &I, CodeGenCoverage &CoverageInfo) const {
205 const PredicateBitset AvailableFeatures = getAvailableFeatures();
206 MachineIRBuilder B(I);
207 State.MIs.clear();
208 State.MIs.push_back(&I);
209
210 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), TII, MF->getRegInfo(), TRI, RBI, AvailableFeatures, &CoverageInfo)) {
211 return true;
212 }
213
214 return false;
215}
216
217bool BPFInstructionSelector::runCustomAction(unsigned, const MatcherState&, NewMIVector &) const {
218 llvm_unreachable("BPFInstructionSelector does not support custom C++ actions!");
219}
220#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
221#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
222#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
223#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)
224#else
225#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
226#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
227#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)
228#endif
229const uint8_t *BPFInstructionSelector::getMatchTable() const {
230 constexpr static uint8_t MatchTable0[] = {
231 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(55), GIMT_Encode2(267), /*)*//*default:*//*Label 22*/ GIMT_Encode4(2687),
232 /* 10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(858),
233 /* 14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(924),
234 /* 18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(1038),
235 /* 22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1104),
236 /* 26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1174),
237 /* 30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1240),
238 /* 34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1310), GIMT_Encode4(0), GIMT_Encode4(0),
239 /* 46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1376),
240 /* 50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1502),
241 /* 54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1568), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
242 /* 350 */ /*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ GIMT_Encode4(1634), GIMT_Encode4(0), GIMT_Encode4(0),
243 /* 362 */ /*TargetOpcode::G_ANYEXT*//*Label 11*/ GIMT_Encode4(1698),
244 /* 366 */ /*TargetOpcode::G_TRUNC*//*Label 12*/ GIMT_Encode4(1761), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
245 /* 382 */ /*TargetOpcode::G_CONSTANT*//*Label 13*/ GIMT_Encode4(1803), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
246 /* 398 */ /*TargetOpcode::G_SEXT*//*Label 14*/ GIMT_Encode4(1826),
247 /* 402 */ /*TargetOpcode::G_SEXT_INREG*//*Label 15*/ GIMT_Encode4(1940),
248 /* 406 */ /*TargetOpcode::G_ZEXT*//*Label 16*/ GIMT_Encode4(2131),
249 /* 410 */ /*TargetOpcode::G_SHL*//*Label 17*/ GIMT_Encode4(2158),
250 /* 414 */ /*TargetOpcode::G_LSHR*//*Label 18*/ GIMT_Encode4(2224),
251 /* 418 */ /*TargetOpcode::G_ASHR*//*Label 19*/ GIMT_Encode4(2542), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
252 /* 786 */ /*TargetOpcode::G_BR*//*Label 20*/ GIMT_Encode4(2608), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
253 /* 854 */ /*TargetOpcode::G_BSWAP*//*Label 21*/ GIMT_Encode4(2624),
254 /* 858 */ // Label 0: @858
255 /* 858 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 25*/ GIMT_Encode4(923),
256 /* 869 */ /*GILLT_s32*//*Label 23*/ GIMT_Encode4(877),
257 /* 873 */ /*GILLT_s64*//*Label 24*/ GIMT_Encode4(900),
258 /* 877 */ // Label 23: @877
259 /* 877 */ GIM_Try, /*On fail goto*//*Label 26*/ GIMT_Encode4(899), // Rule ID 47 //
260 /* 882 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
261 /* 885 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
262 /* 888 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
263 /* 892 */ // (add:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (ADD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
264 /* 892 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr_32),
265 /* 897 */ GIR_RootConstrainSelectedInstOperands,
266 /* 898 */ // GIR_Coverage, 47,
267 /* 898 */ GIR_Done,
268 /* 899 */ // Label 26: @899
269 /* 899 */ GIM_Reject,
270 /* 900 */ // Label 24: @900
271 /* 900 */ GIM_Try, /*On fail goto*//*Label 27*/ GIMT_Encode4(922), // Rule ID 45 //
272 /* 905 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
273 /* 908 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
274 /* 911 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
275 /* 915 */ // (add:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (ADD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
276 /* 915 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr),
277 /* 920 */ GIR_RootConstrainSelectedInstOperands,
278 /* 921 */ // GIR_Coverage, 45,
279 /* 921 */ GIR_Done,
280 /* 922 */ // Label 27: @922
281 /* 922 */ GIM_Reject,
282 /* 923 */ // Label 25: @923
283 /* 923 */ GIM_Reject,
284 /* 924 */ // Label 1: @924
285 /* 924 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 30*/ GIMT_Encode4(1037),
286 /* 935 */ /*GILLT_s32*//*Label 28*/ GIMT_Encode4(943),
287 /* 939 */ /*GILLT_s64*//*Label 29*/ GIMT_Encode4(990),
288 /* 943 */ // Label 28: @943
289 /* 943 */ GIM_Try, /*On fail goto*//*Label 31*/ GIMT_Encode4(989),
290 /* 948 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
291 /* 951 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
292 /* 954 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
293 /* 958 */ GIM_Try, /*On fail goto*//*Label 32*/ GIMT_Encode4(976), // Rule ID 98 //
294 /* 963 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
295 /* 967 */ // (sub:{ *:[i32] } 0:{ *:[i32] }, i32:{ *:[i32] }:$src) => (NEG_32:{ *:[i32] } i32:{ *:[i32] }:$src)
296 /* 967 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_32),
297 /* 970 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
298 /* 972 */ GIR_RootToRootCopy, /*OpIdx*/2, // src
299 /* 974 */ GIR_RootConstrainSelectedInstOperands,
300 /* 975 */ // GIR_Coverage, 98,
301 /* 975 */ GIR_EraseRootFromParent_Done,
302 /* 976 */ // Label 32: @976
303 /* 976 */ GIM_Try, /*On fail goto*//*Label 33*/ GIMT_Encode4(988), // Rule ID 51 //
304 /* 981 */ // (sub:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SUB_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
305 /* 981 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr_32),
306 /* 986 */ GIR_RootConstrainSelectedInstOperands,
307 /* 987 */ // GIR_Coverage, 51,
308 /* 987 */ GIR_Done,
309 /* 988 */ // Label 33: @988
310 /* 988 */ GIM_Reject,
311 /* 989 */ // Label 31: @989
312 /* 989 */ GIM_Reject,
313 /* 990 */ // Label 29: @990
314 /* 990 */ GIM_Try, /*On fail goto*//*Label 34*/ GIMT_Encode4(1036),
315 /* 995 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
316 /* 998 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
317 /* 1001 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
318 /* 1005 */ GIM_Try, /*On fail goto*//*Label 35*/ GIMT_Encode4(1023), // Rule ID 97 //
319 /* 1010 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
320 /* 1014 */ // (sub:{ *:[i64] } 0:{ *:[i64] }, i64:{ *:[i64] }:$src) => (NEG_64:{ *:[i64] } i64:{ *:[i64] }:$src)
321 /* 1014 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_64),
322 /* 1017 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
323 /* 1019 */ GIR_RootToRootCopy, /*OpIdx*/2, // src
324 /* 1021 */ GIR_RootConstrainSelectedInstOperands,
325 /* 1022 */ // GIR_Coverage, 97,
326 /* 1022 */ GIR_EraseRootFromParent_Done,
327 /* 1023 */ // Label 35: @1023
328 /* 1023 */ GIM_Try, /*On fail goto*//*Label 36*/ GIMT_Encode4(1035), // Rule ID 49 //
329 /* 1028 */ // (sub:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SUB_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
330 /* 1028 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr),
331 /* 1033 */ GIR_RootConstrainSelectedInstOperands,
332 /* 1034 */ // GIR_Coverage, 49,
333 /* 1034 */ GIR_Done,
334 /* 1035 */ // Label 36: @1035
335 /* 1035 */ GIM_Reject,
336 /* 1036 */ // Label 34: @1036
337 /* 1036 */ GIM_Reject,
338 /* 1037 */ // Label 30: @1037
339 /* 1037 */ GIM_Reject,
340 /* 1038 */ // Label 2: @1038
341 /* 1038 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 39*/ GIMT_Encode4(1103),
342 /* 1049 */ /*GILLT_s32*//*Label 37*/ GIMT_Encode4(1057),
343 /* 1053 */ /*GILLT_s64*//*Label 38*/ GIMT_Encode4(1080),
344 /* 1057 */ // Label 37: @1057
345 /* 1057 */ GIM_Try, /*On fail goto*//*Label 40*/ GIMT_Encode4(1079), // Rule ID 79 //
346 /* 1062 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
347 /* 1065 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
348 /* 1068 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
349 /* 1072 */ // (mul:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (MUL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
350 /* 1072 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr_32),
351 /* 1077 */ GIR_RootConstrainSelectedInstOperands,
352 /* 1078 */ // GIR_Coverage, 79,
353 /* 1078 */ GIR_Done,
354 /* 1079 */ // Label 40: @1079
355 /* 1079 */ GIM_Reject,
356 /* 1080 */ // Label 38: @1080
357 /* 1080 */ GIM_Try, /*On fail goto*//*Label 41*/ GIMT_Encode4(1102), // Rule ID 77 //
358 /* 1085 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
359 /* 1088 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
360 /* 1091 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
361 /* 1095 */ // (mul:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (MUL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
362 /* 1095 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr),
363 /* 1100 */ GIR_RootConstrainSelectedInstOperands,
364 /* 1101 */ // GIR_Coverage, 77,
365 /* 1101 */ GIR_Done,
366 /* 1102 */ // Label 41: @1102
367 /* 1102 */ GIM_Reject,
368 /* 1103 */ // Label 39: @1103
369 /* 1103 */ GIM_Reject,
370 /* 1104 */ // Label 3: @1104
371 /* 1104 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 44*/ GIMT_Encode4(1173),
372 /* 1115 */ /*GILLT_s32*//*Label 42*/ GIMT_Encode4(1123),
373 /* 1119 */ /*GILLT_s64*//*Label 43*/ GIMT_Encode4(1148),
374 /* 1123 */ // Label 42: @1123
375 /* 1123 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 45*/ GIMT_Encode4(1147), GIMT_Encode2(GIFBS_BPFHasSdivSmod), // Rule ID 91 //
376 /* 1130 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
377 /* 1133 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
378 /* 1136 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
379 /* 1140 */ // (sdiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SDIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
380 /* 1140 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr_32),
381 /* 1145 */ GIR_RootConstrainSelectedInstOperands,
382 /* 1146 */ // GIR_Coverage, 91,
383 /* 1146 */ GIR_Done,
384 /* 1147 */ // Label 45: @1147
385 /* 1147 */ GIM_Reject,
386 /* 1148 */ // Label 43: @1148
387 /* 1148 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 46*/ GIMT_Encode4(1172), GIMT_Encode2(GIFBS_BPFHasSdivSmod), // Rule ID 89 //
388 /* 1155 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
389 /* 1158 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
390 /* 1161 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
391 /* 1165 */ // (sdiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SDIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
392 /* 1165 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr),
393 /* 1170 */ GIR_RootConstrainSelectedInstOperands,
394 /* 1171 */ // GIR_Coverage, 89,
395 /* 1171 */ GIR_Done,
396 /* 1172 */ // Label 46: @1172
397 /* 1172 */ GIM_Reject,
398 /* 1173 */ // Label 44: @1173
399 /* 1173 */ GIM_Reject,
400 /* 1174 */ // Label 4: @1174
401 /* 1174 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 49*/ GIMT_Encode4(1239),
402 /* 1185 */ /*GILLT_s32*//*Label 47*/ GIMT_Encode4(1193),
403 /* 1189 */ /*GILLT_s64*//*Label 48*/ GIMT_Encode4(1216),
404 /* 1193 */ // Label 47: @1193
405 /* 1193 */ GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(1215), // Rule ID 83 //
406 /* 1198 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
407 /* 1201 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
408 /* 1204 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
409 /* 1208 */ // (udiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (DIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
410 /* 1208 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr_32),
411 /* 1213 */ GIR_RootConstrainSelectedInstOperands,
412 /* 1214 */ // GIR_Coverage, 83,
413 /* 1214 */ GIR_Done,
414 /* 1215 */ // Label 50: @1215
415 /* 1215 */ GIM_Reject,
416 /* 1216 */ // Label 48: @1216
417 /* 1216 */ GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(1238), // Rule ID 81 //
418 /* 1221 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
419 /* 1224 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
420 /* 1227 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
421 /* 1231 */ // (udiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (DIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
422 /* 1231 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr),
423 /* 1236 */ GIR_RootConstrainSelectedInstOperands,
424 /* 1237 */ // GIR_Coverage, 81,
425 /* 1237 */ GIR_Done,
426 /* 1238 */ // Label 51: @1238
427 /* 1238 */ GIM_Reject,
428 /* 1239 */ // Label 49: @1239
429 /* 1239 */ GIM_Reject,
430 /* 1240 */ // Label 5: @1240
431 /* 1240 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 54*/ GIMT_Encode4(1309),
432 /* 1251 */ /*GILLT_s32*//*Label 52*/ GIMT_Encode4(1259),
433 /* 1255 */ /*GILLT_s64*//*Label 53*/ GIMT_Encode4(1284),
434 /* 1259 */ // Label 52: @1259
435 /* 1259 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 55*/ GIMT_Encode4(1283), GIMT_Encode2(GIFBS_BPFHasSdivSmod), // Rule ID 95 //
436 /* 1266 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
437 /* 1269 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
438 /* 1272 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
439 /* 1276 */ // (srem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SMOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
440 /* 1276 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr_32),
441 /* 1281 */ GIR_RootConstrainSelectedInstOperands,
442 /* 1282 */ // GIR_Coverage, 95,
443 /* 1282 */ GIR_Done,
444 /* 1283 */ // Label 55: @1283
445 /* 1283 */ GIM_Reject,
446 /* 1284 */ // Label 53: @1284
447 /* 1284 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 56*/ GIMT_Encode4(1308), GIMT_Encode2(GIFBS_BPFHasSdivSmod), // Rule ID 93 //
448 /* 1291 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
449 /* 1294 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
450 /* 1297 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
451 /* 1301 */ // (srem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SMOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
452 /* 1301 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr),
453 /* 1306 */ GIR_RootConstrainSelectedInstOperands,
454 /* 1307 */ // GIR_Coverage, 93,
455 /* 1307 */ GIR_Done,
456 /* 1308 */ // Label 56: @1308
457 /* 1308 */ GIM_Reject,
458 /* 1309 */ // Label 54: @1309
459 /* 1309 */ GIM_Reject,
460 /* 1310 */ // Label 6: @1310
461 /* 1310 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 59*/ GIMT_Encode4(1375),
462 /* 1321 */ /*GILLT_s32*//*Label 57*/ GIMT_Encode4(1329),
463 /* 1325 */ /*GILLT_s64*//*Label 58*/ GIMT_Encode4(1352),
464 /* 1329 */ // Label 57: @1329
465 /* 1329 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1351), // Rule ID 87 //
466 /* 1334 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
467 /* 1337 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
468 /* 1340 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
469 /* 1344 */ // (urem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (MOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
470 /* 1344 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr_32),
471 /* 1349 */ GIR_RootConstrainSelectedInstOperands,
472 /* 1350 */ // GIR_Coverage, 87,
473 /* 1350 */ GIR_Done,
474 /* 1351 */ // Label 60: @1351
475 /* 1351 */ GIM_Reject,
476 /* 1352 */ // Label 58: @1352
477 /* 1352 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1374), // Rule ID 85 //
478 /* 1357 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
479 /* 1360 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
480 /* 1363 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
481 /* 1367 */ // (urem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (MOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
482 /* 1367 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr),
483 /* 1372 */ GIR_RootConstrainSelectedInstOperands,
484 /* 1373 */ // GIR_Coverage, 85,
485 /* 1373 */ GIR_Done,
486 /* 1374 */ // Label 61: @1374
487 /* 1374 */ GIM_Reject,
488 /* 1375 */ // Label 59: @1375
489 /* 1375 */ GIM_Reject,
490 /* 1376 */ // Label 7: @1376
491 /* 1376 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 64*/ GIMT_Encode4(1501),
492 /* 1387 */ /*GILLT_s32*//*Label 62*/ GIMT_Encode4(1395),
493 /* 1391 */ /*GILLT_s64*//*Label 63*/ GIMT_Encode4(1418),
494 /* 1395 */ // Label 62: @1395
495 /* 1395 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1417), // Rule ID 59 //
496 /* 1400 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
497 /* 1403 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
498 /* 1406 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
499 /* 1410 */ // (and:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (AND_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
500 /* 1410 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr_32),
501 /* 1415 */ GIR_RootConstrainSelectedInstOperands,
502 /* 1416 */ // GIR_Coverage, 59,
503 /* 1416 */ GIR_Done,
504 /* 1417 */ // Label 65: @1417
505 /* 1417 */ GIM_Reject,
506 /* 1418 */ // Label 63: @1418
507 /* 1418 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1500),
508 /* 1423 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
509 /* 1426 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
510 /* 1429 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
511 /* 1433 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1487), // Rule ID 172 //
512 /* 1438 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
513 /* 1442 */ GIM_CheckConstantInt, /*MI*/0, /*Op*/2, GIMT_Encode8(4294967295),
514 /* 1453 */ // (and:{ *:[i64] } GPR:{ *:[i64] }:$src, 4294967295:{ *:[i64] }) => (SRL_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } GPR:{ *:[i64] }:$src, 32:{ *:[i64] }), 32:{ *:[i64] })
515 /* 1453 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
516 /* 1456 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
517 /* 1460 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
518 /* 1465 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
519 /* 1469 */ GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
520 /* 1472 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
521 /* 1474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRL_ri),
522 /* 1477 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
523 /* 1479 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
524 /* 1482 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
525 /* 1485 */ GIR_RootConstrainSelectedInstOperands,
526 /* 1486 */ // GIR_Coverage, 172,
527 /* 1486 */ GIR_EraseRootFromParent_Done,
528 /* 1487 */ // Label 67: @1487
529 /* 1487 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1499), // Rule ID 57 //
530 /* 1492 */ // (and:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (AND_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
531 /* 1492 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr),
532 /* 1497 */ GIR_RootConstrainSelectedInstOperands,
533 /* 1498 */ // GIR_Coverage, 57,
534 /* 1498 */ GIR_Done,
535 /* 1499 */ // Label 68: @1499
536 /* 1499 */ GIM_Reject,
537 /* 1500 */ // Label 66: @1500
538 /* 1500 */ GIM_Reject,
539 /* 1501 */ // Label 64: @1501
540 /* 1501 */ GIM_Reject,
541 /* 1502 */ // Label 8: @1502
542 /* 1502 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 71*/ GIMT_Encode4(1567),
543 /* 1513 */ /*GILLT_s32*//*Label 69*/ GIMT_Encode4(1521),
544 /* 1517 */ /*GILLT_s64*//*Label 70*/ GIMT_Encode4(1544),
545 /* 1521 */ // Label 69: @1521
546 /* 1521 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1543), // Rule ID 55 //
547 /* 1526 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
548 /* 1529 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
549 /* 1532 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
550 /* 1536 */ // (or:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (OR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
551 /* 1536 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr_32),
552 /* 1541 */ GIR_RootConstrainSelectedInstOperands,
553 /* 1542 */ // GIR_Coverage, 55,
554 /* 1542 */ GIR_Done,
555 /* 1543 */ // Label 72: @1543
556 /* 1543 */ GIM_Reject,
557 /* 1544 */ // Label 70: @1544
558 /* 1544 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1566), // Rule ID 53 //
559 /* 1549 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
560 /* 1552 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
561 /* 1555 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
562 /* 1559 */ // (or:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (OR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
563 /* 1559 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr),
564 /* 1564 */ GIR_RootConstrainSelectedInstOperands,
565 /* 1565 */ // GIR_Coverage, 53,
566 /* 1565 */ GIR_Done,
567 /* 1566 */ // Label 73: @1566
568 /* 1566 */ GIM_Reject,
569 /* 1567 */ // Label 71: @1567
570 /* 1567 */ GIM_Reject,
571 /* 1568 */ // Label 9: @1568
572 /* 1568 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 76*/ GIMT_Encode4(1633),
573 /* 1579 */ /*GILLT_s32*//*Label 74*/ GIMT_Encode4(1587),
574 /* 1583 */ /*GILLT_s64*//*Label 75*/ GIMT_Encode4(1610),
575 /* 1587 */ // Label 74: @1587
576 /* 1587 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1609), // Rule ID 71 //
577 /* 1592 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
578 /* 1595 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
579 /* 1598 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
580 /* 1602 */ // (xor:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (XOR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
581 /* 1602 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr_32),
582 /* 1607 */ GIR_RootConstrainSelectedInstOperands,
583 /* 1608 */ // GIR_Coverage, 71,
584 /* 1608 */ GIR_Done,
585 /* 1609 */ // Label 77: @1609
586 /* 1609 */ GIM_Reject,
587 /* 1610 */ // Label 75: @1610
588 /* 1610 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1632), // Rule ID 69 //
589 /* 1615 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
590 /* 1618 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
591 /* 1621 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
592 /* 1625 */ // (xor:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (XOR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
593 /* 1625 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr),
594 /* 1630 */ GIR_RootConstrainSelectedInstOperands,
595 /* 1631 */ // GIR_Coverage, 69,
596 /* 1631 */ GIR_Done,
597 /* 1632 */ // Label 78: @1632
598 /* 1632 */ GIM_Reject,
599 /* 1633 */ // Label 76: @1633
600 /* 1633 */ GIM_Reject,
601 /* 1634 */ // Label 10: @1634
602 /* 1634 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1697), // Rule ID 108 //
603 /* 1639 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/4,
604 /* 1642 */ GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, GIMT_Encode2(Intrinsic::bpf_pseudo),
605 /* 1647 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
606 /* 1650 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
607 /* 1653 */ GIM_RootCheckType, /*Op*/3, /*Type*/GILLT_s64,
608 /* 1656 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
609 /* 1660 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
610 /* 1664 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
611 /* 1668 */ // MIs[1] Operand 1
612 /* 1668 */ // No operand predicates
613 /* 1668 */ GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/3, // MIs[2]
614 /* 1672 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
615 /* 1676 */ // MIs[2] Operand 1
616 /* 1676 */ // No operand predicates
617 /* 1676 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
618 /* 1678 */ // (intrinsic_w_chain:{ *:[i64] } 4251:{ *:[iPTR] }, (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm) => (LD_pseudo:{ *:[i64] } (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)
619 /* 1678 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_pseudo),
620 /* 1681 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
621 /* 1683 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // pseudo
622 /* 1686 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
623 /* 1689 */ GIR_MergeMemOperands, /*InsnID*/0, /*NumInsns*/3, /*MergeInsnID's*/0, 1, 2,
624 /* 1695 */ GIR_RootConstrainSelectedInstOperands,
625 /* 1696 */ // GIR_Coverage, 108,
626 /* 1696 */ GIR_EraseRootFromParent_Done,
627 /* 1697 */ // Label 79: @1697
628 /* 1697 */ GIM_Reject,
629 /* 1698 */ // Label 11: @1698
630 /* 1698 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1760), // Rule ID 239 //
631 /* 1703 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
632 /* 1706 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
633 /* 1709 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
634 /* 1713 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
635 /* 1717 */ // (anyext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GPR32:{ *:[i32] }:$src, sub_32:{ *:[i32] })
636 /* 1717 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
637 /* 1720 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::IMPLICIT_DEF),
638 /* 1724 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
639 /* 1729 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
640 /* 1731 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::INSERT_SUBREG),
641 /* 1734 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
642 /* 1736 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
643 /* 1739 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
644 /* 1741 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
645 /* 1744 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPRRegClassID),
646 /* 1749 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
647 /* 1754 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/2, GIMT_Encode2(BPF::GPR32RegClassID),
648 /* 1759 */ // GIR_Coverage, 239,
649 /* 1759 */ GIR_EraseRootFromParent_Done,
650 /* 1760 */ // Label 80: @1760
651 /* 1760 */ GIM_Reject,
652 /* 1761 */ // Label 12: @1761
653 /* 1761 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1802), // Rule ID 238 //
654 /* 1766 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s32,
655 /* 1769 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
656 /* 1772 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
657 /* 1776 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
658 /* 1780 */ // (trunc:{ *:[i32] } GPR:{ *:[i64] }:$src) => (EXTRACT_SUBREG:{ *:[i32] } GPR:{ *:[i64] }:$src, sub_32:{ *:[i32] })
659 /* 1780 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
660 /* 1783 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
661 /* 1785 */ GIR_CopySubReg, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/GIMT_Encode2(1), // src
662 /* 1791 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPR32RegClassID),
663 /* 1796 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
664 /* 1801 */ // GIR_Coverage, 238,
665 /* 1801 */ GIR_EraseRootFromParent_Done,
666 /* 1802 */ // Label 81: @1802
667 /* 1802 */ GIM_Reject,
668 /* 1803 */ // Label 13: @1803
669 /* 1803 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1825), // Rule ID 99 //
670 /* 1808 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
671 /* 1811 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
672 /* 1815 */ // MIs[0] Operand 1
673 /* 1815 */ // No operand predicates
674 /* 1815 */ // (imm:{ *:[i64] }):$imm => (LD_imm64:{ *:[i64] } (imm:{ *:[i64] }):$imm)
675 /* 1815 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_imm64),
676 /* 1818 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
677 /* 1820 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/0, // imm
678 /* 1823 */ GIR_RootConstrainSelectedInstOperands,
679 /* 1824 */ // GIR_Coverage, 99,
680 /* 1824 */ GIR_EraseRootFromParent_Done,
681 /* 1825 */ // Label 82: @1825
682 /* 1825 */ GIM_Reject,
683 /* 1826 */ // Label 14: @1826
684 /* 1826 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1939),
685 /* 1831 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
686 /* 1834 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
687 /* 1837 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
688 /* 1841 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
689 /* 1845 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 84*/ GIMT_Encode4(1903), GIMT_Encode2(GIFBS_BPFNoMovsx), // Rule ID 235 //
690 /* 1852 */ // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (SRA_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src), 32:{ *:[i64] }), 32:{ *:[i64] })
691 /* 1852 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
692 /* 1855 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
693 /* 1859 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
694 /* 1864 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
695 /* 1868 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
696 /* 1870 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
697 /* 1873 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
698 /* 1877 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
699 /* 1882 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
700 /* 1885 */ GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
701 /* 1888 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
702 /* 1890 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRA_ri),
703 /* 1893 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
704 /* 1895 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
705 /* 1898 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
706 /* 1901 */ GIR_RootConstrainSelectedInstOperands,
707 /* 1902 */ // GIR_Coverage, 235,
708 /* 1902 */ GIR_EraseRootFromParent_Done,
709 /* 1903 */ // Label 84: @1903
710 /* 1903 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 85*/ GIMT_Encode4(1938), GIMT_Encode2(GIFBS_BPFHasMovsx), // Rule ID 236 //
711 /* 1910 */ // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (MOVSX_rr_32:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src))
712 /* 1910 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
713 /* 1913 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
714 /* 1917 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
715 /* 1922 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
716 /* 1926 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
717 /* 1928 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
718 /* 1931 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
719 /* 1933 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
720 /* 1936 */ GIR_RootConstrainSelectedInstOperands,
721 /* 1937 */ // GIR_Coverage, 236,
722 /* 1937 */ GIR_EraseRootFromParent_Done,
723 /* 1938 */ // Label 85: @1938
724 /* 1938 */ GIM_Reject,
725 /* 1939 */ // Label 83: @1939
726 /* 1939 */ GIM_Reject,
727 /* 1940 */ // Label 15: @1940
728 /* 1940 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 88*/ GIMT_Encode4(2130),
729 /* 1951 */ /*GILLT_s32*//*Label 86*/ GIMT_Encode4(1959),
730 /* 1955 */ /*GILLT_s64*//*Label 87*/ GIMT_Encode4(2031),
731 /* 1959 */ // Label 86: @1959
732 /* 1959 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(2030),
733 /* 1964 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
734 /* 1967 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
735 /* 1971 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
736 /* 1975 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 90*/ GIMT_Encode4(2002), GIMT_Encode2(GIFBS_BPFHasMovsx), // Rule ID 105 //
737 /* 1982 */ // MIs[0] Operand 2
738 /* 1982 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
739 /* 1993 */ // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i8:{ *:[Other] }) => (MOVSX_rr_32_8:{ *:[i32] } GPR32:{ *:[i32] }:$src)
740 /* 1993 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_8),
741 /* 1996 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
742 /* 1998 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
743 /* 2000 */ GIR_RootConstrainSelectedInstOperands,
744 /* 2001 */ // GIR_Coverage, 105,
745 /* 2001 */ GIR_EraseRootFromParent_Done,
746 /* 2002 */ // Label 90: @2002
747 /* 2002 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 91*/ GIMT_Encode4(2029), GIMT_Encode2(GIFBS_BPFHasMovsx), // Rule ID 106 //
748 /* 2009 */ // MIs[0] Operand 2
749 /* 2009 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
750 /* 2020 */ // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i16:{ *:[Other] }) => (MOVSX_rr_32_16:{ *:[i32] } GPR32:{ *:[i32] }:$src)
751 /* 2020 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_16),
752 /* 2023 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
753 /* 2025 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
754 /* 2027 */ GIR_RootConstrainSelectedInstOperands,
755 /* 2028 */ // GIR_Coverage, 106,
756 /* 2028 */ GIR_EraseRootFromParent_Done,
757 /* 2029 */ // Label 91: @2029
758 /* 2029 */ GIM_Reject,
759 /* 2030 */ // Label 89: @2030
760 /* 2030 */ GIM_Reject,
761 /* 2031 */ // Label 87: @2031
762 /* 2031 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(2129),
763 /* 2036 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
764 /* 2039 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
765 /* 2043 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
766 /* 2047 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 93*/ GIMT_Encode4(2074), GIMT_Encode2(GIFBS_BPFHasMovsx), // Rule ID 102 //
767 /* 2054 */ // MIs[0] Operand 2
768 /* 2054 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
769 /* 2065 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i8:{ *:[Other] }) => (MOVSX_rr_8:{ *:[i64] } GPR:{ *:[i64] }:$src)
770 /* 2065 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_8),
771 /* 2068 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
772 /* 2070 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
773 /* 2072 */ GIR_RootConstrainSelectedInstOperands,
774 /* 2073 */ // GIR_Coverage, 102,
775 /* 2073 */ GIR_EraseRootFromParent_Done,
776 /* 2074 */ // Label 93: @2074
777 /* 2074 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 94*/ GIMT_Encode4(2101), GIMT_Encode2(GIFBS_BPFHasMovsx), // Rule ID 103 //
778 /* 2081 */ // MIs[0] Operand 2
779 /* 2081 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
780 /* 2092 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i16:{ *:[Other] }) => (MOVSX_rr_16:{ *:[i64] } GPR:{ *:[i64] }:$src)
781 /* 2092 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_16),
782 /* 2095 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
783 /* 2097 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
784 /* 2099 */ GIR_RootConstrainSelectedInstOperands,
785 /* 2100 */ // GIR_Coverage, 103,
786 /* 2100 */ GIR_EraseRootFromParent_Done,
787 /* 2101 */ // Label 94: @2101
788 /* 2101 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 95*/ GIMT_Encode4(2128), GIMT_Encode2(GIFBS_BPFHasMovsx), // Rule ID 104 //
789 /* 2108 */ // MIs[0] Operand 2
790 /* 2108 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(32),
791 /* 2119 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i32:{ *:[Other] }) => (MOVSX_rr_32:{ *:[i64] } GPR:{ *:[i64] }:$src)
792 /* 2119 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
793 /* 2122 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
794 /* 2124 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
795 /* 2126 */ GIR_RootConstrainSelectedInstOperands,
796 /* 2127 */ // GIR_Coverage, 104,
797 /* 2127 */ GIR_EraseRootFromParent_Done,
798 /* 2128 */ // Label 95: @2128
799 /* 2128 */ GIM_Reject,
800 /* 2129 */ // Label 92: @2129
801 /* 2129 */ GIM_Reject,
802 /* 2130 */ // Label 88: @2130
803 /* 2130 */ GIM_Reject,
804 /* 2131 */ // Label 16: @2131
805 /* 2131 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(2157), // Rule ID 237 //
806 /* 2136 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
807 /* 2139 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
808 /* 2142 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
809 /* 2146 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
810 /* 2150 */ // (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src)
811 /* 2150 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
812 /* 2155 */ GIR_RootConstrainSelectedInstOperands,
813 /* 2156 */ // GIR_Coverage, 237,
814 /* 2156 */ GIR_Done,
815 /* 2157 */ // Label 96: @2157
816 /* 2157 */ GIM_Reject,
817 /* 2158 */ // Label 17: @2158
818 /* 2158 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 99*/ GIMT_Encode4(2223),
819 /* 2169 */ /*GILLT_s32*//*Label 97*/ GIMT_Encode4(2177),
820 /* 2173 */ /*GILLT_s64*//*Label 98*/ GIMT_Encode4(2200),
821 /* 2177 */ // Label 97: @2177
822 /* 2177 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(2199), // Rule ID 63 //
823 /* 2182 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
824 /* 2185 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
825 /* 2188 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
826 /* 2192 */ // (shl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SLL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
827 /* 2192 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr_32),
828 /* 2197 */ GIR_RootConstrainSelectedInstOperands,
829 /* 2198 */ // GIR_Coverage, 63,
830 /* 2198 */ GIR_Done,
831 /* 2199 */ // Label 100: @2199
832 /* 2199 */ GIM_Reject,
833 /* 2200 */ // Label 98: @2200
834 /* 2200 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(2222), // Rule ID 61 //
835 /* 2205 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
836 /* 2208 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
837 /* 2211 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
838 /* 2215 */ // (shl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SLL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
839 /* 2215 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr),
840 /* 2220 */ GIR_RootConstrainSelectedInstOperands,
841 /* 2221 */ // GIR_Coverage, 61,
842 /* 2221 */ GIR_Done,
843 /* 2222 */ // Label 101: @2222
844 /* 2222 */ GIM_Reject,
845 /* 2223 */ // Label 99: @2223
846 /* 2223 */ GIM_Reject,
847 /* 2224 */ // Label 18: @2224
848 /* 2224 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 104*/ GIMT_Encode4(2541),
849 /* 2235 */ /*GILLT_s32*//*Label 102*/ GIMT_Encode4(2243),
850 /* 2239 */ /*GILLT_s64*//*Label 103*/ GIMT_Encode4(2266),
851 /* 2243 */ // Label 102: @2243
852 /* 2243 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(2265), // Rule ID 67 //
853 /* 2248 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
854 /* 2251 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
855 /* 2254 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
856 /* 2258 */ // (srl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SRL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
857 /* 2258 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr_32),
858 /* 2263 */ GIR_RootConstrainSelectedInstOperands,
859 /* 2264 */ // GIR_Coverage, 67,
860 /* 2264 */ GIR_Done,
861 /* 2265 */ // Label 105: @2265
862 /* 2265 */ GIM_Reject,
863 /* 2266 */ // Label 103: @2266
864 /* 2266 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(2540),
865 /* 2271 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
866 /* 2274 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
867 /* 2277 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
868 /* 2281 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 107*/ GIMT_Encode4(2322), GIMT_Encode2(GIFBS_BPFHasBswap), // Rule ID 140 //
869 /* 2288 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
870 /* 2292 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
871 /* 2296 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
872 /* 2300 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
873 /* 2305 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
874 /* 2309 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
875 /* 2311 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (BSWAP16:{ *:[i64] } GPR:{ *:[i64] }:$src)
876 /* 2311 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP16),
877 /* 2314 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
878 /* 2316 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
879 /* 2320 */ GIR_RootConstrainSelectedInstOperands,
880 /* 2321 */ // GIR_Coverage, 140,
881 /* 2321 */ GIR_EraseRootFromParent_Done,
882 /* 2322 */ // Label 107: @2322
883 /* 2322 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 108*/ GIMT_Encode4(2363), GIMT_Encode2(GIFBS_BPFHasBswap), // Rule ID 141 //
884 /* 2329 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
885 /* 2333 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
886 /* 2337 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
887 /* 2341 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
888 /* 2346 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
889 /* 2350 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
890 /* 2352 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (BSWAP32:{ *:[i64] } GPR:{ *:[i64] }:$src)
891 /* 2352 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP32),
892 /* 2355 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
893 /* 2357 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
894 /* 2361 */ GIR_RootConstrainSelectedInstOperands,
895 /* 2362 */ // GIR_Coverage, 141,
896 /* 2362 */ GIR_EraseRootFromParent_Done,
897 /* 2363 */ // Label 108: @2363
898 /* 2363 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 109*/ GIMT_Encode4(2404), GIMT_Encode2(GIFBS_BPFIsLittleEndian), // Rule ID 143 //
899 /* 2370 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
900 /* 2374 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
901 /* 2378 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
902 /* 2382 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
903 /* 2387 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
904 /* 2391 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
905 /* 2393 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (BE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
906 /* 2393 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE16),
907 /* 2396 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
908 /* 2398 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
909 /* 2402 */ GIR_RootConstrainSelectedInstOperands,
910 /* 2403 */ // GIR_Coverage, 143,
911 /* 2403 */ GIR_EraseRootFromParent_Done,
912 /* 2404 */ // Label 109: @2404
913 /* 2404 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 110*/ GIMT_Encode4(2445), GIMT_Encode2(GIFBS_BPFIsLittleEndian), // Rule ID 144 //
914 /* 2411 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
915 /* 2415 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
916 /* 2419 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
917 /* 2423 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
918 /* 2428 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
919 /* 2432 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
920 /* 2434 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (BE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
921 /* 2434 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE32),
922 /* 2437 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
923 /* 2439 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
924 /* 2443 */ GIR_RootConstrainSelectedInstOperands,
925 /* 2444 */ // GIR_Coverage, 144,
926 /* 2444 */ GIR_EraseRootFromParent_Done,
927 /* 2445 */ // Label 110: @2445
928 /* 2445 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 111*/ GIMT_Encode4(2486), GIMT_Encode2(GIFBS_BPFIsBigEndian), // Rule ID 146 //
929 /* 2452 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
930 /* 2456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
931 /* 2460 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
932 /* 2464 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
933 /* 2469 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
934 /* 2473 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
935 /* 2475 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (LE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
936 /* 2475 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE16),
937 /* 2478 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
938 /* 2480 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
939 /* 2484 */ GIR_RootConstrainSelectedInstOperands,
940 /* 2485 */ // GIR_Coverage, 146,
941 /* 2485 */ GIR_EraseRootFromParent_Done,
942 /* 2486 */ // Label 111: @2486
943 /* 2486 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 112*/ GIMT_Encode4(2527), GIMT_Encode2(GIFBS_BPFIsBigEndian), // Rule ID 147 //
944 /* 2493 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
945 /* 2497 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
946 /* 2501 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
947 /* 2505 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
948 /* 2510 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
949 /* 2514 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
950 /* 2516 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (LE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
951 /* 2516 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE32),
952 /* 2519 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
953 /* 2521 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
954 /* 2525 */ GIR_RootConstrainSelectedInstOperands,
955 /* 2526 */ // GIR_Coverage, 147,
956 /* 2526 */ GIR_EraseRootFromParent_Done,
957 /* 2527 */ // Label 112: @2527
958 /* 2527 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2539), // Rule ID 65 //
959 /* 2532 */ // (srl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SRL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
960 /* 2532 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr),
961 /* 2537 */ GIR_RootConstrainSelectedInstOperands,
962 /* 2538 */ // GIR_Coverage, 65,
963 /* 2538 */ GIR_Done,
964 /* 2539 */ // Label 113: @2539
965 /* 2539 */ GIM_Reject,
966 /* 2540 */ // Label 106: @2540
967 /* 2540 */ GIM_Reject,
968 /* 2541 */ // Label 104: @2541
969 /* 2541 */ GIM_Reject,
970 /* 2542 */ // Label 19: @2542
971 /* 2542 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 116*/ GIMT_Encode4(2607),
972 /* 2553 */ /*GILLT_s32*//*Label 114*/ GIMT_Encode4(2561),
973 /* 2557 */ /*GILLT_s64*//*Label 115*/ GIMT_Encode4(2584),
974 /* 2561 */ // Label 114: @2561
975 /* 2561 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2583), // Rule ID 75 //
976 /* 2566 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
977 /* 2569 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
978 /* 2572 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
979 /* 2576 */ // (sra:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SRA_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
980 /* 2576 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr_32),
981 /* 2581 */ GIR_RootConstrainSelectedInstOperands,
982 /* 2582 */ // GIR_Coverage, 75,
983 /* 2582 */ GIR_Done,
984 /* 2583 */ // Label 117: @2583
985 /* 2583 */ GIM_Reject,
986 /* 2584 */ // Label 115: @2584
987 /* 2584 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2606), // Rule ID 73 //
988 /* 2589 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
989 /* 2592 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
990 /* 2595 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
991 /* 2599 */ // (sra:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SRA_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
992 /* 2599 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr),
993 /* 2604 */ GIR_RootConstrainSelectedInstOperands,
994 /* 2605 */ // GIR_Coverage, 73,
995 /* 2605 */ GIR_Done,
996 /* 2606 */ // Label 118: @2606
997 /* 2606 */ GIM_Reject,
998 /* 2607 */ // Label 116: @2607
999 /* 2607 */ GIM_Reject,
1000 /* 2608 */ // Label 20: @2608
1001 /* 2608 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2623), // Rule ID 124 //
1002 /* 2613 */ // MIs[0] BrDst
1003 /* 2613 */ GIM_CheckIsMBB, /*MI*/0, /*Op*/0,
1004 /* 2616 */ // (br (bb:{ *:[Other] }):$BrDst) => (JMP (bb:{ *:[Other] }):$BrDst)
1005 /* 2616 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::JMP),
1006 /* 2621 */ GIR_RootConstrainSelectedInstOperands,
1007 /* 2622 */ // GIR_Coverage, 124,
1008 /* 2622 */ GIR_Done,
1009 /* 2623 */ // Label 119: @2623
1010 /* 2623 */ GIM_Reject,
1011 /* 2624 */ // Label 21: @2624
1012 /* 2624 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2686),
1013 /* 2629 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
1014 /* 2632 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
1015 /* 2635 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1016 /* 2639 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1017 /* 2643 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 121*/ GIMT_Encode4(2657), GIMT_Encode2(GIFBS_BPFHasBswap), // Rule ID 142 //
1018 /* 2650 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (BSWAP64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1019 /* 2650 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP64),
1020 /* 2655 */ GIR_RootConstrainSelectedInstOperands,
1021 /* 2656 */ // GIR_Coverage, 142,
1022 /* 2656 */ GIR_Done,
1023 /* 2657 */ // Label 121: @2657
1024 /* 2657 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 122*/ GIMT_Encode4(2671), GIMT_Encode2(GIFBS_BPFIsLittleEndian), // Rule ID 145 //
1025 /* 2664 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (BE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1026 /* 2664 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE64),
1027 /* 2669 */ GIR_RootConstrainSelectedInstOperands,
1028 /* 2670 */ // GIR_Coverage, 145,
1029 /* 2670 */ GIR_Done,
1030 /* 2671 */ // Label 122: @2671
1031 /* 2671 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 123*/ GIMT_Encode4(2685), GIMT_Encode2(GIFBS_BPFIsBigEndian), // Rule ID 148 //
1032 /* 2678 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (LE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1033 /* 2678 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE64),
1034 /* 2683 */ GIR_RootConstrainSelectedInstOperands,
1035 /* 2684 */ // GIR_Coverage, 148,
1036 /* 2684 */ GIR_Done,
1037 /* 2685 */ // Label 123: @2685
1038 /* 2685 */ GIM_Reject,
1039 /* 2686 */ // Label 120: @2686
1040 /* 2686 */ GIM_Reject,
1041 /* 2687 */ // Label 22: @2687
1042 /* 2687 */ GIM_Reject,
1043 /* 2688 */ }; // Size: 2688 bytes
1044 return MatchTable0;
1045}
1046#undef GIMT_Encode2
1047#undef GIMT_Encode4
1048#undef GIMT_Encode8
1049
1050
1051#endif // GET_GLOBALISEL_IMPL
1052
1053#ifdef GET_GLOBALISEL_PREDICATES_DECL
1054
1055PredicateBitset AvailableModuleFeatures;
1056mutable PredicateBitset AvailableFunctionFeatures;
1057PredicateBitset getAvailableFeatures() const {
1058 return AvailableModuleFeatures | AvailableFunctionFeatures;
1059}
1060PredicateBitset
1061computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const;
1062PredicateBitset
1063computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget,
1064 const MachineFunction *MF) const;
1065void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1066
1067#endif // GET_GLOBALISEL_PREDICATES_DECL
1068
1069#ifdef GET_GLOBALISEL_PREDICATES_INIT
1070
1071AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
1072AvailableFunctionFeatures()
1073
1074#endif // GET_GLOBALISEL_PREDICATES_INIT
1075
1076