1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* RISCVPostLegalizerCombinerImpl Combiner Match Table *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_GICOMBINER_DEPS
10
11#include "llvm/ADT/SparseBitVector.h"
12namespace llvm {
13
14extern cl::OptionCategory GICombinerOptionCategory;
15
16} // namespace llvm
17
18#endif // GET_GICOMBINER_DEPS
19
20#ifdef GET_GICOMBINER_TYPES
21
22struct RISCVPostLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 10: // 3 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'i': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
46 break;
47 return 11; // "i2p_to_p2i"
48 case 'p': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
50 break;
51 return 10; // "p2i_to_i2p"
52 case 's': // 1 string to match.
53 if (memcmp(RuleIdentifier.data()+1, "ub_to_add", 9) != 0)
54 break;
55 return 0; // "sub_to_add"
56 }
57 break;
58 case 11: // 1 string to match.
59 if (memcmp(RuleIdentifier.data()+0, "add_sub_reg", 11) != 0)
60 break;
61 return 16; // "add_sub_reg"
62 case 13: // 3 strings to match.
63 switch (RuleIdentifier[0]) {
64 default: break;
65 case 'l': // 1 string to match.
66 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
67 break;
68 return 2; // "load_and_mask"
69 case 'r': // 1 string to match.
70 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
71 break;
72 return 3; // "redundant_and"
73 case 's': // 1 string to match.
74 if (memcmp(RuleIdentifier.data()+1, "ame_val_zero", 12) != 0)
75 break;
76 return 7; // "same_val_zero"
77 }
78 break;
79 case 14: // 2 strings to match.
80 switch (RuleIdentifier[0]) {
81 default: break;
82 case 'b': // 1 string to match.
83 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
84 break;
85 return 6; // "binop_same_val"
86 case 'f': // 1 string to match.
87 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
88 break;
89 return 13; // "fneg_fneg_fold"
90 }
91 break;
92 case 15: // 2 strings to match.
93 switch (RuleIdentifier[0]) {
94 default: break;
95 case 'e': // 1 string to match.
96 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
97 break;
98 return 1; // "extending_loads"
99 case 's': // 1 string to match.
100 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
101 break;
102 return 4; // "select_same_val"
103 }
104 break;
105 case 17: // 2 strings to match.
106 switch (RuleIdentifier[0]) {
107 default: break;
108 case 'a': // 1 string to match.
109 if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
110 break;
111 return 12; // "anyext_trunc_fold"
112 case 's': // 1 string to match.
113 if (memcmp(RuleIdentifier.data()+1, "hift_immed_chain", 16) != 0)
114 break;
115 return 25; // "shift_immed_chain"
116 }
117 break;
118 case 18: // 3 strings to match.
119 switch (RuleIdentifier[0]) {
120 default: break;
121 case 'b': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
123 break;
124 return 8; // "binop_left_to_zero"
125 case 'f': // 2 strings to match.
126 switch (RuleIdentifier[1]) {
127 default: break;
128 case 'o': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+2, "ld_fp_zero_store", 16) != 0)
130 break;
131 return 29; // "fold_fp_zero_store"
132 case 'p': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
134 break;
135 return 21; // "fptrunc_fpext_fold"
136 }
137 break;
138 }
139 break;
140 case 19: // 3 strings to match.
141 switch (RuleIdentifier[0]) {
142 default: break;
143 case 'b': // 1 string to match.
144 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
145 break;
146 return 9; // "binop_right_to_zero"
147 case 'r': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "ight_identity_zero", 18) != 0)
149 break;
150 return 5; // "right_identity_zero"
151 case 's': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "implify_neg_minmax", 18) != 0)
153 break;
154 return 28; // "simplify_neg_minmax"
155 }
156 break;
157 case 20: // 1 string to match.
158 if (memcmp(RuleIdentifier.data()+0, "bitcast_bitcast_fold", 20) != 0)
159 break;
160 return 20; // "bitcast_bitcast_fold"
161 case 21: // 1 string to match.
162 if (memcmp(RuleIdentifier.data()+0, "right_identity_one_fp", 21) != 0)
163 break;
164 return 15; // "right_identity_one_fp"
165 case 22: // 2 strings to match.
166 switch (RuleIdentifier[0]) {
167 default: break;
168 case 'r': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
170 break;
171 return 14; // "right_identity_one_int"
172 case 't': // 1 string to match.
173 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
174 break;
175 return 18; // "trunc_buildvector_fold"
176 }
177 break;
178 case 25: // 2 strings to match.
179 switch (RuleIdentifier[0]) {
180 default: break;
181 case 'b': // 1 string to match.
182 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold", 24) != 0)
183 break;
184 return 17; // "buildvector_identity_fold"
185 case 'r': // 1 string to match.
186 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
187 break;
188 return 24; // "right_identity_neg_one_fp"
189 }
190 break;
191 case 26: // 2 strings to match.
192 switch (RuleIdentifier[0]) {
193 default: break;
194 case 'c': // 1 string to match.
195 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
196 break;
197 return 27; // "commute_fp_constant_to_rhs"
198 case 'r': // 1 string to match.
199 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
200 break;
201 return 22; // "right_identity_neg_zero_fp"
202 }
203 break;
204 case 27: // 2 strings to match.
205 switch (RuleIdentifier[0]) {
206 default: break;
207 case 'c': // 1 string to match.
208 if (memcmp(RuleIdentifier.data()+1, "ommute_int_constant_to_rhs", 26) != 0)
209 break;
210 return 26; // "commute_int_constant_to_rhs"
211 case 't': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
213 break;
214 return 19; // "trunc_lshr_buildvector_fold"
215 }
216 break;
217 case 30: // 1 string to match.
218 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp_nsz", 30) != 0)
219 break;
220 return 23; // "right_identity_neg_zero_fp_nsz"
221 }
222#endif // ifndef NDEBUG
223
224 return std::nullopt;
225}
226static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
227 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
228 if (!RangePair.second.empty()) {
229 const auto First = getRuleIdxForIdentifier(RangePair.first);
230 const auto Last = getRuleIdxForIdentifier(RangePair.second);
231 if (!First || !Last)
232 return std::nullopt;
233 if (First >= Last)
234 report_fatal_error("Beginning of range should be before end of range");
235 return {{*First, *Last + 1}};
236 }
237 if (RangePair.first == "*") {
238 return {{0, 30}};
239 }
240 const auto I = getRuleIdxForIdentifier(RangePair.first);
241 if (!I)
242 return std::nullopt;
243 return {{*I, *I + 1}};
244}
245
246bool RISCVPostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
247 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
248 if (!MaybeRange)
249 return false;
250 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
251 DisabledRules.reset(I);
252 return true;
253}
254
255bool RISCVPostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
256 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
257 if (!MaybeRange)
258 return false;
259 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
260 DisabledRules.set(I);
261 return true;
262}
263
264static std::vector<std::string> RISCVPostLegalizerCombinerOption;
265static cl::list<std::string> RISCVPostLegalizerCombinerDisableOption(
266 "riscvpostlegalizercombiner-disable-rule",
267 cl::desc("Disable one or more combiner rules temporarily in the RISCVPostLegalizerCombiner pass"),
268 cl::CommaSeparated,
269 cl::Hidden,
270 cl::cat(GICombinerOptionCategory),
271 cl::callback([](const std::string &Str) {
272 RISCVPostLegalizerCombinerOption.push_back(Str);
273 }));
274static cl::list<std::string> RISCVPostLegalizerCombinerOnlyEnableOption(
275 "riscvpostlegalizercombiner-only-enable-rule",
276 cl::desc("Disable all rules in the RISCVPostLegalizerCombiner pass then re-enable the specified ones"),
277 cl::Hidden,
278 cl::cat(GICombinerOptionCategory),
279 cl::callback([](const std::string &CommaSeparatedArg) {
280 StringRef Str = CommaSeparatedArg;
281 RISCVPostLegalizerCombinerOption.push_back("*");
282 do {
283 auto X = Str.split(",");
284 RISCVPostLegalizerCombinerOption.push_back(("!" + X.first).str());
285 Str = X.second;
286 } while (!Str.empty());
287 }));
288
289
290bool RISCVPostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
291 return !DisabledRules.test(RuleID);
292}
293bool RISCVPostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
294 for (StringRef Identifier : RISCVPostLegalizerCombinerOption) {
295 bool Enabled = Identifier.consume_front("!");
296 if (Enabled && !setRuleEnabled(Identifier))
297 return false;
298 if (!Enabled && !setRuleDisabled(Identifier))
299 return false;
300 }
301 return true;
302}
303
304
305#endif // GET_GICOMBINER_TYPES
306
307#ifdef GET_GICOMBINER_TYPES
308
309const unsigned MAX_SUBTARGET_PREDICATES = 0;
310using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
311
312#endif // GET_GICOMBINER_TYPES
313
314#ifdef GET_GICOMBINER_CLASS_MEMBERS
315
316PredicateBitset AvailableModuleFeatures;
317mutable PredicateBitset AvailableFunctionFeatures;
318PredicateBitset getAvailableFeatures() const {
319 return AvailableModuleFeatures | AvailableFunctionFeatures;
320}
321PredicateBitset
322computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
323PredicateBitset
324computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
325 const MachineFunction *MF) const;
326void setupGeneratedPerFunctionState(MachineFunction &MF) override;
327
328#endif // GET_GICOMBINER_CLASS_MEMBERS
329
330#ifdef GET_GICOMBINER_CLASS_MEMBERS
331
332 mutable MatcherState State;
333 typedef ComplexRendererFns(RISCVPostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
334 typedef void(RISCVPostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
335 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
336 static RISCVPostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
337 static RISCVPostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
338 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
339 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
340 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
341 const uint8_t *getMatchTable() const override;
342 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
343 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
344 bool testSimplePredicate(unsigned PredicateID) const override;
345 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
346
347#endif // GET_GICOMBINER_CLASS_MEMBERS
348
349#ifdef GET_GICOMBINER_IMPL
350
351// LLT Objects.
352enum {
353 GILLT_s1,
354};
355const static size_t NumTypeObjects = 1;
356const static LLT TypeObjects[] = {
357 LLT::scalar(1),
358};
359
360// Bits for subtarget features that participate in instruction matching.
361enum SubtargetFeatureBits : uint8_t {
362};
363
364PredicateBitset RISCVPostLegalizerCombinerImpl::
365computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
366 PredicateBitset Features{};
367 return Features;
368}
369
370void RISCVPostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
371 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
372}
373PredicateBitset RISCVPostLegalizerCombinerImpl::
374computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
375 PredicateBitset Features{};
376 return Features;
377}
378
379// Feature bitsets.
380enum {
381 GIFBS_Invalid,
382};
383constexpr static PredicateBitset FeatureBitsets[] {
384 {}, // GIFBS_Invalid
385};
386
387// ComplexPattern predicates.
388enum {
389 GICP_Invalid,
390};
391// See constructor for table contents
392
393RISCVPostLegalizerCombinerImpl::ComplexMatcherMemFn
394RISCVPostLegalizerCombinerImpl::ComplexPredicateFns[] = {
395 nullptr, // GICP_Invalid
396};
397
398enum {
399 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
400 GICXXPred_MI_Predicate_GICombiner1,
401 GICXXPred_MI_Predicate_GICombiner2,
402 GICXXPred_MI_Predicate_GICombiner3,
403};
404bool RISCVPostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
405 switch (PredicateID) {
406 case GICXXPred_MI_Predicate_GICombiner0: {
407 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
408 }
409 case GICXXPred_MI_Predicate_GICombiner1: {
410 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
411 }
412 case GICXXPred_MI_Predicate_GICombiner2: {
413 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
414 }
415 case GICXXPred_MI_Predicate_GICombiner3: {
416 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
417 }
418 }
419 llvm_unreachable("Unknown predicate");
420 return false;
421}
422bool RISCVPostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
423 llvm_unreachable("Unknown predicate");
424 return false;
425}
426bool RISCVPostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
427 llvm_unreachable("Unknown predicate");
428 return false;
429}
430bool RISCVPostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
431 llvm_unreachable("Unknown predicate");
432 return false;
433}
434bool RISCVPostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
435 llvm_unreachable("Unknown predicate");
436 return false;
437}
438enum {
439 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
440 GICXXPred_Simple_IsRule1Enabled,
441 GICXXPred_Simple_IsRule2Enabled,
442 GICXXPred_Simple_IsRule3Enabled,
443 GICXXPred_Simple_IsRule4Enabled,
444 GICXXPred_Simple_IsRule5Enabled,
445 GICXXPred_Simple_IsRule6Enabled,
446 GICXXPred_Simple_IsRule7Enabled,
447 GICXXPred_Simple_IsRule8Enabled,
448 GICXXPred_Simple_IsRule9Enabled,
449 GICXXPred_Simple_IsRule10Enabled,
450 GICXXPred_Simple_IsRule11Enabled,
451 GICXXPred_Simple_IsRule12Enabled,
452 GICXXPred_Simple_IsRule13Enabled,
453 GICXXPred_Simple_IsRule14Enabled,
454 GICXXPred_Simple_IsRule15Enabled,
455 GICXXPred_Simple_IsRule16Enabled,
456 GICXXPred_Simple_IsRule17Enabled,
457 GICXXPred_Simple_IsRule18Enabled,
458 GICXXPred_Simple_IsRule19Enabled,
459 GICXXPred_Simple_IsRule20Enabled,
460 GICXXPred_Simple_IsRule21Enabled,
461 GICXXPred_Simple_IsRule22Enabled,
462 GICXXPred_Simple_IsRule23Enabled,
463 GICXXPred_Simple_IsRule24Enabled,
464 GICXXPred_Simple_IsRule25Enabled,
465 GICXXPred_Simple_IsRule26Enabled,
466 GICXXPred_Simple_IsRule27Enabled,
467 GICXXPred_Simple_IsRule28Enabled,
468 GICXXPred_Simple_IsRule29Enabled,
469};
470
471bool RISCVPostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
472 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
473}
474// Custom renderers.
475enum {
476 GICR_Invalid,
477};
478RISCVPostLegalizerCombinerImpl::CustomRendererFn
479RISCVPostLegalizerCombinerImpl::CustomRenderers[] = {
480 nullptr, // GICR_Invalid
481};
482
483bool RISCVPostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
484 const TargetSubtargetInfo &ST = MF.getSubtarget();
485 const PredicateBitset AvailableFeatures = getAvailableFeatures();
486 B.setInstrAndDebugLoc(I);
487 State.MIs.clear();
488 State.MIs.push_back(&I);
489 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
490 return true;
491 }
492
493 return false;
494}
495
496enum {
497 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
498 GICXXCustomAction_GICombiner1,
499 GICXXCustomAction_GICombiner2,
500 GICXXCustomAction_GICombiner3,
501 GICXXCustomAction_GICombiner4,
502 GICXXCustomAction_GICombiner5,
503 GICXXCustomAction_GICombiner6,
504 GICXXCustomAction_GICombiner7,
505 GICXXCustomAction_GICombiner8,
506 GICXXCustomAction_GICombiner9,
507 GICXXCustomAction_GICombiner10,
508 GICXXCustomAction_GICombiner11,
509 GICXXCustomAction_GICombiner12,
510 GICXXCustomAction_GICombiner13,
511 GICXXCustomAction_GICombiner14,
512 GICXXCustomAction_GICombiner15,
513 GICXXCustomAction_GICombiner16,
514};
515bool RISCVPostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
516 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
517 switch(ApplyID) {
518 case GICXXCustomAction_GICombiner0:{
519 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
520 // Match Patterns
521 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
522 return false;
523 }
524 // Apply Patterns
525 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
526 return true;
527 }
528 case GICXXCustomAction_GICombiner1:{
529 PreferredTuple GIMatchData_matchinfo;
530 // Match Patterns
531 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
532 return false;
533 }
534 // Apply Patterns
535 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
536 return true;
537 }
538 case GICXXCustomAction_GICombiner2:{
539 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
540 // Match Patterns
541 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
542 return false;
543 }
544 // Apply Patterns
545 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
546 return true;
547 }
548 case GICXXCustomAction_GICombiner3:{
549 Register GIMatchData_matchinfo;
550 // Match Patterns
551 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
552 return false;
553 }
554 // Apply Patterns
555 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
556 return true;
557 }
558 case GICXXCustomAction_GICombiner4:{
559 // Match Patterns
560 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
561 return false;
562 }
563 // Apply Patterns
564 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
565 return true;
566 }
567 case GICXXCustomAction_GICombiner5:{
568 Register GIMatchData_info;
569 // Match Patterns
570 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
571 return false;
572 }
573 // Apply Patterns
574 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
575 return true;
576 }
577 case GICXXCustomAction_GICombiner6:{
578 Register GIMatchData_info;
579 // Match Patterns
580 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
581 return false;
582 }
583 // Apply Patterns
584 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
585 return true;
586 }
587 case GICXXCustomAction_GICombiner7:{
588 Register GIMatchData_matchinfo;
589 // Match Patterns
590 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
591 return false;
592 }
593 // Apply Patterns
594 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
595 return true;
596 }
597 case GICXXCustomAction_GICombiner8:{
598 Register GIMatchData_matchinfo;
599 // Match Patterns
600 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
601 return false;
602 }
603 // Apply Patterns
604 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
605 return true;
606 }
607 case GICXXCustomAction_GICombiner9:{
608 Register GIMatchData_matchinfo;
609 // Match Patterns
610 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
611 return false;
612 }
613 // Apply Patterns
614 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
615 return true;
616 }
617 case GICXXCustomAction_GICombiner10:{
618 Register GIMatchData_matchinfo;
619 // Match Patterns
620 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
621 return false;
622 }
623 // Apply Patterns
624 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
625 return true;
626 }
627 case GICXXCustomAction_GICombiner11:{
628 // Match Patterns
629 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
630 return false;
631 }
632 // Apply Patterns
633 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
634 return true;
635 }
636 case GICXXCustomAction_GICombiner12:{
637 RegisterImmPair GIMatchData_matchinfo;
638 // Match Patterns
639 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
640 return false;
641 }
642 // Apply Patterns
643 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
644 return true;
645 }
646 case GICXXCustomAction_GICombiner13:{
647 // Match Patterns
648 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
649 return false;
650 }
651 // Apply Patterns
652 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
653 return true;
654 }
655 case GICXXCustomAction_GICombiner14:{
656 // Match Patterns
657 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
658 return false;
659 }
660 // Apply Patterns
661 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
662 return true;
663 }
664 case GICXXCustomAction_GICombiner15:{
665 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
666 // Match Patterns
667 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
668 return false;
669 }
670 // Apply Patterns
671 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
672 return true;
673 }
674 case GICXXCustomAction_GICombiner16:{
675 Register GIMatchData_matchinfo;
676 // Match Patterns
677 if(![&](){return matchFoldFPZeroStore(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
678 return false;
679 }
680 // Apply Patterns
681 applyFoldFPZeroStore(*State.MIs[0], MRI, B, STI, GIMatchData_matchinfo);
682 return true;
683 }
684 }
685 llvm_unreachable("Unknown Apply Action");
686}
687#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
688#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
689#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
690#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)
691#else
692#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
693#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
694#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)
695#endif
696const uint8_t *RISCVPostLegalizerCombinerImpl::getMatchTable() const {
697 constexpr static uint8_t MatchTable0[] = {
698 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(55), GIMT_Encode2(242), /*)*//*default:*//*Label 56*/ GIMT_Encode4(2340),
699 /* 10 */ /*TargetOpcode::G_ADD*//*Label 0*/ GIMT_Encode4(758),
700 /* 14 */ /*TargetOpcode::G_SUB*//*Label 1*/ GIMT_Encode4(861),
701 /* 18 */ /*TargetOpcode::G_MUL*//*Label 2*/ GIMT_Encode4(956),
702 /* 22 */ /*TargetOpcode::G_SDIV*//*Label 3*/ GIMT_Encode4(1054),
703 /* 26 */ /*TargetOpcode::G_UDIV*//*Label 4*/ GIMT_Encode4(1095),
704 /* 30 */ /*TargetOpcode::G_SREM*//*Label 5*/ GIMT_Encode4(1136),
705 /* 34 */ /*TargetOpcode::G_UREM*//*Label 6*/ GIMT_Encode4(1177), GIMT_Encode4(0), GIMT_Encode4(0),
706 /* 46 */ /*TargetOpcode::G_AND*//*Label 7*/ GIMT_Encode4(1218),
707 /* 50 */ /*TargetOpcode::G_OR*//*Label 8*/ GIMT_Encode4(1276),
708 /* 54 */ /*TargetOpcode::G_XOR*//*Label 9*/ GIMT_Encode4(1335), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
709 /* 122 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 10*/ GIMT_Encode4(1409),
710 /* 126 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 11*/ GIMT_Encode4(1421), GIMT_Encode4(0),
711 /* 134 */ /*TargetOpcode::G_PTRTOINT*//*Label 12*/ GIMT_Encode4(1433),
712 /* 138 */ /*TargetOpcode::G_INTTOPTR*//*Label 13*/ GIMT_Encode4(1455),
713 /* 142 */ /*TargetOpcode::G_BITCAST*//*Label 14*/ GIMT_Encode4(1467), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
714 /* 186 */ /*TargetOpcode::G_LOAD*//*Label 15*/ GIMT_Encode4(1489),
715 /* 190 */ /*TargetOpcode::G_SEXTLOAD*//*Label 16*/ GIMT_Encode4(1501),
716 /* 194 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 17*/ GIMT_Encode4(1513), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
717 /* 210 */ /*TargetOpcode::G_STORE*//*Label 18*/ GIMT_Encode4(1525), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
718 /* 346 */ /*TargetOpcode::G_ANYEXT*//*Label 19*/ GIMT_Encode4(1537),
719 /* 350 */ /*TargetOpcode::G_TRUNC*//*Label 20*/ GIMT_Encode4(1549), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
720 /* 394 */ /*TargetOpcode::G_SHL*//*Label 21*/ GIMT_Encode4(1572),
721 /* 398 */ /*TargetOpcode::G_LSHR*//*Label 22*/ GIMT_Encode4(1647),
722 /* 402 */ /*TargetOpcode::G_ASHR*//*Label 23*/ GIMT_Encode4(1722), GIMT_Encode4(0), GIMT_Encode4(0),
723 /* 414 */ /*TargetOpcode::G_ROTR*//*Label 24*/ GIMT_Encode4(1797),
724 /* 418 */ /*TargetOpcode::G_ROTL*//*Label 25*/ GIMT_Encode4(1821), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
725 /* 438 */ /*TargetOpcode::G_SELECT*//*Label 26*/ GIMT_Encode4(1845),
726 /* 442 */ /*TargetOpcode::G_UADDO*//*Label 27*/ GIMT_Encode4(1857), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
727 /* 458 */ /*TargetOpcode::G_SADDO*//*Label 28*/ GIMT_Encode4(1869), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
728 /* 474 */ /*TargetOpcode::G_UMULO*//*Label 29*/ GIMT_Encode4(1881),
729 /* 478 */ /*TargetOpcode::G_SMULO*//*Label 30*/ GIMT_Encode4(1893),
730 /* 482 */ /*TargetOpcode::G_UMULH*//*Label 31*/ GIMT_Encode4(1905),
731 /* 486 */ /*TargetOpcode::G_SMULH*//*Label 32*/ GIMT_Encode4(1917),
732 /* 490 */ /*TargetOpcode::G_UADDSAT*//*Label 33*/ GIMT_Encode4(1929),
733 /* 494 */ /*TargetOpcode::G_SADDSAT*//*Label 34*/ GIMT_Encode4(1941), GIMT_Encode4(0), GIMT_Encode4(0),
734 /* 506 */ /*TargetOpcode::G_USHLSAT*//*Label 35*/ GIMT_Encode4(1953),
735 /* 510 */ /*TargetOpcode::G_SSHLSAT*//*Label 36*/ GIMT_Encode4(1965),
736 /* 514 */ /*TargetOpcode::G_SMULFIX*//*Label 37*/ GIMT_Encode4(1977),
737 /* 518 */ /*TargetOpcode::G_UMULFIX*//*Label 38*/ GIMT_Encode4(1989),
738 /* 522 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 39*/ GIMT_Encode4(2001),
739 /* 526 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 40*/ GIMT_Encode4(2013), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
740 /* 546 */ /*TargetOpcode::G_FADD*//*Label 41*/ GIMT_Encode4(2025), GIMT_Encode4(0),
741 /* 554 */ /*TargetOpcode::G_FMUL*//*Label 42*/ GIMT_Encode4(2089), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
742 /* 618 */ /*TargetOpcode::G_FNEG*//*Label 43*/ GIMT_Encode4(2144), GIMT_Encode4(0),
743 /* 626 */ /*TargetOpcode::G_FPTRUNC*//*Label 44*/ GIMT_Encode4(2174), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
744 /* 670 */ /*TargetOpcode::G_FMINNUM*//*Label 45*/ GIMT_Encode4(2196),
745 /* 674 */ /*TargetOpcode::G_FMAXNUM*//*Label 46*/ GIMT_Encode4(2208),
746 /* 678 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 47*/ GIMT_Encode4(2220),
747 /* 682 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 48*/ GIMT_Encode4(2232),
748 /* 686 */ /*TargetOpcode::G_FMINIMUM*//*Label 49*/ GIMT_Encode4(2244),
749 /* 690 */ /*TargetOpcode::G_FMAXIMUM*//*Label 50*/ GIMT_Encode4(2256), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
750 /* 734 */ /*TargetOpcode::G_PTR_ADD*//*Label 51*/ GIMT_Encode4(2268), GIMT_Encode4(0),
751 /* 742 */ /*TargetOpcode::G_SMIN*//*Label 52*/ GIMT_Encode4(2292),
752 /* 746 */ /*TargetOpcode::G_SMAX*//*Label 53*/ GIMT_Encode4(2304),
753 /* 750 */ /*TargetOpcode::G_UMIN*//*Label 54*/ GIMT_Encode4(2316),
754 /* 754 */ /*TargetOpcode::G_UMAX*//*Label 55*/ GIMT_Encode4(2328),
755 /* 758 */ // Label 0: @758
756 /* 758 */ GIM_Try, /*On fail goto*//*Label 57*/ GIMT_Encode4(769), // Rule ID 52 //
757 /* 763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
758 /* 766 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
759 /* 766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
760 /* 769 */ // Label 57: @769
761 /* 769 */ GIM_Try, /*On fail goto*//*Label 58*/ GIMT_Encode4(803), // Rule ID 37 //
762 /* 774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
763 /* 777 */ // MIs[0] dst
764 /* 777 */ // No operand predicates
765 /* 777 */ // MIs[0] __add_sub_reg_match_0.tmp
766 /* 777 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
767 /* 781 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
768 /* 785 */ // MIs[1] src
769 /* 785 */ // No operand predicates
770 /* 785 */ // MIs[1] __add_sub_reg_match_0.x
771 /* 785 */ // No operand predicates
772 /* 785 */ // MIs[0] __add_sub_reg_match_0.x
773 /* 785 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
774 /* 790 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
775 /* 795 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
776 /* 797 */ // Combiner Rule #16: add_sub_reg @ [__add_sub_reg_match_0[1]]
777 /* 797 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
778 /* 802 */ GIR_EraseRootFromParent_Done,
779 /* 803 */ // Label 58: @803
780 /* 803 */ GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(837), // Rule ID 36 //
781 /* 808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
782 /* 811 */ // MIs[0] dst
783 /* 811 */ // No operand predicates
784 /* 811 */ // MIs[0] __add_sub_reg_match_0.x
785 /* 811 */ // No operand predicates
786 /* 811 */ // MIs[0] __add_sub_reg_match_0.tmp
787 /* 811 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
788 /* 815 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
789 /* 819 */ // MIs[1] src
790 /* 819 */ // No operand predicates
791 /* 819 */ // MIs[1] __add_sub_reg_match_0.x
792 /* 819 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
793 /* 824 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
794 /* 829 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
795 /* 831 */ // Combiner Rule #16: add_sub_reg @ [__add_sub_reg_match_0[0]]
796 /* 831 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
797 /* 836 */ GIR_EraseRootFromParent_Done,
798 /* 837 */ // Label 59: @837
799 /* 837 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(860), // Rule ID 8 //
800 /* 842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
801 /* 845 */ // MIs[0] dst
802 /* 845 */ // No operand predicates
803 /* 845 */ // MIs[0] lhs
804 /* 845 */ // No operand predicates
805 /* 845 */ // MIs[0] Operand 2
806 /* 845 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
807 /* 849 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
808 /* 854 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[1]]
809 /* 854 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
810 /* 859 */ GIR_EraseRootFromParent_Done,
811 /* 860 */ // Label 60: @860
812 /* 860 */ GIM_Reject,
813 /* 861 */ // Label 1: @861
814 /* 861 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(872), // Rule ID 81 //
815 /* 866 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
816 /* 869 */ // Combiner Rule #28: simplify_neg_minmax; wip_match_opcode 'G_SUB'
817 /* 869 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
818 /* 872 */ // Label 61: @872
819 /* 872 */ GIM_Try, /*On fail goto*//*Label 62*/ GIMT_Encode4(911), // Rule ID 19 //
820 /* 877 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
821 /* 880 */ // MIs[0] dst
822 /* 880 */ // No operand predicates
823 /* 880 */ // MIs[0] x
824 /* 880 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
825 /* 884 */ // MIs[0] x
826 /* 884 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
827 /* 889 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
828 /* 892 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
829 /* 902 */ // Combiner Rule #7: same_val_zero @ [__same_val_zero_match_0[0]]
830 /* 902 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
831 /* 905 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
832 /* 907 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
833 /* 910 */ GIR_EraseRootFromParent_Done,
834 /* 911 */ // Label 62: @911
835 /* 911 */ GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(934), // Rule ID 7 //
836 /* 916 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
837 /* 919 */ // MIs[0] dst
838 /* 919 */ // No operand predicates
839 /* 919 */ // MIs[0] lhs
840 /* 919 */ // No operand predicates
841 /* 919 */ // MIs[0] Operand 2
842 /* 919 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
843 /* 923 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
844 /* 928 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[0]]
845 /* 928 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
846 /* 933 */ GIR_EraseRootFromParent_Done,
847 /* 934 */ // Label 63: @934
848 /* 934 */ GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(955), // Rule ID 0 //
849 /* 939 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
850 /* 942 */ // MIs[0] d
851 /* 942 */ // No operand predicates
852 /* 942 */ // MIs[0] op1
853 /* 942 */ // No operand predicates
854 /* 942 */ // MIs[0] c
855 /* 942 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
856 /* 946 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
857 /* 950 */ // MIs[1] imm
858 /* 950 */ // No operand predicates
859 /* 950 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
860 /* 952 */ // Combiner Rule #0: sub_to_add
861 /* 952 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
862 /* 955 */ // Label 64: @955
863 /* 955 */ GIM_Reject,
864 /* 956 */ // Label 2: @956
865 /* 956 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(967), // Rule ID 53 //
866 /* 961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
867 /* 964 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
868 /* 964 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
869 /* 967 */ // Label 65: @967
870 /* 967 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1007), // Rule ID 28 //
871 /* 972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
872 /* 975 */ // MIs[0] dst
873 /* 975 */ // No operand predicates
874 /* 975 */ // MIs[0] zero
875 /* 975 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
876 /* 979 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
877 /* 983 */ // MIs[1] Operand 1
878 /* 983 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
879 /* 994 */ // MIs[0] rhs
880 /* 994 */ // No operand predicates
881 /* 994 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
882 /* 999 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
883 /* 1001 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
884 /* 1001 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
885 /* 1006 */ GIR_EraseRootFromParent_Done,
886 /* 1007 */ // Label 66: @1007
887 /* 1007 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1030), // Rule ID 29 //
888 /* 1012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
889 /* 1015 */ // MIs[0] dst
890 /* 1015 */ // No operand predicates
891 /* 1015 */ // MIs[0] lhs
892 /* 1015 */ // No operand predicates
893 /* 1015 */ // MIs[0] zero
894 /* 1015 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
895 /* 1019 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
896 /* 1024 */ // Combiner Rule #9: binop_right_to_zero
897 /* 1024 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
898 /* 1029 */ GIR_EraseRootFromParent_Done,
899 /* 1030 */ // Label 67: @1030
900 /* 1030 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1053), // Rule ID 34 //
901 /* 1035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
902 /* 1038 */ // MIs[0] dst
903 /* 1038 */ // No operand predicates
904 /* 1038 */ // MIs[0] x
905 /* 1038 */ // No operand predicates
906 /* 1038 */ // MIs[0] Operand 2
907 /* 1038 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
908 /* 1042 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
909 /* 1047 */ // Combiner Rule #14: right_identity_one_int
910 /* 1047 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
911 /* 1052 */ GIR_EraseRootFromParent_Done,
912 /* 1053 */ // Label 68: @1053
913 /* 1053 */ GIM_Reject,
914 /* 1054 */ // Label 3: @1054
915 /* 1054 */ GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(1094), // Rule ID 24 //
916 /* 1059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
917 /* 1062 */ // MIs[0] dst
918 /* 1062 */ // No operand predicates
919 /* 1062 */ // MIs[0] zero
920 /* 1062 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
921 /* 1066 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
922 /* 1070 */ // MIs[1] Operand 1
923 /* 1070 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
924 /* 1081 */ // MIs[0] rhs
925 /* 1081 */ // No operand predicates
926 /* 1081 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
927 /* 1086 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
928 /* 1088 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
929 /* 1088 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
930 /* 1093 */ GIR_EraseRootFromParent_Done,
931 /* 1094 */ // Label 69: @1094
932 /* 1094 */ GIM_Reject,
933 /* 1095 */ // Label 4: @1095
934 /* 1095 */ GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(1135), // Rule ID 25 //
935 /* 1100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
936 /* 1103 */ // MIs[0] dst
937 /* 1103 */ // No operand predicates
938 /* 1103 */ // MIs[0] zero
939 /* 1103 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
940 /* 1107 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
941 /* 1111 */ // MIs[1] Operand 1
942 /* 1111 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
943 /* 1122 */ // MIs[0] rhs
944 /* 1122 */ // No operand predicates
945 /* 1122 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
946 /* 1127 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
947 /* 1129 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
948 /* 1129 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
949 /* 1134 */ GIR_EraseRootFromParent_Done,
950 /* 1135 */ // Label 70: @1135
951 /* 1135 */ GIM_Reject,
952 /* 1136 */ // Label 5: @1136
953 /* 1136 */ GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1176), // Rule ID 26 //
954 /* 1141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
955 /* 1144 */ // MIs[0] dst
956 /* 1144 */ // No operand predicates
957 /* 1144 */ // MIs[0] zero
958 /* 1144 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
959 /* 1148 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
960 /* 1152 */ // MIs[1] Operand 1
961 /* 1152 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
962 /* 1163 */ // MIs[0] rhs
963 /* 1163 */ // No operand predicates
964 /* 1163 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
965 /* 1168 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
966 /* 1170 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
967 /* 1170 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
968 /* 1175 */ GIR_EraseRootFromParent_Done,
969 /* 1176 */ // Label 71: @1176
970 /* 1176 */ GIM_Reject,
971 /* 1177 */ // Label 6: @1177
972 /* 1177 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1217), // Rule ID 27 //
973 /* 1182 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
974 /* 1185 */ // MIs[0] dst
975 /* 1185 */ // No operand predicates
976 /* 1185 */ // MIs[0] zero
977 /* 1185 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
978 /* 1189 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
979 /* 1193 */ // MIs[1] Operand 1
980 /* 1193 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
981 /* 1204 */ // MIs[0] rhs
982 /* 1204 */ // No operand predicates
983 /* 1204 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
984 /* 1209 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
985 /* 1211 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
986 /* 1211 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
987 /* 1216 */ GIR_EraseRootFromParent_Done,
988 /* 1217 */ // Label 72: @1217
989 /* 1217 */ GIM_Reject,
990 /* 1218 */ // Label 7: @1218
991 /* 1218 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1229), // Rule ID 4 //
992 /* 1223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
993 /* 1226 */ // Combiner Rule #2: load_and_mask; wip_match_opcode 'G_AND'
994 /* 1226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
995 /* 1229 */ // Label 73: @1229
996 /* 1229 */ GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(1240), // Rule ID 5 //
997 /* 1234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
998 /* 1237 */ // Combiner Rule #3: redundant_and; wip_match_opcode 'G_AND'
999 /* 1237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
1000 /* 1240 */ // Label 74: @1240
1001 /* 1240 */ GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(1251), // Rule ID 54 //
1002 /* 1245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1003 /* 1248 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
1004 /* 1248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1005 /* 1251 */ // Label 75: @1251
1006 /* 1251 */ GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1275), // Rule ID 17 //
1007 /* 1256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1008 /* 1259 */ // MIs[0] dst
1009 /* 1259 */ // No operand predicates
1010 /* 1259 */ // MIs[0] src
1011 /* 1259 */ // No operand predicates
1012 /* 1259 */ // MIs[0] src
1013 /* 1259 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1014 /* 1264 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1015 /* 1269 */ // Combiner Rule #6: binop_same_val @ [__binop_same_val_match_0[0]]
1016 /* 1269 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1017 /* 1274 */ GIR_EraseRootFromParent_Done,
1018 /* 1275 */ // Label 76: @1275
1019 /* 1275 */ GIM_Reject,
1020 /* 1276 */ // Label 8: @1276
1021 /* 1276 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1287), // Rule ID 55 //
1022 /* 1281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1023 /* 1284 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
1024 /* 1284 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1025 /* 1287 */ // Label 77: @1287
1026 /* 1287 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1311), // Rule ID 18 //
1027 /* 1292 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1028 /* 1295 */ // MIs[0] dst
1029 /* 1295 */ // No operand predicates
1030 /* 1295 */ // MIs[0] src
1031 /* 1295 */ // No operand predicates
1032 /* 1295 */ // MIs[0] src
1033 /* 1295 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1034 /* 1300 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1035 /* 1305 */ // Combiner Rule #6: binop_same_val @ [__binop_same_val_match_0[1]]
1036 /* 1305 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1037 /* 1310 */ GIR_EraseRootFromParent_Done,
1038 /* 1311 */ // Label 78: @1311
1039 /* 1311 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1334), // Rule ID 9 //
1040 /* 1316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1041 /* 1319 */ // MIs[0] dst
1042 /* 1319 */ // No operand predicates
1043 /* 1319 */ // MIs[0] lhs
1044 /* 1319 */ // No operand predicates
1045 /* 1319 */ // MIs[0] Operand 2
1046 /* 1319 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1047 /* 1323 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1048 /* 1328 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[2]]
1049 /* 1328 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1050 /* 1333 */ GIR_EraseRootFromParent_Done,
1051 /* 1334 */ // Label 79: @1334
1052 /* 1334 */ GIM_Reject,
1053 /* 1335 */ // Label 9: @1335
1054 /* 1335 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1346), // Rule ID 56 //
1055 /* 1340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1056 /* 1343 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
1057 /* 1343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1058 /* 1346 */ // Label 80: @1346
1059 /* 1346 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1385), // Rule ID 20 //
1060 /* 1351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1061 /* 1354 */ // MIs[0] dst
1062 /* 1354 */ // No operand predicates
1063 /* 1354 */ // MIs[0] x
1064 /* 1354 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
1065 /* 1358 */ // MIs[0] x
1066 /* 1358 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1067 /* 1363 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
1068 /* 1366 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
1069 /* 1376 */ // Combiner Rule #7: same_val_zero @ [__same_val_zero_match_0[1]]
1070 /* 1376 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
1071 /* 1379 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1072 /* 1381 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
1073 /* 1384 */ GIR_EraseRootFromParent_Done,
1074 /* 1385 */ // Label 81: @1385
1075 /* 1385 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1408), // Rule ID 10 //
1076 /* 1390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1077 /* 1393 */ // MIs[0] dst
1078 /* 1393 */ // No operand predicates
1079 /* 1393 */ // MIs[0] lhs
1080 /* 1393 */ // No operand predicates
1081 /* 1393 */ // MIs[0] Operand 2
1082 /* 1393 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1083 /* 1397 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1084 /* 1402 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[3]]
1085 /* 1402 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1086 /* 1407 */ GIR_EraseRootFromParent_Done,
1087 /* 1408 */ // Label 82: @1408
1088 /* 1408 */ GIM_Reject,
1089 /* 1409 */ // Label 10: @1409
1090 /* 1409 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1420), // Rule ID 39 //
1091 /* 1414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1092 /* 1417 */ // Combiner Rule #17: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
1093 /* 1417 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1094 /* 1420 */ // Label 83: @1420
1095 /* 1420 */ GIM_Reject,
1096 /* 1421 */ // Label 11: @1421
1097 /* 1421 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1432), // Rule ID 38 //
1098 /* 1426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1099 /* 1429 */ // Combiner Rule #17: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
1100 /* 1429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1101 /* 1432 */ // Label 84: @1432
1102 /* 1432 */ GIM_Reject,
1103 /* 1433 */ // Label 12: @1433
1104 /* 1433 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1454), // Rule ID 31 //
1105 /* 1438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1106 /* 1441 */ // MIs[0] dst
1107 /* 1441 */ // No operand predicates
1108 /* 1441 */ // MIs[0] t
1109 /* 1441 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1110 /* 1445 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1111 /* 1449 */ // MIs[1] ptr
1112 /* 1449 */ // No operand predicates
1113 /* 1449 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1114 /* 1451 */ // Combiner Rule #11: i2p_to_p2i
1115 /* 1451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1116 /* 1454 */ // Label 85: @1454
1117 /* 1454 */ GIM_Reject,
1118 /* 1455 */ // Label 13: @1455
1119 /* 1455 */ GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1466), // Rule ID 30 //
1120 /* 1460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1121 /* 1463 */ // Combiner Rule #10: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
1122 /* 1463 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
1123 /* 1466 */ // Label 86: @1466
1124 /* 1466 */ GIM_Reject,
1125 /* 1467 */ // Label 14: @1467
1126 /* 1467 */ GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1488), // Rule ID 42 //
1127 /* 1472 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
1128 /* 1475 */ // MIs[0] dst
1129 /* 1475 */ // No operand predicates
1130 /* 1475 */ // MIs[0] src1
1131 /* 1475 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1132 /* 1479 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1133 /* 1483 */ // MIs[1] src0
1134 /* 1483 */ // No operand predicates
1135 /* 1483 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1136 /* 1485 */ // Combiner Rule #20: bitcast_bitcast_fold
1137 /* 1485 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
1138 /* 1488 */ // Label 87: @1488
1139 /* 1488 */ GIM_Reject,
1140 /* 1489 */ // Label 15: @1489
1141 /* 1489 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1500), // Rule ID 1 //
1142 /* 1494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1143 /* 1497 */ // Combiner Rule #1: extending_loads; wip_match_opcode 'G_LOAD'
1144 /* 1497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1145 /* 1500 */ // Label 88: @1500
1146 /* 1500 */ GIM_Reject,
1147 /* 1501 */ // Label 16: @1501
1148 /* 1501 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1512), // Rule ID 2 //
1149 /* 1506 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1150 /* 1509 */ // Combiner Rule #1: extending_loads; wip_match_opcode 'G_SEXTLOAD'
1151 /* 1509 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1152 /* 1512 */ // Label 89: @1512
1153 /* 1512 */ GIM_Reject,
1154 /* 1513 */ // Label 17: @1513
1155 /* 1513 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1524), // Rule ID 3 //
1156 /* 1518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1157 /* 1521 */ // Combiner Rule #1: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
1158 /* 1521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1159 /* 1524 */ // Label 90: @1524
1160 /* 1524 */ GIM_Reject,
1161 /* 1525 */ // Label 18: @1525
1162 /* 1525 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1536), // Rule ID 82 //
1163 /* 1530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1164 /* 1533 */ // MIs[0] src
1165 /* 1533 */ // No operand predicates
1166 /* 1533 */ // MIs[0] addr
1167 /* 1533 */ // No operand predicates
1168 /* 1533 */ // Combiner Rule #29: fold_fp_zero_store
1169 /* 1533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
1170 /* 1536 */ // Label 91: @1536
1171 /* 1536 */ GIM_Reject,
1172 /* 1537 */ // Label 19: @1537
1173 /* 1537 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1548), // Rule ID 32 //
1174 /* 1542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1175 /* 1545 */ // Combiner Rule #12: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
1176 /* 1545 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1177 /* 1548 */ // Label 92: @1548
1178 /* 1548 */ GIM_Reject,
1179 /* 1549 */ // Label 20: @1549
1180 /* 1549 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1560), // Rule ID 40 //
1181 /* 1554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
1182 /* 1557 */ // Combiner Rule #18: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
1183 /* 1557 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
1184 /* 1560 */ // Label 93: @1560
1185 /* 1560 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1571), // Rule ID 41 //
1186 /* 1565 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1187 /* 1568 */ // Combiner Rule #19: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
1188 /* 1568 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1189 /* 1571 */ // Label 94: @1571
1190 /* 1571 */ GIM_Reject,
1191 /* 1572 */ // Label 21: @1572
1192 /* 1572 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1583), // Rule ID 47 //
1193 /* 1577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1194 /* 1580 */ // Combiner Rule #25: shift_immed_chain; wip_match_opcode 'G_SHL'
1195 /* 1580 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
1196 /* 1583 */ // Label 95: @1583
1197 /* 1583 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1623), // Rule ID 21 //
1198 /* 1588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1199 /* 1591 */ // MIs[0] dst
1200 /* 1591 */ // No operand predicates
1201 /* 1591 */ // MIs[0] zero
1202 /* 1591 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1203 /* 1595 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1204 /* 1599 */ // MIs[1] Operand 1
1205 /* 1599 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1206 /* 1610 */ // MIs[0] rhs
1207 /* 1610 */ // No operand predicates
1208 /* 1610 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1209 /* 1615 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1210 /* 1617 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
1211 /* 1617 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1212 /* 1622 */ GIR_EraseRootFromParent_Done,
1213 /* 1623 */ // Label 96: @1623
1214 /* 1623 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1646), // Rule ID 11 //
1215 /* 1628 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1216 /* 1631 */ // MIs[0] dst
1217 /* 1631 */ // No operand predicates
1218 /* 1631 */ // MIs[0] lhs
1219 /* 1631 */ // No operand predicates
1220 /* 1631 */ // MIs[0] Operand 2
1221 /* 1631 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1222 /* 1635 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1223 /* 1640 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[4]]
1224 /* 1640 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1225 /* 1645 */ GIR_EraseRootFromParent_Done,
1226 /* 1646 */ // Label 97: @1646
1227 /* 1646 */ GIM_Reject,
1228 /* 1647 */ // Label 22: @1647
1229 /* 1647 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1658), // Rule ID 49 //
1230 /* 1652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1231 /* 1655 */ // Combiner Rule #25: shift_immed_chain; wip_match_opcode 'G_LSHR'
1232 /* 1655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
1233 /* 1658 */ // Label 98: @1658
1234 /* 1658 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1698), // Rule ID 22 //
1235 /* 1663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1236 /* 1666 */ // MIs[0] dst
1237 /* 1666 */ // No operand predicates
1238 /* 1666 */ // MIs[0] zero
1239 /* 1666 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1240 /* 1670 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1241 /* 1674 */ // MIs[1] Operand 1
1242 /* 1674 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1243 /* 1685 */ // MIs[0] rhs
1244 /* 1685 */ // No operand predicates
1245 /* 1685 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1246 /* 1690 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1247 /* 1692 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
1248 /* 1692 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1249 /* 1697 */ GIR_EraseRootFromParent_Done,
1250 /* 1698 */ // Label 99: @1698
1251 /* 1698 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1721), // Rule ID 13 //
1252 /* 1703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1253 /* 1706 */ // MIs[0] dst
1254 /* 1706 */ // No operand predicates
1255 /* 1706 */ // MIs[0] lhs
1256 /* 1706 */ // No operand predicates
1257 /* 1706 */ // MIs[0] Operand 2
1258 /* 1706 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1259 /* 1710 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1260 /* 1715 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[6]]
1261 /* 1715 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1262 /* 1720 */ GIR_EraseRootFromParent_Done,
1263 /* 1721 */ // Label 100: @1721
1264 /* 1721 */ GIM_Reject,
1265 /* 1722 */ // Label 23: @1722
1266 /* 1722 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1733), // Rule ID 48 //
1267 /* 1727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1268 /* 1730 */ // Combiner Rule #25: shift_immed_chain; wip_match_opcode 'G_ASHR'
1269 /* 1730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
1270 /* 1733 */ // Label 101: @1733
1271 /* 1733 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1773), // Rule ID 23 //
1272 /* 1738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1273 /* 1741 */ // MIs[0] dst
1274 /* 1741 */ // No operand predicates
1275 /* 1741 */ // MIs[0] zero
1276 /* 1741 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1277 /* 1745 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1278 /* 1749 */ // MIs[1] Operand 1
1279 /* 1749 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1280 /* 1760 */ // MIs[0] rhs
1281 /* 1760 */ // No operand predicates
1282 /* 1760 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1283 /* 1765 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1284 /* 1767 */ // Combiner Rule #8: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
1285 /* 1767 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1286 /* 1772 */ GIR_EraseRootFromParent_Done,
1287 /* 1773 */ // Label 102: @1773
1288 /* 1773 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1796), // Rule ID 12 //
1289 /* 1778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1290 /* 1781 */ // MIs[0] dst
1291 /* 1781 */ // No operand predicates
1292 /* 1781 */ // MIs[0] lhs
1293 /* 1781 */ // No operand predicates
1294 /* 1781 */ // MIs[0] Operand 2
1295 /* 1781 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1296 /* 1785 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1297 /* 1790 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[5]]
1298 /* 1790 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1299 /* 1795 */ GIR_EraseRootFromParent_Done,
1300 /* 1796 */ // Label 103: @1796
1301 /* 1796 */ GIM_Reject,
1302 /* 1797 */ // Label 24: @1797
1303 /* 1797 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1820), // Rule ID 16 //
1304 /* 1802 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1305 /* 1805 */ // MIs[0] dst
1306 /* 1805 */ // No operand predicates
1307 /* 1805 */ // MIs[0] lhs
1308 /* 1805 */ // No operand predicates
1309 /* 1805 */ // MIs[0] Operand 2
1310 /* 1805 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1311 /* 1809 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1312 /* 1814 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[9]]
1313 /* 1814 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1314 /* 1819 */ GIR_EraseRootFromParent_Done,
1315 /* 1820 */ // Label 104: @1820
1316 /* 1820 */ GIM_Reject,
1317 /* 1821 */ // Label 25: @1821
1318 /* 1821 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1844), // Rule ID 15 //
1319 /* 1826 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1320 /* 1829 */ // MIs[0] dst
1321 /* 1829 */ // No operand predicates
1322 /* 1829 */ // MIs[0] lhs
1323 /* 1829 */ // No operand predicates
1324 /* 1829 */ // MIs[0] Operand 2
1325 /* 1829 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1326 /* 1833 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1327 /* 1838 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[8]]
1328 /* 1838 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1329 /* 1843 */ GIR_EraseRootFromParent_Done,
1330 /* 1844 */ // Label 105: @1844
1331 /* 1844 */ GIM_Reject,
1332 /* 1845 */ // Label 26: @1845
1333 /* 1845 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1856), // Rule ID 6 //
1334 /* 1850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1335 /* 1853 */ // Combiner Rule #4: select_same_val; wip_match_opcode 'G_SELECT'
1336 /* 1853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1337 /* 1856 */ // Label 106: @1856
1338 /* 1856 */ GIM_Reject,
1339 /* 1857 */ // Label 27: @1857
1340 /* 1857 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1868), // Rule ID 61 //
1341 /* 1862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1342 /* 1865 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
1343 /* 1865 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1344 /* 1868 */ // Label 107: @1868
1345 /* 1868 */ GIM_Reject,
1346 /* 1869 */ // Label 28: @1869
1347 /* 1869 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1880), // Rule ID 62 //
1348 /* 1874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1349 /* 1877 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
1350 /* 1877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1351 /* 1880 */ // Label 108: @1880
1352 /* 1880 */ GIM_Reject,
1353 /* 1881 */ // Label 29: @1881
1354 /* 1881 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1892), // Rule ID 63 //
1355 /* 1886 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1356 /* 1889 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
1357 /* 1889 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1358 /* 1892 */ // Label 109: @1892
1359 /* 1892 */ GIM_Reject,
1360 /* 1893 */ // Label 30: @1893
1361 /* 1893 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1904), // Rule ID 64 //
1362 /* 1898 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1363 /* 1901 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
1364 /* 1901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1365 /* 1904 */ // Label 110: @1904
1366 /* 1904 */ GIM_Reject,
1367 /* 1905 */ // Label 31: @1905
1368 /* 1905 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1916), // Rule ID 65 //
1369 /* 1910 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1370 /* 1913 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
1371 /* 1913 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1372 /* 1916 */ // Label 111: @1916
1373 /* 1916 */ GIM_Reject,
1374 /* 1917 */ // Label 32: @1917
1375 /* 1917 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1928), // Rule ID 66 //
1376 /* 1922 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1377 /* 1925 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
1378 /* 1925 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1379 /* 1928 */ // Label 112: @1928
1380 /* 1928 */ GIM_Reject,
1381 /* 1929 */ // Label 33: @1929
1382 /* 1929 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1940), // Rule ID 67 //
1383 /* 1934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1384 /* 1937 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
1385 /* 1937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1386 /* 1940 */ // Label 113: @1940
1387 /* 1940 */ GIM_Reject,
1388 /* 1941 */ // Label 34: @1941
1389 /* 1941 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1952), // Rule ID 68 //
1390 /* 1946 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1391 /* 1949 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
1392 /* 1949 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1393 /* 1952 */ // Label 114: @1952
1394 /* 1952 */ GIM_Reject,
1395 /* 1953 */ // Label 35: @1953
1396 /* 1953 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1964), // Rule ID 51 //
1397 /* 1958 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1398 /* 1961 */ // Combiner Rule #25: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
1399 /* 1961 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
1400 /* 1964 */ // Label 115: @1964
1401 /* 1964 */ GIM_Reject,
1402 /* 1965 */ // Label 36: @1965
1403 /* 1965 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1976), // Rule ID 50 //
1404 /* 1970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1405 /* 1973 */ // Combiner Rule #25: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
1406 /* 1973 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
1407 /* 1976 */ // Label 116: @1976
1408 /* 1976 */ GIM_Reject,
1409 /* 1977 */ // Label 37: @1977
1410 /* 1977 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1988), // Rule ID 69 //
1411 /* 1982 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1412 /* 1985 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
1413 /* 1985 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1414 /* 1988 */ // Label 117: @1988
1415 /* 1988 */ GIM_Reject,
1416 /* 1989 */ // Label 38: @1989
1417 /* 1989 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2000), // Rule ID 70 //
1418 /* 1994 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1419 /* 1997 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
1420 /* 1997 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1421 /* 2000 */ // Label 118: @2000
1422 /* 2000 */ GIM_Reject,
1423 /* 2001 */ // Label 39: @2001
1424 /* 2001 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2012), // Rule ID 71 //
1425 /* 2006 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1426 /* 2009 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
1427 /* 2009 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1428 /* 2012 */ // Label 119: @2012
1429 /* 2012 */ GIM_Reject,
1430 /* 2013 */ // Label 40: @2013
1431 /* 2013 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2024), // Rule ID 72 //
1432 /* 2018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1433 /* 2021 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
1434 /* 2021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1435 /* 2024 */ // Label 120: @2024
1436 /* 2024 */ GIM_Reject,
1437 /* 2025 */ // Label 41: @2025
1438 /* 2025 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2036), // Rule ID 73 //
1439 /* 2030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1440 /* 2033 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
1441 /* 2033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1442 /* 2036 */ // Label 121: @2036
1443 /* 2036 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2059), // Rule ID 44 //
1444 /* 2041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
1445 /* 2044 */ // MIs[0] dst
1446 /* 2044 */ // No operand predicates
1447 /* 2044 */ // MIs[0] x
1448 /* 2044 */ // No operand predicates
1449 /* 2044 */ // MIs[0] y
1450 /* 2044 */ // No operand predicates
1451 /* 2044 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1452 /* 2048 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1453 /* 2053 */ // Combiner Rule #22: right_identity_neg_zero_fp
1454 /* 2053 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1455 /* 2058 */ GIR_EraseRootFromParent_Done,
1456 /* 2059 */ // Label 122: @2059
1457 /* 2059 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2088), // Rule ID 45 //
1458 /* 2064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
1459 /* 2067 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
1460 /* 2073 */ // MIs[0] dst
1461 /* 2073 */ // No operand predicates
1462 /* 2073 */ // MIs[0] x
1463 /* 2073 */ // No operand predicates
1464 /* 2073 */ // MIs[0] y
1465 /* 2073 */ // No operand predicates
1466 /* 2073 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1467 /* 2077 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1468 /* 2082 */ // Combiner Rule #23: right_identity_neg_zero_fp_nsz
1469 /* 2082 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1470 /* 2087 */ GIR_EraseRootFromParent_Done,
1471 /* 2088 */ // Label 123: @2088
1472 /* 2088 */ GIM_Reject,
1473 /* 2089 */ // Label 42: @2089
1474 /* 2089 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(2100), // Rule ID 74 //
1475 /* 2094 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1476 /* 2097 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
1477 /* 2097 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1478 /* 2100 */ // Label 124: @2100
1479 /* 2100 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(2123), // Rule ID 35 //
1480 /* 2105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1481 /* 2108 */ // MIs[0] dst
1482 /* 2108 */ // No operand predicates
1483 /* 2108 */ // MIs[0] x
1484 /* 2108 */ // No operand predicates
1485 /* 2108 */ // MIs[0] y
1486 /* 2108 */ // No operand predicates
1487 /* 2108 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
1488 /* 2112 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1489 /* 2117 */ // Combiner Rule #15: right_identity_one_fp
1490 /* 2117 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1491 /* 2122 */ GIR_EraseRootFromParent_Done,
1492 /* 2123 */ // Label 125: @2123
1493 /* 2123 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(2143), // Rule ID 46 //
1494 /* 2128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1495 /* 2131 */ // MIs[0] dst
1496 /* 2131 */ // No operand predicates
1497 /* 2131 */ // MIs[0] x
1498 /* 2131 */ // No operand predicates
1499 /* 2131 */ // MIs[0] y
1500 /* 2131 */ // No operand predicates
1501 /* 2131 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1502 /* 2135 */ // Combiner Rule #24: right_identity_neg_one_fp
1503 /* 2135 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
1504 /* 2138 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1505 /* 2140 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
1506 /* 2142 */ GIR_EraseRootFromParent_Done,
1507 /* 2143 */ // Label 126: @2143
1508 /* 2143 */ GIM_Reject,
1509 /* 2144 */ // Label 43: @2144
1510 /* 2144 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(2173), // Rule ID 33 //
1511 /* 2149 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
1512 /* 2152 */ // MIs[0] dst
1513 /* 2152 */ // No operand predicates
1514 /* 2152 */ // MIs[0] t
1515 /* 2152 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1516 /* 2156 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
1517 /* 2160 */ // MIs[1] src
1518 /* 2160 */ // No operand predicates
1519 /* 2160 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1520 /* 2165 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1521 /* 2167 */ // Combiner Rule #13: fneg_fneg_fold
1522 /* 2167 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1523 /* 2172 */ GIR_EraseRootFromParent_Done,
1524 /* 2173 */ // Label 127: @2173
1525 /* 2173 */ GIM_Reject,
1526 /* 2174 */ // Label 44: @2174
1527 /* 2174 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(2195), // Rule ID 43 //
1528 /* 2179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
1529 /* 2182 */ // MIs[0] dst
1530 /* 2182 */ // No operand predicates
1531 /* 2182 */ // MIs[0] src1
1532 /* 2182 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1533 /* 2186 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
1534 /* 2190 */ // MIs[1] src0
1535 /* 2190 */ // No operand predicates
1536 /* 2190 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1537 /* 2192 */ // Combiner Rule #21: fptrunc_fpext_fold
1538 /* 2192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
1539 /* 2195 */ // Label 128: @2195
1540 /* 2195 */ GIM_Reject,
1541 /* 2196 */ // Label 45: @2196
1542 /* 2196 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(2207), // Rule ID 75 //
1543 /* 2201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1544 /* 2204 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
1545 /* 2204 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1546 /* 2207 */ // Label 129: @2207
1547 /* 2207 */ GIM_Reject,
1548 /* 2208 */ // Label 46: @2208
1549 /* 2208 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(2219), // Rule ID 76 //
1550 /* 2213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1551 /* 2216 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
1552 /* 2216 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1553 /* 2219 */ // Label 130: @2219
1554 /* 2219 */ GIM_Reject,
1555 /* 2220 */ // Label 47: @2220
1556 /* 2220 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(2231), // Rule ID 77 //
1557 /* 2225 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1558 /* 2228 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
1559 /* 2228 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1560 /* 2231 */ // Label 131: @2231
1561 /* 2231 */ GIM_Reject,
1562 /* 2232 */ // Label 48: @2232
1563 /* 2232 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(2243), // Rule ID 78 //
1564 /* 2237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1565 /* 2240 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
1566 /* 2240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1567 /* 2243 */ // Label 132: @2243
1568 /* 2243 */ GIM_Reject,
1569 /* 2244 */ // Label 49: @2244
1570 /* 2244 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(2255), // Rule ID 79 //
1571 /* 2249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1572 /* 2252 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
1573 /* 2252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1574 /* 2255 */ // Label 133: @2255
1575 /* 2255 */ GIM_Reject,
1576 /* 2256 */ // Label 50: @2256
1577 /* 2256 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2267), // Rule ID 80 //
1578 /* 2261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1579 /* 2264 */ // Combiner Rule #27: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
1580 /* 2264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1581 /* 2267 */ // Label 134: @2267
1582 /* 2267 */ GIM_Reject,
1583 /* 2268 */ // Label 51: @2268
1584 /* 2268 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2291), // Rule ID 14 //
1585 /* 2273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1586 /* 2276 */ // MIs[0] dst
1587 /* 2276 */ // No operand predicates
1588 /* 2276 */ // MIs[0] lhs
1589 /* 2276 */ // No operand predicates
1590 /* 2276 */ // MIs[0] Operand 2
1591 /* 2276 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1592 /* 2280 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1593 /* 2285 */ // Combiner Rule #5: right_identity_zero @ [__right_identity_zero_match_0[7]]
1594 /* 2285 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1595 /* 2290 */ GIR_EraseRootFromParent_Done,
1596 /* 2291 */ // Label 135: @2291
1597 /* 2291 */ GIM_Reject,
1598 /* 2292 */ // Label 52: @2292
1599 /* 2292 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2303), // Rule ID 57 //
1600 /* 2297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1601 /* 2300 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
1602 /* 2300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1603 /* 2303 */ // Label 136: @2303
1604 /* 2303 */ GIM_Reject,
1605 /* 2304 */ // Label 53: @2304
1606 /* 2304 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2315), // Rule ID 58 //
1607 /* 2309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1608 /* 2312 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
1609 /* 2312 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1610 /* 2315 */ // Label 137: @2315
1611 /* 2315 */ GIM_Reject,
1612 /* 2316 */ // Label 54: @2316
1613 /* 2316 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2327), // Rule ID 59 //
1614 /* 2321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1615 /* 2324 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
1616 /* 2324 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1617 /* 2327 */ // Label 138: @2327
1618 /* 2327 */ GIM_Reject,
1619 /* 2328 */ // Label 55: @2328
1620 /* 2328 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2339), // Rule ID 60 //
1621 /* 2333 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
1622 /* 2336 */ // Combiner Rule #26: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
1623 /* 2336 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1624 /* 2339 */ // Label 139: @2339
1625 /* 2339 */ GIM_Reject,
1626 /* 2340 */ // Label 56: @2340
1627 /* 2340 */ GIM_Reject,
1628 /* 2341 */ }; // Size: 2341 bytes
1629 return MatchTable0;
1630}
1631#undef GIMT_Encode2
1632#undef GIMT_Encode4
1633#undef GIMT_Encode8
1634
1635
1636#endif // GET_GICOMBINER_IMPL
1637
1638#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
1639
1640AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
1641AvailableFunctionFeatures()
1642
1643#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
1644
1645#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
1646
1647, State(0),
1648ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
1649
1650#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
1651
1652