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