1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* X86PostLegalizerCombinerImpl 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 X86PostLegalizerCombinerImplRuleConfig {
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 9: // 1 string to match.
42 if (memcmp(RuleIdentifier.data()+0, "copy_prop", 9) != 0)
43 break;
44 return 38; // "copy_prop"
45 case 10: // 2 strings to match.
46 switch (RuleIdentifier[0]) {
47 default: break;
48 case 'i': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
50 break;
51 return 23; // "i2p_to_p2i"
52 case 'p': // 1 string to match.
53 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
54 break;
55 return 22; // "p2i_to_i2p"
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 28; // "add_sub_reg"
62 case 12: // 1 string to match.
63 if (memcmp(RuleIdentifier.data()+0, "redundant_or", 12) != 0)
64 break;
65 return 0; // "redundant_or"
66 case 13: // 1 string to match.
67 if (memcmp(RuleIdentifier.data()+0, "same_val_zero", 13) != 0)
68 break;
69 return 19; // "same_val_zero"
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 18; // "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 25; // "fneg_fneg_fold"
81 }
82 break;
83 case 15: // 1 string to match.
84 if (memcmp(RuleIdentifier.data()+0, "select_same_val", 15) != 0)
85 break;
86 return 16; // "select_same_val"
87 case 17: // 1 string to match.
88 if (memcmp(RuleIdentifier.data()+0, "anyext_trunc_fold", 17) != 0)
89 break;
90 return 24; // "anyext_trunc_fold"
91 case 18: // 4 strings to match.
92 switch (RuleIdentifier[0]) {
93 default: break;
94 case 'b': // 1 string to match.
95 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
96 break;
97 return 20; // "binop_left_to_zero"
98 case 'c': // 2 strings to match.
99 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
100 break;
101 switch (RuleIdentifier[15]) {
102 default: break;
103 case 'a': // 1 string to match.
104 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
105 break;
106 return 2; // "constant_fold_fabs"
107 case 'n': // 1 string to match.
108 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
109 break;
110 return 1; // "constant_fold_fneg"
111 }
112 break;
113 case 'f': // 1 string to match.
114 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
115 break;
116 return 34; // "fptrunc_fpext_fold"
117 }
118 break;
119 case 19: // 7 strings to match.
120 switch (RuleIdentifier[0]) {
121 default: break;
122 case 'b': // 1 string to match.
123 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
124 break;
125 return 21; // "binop_right_to_zero"
126 case 'c': // 5 strings to match.
127 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
128 break;
129 switch (RuleIdentifier[15]) {
130 default: break;
131 case 'c': // 1 string to match.
132 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
133 break;
134 return 7; // "constant_fold_fceil"
135 case 'l': // 1 string to match.
136 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
137 break;
138 return 4; // "constant_fold_flog2"
139 case 'p': // 1 string to match.
140 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
141 break;
142 return 6; // "constant_fold_fpext"
143 case 'r': // 1 string to match.
144 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
145 break;
146 return 12; // "constant_fold_frint"
147 case 's': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
149 break;
150 return 3; // "constant_fold_fsqrt"
151 }
152 break;
153 case 'r': // 1 string to match.
154 if (memcmp(RuleIdentifier.data()+1, "ight_identity_zero", 18) != 0)
155 break;
156 return 17; // "right_identity_zero"
157 }
158 break;
159 case 20: // 2 strings to match.
160 switch (RuleIdentifier[0]) {
161 default: break;
162 case 'b': // 1 string to match.
163 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
164 break;
165 return 32; // "bitcast_bitcast_fold"
166 case 'c': // 1 string to match.
167 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
168 break;
169 return 8; // "constant_fold_ffloor"
170 }
171 break;
172 case 21: // 2 strings to match.
173 switch (RuleIdentifier[0]) {
174 default: break;
175 case 'c': // 1 string to match.
176 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fptrunc", 20) != 0)
177 break;
178 return 5; // "constant_fold_fptrunc"
179 case 'r': // 1 string to match.
180 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
181 break;
182 return 27; // "right_identity_one_fp"
183 }
184 break;
185 case 22: // 2 strings to match.
186 switch (RuleIdentifier[0]) {
187 default: break;
188 case 'r': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
190 break;
191 return 26; // "right_identity_one_int"
192 case 't': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
194 break;
195 return 30; // "trunc_buildvector_fold"
196 }
197 break;
198 case 23: // 2 strings to match.
199 if (memcmp(RuleIdentifier.data()+0, "itof_const_zero_fold_", 21) != 0)
200 break;
201 switch (RuleIdentifier[21]) {
202 default: break;
203 case 's': // 1 string to match.
204 if (RuleIdentifier[22] != 'i')
205 break;
206 return 14; // "itof_const_zero_fold_si"
207 case 'u': // 1 string to match.
208 if (RuleIdentifier[22] != 'i')
209 break;
210 return 15; // "itof_const_zero_fold_ui"
211 }
212 break;
213 case 24: // 1 string to match.
214 if (memcmp(RuleIdentifier.data()+0, "constant_fold_fnearbyint", 24) != 0)
215 break;
216 return 13; // "constant_fold_fnearbyint"
217 case 25: // 2 strings to match.
218 switch (RuleIdentifier[0]) {
219 default: break;
220 case 'b': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold", 24) != 0)
222 break;
223 return 29; // "buildvector_identity_fold"
224 case 'r': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
226 break;
227 return 37; // "right_identity_neg_one_fp"
228 }
229 break;
230 case 26: // 2 strings to match.
231 switch (RuleIdentifier[0]) {
232 default: break;
233 case 'b': // 1 string to match.
234 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_to_bitcast", 25) != 0)
235 break;
236 return 33; // "bitcast_bitcast_to_bitcast"
237 case 'r': // 1 string to match.
238 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
239 break;
240 return 35; // "right_identity_neg_zero_fp"
241 }
242 break;
243 case 27: // 1 string to match.
244 if (memcmp(RuleIdentifier.data()+0, "trunc_lshr_buildvector_fold", 27) != 0)
245 break;
246 return 31; // "trunc_lshr_buildvector_fold"
247 case 29: // 2 strings to match.
248 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_", 24) != 0)
249 break;
250 switch (RuleIdentifier[24]) {
251 default: break;
252 case 'r': // 1 string to match.
253 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
254 break;
255 return 10; // "constant_fold_intrinsic_round"
256 case 't': // 1 string to match.
257 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
258 break;
259 return 9; // "constant_fold_intrinsic_trunc"
260 }
261 break;
262 case 30: // 1 string to match.
263 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp_nsz", 30) != 0)
264 break;
265 return 36; // "right_identity_neg_zero_fp_nsz"
266 case 33: // 1 string to match.
267 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
268 break;
269 return 11; // "constant_fold_intrinsic_roundeven"
270 }
271#endif // ifndef NDEBUG
272
273 return std::nullopt;
274}
275static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
276 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
277 if (!RangePair.second.empty()) {
278 const auto First = getRuleIdxForIdentifier(RangePair.first);
279 const auto Last = getRuleIdxForIdentifier(RangePair.second);
280 if (!First || !Last)
281 return std::nullopt;
282 if (First >= Last)
283 report_fatal_error("Beginning of range should be before end of range");
284 return {{*First, *Last + 1}};
285 }
286 if (RangePair.first == "*") {
287 return {{0, 39}};
288 }
289 const auto I = getRuleIdxForIdentifier(RangePair.first);
290 if (!I)
291 return std::nullopt;
292 return {{*I, *I + 1}};
293}
294
295bool X86PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
296 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
297 if (!MaybeRange)
298 return false;
299 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
300 DisabledRules.reset(I);
301 return true;
302}
303
304bool X86PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
305 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
306 if (!MaybeRange)
307 return false;
308 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
309 DisabledRules.set(I);
310 return true;
311}
312
313static std::vector<std::string> X86PostLegalizerCombinerOption;
314static cl::list<std::string> X86PostLegalizerCombinerDisableOption(
315 "x86postlegalizercombiner-disable-rule",
316 cl::desc("Disable one or more combiner rules temporarily in the X86PostLegalizerCombiner pass"),
317 cl::CommaSeparated,
318 cl::Hidden,
319 cl::cat(GICombinerOptionCategory),
320 cl::callback([](const std::string &Str) {
321 X86PostLegalizerCombinerOption.push_back(Str);
322 }));
323static cl::list<std::string> X86PostLegalizerCombinerOnlyEnableOption(
324 "x86postlegalizercombiner-only-enable-rule",
325 cl::desc("Disable all rules in the X86PostLegalizerCombiner pass then re-enable the specified ones"),
326 cl::Hidden,
327 cl::cat(GICombinerOptionCategory),
328 cl::callback([](const std::string &CommaSeparatedArg) {
329 StringRef Str = CommaSeparatedArg;
330 X86PostLegalizerCombinerOption.push_back("*");
331 do {
332 auto X = Str.split(",");
333 X86PostLegalizerCombinerOption.push_back(("!" + X.first).str());
334 Str = X.second;
335 } while (!Str.empty());
336 }));
337
338
339bool X86PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
340 return !DisabledRules.test(RuleID);
341}
342bool X86PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
343 for (StringRef Identifier : X86PostLegalizerCombinerOption) {
344 bool Enabled = Identifier.consume_front("!");
345 if (Enabled && !setRuleEnabled(Identifier))
346 return false;
347 if (!Enabled && !setRuleDisabled(Identifier))
348 return false;
349 }
350 return true;
351}
352
353
354#endif // GET_GICOMBINER_TYPES
355
356#ifdef GET_GICOMBINER_TYPES
357
358const unsigned MAX_SUBTARGET_PREDICATES = 0;
359using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
360
361#endif // GET_GICOMBINER_TYPES
362
363#ifdef GET_GICOMBINER_CLASS_MEMBERS
364
365PredicateBitset AvailableModuleFeatures;
366mutable PredicateBitset AvailableFunctionFeatures;
367PredicateBitset getAvailableFeatures() const {
368 return AvailableModuleFeatures | AvailableFunctionFeatures;
369}
370PredicateBitset
371computeAvailableModuleFeatures(const X86Subtarget *Subtarget) const;
372PredicateBitset
373computeAvailableFunctionFeatures(const X86Subtarget *Subtarget,
374 const MachineFunction *MF) const;
375void setupGeneratedPerFunctionState(MachineFunction &MF) override;
376
377#endif // GET_GICOMBINER_CLASS_MEMBERS
378
379#ifdef GET_GICOMBINER_CLASS_MEMBERS
380
381 mutable MatcherState State;
382 typedef ComplexRendererFns(X86PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
383 typedef void(X86PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
384 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
385 static X86PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
386 static X86PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
387 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
388 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
389 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
390 const uint8_t *getMatchTable() const override;
391 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
392 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
393 bool testSimplePredicate(unsigned PredicateID) const override;
394 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
395
396#endif // GET_GICOMBINER_CLASS_MEMBERS
397
398#ifdef GET_GICOMBINER_IMPL
399
400// LLT Objects.
401enum {
402 GILLT_s1,
403};
404const static size_t NumTypeObjects = 1;
405const static LLT TypeObjects[] = {
406 LLT::scalar(1),
407};
408
409// Bits for subtarget features that participate in instruction matching.
410enum SubtargetFeatureBits : uint8_t {
411};
412
413PredicateBitset X86PostLegalizerCombinerImpl::
414computeAvailableModuleFeatures(const X86Subtarget *Subtarget) const {
415 PredicateBitset Features{};
416 return Features;
417}
418
419void X86PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
420 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const X86Subtarget *)&MF.getSubtarget(), &MF);
421}
422PredicateBitset X86PostLegalizerCombinerImpl::
423computeAvailableFunctionFeatures(const X86Subtarget *Subtarget, const MachineFunction *MF) const {
424 PredicateBitset Features{};
425 return Features;
426}
427
428// Feature bitsets.
429enum {
430 GIFBS_Invalid,
431};
432constexpr static PredicateBitset FeatureBitsets[] {
433 {}, // GIFBS_Invalid
434};
435
436// ComplexPattern predicates.
437enum {
438 GICP_Invalid,
439};
440// See constructor for table contents
441
442X86PostLegalizerCombinerImpl::ComplexMatcherMemFn
443X86PostLegalizerCombinerImpl::ComplexPredicateFns[] = {
444 nullptr, // GICP_Invalid
445};
446
447enum {
448 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
449 GICXXPred_MI_Predicate_GICombiner1,
450 GICXXPred_MI_Predicate_GICombiner2,
451 GICXXPred_MI_Predicate_GICombiner3,
452 GICXXPred_MI_Predicate_GICombiner4,
453};
454bool X86PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
455 switch (PredicateID) {
456 case GICXXPred_MI_Predicate_GICombiner0: {
457 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
458 }
459 case GICXXPred_MI_Predicate_GICombiner1: {
460 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
461 }
462 case GICXXPred_MI_Predicate_GICombiner2: {
463 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
464 }
465 case GICXXPred_MI_Predicate_GICombiner3: {
466 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
467 }
468 case GICXXPred_MI_Predicate_GICombiner4: {
469 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
470 }
471 }
472 llvm_unreachable("Unknown predicate");
473 return false;
474}
475bool X86PostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
476 llvm_unreachable("Unknown predicate");
477 return false;
478}
479bool X86PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
480 llvm_unreachable("Unknown predicate");
481 return false;
482}
483bool X86PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
484 llvm_unreachable("Unknown predicate");
485 return false;
486}
487bool X86PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
488 llvm_unreachable("Unknown predicate");
489 return false;
490}
491enum {
492 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
493 GICXXPred_Simple_IsRule1Enabled,
494 GICXXPred_Simple_IsRule2Enabled,
495 GICXXPred_Simple_IsRule3Enabled,
496 GICXXPred_Simple_IsRule4Enabled,
497 GICXXPred_Simple_IsRule5Enabled,
498 GICXXPred_Simple_IsRule6Enabled,
499 GICXXPred_Simple_IsRule7Enabled,
500 GICXXPred_Simple_IsRule8Enabled,
501 GICXXPred_Simple_IsRule9Enabled,
502 GICXXPred_Simple_IsRule10Enabled,
503 GICXXPred_Simple_IsRule11Enabled,
504 GICXXPred_Simple_IsRule12Enabled,
505 GICXXPred_Simple_IsRule13Enabled,
506 GICXXPred_Simple_IsRule14Enabled,
507 GICXXPred_Simple_IsRule15Enabled,
508 GICXXPred_Simple_IsRule16Enabled,
509 GICXXPred_Simple_IsRule17Enabled,
510 GICXXPred_Simple_IsRule18Enabled,
511 GICXXPred_Simple_IsRule19Enabled,
512 GICXXPred_Simple_IsRule20Enabled,
513 GICXXPred_Simple_IsRule21Enabled,
514 GICXXPred_Simple_IsRule22Enabled,
515 GICXXPred_Simple_IsRule23Enabled,
516 GICXXPred_Simple_IsRule24Enabled,
517 GICXXPred_Simple_IsRule25Enabled,
518 GICXXPred_Simple_IsRule26Enabled,
519 GICXXPred_Simple_IsRule27Enabled,
520 GICXXPred_Simple_IsRule28Enabled,
521 GICXXPred_Simple_IsRule29Enabled,
522 GICXXPred_Simple_IsRule30Enabled,
523 GICXXPred_Simple_IsRule31Enabled,
524 GICXXPred_Simple_IsRule32Enabled,
525 GICXXPred_Simple_IsRule33Enabled,
526 GICXXPred_Simple_IsRule34Enabled,
527 GICXXPred_Simple_IsRule35Enabled,
528 GICXXPred_Simple_IsRule36Enabled,
529 GICXXPred_Simple_IsRule37Enabled,
530 GICXXPred_Simple_IsRule38Enabled,
531};
532
533bool X86PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
534 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
535}
536// Custom renderers.
537enum {
538 GICR_Invalid,
539};
540X86PostLegalizerCombinerImpl::CustomRendererFn
541X86PostLegalizerCombinerImpl::CustomRenderers[] = {
542 nullptr, // GICR_Invalid
543};
544
545static bool X86PostLegalizerCombinerImpl_canMatchOpcode(unsigned Opc) {
546 switch (Opc) {
547 case TargetOpcode::G_ADD:
548 case TargetOpcode::G_AND:
549 case TargetOpcode::G_ASHR:
550 case TargetOpcode::G_FADD:
551 case TargetOpcode::G_FMUL:
552 case TargetOpcode::G_LSHR:
553 case TargetOpcode::G_MUL:
554 case TargetOpcode::G_OR:
555 case TargetOpcode::G_PTR_ADD:
556 case TargetOpcode::G_ROTL:
557 case TargetOpcode::G_ROTR:
558 case TargetOpcode::G_SDIV:
559 case TargetOpcode::G_SHL:
560 case TargetOpcode::G_SREM:
561 case TargetOpcode::G_SUB:
562 case TargetOpcode::G_UDIV:
563 case TargetOpcode::G_UREM:
564 case TargetOpcode::G_XOR:
565 case TargetOpcode::COPY:
566 case TargetOpcode::G_BITCAST:
567 case TargetOpcode::G_FABS:
568 case TargetOpcode::G_FCEIL:
569 case TargetOpcode::G_FFLOOR:
570 case TargetOpcode::G_FLOG2:
571 case TargetOpcode::G_FNEARBYINT:
572 case TargetOpcode::G_FNEG:
573 case TargetOpcode::G_FPEXT:
574 case TargetOpcode::G_FPTRUNC:
575 case TargetOpcode::G_FRINT:
576 case TargetOpcode::G_FSQRT:
577 case TargetOpcode::G_INTRINSIC_ROUND:
578 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
579 case TargetOpcode::G_INTRINSIC_TRUNC:
580 case TargetOpcode::G_PTRTOINT:
581 case TargetOpcode::G_SITOFP:
582 case TargetOpcode::G_UITOFP:
583 case TargetOpcode::G_ANYEXT:
584 case TargetOpcode::G_BUILD_VECTOR:
585 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
586 case TargetOpcode::G_INTTOPTR:
587 case TargetOpcode::G_SELECT:
588 case TargetOpcode::G_TRUNC:
589 return true;
590 default:
591 return false;
592 }
593}
594
595bool X86PostLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
596 if (!X86PostLegalizerCombinerImpl_canMatchOpcode(I.getOpcode()))
597 return false;
598 const PredicateBitset AvailableFeatures = getAvailableFeatures();
599 State.MIs.clear();
600 State.MIs.push_back(&I);
601 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
602 return true;
603 }
604
605 return false;
606}
607
608enum {
609 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
610 GICXXCustomAction_GICombiner1,
611 GICXXCustomAction_GICombiner2,
612 GICXXCustomAction_GICombiner3,
613 GICXXCustomAction_GICombiner4,
614 GICXXCustomAction_GICombiner5,
615 GICXXCustomAction_GICombiner6,
616 GICXXCustomAction_GICombiner7,
617 GICXXCustomAction_GICombiner8,
618 GICXXCustomAction_GICombiner9,
619 GICXXCustomAction_GICombiner10,
620 GICXXCustomAction_GICombiner11,
621};
622bool X86PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
623 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
624 switch(ApplyID) {
625 case GICXXCustomAction_GICombiner0:{
626 Register GIMatchData_matchinfo;
627 // Match Patterns
628 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
629 return false;
630 }
631 // Apply Patterns
632 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
633 return true;
634 }
635 case GICXXCustomAction_GICombiner1:{
636 // Apply Patterns
637 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
638 return true;
639 }
640 case GICXXCustomAction_GICombiner2:{
641 // Apply Patterns
642 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
643 return true;
644 }
645 case GICXXCustomAction_GICombiner3:{
646 // Match Patterns
647 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
648 return false;
649 }
650 // Apply Patterns
651 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
652 return true;
653 }
654 case GICXXCustomAction_GICombiner4:{
655 Register GIMatchData_info;
656 // Match Patterns
657 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
658 return false;
659 }
660 // Apply Patterns
661 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
662 return true;
663 }
664 case GICXXCustomAction_GICombiner5:{
665 Register GIMatchData_info;
666 // Match Patterns
667 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
668 return false;
669 }
670 // Apply Patterns
671 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
672 return true;
673 }
674 case GICXXCustomAction_GICombiner6:{
675 Register GIMatchData_matchinfo;
676 // Match Patterns
677 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
678 return false;
679 }
680 // Apply Patterns
681 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
682 return true;
683 }
684 case GICXXCustomAction_GICombiner7:{
685 Register GIMatchData_matchinfo;
686 // Match Patterns
687 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
688 return false;
689 }
690 // Apply Patterns
691 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
692 return true;
693 }
694 case GICXXCustomAction_GICombiner8:{
695 Register GIMatchData_matchinfo;
696 // Match Patterns
697 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
698 return false;
699 }
700 // Apply Patterns
701 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
702 return true;
703 }
704 case GICXXCustomAction_GICombiner9:{
705 Register GIMatchData_matchinfo;
706 // Match Patterns
707 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
708 return false;
709 }
710 // Apply Patterns
711 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
712 return true;
713 }
714 case GICXXCustomAction_GICombiner10:{
715 // Match Patterns
716 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
717 return false;
718 }
719 // Apply Patterns
720 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
721 return true;
722 }
723 case GICXXCustomAction_GICombiner11:{
724 // Match Patterns
725 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
726 return false;
727 }
728 // Apply Patterns
729 Helper.applyCombineCopy(*State.MIs[0]);
730 return true;
731 }
732 }
733 llvm_unreachable("Unknown Apply Action");
734}
735#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
736#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
737#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
738#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)
739#else
740#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
741#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
742#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)
743#endif
744const uint8_t *X86PostLegalizerCombinerImpl::getMatchTable() const {
745 constexpr static uint8_t MatchTable0[] = {
746 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(285), /*)*//*default:*//*Label 42*/ GIMT_Encode4(2523),
747 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1070), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
748 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1082),
749 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1174),
750 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1237),
751 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1324),
752 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1365),
753 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1406),
754 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1447), GIMT_Encode4(0), GIMT_Encode4(0),
755 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1488),
756 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1513),
757 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(1572), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
758 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 11*/ GIMT_Encode4(1635),
759 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 12*/ GIMT_Encode4(1647), GIMT_Encode4(0),
760 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 13*/ GIMT_Encode4(1659),
761 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 14*/ GIMT_Encode4(1681),
762 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 15*/ GIMT_Encode4(1693), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
763 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 16*/ GIMT_Encode4(1747),
764 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 17*/ GIMT_Encode4(1769), GIMT_Encode4(0), GIMT_Encode4(0),
765 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 18*/ GIMT_Encode4(1791), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
766 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 19*/ GIMT_Encode4(1813),
767 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 20*/ GIMT_Encode4(1825), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
768 /* 550 */ /*TargetOpcode::G_SHL*//*Label 21*/ GIMT_Encode4(1848),
769 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 22*/ GIMT_Encode4(1912),
770 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 23*/ GIMT_Encode4(1976), GIMT_Encode4(0), GIMT_Encode4(0),
771 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 24*/ GIMT_Encode4(2040),
772 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 25*/ GIMT_Encode4(2064), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
773 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 26*/ GIMT_Encode4(2088), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
774 /* 702 */ /*TargetOpcode::G_FADD*//*Label 27*/ GIMT_Encode4(2100), GIMT_Encode4(0),
775 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 28*/ GIMT_Encode4(2153), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
776 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 29*/ GIMT_Encode4(2197), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
777 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 30*/ GIMT_Encode4(2219),
778 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 31*/ GIMT_Encode4(2270),
779 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 32*/ GIMT_Encode4(2292), GIMT_Encode4(0), GIMT_Encode4(0),
780 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 33*/ GIMT_Encode4(2335),
781 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 34*/ GIMT_Encode4(2351), GIMT_Encode4(0), GIMT_Encode4(0),
782 /* 810 */ /*TargetOpcode::G_FABS*//*Label 35*/ GIMT_Encode4(2367), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
783 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 36*/ GIMT_Encode4(2389), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
784 /* 1006 */ /*TargetOpcode::G_FCEIL*//*Label 37*/ GIMT_Encode4(2413), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
785 /* 1054 */ /*TargetOpcode::G_FSQRT*//*Label 38*/ GIMT_Encode4(2435),
786 /* 1058 */ /*TargetOpcode::G_FFLOOR*//*Label 39*/ GIMT_Encode4(2457),
787 /* 1062 */ /*TargetOpcode::G_FRINT*//*Label 40*/ GIMT_Encode4(2479),
788 /* 1066 */ /*TargetOpcode::G_FNEARBYINT*//*Label 41*/ GIMT_Encode4(2501),
789 /* 1070 */ // Label 0: @1070
790 /* 1070 */ GIM_Try, /*On fail goto*//*Label 43*/ GIMT_Encode4(1081), // Rule ID 58 //
791 /* 1075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
792 /* 1078 */ // MIs[0] d
793 /* 1078 */ // No operand predicates
794 /* 1078 */ // MIs[0] s
795 /* 1078 */ // No operand predicates
796 /* 1078 */ // Combiner Rule #38: copy_prop
797 /* 1078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
798 /* 1081 */ // Label 43: @1081
799 /* 1081 */ GIM_Reject,
800 /* 1082 */ // Label 1: @1082
801 /* 1082 */ GIM_Try, /*On fail goto*//*Label 44*/ GIMT_Encode4(1116), // Rule ID 47 //
802 /* 1087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
803 /* 1090 */ // MIs[0] dst
804 /* 1090 */ // No operand predicates
805 /* 1090 */ // MIs[0] __add_sub_reg_match_0.tmp
806 /* 1090 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
807 /* 1094 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
808 /* 1098 */ // MIs[1] src
809 /* 1098 */ // No operand predicates
810 /* 1098 */ // MIs[1] __add_sub_reg_match_0.x
811 /* 1098 */ // No operand predicates
812 /* 1098 */ // MIs[0] __add_sub_reg_match_0.x
813 /* 1098 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
814 /* 1103 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
815 /* 1108 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
816 /* 1110 */ // Combiner Rule #28: add_sub_reg @ [__add_sub_reg_match_0[1]]
817 /* 1110 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
818 /* 1115 */ GIR_EraseRootFromParent_Done,
819 /* 1116 */ // Label 44: @1116
820 /* 1116 */ GIM_Try, /*On fail goto*//*Label 45*/ GIMT_Encode4(1150), // Rule ID 46 //
821 /* 1121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
822 /* 1124 */ // MIs[0] dst
823 /* 1124 */ // No operand predicates
824 /* 1124 */ // MIs[0] __add_sub_reg_match_0.x
825 /* 1124 */ // No operand predicates
826 /* 1124 */ // MIs[0] __add_sub_reg_match_0.tmp
827 /* 1124 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
828 /* 1128 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
829 /* 1132 */ // MIs[1] src
830 /* 1132 */ // No operand predicates
831 /* 1132 */ // MIs[1] __add_sub_reg_match_0.x
832 /* 1132 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
833 /* 1137 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
834 /* 1142 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
835 /* 1144 */ // Combiner Rule #28: add_sub_reg @ [__add_sub_reg_match_0[0]]
836 /* 1144 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
837 /* 1149 */ GIR_EraseRootFromParent_Done,
838 /* 1150 */ // Label 45: @1150
839 /* 1150 */ GIM_Try, /*On fail goto*//*Label 46*/ GIMT_Encode4(1173), // Rule ID 18 //
840 /* 1155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
841 /* 1158 */ // MIs[0] dst
842 /* 1158 */ // No operand predicates
843 /* 1158 */ // MIs[0] lhs
844 /* 1158 */ // No operand predicates
845 /* 1158 */ // MIs[0] Operand 2
846 /* 1158 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
847 /* 1162 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
848 /* 1167 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[1]]
849 /* 1167 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
850 /* 1172 */ GIR_EraseRootFromParent_Done,
851 /* 1173 */ // Label 46: @1173
852 /* 1173 */ GIM_Reject,
853 /* 1174 */ // Label 2: @1174
854 /* 1174 */ GIM_Try, /*On fail goto*//*Label 47*/ GIMT_Encode4(1213), // Rule ID 29 //
855 /* 1179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
856 /* 1182 */ // MIs[0] dst
857 /* 1182 */ // No operand predicates
858 /* 1182 */ // MIs[0] x
859 /* 1182 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
860 /* 1186 */ // MIs[0] x
861 /* 1186 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
862 /* 1191 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
863 /* 1194 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
864 /* 1204 */ // Combiner Rule #19: same_val_zero @ [__same_val_zero_match_0[0]]
865 /* 1204 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
866 /* 1207 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
867 /* 1209 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
868 /* 1212 */ GIR_EraseRootFromParent_Done,
869 /* 1213 */ // Label 47: @1213
870 /* 1213 */ GIM_Try, /*On fail goto*//*Label 48*/ GIMT_Encode4(1236), // Rule ID 17 //
871 /* 1218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
872 /* 1221 */ // MIs[0] dst
873 /* 1221 */ // No operand predicates
874 /* 1221 */ // MIs[0] lhs
875 /* 1221 */ // No operand predicates
876 /* 1221 */ // MIs[0] Operand 2
877 /* 1221 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
878 /* 1225 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
879 /* 1230 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[0]]
880 /* 1230 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
881 /* 1235 */ GIR_EraseRootFromParent_Done,
882 /* 1236 */ // Label 48: @1236
883 /* 1236 */ GIM_Reject,
884 /* 1237 */ // Label 3: @1237
885 /* 1237 */ GIM_Try, /*On fail goto*//*Label 49*/ GIMT_Encode4(1277), // Rule ID 38 //
886 /* 1242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
887 /* 1245 */ // MIs[0] dst
888 /* 1245 */ // No operand predicates
889 /* 1245 */ // MIs[0] zero
890 /* 1245 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
891 /* 1249 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
892 /* 1253 */ // MIs[1] Operand 1
893 /* 1253 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
894 /* 1264 */ // MIs[0] rhs
895 /* 1264 */ // No operand predicates
896 /* 1264 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
897 /* 1269 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
898 /* 1271 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
899 /* 1271 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
900 /* 1276 */ GIR_EraseRootFromParent_Done,
901 /* 1277 */ // Label 49: @1277
902 /* 1277 */ GIM_Try, /*On fail goto*//*Label 50*/ GIMT_Encode4(1300), // Rule ID 39 //
903 /* 1282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
904 /* 1285 */ // MIs[0] dst
905 /* 1285 */ // No operand predicates
906 /* 1285 */ // MIs[0] lhs
907 /* 1285 */ // No operand predicates
908 /* 1285 */ // MIs[0] zero
909 /* 1285 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
910 /* 1289 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
911 /* 1294 */ // Combiner Rule #21: binop_right_to_zero
912 /* 1294 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
913 /* 1299 */ GIR_EraseRootFromParent_Done,
914 /* 1300 */ // Label 50: @1300
915 /* 1300 */ GIM_Try, /*On fail goto*//*Label 51*/ GIMT_Encode4(1323), // Rule ID 44 //
916 /* 1305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
917 /* 1308 */ // MIs[0] dst
918 /* 1308 */ // No operand predicates
919 /* 1308 */ // MIs[0] x
920 /* 1308 */ // No operand predicates
921 /* 1308 */ // MIs[0] Operand 2
922 /* 1308 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
923 /* 1312 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
924 /* 1317 */ // Combiner Rule #26: right_identity_one_int
925 /* 1317 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
926 /* 1322 */ GIR_EraseRootFromParent_Done,
927 /* 1323 */ // Label 51: @1323
928 /* 1323 */ GIM_Reject,
929 /* 1324 */ // Label 4: @1324
930 /* 1324 */ GIM_Try, /*On fail goto*//*Label 52*/ GIMT_Encode4(1364), // Rule ID 34 //
931 /* 1329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
932 /* 1332 */ // MIs[0] dst
933 /* 1332 */ // No operand predicates
934 /* 1332 */ // MIs[0] zero
935 /* 1332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
936 /* 1336 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
937 /* 1340 */ // MIs[1] Operand 1
938 /* 1340 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
939 /* 1351 */ // MIs[0] rhs
940 /* 1351 */ // No operand predicates
941 /* 1351 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
942 /* 1356 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
943 /* 1358 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
944 /* 1358 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
945 /* 1363 */ GIR_EraseRootFromParent_Done,
946 /* 1364 */ // Label 52: @1364
947 /* 1364 */ GIM_Reject,
948 /* 1365 */ // Label 5: @1365
949 /* 1365 */ GIM_Try, /*On fail goto*//*Label 53*/ GIMT_Encode4(1405), // Rule ID 35 //
950 /* 1370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
951 /* 1373 */ // MIs[0] dst
952 /* 1373 */ // No operand predicates
953 /* 1373 */ // MIs[0] zero
954 /* 1373 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
955 /* 1377 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
956 /* 1381 */ // MIs[1] Operand 1
957 /* 1381 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
958 /* 1392 */ // MIs[0] rhs
959 /* 1392 */ // No operand predicates
960 /* 1392 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
961 /* 1397 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
962 /* 1399 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
963 /* 1399 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
964 /* 1404 */ GIR_EraseRootFromParent_Done,
965 /* 1405 */ // Label 53: @1405
966 /* 1405 */ GIM_Reject,
967 /* 1406 */ // Label 6: @1406
968 /* 1406 */ GIM_Try, /*On fail goto*//*Label 54*/ GIMT_Encode4(1446), // Rule ID 36 //
969 /* 1411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
970 /* 1414 */ // MIs[0] dst
971 /* 1414 */ // No operand predicates
972 /* 1414 */ // MIs[0] zero
973 /* 1414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
974 /* 1418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
975 /* 1422 */ // MIs[1] Operand 1
976 /* 1422 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
977 /* 1433 */ // MIs[0] rhs
978 /* 1433 */ // No operand predicates
979 /* 1433 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
980 /* 1438 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
981 /* 1440 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
982 /* 1440 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
983 /* 1445 */ GIR_EraseRootFromParent_Done,
984 /* 1446 */ // Label 54: @1446
985 /* 1446 */ GIM_Reject,
986 /* 1447 */ // Label 7: @1447
987 /* 1447 */ GIM_Try, /*On fail goto*//*Label 55*/ GIMT_Encode4(1487), // Rule ID 37 //
988 /* 1452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
989 /* 1455 */ // MIs[0] dst
990 /* 1455 */ // No operand predicates
991 /* 1455 */ // MIs[0] zero
992 /* 1455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
993 /* 1459 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
994 /* 1463 */ // MIs[1] Operand 1
995 /* 1463 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
996 /* 1474 */ // MIs[0] rhs
997 /* 1474 */ // No operand predicates
998 /* 1474 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
999 /* 1479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1000 /* 1481 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
1001 /* 1481 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1002 /* 1486 */ GIR_EraseRootFromParent_Done,
1003 /* 1487 */ // Label 55: @1487
1004 /* 1487 */ GIM_Reject,
1005 /* 1488 */ // Label 8: @1488
1006 /* 1488 */ GIM_Try, /*On fail goto*//*Label 56*/ GIMT_Encode4(1512), // Rule ID 27 //
1007 /* 1493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
1008 /* 1496 */ // MIs[0] dst
1009 /* 1496 */ // No operand predicates
1010 /* 1496 */ // MIs[0] src
1011 /* 1496 */ // No operand predicates
1012 /* 1496 */ // MIs[0] src
1013 /* 1496 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1014 /* 1501 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1015 /* 1506 */ // Combiner Rule #18: binop_same_val @ [__binop_same_val_match_0[0]]
1016 /* 1506 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1017 /* 1511 */ GIR_EraseRootFromParent_Done,
1018 /* 1512 */ // Label 56: @1512
1019 /* 1512 */ GIM_Reject,
1020 /* 1513 */ // Label 9: @1513
1021 /* 1513 */ GIM_Try, /*On fail goto*//*Label 57*/ GIMT_Encode4(1524), // Rule ID 0 //
1022 /* 1518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
1023 /* 1521 */ // Combiner Rule #0: redundant_or; wip_match_opcode 'G_OR'
1024 /* 1521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
1025 /* 1524 */ // Label 57: @1524
1026 /* 1524 */ GIM_Try, /*On fail goto*//*Label 58*/ GIMT_Encode4(1548), // Rule ID 28 //
1027 /* 1529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
1028 /* 1532 */ // MIs[0] dst
1029 /* 1532 */ // No operand predicates
1030 /* 1532 */ // MIs[0] src
1031 /* 1532 */ // No operand predicates
1032 /* 1532 */ // MIs[0] src
1033 /* 1532 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1034 /* 1537 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1035 /* 1542 */ // Combiner Rule #18: binop_same_val @ [__binop_same_val_match_0[1]]
1036 /* 1542 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1037 /* 1547 */ GIR_EraseRootFromParent_Done,
1038 /* 1548 */ // Label 58: @1548
1039 /* 1548 */ GIM_Try, /*On fail goto*//*Label 59*/ GIMT_Encode4(1571), // Rule ID 19 //
1040 /* 1553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1041 /* 1556 */ // MIs[0] dst
1042 /* 1556 */ // No operand predicates
1043 /* 1556 */ // MIs[0] lhs
1044 /* 1556 */ // No operand predicates
1045 /* 1556 */ // MIs[0] Operand 2
1046 /* 1556 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1047 /* 1560 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1048 /* 1565 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[2]]
1049 /* 1565 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1050 /* 1570 */ GIR_EraseRootFromParent_Done,
1051 /* 1571 */ // Label 59: @1571
1052 /* 1571 */ GIM_Reject,
1053 /* 1572 */ // Label 10: @1572
1054 /* 1572 */ GIM_Try, /*On fail goto*//*Label 60*/ GIMT_Encode4(1611), // Rule ID 30 //
1055 /* 1577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1056 /* 1580 */ // MIs[0] dst
1057 /* 1580 */ // No operand predicates
1058 /* 1580 */ // MIs[0] x
1059 /* 1580 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
1060 /* 1584 */ // MIs[0] x
1061 /* 1584 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1062 /* 1589 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
1063 /* 1592 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
1064 /* 1602 */ // Combiner Rule #19: same_val_zero @ [__same_val_zero_match_0[1]]
1065 /* 1602 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
1066 /* 1605 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1067 /* 1607 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
1068 /* 1610 */ GIR_EraseRootFromParent_Done,
1069 /* 1611 */ // Label 60: @1611
1070 /* 1611 */ GIM_Try, /*On fail goto*//*Label 61*/ GIMT_Encode4(1634), // Rule ID 20 //
1071 /* 1616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1072 /* 1619 */ // MIs[0] dst
1073 /* 1619 */ // No operand predicates
1074 /* 1619 */ // MIs[0] lhs
1075 /* 1619 */ // No operand predicates
1076 /* 1619 */ // MIs[0] Operand 2
1077 /* 1619 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1078 /* 1623 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1079 /* 1628 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[3]]
1080 /* 1628 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1081 /* 1633 */ GIR_EraseRootFromParent_Done,
1082 /* 1634 */ // Label 61: @1634
1083 /* 1634 */ GIM_Reject,
1084 /* 1635 */ // Label 11: @1635
1085 /* 1635 */ GIM_Try, /*On fail goto*//*Label 62*/ GIMT_Encode4(1646), // Rule ID 49 //
1086 /* 1640 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1087 /* 1643 */ // Combiner Rule #29: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
1088 /* 1643 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1089 /* 1646 */ // Label 62: @1646
1090 /* 1646 */ GIM_Reject,
1091 /* 1647 */ // Label 12: @1647
1092 /* 1647 */ GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(1658), // Rule ID 48 //
1093 /* 1652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
1094 /* 1655 */ // Combiner Rule #29: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
1095 /* 1655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1096 /* 1658 */ // Label 63: @1658
1097 /* 1658 */ GIM_Reject,
1098 /* 1659 */ // Label 13: @1659
1099 /* 1659 */ GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(1680), // Rule ID 41 //
1100 /* 1664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
1101 /* 1667 */ // MIs[0] dst
1102 /* 1667 */ // No operand predicates
1103 /* 1667 */ // MIs[0] t
1104 /* 1667 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1105 /* 1671 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1106 /* 1675 */ // MIs[1] ptr
1107 /* 1675 */ // No operand predicates
1108 /* 1675 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1109 /* 1677 */ // Combiner Rule #23: i2p_to_p2i
1110 /* 1677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
1111 /* 1680 */ // Label 64: @1680
1112 /* 1680 */ GIM_Reject,
1113 /* 1681 */ // Label 14: @1681
1114 /* 1681 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1692), // Rule ID 40 //
1115 /* 1686 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
1116 /* 1689 */ // Combiner Rule #22: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
1117 /* 1689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1118 /* 1692 */ // Label 65: @1692
1119 /* 1692 */ GIM_Reject,
1120 /* 1693 */ // Label 15: @1693
1121 /* 1693 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1725), // Rule ID 53 //
1122 /* 1698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
1123 /* 1701 */ // MIs[0] dst
1124 /* 1701 */ // No operand predicates
1125 /* 1701 */ // MIs[0] src1
1126 /* 1701 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1127 /* 1705 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1128 /* 1709 */ // MIs[1] src0
1129 /* 1709 */ // No operand predicates
1130 /* 1709 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1131 /* 1713 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1132 /* 1715 */ // Combiner Rule #33: bitcast_bitcast_to_bitcast
1133 /* 1715 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
1134 /* 1718 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1135 /* 1720 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
1136 /* 1724 */ GIR_EraseRootFromParent_Done,
1137 /* 1725 */ // Label 66: @1725
1138 /* 1725 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1746), // Rule ID 52 //
1139 /* 1730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
1140 /* 1733 */ // MIs[0] dst
1141 /* 1733 */ // No operand predicates
1142 /* 1733 */ // MIs[0] src1
1143 /* 1733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1144 /* 1737 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1145 /* 1741 */ // MIs[1] src0
1146 /* 1741 */ // No operand predicates
1147 /* 1741 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1148 /* 1743 */ // Combiner Rule #32: bitcast_bitcast_fold
1149 /* 1743 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1150 /* 1746 */ // Label 67: @1746
1151 /* 1746 */ GIM_Reject,
1152 /* 1747 */ // Label 16: @1747
1153 /* 1747 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1768), // Rule ID 9 //
1154 /* 1752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1155 /* 1755 */ // MIs[0] dst
1156 /* 1755 */ // No operand predicates
1157 /* 1755 */ // MIs[0] src0
1158 /* 1755 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1159 /* 1759 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1160 /* 1763 */ // MIs[1] cst
1161 /* 1763 */ // No operand predicates
1162 /* 1763 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1163 /* 1765 */ // Combiner Rule #9: constant_fold_intrinsic_trunc
1164 /* 1765 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1165 /* 1768 */ // Label 68: @1768
1166 /* 1768 */ GIM_Reject,
1167 /* 1769 */ // Label 17: @1769
1168 /* 1769 */ GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(1790), // Rule ID 10 //
1169 /* 1774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1170 /* 1777 */ // MIs[0] dst
1171 /* 1777 */ // No operand predicates
1172 /* 1777 */ // MIs[0] src0
1173 /* 1777 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1174 /* 1781 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1175 /* 1785 */ // MIs[1] cst
1176 /* 1785 */ // No operand predicates
1177 /* 1785 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1178 /* 1787 */ // Combiner Rule #10: constant_fold_intrinsic_round
1179 /* 1787 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1180 /* 1790 */ // Label 69: @1790
1181 /* 1790 */ GIM_Reject,
1182 /* 1791 */ // Label 18: @1791
1183 /* 1791 */ GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(1812), // Rule ID 11 //
1184 /* 1796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1185 /* 1799 */ // MIs[0] dst
1186 /* 1799 */ // No operand predicates
1187 /* 1799 */ // MIs[0] src0
1188 /* 1799 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1189 /* 1803 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1190 /* 1807 */ // MIs[1] cst
1191 /* 1807 */ // No operand predicates
1192 /* 1807 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1193 /* 1809 */ // Combiner Rule #11: constant_fold_intrinsic_roundeven
1194 /* 1809 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1195 /* 1812 */ // Label 70: @1812
1196 /* 1812 */ GIM_Reject,
1197 /* 1813 */ // Label 19: @1813
1198 /* 1813 */ GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1824), // Rule ID 42 //
1199 /* 1818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
1200 /* 1821 */ // Combiner Rule #24: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
1201 /* 1821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1202 /* 1824 */ // Label 71: @1824
1203 /* 1824 */ GIM_Reject,
1204 /* 1825 */ // Label 20: @1825
1205 /* 1825 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1836), // Rule ID 50 //
1206 /* 1830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1207 /* 1833 */ // Combiner Rule #30: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
1208 /* 1833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
1209 /* 1836 */ // Label 72: @1836
1210 /* 1836 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1847), // Rule ID 51 //
1211 /* 1841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
1212 /* 1844 */ // Combiner Rule #31: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
1213 /* 1844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
1214 /* 1847 */ // Label 73: @1847
1215 /* 1847 */ GIM_Reject,
1216 /* 1848 */ // Label 21: @1848
1217 /* 1848 */ GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(1888), // Rule ID 31 //
1218 /* 1853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
1219 /* 1856 */ // MIs[0] dst
1220 /* 1856 */ // No operand predicates
1221 /* 1856 */ // MIs[0] zero
1222 /* 1856 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1223 /* 1860 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1224 /* 1864 */ // MIs[1] Operand 1
1225 /* 1864 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1226 /* 1875 */ // MIs[0] rhs
1227 /* 1875 */ // No operand predicates
1228 /* 1875 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1229 /* 1880 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1230 /* 1882 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
1231 /* 1882 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1232 /* 1887 */ GIR_EraseRootFromParent_Done,
1233 /* 1888 */ // Label 74: @1888
1234 /* 1888 */ GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(1911), // Rule ID 21 //
1235 /* 1893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1236 /* 1896 */ // MIs[0] dst
1237 /* 1896 */ // No operand predicates
1238 /* 1896 */ // MIs[0] lhs
1239 /* 1896 */ // No operand predicates
1240 /* 1896 */ // MIs[0] Operand 2
1241 /* 1896 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1242 /* 1900 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1243 /* 1905 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[4]]
1244 /* 1905 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1245 /* 1910 */ GIR_EraseRootFromParent_Done,
1246 /* 1911 */ // Label 75: @1911
1247 /* 1911 */ GIM_Reject,
1248 /* 1912 */ // Label 22: @1912
1249 /* 1912 */ GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1952), // Rule ID 32 //
1250 /* 1917 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
1251 /* 1920 */ // MIs[0] dst
1252 /* 1920 */ // No operand predicates
1253 /* 1920 */ // MIs[0] zero
1254 /* 1920 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1255 /* 1924 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1256 /* 1928 */ // MIs[1] Operand 1
1257 /* 1928 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1258 /* 1939 */ // MIs[0] rhs
1259 /* 1939 */ // No operand predicates
1260 /* 1939 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1261 /* 1944 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1262 /* 1946 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
1263 /* 1946 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1264 /* 1951 */ GIR_EraseRootFromParent_Done,
1265 /* 1952 */ // Label 76: @1952
1266 /* 1952 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1975), // Rule ID 23 //
1267 /* 1957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1268 /* 1960 */ // MIs[0] dst
1269 /* 1960 */ // No operand predicates
1270 /* 1960 */ // MIs[0] lhs
1271 /* 1960 */ // No operand predicates
1272 /* 1960 */ // MIs[0] Operand 2
1273 /* 1960 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1274 /* 1964 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1275 /* 1969 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[6]]
1276 /* 1969 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1277 /* 1974 */ GIR_EraseRootFromParent_Done,
1278 /* 1975 */ // Label 77: @1975
1279 /* 1975 */ GIM_Reject,
1280 /* 1976 */ // Label 23: @1976
1281 /* 1976 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(2016), // Rule ID 33 //
1282 /* 1981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
1283 /* 1984 */ // MIs[0] dst
1284 /* 1984 */ // No operand predicates
1285 /* 1984 */ // MIs[0] zero
1286 /* 1984 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1287 /* 1988 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1288 /* 1992 */ // MIs[1] Operand 1
1289 /* 1992 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1290 /* 2003 */ // MIs[0] rhs
1291 /* 2003 */ // No operand predicates
1292 /* 2003 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1293 /* 2008 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1294 /* 2010 */ // Combiner Rule #20: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
1295 /* 2010 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1296 /* 2015 */ GIR_EraseRootFromParent_Done,
1297 /* 2016 */ // Label 78: @2016
1298 /* 2016 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(2039), // Rule ID 22 //
1299 /* 2021 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1300 /* 2024 */ // MIs[0] dst
1301 /* 2024 */ // No operand predicates
1302 /* 2024 */ // MIs[0] lhs
1303 /* 2024 */ // No operand predicates
1304 /* 2024 */ // MIs[0] Operand 2
1305 /* 2024 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1306 /* 2028 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1307 /* 2033 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[5]]
1308 /* 2033 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1309 /* 2038 */ GIR_EraseRootFromParent_Done,
1310 /* 2039 */ // Label 79: @2039
1311 /* 2039 */ GIM_Reject,
1312 /* 2040 */ // Label 24: @2040
1313 /* 2040 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(2063), // Rule ID 26 //
1314 /* 2045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1315 /* 2048 */ // MIs[0] dst
1316 /* 2048 */ // No operand predicates
1317 /* 2048 */ // MIs[0] lhs
1318 /* 2048 */ // No operand predicates
1319 /* 2048 */ // MIs[0] Operand 2
1320 /* 2048 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1321 /* 2052 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1322 /* 2057 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[9]]
1323 /* 2057 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1324 /* 2062 */ GIR_EraseRootFromParent_Done,
1325 /* 2063 */ // Label 80: @2063
1326 /* 2063 */ GIM_Reject,
1327 /* 2064 */ // Label 25: @2064
1328 /* 2064 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(2087), // Rule ID 25 //
1329 /* 2069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1330 /* 2072 */ // MIs[0] dst
1331 /* 2072 */ // No operand predicates
1332 /* 2072 */ // MIs[0] lhs
1333 /* 2072 */ // No operand predicates
1334 /* 2072 */ // MIs[0] Operand 2
1335 /* 2072 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1336 /* 2076 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1337 /* 2081 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[8]]
1338 /* 2081 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1339 /* 2086 */ GIR_EraseRootFromParent_Done,
1340 /* 2087 */ // Label 81: @2087
1341 /* 2087 */ GIM_Reject,
1342 /* 2088 */ // Label 26: @2088
1343 /* 2088 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(2099), // Rule ID 16 //
1344 /* 2093 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
1345 /* 2096 */ // Combiner Rule #16: select_same_val; wip_match_opcode 'G_SELECT'
1346 /* 2096 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
1347 /* 2099 */ // Label 82: @2099
1348 /* 2099 */ GIM_Reject,
1349 /* 2100 */ // Label 27: @2100
1350 /* 2100 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(2123), // Rule ID 55 //
1351 /* 2105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
1352 /* 2108 */ // MIs[0] dst
1353 /* 2108 */ // No operand predicates
1354 /* 2108 */ // MIs[0] x
1355 /* 2108 */ // No operand predicates
1356 /* 2108 */ // MIs[0] y
1357 /* 2108 */ // No operand predicates
1358 /* 2108 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1359 /* 2112 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1360 /* 2117 */ // Combiner Rule #35: right_identity_neg_zero_fp
1361 /* 2117 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1362 /* 2122 */ GIR_EraseRootFromParent_Done,
1363 /* 2123 */ // Label 83: @2123
1364 /* 2123 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(2152), // Rule ID 56 //
1365 /* 2128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
1366 /* 2131 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
1367 /* 2137 */ // MIs[0] dst
1368 /* 2137 */ // No operand predicates
1369 /* 2137 */ // MIs[0] x
1370 /* 2137 */ // No operand predicates
1371 /* 2137 */ // MIs[0] y
1372 /* 2137 */ // No operand predicates
1373 /* 2137 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1374 /* 2141 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1375 /* 2146 */ // Combiner Rule #36: right_identity_neg_zero_fp_nsz
1376 /* 2146 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1377 /* 2151 */ GIR_EraseRootFromParent_Done,
1378 /* 2152 */ // Label 84: @2152
1379 /* 2152 */ GIM_Reject,
1380 /* 2153 */ // Label 28: @2153
1381 /* 2153 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(2176), // Rule ID 45 //
1382 /* 2158 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
1383 /* 2161 */ // MIs[0] dst
1384 /* 2161 */ // No operand predicates
1385 /* 2161 */ // MIs[0] x
1386 /* 2161 */ // No operand predicates
1387 /* 2161 */ // MIs[0] y
1388 /* 2161 */ // No operand predicates
1389 /* 2161 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
1390 /* 2165 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1391 /* 2170 */ // Combiner Rule #27: right_identity_one_fp
1392 /* 2170 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1393 /* 2175 */ GIR_EraseRootFromParent_Done,
1394 /* 2176 */ // Label 85: @2176
1395 /* 2176 */ GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(2196), // Rule ID 57 //
1396 /* 2181 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
1397 /* 2184 */ // MIs[0] dst
1398 /* 2184 */ // No operand predicates
1399 /* 2184 */ // MIs[0] x
1400 /* 2184 */ // No operand predicates
1401 /* 2184 */ // MIs[0] y
1402 /* 2184 */ // No operand predicates
1403 /* 2184 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
1404 /* 2188 */ // Combiner Rule #37: right_identity_neg_one_fp
1405 /* 2188 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
1406 /* 2191 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1407 /* 2193 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
1408 /* 2195 */ GIR_EraseRootFromParent_Done,
1409 /* 2196 */ // Label 86: @2196
1410 /* 2196 */ GIM_Reject,
1411 /* 2197 */ // Label 29: @2197
1412 /* 2197 */ GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(2218), // Rule ID 4 //
1413 /* 2202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1414 /* 2205 */ // MIs[0] dst
1415 /* 2205 */ // No operand predicates
1416 /* 2205 */ // MIs[0] src0
1417 /* 2205 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1418 /* 2209 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1419 /* 2213 */ // MIs[1] cst
1420 /* 2213 */ // No operand predicates
1421 /* 2213 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1422 /* 2215 */ // Combiner Rule #4: constant_fold_flog2
1423 /* 2215 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1424 /* 2218 */ // Label 87: @2218
1425 /* 2218 */ GIM_Reject,
1426 /* 2219 */ // Label 30: @2219
1427 /* 2219 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(2240), // Rule ID 1 //
1428 /* 2224 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1429 /* 2227 */ // MIs[0] dst
1430 /* 2227 */ // No operand predicates
1431 /* 2227 */ // MIs[0] src0
1432 /* 2227 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1433 /* 2231 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1434 /* 2235 */ // MIs[1] cst
1435 /* 2235 */ // No operand predicates
1436 /* 2235 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1437 /* 2237 */ // Combiner Rule #1: constant_fold_fneg
1438 /* 2237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1439 /* 2240 */ // Label 88: @2240
1440 /* 2240 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(2269), // Rule ID 43 //
1441 /* 2245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
1442 /* 2248 */ // MIs[0] dst
1443 /* 2248 */ // No operand predicates
1444 /* 2248 */ // MIs[0] t
1445 /* 2248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1446 /* 2252 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
1447 /* 2256 */ // MIs[1] src
1448 /* 2256 */ // No operand predicates
1449 /* 2256 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1450 /* 2261 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1451 /* 2263 */ // Combiner Rule #25: fneg_fneg_fold
1452 /* 2263 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1453 /* 2268 */ GIR_EraseRootFromParent_Done,
1454 /* 2269 */ // Label 89: @2269
1455 /* 2269 */ GIM_Reject,
1456 /* 2270 */ // Label 31: @2270
1457 /* 2270 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(2291), // Rule ID 6 //
1458 /* 2275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1459 /* 2278 */ // MIs[0] dst
1460 /* 2278 */ // No operand predicates
1461 /* 2278 */ // MIs[0] src0
1462 /* 2278 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1463 /* 2282 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1464 /* 2286 */ // MIs[1] cst
1465 /* 2286 */ // No operand predicates
1466 /* 2286 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1467 /* 2288 */ // Combiner Rule #6: constant_fold_fpext
1468 /* 2288 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1469 /* 2291 */ // Label 90: @2291
1470 /* 2291 */ GIM_Reject,
1471 /* 2292 */ // Label 32: @2292
1472 /* 2292 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(2313), // Rule ID 5 //
1473 /* 2297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1474 /* 2300 */ // MIs[0] dst
1475 /* 2300 */ // No operand predicates
1476 /* 2300 */ // MIs[0] src0
1477 /* 2300 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1478 /* 2304 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1479 /* 2308 */ // MIs[1] cst
1480 /* 2308 */ // No operand predicates
1481 /* 2308 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1482 /* 2310 */ // Combiner Rule #5: constant_fold_fptrunc
1483 /* 2310 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1484 /* 2313 */ // Label 91: @2313
1485 /* 2313 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(2334), // Rule ID 54 //
1486 /* 2318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
1487 /* 2321 */ // MIs[0] dst
1488 /* 2321 */ // No operand predicates
1489 /* 2321 */ // MIs[0] src1
1490 /* 2321 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1491 /* 2325 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
1492 /* 2329 */ // MIs[1] src0
1493 /* 2329 */ // No operand predicates
1494 /* 2329 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1495 /* 2331 */ // Combiner Rule #34: fptrunc_fpext_fold
1496 /* 2331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1497 /* 2334 */ // Label 92: @2334
1498 /* 2334 */ GIM_Reject,
1499 /* 2335 */ // Label 33: @2335
1500 /* 2335 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(2350), // Rule ID 14 //
1501 /* 2340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
1502 /* 2343 */ // MIs[0] dst
1503 /* 2343 */ // No operand predicates
1504 /* 2343 */ // MIs[0] Operand 1
1505 /* 2343 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
1506 /* 2347 */ // Combiner Rule #14: itof_const_zero_fold_si
1507 /* 2347 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
1508 /* 2350 */ // Label 93: @2350
1509 /* 2350 */ GIM_Reject,
1510 /* 2351 */ // Label 34: @2351
1511 /* 2351 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(2366), // Rule ID 15 //
1512 /* 2356 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1513 /* 2359 */ // MIs[0] dst
1514 /* 2359 */ // No operand predicates
1515 /* 2359 */ // MIs[0] Operand 1
1516 /* 2359 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
1517 /* 2363 */ // Combiner Rule #15: itof_const_zero_fold_ui
1518 /* 2363 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
1519 /* 2366 */ // Label 94: @2366
1520 /* 2366 */ GIM_Reject,
1521 /* 2367 */ // Label 35: @2367
1522 /* 2367 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(2388), // Rule ID 2 //
1523 /* 2372 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
1524 /* 2375 */ // MIs[0] dst
1525 /* 2375 */ // No operand predicates
1526 /* 2375 */ // MIs[0] src0
1527 /* 2375 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1528 /* 2379 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1529 /* 2383 */ // MIs[1] cst
1530 /* 2383 */ // No operand predicates
1531 /* 2383 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1532 /* 2385 */ // Combiner Rule #2: constant_fold_fabs
1533 /* 2385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1534 /* 2388 */ // Label 95: @2388
1535 /* 2388 */ GIM_Reject,
1536 /* 2389 */ // Label 36: @2389
1537 /* 2389 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(2412), // Rule ID 24 //
1538 /* 2394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1539 /* 2397 */ // MIs[0] dst
1540 /* 2397 */ // No operand predicates
1541 /* 2397 */ // MIs[0] lhs
1542 /* 2397 */ // No operand predicates
1543 /* 2397 */ // MIs[0] Operand 2
1544 /* 2397 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1545 /* 2401 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1546 /* 2406 */ // Combiner Rule #17: right_identity_zero @ [__right_identity_zero_match_0[7]]
1547 /* 2406 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1548 /* 2411 */ GIR_EraseRootFromParent_Done,
1549 /* 2412 */ // Label 96: @2412
1550 /* 2412 */ GIM_Reject,
1551 /* 2413 */ // Label 37: @2413
1552 /* 2413 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(2434), // Rule ID 7 //
1553 /* 2418 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1554 /* 2421 */ // MIs[0] dst
1555 /* 2421 */ // No operand predicates
1556 /* 2421 */ // MIs[0] src0
1557 /* 2421 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1558 /* 2425 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1559 /* 2429 */ // MIs[1] cst
1560 /* 2429 */ // No operand predicates
1561 /* 2429 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1562 /* 2431 */ // Combiner Rule #7: constant_fold_fceil
1563 /* 2431 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1564 /* 2434 */ // Label 97: @2434
1565 /* 2434 */ GIM_Reject,
1566 /* 2435 */ // Label 38: @2435
1567 /* 2435 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(2456), // Rule ID 3 //
1568 /* 2440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1569 /* 2443 */ // MIs[0] dst
1570 /* 2443 */ // No operand predicates
1571 /* 2443 */ // MIs[0] src0
1572 /* 2443 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1573 /* 2447 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1574 /* 2451 */ // MIs[1] cst
1575 /* 2451 */ // No operand predicates
1576 /* 2451 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1577 /* 2453 */ // Combiner Rule #3: constant_fold_fsqrt
1578 /* 2453 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1579 /* 2456 */ // Label 98: @2456
1580 /* 2456 */ GIM_Reject,
1581 /* 2457 */ // Label 39: @2457
1582 /* 2457 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(2478), // Rule ID 8 //
1583 /* 2462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
1584 /* 2465 */ // MIs[0] dst
1585 /* 2465 */ // No operand predicates
1586 /* 2465 */ // MIs[0] src0
1587 /* 2465 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1588 /* 2469 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1589 /* 2473 */ // MIs[1] cst
1590 /* 2473 */ // No operand predicates
1591 /* 2473 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1592 /* 2475 */ // Combiner Rule #8: constant_fold_ffloor
1593 /* 2475 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1594 /* 2478 */ // Label 99: @2478
1595 /* 2478 */ GIM_Reject,
1596 /* 2479 */ // Label 40: @2479
1597 /* 2479 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(2500), // Rule ID 12 //
1598 /* 2484 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1599 /* 2487 */ // MIs[0] dst
1600 /* 2487 */ // No operand predicates
1601 /* 2487 */ // MIs[0] src0
1602 /* 2487 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1603 /* 2491 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1604 /* 2495 */ // MIs[1] cst
1605 /* 2495 */ // No operand predicates
1606 /* 2495 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1607 /* 2497 */ // Combiner Rule #12: constant_fold_frint
1608 /* 2497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1609 /* 2500 */ // Label 100: @2500
1610 /* 2500 */ GIM_Reject,
1611 /* 2501 */ // Label 41: @2501
1612 /* 2501 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(2522), // Rule ID 13 //
1613 /* 2506 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
1614 /* 2509 */ // MIs[0] dst
1615 /* 2509 */ // No operand predicates
1616 /* 2509 */ // MIs[0] src0
1617 /* 2509 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1618 /* 2513 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1619 /* 2517 */ // MIs[1] cst
1620 /* 2517 */ // No operand predicates
1621 /* 2517 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1622 /* 2519 */ // Combiner Rule #13: constant_fold_fnearbyint
1623 /* 2519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1624 /* 2522 */ // Label 101: @2522
1625 /* 2522 */ GIM_Reject,
1626 /* 2523 */ // Label 42: @2523
1627 /* 2523 */ GIM_Reject,
1628 /* 2524 */ }; // Size: 2524 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