1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* X86PreLegalizerCombinerImpl 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 X86PreLegalizerCombinerImplRuleConfig {
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 9: // 3 strings to match.
37 switch (RuleIdentifier[0]) {
38 default: break;
39 case 'c': // 1 string to match.
40 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
41 break;
42 return 56; // "copy_prop"
43 case 'm': // 2 strings to match.
44 if (memcmp(RuleIdentifier.data()+1, "ulo_by_", 7) != 0)
45 break;
46 switch (RuleIdentifier[8]) {
47 default: break;
48 case '0': // 1 string to match.
49 return 40; // "mulo_by_0"
50 case '2': // 1 string to match.
51 return 39; // "mulo_by_2"
52 }
53 break;
54 }
55 break;
56 case 10: // 4 strings to match.
57 switch (RuleIdentifier[0]) {
58 default: break;
59 case 'i': // 1 string to match.
60 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
61 break;
62 return 6; // "i2p_to_p2i"
63 case 'm': // 1 string to match.
64 if (memcmp(RuleIdentifier.data()+1, "ul_to_shl", 9) != 0)
65 break;
66 return 57; // "mul_to_shl"
67 case 'p': // 1 string to match.
68 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
69 break;
70 return 5; // "p2i_to_i2p"
71 case 's': // 1 string to match.
72 if (memcmp(RuleIdentifier.data()+1, "ub_to_add", 9) != 0)
73 break;
74 return 58; // "sub_to_add"
75 }
76 break;
77 case 11: // 1 string to match.
78 if (memcmp(RuleIdentifier.data()+0, "add_sub_reg", 11) != 0)
79 break;
80 return 11; // "add_sub_reg"
81 case 12: // 1 string to match.
82 if (memcmp(RuleIdentifier.data()+0, "adde_to_addo", 12) != 0)
83 break;
84 return 41; // "adde_to_addo"
85 case 14: // 4 strings to match.
86 switch (RuleIdentifier[0]) {
87 default: break;
88 case 'b': // 1 string to match.
89 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
90 break;
91 return 2; // "binop_same_val"
92 case 'f': // 1 string to match.
93 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
94 break;
95 return 8; // "fneg_fneg_fold"
96 case 'm': // 1 string to match.
97 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
98 break;
99 return 60; // "mul_by_neg_one"
100 case 'r': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
102 break;
103 return 20; // "reassoc_ptradd"
104 }
105 break;
106 case 15: // 3 strings to match.
107 switch (RuleIdentifier[0]) {
108 default: break;
109 case 'i': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
111 break;
112 return 61; // "idempotent_prop"
113 case 'o': // 1 string to match.
114 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
115 break;
116 return 38; // "overlapping_and"
117 case 's': // 1 string to match.
118 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
119 break;
120 return 0; // "select_same_val"
121 }
122 break;
123 case 16: // 1 string to match.
124 if (memcmp(RuleIdentifier.data()+0, "undef_to_fp_zero", 16) != 0)
125 break;
126 return 44; // "undef_to_fp_zero"
127 case 17: // 4 strings to match.
128 switch (RuleIdentifier[0]) {
129 default: break;
130 case 'a': // 2 strings to match.
131 switch (RuleIdentifier[1]) {
132 default: break;
133 case 'd': // 1 string to match.
134 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
135 break;
136 return 59; // "add_p2i_to_ptradd"
137 case 'n': // 1 string to match.
138 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
139 break;
140 return 7; // "anyext_trunc_fold"
141 }
142 break;
143 case 'e': // 1 string to match.
144 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
145 break;
146 return 54; // "erase_undef_store"
147 case 'u': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0)
149 break;
150 return 45; // "undef_to_int_zero"
151 }
152 break;
153 case 18: // 6 strings to match.
154 switch (RuleIdentifier[0]) {
155 default: break;
156 case 'b': // 1 string to match.
157 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
158 break;
159 return 3; // "binop_left_to_zero"
160 case 'c': // 3 strings to match.
161 if (RuleIdentifier[1] != 'o')
162 break;
163 switch (RuleIdentifier[2]) {
164 default: break;
165 case 'm': // 1 string to match.
166 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
167 break;
168 return 42; // "combine_minmax_nan"
169 case 'n': // 2 strings to match.
170 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
171 break;
172 switch (RuleIdentifier[15]) {
173 default: break;
174 case 'a': // 1 string to match.
175 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
176 break;
177 return 23; // "constant_fold_fabs"
178 case 'n': // 1 string to match.
179 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
180 break;
181 return 22; // "constant_fold_fneg"
182 }
183 break;
184 }
185 break;
186 case 'e': // 1 string to match.
187 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
188 break;
189 return 43; // "expand_const_fpowi"
190 case 'f': // 1 string to match.
191 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
192 break;
193 return 16; // "fptrunc_fpext_fold"
194 }
195 break;
196 case 19: // 11 strings to match.
197 switch (RuleIdentifier[0]) {
198 default: break;
199 case 'b': // 1 string to match.
200 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
201 break;
202 return 4; // "binop_right_to_zero"
203 case 'c': // 6 strings to match.
204 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
205 break;
206 switch (RuleIdentifier[5]) {
207 default: break;
208 case '_': // 1 string to match.
209 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
210 break;
211 return 37; // "const_ptradd_to_i2p"
212 case 'a': // 5 strings to match.
213 if (memcmp(RuleIdentifier.data()+6, "nt_fold_f", 9) != 0)
214 break;
215 switch (RuleIdentifier[15]) {
216 default: break;
217 case 'c': // 1 string to match.
218 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
219 break;
220 return 28; // "constant_fold_fceil"
221 case 'l': // 1 string to match.
222 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
223 break;
224 return 25; // "constant_fold_flog2"
225 case 'p': // 1 string to match.
226 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
227 break;
228 return 27; // "constant_fold_fpext"
229 case 'r': // 1 string to match.
230 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
231 break;
232 return 33; // "constant_fold_frint"
233 case 's': // 1 string to match.
234 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
235 break;
236 return 24; // "constant_fold_fsqrt"
237 }
238 break;
239 }
240 break;
241 case 'r': // 2 strings to match.
242 switch (RuleIdentifier[1]) {
243 default: break;
244 case 'e': // 1 string to match.
245 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
246 break;
247 return 21; // "reassoc_comm_binops"
248 case 'i': // 1 string to match.
249 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
250 break;
251 return 1; // "right_identity_zero"
252 }
253 break;
254 case 's': // 1 string to match.
255 if (memcmp(RuleIdentifier.data()+1, "implify_add_to_sub", 18) != 0)
256 break;
257 return 62; // "simplify_add_to_sub"
258 case 'u': // 1 string to match.
259 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
260 break;
261 return 49; // "unary_undef_to_zero"
262 }
263 break;
264 case 20: // 3 strings to match.
265 switch (RuleIdentifier[0]) {
266 default: break;
267 case 'b': // 1 string to match.
268 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
269 break;
270 return 15; // "bitcast_bitcast_fold"
271 case 'c': // 1 string to match.
272 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
273 break;
274 return 29; // "constant_fold_ffloor"
275 case 'u': // 1 string to match.
276 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_undef", 19) != 0)
277 break;
278 return 50; // "unary_undef_to_undef"
279 }
280 break;
281 case 21: // 3 strings to match.
282 switch (RuleIdentifier[0]) {
283 default: break;
284 case 'c': // 1 string to match.
285 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fptrunc", 20) != 0)
286 break;
287 return 26; // "constant_fold_fptrunc"
288 case 'r': // 1 string to match.
289 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
290 break;
291 return 10; // "right_identity_one_fp"
292 case 'u': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+1, "ndef_to_negative_one", 20) != 0)
294 break;
295 return 46; // "undef_to_negative_one"
296 }
297 break;
298 case 22: // 3 strings to match.
299 switch (RuleIdentifier[0]) {
300 default: break;
301 case 'p': // 1 string to match.
302 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
303 break;
304 return 51; // "propagate_undef_any_op"
305 case 'r': // 1 string to match.
306 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
307 break;
308 return 9; // "right_identity_one_int"
309 case 't': // 1 string to match.
310 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
311 break;
312 return 13; // "trunc_buildvector_fold"
313 }
314 break;
315 case 23: // 3 strings to match.
316 switch (RuleIdentifier[0]) {
317 default: break;
318 case 'i': // 2 strings to match.
319 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
320 break;
321 switch (RuleIdentifier[21]) {
322 default: break;
323 case 's': // 1 string to match.
324 if (RuleIdentifier[22] != 'i')
325 break;
326 return 35; // "itof_const_zero_fold_si"
327 case 'u': // 1 string to match.
328 if (RuleIdentifier[22] != 'i')
329 break;
330 return 36; // "itof_const_zero_fold_ui"
331 }
332 break;
333 case 'p': // 1 string to match.
334 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
335 break;
336 return 52; // "propagate_undef_all_ops"
337 }
338 break;
339 case 24: // 2 strings to match.
340 switch (RuleIdentifier[0]) {
341 default: break;
342 case 'b': // 1 string to match.
343 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
344 break;
345 return 47; // "binop_left_undef_to_zero"
346 case 'c': // 1 string to match.
347 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
348 break;
349 return 34; // "constant_fold_fnearbyint"
350 }
351 break;
352 case 25: // 2 strings to match.
353 switch (RuleIdentifier[0]) {
354 default: break;
355 case 'b': // 1 string to match.
356 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold", 24) != 0)
357 break;
358 return 12; // "buildvector_identity_fold"
359 case 'r': // 1 string to match.
360 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
361 break;
362 return 19; // "right_identity_neg_one_fp"
363 }
364 break;
365 case 26: // 2 strings to match.
366 switch (RuleIdentifier[0]) {
367 default: break;
368 case 'b': // 1 string to match.
369 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
370 break;
371 return 48; // "binop_right_undef_to_undef"
372 case 'r': // 1 string to match.
373 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
374 break;
375 return 17; // "right_identity_neg_zero_fp"
376 }
377 break;
378 case 27: // 1 string to match.
379 if (memcmp(RuleIdentifier.data()+0, "trunc_lshr_buildvector_fold", 27) != 0)
380 break;
381 return 14; // "trunc_lshr_buildvector_fold"
382 case 28: // 1 string to match.
383 if (memcmp(RuleIdentifier.data()+0, "propagate_undef_shuffle_mask", 28) != 0)
384 break;
385 return 53; // "propagate_undef_shuffle_mask"
386 case 29: // 2 strings to match.
387 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_", 24) != 0)
388 break;
389 switch (RuleIdentifier[24]) {
390 default: break;
391 case 'r': // 1 string to match.
392 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
393 break;
394 return 31; // "constant_fold_intrinsic_round"
395 case 't': // 1 string to match.
396 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
397 break;
398 return 30; // "constant_fold_intrinsic_trunc"
399 }
400 break;
401 case 30: // 1 string to match.
402 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp_nsz", 30) != 0)
403 break;
404 return 18; // "right_identity_neg_zero_fp_nsz"
405 case 33: // 1 string to match.
406 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
407 break;
408 return 32; // "constant_fold_intrinsic_roundeven"
409 case 36: // 1 string to match.
410 if (memcmp(RuleIdentifier.data()+0, "insert_extract_vec_elt_out_of_bounds", 36) != 0)
411 break;
412 return 55; // "insert_extract_vec_elt_out_of_bounds"
413 }
414#endif // ifndef NDEBUG
415
416 return std::nullopt;
417}
418static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
419 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
420 if (!RangePair.second.empty()) {
421 const auto First = getRuleIdxForIdentifier(RangePair.first);
422 const auto Last = getRuleIdxForIdentifier(RangePair.second);
423 if (!First || !Last)
424 return std::nullopt;
425 if (First >= Last)
426 report_fatal_error("Beginning of range should be before end of range");
427 return {{*First, *Last + 1}};
428 }
429 if (RangePair.first == "*") {
430 return {{0, 63}};
431 }
432 const auto I = getRuleIdxForIdentifier(RangePair.first);
433 if (!I)
434 return std::nullopt;
435 return {{*I, *I + 1}};
436}
437
438bool X86PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
439 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
440 if (!MaybeRange)
441 return false;
442 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
443 DisabledRules.reset(I);
444 return true;
445}
446
447bool X86PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
448 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
449 if (!MaybeRange)
450 return false;
451 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
452 DisabledRules.set(I);
453 return true;
454}
455
456static std::vector<std::string> X86PreLegalizerCombinerOption;
457static cl::list<std::string> X86PreLegalizerCombinerDisableOption(
458 "x86prelegalizercombiner-disable-rule",
459 cl::desc("Disable one or more combiner rules temporarily in the X86PreLegalizerCombiner pass"),
460 cl::CommaSeparated,
461 cl::Hidden,
462 cl::cat(GICombinerOptionCategory),
463 cl::callback([](const std::string &Str) {
464 X86PreLegalizerCombinerOption.push_back(Str);
465 }));
466static cl::list<std::string> X86PreLegalizerCombinerOnlyEnableOption(
467 "x86prelegalizercombiner-only-enable-rule",
468 cl::desc("Disable all rules in the X86PreLegalizerCombiner pass then re-enable the specified ones"),
469 cl::Hidden,
470 cl::cat(GICombinerOptionCategory),
471 cl::callback([](const std::string &CommaSeparatedArg) {
472 StringRef Str = CommaSeparatedArg;
473 X86PreLegalizerCombinerOption.push_back("*");
474 do {
475 auto X = Str.split(",");
476 X86PreLegalizerCombinerOption.push_back(("!" + X.first).str());
477 Str = X.second;
478 } while (!Str.empty());
479 }));
480
481
482bool X86PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
483 return !DisabledRules.test(RuleID);
484}
485bool X86PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
486 for (StringRef Identifier : X86PreLegalizerCombinerOption) {
487 bool Enabled = Identifier.consume_front("!");
488 if (Enabled && !setRuleEnabled(Identifier))
489 return false;
490 if (!Enabled && !setRuleDisabled(Identifier))
491 return false;
492 }
493 return true;
494}
495
496#endif // ifdef GET_GICOMBINER_TYPES
497
498#ifdef GET_GICOMBINER_TYPES
499const unsigned MAX_SUBTARGET_PREDICATES = 0;
500using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
501#endif // ifdef GET_GICOMBINER_TYPES
502
503#ifdef GET_GICOMBINER_CLASS_MEMBERS
504PredicateBitset AvailableModuleFeatures;
505mutable PredicateBitset AvailableFunctionFeatures;
506PredicateBitset getAvailableFeatures() const {
507 return AvailableModuleFeatures | AvailableFunctionFeatures;
508}
509PredicateBitset
510computeAvailableModuleFeatures(const X86Subtarget *Subtarget) const;
511PredicateBitset
512computeAvailableFunctionFeatures(const X86Subtarget *Subtarget,
513 const MachineFunction *MF) const;
514void setupGeneratedPerFunctionState(MachineFunction &MF) override;
515#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
516#ifdef GET_GICOMBINER_CLASS_MEMBERS
517 mutable MatcherState State;
518 typedef ComplexRendererFns(X86PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
519 typedef void(X86PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
520 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
521 static X86PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
522 static X86PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
523 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
524 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
525 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
526 const uint8_t *getMatchTable() const override;
527 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
528 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
529 bool testSimplePredicate(unsigned PredicateID) const override;
530 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
531#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
532
533#ifdef GET_GICOMBINER_IMPL
534// LLT Objects.
535enum {
536 GILLT_s1,
537};
538const static size_t NumTypeObjects = 1;
539const static LLT TypeObjects[] = {
540 LLT::scalar(1),
541};
542
543// Bits for subtarget features that participate in instruction matching.
544enum SubtargetFeatureBits : uint8_t {
545};
546
547PredicateBitset X86PreLegalizerCombinerImpl::
548computeAvailableModuleFeatures(const X86Subtarget *Subtarget) const {
549 PredicateBitset Features{};
550 return Features;
551}
552
553void X86PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
554 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const X86Subtarget *)&MF.getSubtarget(), &MF);
555}
556PredicateBitset X86PreLegalizerCombinerImpl::
557computeAvailableFunctionFeatures(const X86Subtarget *Subtarget, const MachineFunction *MF) const {
558 PredicateBitset Features{};
559 return Features;
560}
561
562// Feature bitsets.
563enum {
564 GIFBS_Invalid,
565};
566constexpr static PredicateBitset FeatureBitsets[] {
567 {}, // GIFBS_Invalid
568};
569
570// ComplexPattern predicates.
571enum {
572 GICP_Invalid,
573};
574// See constructor for table contents
575
576X86PreLegalizerCombinerImpl::ComplexMatcherMemFn
577X86PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
578 nullptr, // GICP_Invalid
579};
580
581enum {
582 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
583 GICXXPred_MI_Predicate_GICombiner1,
584 GICXXPred_MI_Predicate_GICombiner2,
585 GICXXPred_MI_Predicate_GICombiner3,
586};
587bool X86PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
588 switch (PredicateID) {
589 case GICXXPred_MI_Predicate_GICombiner0: {
590 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
591 }
592 case GICXXPred_MI_Predicate_GICombiner1: {
593 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
594 }
595 case GICXXPred_MI_Predicate_GICombiner2: {
596 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
597 }
598 case GICXXPred_MI_Predicate_GICombiner3: {
599 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
600 }
601 }
602 llvm_unreachable("Unknown predicate");
603 return false;
604}
605bool X86PreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
606 llvm_unreachable("Unknown predicate");
607 return false;
608}
609bool X86PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
610 llvm_unreachable("Unknown predicate");
611 return false;
612}
613bool X86PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
614 llvm_unreachable("Unknown predicate");
615 return false;
616}
617bool X86PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
618 llvm_unreachable("Unknown predicate");
619 return false;
620}
621enum {
622 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
623 GICXXPred_Simple_IsRule1Enabled,
624 GICXXPred_Simple_IsRule2Enabled,
625 GICXXPred_Simple_IsRule3Enabled,
626 GICXXPred_Simple_IsRule4Enabled,
627 GICXXPred_Simple_IsRule5Enabled,
628 GICXXPred_Simple_IsRule6Enabled,
629 GICXXPred_Simple_IsRule7Enabled,
630 GICXXPred_Simple_IsRule8Enabled,
631 GICXXPred_Simple_IsRule9Enabled,
632 GICXXPred_Simple_IsRule10Enabled,
633 GICXXPred_Simple_IsRule11Enabled,
634 GICXXPred_Simple_IsRule12Enabled,
635 GICXXPred_Simple_IsRule13Enabled,
636 GICXXPred_Simple_IsRule14Enabled,
637 GICXXPred_Simple_IsRule15Enabled,
638 GICXXPred_Simple_IsRule16Enabled,
639 GICXXPred_Simple_IsRule17Enabled,
640 GICXXPred_Simple_IsRule18Enabled,
641 GICXXPred_Simple_IsRule19Enabled,
642 GICXXPred_Simple_IsRule20Enabled,
643 GICXXPred_Simple_IsRule21Enabled,
644 GICXXPred_Simple_IsRule22Enabled,
645 GICXXPred_Simple_IsRule23Enabled,
646 GICXXPred_Simple_IsRule24Enabled,
647 GICXXPred_Simple_IsRule25Enabled,
648 GICXXPred_Simple_IsRule26Enabled,
649 GICXXPred_Simple_IsRule27Enabled,
650 GICXXPred_Simple_IsRule28Enabled,
651 GICXXPred_Simple_IsRule29Enabled,
652 GICXXPred_Simple_IsRule30Enabled,
653 GICXXPred_Simple_IsRule31Enabled,
654 GICXXPred_Simple_IsRule32Enabled,
655 GICXXPred_Simple_IsRule33Enabled,
656 GICXXPred_Simple_IsRule34Enabled,
657 GICXXPred_Simple_IsRule35Enabled,
658 GICXXPred_Simple_IsRule36Enabled,
659 GICXXPred_Simple_IsRule37Enabled,
660 GICXXPred_Simple_IsRule38Enabled,
661 GICXXPred_Simple_IsRule39Enabled,
662 GICXXPred_Simple_IsRule40Enabled,
663 GICXXPred_Simple_IsRule41Enabled,
664 GICXXPred_Simple_IsRule42Enabled,
665 GICXXPred_Simple_IsRule43Enabled,
666 GICXXPred_Simple_IsRule44Enabled,
667 GICXXPred_Simple_IsRule45Enabled,
668 GICXXPred_Simple_IsRule46Enabled,
669 GICXXPred_Simple_IsRule47Enabled,
670 GICXXPred_Simple_IsRule48Enabled,
671 GICXXPred_Simple_IsRule49Enabled,
672 GICXXPred_Simple_IsRule50Enabled,
673 GICXXPred_Simple_IsRule51Enabled,
674 GICXXPred_Simple_IsRule52Enabled,
675 GICXXPred_Simple_IsRule53Enabled,
676 GICXXPred_Simple_IsRule54Enabled,
677 GICXXPred_Simple_IsRule55Enabled,
678 GICXXPred_Simple_IsRule56Enabled,
679 GICXXPred_Simple_IsRule57Enabled,
680 GICXXPred_Simple_IsRule58Enabled,
681 GICXXPred_Simple_IsRule59Enabled,
682 GICXXPred_Simple_IsRule60Enabled,
683 GICXXPred_Simple_IsRule61Enabled,
684 GICXXPred_Simple_IsRule62Enabled,
685};
686
687bool X86PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
688 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
689}
690// Custom renderers.
691enum {
692 GICR_Invalid,
693};
694X86PreLegalizerCombinerImpl::CustomRendererFn
695X86PreLegalizerCombinerImpl::CustomRenderers[] = {
696 nullptr, // GICR_Invalid
697};
698
699bool X86PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
700 const TargetSubtargetInfo &ST = MF.getSubtarget();
701 const PredicateBitset AvailableFeatures = getAvailableFeatures();
702 B.setInstrAndDebugLoc(I);
703 State.MIs.clear();
704 State.MIs.push_back(&I);
705 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
706 return true;
707 }
708
709 return false;
710}
711
712enum {
713 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
714 GICXXCustomAction_GICombiner1,
715 GICXXCustomAction_GICombiner2,
716 GICXXCustomAction_GICombiner3,
717 GICXXCustomAction_GICombiner4,
718 GICXXCustomAction_GICombiner5,
719 GICXXCustomAction_GICombiner6,
720 GICXXCustomAction_GICombiner7,
721 GICXXCustomAction_GICombiner8,
722 GICXXCustomAction_GICombiner9,
723 GICXXCustomAction_GICombiner10,
724 GICXXCustomAction_GICombiner11,
725 GICXXCustomAction_GICombiner12,
726 GICXXCustomAction_GICombiner13,
727 GICXXCustomAction_GICombiner14,
728 GICXXCustomAction_GICombiner15,
729 GICXXCustomAction_GICombiner16,
730 GICXXCustomAction_GICombiner17,
731 GICXXCustomAction_GICombiner18,
732 GICXXCustomAction_GICombiner19,
733 GICXXCustomAction_GICombiner20,
734 GICXXCustomAction_GICombiner21,
735 GICXXCustomAction_GICombiner22,
736 GICXXCustomAction_GICombiner23,
737 GICXXCustomAction_GICombiner24,
738 GICXXCustomAction_GICombiner25,
739 GICXXCustomAction_GICombiner26,
740 GICXXCustomAction_GICombiner27,
741 GICXXCustomAction_GICombiner28,
742 GICXXCustomAction_GICombiner29,
743 GICXXCustomAction_GICombiner30,
744 GICXXCustomAction_GICombiner31,
745 GICXXCustomAction_GICombiner32,
746 GICXXCustomAction_GICombiner33,
747 GICXXCustomAction_GICombiner34,
748};
749bool X86PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
750 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
751 switch(ApplyID) {
752 case GICXXCustomAction_GICombiner0:{
753 // Match Patterns
754 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
755 return false;
756 }
757 // Apply Patterns
758 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
759 return true;
760 }
761 case GICXXCustomAction_GICombiner1:{
762 Register GIMatchData_info;
763 // Match Patterns
764 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
765 return false;
766 }
767 // Apply Patterns
768 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
769 return true;
770 }
771 case GICXXCustomAction_GICombiner2:{
772 Register GIMatchData_info;
773 // Match Patterns
774 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
775 return false;
776 }
777 // Apply Patterns
778 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
779 return true;
780 }
781 case GICXXCustomAction_GICombiner3:{
782 Register GIMatchData_matchinfo;
783 // Match Patterns
784 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
785 return false;
786 }
787 // Apply Patterns
788 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
789 return true;
790 }
791 case GICXXCustomAction_GICombiner4:{
792 Register GIMatchData_matchinfo;
793 // Match Patterns
794 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
795 return false;
796 }
797 // Apply Patterns
798 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
799 return true;
800 }
801 case GICXXCustomAction_GICombiner5:{
802 Register GIMatchData_matchinfo;
803 // Match Patterns
804 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
805 return false;
806 }
807 // Apply Patterns
808 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
809 return true;
810 }
811 case GICXXCustomAction_GICombiner6:{
812 Register GIMatchData_matchinfo;
813 // Match Patterns
814 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
815 return false;
816 }
817 // Apply Patterns
818 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
819 return true;
820 }
821 case GICXXCustomAction_GICombiner7:{
822 // Match Patterns
823 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
824 return false;
825 }
826 // Apply Patterns
827 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
828 return true;
829 }
830 case GICXXCustomAction_GICombiner8:{
831 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
832 // Match Patterns
833 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
834 return false;
835 }
836 // Apply Patterns
837 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
838 return true;
839 }
840 case GICXXCustomAction_GICombiner9:{
841 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
842 // Match Patterns
843 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
844 return false;
845 }
846 // Apply Patterns
847 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
848 return true;
849 }
850 case GICXXCustomAction_GICombiner10:{
851 // Apply Patterns
852 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
853 return true;
854 }
855 case GICXXCustomAction_GICombiner11:{
856 // Apply Patterns
857 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
858 return true;
859 }
860 case GICXXCustomAction_GICombiner12:{
861 APInt GIMatchData_info;
862 // Match Patterns
863 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
864 return false;
865 }
866 // Apply Patterns
867 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
868 return true;
869 }
870 case GICXXCustomAction_GICombiner13:{
871 std::function<void(MachineIRBuilder &)> GIMatchData_info;
872 // Match Patterns
873 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
874 return false;
875 }
876 // Apply Patterns
877 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
878 return true;
879 }
880 case GICXXCustomAction_GICombiner14:{
881 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
882 // Match Patterns
883 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
884 return false;
885 }
886 // Apply Patterns
887 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
888 return true;
889 }
890 case GICXXCustomAction_GICombiner15:{
891 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
892 // Match Patterns
893 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
894 return false;
895 }
896 // Apply Patterns
897 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
898 return true;
899 }
900 case GICXXCustomAction_GICombiner16:{
901 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
902 // Match Patterns
903 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
904 return false;
905 }
906 // Apply Patterns
907 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
908 return true;
909 }
910 case GICXXCustomAction_GICombiner17:{
911 unsigned GIMatchData_info;
912 // Match Patterns
913 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
914 return false;
915 }
916 // Apply Patterns
917 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
918 return true;
919 }
920 case GICXXCustomAction_GICombiner18:{
921 // Match Patterns
922 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
923 return false;
924 }
925 // Apply Patterns
926 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
927 return true;
928 }
929 case GICXXCustomAction_GICombiner19:{
930 // Match Patterns
931 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
932 return false;
933 }
934 // Apply Patterns
935 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
936 return true;
937 }
938 case GICXXCustomAction_GICombiner20:{
939 // Match Patterns
940 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
941 return false;
942 }
943 // Apply Patterns
944 Helper.replaceInstWithConstant(*State.MIs[0], 0);
945 return true;
946 }
947 case GICXXCustomAction_GICombiner21:{
948 // Match Patterns
949 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
950 return false;
951 }
952 // Apply Patterns
953 Helper.replaceInstWithConstant(*State.MIs[0], -1);
954 return true;
955 }
956 case GICXXCustomAction_GICombiner22:{
957 // Match Patterns
958 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
959 return false;
960 }
961 // Apply Patterns
962 Helper.replaceInstWithConstant(*State.MIs[0], 0);
963 return true;
964 }
965 case GICXXCustomAction_GICombiner23:{
966 // Match Patterns
967 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
968 return false;
969 }
970 // Apply Patterns
971 Helper.replaceInstWithUndef(*State.MIs[0]);
972 return true;
973 }
974 case GICXXCustomAction_GICombiner24:{
975 // Apply Patterns
976 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
977 return true;
978 }
979 case GICXXCustomAction_GICombiner25:{
980 // Match Patterns
981 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
982 return false;
983 }
984 // Apply Patterns
985 Helper.replaceInstWithUndef(*State.MIs[0]);
986 return true;
987 }
988 case GICXXCustomAction_GICombiner26:{
989 // Match Patterns
990 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
991 return false;
992 }
993 // Apply Patterns
994 Helper.replaceInstWithUndef(*State.MIs[0]);
995 return true;
996 }
997 case GICXXCustomAction_GICombiner27:{
998 // Match Patterns
999 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
1000 return false;
1001 }
1002 // Apply Patterns
1003 Helper.replaceInstWithUndef(*State.MIs[0]);
1004 return true;
1005 }
1006 case GICXXCustomAction_GICombiner28:{
1007 // Match Patterns
1008 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
1009 return false;
1010 }
1011 // Apply Patterns
1012 Helper.eraseInst(*State.MIs[0]);
1013 return true;
1014 }
1015 case GICXXCustomAction_GICombiner29:{
1016 // Match Patterns
1017 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
1018 return false;
1019 }
1020 // Apply Patterns
1021 Helper.replaceInstWithUndef(*State.MIs[0]);
1022 return true;
1023 }
1024 case GICXXCustomAction_GICombiner30:{
1025 // Match Patterns
1026 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
1027 return false;
1028 }
1029 // Apply Patterns
1030 Helper.applyCombineCopy(*State.MIs[0]);
1031 return true;
1032 }
1033 case GICXXCustomAction_GICombiner31:{
1034 unsigned GIMatchData_matchinfo;
1035 // Match Patterns
1036 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
1037 return false;
1038 }
1039 // Apply Patterns
1040 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
1041 return true;
1042 }
1043 case GICXXCustomAction_GICombiner32:{
1044 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1045 // Match Patterns
1046 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
1047 return false;
1048 }
1049 // Apply Patterns
1050 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
1051 return true;
1052 }
1053 case GICXXCustomAction_GICombiner33:{
1054 std::pair<Register, bool> GIMatchData_info;
1055 // Match Patterns
1056 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
1057 return false;
1058 }
1059 // Apply Patterns
1060 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
1061 return true;
1062 }
1063 case GICXXCustomAction_GICombiner34:{
1064 std::tuple<Register, Register> GIMatchData_info;
1065 // Match Patterns
1066 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
1067 return false;
1068 }
1069 // Apply Patterns
1070 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
1071 return true;
1072 }
1073 }
1074 llvm_unreachable("Unknown Apply Action");
1075}
1076#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
1077#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
1078#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
1079#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)
1080#else
1081#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
1082#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
1083#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)
1084#endif
1085const uint8_t *X86PreLegalizerCombinerImpl::getMatchTable() const {
1086 constexpr static uint8_t MatchTable0[] = {
1087 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(280), /*)*//*default:*//*Label 62*/ GIMT_Encode4(3158),
1088 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1050), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1089 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1062),
1090 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1198),
1091 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1254),
1092 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1403),
1093 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1444),
1094 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1496),
1095 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1537), GIMT_Encode4(0), GIMT_Encode4(0),
1096 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1589),
1097 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1636),
1098 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(1695), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1099 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 11*/ GIMT_Encode4(1730),
1100 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 12*/ GIMT_Encode4(1753), GIMT_Encode4(0),
1101 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 13*/ GIMT_Encode4(1765),
1102 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 14*/ GIMT_Encode4(1808),
1103 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 15*/ GIMT_Encode4(1841),
1104 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 16*/ GIMT_Encode4(1884), GIMT_Encode4(0), GIMT_Encode4(0),
1105 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 17*/ GIMT_Encode4(1914),
1106 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 18*/ GIMT_Encode4(1936), GIMT_Encode4(0), GIMT_Encode4(0),
1107 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 19*/ GIMT_Encode4(1958), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1108 /* 350 */ /*TargetOpcode::G_STORE*//*Label 20*/ GIMT_Encode4(1980), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1109 /* 486 */ /*TargetOpcode::G_ANYEXT*//*Label 21*/ GIMT_Encode4(1992),
1110 /* 490 */ /*TargetOpcode::G_TRUNC*//*Label 22*/ GIMT_Encode4(2025), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1111 /* 534 */ /*TargetOpcode::G_SHL*//*Label 23*/ GIMT_Encode4(2069),
1112 /* 538 */ /*TargetOpcode::G_LSHR*//*Label 24*/ GIMT_Encode4(2155),
1113 /* 542 */ /*TargetOpcode::G_ASHR*//*Label 25*/ GIMT_Encode4(2230), GIMT_Encode4(0), GIMT_Encode4(0),
1114 /* 554 */ /*TargetOpcode::G_ROTR*//*Label 26*/ GIMT_Encode4(2305),
1115 /* 558 */ /*TargetOpcode::G_ROTL*//*Label 27*/ GIMT_Encode4(2329), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1116 /* 578 */ /*TargetOpcode::G_SELECT*//*Label 28*/ GIMT_Encode4(2353), GIMT_Encode4(0),
1117 /* 586 */ /*TargetOpcode::G_UADDE*//*Label 29*/ GIMT_Encode4(2365), GIMT_Encode4(0),
1118 /* 594 */ /*TargetOpcode::G_USUBE*//*Label 30*/ GIMT_Encode4(2377), GIMT_Encode4(0),
1119 /* 602 */ /*TargetOpcode::G_SADDE*//*Label 31*/ GIMT_Encode4(2389), GIMT_Encode4(0),
1120 /* 610 */ /*TargetOpcode::G_SSUBE*//*Label 32*/ GIMT_Encode4(2401),
1121 /* 614 */ /*TargetOpcode::G_UMULO*//*Label 33*/ GIMT_Encode4(2413),
1122 /* 618 */ /*TargetOpcode::G_SMULO*//*Label 34*/ GIMT_Encode4(2436), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1123 /* 686 */ /*TargetOpcode::G_FADD*//*Label 35*/ GIMT_Encode4(2459), GIMT_Encode4(0),
1124 /* 694 */ /*TargetOpcode::G_FMUL*//*Label 36*/ GIMT_Encode4(2512), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1125 /* 722 */ /*TargetOpcode::G_FPOWI*//*Label 37*/ GIMT_Encode4(2556), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1126 /* 742 */ /*TargetOpcode::G_FLOG2*//*Label 38*/ GIMT_Encode4(2578), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1127 /* 758 */ /*TargetOpcode::G_FNEG*//*Label 39*/ GIMT_Encode4(2600),
1128 /* 762 */ /*TargetOpcode::G_FPEXT*//*Label 40*/ GIMT_Encode4(2651),
1129 /* 766 */ /*TargetOpcode::G_FPTRUNC*//*Label 41*/ GIMT_Encode4(2673),
1130 /* 770 */ /*TargetOpcode::G_FPTOSI*//*Label 42*/ GIMT_Encode4(2716),
1131 /* 774 */ /*TargetOpcode::G_FPTOUI*//*Label 43*/ GIMT_Encode4(2738),
1132 /* 778 */ /*TargetOpcode::G_SITOFP*//*Label 44*/ GIMT_Encode4(2760),
1133 /* 782 */ /*TargetOpcode::G_UITOFP*//*Label 45*/ GIMT_Encode4(2787), GIMT_Encode4(0), GIMT_Encode4(0),
1134 /* 794 */ /*TargetOpcode::G_FABS*//*Label 46*/ GIMT_Encode4(2814), GIMT_Encode4(0), GIMT_Encode4(0),
1135 /* 806 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 47*/ GIMT_Encode4(2865),
1136 /* 810 */ /*TargetOpcode::G_FMINNUM*//*Label 48*/ GIMT_Encode4(2895),
1137 /* 814 */ /*TargetOpcode::G_FMAXNUM*//*Label 49*/ GIMT_Encode4(2907), GIMT_Encode4(0), GIMT_Encode4(0),
1138 /* 826 */ /*TargetOpcode::G_FMINIMUM*//*Label 50*/ GIMT_Encode4(2919),
1139 /* 830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 51*/ GIMT_Encode4(2931), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1140 /* 874 */ /*TargetOpcode::G_PTR_ADD*//*Label 52*/ GIMT_Encode4(2943), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1141 /* 898 */ /*TargetOpcode::G_ABS*//*Label 53*/ GIMT_Encode4(2989), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1142 /* 930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 54*/ GIMT_Encode4(3001),
1143 /* 934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 55*/ GIMT_Encode4(3013),
1144 /* 938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 56*/ GIMT_Encode4(3025), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1145 /* 986 */ /*TargetOpcode::G_FCEIL*//*Label 57*/ GIMT_Encode4(3048), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
1146 /* 1034 */ /*TargetOpcode::G_FSQRT*//*Label 58*/ GIMT_Encode4(3070),
1147 /* 1038 */ /*TargetOpcode::G_FFLOOR*//*Label 59*/ GIMT_Encode4(3092),
1148 /* 1042 */ /*TargetOpcode::G_FRINT*//*Label 60*/ GIMT_Encode4(3114),
1149 /* 1046 */ /*TargetOpcode::G_FNEARBYINT*//*Label 61*/ GIMT_Encode4(3136),
1150 /* 1050 */ // Label 0: @1050
1151 /* 1050 */ GIM_Try, /*On fail goto*//*Label 63*/ GIMT_Encode4(1061), // Rule ID 99 //
1152 /* 1055 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
1153 /* 1058 */ // MIs[0] d
1154 /* 1058 */ // No operand predicates
1155 /* 1058 */ // MIs[0] s
1156 /* 1058 */ // No operand predicates
1157 /* 1058 */ // Combiner Rule #56: copy_prop
1158 /* 1058 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
1159 /* 1061 */ // Label 63: @1061
1160 /* 1061 */ GIM_Reject,
1161 /* 1062 */ // Label 1: @1062
1162 /* 1062 */ GIM_Try, /*On fail goto*//*Label 64*/ GIMT_Encode4(1073), // Rule ID 90 //
1163 /* 1067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1164 /* 1070 */ // Combiner Rule #51: propagate_undef_any_op; wip_match_opcode 'G_ADD'
1165 /* 1070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
1166 /* 1073 */ // Label 64: @1073
1167 /* 1073 */ GIM_Try, /*On fail goto*//*Label 65*/ GIMT_Encode4(1084), // Rule ID 102 //
1168 /* 1078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
1169 /* 1081 */ // Combiner Rule #59: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
1170 /* 1081 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
1171 /* 1084 */ // Label 65: @1084
1172 /* 1084 */ GIM_Try, /*On fail goto*//*Label 66*/ GIMT_Encode4(1095), // Rule ID 107 //
1173 /* 1089 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
1174 /* 1092 */ // Combiner Rule #62: simplify_add_to_sub; wip_match_opcode 'G_ADD'
1175 /* 1092 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
1176 /* 1095 */ // Label 66: @1095
1177 /* 1095 */ GIM_Try, /*On fail goto*//*Label 67*/ GIMT_Encode4(1129), // Rule ID 29 //
1178 /* 1100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1179 /* 1103 */ // MIs[0] dst
1180 /* 1103 */ // No operand predicates
1181 /* 1103 */ // MIs[0] __add_sub_reg_match_0.tmp
1182 /* 1103 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1183 /* 1107 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
1184 /* 1111 */ // MIs[1] src
1185 /* 1111 */ // No operand predicates
1186 /* 1111 */ // MIs[1] __add_sub_reg_match_0.x
1187 /* 1111 */ // No operand predicates
1188 /* 1111 */ // MIs[0] __add_sub_reg_match_0.x
1189 /* 1111 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
1190 /* 1116 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1191 /* 1121 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1192 /* 1123 */ // Combiner Rule #11: add_sub_reg @ [__add_sub_reg_match_0[1]]
1193 /* 1123 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1194 /* 1128 */ GIR_EraseRootFromParent_Done,
1195 /* 1129 */ // Label 67: @1129
1196 /* 1129 */ GIM_Try, /*On fail goto*//*Label 68*/ GIMT_Encode4(1163), // Rule ID 28 //
1197 /* 1134 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
1198 /* 1137 */ // MIs[0] dst
1199 /* 1137 */ // No operand predicates
1200 /* 1137 */ // MIs[0] __add_sub_reg_match_0.x
1201 /* 1137 */ // No operand predicates
1202 /* 1137 */ // MIs[0] __add_sub_reg_match_0.tmp
1203 /* 1137 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1204 /* 1141 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
1205 /* 1145 */ // MIs[1] src
1206 /* 1145 */ // No operand predicates
1207 /* 1145 */ // MIs[1] __add_sub_reg_match_0.x
1208 /* 1145 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1209 /* 1150 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1210 /* 1155 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1211 /* 1157 */ // Combiner Rule #11: add_sub_reg @ [__add_sub_reg_match_0[0]]
1212 /* 1157 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
1213 /* 1162 */ GIR_EraseRootFromParent_Done,
1214 /* 1163 */ // Label 68: @1163
1215 /* 1163 */ GIM_Try, /*On fail goto*//*Label 69*/ GIMT_Encode4(1186), // Rule ID 2 //
1216 /* 1168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1217 /* 1171 */ // MIs[0] dst
1218 /* 1171 */ // No operand predicates
1219 /* 1171 */ // MIs[0] lhs
1220 /* 1171 */ // No operand predicates
1221 /* 1171 */ // MIs[0] Operand 2
1222 /* 1171 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1223 /* 1175 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1224 /* 1180 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[1]]
1225 /* 1180 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1226 /* 1185 */ GIR_EraseRootFromParent_Done,
1227 /* 1186 */ // Label 69: @1186
1228 /* 1186 */ GIM_Try, /*On fail goto*//*Label 70*/ GIMT_Encode4(1197), // Rule ID 40 //
1229 /* 1191 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
1230 /* 1194 */ // MIs[0] root
1231 /* 1194 */ // No operand predicates
1232 /* 1194 */ // MIs[0] src1
1233 /* 1194 */ // No operand predicates
1234 /* 1194 */ // MIs[0] src2
1235 /* 1194 */ // No operand predicates
1236 /* 1194 */ // Combiner Rule #21: reassoc_comm_binops
1237 /* 1194 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
1238 /* 1197 */ // Label 70: @1197
1239 /* 1197 */ GIM_Reject,
1240 /* 1198 */ // Label 2: @1198
1241 /* 1198 */ GIM_Try, /*On fail goto*//*Label 71*/ GIMT_Encode4(1209), // Rule ID 91 //
1242 /* 1203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1243 /* 1206 */ // Combiner Rule #51: propagate_undef_any_op; wip_match_opcode 'G_SUB'
1244 /* 1206 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
1245 /* 1209 */ // Label 71: @1209
1246 /* 1209 */ GIM_Try, /*On fail goto*//*Label 72*/ GIMT_Encode4(1232), // Rule ID 1 //
1247 /* 1214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1248 /* 1217 */ // MIs[0] dst
1249 /* 1217 */ // No operand predicates
1250 /* 1217 */ // MIs[0] lhs
1251 /* 1217 */ // No operand predicates
1252 /* 1217 */ // MIs[0] Operand 2
1253 /* 1217 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1254 /* 1221 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1255 /* 1226 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[0]]
1256 /* 1226 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1257 /* 1231 */ GIR_EraseRootFromParent_Done,
1258 /* 1232 */ // Label 72: @1232
1259 /* 1232 */ GIM_Try, /*On fail goto*//*Label 73*/ GIMT_Encode4(1253), // Rule ID 101 //
1260 /* 1237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
1261 /* 1240 */ // MIs[0] d
1262 /* 1240 */ // No operand predicates
1263 /* 1240 */ // MIs[0] op1
1264 /* 1240 */ // No operand predicates
1265 /* 1240 */ // MIs[0] c
1266 /* 1240 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1267 /* 1244 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1268 /* 1248 */ // MIs[1] imm
1269 /* 1248 */ // No operand predicates
1270 /* 1248 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1271 /* 1250 */ // Combiner Rule #58: sub_to_add
1272 /* 1250 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
1273 /* 1253 */ // Label 73: @1253
1274 /* 1253 */ GIM_Reject,
1275 /* 1254 */ // Label 3: @1254
1276 /* 1254 */ GIM_Try, /*On fail goto*//*Label 74*/ GIMT_Encode4(1265), // Rule ID 74 //
1277 /* 1259 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
1278 /* 1262 */ // Combiner Rule #45: undef_to_int_zero; wip_match_opcode 'G_MUL'
1279 /* 1262 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
1280 /* 1265 */ // Label 74: @1265
1281 /* 1265 */ GIM_Try, /*On fail goto*//*Label 75*/ GIMT_Encode4(1305), // Rule ID 103 //
1282 /* 1270 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
1283 /* 1273 */ // MIs[0] dst
1284 /* 1273 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
1285 /* 1277 */ // MIs[0] x
1286 /* 1277 */ // No operand predicates
1287 /* 1277 */ // MIs[0] Operand 2
1288 /* 1277 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
1289 /* 1281 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
1290 /* 1284 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
1291 /* 1294 */ // Combiner Rule #60: mul_by_neg_one
1292 /* 1294 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
1293 /* 1297 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1294 /* 1299 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
1295 /* 1302 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
1296 /* 1304 */ GIR_EraseRootFromParent_Done,
1297 /* 1305 */ // Label 75: @1305
1298 /* 1305 */ GIM_Try, /*On fail goto*//*Label 76*/ GIMT_Encode4(1345), // Rule ID 20 //
1299 /* 1310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1300 /* 1313 */ // MIs[0] dst
1301 /* 1313 */ // No operand predicates
1302 /* 1313 */ // MIs[0] zero
1303 /* 1313 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1304 /* 1317 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1305 /* 1321 */ // MIs[1] Operand 1
1306 /* 1321 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1307 /* 1332 */ // MIs[0] rhs
1308 /* 1332 */ // No operand predicates
1309 /* 1332 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1310 /* 1337 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1311 /* 1339 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
1312 /* 1339 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1313 /* 1344 */ GIR_EraseRootFromParent_Done,
1314 /* 1345 */ // Label 76: @1345
1315 /* 1345 */ GIM_Try, /*On fail goto*//*Label 77*/ GIMT_Encode4(1368), // Rule ID 21 //
1316 /* 1350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
1317 /* 1353 */ // MIs[0] dst
1318 /* 1353 */ // No operand predicates
1319 /* 1353 */ // MIs[0] lhs
1320 /* 1353 */ // No operand predicates
1321 /* 1353 */ // MIs[0] zero
1322 /* 1353 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1323 /* 1357 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1324 /* 1362 */ // Combiner Rule #4: binop_right_to_zero
1325 /* 1362 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
1326 /* 1367 */ GIR_EraseRootFromParent_Done,
1327 /* 1368 */ // Label 77: @1368
1328 /* 1368 */ GIM_Try, /*On fail goto*//*Label 78*/ GIMT_Encode4(1391), // Rule ID 26 //
1329 /* 1373 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
1330 /* 1376 */ // MIs[0] dst
1331 /* 1376 */ // No operand predicates
1332 /* 1376 */ // MIs[0] x
1333 /* 1376 */ // No operand predicates
1334 /* 1376 */ // MIs[0] Operand 2
1335 /* 1376 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
1336 /* 1380 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1337 /* 1385 */ // Combiner Rule #9: right_identity_one_int
1338 /* 1385 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1339 /* 1390 */ GIR_EraseRootFromParent_Done,
1340 /* 1391 */ // Label 78: @1391
1341 /* 1391 */ GIM_Try, /*On fail goto*//*Label 79*/ GIMT_Encode4(1402), // Rule ID 100 //
1342 /* 1396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
1343 /* 1399 */ // MIs[0] d
1344 /* 1399 */ // No operand predicates
1345 /* 1399 */ // MIs[0] op1
1346 /* 1399 */ // No operand predicates
1347 /* 1399 */ // MIs[0] op2
1348 /* 1399 */ // No operand predicates
1349 /* 1399 */ // Combiner Rule #57: mul_to_shl
1350 /* 1399 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
1351 /* 1402 */ // Label 79: @1402
1352 /* 1402 */ GIM_Reject,
1353 /* 1403 */ // Label 4: @1403
1354 /* 1403 */ GIM_Try, /*On fail goto*//*Label 80*/ GIMT_Encode4(1443), // Rule ID 16 //
1355 /* 1408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1356 /* 1411 */ // MIs[0] dst
1357 /* 1411 */ // No operand predicates
1358 /* 1411 */ // MIs[0] zero
1359 /* 1411 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1360 /* 1415 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1361 /* 1419 */ // MIs[1] Operand 1
1362 /* 1419 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1363 /* 1430 */ // MIs[0] rhs
1364 /* 1430 */ // No operand predicates
1365 /* 1430 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1366 /* 1435 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1367 /* 1437 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
1368 /* 1437 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1369 /* 1442 */ GIR_EraseRootFromParent_Done,
1370 /* 1443 */ // Label 80: @1443
1371 /* 1443 */ GIM_Reject,
1372 /* 1444 */ // Label 5: @1444
1373 /* 1444 */ GIM_Try, /*On fail goto*//*Label 81*/ GIMT_Encode4(1455), // Rule ID 77 //
1374 /* 1449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
1375 /* 1452 */ // Combiner Rule #47: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
1376 /* 1452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
1377 /* 1455 */ // Label 81: @1455
1378 /* 1455 */ GIM_Try, /*On fail goto*//*Label 82*/ GIMT_Encode4(1495), // Rule ID 17 //
1379 /* 1460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1380 /* 1463 */ // MIs[0] dst
1381 /* 1463 */ // No operand predicates
1382 /* 1463 */ // MIs[0] zero
1383 /* 1463 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1384 /* 1467 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1385 /* 1471 */ // MIs[1] Operand 1
1386 /* 1471 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1387 /* 1482 */ // MIs[0] rhs
1388 /* 1482 */ // No operand predicates
1389 /* 1482 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1390 /* 1487 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1391 /* 1489 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
1392 /* 1489 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1393 /* 1494 */ GIR_EraseRootFromParent_Done,
1394 /* 1495 */ // Label 82: @1495
1395 /* 1495 */ GIM_Reject,
1396 /* 1496 */ // Label 6: @1496
1397 /* 1496 */ GIM_Try, /*On fail goto*//*Label 83*/ GIMT_Encode4(1536), // Rule ID 18 //
1398 /* 1501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1399 /* 1504 */ // MIs[0] dst
1400 /* 1504 */ // No operand predicates
1401 /* 1504 */ // MIs[0] zero
1402 /* 1504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1403 /* 1508 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1404 /* 1512 */ // MIs[1] Operand 1
1405 /* 1512 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1406 /* 1523 */ // MIs[0] rhs
1407 /* 1523 */ // No operand predicates
1408 /* 1523 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1409 /* 1528 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1410 /* 1530 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
1411 /* 1530 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1412 /* 1535 */ GIR_EraseRootFromParent_Done,
1413 /* 1536 */ // Label 83: @1536
1414 /* 1536 */ GIM_Reject,
1415 /* 1537 */ // Label 7: @1537
1416 /* 1537 */ GIM_Try, /*On fail goto*//*Label 84*/ GIMT_Encode4(1548), // Rule ID 78 //
1417 /* 1542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
1418 /* 1545 */ // Combiner Rule #47: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
1419 /* 1545 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
1420 /* 1548 */ // Label 84: @1548
1421 /* 1548 */ GIM_Try, /*On fail goto*//*Label 85*/ GIMT_Encode4(1588), // Rule ID 19 //
1422 /* 1553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1423 /* 1556 */ // MIs[0] dst
1424 /* 1556 */ // No operand predicates
1425 /* 1556 */ // MIs[0] zero
1426 /* 1556 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1427 /* 1560 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1428 /* 1564 */ // MIs[1] Operand 1
1429 /* 1564 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1430 /* 1575 */ // MIs[0] rhs
1431 /* 1575 */ // No operand predicates
1432 /* 1575 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1433 /* 1580 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1434 /* 1582 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
1435 /* 1582 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1436 /* 1587 */ GIR_EraseRootFromParent_Done,
1437 /* 1588 */ // Label 85: @1588
1438 /* 1588 */ GIM_Reject,
1439 /* 1589 */ // Label 8: @1589
1440 /* 1589 */ GIM_Try, /*On fail goto*//*Label 86*/ GIMT_Encode4(1600), // Rule ID 57 //
1441 /* 1594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
1442 /* 1597 */ // Combiner Rule #38: overlapping_and; wip_match_opcode 'G_AND'
1443 /* 1597 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
1444 /* 1600 */ // Label 86: @1600
1445 /* 1600 */ GIM_Try, /*On fail goto*//*Label 87*/ GIMT_Encode4(1611), // Rule ID 73 //
1446 /* 1605 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
1447 /* 1608 */ // Combiner Rule #45: undef_to_int_zero; wip_match_opcode 'G_AND'
1448 /* 1608 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
1449 /* 1611 */ // Label 87: @1611
1450 /* 1611 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1635), // Rule ID 11 //
1451 /* 1616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
1452 /* 1619 */ // MIs[0] dst
1453 /* 1619 */ // No operand predicates
1454 /* 1619 */ // MIs[0] src
1455 /* 1619 */ // No operand predicates
1456 /* 1619 */ // MIs[0] src
1457 /* 1619 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1458 /* 1624 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1459 /* 1629 */ // Combiner Rule #2: binop_same_val @ [__binop_same_val_match_0[0]]
1460 /* 1629 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1461 /* 1634 */ GIR_EraseRootFromParent_Done,
1462 /* 1635 */ // Label 88: @1635
1463 /* 1635 */ GIM_Reject,
1464 /* 1636 */ // Label 9: @1636
1465 /* 1636 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1647), // Rule ID 75 //
1466 /* 1641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
1467 /* 1644 */ // Combiner Rule #46: undef_to_negative_one; wip_match_opcode 'G_OR'
1468 /* 1644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
1469 /* 1647 */ // Label 89: @1647
1470 /* 1647 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1671), // Rule ID 12 //
1471 /* 1652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
1472 /* 1655 */ // MIs[0] dst
1473 /* 1655 */ // No operand predicates
1474 /* 1655 */ // MIs[0] src
1475 /* 1655 */ // No operand predicates
1476 /* 1655 */ // MIs[0] src
1477 /* 1655 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
1478 /* 1660 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1479 /* 1665 */ // Combiner Rule #2: binop_same_val @ [__binop_same_val_match_0[1]]
1480 /* 1665 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1481 /* 1670 */ GIR_EraseRootFromParent_Done,
1482 /* 1671 */ // Label 90: @1671
1483 /* 1671 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1694), // Rule ID 3 //
1484 /* 1676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1485 /* 1679 */ // MIs[0] dst
1486 /* 1679 */ // No operand predicates
1487 /* 1679 */ // MIs[0] lhs
1488 /* 1679 */ // No operand predicates
1489 /* 1679 */ // MIs[0] Operand 2
1490 /* 1679 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1491 /* 1683 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1492 /* 1688 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[2]]
1493 /* 1688 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1494 /* 1693 */ GIR_EraseRootFromParent_Done,
1495 /* 1694 */ // Label 91: @1694
1496 /* 1694 */ GIM_Reject,
1497 /* 1695 */ // Label 10: @1695
1498 /* 1695 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1706), // Rule ID 92 //
1499 /* 1700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
1500 /* 1703 */ // Combiner Rule #51: propagate_undef_any_op; wip_match_opcode 'G_XOR'
1501 /* 1703 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
1502 /* 1706 */ // Label 92: @1706
1503 /* 1706 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1729), // Rule ID 4 //
1504 /* 1711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1505 /* 1714 */ // MIs[0] dst
1506 /* 1714 */ // No operand predicates
1507 /* 1714 */ // MIs[0] lhs
1508 /* 1714 */ // No operand predicates
1509 /* 1714 */ // MIs[0] Operand 2
1510 /* 1714 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1511 /* 1718 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1512 /* 1723 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[3]]
1513 /* 1723 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1514 /* 1728 */ GIR_EraseRootFromParent_Done,
1515 /* 1729 */ // Label 93: @1729
1516 /* 1729 */ GIM_Reject,
1517 /* 1730 */ // Label 11: @1730
1518 /* 1730 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1741), // Rule ID 31 //
1519 /* 1735 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1520 /* 1738 */ // Combiner Rule #12: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
1521 /* 1738 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1522 /* 1741 */ // Label 94: @1741
1523 /* 1741 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1752), // Rule ID 94 //
1524 /* 1746 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
1525 /* 1749 */ // Combiner Rule #52: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
1526 /* 1749 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
1527 /* 1752 */ // Label 95: @1752
1528 /* 1752 */ GIM_Reject,
1529 /* 1753 */ // Label 12: @1753
1530 /* 1753 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1764), // Rule ID 30 //
1531 /* 1758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
1532 /* 1761 */ // Combiner Rule #12: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
1533 /* 1761 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
1534 /* 1764 */ // Label 96: @1764
1535 /* 1764 */ GIM_Reject,
1536 /* 1765 */ // Label 13: @1765
1537 /* 1765 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1786), // Rule ID 23 //
1538 /* 1770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
1539 /* 1773 */ // MIs[0] dst
1540 /* 1773 */ // No operand predicates
1541 /* 1773 */ // MIs[0] t
1542 /* 1773 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1543 /* 1777 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
1544 /* 1781 */ // MIs[1] ptr
1545 /* 1781 */ // No operand predicates
1546 /* 1781 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1547 /* 1783 */ // Combiner Rule #6: i2p_to_p2i
1548 /* 1783 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
1549 /* 1786 */ // Label 97: @1786
1550 /* 1786 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1807), // Rule ID 86 //
1551 /* 1791 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1552 /* 1794 */ // MIs[0] dst
1553 /* 1794 */ // No operand predicates
1554 /* 1794 */ // MIs[0] __unary_undef_to_undef_match_0.x
1555 /* 1794 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1556 /* 1798 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
1557 /* 1802 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1558 /* 1804 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
1559 /* 1804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1560 /* 1807 */ // Label 98: @1807
1561 /* 1807 */ GIM_Reject,
1562 /* 1808 */ // Label 14: @1808
1563 /* 1808 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1819), // Rule ID 22 //
1564 /* 1813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
1565 /* 1816 */ // Combiner Rule #5: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
1566 /* 1816 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
1567 /* 1819 */ // Label 99: @1819
1568 /* 1819 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1840), // Rule ID 87 //
1569 /* 1824 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1570 /* 1827 */ // MIs[0] dst
1571 /* 1827 */ // No operand predicates
1572 /* 1827 */ // MIs[0] __unary_undef_to_undef_match_0.x
1573 /* 1827 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1574 /* 1831 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
1575 /* 1835 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1576 /* 1837 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
1577 /* 1837 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1578 /* 1840 */ // Label 100: @1840
1579 /* 1840 */ GIM_Reject,
1580 /* 1841 */ // Label 15: @1841
1581 /* 1841 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1862), // Rule ID 34 //
1582 /* 1846 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
1583 /* 1849 */ // MIs[0] dst
1584 /* 1849 */ // No operand predicates
1585 /* 1849 */ // MIs[0] src1
1586 /* 1849 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1587 /* 1853 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
1588 /* 1857 */ // MIs[1] src0
1589 /* 1857 */ // No operand predicates
1590 /* 1857 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1591 /* 1859 */ // Combiner Rule #15: bitcast_bitcast_fold
1592 /* 1859 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
1593 /* 1862 */ // Label 101: @1862
1594 /* 1862 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1883), // Rule ID 84 //
1595 /* 1867 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1596 /* 1870 */ // MIs[0] dst
1597 /* 1870 */ // No operand predicates
1598 /* 1870 */ // MIs[0] __unary_undef_to_undef_match_0.x
1599 /* 1870 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1600 /* 1874 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
1601 /* 1878 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1602 /* 1880 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
1603 /* 1880 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1604 /* 1883 */ // Label 102: @1883
1605 /* 1883 */ GIM_Reject,
1606 /* 1884 */ // Label 16: @1884
1607 /* 1884 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1913), // Rule ID 104 //
1608 /* 1889 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
1609 /* 1892 */ // MIs[0] dst
1610 /* 1892 */ // No operand predicates
1611 /* 1892 */ // MIs[0] src
1612 /* 1892 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1613 /* 1896 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
1614 /* 1900 */ // MIs[1] __idempotent_prop_match_0.x
1615 /* 1900 */ // No operand predicates
1616 /* 1900 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1617 /* 1905 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1618 /* 1907 */ // Combiner Rule #61: idempotent_prop @ [__idempotent_prop_match_0[0]]
1619 /* 1907 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1620 /* 1912 */ GIR_EraseRootFromParent_Done,
1621 /* 1913 */ // Label 103: @1913
1622 /* 1913 */ GIM_Reject,
1623 /* 1914 */ // Label 17: @1914
1624 /* 1914 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1935), // Rule ID 49 //
1625 /* 1919 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
1626 /* 1922 */ // MIs[0] dst
1627 /* 1922 */ // No operand predicates
1628 /* 1922 */ // MIs[0] src0
1629 /* 1922 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1630 /* 1926 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1631 /* 1930 */ // MIs[1] cst
1632 /* 1930 */ // No operand predicates
1633 /* 1930 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1634 /* 1932 */ // Combiner Rule #30: constant_fold_intrinsic_trunc
1635 /* 1932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1636 /* 1935 */ // Label 104: @1935
1637 /* 1935 */ GIM_Reject,
1638 /* 1936 */ // Label 18: @1936
1639 /* 1936 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1957), // Rule ID 50 //
1640 /* 1941 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
1641 /* 1944 */ // MIs[0] dst
1642 /* 1944 */ // No operand predicates
1643 /* 1944 */ // MIs[0] src0
1644 /* 1944 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1645 /* 1948 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1646 /* 1952 */ // MIs[1] cst
1647 /* 1952 */ // No operand predicates
1648 /* 1952 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1649 /* 1954 */ // Combiner Rule #31: constant_fold_intrinsic_round
1650 /* 1954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1651 /* 1957 */ // Label 105: @1957
1652 /* 1957 */ GIM_Reject,
1653 /* 1958 */ // Label 19: @1958
1654 /* 1958 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1979), // Rule ID 51 //
1655 /* 1963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
1656 /* 1966 */ // MIs[0] dst
1657 /* 1966 */ // No operand predicates
1658 /* 1966 */ // MIs[0] src0
1659 /* 1966 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1660 /* 1970 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
1661 /* 1974 */ // MIs[1] cst
1662 /* 1974 */ // No operand predicates
1663 /* 1974 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1664 /* 1976 */ // Combiner Rule #32: constant_fold_intrinsic_roundeven
1665 /* 1976 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
1666 /* 1979 */ // Label 106: @1979
1667 /* 1979 */ GIM_Reject,
1668 /* 1980 */ // Label 20: @1980
1669 /* 1980 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1991), // Rule ID 96 //
1670 /* 1985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
1671 /* 1988 */ // Combiner Rule #54: erase_undef_store; wip_match_opcode 'G_STORE'
1672 /* 1988 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
1673 /* 1991 */ // Label 107: @1991
1674 /* 1991 */ GIM_Reject,
1675 /* 1992 */ // Label 21: @1992
1676 /* 1992 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(2003), // Rule ID 24 //
1677 /* 1997 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
1678 /* 2000 */ // Combiner Rule #7: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
1679 /* 2000 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
1680 /* 2003 */ // Label 108: @2003
1681 /* 2003 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(2024), // Rule ID 85 //
1682 /* 2008 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1683 /* 2011 */ // MIs[0] dst
1684 /* 2011 */ // No operand predicates
1685 /* 2011 */ // MIs[0] __unary_undef_to_undef_match_0.x
1686 /* 2011 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1687 /* 2015 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
1688 /* 2019 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1689 /* 2021 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
1690 /* 2021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1691 /* 2024 */ // Label 109: @2024
1692 /* 2024 */ GIM_Reject,
1693 /* 2025 */ // Label 22: @2025
1694 /* 2025 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(2036), // Rule ID 32 //
1695 /* 2030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
1696 /* 2033 */ // Combiner Rule #13: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
1697 /* 2033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
1698 /* 2036 */ // Label 110: @2036
1699 /* 2036 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(2047), // Rule ID 33 //
1700 /* 2041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
1701 /* 2044 */ // Combiner Rule #14: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
1702 /* 2044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
1703 /* 2047 */ // Label 111: @2047
1704 /* 2047 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(2068), // Rule ID 83 //
1705 /* 2052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
1706 /* 2055 */ // MIs[0] dst
1707 /* 2055 */ // No operand predicates
1708 /* 2055 */ // MIs[0] __unary_undef_to_undef_match_0.x
1709 /* 2055 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1710 /* 2059 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
1711 /* 2063 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1712 /* 2065 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
1713 /* 2065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
1714 /* 2068 */ // Label 112: @2068
1715 /* 2068 */ GIM_Reject,
1716 /* 2069 */ // Label 23: @2069
1717 /* 2069 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(2080), // Rule ID 76 //
1718 /* 2074 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
1719 /* 2077 */ // Combiner Rule #47: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
1720 /* 2077 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
1721 /* 2080 */ // Label 113: @2080
1722 /* 2080 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(2091), // Rule ID 79 //
1723 /* 2085 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
1724 /* 2088 */ // Combiner Rule #48: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
1725 /* 2088 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
1726 /* 2091 */ // Label 114: @2091
1727 /* 2091 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(2131), // Rule ID 13 //
1728 /* 2096 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1729 /* 2099 */ // MIs[0] dst
1730 /* 2099 */ // No operand predicates
1731 /* 2099 */ // MIs[0] zero
1732 /* 2099 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1733 /* 2103 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1734 /* 2107 */ // MIs[1] Operand 1
1735 /* 2107 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1736 /* 2118 */ // MIs[0] rhs
1737 /* 2118 */ // No operand predicates
1738 /* 2118 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1739 /* 2123 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1740 /* 2125 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
1741 /* 2125 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1742 /* 2130 */ GIR_EraseRootFromParent_Done,
1743 /* 2131 */ // Label 115: @2131
1744 /* 2131 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(2154), // Rule ID 5 //
1745 /* 2136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1746 /* 2139 */ // MIs[0] dst
1747 /* 2139 */ // No operand predicates
1748 /* 2139 */ // MIs[0] lhs
1749 /* 2139 */ // No operand predicates
1750 /* 2139 */ // MIs[0] Operand 2
1751 /* 2139 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1752 /* 2143 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1753 /* 2148 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[4]]
1754 /* 2148 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1755 /* 2153 */ GIR_EraseRootFromParent_Done,
1756 /* 2154 */ // Label 116: @2154
1757 /* 2154 */ GIM_Reject,
1758 /* 2155 */ // Label 24: @2155
1759 /* 2155 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(2166), // Rule ID 81 //
1760 /* 2160 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
1761 /* 2163 */ // Combiner Rule #48: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
1762 /* 2163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
1763 /* 2166 */ // Label 117: @2166
1764 /* 2166 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(2206), // Rule ID 14 //
1765 /* 2171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1766 /* 2174 */ // MIs[0] dst
1767 /* 2174 */ // No operand predicates
1768 /* 2174 */ // MIs[0] zero
1769 /* 2174 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1770 /* 2178 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1771 /* 2182 */ // MIs[1] Operand 1
1772 /* 2182 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1773 /* 2193 */ // MIs[0] rhs
1774 /* 2193 */ // No operand predicates
1775 /* 2193 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1776 /* 2198 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1777 /* 2200 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
1778 /* 2200 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1779 /* 2205 */ GIR_EraseRootFromParent_Done,
1780 /* 2206 */ // Label 118: @2206
1781 /* 2206 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(2229), // Rule ID 7 //
1782 /* 2211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1783 /* 2214 */ // MIs[0] dst
1784 /* 2214 */ // No operand predicates
1785 /* 2214 */ // MIs[0] lhs
1786 /* 2214 */ // No operand predicates
1787 /* 2214 */ // MIs[0] Operand 2
1788 /* 2214 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1789 /* 2218 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1790 /* 2223 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[6]]
1791 /* 2223 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1792 /* 2228 */ GIR_EraseRootFromParent_Done,
1793 /* 2229 */ // Label 119: @2229
1794 /* 2229 */ GIM_Reject,
1795 /* 2230 */ // Label 25: @2230
1796 /* 2230 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(2241), // Rule ID 80 //
1797 /* 2235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
1798 /* 2238 */ // Combiner Rule #48: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
1799 /* 2238 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
1800 /* 2241 */ // Label 120: @2241
1801 /* 2241 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(2281), // Rule ID 15 //
1802 /* 2246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
1803 /* 2249 */ // MIs[0] dst
1804 /* 2249 */ // No operand predicates
1805 /* 2249 */ // MIs[0] zero
1806 /* 2249 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
1807 /* 2253 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1808 /* 2257 */ // MIs[1] Operand 1
1809 /* 2257 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
1810 /* 2268 */ // MIs[0] rhs
1811 /* 2268 */ // No operand predicates
1812 /* 2268 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1813 /* 2273 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1814 /* 2275 */ // Combiner Rule #3: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
1815 /* 2275 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1816 /* 2280 */ GIR_EraseRootFromParent_Done,
1817 /* 2281 */ // Label 121: @2281
1818 /* 2281 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(2304), // Rule ID 6 //
1819 /* 2286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1820 /* 2289 */ // MIs[0] dst
1821 /* 2289 */ // No operand predicates
1822 /* 2289 */ // MIs[0] lhs
1823 /* 2289 */ // No operand predicates
1824 /* 2289 */ // MIs[0] Operand 2
1825 /* 2289 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1826 /* 2293 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1827 /* 2298 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[5]]
1828 /* 2298 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1829 /* 2303 */ GIR_EraseRootFromParent_Done,
1830 /* 2304 */ // Label 122: @2304
1831 /* 2304 */ GIM_Reject,
1832 /* 2305 */ // Label 26: @2305
1833 /* 2305 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(2328), // Rule ID 10 //
1834 /* 2310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1835 /* 2313 */ // MIs[0] dst
1836 /* 2313 */ // No operand predicates
1837 /* 2313 */ // MIs[0] lhs
1838 /* 2313 */ // No operand predicates
1839 /* 2313 */ // MIs[0] Operand 2
1840 /* 2313 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1841 /* 2317 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1842 /* 2322 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[9]]
1843 /* 2322 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1844 /* 2327 */ GIR_EraseRootFromParent_Done,
1845 /* 2328 */ // Label 123: @2328
1846 /* 2328 */ GIM_Reject,
1847 /* 2329 */ // Label 27: @2329
1848 /* 2329 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(2352), // Rule ID 9 //
1849 /* 2334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
1850 /* 2337 */ // MIs[0] dst
1851 /* 2337 */ // No operand predicates
1852 /* 2337 */ // MIs[0] lhs
1853 /* 2337 */ // No operand predicates
1854 /* 2337 */ // MIs[0] Operand 2
1855 /* 2337 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
1856 /* 2341 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1857 /* 2346 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[8]]
1858 /* 2346 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1859 /* 2351 */ GIR_EraseRootFromParent_Done,
1860 /* 2352 */ // Label 124: @2352
1861 /* 2352 */ GIM_Reject,
1862 /* 2353 */ // Label 28: @2353
1863 /* 2353 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(2364), // Rule ID 0 //
1864 /* 2358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
1865 /* 2361 */ // Combiner Rule #0: select_same_val; wip_match_opcode 'G_SELECT'
1866 /* 2361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
1867 /* 2364 */ // Label 125: @2364
1868 /* 2364 */ GIM_Reject,
1869 /* 2365 */ // Label 29: @2365
1870 /* 2365 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(2376), // Rule ID 62 //
1871 /* 2370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1872 /* 2373 */ // Combiner Rule #41: adde_to_addo; wip_match_opcode 'G_UADDE'
1873 /* 2373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
1874 /* 2376 */ // Label 126: @2376
1875 /* 2376 */ GIM_Reject,
1876 /* 2377 */ // Label 30: @2377
1877 /* 2377 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(2388), // Rule ID 64 //
1878 /* 2382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1879 /* 2385 */ // Combiner Rule #41: adde_to_addo; wip_match_opcode 'G_USUBE'
1880 /* 2385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
1881 /* 2388 */ // Label 127: @2388
1882 /* 2388 */ GIM_Reject,
1883 /* 2389 */ // Label 31: @2389
1884 /* 2389 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(2400), // Rule ID 63 //
1885 /* 2394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1886 /* 2397 */ // Combiner Rule #41: adde_to_addo; wip_match_opcode 'G_SADDE'
1887 /* 2397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
1888 /* 2400 */ // Label 128: @2400
1889 /* 2400 */ GIM_Reject,
1890 /* 2401 */ // Label 32: @2401
1891 /* 2401 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(2412), // Rule ID 65 //
1892 /* 2406 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
1893 /* 2409 */ // Combiner Rule #41: adde_to_addo; wip_match_opcode 'G_SSUBE'
1894 /* 2409 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
1895 /* 2412 */ // Label 129: @2412
1896 /* 2412 */ GIM_Reject,
1897 /* 2413 */ // Label 33: @2413
1898 /* 2413 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(2424), // Rule ID 58 //
1899 /* 2418 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
1900 /* 2421 */ // Combiner Rule #39: mulo_by_2; wip_match_opcode 'G_UMULO'
1901 /* 2421 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1902 /* 2424 */ // Label 130: @2424
1903 /* 2424 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(2435), // Rule ID 60 //
1904 /* 2429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
1905 /* 2432 */ // Combiner Rule #40: mulo_by_0; wip_match_opcode 'G_UMULO'
1906 /* 2432 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
1907 /* 2435 */ // Label 131: @2435
1908 /* 2435 */ GIM_Reject,
1909 /* 2436 */ // Label 34: @2436
1910 /* 2436 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(2447), // Rule ID 59 //
1911 /* 2441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
1912 /* 2444 */ // Combiner Rule #39: mulo_by_2; wip_match_opcode 'G_SMULO'
1913 /* 2444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
1914 /* 2447 */ // Label 132: @2447
1915 /* 2447 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(2458), // Rule ID 61 //
1916 /* 2452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
1917 /* 2455 */ // Combiner Rule #40: mulo_by_0; wip_match_opcode 'G_SMULO'
1918 /* 2455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
1919 /* 2458 */ // Label 133: @2458
1920 /* 2458 */ GIM_Reject,
1921 /* 2459 */ // Label 35: @2459
1922 /* 2459 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2482), // Rule ID 36 //
1923 /* 2464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
1924 /* 2467 */ // MIs[0] dst
1925 /* 2467 */ // No operand predicates
1926 /* 2467 */ // MIs[0] x
1927 /* 2467 */ // No operand predicates
1928 /* 2467 */ // MIs[0] y
1929 /* 2467 */ // No operand predicates
1930 /* 2467 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
1931 /* 2471 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1932 /* 2476 */ // Combiner Rule #17: right_identity_neg_zero_fp
1933 /* 2476 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1934 /* 2481 */ GIR_EraseRootFromParent_Done,
1935 /* 2482 */ // Label 134: @2482
1936 /* 2482 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2511), // Rule ID 37 //
1937 /* 2487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
1938 /* 2490 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
1939 /* 2496 */ // MIs[0] dst
1940 /* 2496 */ // No operand predicates
1941 /* 2496 */ // MIs[0] x
1942 /* 2496 */ // No operand predicates
1943 /* 2496 */ // MIs[0] y
1944 /* 2496 */ // No operand predicates
1945 /* 2496 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
1946 /* 2500 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1947 /* 2505 */ // Combiner Rule #18: right_identity_neg_zero_fp_nsz
1948 /* 2505 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1949 /* 2510 */ GIR_EraseRootFromParent_Done,
1950 /* 2511 */ // Label 135: @2511
1951 /* 2511 */ GIM_Reject,
1952 /* 2512 */ // Label 36: @2512
1953 /* 2512 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2535), // Rule ID 27 //
1954 /* 2517 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
1955 /* 2520 */ // MIs[0] dst
1956 /* 2520 */ // No operand predicates
1957 /* 2520 */ // MIs[0] x
1958 /* 2520 */ // No operand predicates
1959 /* 2520 */ // MIs[0] y
1960 /* 2520 */ // No operand predicates
1961 /* 2520 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
1962 /* 2524 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1963 /* 2529 */ // Combiner Rule #10: right_identity_one_fp
1964 /* 2529 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
1965 /* 2534 */ GIR_EraseRootFromParent_Done,
1966 /* 2535 */ // Label 136: @2535
1967 /* 2535 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2555), // Rule ID 38 //
1968 /* 2540 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
1969 /* 2543 */ // MIs[0] dst
1970 /* 2543 */ // No operand predicates
1971 /* 2543 */ // MIs[0] x
1972 /* 2543 */ // No operand predicates
1973 /* 2543 */ // MIs[0] y
1974 /* 2543 */ // No operand predicates
1975 /* 2543 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
1976 /* 2547 */ // Combiner Rule #19: right_identity_neg_one_fp
1977 /* 2547 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
1978 /* 2550 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
1979 /* 2552 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
1980 /* 2554 */ GIR_EraseRootFromParent_Done,
1981 /* 2555 */ // Label 137: @2555
1982 /* 2555 */ GIM_Reject,
1983 /* 2556 */ // Label 37: @2556
1984 /* 2556 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2577), // Rule ID 70 //
1985 /* 2561 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
1986 /* 2564 */ // MIs[0] dst
1987 /* 2564 */ // No operand predicates
1988 /* 2564 */ // MIs[0] float
1989 /* 2564 */ // No operand predicates
1990 /* 2564 */ // MIs[0] int
1991 /* 2564 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
1992 /* 2568 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
1993 /* 2572 */ // MIs[1] imm
1994 /* 2572 */ // No operand predicates
1995 /* 2572 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
1996 /* 2574 */ // Combiner Rule #43: expand_const_fpowi
1997 /* 2574 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
1998 /* 2577 */ // Label 138: @2577
1999 /* 2577 */ GIM_Reject,
2000 /* 2578 */ // Label 38: @2578
2001 /* 2578 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2599), // Rule ID 44 //
2002 /* 2583 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
2003 /* 2586 */ // MIs[0] dst
2004 /* 2586 */ // No operand predicates
2005 /* 2586 */ // MIs[0] src0
2006 /* 2586 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2007 /* 2590 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2008 /* 2594 */ // MIs[1] cst
2009 /* 2594 */ // No operand predicates
2010 /* 2594 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2011 /* 2596 */ // Combiner Rule #25: constant_fold_flog2
2012 /* 2596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2013 /* 2599 */ // Label 139: @2599
2014 /* 2599 */ GIM_Reject,
2015 /* 2600 */ // Label 39: @2600
2016 /* 2600 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2621), // Rule ID 41 //
2017 /* 2605 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
2018 /* 2608 */ // MIs[0] dst
2019 /* 2608 */ // No operand predicates
2020 /* 2608 */ // MIs[0] src0
2021 /* 2608 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2022 /* 2612 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2023 /* 2616 */ // MIs[1] cst
2024 /* 2616 */ // No operand predicates
2025 /* 2616 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2026 /* 2618 */ // Combiner Rule #22: constant_fold_fneg
2027 /* 2618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2028 /* 2621 */ // Label 140: @2621
2029 /* 2621 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2650), // Rule ID 25 //
2030 /* 2626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
2031 /* 2629 */ // MIs[0] dst
2032 /* 2629 */ // No operand predicates
2033 /* 2629 */ // MIs[0] t
2034 /* 2629 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2035 /* 2633 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
2036 /* 2637 */ // MIs[1] src
2037 /* 2637 */ // No operand predicates
2038 /* 2637 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2039 /* 2642 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2040 /* 2644 */ // Combiner Rule #8: fneg_fneg_fold
2041 /* 2644 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2042 /* 2649 */ GIR_EraseRootFromParent_Done,
2043 /* 2650 */ // Label 141: @2650
2044 /* 2650 */ GIM_Reject,
2045 /* 2651 */ // Label 40: @2651
2046 /* 2651 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2672), // Rule ID 46 //
2047 /* 2656 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
2048 /* 2659 */ // MIs[0] dst
2049 /* 2659 */ // No operand predicates
2050 /* 2659 */ // MIs[0] src0
2051 /* 2659 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2052 /* 2663 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2053 /* 2667 */ // MIs[1] cst
2054 /* 2667 */ // No operand predicates
2055 /* 2667 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2056 /* 2669 */ // Combiner Rule #27: constant_fold_fpext
2057 /* 2669 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2058 /* 2672 */ // Label 142: @2672
2059 /* 2672 */ GIM_Reject,
2060 /* 2673 */ // Label 41: @2673
2061 /* 2673 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2694), // Rule ID 45 //
2062 /* 2678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
2063 /* 2681 */ // MIs[0] dst
2064 /* 2681 */ // No operand predicates
2065 /* 2681 */ // MIs[0] src0
2066 /* 2681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2067 /* 2685 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2068 /* 2689 */ // MIs[1] cst
2069 /* 2689 */ // No operand predicates
2070 /* 2689 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2071 /* 2691 */ // Combiner Rule #26: constant_fold_fptrunc
2072 /* 2691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2073 /* 2694 */ // Label 143: @2694
2074 /* 2694 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2715), // Rule ID 35 //
2075 /* 2699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
2076 /* 2702 */ // MIs[0] dst
2077 /* 2702 */ // No operand predicates
2078 /* 2702 */ // MIs[0] src1
2079 /* 2702 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2080 /* 2706 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
2081 /* 2710 */ // MIs[1] src0
2082 /* 2710 */ // No operand predicates
2083 /* 2710 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2084 /* 2712 */ // Combiner Rule #16: fptrunc_fpext_fold
2085 /* 2712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
2086 /* 2715 */ // Label 144: @2715
2087 /* 2715 */ GIM_Reject,
2088 /* 2716 */ // Label 42: @2716
2089 /* 2716 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2737), // Rule ID 88 //
2090 /* 2721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
2091 /* 2724 */ // MIs[0] dst
2092 /* 2724 */ // No operand predicates
2093 /* 2724 */ // MIs[0] __unary_undef_to_undef_match_0.x
2094 /* 2724 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2095 /* 2728 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2096 /* 2732 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2097 /* 2734 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
2098 /* 2734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
2099 /* 2737 */ // Label 145: @2737
2100 /* 2737 */ GIM_Reject,
2101 /* 2738 */ // Label 43: @2738
2102 /* 2738 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2759), // Rule ID 89 //
2103 /* 2743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
2104 /* 2746 */ // MIs[0] dst
2105 /* 2746 */ // No operand predicates
2106 /* 2746 */ // MIs[0] __unary_undef_to_undef_match_0.x
2107 /* 2746 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2108 /* 2750 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2109 /* 2754 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2110 /* 2756 */ // Combiner Rule #50: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
2111 /* 2756 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
2112 /* 2759 */ // Label 146: @2759
2113 /* 2759 */ GIM_Reject,
2114 /* 2760 */ // Label 44: @2760
2115 /* 2760 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2771), // Rule ID 72 //
2116 /* 2765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
2117 /* 2768 */ // Combiner Rule #44: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
2118 /* 2768 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
2119 /* 2771 */ // Label 147: @2771
2120 /* 2771 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2786), // Rule ID 54 //
2121 /* 2776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
2122 /* 2779 */ // MIs[0] dst
2123 /* 2779 */ // No operand predicates
2124 /* 2779 */ // MIs[0] Operand 1
2125 /* 2779 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
2126 /* 2783 */ // Combiner Rule #35: itof_const_zero_fold_si
2127 /* 2783 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2128 /* 2786 */ // Label 148: @2786
2129 /* 2786 */ GIM_Reject,
2130 /* 2787 */ // Label 45: @2787
2131 /* 2787 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2798), // Rule ID 71 //
2132 /* 2792 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
2133 /* 2795 */ // Combiner Rule #44: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
2134 /* 2795 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
2135 /* 2798 */ // Label 149: @2798
2136 /* 2798 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2813), // Rule ID 55 //
2137 /* 2803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
2138 /* 2806 */ // MIs[0] dst
2139 /* 2806 */ // No operand predicates
2140 /* 2806 */ // MIs[0] Operand 1
2141 /* 2806 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
2142 /* 2810 */ // Combiner Rule #36: itof_const_zero_fold_ui
2143 /* 2810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2144 /* 2813 */ // Label 150: @2813
2145 /* 2813 */ GIM_Reject,
2146 /* 2814 */ // Label 46: @2814
2147 /* 2814 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2843), // Rule ID 105 //
2148 /* 2819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
2149 /* 2822 */ // MIs[0] dst
2150 /* 2822 */ // No operand predicates
2151 /* 2822 */ // MIs[0] src
2152 /* 2822 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2153 /* 2826 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
2154 /* 2830 */ // MIs[1] __idempotent_prop_match_0.x
2155 /* 2830 */ // No operand predicates
2156 /* 2830 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2157 /* 2835 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2158 /* 2837 */ // Combiner Rule #61: idempotent_prop @ [__idempotent_prop_match_0[1]]
2159 /* 2837 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2160 /* 2842 */ GIR_EraseRootFromParent_Done,
2161 /* 2843 */ // Label 151: @2843
2162 /* 2843 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2864), // Rule ID 42 //
2163 /* 2848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
2164 /* 2851 */ // MIs[0] dst
2165 /* 2851 */ // No operand predicates
2166 /* 2851 */ // MIs[0] src0
2167 /* 2851 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2168 /* 2855 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2169 /* 2859 */ // MIs[1] cst
2170 /* 2859 */ // No operand predicates
2171 /* 2859 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2172 /* 2861 */ // Combiner Rule #23: constant_fold_fabs
2173 /* 2861 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2174 /* 2864 */ // Label 152: @2864
2175 /* 2864 */ GIM_Reject,
2176 /* 2865 */ // Label 47: @2865
2177 /* 2865 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2894), // Rule ID 106 //
2178 /* 2870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
2179 /* 2873 */ // MIs[0] dst
2180 /* 2873 */ // No operand predicates
2181 /* 2873 */ // MIs[0] src
2182 /* 2873 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2183 /* 2877 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
2184 /* 2881 */ // MIs[1] __idempotent_prop_match_0.x
2185 /* 2881 */ // No operand predicates
2186 /* 2881 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2187 /* 2886 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2188 /* 2888 */ // Combiner Rule #61: idempotent_prop @ [__idempotent_prop_match_0[2]]
2189 /* 2888 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2190 /* 2893 */ GIR_EraseRootFromParent_Done,
2191 /* 2894 */ // Label 153: @2894
2192 /* 2894 */ GIM_Reject,
2193 /* 2895 */ // Label 48: @2895
2194 /* 2895 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2906), // Rule ID 66 //
2195 /* 2900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2196 /* 2903 */ // Combiner Rule #42: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
2197 /* 2903 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
2198 /* 2906 */ // Label 154: @2906
2199 /* 2906 */ GIM_Reject,
2200 /* 2907 */ // Label 49: @2907
2201 /* 2907 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2918), // Rule ID 67 //
2202 /* 2912 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2203 /* 2915 */ // Combiner Rule #42: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
2204 /* 2915 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
2205 /* 2918 */ // Label 155: @2918
2206 /* 2918 */ GIM_Reject,
2207 /* 2919 */ // Label 50: @2919
2208 /* 2919 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2930), // Rule ID 68 //
2209 /* 2924 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2210 /* 2927 */ // Combiner Rule #42: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
2211 /* 2927 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
2212 /* 2930 */ // Label 156: @2930
2213 /* 2930 */ GIM_Reject,
2214 /* 2931 */ // Label 51: @2931
2215 /* 2931 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2942), // Rule ID 69 //
2216 /* 2936 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2217 /* 2939 */ // Combiner Rule #42: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
2218 /* 2939 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
2219 /* 2942 */ // Label 157: @2942
2220 /* 2942 */ GIM_Reject,
2221 /* 2943 */ // Label 52: @2943
2222 /* 2943 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2954), // Rule ID 39 //
2223 /* 2948 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
2224 /* 2951 */ // Combiner Rule #20: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
2225 /* 2951 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
2226 /* 2954 */ // Label 158: @2954
2227 /* 2954 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2965), // Rule ID 56 //
2228 /* 2959 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
2229 /* 2962 */ // Combiner Rule #37: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
2230 /* 2962 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
2231 /* 2965 */ // Label 159: @2965
2232 /* 2965 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2988), // Rule ID 8 //
2233 /* 2970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
2234 /* 2973 */ // MIs[0] dst
2235 /* 2973 */ // No operand predicates
2236 /* 2973 */ // MIs[0] lhs
2237 /* 2973 */ // No operand predicates
2238 /* 2973 */ // MIs[0] Operand 2
2239 /* 2973 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2240 /* 2977 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2241 /* 2982 */ // Combiner Rule #1: right_identity_zero @ [__right_identity_zero_match_0[7]]
2242 /* 2982 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2243 /* 2987 */ GIR_EraseRootFromParent_Done,
2244 /* 2988 */ // Label 160: @2988
2245 /* 2988 */ GIM_Reject,
2246 /* 2989 */ // Label 53: @2989
2247 /* 2989 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(3000), // Rule ID 82 //
2248 /* 2994 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
2249 /* 2997 */ // Combiner Rule #49: unary_undef_to_zero; wip_match_opcode 'G_ABS'
2250 /* 2997 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
2251 /* 3000 */ // Label 161: @3000
2252 /* 3000 */ GIM_Reject,
2253 /* 3001 */ // Label 54: @3001
2254 /* 3001 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(3012), // Rule ID 97 //
2255 /* 3006 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
2256 /* 3009 */ // Combiner Rule #55: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
2257 /* 3009 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
2258 /* 3012 */ // Label 162: @3012
2259 /* 3012 */ GIM_Reject,
2260 /* 3013 */ // Label 55: @3013
2261 /* 3013 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(3024), // Rule ID 98 //
2262 /* 3018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
2263 /* 3021 */ // Combiner Rule #55: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
2264 /* 3021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
2265 /* 3024 */ // Label 163: @3024
2266 /* 3024 */ GIM_Reject,
2267 /* 3025 */ // Label 56: @3025
2268 /* 3025 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(3036), // Rule ID 93 //
2269 /* 3030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
2270 /* 3033 */ // Combiner Rule #52: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
2271 /* 3033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
2272 /* 3036 */ // Label 164: @3036
2273 /* 3036 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(3047), // Rule ID 95 //
2274 /* 3041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
2275 /* 3044 */ // Combiner Rule #53: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
2276 /* 3044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
2277 /* 3047 */ // Label 165: @3047
2278 /* 3047 */ GIM_Reject,
2279 /* 3048 */ // Label 57: @3048
2280 /* 3048 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(3069), // Rule ID 47 //
2281 /* 3053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
2282 /* 3056 */ // MIs[0] dst
2283 /* 3056 */ // No operand predicates
2284 /* 3056 */ // MIs[0] src0
2285 /* 3056 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2286 /* 3060 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2287 /* 3064 */ // MIs[1] cst
2288 /* 3064 */ // No operand predicates
2289 /* 3064 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2290 /* 3066 */ // Combiner Rule #28: constant_fold_fceil
2291 /* 3066 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2292 /* 3069 */ // Label 166: @3069
2293 /* 3069 */ GIM_Reject,
2294 /* 3070 */ // Label 58: @3070
2295 /* 3070 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(3091), // Rule ID 43 //
2296 /* 3075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
2297 /* 3078 */ // MIs[0] dst
2298 /* 3078 */ // No operand predicates
2299 /* 3078 */ // MIs[0] src0
2300 /* 3078 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2301 /* 3082 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2302 /* 3086 */ // MIs[1] cst
2303 /* 3086 */ // No operand predicates
2304 /* 3086 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2305 /* 3088 */ // Combiner Rule #24: constant_fold_fsqrt
2306 /* 3088 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2307 /* 3091 */ // Label 167: @3091
2308 /* 3091 */ GIM_Reject,
2309 /* 3092 */ // Label 59: @3092
2310 /* 3092 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(3113), // Rule ID 48 //
2311 /* 3097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
2312 /* 3100 */ // MIs[0] dst
2313 /* 3100 */ // No operand predicates
2314 /* 3100 */ // MIs[0] src0
2315 /* 3100 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2316 /* 3104 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2317 /* 3108 */ // MIs[1] cst
2318 /* 3108 */ // No operand predicates
2319 /* 3108 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2320 /* 3110 */ // Combiner Rule #29: constant_fold_ffloor
2321 /* 3110 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2322 /* 3113 */ // Label 168: @3113
2323 /* 3113 */ GIM_Reject,
2324 /* 3114 */ // Label 60: @3114
2325 /* 3114 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3135), // Rule ID 52 //
2326 /* 3119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
2327 /* 3122 */ // MIs[0] dst
2328 /* 3122 */ // No operand predicates
2329 /* 3122 */ // MIs[0] src0
2330 /* 3122 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2331 /* 3126 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2332 /* 3130 */ // MIs[1] cst
2333 /* 3130 */ // No operand predicates
2334 /* 3130 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2335 /* 3132 */ // Combiner Rule #33: constant_fold_frint
2336 /* 3132 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2337 /* 3135 */ // Label 169: @3135
2338 /* 3135 */ GIM_Reject,
2339 /* 3136 */ // Label 61: @3136
2340 /* 3136 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3157), // Rule ID 53 //
2341 /* 3141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2342 /* 3144 */ // MIs[0] dst
2343 /* 3144 */ // No operand predicates
2344 /* 3144 */ // MIs[0] src0
2345 /* 3144 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2346 /* 3148 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2347 /* 3152 */ // MIs[1] cst
2348 /* 3152 */ // No operand predicates
2349 /* 3152 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2350 /* 3154 */ // Combiner Rule #34: constant_fold_fnearbyint
2351 /* 3154 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2352 /* 3157 */ // Label 170: @3157
2353 /* 3157 */ GIM_Reject,
2354 /* 3158 */ // Label 62: @3158
2355 /* 3158 */ GIM_Reject,
2356 /* 3159 */ }; // Size: 3159 bytes
2357 return MatchTable0;
2358}
2359#undef GIMT_Encode2
2360#undef GIMT_Encode4
2361#undef GIMT_Encode8
2362
2363#endif // ifdef GET_GICOMBINER_IMPL
2364
2365#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2366AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
2367AvailableFunctionFeatures()
2368#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2369#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2370, State(0),
2371ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
2372#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
2373
2374