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