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