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(265), /*)*//*default:*//*Label 22*/ GIMT_Encode4(2699),
232 /* 10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(850),
233 /* 14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(916),
234 /* 18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(1030),
235 /* 22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1096),
236 /* 26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1168),
237 /* 30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1234),
238 /* 34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1306), GIMT_Encode4(0), GIMT_Encode4(0),
239 /* 46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1372),
240 /* 50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1498),
241 /* 54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1564), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), 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 /* 342 */ /*TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS*//*Label 10*/ GIMT_Encode4(1630), GIMT_Encode4(0), GIMT_Encode4(0),
243 /* 354 */ /*TargetOpcode::G_ANYEXT*//*Label 11*/ GIMT_Encode4(1694),
244 /* 358 */ /*TargetOpcode::G_TRUNC*//*Label 12*/ GIMT_Encode4(1757), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
245 /* 374 */ /*TargetOpcode::G_CONSTANT*//*Label 13*/ GIMT_Encode4(1799), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
246 /* 390 */ /*TargetOpcode::G_SEXT*//*Label 14*/ GIMT_Encode4(1822),
247 /* 394 */ /*TargetOpcode::G_SEXT_INREG*//*Label 15*/ GIMT_Encode4(1938),
248 /* 398 */ /*TargetOpcode::G_ZEXT*//*Label 16*/ GIMT_Encode4(2134),
249 /* 402 */ /*TargetOpcode::G_SHL*//*Label 17*/ GIMT_Encode4(2161),
250 /* 406 */ /*TargetOpcode::G_LSHR*//*Label 18*/ GIMT_Encode4(2227),
251 /* 410 */ /*TargetOpcode::G_ASHR*//*Label 19*/ GIMT_Encode4(2551), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), 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 /* 778 */ /*TargetOpcode::G_BR*//*Label 20*/ GIMT_Encode4(2617), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), 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 /* 846 */ /*TargetOpcode::G_BSWAP*//*Label 21*/ GIMT_Encode4(2633),
254 /* 850 */ // Label 0: @850
255 /* 850 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 25*/ GIMT_Encode4(915),
256 /* 861 */ /*GILLT_s32*//*Label 23*/ GIMT_Encode4(869),
257 /* 865 */ /*GILLT_s64*//*Label 24*/ GIMT_Encode4(892),
258 /* 869 */ // Label 23: @869
259 /* 869 */ GIM_Try, /*On fail goto*//*Label 26*/ GIMT_Encode4(891), // Rule ID 47 //
260 /* 874 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
261 /* 877 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
262 /* 880 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
263 /* 884 */ // (add:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (ADD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
264 /* 884 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr_32),
265 /* 889 */ GIR_RootConstrainSelectedInstOperands,
266 /* 890 */ // GIR_Coverage, 47,
267 /* 890 */ GIR_Done,
268 /* 891 */ // Label 26: @891
269 /* 891 */ GIM_Reject,
270 /* 892 */ // Label 24: @892
271 /* 892 */ GIM_Try, /*On fail goto*//*Label 27*/ GIMT_Encode4(914), // Rule ID 45 //
272 /* 897 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
273 /* 900 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
274 /* 903 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
275 /* 907 */ // (add:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (ADD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
276 /* 907 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::ADD_rr),
277 /* 912 */ GIR_RootConstrainSelectedInstOperands,
278 /* 913 */ // GIR_Coverage, 45,
279 /* 913 */ GIR_Done,
280 /* 914 */ // Label 27: @914
281 /* 914 */ GIM_Reject,
282 /* 915 */ // Label 25: @915
283 /* 915 */ GIM_Reject,
284 /* 916 */ // Label 1: @916
285 /* 916 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 30*/ GIMT_Encode4(1029),
286 /* 927 */ /*GILLT_s32*//*Label 28*/ GIMT_Encode4(935),
287 /* 931 */ /*GILLT_s64*//*Label 29*/ GIMT_Encode4(982),
288 /* 935 */ // Label 28: @935
289 /* 935 */ GIM_Try, /*On fail goto*//*Label 31*/ GIMT_Encode4(981),
290 /* 940 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
291 /* 943 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
292 /* 946 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
293 /* 950 */ GIM_Try, /*On fail goto*//*Label 32*/ GIMT_Encode4(968), // Rule ID 98 //
294 /* 955 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
295 /* 959 */ // (sub:{ *:[i32] } 0:{ *:[i32] }, i32:{ *:[i32] }:$src) => (NEG_32:{ *:[i32] } i32:{ *:[i32] }:$src)
296 /* 959 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_32),
297 /* 962 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
298 /* 964 */ GIR_RootToRootCopy, /*OpIdx*/2, // src
299 /* 966 */ GIR_RootConstrainSelectedInstOperands,
300 /* 967 */ // GIR_Coverage, 98,
301 /* 967 */ GIR_EraseRootFromParent_Done,
302 /* 968 */ // Label 32: @968
303 /* 968 */ GIM_Try, /*On fail goto*//*Label 33*/ GIMT_Encode4(980), // Rule ID 51 //
304 /* 973 */ // (sub:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SUB_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
305 /* 973 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr_32),
306 /* 978 */ GIR_RootConstrainSelectedInstOperands,
307 /* 979 */ // GIR_Coverage, 51,
308 /* 979 */ GIR_Done,
309 /* 980 */ // Label 33: @980
310 /* 980 */ GIM_Reject,
311 /* 981 */ // Label 31: @981
312 /* 981 */ GIM_Reject,
313 /* 982 */ // Label 29: @982
314 /* 982 */ GIM_Try, /*On fail goto*//*Label 34*/ GIMT_Encode4(1028),
315 /* 987 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
316 /* 990 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
317 /* 993 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
318 /* 997 */ GIM_Try, /*On fail goto*//*Label 35*/ GIMT_Encode4(1015), // Rule ID 97 //
319 /* 1002 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
320 /* 1006 */ // (sub:{ *:[i64] } 0:{ *:[i64] }, i64:{ *:[i64] }:$src) => (NEG_64:{ *:[i64] } i64:{ *:[i64] }:$src)
321 /* 1006 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::NEG_64),
322 /* 1009 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
323 /* 1011 */ GIR_RootToRootCopy, /*OpIdx*/2, // src
324 /* 1013 */ GIR_RootConstrainSelectedInstOperands,
325 /* 1014 */ // GIR_Coverage, 97,
326 /* 1014 */ GIR_EraseRootFromParent_Done,
327 /* 1015 */ // Label 35: @1015
328 /* 1015 */ GIM_Try, /*On fail goto*//*Label 36*/ GIMT_Encode4(1027), // Rule ID 49 //
329 /* 1020 */ // (sub:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SUB_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
330 /* 1020 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SUB_rr),
331 /* 1025 */ GIR_RootConstrainSelectedInstOperands,
332 /* 1026 */ // GIR_Coverage, 49,
333 /* 1026 */ GIR_Done,
334 /* 1027 */ // Label 36: @1027
335 /* 1027 */ GIM_Reject,
336 /* 1028 */ // Label 34: @1028
337 /* 1028 */ GIM_Reject,
338 /* 1029 */ // Label 30: @1029
339 /* 1029 */ GIM_Reject,
340 /* 1030 */ // Label 2: @1030
341 /* 1030 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 39*/ GIMT_Encode4(1095),
342 /* 1041 */ /*GILLT_s32*//*Label 37*/ GIMT_Encode4(1049),
343 /* 1045 */ /*GILLT_s64*//*Label 38*/ GIMT_Encode4(1072),
344 /* 1049 */ // Label 37: @1049
345 /* 1049 */ GIM_Try, /*On fail goto*//*Label 40*/ GIMT_Encode4(1071), // Rule ID 79 //
346 /* 1054 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
347 /* 1057 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
348 /* 1060 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
349 /* 1064 */ // (mul:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (MUL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
350 /* 1064 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr_32),
351 /* 1069 */ GIR_RootConstrainSelectedInstOperands,
352 /* 1070 */ // GIR_Coverage, 79,
353 /* 1070 */ GIR_Done,
354 /* 1071 */ // Label 40: @1071
355 /* 1071 */ GIM_Reject,
356 /* 1072 */ // Label 38: @1072
357 /* 1072 */ GIM_Try, /*On fail goto*//*Label 41*/ GIMT_Encode4(1094), // Rule ID 77 //
358 /* 1077 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
359 /* 1080 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
360 /* 1083 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
361 /* 1087 */ // (mul:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (MUL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
362 /* 1087 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MUL_rr),
363 /* 1092 */ GIR_RootConstrainSelectedInstOperands,
364 /* 1093 */ // GIR_Coverage, 77,
365 /* 1093 */ GIR_Done,
366 /* 1094 */ // Label 41: @1094
367 /* 1094 */ GIM_Reject,
368 /* 1095 */ // Label 39: @1095
369 /* 1095 */ GIM_Reject,
370 /* 1096 */ // Label 3: @1096
371 /* 1096 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 44*/ GIMT_Encode4(1167),
372 /* 1107 */ /*GILLT_s32*//*Label 42*/ GIMT_Encode4(1115),
373 /* 1111 */ /*GILLT_s64*//*Label 43*/ GIMT_Encode4(1141),
374 /* 1115 */ // Label 42: @1115
375 /* 1115 */ GIM_Try, /*On fail goto*//*Label 45*/ GIMT_Encode4(1140), // Rule ID 91 //
376 /* 1120 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
377 /* 1123 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
378 /* 1126 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
379 /* 1129 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
380 /* 1133 */ // (sdiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SDIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
381 /* 1133 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr_32),
382 /* 1138 */ GIR_RootConstrainSelectedInstOperands,
383 /* 1139 */ // GIR_Coverage, 91,
384 /* 1139 */ GIR_Done,
385 /* 1140 */ // Label 45: @1140
386 /* 1140 */ GIM_Reject,
387 /* 1141 */ // Label 43: @1141
388 /* 1141 */ GIM_Try, /*On fail goto*//*Label 46*/ GIMT_Encode4(1166), // Rule ID 89 //
389 /* 1146 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
390 /* 1149 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
391 /* 1152 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
392 /* 1155 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
393 /* 1159 */ // (sdiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SDIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
394 /* 1159 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SDIV_rr),
395 /* 1164 */ GIR_RootConstrainSelectedInstOperands,
396 /* 1165 */ // GIR_Coverage, 89,
397 /* 1165 */ GIR_Done,
398 /* 1166 */ // Label 46: @1166
399 /* 1166 */ GIM_Reject,
400 /* 1167 */ // Label 44: @1167
401 /* 1167 */ GIM_Reject,
402 /* 1168 */ // Label 4: @1168
403 /* 1168 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 49*/ GIMT_Encode4(1233),
404 /* 1179 */ /*GILLT_s32*//*Label 47*/ GIMT_Encode4(1187),
405 /* 1183 */ /*GILLT_s64*//*Label 48*/ GIMT_Encode4(1210),
406 /* 1187 */ // Label 47: @1187
407 /* 1187 */ GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(1209), // Rule ID 83 //
408 /* 1192 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
409 /* 1195 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
410 /* 1198 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
411 /* 1202 */ // (udiv:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (DIV_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
412 /* 1202 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr_32),
413 /* 1207 */ GIR_RootConstrainSelectedInstOperands,
414 /* 1208 */ // GIR_Coverage, 83,
415 /* 1208 */ GIR_Done,
416 /* 1209 */ // Label 50: @1209
417 /* 1209 */ GIM_Reject,
418 /* 1210 */ // Label 48: @1210
419 /* 1210 */ GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(1232), // Rule ID 81 //
420 /* 1215 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
421 /* 1218 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
422 /* 1221 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
423 /* 1225 */ // (udiv:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (DIV_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
424 /* 1225 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::DIV_rr),
425 /* 1230 */ GIR_RootConstrainSelectedInstOperands,
426 /* 1231 */ // GIR_Coverage, 81,
427 /* 1231 */ GIR_Done,
428 /* 1232 */ // Label 51: @1232
429 /* 1232 */ GIM_Reject,
430 /* 1233 */ // Label 49: @1233
431 /* 1233 */ GIM_Reject,
432 /* 1234 */ // Label 5: @1234
433 /* 1234 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 54*/ GIMT_Encode4(1305),
434 /* 1245 */ /*GILLT_s32*//*Label 52*/ GIMT_Encode4(1253),
435 /* 1249 */ /*GILLT_s64*//*Label 53*/ GIMT_Encode4(1279),
436 /* 1253 */ // Label 52: @1253
437 /* 1253 */ GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(1278), // Rule ID 95 //
438 /* 1258 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
439 /* 1261 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
440 /* 1264 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
441 /* 1267 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
442 /* 1271 */ // (srem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SMOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
443 /* 1271 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr_32),
444 /* 1276 */ GIR_RootConstrainSelectedInstOperands,
445 /* 1277 */ // GIR_Coverage, 95,
446 /* 1277 */ GIR_Done,
447 /* 1278 */ // Label 55: @1278
448 /* 1278 */ GIM_Reject,
449 /* 1279 */ // Label 53: @1279
450 /* 1279 */ GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(1304), // Rule ID 93 //
451 /* 1284 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasSdivSmod),
452 /* 1287 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
453 /* 1290 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
454 /* 1293 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
455 /* 1297 */ // (srem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SMOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
456 /* 1297 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SMOD_rr),
457 /* 1302 */ GIR_RootConstrainSelectedInstOperands,
458 /* 1303 */ // GIR_Coverage, 93,
459 /* 1303 */ GIR_Done,
460 /* 1304 */ // Label 56: @1304
461 /* 1304 */ GIM_Reject,
462 /* 1305 */ // Label 54: @1305
463 /* 1305 */ GIM_Reject,
464 /* 1306 */ // Label 6: @1306
465 /* 1306 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 59*/ GIMT_Encode4(1371),
466 /* 1317 */ /*GILLT_s32*//*Label 57*/ GIMT_Encode4(1325),
467 /* 1321 */ /*GILLT_s64*//*Label 58*/ GIMT_Encode4(1348),
468 /* 1325 */ // Label 57: @1325
469 /* 1325 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1347), // Rule ID 87 //
470 /* 1330 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
471 /* 1333 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
472 /* 1336 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
473 /* 1340 */ // (urem:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (MOD_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
474 /* 1340 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr_32),
475 /* 1345 */ GIR_RootConstrainSelectedInstOperands,
476 /* 1346 */ // GIR_Coverage, 87,
477 /* 1346 */ GIR_Done,
478 /* 1347 */ // Label 60: @1347
479 /* 1347 */ GIM_Reject,
480 /* 1348 */ // Label 58: @1348
481 /* 1348 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1370), // Rule ID 85 //
482 /* 1353 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
483 /* 1356 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
484 /* 1359 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
485 /* 1363 */ // (urem:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (MOD_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
486 /* 1363 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOD_rr),
487 /* 1368 */ GIR_RootConstrainSelectedInstOperands,
488 /* 1369 */ // GIR_Coverage, 85,
489 /* 1369 */ GIR_Done,
490 /* 1370 */ // Label 61: @1370
491 /* 1370 */ GIM_Reject,
492 /* 1371 */ // Label 59: @1371
493 /* 1371 */ GIM_Reject,
494 /* 1372 */ // Label 7: @1372
495 /* 1372 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 64*/ GIMT_Encode4(1497),
496 /* 1383 */ /*GILLT_s32*//*Label 62*/ GIMT_Encode4(1391),
497 /* 1387 */ /*GILLT_s64*//*Label 63*/ GIMT_Encode4(1414),
498 /* 1391 */ // Label 62: @1391
499 /* 1391 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1413), // Rule ID 59 //
500 /* 1396 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
501 /* 1399 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
502 /* 1402 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
503 /* 1406 */ // (and:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (AND_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
504 /* 1406 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr_32),
505 /* 1411 */ GIR_RootConstrainSelectedInstOperands,
506 /* 1412 */ // GIR_Coverage, 59,
507 /* 1412 */ GIR_Done,
508 /* 1413 */ // Label 65: @1413
509 /* 1413 */ GIM_Reject,
510 /* 1414 */ // Label 63: @1414
511 /* 1414 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1496),
512 /* 1419 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
513 /* 1422 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
514 /* 1425 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
515 /* 1429 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1483), // Rule ID 172 //
516 /* 1434 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
517 /* 1438 */ GIM_CheckConstantInt, /*MI*/0, /*Op*/2, GIMT_Encode8(4294967295),
518 /* 1449 */ // (and:{ *:[i64] } GPR:{ *:[i64] }:$src, 4294967295:{ *:[i64] }) => (SRL_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } GPR:{ *:[i64] }:$src, 32:{ *:[i64] }), 32:{ *:[i64] })
519 /* 1449 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
520 /* 1452 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
521 /* 1456 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
522 /* 1461 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
523 /* 1465 */ GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
524 /* 1468 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
525 /* 1470 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRL_ri),
526 /* 1473 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
527 /* 1475 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
528 /* 1478 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
529 /* 1481 */ GIR_RootConstrainSelectedInstOperands,
530 /* 1482 */ // GIR_Coverage, 172,
531 /* 1482 */ GIR_EraseRootFromParent_Done,
532 /* 1483 */ // Label 67: @1483
533 /* 1483 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1495), // Rule ID 57 //
534 /* 1488 */ // (and:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (AND_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
535 /* 1488 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::AND_rr),
536 /* 1493 */ GIR_RootConstrainSelectedInstOperands,
537 /* 1494 */ // GIR_Coverage, 57,
538 /* 1494 */ GIR_Done,
539 /* 1495 */ // Label 68: @1495
540 /* 1495 */ GIM_Reject,
541 /* 1496 */ // Label 66: @1496
542 /* 1496 */ GIM_Reject,
543 /* 1497 */ // Label 64: @1497
544 /* 1497 */ GIM_Reject,
545 /* 1498 */ // Label 8: @1498
546 /* 1498 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 71*/ GIMT_Encode4(1563),
547 /* 1509 */ /*GILLT_s32*//*Label 69*/ GIMT_Encode4(1517),
548 /* 1513 */ /*GILLT_s64*//*Label 70*/ GIMT_Encode4(1540),
549 /* 1517 */ // Label 69: @1517
550 /* 1517 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1539), // Rule ID 55 //
551 /* 1522 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
552 /* 1525 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
553 /* 1528 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
554 /* 1532 */ // (or:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (OR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
555 /* 1532 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr_32),
556 /* 1537 */ GIR_RootConstrainSelectedInstOperands,
557 /* 1538 */ // GIR_Coverage, 55,
558 /* 1538 */ GIR_Done,
559 /* 1539 */ // Label 72: @1539
560 /* 1539 */ GIM_Reject,
561 /* 1540 */ // Label 70: @1540
562 /* 1540 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1562), // Rule ID 53 //
563 /* 1545 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
564 /* 1548 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
565 /* 1551 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
566 /* 1555 */ // (or:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (OR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
567 /* 1555 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::OR_rr),
568 /* 1560 */ GIR_RootConstrainSelectedInstOperands,
569 /* 1561 */ // GIR_Coverage, 53,
570 /* 1561 */ GIR_Done,
571 /* 1562 */ // Label 73: @1562
572 /* 1562 */ GIM_Reject,
573 /* 1563 */ // Label 71: @1563
574 /* 1563 */ GIM_Reject,
575 /* 1564 */ // Label 9: @1564
576 /* 1564 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 76*/ GIMT_Encode4(1629),
577 /* 1575 */ /*GILLT_s32*//*Label 74*/ GIMT_Encode4(1583),
578 /* 1579 */ /*GILLT_s64*//*Label 75*/ GIMT_Encode4(1606),
579 /* 1583 */ // Label 74: @1583
580 /* 1583 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1605), // Rule ID 71 //
581 /* 1588 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
582 /* 1591 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
583 /* 1594 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
584 /* 1598 */ // (xor:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (XOR_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
585 /* 1598 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr_32),
586 /* 1603 */ GIR_RootConstrainSelectedInstOperands,
587 /* 1604 */ // GIR_Coverage, 71,
588 /* 1604 */ GIR_Done,
589 /* 1605 */ // Label 77: @1605
590 /* 1605 */ GIM_Reject,
591 /* 1606 */ // Label 75: @1606
592 /* 1606 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1628), // Rule ID 69 //
593 /* 1611 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
594 /* 1614 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
595 /* 1617 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
596 /* 1621 */ // (xor:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (XOR_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
597 /* 1621 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::XOR_rr),
598 /* 1626 */ GIR_RootConstrainSelectedInstOperands,
599 /* 1627 */ // GIR_Coverage, 69,
600 /* 1627 */ GIR_Done,
601 /* 1628 */ // Label 78: @1628
602 /* 1628 */ GIM_Reject,
603 /* 1629 */ // Label 76: @1629
604 /* 1629 */ GIM_Reject,
605 /* 1630 */ // Label 10: @1630
606 /* 1630 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1693), // Rule ID 108 //
607 /* 1635 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/4,
608 /* 1638 */ GIM_CheckIntrinsicID, /*MI*/0, /*Op*/1, GIMT_Encode2(Intrinsic::bpf_pseudo),
609 /* 1643 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
610 /* 1646 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
611 /* 1649 */ GIM_RootCheckType, /*Op*/3, /*Type*/GILLT_s64,
612 /* 1652 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
613 /* 1656 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
614 /* 1660 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
615 /* 1664 */ // MIs[1] Operand 1
616 /* 1664 */ // No operand predicates
617 /* 1664 */ GIM_RecordInsn, /*DefineMI*/2, /*MI*/0, /*OpIdx*/3, // MIs[2]
618 /* 1668 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
619 /* 1672 */ // MIs[2] Operand 1
620 /* 1672 */ // No operand predicates
621 /* 1672 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
622 /* 1674 */ // (intrinsic_w_chain:{ *:[i64] } 4215:{ *:[iPTR] }, (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm) => (LD_pseudo:{ *:[i64] } (imm:{ *:[i64] }):$pseudo, (imm:{ *:[i64] }):$imm)
623 /* 1674 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_pseudo),
624 /* 1677 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
625 /* 1679 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/1, // pseudo
626 /* 1682 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/2, // imm
627 /* 1685 */ GIR_MergeMemOperands, /*InsnID*/0, /*NumInsns*/3, /*MergeInsnID's*/0, 1, 2,
628 /* 1691 */ GIR_RootConstrainSelectedInstOperands,
629 /* 1692 */ // GIR_Coverage, 108,
630 /* 1692 */ GIR_EraseRootFromParent_Done,
631 /* 1693 */ // Label 79: @1693
632 /* 1693 */ GIM_Reject,
633 /* 1694 */ // Label 11: @1694
634 /* 1694 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1756), // Rule ID 239 //
635 /* 1699 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
636 /* 1702 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
637 /* 1705 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
638 /* 1709 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
639 /* 1713 */ // (anyext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (INSERT_SUBREG:{ *:[i64] } (IMPLICIT_DEF:{ *:[i64] }), GPR32:{ *:[i32] }:$src, sub_32:{ *:[i32] })
640 /* 1713 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
641 /* 1716 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::IMPLICIT_DEF),
642 /* 1720 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
643 /* 1725 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
644 /* 1727 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::INSERT_SUBREG),
645 /* 1730 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
646 /* 1732 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
647 /* 1735 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
648 /* 1737 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
649 /* 1740 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPRRegClassID),
650 /* 1745 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
651 /* 1750 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/2, GIMT_Encode2(BPF::GPR32RegClassID),
652 /* 1755 */ // GIR_Coverage, 239,
653 /* 1755 */ GIR_EraseRootFromParent_Done,
654 /* 1756 */ // Label 80: @1756
655 /* 1756 */ GIM_Reject,
656 /* 1757 */ // Label 12: @1757
657 /* 1757 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1798), // Rule ID 238 //
658 /* 1762 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s32,
659 /* 1765 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
660 /* 1768 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
661 /* 1772 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
662 /* 1776 */ // (trunc:{ *:[i32] } GPR:{ *:[i64] }:$src) => (EXTRACT_SUBREG:{ *:[i32] } GPR:{ *:[i64] }:$src, sub_32:{ *:[i32] })
663 /* 1776 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
664 /* 1779 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
665 /* 1781 */ GIR_CopySubReg, /*NewInsnID*/0, /*OldInsnID*/0, /*OpIdx*/1, /*SubRegIdx*/GIMT_Encode2(1), // src
666 /* 1787 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/0, GIMT_Encode2(BPF::GPR32RegClassID),
667 /* 1792 */ GIR_ConstrainOperandRC, /*InsnID*/0, /*Op*/1, GIMT_Encode2(BPF::GPRRegClassID),
668 /* 1797 */ // GIR_Coverage, 238,
669 /* 1797 */ GIR_EraseRootFromParent_Done,
670 /* 1798 */ // Label 81: @1798
671 /* 1798 */ GIM_Reject,
672 /* 1799 */ // Label 13: @1799
673 /* 1799 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1821), // Rule ID 99 //
674 /* 1804 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
675 /* 1807 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
676 /* 1811 */ // MIs[0] Operand 1
677 /* 1811 */ // No operand predicates
678 /* 1811 */ // (imm:{ *:[i64] }):$imm => (LD_imm64:{ *:[i64] } (imm:{ *:[i64] }):$imm)
679 /* 1811 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LD_imm64),
680 /* 1814 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
681 /* 1816 */ GIR_CopyConstantAsSImm, /*NewInsnID*/0, /*OldInsnID*/0, // imm
682 /* 1819 */ GIR_RootConstrainSelectedInstOperands,
683 /* 1820 */ // GIR_Coverage, 99,
684 /* 1820 */ GIR_EraseRootFromParent_Done,
685 /* 1821 */ // Label 82: @1821
686 /* 1821 */ GIM_Reject,
687 /* 1822 */ // Label 14: @1822
688 /* 1822 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1937),
689 /* 1827 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
690 /* 1830 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
691 /* 1833 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
692 /* 1837 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
693 /* 1841 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1900), // Rule ID 235 //
694 /* 1846 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFNoMovsx),
695 /* 1849 */ // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (SRA_ri:{ *:[i64] } (SLL_ri:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src), 32:{ *:[i64] }), 32:{ *:[i64] })
696 /* 1849 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s64,
697 /* 1852 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
698 /* 1856 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
699 /* 1861 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // src
700 /* 1865 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/2,
701 /* 1867 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
702 /* 1870 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::SLL_ri),
703 /* 1874 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
704 /* 1879 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
705 /* 1882 */ GIR_AddImm8, /*InsnID*/1, /*Imm*/32,
706 /* 1885 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
707 /* 1887 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::SRA_ri),
708 /* 1890 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
709 /* 1892 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
710 /* 1895 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/32,
711 /* 1898 */ GIR_RootConstrainSelectedInstOperands,
712 /* 1899 */ // GIR_Coverage, 235,
713 /* 1899 */ GIR_EraseRootFromParent_Done,
714 /* 1900 */ // Label 84: @1900
715 /* 1900 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1936), // Rule ID 236 //
716 /* 1905 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
717 /* 1908 */ // (sext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (MOVSX_rr_32:{ *:[i64] } (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src))
718 /* 1908 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s64,
719 /* 1911 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
720 /* 1915 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
721 /* 1920 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // src
722 /* 1924 */ GIR_ConstrainSelectedInstOperands, /*InsnID*/1,
723 /* 1926 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
724 /* 1929 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
725 /* 1931 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
726 /* 1934 */ GIR_RootConstrainSelectedInstOperands,
727 /* 1935 */ // GIR_Coverage, 236,
728 /* 1935 */ GIR_EraseRootFromParent_Done,
729 /* 1936 */ // Label 85: @1936
730 /* 1936 */ GIM_Reject,
731 /* 1937 */ // Label 83: @1937
732 /* 1937 */ GIM_Reject,
733 /* 1938 */ // Label 15: @1938
734 /* 1938 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 88*/ GIMT_Encode4(2133),
735 /* 1949 */ /*GILLT_s32*//*Label 86*/ GIMT_Encode4(1957),
736 /* 1953 */ /*GILLT_s64*//*Label 87*/ GIMT_Encode4(2031),
737 /* 1957 */ // Label 86: @1957
738 /* 1957 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(2030),
739 /* 1962 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
740 /* 1965 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
741 /* 1969 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
742 /* 1973 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(2001), // Rule ID 105 //
743 /* 1978 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
744 /* 1981 */ // MIs[0] Operand 2
745 /* 1981 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
746 /* 1992 */ // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i8:{ *:[Other] }) => (MOVSX_rr_32_8:{ *:[i32] } GPR32:{ *:[i32] }:$src)
747 /* 1992 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_8),
748 /* 1995 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
749 /* 1997 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
750 /* 1999 */ GIR_RootConstrainSelectedInstOperands,
751 /* 2000 */ // GIR_Coverage, 105,
752 /* 2000 */ GIR_EraseRootFromParent_Done,
753 /* 2001 */ // Label 90: @2001
754 /* 2001 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(2029), // Rule ID 106 //
755 /* 2006 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
756 /* 2009 */ // MIs[0] Operand 2
757 /* 2009 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
758 /* 2020 */ // (sext_inreg:{ *:[i32] } GPR32:{ *:[i32] }:$src, i16:{ *:[Other] }) => (MOVSX_rr_32_16:{ *:[i32] } GPR32:{ *:[i32] }:$src)
759 /* 2020 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32_16),
760 /* 2023 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
761 /* 2025 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
762 /* 2027 */ GIR_RootConstrainSelectedInstOperands,
763 /* 2028 */ // GIR_Coverage, 106,
764 /* 2028 */ GIR_EraseRootFromParent_Done,
765 /* 2029 */ // Label 91: @2029
766 /* 2029 */ GIM_Reject,
767 /* 2030 */ // Label 89: @2030
768 /* 2030 */ GIM_Reject,
769 /* 2031 */ // Label 87: @2031
770 /* 2031 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(2132),
771 /* 2036 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
772 /* 2039 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
773 /* 2043 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
774 /* 2047 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(2075), // Rule ID 102 //
775 /* 2052 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
776 /* 2055 */ // MIs[0] Operand 2
777 /* 2055 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(8),
778 /* 2066 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i8:{ *:[Other] }) => (MOVSX_rr_8:{ *:[i64] } GPR:{ *:[i64] }:$src)
779 /* 2066 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_8),
780 /* 2069 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
781 /* 2071 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
782 /* 2073 */ GIR_RootConstrainSelectedInstOperands,
783 /* 2074 */ // GIR_Coverage, 102,
784 /* 2074 */ GIR_EraseRootFromParent_Done,
785 /* 2075 */ // Label 93: @2075
786 /* 2075 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(2103), // Rule ID 103 //
787 /* 2080 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
788 /* 2083 */ // MIs[0] Operand 2
789 /* 2083 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(16),
790 /* 2094 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i16:{ *:[Other] }) => (MOVSX_rr_16:{ *:[i64] } GPR:{ *:[i64] }:$src)
791 /* 2094 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_16),
792 /* 2097 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
793 /* 2099 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
794 /* 2101 */ GIR_RootConstrainSelectedInstOperands,
795 /* 2102 */ // GIR_Coverage, 103,
796 /* 2102 */ GIR_EraseRootFromParent_Done,
797 /* 2103 */ // Label 94: @2103
798 /* 2103 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(2131), // Rule ID 104 //
799 /* 2108 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasMovsx),
800 /* 2111 */ // MIs[0] Operand 2
801 /* 2111 */ GIM_CheckLiteralInt, /*MI*/0, /*Op*/2, GIMT_Encode8(32),
802 /* 2122 */ // (sext_inreg:{ *:[i64] } GPR:{ *:[i64] }:$src, i32:{ *:[Other] }) => (MOVSX_rr_32:{ *:[i64] } GPR:{ *:[i64] }:$src)
803 /* 2122 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::MOVSX_rr_32),
804 /* 2125 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
805 /* 2127 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
806 /* 2129 */ GIR_RootConstrainSelectedInstOperands,
807 /* 2130 */ // GIR_Coverage, 104,
808 /* 2130 */ GIR_EraseRootFromParent_Done,
809 /* 2131 */ // Label 95: @2131
810 /* 2131 */ GIM_Reject,
811 /* 2132 */ // Label 92: @2132
812 /* 2132 */ GIM_Reject,
813 /* 2133 */ // Label 88: @2133
814 /* 2133 */ GIM_Reject,
815 /* 2134 */ // Label 16: @2134
816 /* 2134 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(2160), // Rule ID 237 //
817 /* 2139 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
818 /* 2142 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
819 /* 2145 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
820 /* 2149 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
821 /* 2153 */ // (zext:{ *:[i64] } GPR32:{ *:[i32] }:$src) => (MOV_32_64:{ *:[i64] } GPR32:{ *:[i32] }:$src)
822 /* 2153 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::MOV_32_64),
823 /* 2158 */ GIR_RootConstrainSelectedInstOperands,
824 /* 2159 */ // GIR_Coverage, 237,
825 /* 2159 */ GIR_Done,
826 /* 2160 */ // Label 96: @2160
827 /* 2160 */ GIM_Reject,
828 /* 2161 */ // Label 17: @2161
829 /* 2161 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 99*/ GIMT_Encode4(2226),
830 /* 2172 */ /*GILLT_s32*//*Label 97*/ GIMT_Encode4(2180),
831 /* 2176 */ /*GILLT_s64*//*Label 98*/ GIMT_Encode4(2203),
832 /* 2180 */ // Label 97: @2180
833 /* 2180 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(2202), // Rule ID 63 //
834 /* 2185 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
835 /* 2188 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
836 /* 2191 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
837 /* 2195 */ // (shl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SLL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
838 /* 2195 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr_32),
839 /* 2200 */ GIR_RootConstrainSelectedInstOperands,
840 /* 2201 */ // GIR_Coverage, 63,
841 /* 2201 */ GIR_Done,
842 /* 2202 */ // Label 100: @2202
843 /* 2202 */ GIM_Reject,
844 /* 2203 */ // Label 98: @2203
845 /* 2203 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(2225), // Rule ID 61 //
846 /* 2208 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
847 /* 2211 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
848 /* 2214 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
849 /* 2218 */ // (shl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SLL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
850 /* 2218 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SLL_rr),
851 /* 2223 */ GIR_RootConstrainSelectedInstOperands,
852 /* 2224 */ // GIR_Coverage, 61,
853 /* 2224 */ GIR_Done,
854 /* 2225 */ // Label 101: @2225
855 /* 2225 */ GIM_Reject,
856 /* 2226 */ // Label 99: @2226
857 /* 2226 */ GIM_Reject,
858 /* 2227 */ // Label 18: @2227
859 /* 2227 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 104*/ GIMT_Encode4(2550),
860 /* 2238 */ /*GILLT_s32*//*Label 102*/ GIMT_Encode4(2246),
861 /* 2242 */ /*GILLT_s64*//*Label 103*/ GIMT_Encode4(2269),
862 /* 2246 */ // Label 102: @2246
863 /* 2246 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(2268), // Rule ID 67 //
864 /* 2251 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
865 /* 2254 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
866 /* 2257 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
867 /* 2261 */ // (srl:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SRL_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
868 /* 2261 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr_32),
869 /* 2266 */ GIR_RootConstrainSelectedInstOperands,
870 /* 2267 */ // GIR_Coverage, 67,
871 /* 2267 */ GIR_Done,
872 /* 2268 */ // Label 105: @2268
873 /* 2268 */ GIM_Reject,
874 /* 2269 */ // Label 103: @2269
875 /* 2269 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(2549),
876 /* 2274 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
877 /* 2277 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
878 /* 2280 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
879 /* 2284 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(2326), // Rule ID 140 //
880 /* 2289 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
881 /* 2292 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
882 /* 2296 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
883 /* 2300 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
884 /* 2304 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
885 /* 2309 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
886 /* 2313 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
887 /* 2315 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (BSWAP16:{ *:[i64] } GPR:{ *:[i64] }:$src)
888 /* 2315 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP16),
889 /* 2318 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
890 /* 2320 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
891 /* 2324 */ GIR_RootConstrainSelectedInstOperands,
892 /* 2325 */ // GIR_Coverage, 140,
893 /* 2325 */ GIR_EraseRootFromParent_Done,
894 /* 2326 */ // Label 107: @2326
895 /* 2326 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(2368), // Rule ID 141 //
896 /* 2331 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
897 /* 2334 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
898 /* 2338 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
899 /* 2342 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
900 /* 2346 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
901 /* 2351 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
902 /* 2355 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
903 /* 2357 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (BSWAP32:{ *:[i64] } GPR:{ *:[i64] }:$src)
904 /* 2357 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BSWAP32),
905 /* 2360 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
906 /* 2362 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
907 /* 2366 */ GIR_RootConstrainSelectedInstOperands,
908 /* 2367 */ // GIR_Coverage, 141,
909 /* 2367 */ GIR_EraseRootFromParent_Done,
910 /* 2368 */ // Label 108: @2368
911 /* 2368 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(2410), // Rule ID 143 //
912 /* 2373 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
913 /* 2376 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
914 /* 2380 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
915 /* 2384 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
916 /* 2388 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
917 /* 2393 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
918 /* 2397 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
919 /* 2399 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (BE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
920 /* 2399 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE16),
921 /* 2402 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
922 /* 2404 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
923 /* 2408 */ GIR_RootConstrainSelectedInstOperands,
924 /* 2409 */ // GIR_Coverage, 143,
925 /* 2409 */ GIR_EraseRootFromParent_Done,
926 /* 2410 */ // Label 109: @2410
927 /* 2410 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(2452), // Rule ID 144 //
928 /* 2415 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
929 /* 2418 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
930 /* 2422 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
931 /* 2426 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
932 /* 2430 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
933 /* 2435 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
934 /* 2439 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
935 /* 2441 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (BE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
936 /* 2441 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::BE32),
937 /* 2444 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
938 /* 2446 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
939 /* 2450 */ GIR_RootConstrainSelectedInstOperands,
940 /* 2451 */ // GIR_Coverage, 144,
941 /* 2451 */ GIR_EraseRootFromParent_Done,
942 /* 2452 */ // Label 110: @2452
943 /* 2452 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(2494), // Rule ID 146 //
944 /* 2457 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
945 /* 2460 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
946 /* 2464 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
947 /* 2468 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
948 /* 2472 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
949 /* 2477 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 48,
950 /* 2481 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
951 /* 2483 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 48:{ *:[i64] }) => (LE16:{ *:[i64] } GPR:{ *:[i64] }:$src)
952 /* 2483 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE16),
953 /* 2486 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
954 /* 2488 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
955 /* 2492 */ GIR_RootConstrainSelectedInstOperands,
956 /* 2493 */ // GIR_Coverage, 146,
957 /* 2493 */ GIR_EraseRootFromParent_Done,
958 /* 2494 */ // Label 111: @2494
959 /* 2494 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2536), // Rule ID 147 //
960 /* 2499 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
961 /* 2502 */ GIM_RecordInsn, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
962 /* 2506 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BSWAP),
963 /* 2510 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s64,
964 /* 2514 */ GIM_CheckRegBankForClass, /*MI*/1, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
965 /* 2519 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 32,
966 /* 2523 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
967 /* 2525 */ // (srl:{ *:[i64] } (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src), 32:{ *:[i64] }) => (LE32:{ *:[i64] } GPR:{ *:[i64] }:$src)
968 /* 2525 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(BPF::LE32),
969 /* 2528 */ GIR_RootToRootCopy, /*OpIdx*/0, // DstI[dst]
970 /* 2530 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
971 /* 2534 */ GIR_RootConstrainSelectedInstOperands,
972 /* 2535 */ // GIR_Coverage, 147,
973 /* 2535 */ GIR_EraseRootFromParent_Done,
974 /* 2536 */ // Label 112: @2536
975 /* 2536 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2548), // Rule ID 65 //
976 /* 2541 */ // (srl:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SRL_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
977 /* 2541 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRL_rr),
978 /* 2546 */ GIR_RootConstrainSelectedInstOperands,
979 /* 2547 */ // GIR_Coverage, 65,
980 /* 2547 */ GIR_Done,
981 /* 2548 */ // Label 113: @2548
982 /* 2548 */ GIM_Reject,
983 /* 2549 */ // Label 106: @2549
984 /* 2549 */ GIM_Reject,
985 /* 2550 */ // Label 104: @2550
986 /* 2550 */ GIM_Reject,
987 /* 2551 */ // Label 19: @2551
988 /* 2551 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(2), /*)*//*default:*//*Label 116*/ GIMT_Encode4(2616),
989 /* 2562 */ /*GILLT_s32*//*Label 114*/ GIMT_Encode4(2570),
990 /* 2566 */ /*GILLT_s64*//*Label 115*/ GIMT_Encode4(2593),
991 /* 2570 */ // Label 114: @2570
992 /* 2570 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2592), // Rule ID 75 //
993 /* 2575 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s32,
994 /* 2578 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s32,
995 /* 2581 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPR32RegClassID),
996 /* 2585 */ // (sra:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src) => (SRA_rr_32:{ *:[i32] } i32:{ *:[i32] }:$src2, i32:{ *:[i32] }:$src)
997 /* 2585 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr_32),
998 /* 2590 */ GIR_RootConstrainSelectedInstOperands,
999 /* 2591 */ // GIR_Coverage, 75,
1000 /* 2591 */ GIR_Done,
1001 /* 2592 */ // Label 117: @2592
1002 /* 2592 */ GIM_Reject,
1003 /* 2593 */ // Label 115: @2593
1004 /* 2593 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2615), // Rule ID 73 //
1005 /* 2598 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
1006 /* 2601 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
1007 /* 2604 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1008 /* 2608 */ // (sra:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src) => (SRA_rr:{ *:[i64] } i64:{ *:[i64] }:$src2, i64:{ *:[i64] }:$src)
1009 /* 2608 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::SRA_rr),
1010 /* 2613 */ GIR_RootConstrainSelectedInstOperands,
1011 /* 2614 */ // GIR_Coverage, 73,
1012 /* 2614 */ GIR_Done,
1013 /* 2615 */ // Label 118: @2615
1014 /* 2615 */ GIM_Reject,
1015 /* 2616 */ // Label 116: @2616
1016 /* 2616 */ GIM_Reject,
1017 /* 2617 */ // Label 20: @2617
1018 /* 2617 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2632), // Rule ID 124 //
1019 /* 2622 */ // MIs[0] BrDst
1020 /* 2622 */ GIM_CheckIsMBB, /*MI*/0, /*Op*/0,
1021 /* 2625 */ // (br (bb:{ *:[Other] }):$BrDst) => (JMP (bb:{ *:[Other] }):$BrDst)
1022 /* 2625 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::JMP),
1023 /* 2630 */ GIR_RootConstrainSelectedInstOperands,
1024 /* 2631 */ // GIR_Coverage, 124,
1025 /* 2631 */ GIR_Done,
1026 /* 2632 */ // Label 119: @2632
1027 /* 2632 */ GIM_Reject,
1028 /* 2633 */ // Label 21: @2633
1029 /* 2633 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2698),
1030 /* 2638 */ GIM_RootCheckType, /*Op*/0, /*Type*/GILLT_s64,
1031 /* 2641 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
1032 /* 2644 */ GIM_RootCheckRegBankForClass, /*Op*/0, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1033 /* 2648 */ GIM_RootCheckRegBankForClass, /*Op*/1, /*RC*/GIMT_Encode2(BPF::GPRRegClassID),
1034 /* 2652 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2667), // Rule ID 142 //
1035 /* 2657 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFHasBswap),
1036 /* 2660 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (BSWAP64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1037 /* 2660 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BSWAP64),
1038 /* 2665 */ GIR_RootConstrainSelectedInstOperands,
1039 /* 2666 */ // GIR_Coverage, 142,
1040 /* 2666 */ GIR_Done,
1041 /* 2667 */ // Label 121: @2667
1042 /* 2667 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2682), // Rule ID 145 //
1043 /* 2672 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsLittleEndian),
1044 /* 2675 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (BE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1045 /* 2675 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::BE64),
1046 /* 2680 */ GIR_RootConstrainSelectedInstOperands,
1047 /* 2681 */ // GIR_Coverage, 145,
1048 /* 2681 */ GIR_Done,
1049 /* 2682 */ // Label 122: @2682
1050 /* 2682 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2697), // Rule ID 148 //
1051 /* 2687 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_BPFIsBigEndian),
1052 /* 2690 */ // (bswap:{ *:[i64] } GPR:{ *:[i64] }:$src) => (LE64:{ *:[i64] } GPR:{ *:[i64] }:$src)
1053 /* 2690 */ GIR_MutateOpcode, /*InsnID*/0, /*RecycleInsnID*/0, /*Opcode*/GIMT_Encode2(BPF::LE64),
1054 /* 2695 */ GIR_RootConstrainSelectedInstOperands,
1055 /* 2696 */ // GIR_Coverage, 148,
1056 /* 2696 */ GIR_Done,
1057 /* 2697 */ // Label 123: @2697
1058 /* 2697 */ GIM_Reject,
1059 /* 2698 */ // Label 120: @2698
1060 /* 2698 */ GIM_Reject,
1061 /* 2699 */ // Label 22: @2699
1062 /* 2699 */ GIM_Reject,
1063 /* 2700 */ }; // Size: 2700 bytes
1064 return MatchTable0;
1065}
1066#undef GIMT_Encode2
1067#undef GIMT_Encode4
1068#undef GIMT_Encode8
1069
1070
1071#endif // GET_GLOBALISEL_IMPL
1072
1073#ifdef GET_GLOBALISEL_PREDICATES_DECL
1074
1075PredicateBitset AvailableModuleFeatures;
1076mutable PredicateBitset AvailableFunctionFeatures;
1077PredicateBitset getAvailableFeatures() const {
1078 return AvailableModuleFeatures | AvailableFunctionFeatures;
1079}
1080PredicateBitset
1081computeAvailableModuleFeatures(const BPFSubtarget *Subtarget) const;
1082PredicateBitset
1083computeAvailableFunctionFeatures(const BPFSubtarget *Subtarget,
1084 const MachineFunction *MF) const;
1085void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1086
1087#endif // GET_GLOBALISEL_PREDICATES_DECL
1088
1089#ifdef GET_GLOBALISEL_PREDICATES_INIT
1090
1091AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
1092AvailableFunctionFeatures()
1093
1094#endif // GET_GLOBALISEL_PREDICATES_INIT
1095
1096