1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AArch64PostLegalizerCombinerImpl 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 AArch64PostLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 9: // 3 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'c': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
46 break;
47 return 0; // "copy_prop"
48 case 'm': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "ul_const", 8) != 0)
50 break;
51 return 41; // "mul_const"
52 case 'o': // 1 string to match.
53 if (memcmp(RuleIdentifier.data()+1, "r_to_bsp", 8) != 0)
54 break;
55 return 127; // "or_to_bsp"
56 }
57 break;
58 case 10: // 2 strings to match.
59 switch (RuleIdentifier[0]) {
60 default: break;
61 case 'p': // 1 string to match.
62 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
63 break;
64 return 90; // "p2i_to_i2p"
65 case 's': // 1 string to match.
66 if (memcmp(RuleIdentifier.data()+1, "elect_not", 9) != 0)
67 break;
68 return 68; // "select_not"
69 }
70 break;
71 case 11: // 5 strings to match.
72 switch (RuleIdentifier[0]) {
73 default: break;
74 case 'a': // 1 string to match.
75 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
76 break;
77 return 98; // "add_sub_reg"
78 case 't': // 3 strings to match.
79 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
80 break;
81 switch (RuleIdentifier[6]) {
82 default: break;
83 case 's': // 2 strings to match.
84 if (memcmp(RuleIdentifier.data()+7, "sat", 3) != 0)
85 break;
86 switch (RuleIdentifier[10]) {
87 default: break;
88 case 's': // 1 string to match.
89 return 167; // "trunc_ssats"
90 case 'u': // 1 string to match.
91 return 168; // "trunc_ssatu"
92 }
93 break;
94 case 'u': // 1 string to match.
95 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
96 break;
97 return 169; // "trunc_usatu"
98 }
99 break;
100 case 'u': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
102 break;
103 return 73; // "unmerge_cst"
104 }
105 break;
106 case 12: // 4 strings to match.
107 switch (RuleIdentifier[0]) {
108 default: break;
109 case 'e': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+1, "xtmultomull", 11) != 0)
111 break;
112 return 165; // "extmultomull"
113 case 'r': // 1 string to match.
114 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
115 break;
116 return 40; // "redundant_or"
117 case 's': // 1 string to match.
118 if (memcmp(RuleIdentifier.data()+1, "ext_of_sext", 11) != 0)
119 break;
120 return 6; // "sext_of_sext"
121 case 'z': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
123 break;
124 return 4; // "zext_of_zext"
125 }
126 break;
127 case 13: // 7 strings to match.
128 switch (RuleIdentifier[0]) {
129 default: break;
130 case 'l': // 1 string to match.
131 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
132 break;
133 return 32; // "load_and_mask"
134 case 'm': // 2 strings to match.
135 switch (RuleIdentifier[1]) {
136 default: break;
137 case 'a': // 1 string to match.
138 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
139 break;
140 return 65; // "match_selects"
141 case 'e': // 1 string to match.
142 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
143 break;
144 return 72; // "merge_unmerge"
145 }
146 break;
147 case 'r': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
149 break;
150 return 37; // "redundant_and"
151 case 's': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "ame_val_zero", 12) != 0)
153 break;
154 return 87; // "same_val_zero"
155 case 'u': // 2 strings to match.
156 if (memcmp(RuleIdentifier.data()+1, "nmerge_", 7) != 0)
157 break;
158 switch (RuleIdentifier[8]) {
159 default: break;
160 case 'm': // 1 string to match.
161 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
162 break;
163 return 71; // "unmerge_merge"
164 case 'u': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
166 break;
167 return 74; // "unmerge_undef"
168 }
169 break;
170 }
171 break;
172 case 14: // 6 strings to match.
173 switch (RuleIdentifier[0]) {
174 default: break;
175 case 'a': // 2 strings to match.
176 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
177 break;
178 switch (RuleIdentifier[10]) {
179 default: break;
180 case 's': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
182 break;
183 return 10; // "anyext_of_sext"
184 case 'z': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
186 break;
187 return 9; // "anyext_of_zext"
188 }
189 break;
190 case 'b': // 1 string to match.
191 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
192 break;
193 return 86; // "binop_same_val"
194 case 'f': // 1 string to match.
195 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
196 break;
197 return 95; // "fneg_fneg_fold"
198 case 's': // 1 string to match.
199 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
200 break;
201 return 7; // "sext_of_anyext"
202 case 'z': // 1 string to match.
203 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
204 break;
205 return 5; // "zext_of_anyext"
206 }
207 break;
208 case 15: // 3 strings to match.
209 switch (RuleIdentifier[0]) {
210 default: break;
211 case 'e': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
213 break;
214 return 31; // "extending_loads"
215 case 'i': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_zext", 14) != 0)
217 break;
218 return 92; // "i2p_to_p2i_zext"
219 case 'o': // 1 string to match.
220 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
221 break;
222 return 110; // "overlapping_and"
223 }
224 break;
225 case 16: // 10 strings to match.
226 switch (RuleIdentifier[0]) {
227 default: break;
228 case 'a': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
230 break;
231 return 8; // "anyext_of_anyext"
232 case 'c': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "ombine_mul_cmlt", 15) != 0)
234 break;
235 return 163; // "combine_mul_cmlt"
236 case 'i': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_trunc", 15) != 0)
238 break;
239 return 93; // "i2p_to_p2i_trunc"
240 case 's': // 4 strings to match.
241 switch (RuleIdentifier[1]) {
242 default: break;
243 case 'e': // 3 strings to match.
244 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
245 break;
246 switch (RuleIdentifier[7]) {
247 default: break;
248 case 't': // 1 string to match.
249 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
250 break;
251 return 126; // "select_to_minmax"
252 case 'u': // 1 string to match.
253 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
254 break;
255 return 59; // "select_undef_cmp"
256 case 'z': // 1 string to match.
257 if (memcmp(RuleIdentifier.data()+8, "ero_true", 8) != 0)
258 break;
259 return 66; // "select_zero_true"
260 }
261 break;
262 case 'u': // 1 string to match.
263 if (memcmp(RuleIdentifier.data()+2, "baddmulreassoc", 14) != 0)
264 break;
265 return 166; // "subaddmulreassoc"
266 }
267 break;
268 case 't': // 2 strings to match.
269 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
270 break;
271 switch (RuleIdentifier[12]) {
272 default: break;
273 case 's': // 1 string to match.
274 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
275 break;
276 return 2; // "truncate_of_sext"
277 case 'z': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
279 break;
280 return 1; // "truncate_of_zext"
281 }
282 break;
283 case 'u': // 1 string to match.
284 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
285 break;
286 return 112; // "undef_to_fp_zero"
287 }
288 break;
289 case 17: // 8 strings to match.
290 switch (RuleIdentifier[0]) {
291 default: break;
292 case 'a': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
294 break;
295 return 94; // "anyext_trunc_fold"
296 case 'e': // 1 string to match.
297 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
298 break;
299 return 123; // "erase_undef_store"
300 case 'm': // 2 strings to match.
301 if (memcmp(RuleIdentifier.data()+1, "atch_addos_", 11) != 0)
302 break;
303 switch (RuleIdentifier[12]) {
304 default: break;
305 case 's': // 1 string to match.
306 if (memcmp(RuleIdentifier.data()+13, "addo", 4) != 0)
307 break;
308 return 55; // "match_addos_saddo"
309 case 'u': // 1 string to match.
310 if (memcmp(RuleIdentifier.data()+13, "addo", 4) != 0)
311 break;
312 return 56; // "match_addos_uaddo"
313 }
314 break;
315 case 's': // 2 strings to match.
316 if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
317 break;
318 switch (RuleIdentifier[7]) {
319 default: break;
320 case 't': // 1 string to match.
321 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
322 break;
323 return 64; // "select_to_iminmax"
324 case 'z': // 1 string to match.
325 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
326 break;
327 return 67; // "select_zero_false"
328 }
329 break;
330 case 't': // 1 string to match.
331 if (memcmp(RuleIdentifier.data()+1, "runc_or_to_addhn", 16) != 0)
332 break;
333 return 128; // "trunc_or_to_addhn"
334 case 'u': // 1 string to match.
335 if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0)
336 break;
337 return 113; // "undef_to_int_zero"
338 }
339 break;
340 case 18: // 6 strings to match.
341 switch (RuleIdentifier[0]) {
342 default: break;
343 case 'b': // 1 string to match.
344 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
345 break;
346 return 88; // "binop_left_to_zero"
347 case 'c': // 2 strings to match.
348 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
349 break;
350 switch (RuleIdentifier[15]) {
351 default: break;
352 case 'a': // 1 string to match.
353 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
354 break;
355 return 13; // "constant_fold_fabs"
356 case 'n': // 1 string to match.
357 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
358 break;
359 return 12; // "constant_fold_fneg"
360 }
361 break;
362 case 'f': // 2 strings to match.
363 switch (RuleIdentifier[1]) {
364 default: break;
365 case 'o': // 1 string to match.
366 if (memcmp(RuleIdentifier.data()+2, "ld_merge_to_zext", 16) != 0)
367 break;
368 return 69; // "fold_merge_to_zext"
369 case 'p': // 1 string to match.
370 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
371 break;
372 return 105; // "fptrunc_fpext_fold"
373 }
374 break;
375 case 't': // 1 string to match.
376 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
377 break;
378 return 3; // "truncate_of_anyext"
379 }
380 break;
381 case 19: // 14 strings to match.
382 switch (RuleIdentifier[0]) {
383 default: break;
384 case 'b': // 1 string to match.
385 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
386 break;
387 return 89; // "binop_right_to_zero"
388 case 'c': // 6 strings to match.
389 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_", 13) != 0)
390 break;
391 switch (RuleIdentifier[14]) {
392 default: break;
393 case 'b': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
395 break;
396 return 80; // "constant_fold_binop"
397 case 'f': // 5 strings to match.
398 switch (RuleIdentifier[15]) {
399 default: break;
400 case 'c': // 1 string to match.
401 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
402 break;
403 return 18; // "constant_fold_fceil"
404 case 'l': // 1 string to match.
405 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
406 break;
407 return 15; // "constant_fold_flog2"
408 case 'p': // 1 string to match.
409 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
410 break;
411 return 17; // "constant_fold_fpext"
412 case 'r': // 1 string to match.
413 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
414 break;
415 return 23; // "constant_fold_frint"
416 case 's': // 1 string to match.
417 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
418 break;
419 return 14; // "constant_fold_fsqrt"
420 }
421 break;
422 }
423 break;
424 case 'i': // 1 string to match.
425 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
426 break;
427 return 28; // "integer_of_truncate"
428 case 'm': // 1 string to match.
429 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
430 break;
431 return 78; // "merge_of_x_and_zero"
432 case 'p': // 1 string to match.
433 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
434 break;
435 return 109; // "ptr_add_immed_chain"
436 case 'r': // 2 strings to match.
437 switch (RuleIdentifier[1]) {
438 default: break;
439 case 'i': // 1 string to match.
440 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
441 break;
442 return 85; // "right_identity_zero"
443 case 'o': // 1 string to match.
444 if (memcmp(RuleIdentifier.data()+2, "tate_out_of_range", 17) != 0)
445 break;
446 return 51; // "rotate_out_of_range"
447 }
448 break;
449 case 's': // 1 string to match.
450 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_sextload", 18) != 0)
451 break;
452 return 35; // "sext_trunc_sextload"
453 case 'u': // 1 string to match.
454 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
455 break;
456 return 117; // "unary_undef_to_zero"
457 }
458 break;
459 case 20: // 9 strings to match.
460 switch (RuleIdentifier[0]) {
461 default: break;
462 case 'b': // 1 string to match.
463 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
464 break;
465 return 103; // "bitcast_bitcast_fold"
466 case 'c': // 2 strings to match.
467 if (RuleIdentifier[1] != 'o')
468 break;
469 switch (RuleIdentifier[2]) {
470 default: break;
471 case 'm': // 1 string to match.
472 if (memcmp(RuleIdentifier.data()+3, "bine_indexed_load", 17) != 0)
473 break;
474 return 33; // "combine_indexed_load"
475 case 'n': // 1 string to match.
476 if (memcmp(RuleIdentifier.data()+3, "stant_fold_ffloor", 17) != 0)
477 break;
478 return 19; // "constant_fold_ffloor"
479 }
480 break;
481 case 'i': // 1 string to match.
482 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_same_size", 19) != 0)
483 break;
484 return 91; // "i2p_to_p2i_same_size"
485 case 'm': // 1 string to match.
486 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
487 break;
488 return 77; // "merge_of_x_and_undef"
489 case 'r': // 1 string to match.
490 if (memcmp(RuleIdentifier.data()+1, "edundant_sext_inreg", 19) != 0)
491 break;
492 return 42; // "redundant_sext_inreg"
493 case 's': // 1 string to match.
494 if (memcmp(RuleIdentifier.data()+1, "plit_store_zero_128", 19) != 0)
495 break;
496 return 111; // "split_store_zero_128"
497 case 'u': // 2 strings to match.
498 if (RuleIdentifier[1] != 'n')
499 break;
500 switch (RuleIdentifier[2]) {
501 default: break;
502 case 'a': // 1 string to match.
503 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
504 break;
505 return 118; // "unary_undef_to_undef"
506 case 'm': // 1 string to match.
507 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
508 break;
509 return 76; // "unmerge_zext_to_zext"
510 }
511 break;
512 }
513 break;
514 case 21: // 10 strings to match.
515 switch (RuleIdentifier[0]) {
516 default: break;
517 case 'c': // 5 strings to match.
518 if (RuleIdentifier[1] != 'o')
519 break;
520 switch (RuleIdentifier[2]) {
521 default: break;
522 case 'm': // 3 strings to match.
523 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
524 break;
525 switch (RuleIdentifier[8]) {
526 default: break;
527 case 'b': // 1 string to match.
528 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
529 break;
530 return 79; // "combine_build_unmerge"
531 case 'c': // 1 string to match.
532 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
533 break;
534 return 129; // "combine_concat_vector"
535 case 'i': // 1 string to match.
536 if (memcmp(RuleIdentifier.data()+9, "ndexed_store", 12) != 0)
537 break;
538 return 34; // "combine_indexed_store"
539 }
540 break;
541 case 'n': // 2 strings to match.
542 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
543 break;
544 switch (RuleIdentifier[14]) {
545 default: break;
546 case 'c': // 1 string to match.
547 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
548 break;
549 return 82; // "constant_fold_cast_op"
550 case 'f': // 1 string to match.
551 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
552 break;
553 return 16; // "constant_fold_fptrunc"
554 }
555 break;
556 }
557 break;
558 case 'l': // 1 string to match.
559 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
560 break;
561 return 171; // "lshr_of_trunc_of_lshr"
562 case 'r': // 1 string to match.
563 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
564 break;
565 return 97; // "right_identity_one_fp"
566 case 's': // 1 string to match.
567 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_equiv", 20) != 0)
568 break;
569 return 84; // "select_same_val_equiv"
570 case 'u': // 2 strings to match.
571 if (RuleIdentifier[1] != 'n')
572 break;
573 switch (RuleIdentifier[2]) {
574 default: break;
575 case 'd': // 1 string to match.
576 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
577 break;
578 return 114; // "undef_to_negative_one"
579 case 'm': // 1 string to match.
580 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
581 break;
582 return 75; // "unmerge_dead_to_trunc"
583 }
584 break;
585 }
586 break;
587 case 22: // 5 strings to match.
588 switch (RuleIdentifier[0]) {
589 default: break;
590 case 'c': // 1 string to match.
591 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0)
592 break;
593 return 81; // "constant_fold_fp_binop"
594 case 'p': // 1 string to match.
595 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
596 break;
597 return 119; // "propagate_undef_any_op"
598 case 'r': // 1 string to match.
599 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
600 break;
601 return 96; // "right_identity_one_int"
602 case 's': // 1 string to match.
603 if (memcmp(RuleIdentifier.data()+1, "implify_demanded_bits", 21) != 0)
604 break;
605 return 173; // "simplify_demanded_bits"
606 case 't': // 1 string to match.
607 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
608 break;
609 return 101; // "trunc_buildvector_fold"
610 }
611 break;
612 case 23: // 5 strings to match.
613 switch (RuleIdentifier[0]) {
614 default: break;
615 case 'b': // 1 string to match.
616 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
617 break;
618 return 27; // "buildvector_of_truncate"
619 case 'i': // 2 strings to match.
620 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
621 break;
622 switch (RuleIdentifier[21]) {
623 default: break;
624 case 's': // 1 string to match.
625 if (RuleIdentifier[22] != 'i')
626 break;
627 return 25; // "itof_const_zero_fold_si"
628 case 'u': // 1 string to match.
629 if (RuleIdentifier[22] != 'i')
630 break;
631 return 26; // "itof_const_zero_fold_ui"
632 }
633 break;
634 case 's': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_trivial", 22) != 0)
636 break;
637 return 83; // "select_same_val_trivial"
638 case 't': // 1 string to match.
639 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
640 break;
641 return 170; // "truncusatu_to_fptouisat"
642 }
643 break;
644 case 24: // 5 strings to match.
645 switch (RuleIdentifier[0]) {
646 default: break;
647 case 'b': // 1 string to match.
648 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
649 break;
650 return 115; // "binop_left_undef_to_zero"
651 case 'c': // 1 string to match.
652 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
653 break;
654 return 24; // "constant_fold_fnearbyint"
655 case 's': // 2 strings to match.
656 if (RuleIdentifier[1] != 'e')
657 break;
658 switch (RuleIdentifier[2]) {
659 default: break;
660 case 'l': // 1 string to match.
661 if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp_true", 21) != 0)
662 break;
663 return 61; // "select_constant_cmp_true"
664 case 'x': // 1 string to match.
665 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_sext_inreg", 21) != 0)
666 break;
667 return 11; // "sext_inreg_of_sext_inreg"
668 }
669 break;
670 case 'x': // 1 string to match.
671 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
672 break;
673 return 38; // "xor_of_and_with_same_reg"
674 }
675 break;
676 case 25: // 7 strings to match.
677 switch (RuleIdentifier[0]) {
678 default: break;
679 case 'b': // 2 strings to match.
680 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_", 21) != 0)
681 break;
682 switch (RuleIdentifier[22]) {
683 default: break;
684 case 'a': // 1 string to match.
685 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
686 break;
687 return 48; // "bitfield_extract_from_and"
688 case 's': // 1 string to match.
689 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
690 break;
691 return 49; // "bitfield_extract_from_shr"
692 }
693 break;
694 case 'e': // 1 string to match.
695 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
696 break;
697 return 160; // "extract_vec_elt_build_vec"
698 case 'r': // 3 strings to match.
699 switch (RuleIdentifier[1]) {
700 default: break;
701 case 'e': // 2 strings to match.
702 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
703 break;
704 switch (RuleIdentifier[10]) {
705 default: break;
706 case 'a': // 1 string to match.
707 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
708 break;
709 return 44; // "redundant_aext_sext_inreg"
710 case 'z': // 1 string to match.
711 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
712 break;
713 return 43; // "redundant_zext_sext_inreg"
714 }
715 break;
716 case 'i': // 1 string to match.
717 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
718 break;
719 return 108; // "right_identity_neg_one_fp"
720 }
721 break;
722 case 's': // 1 string to match.
723 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_false", 24) != 0)
724 break;
725 return 60; // "select_constant_cmp_false"
726 }
727 break;
728 case 26: // 6 strings to match.
729 switch (RuleIdentifier[0]) {
730 default: break;
731 case 'b': // 2 strings to match.
732 if (RuleIdentifier[1] != 'i')
733 break;
734 switch (RuleIdentifier[2]) {
735 default: break;
736 case 'n': // 1 string to match.
737 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
738 break;
739 return 116; // "binop_right_undef_to_undef"
740 case 't': // 1 string to match.
741 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
742 break;
743 return 104; // "bitcast_bitcast_to_bitcast"
744 }
745 break;
746 case 'e': // 1 string to match.
747 if (memcmp(RuleIdentifier.data()+1, "xtractvecelt_pairwise_add", 25) != 0)
748 break;
749 return 39; // "extractvecelt_pairwise_add"
750 case 'm': // 2 strings to match.
751 if (memcmp(RuleIdentifier.data()+1, "utate_anyext_to_zext_", 21) != 0)
752 break;
753 switch (RuleIdentifier[22]) {
754 default: break;
755 case 'f': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+23, "cmp", 3) != 0)
757 break;
758 return 30; // "mutate_anyext_to_zext_fcmp"
759 case 'i': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+23, "cmp", 3) != 0)
761 break;
762 return 29; // "mutate_anyext_to_zext_icmp"
763 }
764 break;
765 case 'r': // 1 string to match.
766 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
767 break;
768 return 106; // "right_identity_neg_zero_fp"
769 }
770 break;
771 case 27: // 3 strings to match.
772 switch (RuleIdentifier[0]) {
773 default: break;
774 case 'c': // 1 string to match.
775 if (memcmp(RuleIdentifier.data()+1, "ombine_use_vector_truncate", 26) != 0)
776 break;
777 return 164; // "combine_use_vector_truncate"
778 case 't': // 1 string to match.
779 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
780 break;
781 return 102; // "trunc_lshr_buildvector_fold"
782 case 'u': // 1 string to match.
783 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
784 break;
785 return 70; // "unmerge_anyext_build_vector"
786 }
787 break;
788 case 28: // 8 strings to match.
789 switch (RuleIdentifier[0]) {
790 default: break;
791 case 'G': // 1 string to match.
792 if (memcmp(RuleIdentifier.data()+1, "_OR_commute_constant_to_rhs", 27) != 0)
793 break;
794 return 134; // "G_OR_commute_constant_to_rhs"
795 case 'b': // 1 string to match.
796 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold_bv", 27) != 0)
797 break;
798 return 99; // "buildvector_identity_fold_bv"
799 case 'i': // 1 string to match.
800 if (memcmp(RuleIdentifier.data()+1, "nsert_vec_elt_out_of_bounds", 27) != 0)
801 break;
802 return 124; // "insert_vec_elt_out_of_bounds"
803 case 'm': // 4 strings to match.
804 if (memcmp(RuleIdentifier.data()+1, "atch_", 5) != 0)
805 break;
806 switch (RuleIdentifier[6]) {
807 default: break;
808 case 'a': // 2 strings to match.
809 if (memcmp(RuleIdentifier.data()+7, "ddos_", 5) != 0)
810 break;
811 switch (RuleIdentifier[12]) {
812 default: break;
813 case 's': // 1 string to match.
814 if (memcmp(RuleIdentifier.data()+13, "addo_dead_carry", 15) != 0)
815 break;
816 return 53; // "match_addos_saddo_dead_carry"
817 case 'u': // 1 string to match.
818 if (memcmp(RuleIdentifier.data()+13, "addo_dead_carry", 15) != 0)
819 break;
820 return 54; // "match_addos_uaddo_dead_carry"
821 }
822 break;
823 case 's': // 2 strings to match.
824 if (memcmp(RuleIdentifier.data()+7, "ubo_no_overflow_", 16) != 0)
825 break;
826 switch (RuleIdentifier[23]) {
827 default: break;
828 case 's': // 1 string to match.
829 if (memcmp(RuleIdentifier.data()+24, "subo", 4) != 0)
830 break;
831 return 57; // "match_subo_no_overflow_ssubo"
832 case 'u': // 1 string to match.
833 if (memcmp(RuleIdentifier.data()+24, "subo", 4) != 0)
834 break;
835 return 58; // "match_subo_no_overflow_usubo"
836 }
837 break;
838 }
839 break;
840 case 'p': // 1 string to match.
841 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
842 break;
843 return 122; // "propagate_undef_shuffle_mask"
844 }
845 break;
846 case 29: // 10 strings to match.
847 switch (RuleIdentifier[0]) {
848 default: break;
849 case 'G': // 4 strings to match.
850 if (RuleIdentifier[1] != '_')
851 break;
852 switch (RuleIdentifier[2]) {
853 default: break;
854 case 'A': // 2 strings to match.
855 switch (RuleIdentifier[3]) {
856 default: break;
857 case 'D': // 1 string to match.
858 if (memcmp(RuleIdentifier.data()+4, "D_commute_constant_to_rhs", 25) != 0)
859 break;
860 return 131; // "G_ADD_commute_constant_to_rhs"
861 case 'N': // 1 string to match.
862 if (memcmp(RuleIdentifier.data()+4, "D_commute_constant_to_rhs", 25) != 0)
863 break;
864 return 133; // "G_AND_commute_constant_to_rhs"
865 }
866 break;
867 case 'M': // 1 string to match.
868 if (memcmp(RuleIdentifier.data()+3, "UL_commute_constant_to_rhs", 26) != 0)
869 break;
870 return 132; // "G_MUL_commute_constant_to_rhs"
871 case 'X': // 1 string to match.
872 if (memcmp(RuleIdentifier.data()+3, "OR_commute_constant_to_rhs", 26) != 0)
873 break;
874 return 135; // "G_XOR_commute_constant_to_rhs"
875 }
876 break;
877 case 'b': // 2 strings to match.
878 switch (RuleIdentifier[1]) {
879 default: break;
880 case 'i': // 1 string to match.
881 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_shr_and", 27) != 0)
882 break;
883 return 50; // "bitfield_extract_from_shr_and"
884 case 'u': // 1 string to match.
885 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold_bvt", 27) != 0)
886 break;
887 return 100; // "buildvector_identity_fold_bvt"
888 }
889 break;
890 case 'c': // 2 strings to match.
891 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_", 23) != 0)
892 break;
893 switch (RuleIdentifier[24]) {
894 default: break;
895 case 'r': // 1 string to match.
896 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
897 break;
898 return 21; // "constant_fold_intrinsic_round"
899 case 't': // 1 string to match.
900 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
901 break;
902 return 20; // "constant_fold_intrinsic_trunc"
903 }
904 break;
905 case 'e': // 1 string to match.
906 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_out_of_bounds", 28) != 0)
907 break;
908 return 125; // "extract_vec_elt_out_of_bounds"
909 case 'i': // 1 string to match.
910 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
911 break;
912 return 52; // "icmp_to_true_false_known_bits"
913 }
914 break;
915 case 30: // 5 strings to match.
916 switch (RuleIdentifier[0]) {
917 default: break;
918 case 'G': // 4 strings to match.
919 if (RuleIdentifier[1] != '_')
920 break;
921 switch (RuleIdentifier[2]) {
922 default: break;
923 case 'S': // 2 strings to match.
924 if (RuleIdentifier[3] != 'M')
925 break;
926 switch (RuleIdentifier[4]) {
927 default: break;
928 case 'A': // 1 string to match.
929 if (memcmp(RuleIdentifier.data()+5, "X_commute_constant_to_rhs", 25) != 0)
930 break;
931 return 137; // "G_SMAX_commute_constant_to_rhs"
932 case 'I': // 1 string to match.
933 if (memcmp(RuleIdentifier.data()+5, "N_commute_constant_to_rhs", 25) != 0)
934 break;
935 return 136; // "G_SMIN_commute_constant_to_rhs"
936 }
937 break;
938 case 'U': // 2 strings to match.
939 if (RuleIdentifier[3] != 'M')
940 break;
941 switch (RuleIdentifier[4]) {
942 default: break;
943 case 'A': // 1 string to match.
944 if (memcmp(RuleIdentifier.data()+5, "X_commute_constant_to_rhs", 25) != 0)
945 break;
946 return 139; // "G_UMAX_commute_constant_to_rhs"
947 case 'I': // 1 string to match.
948 if (memcmp(RuleIdentifier.data()+5, "N_commute_constant_to_rhs", 25) != 0)
949 break;
950 return 138; // "G_UMIN_commute_constant_to_rhs"
951 }
952 break;
953 }
954 break;
955 case 'r': // 1 string to match.
956 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
957 break;
958 return 107; // "right_identity_neg_zero_fp_nsz"
959 }
960 break;
961 case 31: // 7 strings to match.
962 switch (RuleIdentifier[0]) {
963 default: break;
964 case 'G': // 6 strings to match.
965 if (RuleIdentifier[1] != '_')
966 break;
967 switch (RuleIdentifier[2]) {
968 default: break;
969 case 'S': // 3 strings to match.
970 switch (RuleIdentifier[3]) {
971 default: break;
972 case 'A': // 1 string to match.
973 if (memcmp(RuleIdentifier.data()+4, "DDO_commute_constant_to_rhs", 27) != 0)
974 break;
975 return 149; // "G_SADDO_commute_constant_to_rhs"
976 case 'M': // 2 strings to match.
977 if (memcmp(RuleIdentifier.data()+4, "UL", 2) != 0)
978 break;
979 switch (RuleIdentifier[6]) {
980 default: break;
981 case 'H': // 1 string to match.
982 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
983 break;
984 return 141; // "G_SMULH_commute_constant_to_rhs"
985 case 'O': // 1 string to match.
986 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
987 break;
988 return 151; // "G_SMULO_commute_constant_to_rhs"
989 }
990 break;
991 }
992 break;
993 case 'U': // 3 strings to match.
994 switch (RuleIdentifier[3]) {
995 default: break;
996 case 'A': // 1 string to match.
997 if (memcmp(RuleIdentifier.data()+4, "DDO_commute_constant_to_rhs", 27) != 0)
998 break;
999 return 148; // "G_UADDO_commute_constant_to_rhs"
1000 case 'M': // 2 strings to match.
1001 if (memcmp(RuleIdentifier.data()+4, "UL", 2) != 0)
1002 break;
1003 switch (RuleIdentifier[6]) {
1004 default: break;
1005 case 'H': // 1 string to match.
1006 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
1007 break;
1008 return 140; // "G_UMULH_commute_constant_to_rhs"
1009 case 'O': // 1 string to match.
1010 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
1011 break;
1012 return 150; // "G_UMULO_commute_constant_to_rhs"
1013 }
1014 break;
1015 }
1016 break;
1017 }
1018 break;
1019 case 'c': // 1 string to match.
1020 if (memcmp(RuleIdentifier.data()+1, "ombine_build_vector_of_bitcast", 30) != 0)
1021 break;
1022 return 130; // "combine_build_vector_of_bitcast"
1023 }
1024 break;
1025 case 32: // 2 strings to match.
1026 switch (RuleIdentifier[0]) {
1027 default: break;
1028 case 'b': // 1 string to match.
1029 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1030 break;
1031 return 47; // "bitfield_extract_from_sext_inreg"
1032 case 's': // 1 string to match.
1033 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general_true", 31) != 0)
1034 break;
1035 return 63; // "select_constant_cmp_general_true"
1036 }
1037 break;
1038 case 33: // 10 strings to match.
1039 switch (RuleIdentifier[0]) {
1040 default: break;
1041 case 'G': // 6 strings to match.
1042 if (RuleIdentifier[1] != '_')
1043 break;
1044 switch (RuleIdentifier[2]) {
1045 default: break;
1046 case 'F': // 2 strings to match.
1047 switch (RuleIdentifier[3]) {
1048 default: break;
1049 case 'A': // 1 string to match.
1050 if (memcmp(RuleIdentifier.data()+4, "DD_commute_fp_constant_to_rhs", 29) != 0)
1051 break;
1052 return 152; // "G_FADD_commute_fp_constant_to_rhs"
1053 case 'M': // 1 string to match.
1054 if (memcmp(RuleIdentifier.data()+4, "UL_commute_fp_constant_to_rhs", 29) != 0)
1055 break;
1056 return 153; // "G_FMUL_commute_fp_constant_to_rhs"
1057 }
1058 break;
1059 case 'S': // 2 strings to match.
1060 switch (RuleIdentifier[3]) {
1061 default: break;
1062 case 'A': // 1 string to match.
1063 if (memcmp(RuleIdentifier.data()+4, "DDSAT_commute_constant_to_rhs", 29) != 0)
1064 break;
1065 return 143; // "G_SADDSAT_commute_constant_to_rhs"
1066 case 'M': // 1 string to match.
1067 if (memcmp(RuleIdentifier.data()+4, "ULFIX_commute_constant_to_rhs", 29) != 0)
1068 break;
1069 return 144; // "G_SMULFIX_commute_constant_to_rhs"
1070 }
1071 break;
1072 case 'U': // 2 strings to match.
1073 switch (RuleIdentifier[3]) {
1074 default: break;
1075 case 'A': // 1 string to match.
1076 if (memcmp(RuleIdentifier.data()+4, "DDSAT_commute_constant_to_rhs", 29) != 0)
1077 break;
1078 return 142; // "G_UADDSAT_commute_constant_to_rhs"
1079 case 'M': // 1 string to match.
1080 if (memcmp(RuleIdentifier.data()+4, "ULFIX_commute_constant_to_rhs", 29) != 0)
1081 break;
1082 return 145; // "G_UMULFIX_commute_constant_to_rhs"
1083 }
1084 break;
1085 }
1086 break;
1087 case 'c': // 1 string to match.
1088 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
1089 break;
1090 return 22; // "constant_fold_intrinsic_roundeven"
1091 case 'r': // 2 strings to match.
1092 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1093 break;
1094 switch (RuleIdentifier[10]) {
1095 default: break;
1096 case 'a': // 1 string to match.
1097 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1098 break;
1099 return 45; // "redundant_aext_unmerge_sext_inreg"
1100 case 'z': // 1 string to match.
1101 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1102 break;
1103 return 46; // "redundant_zext_unmerge_sext_inreg"
1104 }
1105 break;
1106 case 's': // 1 string to match.
1107 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general_false", 32) != 0)
1108 break;
1109 return 62; // "select_constant_cmp_general_false"
1110 }
1111 break;
1112 case 34: // 1 string to match.
1113 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1114 break;
1115 return 161; // "extract_all_elts_from_build_vector"
1116 case 36: // 5 strings to match.
1117 switch (RuleIdentifier[0]) {
1118 default: break;
1119 case 'G': // 4 strings to match.
1120 if (RuleIdentifier[1] != '_')
1121 break;
1122 switch (RuleIdentifier[2]) {
1123 default: break;
1124 case 'F': // 2 strings to match.
1125 if (RuleIdentifier[3] != 'M')
1126 break;
1127 switch (RuleIdentifier[4]) {
1128 default: break;
1129 case 'A': // 1 string to match.
1130 if (memcmp(RuleIdentifier.data()+5, "XNUM_commute_fp_constant_to_rhs", 31) != 0)
1131 break;
1132 return 155; // "G_FMAXNUM_commute_fp_constant_to_rhs"
1133 case 'I': // 1 string to match.
1134 if (memcmp(RuleIdentifier.data()+5, "NNUM_commute_fp_constant_to_rhs", 31) != 0)
1135 break;
1136 return 154; // "G_FMINNUM_commute_fp_constant_to_rhs"
1137 }
1138 break;
1139 case 'S': // 1 string to match.
1140 if (memcmp(RuleIdentifier.data()+3, "MULFIXSAT_commute_constant_to_rhs", 33) != 0)
1141 break;
1142 return 146; // "G_SMULFIXSAT_commute_constant_to_rhs"
1143 case 'U': // 1 string to match.
1144 if (memcmp(RuleIdentifier.data()+3, "MULFIXSAT_commute_constant_to_rhs", 33) != 0)
1145 break;
1146 return 147; // "G_UMULFIXSAT_commute_constant_to_rhs"
1147 }
1148 break;
1149 case 'p': // 1 string to match.
1150 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops_build_vector", 35) != 0)
1151 break;
1152 return 121; // "propagate_undef_all_ops_build_vector"
1153 }
1154 break;
1155 case 37: // 3 strings to match.
1156 switch (RuleIdentifier[0]) {
1157 default: break;
1158 case 'G': // 2 strings to match.
1159 if (memcmp(RuleIdentifier.data()+1, "_FM", 3) != 0)
1160 break;
1161 switch (RuleIdentifier[4]) {
1162 default: break;
1163 case 'A': // 1 string to match.
1164 if (memcmp(RuleIdentifier.data()+5, "XIMUM_commute_fp_constant_to_rhs", 32) != 0)
1165 break;
1166 return 159; // "G_FMAXIMUM_commute_fp_constant_to_rhs"
1167 case 'I': // 1 string to match.
1168 if (memcmp(RuleIdentifier.data()+5, "NIMUM_commute_fp_constant_to_rhs", 32) != 0)
1169 break;
1170 return 158; // "G_FMINIMUM_commute_fp_constant_to_rhs"
1171 }
1172 break;
1173 case 'h': // 1 string to match.
1174 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1175 break;
1176 return 36; // "hoist_logic_op_with_same_opcode_hands"
1177 }
1178 break;
1179 case 38: // 1 string to match.
1180 if (memcmp(RuleIdentifier.data()+0, "propagate_undef_all_ops_shuffle_vector", 38) != 0)
1181 break;
1182 return 120; // "propagate_undef_all_ops_shuffle_vector"
1183 case 41: // 2 strings to match.
1184 if (memcmp(RuleIdentifier.data()+0, "G_FM", 4) != 0)
1185 break;
1186 switch (RuleIdentifier[4]) {
1187 default: break;
1188 case 'A': // 1 string to match.
1189 if (memcmp(RuleIdentifier.data()+5, "XNUM_IEEE_commute_fp_constant_to_rhs", 36) != 0)
1190 break;
1191 return 157; // "G_FMAXNUM_IEEE_commute_fp_constant_to_rhs"
1192 case 'I': // 1 string to match.
1193 if (memcmp(RuleIdentifier.data()+5, "NNUM_IEEE_commute_fp_constant_to_rhs", 36) != 0)
1194 break;
1195 return 156; // "G_FMINNUM_IEEE_commute_fp_constant_to_rhs"
1196 }
1197 break;
1198 case 46: // 2 strings to match.
1199 switch (RuleIdentifier[0]) {
1200 default: break;
1201 case 'f': // 1 string to match.
1202 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift_constants_are_legal", 45) != 0)
1203 break;
1204 return 172; // "funnel_shift_from_or_shift_constants_are_legal"
1205 case 'p': // 1 string to match.
1206 if (memcmp(RuleIdentifier.data()+1, "ush_freeze_to_prevent_poison_from_propagating", 45) != 0)
1207 break;
1208 return 162; // "push_freeze_to_prevent_poison_from_propagating"
1209 }
1210 break;
1211 }
1212#endif // ifndef NDEBUG
1213
1214 return std::nullopt;
1215}
1216static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1217 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1218 if (!RangePair.second.empty()) {
1219 const auto First = getRuleIdxForIdentifier(RangePair.first);
1220 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1221 if (!First || !Last)
1222 return std::nullopt;
1223 if (First >= Last)
1224 report_fatal_error("Beginning of range should be before end of range");
1225 return {{*First, *Last + 1}};
1226 }
1227 if (RangePair.first == "*") {
1228 return {{0, 174}};
1229 }
1230 const auto I = getRuleIdxForIdentifier(RangePair.first);
1231 if (!I)
1232 return std::nullopt;
1233 return {{*I, *I + 1}};
1234}
1235
1236bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1237 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1238 if (!MaybeRange)
1239 return false;
1240 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1241 DisabledRules.reset(I);
1242 return true;
1243}
1244
1245bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1246 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1247 if (!MaybeRange)
1248 return false;
1249 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1250 DisabledRules.set(I);
1251 return true;
1252}
1253
1254static std::vector<std::string> AArch64PostLegalizerCombinerOption;
1255static cl::list<std::string> AArch64PostLegalizerCombinerDisableOption(
1256 "aarch64postlegalizercombiner-disable-rule",
1257 cl::desc("Disable one or more combiner rules temporarily in the AArch64PostLegalizerCombiner pass"),
1258 cl::CommaSeparated,
1259 cl::Hidden,
1260 cl::cat(GICombinerOptionCategory),
1261 cl::callback([](const std::string &Str) {
1262 AArch64PostLegalizerCombinerOption.push_back(Str);
1263 }));
1264static cl::list<std::string> AArch64PostLegalizerCombinerOnlyEnableOption(
1265 "aarch64postlegalizercombiner-only-enable-rule",
1266 cl::desc("Disable all rules in the AArch64PostLegalizerCombiner pass then re-enable the specified ones"),
1267 cl::Hidden,
1268 cl::cat(GICombinerOptionCategory),
1269 cl::callback([](const std::string &CommaSeparatedArg) {
1270 StringRef Str = CommaSeparatedArg;
1271 AArch64PostLegalizerCombinerOption.push_back("*");
1272 do {
1273 auto X = Str.split(",");
1274 AArch64PostLegalizerCombinerOption.push_back(("!" + X.first).str());
1275 Str = X.second;
1276 } while (!Str.empty());
1277 }));
1278
1279
1280bool AArch64PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1281 return !DisabledRules.test(RuleID);
1282}
1283bool AArch64PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1284 for (StringRef Identifier : AArch64PostLegalizerCombinerOption) {
1285 bool Enabled = Identifier.consume_front("!");
1286 if (Enabled && !setRuleEnabled(Identifier))
1287 return false;
1288 if (!Enabled && !setRuleDisabled(Identifier))
1289 return false;
1290 }
1291 return true;
1292}
1293
1294
1295#endif // GET_GICOMBINER_TYPES
1296
1297#ifdef GET_GICOMBINER_TYPES
1298
1299const unsigned MAX_SUBTARGET_PREDICATES = 0;
1300using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1301
1302#endif // GET_GICOMBINER_TYPES
1303
1304#ifdef GET_GICOMBINER_CLASS_MEMBERS
1305
1306 bool canMatchOpcode(unsigned Opc) const override;
1307 uint32_t getRootFlagsToDrop() const override;
1308
1309#endif // GET_GICOMBINER_CLASS_MEMBERS
1310
1311#ifdef GET_GICOMBINER_CLASS_MEMBERS
1312
1313PredicateBitset AvailableModuleFeatures;
1314mutable PredicateBitset AvailableFunctionFeatures;
1315PredicateBitset getAvailableFeatures() const {
1316 return AvailableModuleFeatures | AvailableFunctionFeatures;
1317}
1318PredicateBitset
1319computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
1320PredicateBitset
1321computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
1322 const MachineFunction *MF) const;
1323void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1324
1325#endif // GET_GICOMBINER_CLASS_MEMBERS
1326
1327#ifdef GET_GICOMBINER_CLASS_MEMBERS
1328
1329 mutable MatcherState State;
1330 typedef ComplexRendererFns(AArch64PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1331 typedef void(AArch64PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1332 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1333 static AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1334 static AArch64PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1335 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1336 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1337 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1338 const uint8_t *getMatchTable() const override;
1339 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1340 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1341 bool testSimplePredicate(unsigned PredicateID) const override;
1342 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1343
1344#endif // GET_GICOMBINER_CLASS_MEMBERS
1345
1346#ifdef GET_GICOMBINER_IMPL
1347
1348// LLT Objects.
1349enum {
1350 GILLT_s1,
1351};
1352const static size_t NumTypeObjects = 1;
1353const static LLT TypeObjects[] = {
1354 LLT::scalar(1),
1355};
1356
1357// Bits for subtarget features that participate in instruction matching.
1358enum SubtargetFeatureBits : uint8_t {
1359};
1360
1361PredicateBitset AArch64PostLegalizerCombinerImpl::
1362computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
1363 PredicateBitset Features{};
1364 return Features;
1365}
1366
1367void AArch64PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1368 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
1369}
1370PredicateBitset AArch64PostLegalizerCombinerImpl::
1371computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
1372 PredicateBitset Features{};
1373 return Features;
1374}
1375
1376// Feature bitsets.
1377enum {
1378 GIFBS_Invalid,
1379};
1380constexpr static PredicateBitset FeatureBitsets[] {
1381 {}, // GIFBS_Invalid
1382};
1383
1384// ComplexPattern predicates.
1385enum {
1386 GICP_Invalid,
1387};
1388// See constructor for table contents
1389
1390AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn
1391AArch64PostLegalizerCombinerImpl::ComplexPredicateFns[] = {
1392 nullptr, // GICP_Invalid
1393};
1394
1395enum {
1396 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1397 GICXXPred_MI_Predicate_GICombiner1,
1398 GICXXPred_MI_Predicate_GICombiner2,
1399 GICXXPred_MI_Predicate_GICombiner3,
1400 GICXXPred_MI_Predicate_GICombiner4,
1401 GICXXPred_MI_Predicate_GICombiner5,
1402 GICXXPred_MI_Predicate_GICombiner6,
1403 GICXXPred_MI_Predicate_GICombiner7,
1404 GICXXPred_MI_Predicate_GICombiner8,
1405 GICXXPred_MI_Predicate_GICombiner9,
1406 GICXXPred_MI_Predicate_GICombiner10,
1407 GICXXPred_MI_Predicate_GICombiner11,
1408 GICXXPred_MI_Predicate_GICombiner12,
1409 GICXXPred_MI_Predicate_GICombiner13,
1410 GICXXPred_MI_Predicate_GICombiner14,
1411 GICXXPred_MI_Predicate_GICombiner15,
1412 GICXXPred_MI_Predicate_GICombiner16,
1413 GICXXPred_MI_Predicate_GICombiner17,
1414 GICXXPred_MI_Predicate_GICombiner18,
1415 GICXXPred_MI_Predicate_GICombiner19,
1416 GICXXPred_MI_Predicate_GICombiner20,
1417 GICXXPred_MI_Predicate_GICombiner21,
1418 GICXXPred_MI_Predicate_GICombiner22,
1419 GICXXPred_MI_Predicate_GICombiner23,
1420 GICXXPred_MI_Predicate_GICombiner24,
1421 GICXXPred_MI_Predicate_GICombiner25,
1422 GICXXPred_MI_Predicate_GICombiner26,
1423 GICXXPred_MI_Predicate_GICombiner27,
1424 GICXXPred_MI_Predicate_GICombiner28,
1425 GICXXPred_MI_Predicate_GICombiner29,
1426 GICXXPred_MI_Predicate_GICombiner30,
1427 GICXXPred_MI_Predicate_GICombiner31,
1428};
1429bool AArch64PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1430 switch (PredicateID) {
1431 case GICXXPred_MI_Predicate_GICombiner0: {
1432 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).isScalar();
1433 }
1434 case GICXXPred_MI_Predicate_GICombiner1: {
1435 return Helper.matchSextTruncSextLoad(*State.MIs[0]);
1436 }
1437 case GICXXPred_MI_Predicate_GICombiner2: {
1438 return Helper.matchRedundantSExtInReg(*State.MIs[0]);
1439 }
1440 case GICXXPred_MI_Predicate_GICombiner3: {
1441 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
1442 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
1443 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
1444 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
1445 llvm_unreachable("GICombiner3 should have returned");
1446 }
1447 case GICXXPred_MI_Predicate_GICombiner4: {
1448 return MRI.use_nodbg_empty(State.MIs[0]->getOperand(1).getReg()) &&
1449 Helper.isLegalOrBeforeLegalizer(
1450 {TargetOpcode::G_ADD,
1451 {MRI.getType(State.MIs[0]->getOperand(0).getReg())}});
1452 }
1453 case GICXXPred_MI_Predicate_GICombiner5: {
1454 auto C = isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI);
1455 return C && C->isZero();
1456 llvm_unreachable("GICombiner5 should have returned");
1457 }
1458 case GICXXPred_MI_Predicate_GICombiner6: {
1459 auto C = isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI);
1460 return C && !C->isZero();
1461 llvm_unreachable("GICombiner6 should have returned");
1462 }
1463 case GICXXPred_MI_Predicate_GICombiner7: {
1464 return !isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI) &&
1465 MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
1466 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
1467 }
1468 case GICXXPred_MI_Predicate_GICombiner8: {
1469 return MRI.getType(State.MIs[0]->getOperand(1).getReg()) == LLT::scalar(32);
1470 }
1471 case GICXXPred_MI_Predicate_GICombiner9: {
1472 return Helper.isLegalOrBeforeLegalizer(
1473 {TargetOpcode::G_ANYEXT,
1474 {MRI.getType(State.MIs[0]->getOperand(0).getReg()),
1475 MRI.getType(State.MIs[0]->getOperand(1).getReg())}});
1476 }
1477 case GICXXPred_MI_Predicate_GICombiner10: {
1478 return Helper.isLegalOrBeforeLegalizer(
1479 {TargetOpcode::G_ZEXT,
1480 {MRI.getType(State.MIs[0]->getOperand(0).getReg()),
1481 MRI.getType(State.MIs[0]->getOperand(1).getReg())}});
1482 }
1483 case GICXXPred_MI_Predicate_GICombiner11: {
1484 return Helper.matchSelectSameVal(*State.MIs[0]);
1485 }
1486 case GICXXPred_MI_Predicate_GICombiner12: {
1487 return Helper.matchConstantOp(State.MIs[0]->getOperand(1), 0);
1488 }
1489 case GICXXPred_MI_Predicate_GICombiner13: {
1490 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
1491 }
1492 case GICXXPred_MI_Predicate_GICombiner14: {
1493 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() ==
1494 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
1495 }
1496 case GICXXPred_MI_Predicate_GICombiner15: {
1497 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() >
1498 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
1499 }
1500 case GICXXPred_MI_Predicate_GICombiner16: {
1501 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() <
1502 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
1503 }
1504 case GICXXPred_MI_Predicate_GICombiner17: {
1505 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1506 }
1507 case GICXXPred_MI_Predicate_GICombiner18: {
1508 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
1509 }
1510 case GICXXPred_MI_Predicate_GICombiner19: {
1511 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1512 }
1513 case GICXXPred_MI_Predicate_GICombiner20: {
1514 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1515 }
1516 case GICXXPred_MI_Predicate_GICombiner21: {
1517 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1518 }
1519 case GICXXPred_MI_Predicate_GICombiner22: {
1520 return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);
1521 }
1522 case GICXXPred_MI_Predicate_GICombiner23: {
1523 return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
1524 }
1525 case GICXXPred_MI_Predicate_GICombiner24: {
1526 return cast<GStore>(State.MIs[0])->isUnordered();
1527 }
1528 case GICXXPred_MI_Predicate_GICombiner25: {
1529 return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);
1530 }
1531 case GICXXPred_MI_Predicate_GICombiner26: {
1532 return matchTruncOrToADDHN(*State.MIs[0], MRI, VT, State.MIs[0]->getOperand(0).getReg(),
1533 State.MIs[0]->getOperand(1).getReg(), State.MIs[1]->getOperand(1).getReg(),
1534 State.MIs[1]->getOperand(2).getReg());
1535 }
1536 case GICXXPred_MI_Predicate_GICombiner27: {
1537 return Helper.matchCommuteConstantToRHS(*State.MIs[0]);
1538 }
1539 case GICXXPred_MI_Predicate_GICombiner28: {
1540 return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);
1541 }
1542 case GICXXPred_MI_Predicate_GICombiner29: {
1543 return matchSubAddMulReassoc(State.MIs[1]->getOperand(1).getReg(), State.MIs[1]->getOperand(2).getReg(),
1544 State.MIs[0]->getOperand(2).getReg(), State.MIs[0]->getOperand(1).getReg(), MRI);
1545 }
1546 case GICXXPred_MI_Predicate_GICombiner30: {
1547 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1548 }
1549 case GICXXPred_MI_Predicate_GICombiner31: {
1550 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1551 }
1552 }
1553 llvm_unreachable("Unknown predicate");
1554 return false;
1555}
1556bool AArch64PostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1557 llvm_unreachable("Unknown predicate");
1558 return false;
1559}
1560bool AArch64PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1561 llvm_unreachable("Unknown predicate");
1562 return false;
1563}
1564bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1565 llvm_unreachable("Unknown predicate");
1566 return false;
1567}
1568bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1569 llvm_unreachable("Unknown predicate");
1570 return false;
1571}
1572enum {
1573 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1574 GICXXPred_Simple_IsRule1Enabled,
1575 GICXXPred_Simple_IsRule2Enabled,
1576 GICXXPred_Simple_IsRule3Enabled,
1577 GICXXPred_Simple_IsRule4Enabled,
1578 GICXXPred_Simple_IsRule5Enabled,
1579 GICXXPred_Simple_IsRule6Enabled,
1580 GICXXPred_Simple_IsRule7Enabled,
1581 GICXXPred_Simple_IsRule8Enabled,
1582 GICXXPred_Simple_IsRule9Enabled,
1583 GICXXPred_Simple_IsRule10Enabled,
1584 GICXXPred_Simple_IsRule11Enabled,
1585 GICXXPred_Simple_IsRule12Enabled,
1586 GICXXPred_Simple_IsRule13Enabled,
1587 GICXXPred_Simple_IsRule14Enabled,
1588 GICXXPred_Simple_IsRule15Enabled,
1589 GICXXPred_Simple_IsRule16Enabled,
1590 GICXXPred_Simple_IsRule17Enabled,
1591 GICXXPred_Simple_IsRule18Enabled,
1592 GICXXPred_Simple_IsRule19Enabled,
1593 GICXXPred_Simple_IsRule20Enabled,
1594 GICXXPred_Simple_IsRule21Enabled,
1595 GICXXPred_Simple_IsRule22Enabled,
1596 GICXXPred_Simple_IsRule23Enabled,
1597 GICXXPred_Simple_IsRule24Enabled,
1598 GICXXPred_Simple_IsRule25Enabled,
1599 GICXXPred_Simple_IsRule26Enabled,
1600 GICXXPred_Simple_IsRule27Enabled,
1601 GICXXPred_Simple_IsRule28Enabled,
1602 GICXXPred_Simple_IsRule29Enabled,
1603 GICXXPred_Simple_IsRule30Enabled,
1604 GICXXPred_Simple_IsRule31Enabled,
1605 GICXXPred_Simple_IsRule32Enabled,
1606 GICXXPred_Simple_IsRule33Enabled,
1607 GICXXPred_Simple_IsRule34Enabled,
1608 GICXXPred_Simple_IsRule35Enabled,
1609 GICXXPred_Simple_IsRule36Enabled,
1610 GICXXPred_Simple_IsRule37Enabled,
1611 GICXXPred_Simple_IsRule38Enabled,
1612 GICXXPred_Simple_IsRule39Enabled,
1613 GICXXPred_Simple_IsRule40Enabled,
1614 GICXXPred_Simple_IsRule41Enabled,
1615 GICXXPred_Simple_IsRule42Enabled,
1616 GICXXPred_Simple_IsRule43Enabled,
1617 GICXXPred_Simple_IsRule44Enabled,
1618 GICXXPred_Simple_IsRule45Enabled,
1619 GICXXPred_Simple_IsRule46Enabled,
1620 GICXXPred_Simple_IsRule47Enabled,
1621 GICXXPred_Simple_IsRule48Enabled,
1622 GICXXPred_Simple_IsRule49Enabled,
1623 GICXXPred_Simple_IsRule50Enabled,
1624 GICXXPred_Simple_IsRule51Enabled,
1625 GICXXPred_Simple_IsRule52Enabled,
1626 GICXXPred_Simple_IsRule53Enabled,
1627 GICXXPred_Simple_IsRule54Enabled,
1628 GICXXPred_Simple_IsRule55Enabled,
1629 GICXXPred_Simple_IsRule56Enabled,
1630 GICXXPred_Simple_IsRule57Enabled,
1631 GICXXPred_Simple_IsRule58Enabled,
1632 GICXXPred_Simple_IsRule59Enabled,
1633 GICXXPred_Simple_IsRule60Enabled,
1634 GICXXPred_Simple_IsRule61Enabled,
1635 GICXXPred_Simple_IsRule62Enabled,
1636 GICXXPred_Simple_IsRule63Enabled,
1637 GICXXPred_Simple_IsRule64Enabled,
1638 GICXXPred_Simple_IsRule65Enabled,
1639 GICXXPred_Simple_IsRule66Enabled,
1640 GICXXPred_Simple_IsRule67Enabled,
1641 GICXXPred_Simple_IsRule68Enabled,
1642 GICXXPred_Simple_IsRule69Enabled,
1643 GICXXPred_Simple_IsRule70Enabled,
1644 GICXXPred_Simple_IsRule71Enabled,
1645 GICXXPred_Simple_IsRule72Enabled,
1646 GICXXPred_Simple_IsRule73Enabled,
1647 GICXXPred_Simple_IsRule74Enabled,
1648 GICXXPred_Simple_IsRule75Enabled,
1649 GICXXPred_Simple_IsRule76Enabled,
1650 GICXXPred_Simple_IsRule77Enabled,
1651 GICXXPred_Simple_IsRule78Enabled,
1652 GICXXPred_Simple_IsRule79Enabled,
1653 GICXXPred_Simple_IsRule80Enabled,
1654 GICXXPred_Simple_IsRule81Enabled,
1655 GICXXPred_Simple_IsRule82Enabled,
1656 GICXXPred_Simple_IsRule83Enabled,
1657 GICXXPred_Simple_IsRule84Enabled,
1658 GICXXPred_Simple_IsRule85Enabled,
1659 GICXXPred_Simple_IsRule86Enabled,
1660 GICXXPred_Simple_IsRule87Enabled,
1661 GICXXPred_Simple_IsRule88Enabled,
1662 GICXXPred_Simple_IsRule89Enabled,
1663 GICXXPred_Simple_IsRule90Enabled,
1664 GICXXPred_Simple_IsRule91Enabled,
1665 GICXXPred_Simple_IsRule92Enabled,
1666 GICXXPred_Simple_IsRule93Enabled,
1667 GICXXPred_Simple_IsRule94Enabled,
1668 GICXXPred_Simple_IsRule95Enabled,
1669 GICXXPred_Simple_IsRule96Enabled,
1670 GICXXPred_Simple_IsRule97Enabled,
1671 GICXXPred_Simple_IsRule98Enabled,
1672 GICXXPred_Simple_IsRule99Enabled,
1673 GICXXPred_Simple_IsRule100Enabled,
1674 GICXXPred_Simple_IsRule101Enabled,
1675 GICXXPred_Simple_IsRule102Enabled,
1676 GICXXPred_Simple_IsRule103Enabled,
1677 GICXXPred_Simple_IsRule104Enabled,
1678 GICXXPred_Simple_IsRule105Enabled,
1679 GICXXPred_Simple_IsRule106Enabled,
1680 GICXXPred_Simple_IsRule107Enabled,
1681 GICXXPred_Simple_IsRule108Enabled,
1682 GICXXPred_Simple_IsRule109Enabled,
1683 GICXXPred_Simple_IsRule110Enabled,
1684 GICXXPred_Simple_IsRule111Enabled,
1685 GICXXPred_Simple_IsRule112Enabled,
1686 GICXXPred_Simple_IsRule113Enabled,
1687 GICXXPred_Simple_IsRule114Enabled,
1688 GICXXPred_Simple_IsRule115Enabled,
1689 GICXXPred_Simple_IsRule116Enabled,
1690 GICXXPred_Simple_IsRule117Enabled,
1691 GICXXPred_Simple_IsRule118Enabled,
1692 GICXXPred_Simple_IsRule119Enabled,
1693 GICXXPred_Simple_IsRule120Enabled,
1694 GICXXPred_Simple_IsRule121Enabled,
1695 GICXXPred_Simple_IsRule122Enabled,
1696 GICXXPred_Simple_IsRule123Enabled,
1697 GICXXPred_Simple_IsRule124Enabled,
1698 GICXXPred_Simple_IsRule125Enabled,
1699 GICXXPred_Simple_IsRule126Enabled,
1700 GICXXPred_Simple_IsRule127Enabled,
1701 GICXXPred_Simple_IsRule128Enabled,
1702 GICXXPred_Simple_IsRule129Enabled,
1703 GICXXPred_Simple_IsRule130Enabled,
1704 GICXXPred_Simple_IsRule131Enabled,
1705 GICXXPred_Simple_IsRule132Enabled,
1706 GICXXPred_Simple_IsRule133Enabled,
1707 GICXXPred_Simple_IsRule134Enabled,
1708 GICXXPred_Simple_IsRule135Enabled,
1709 GICXXPred_Simple_IsRule136Enabled,
1710 GICXXPred_Simple_IsRule137Enabled,
1711 GICXXPred_Simple_IsRule138Enabled,
1712 GICXXPred_Simple_IsRule139Enabled,
1713 GICXXPred_Simple_IsRule140Enabled,
1714 GICXXPred_Simple_IsRule141Enabled,
1715 GICXXPred_Simple_IsRule142Enabled,
1716 GICXXPred_Simple_IsRule143Enabled,
1717 GICXXPred_Simple_IsRule144Enabled,
1718 GICXXPred_Simple_IsRule145Enabled,
1719 GICXXPred_Simple_IsRule146Enabled,
1720 GICXXPred_Simple_IsRule147Enabled,
1721 GICXXPred_Simple_IsRule148Enabled,
1722 GICXXPred_Simple_IsRule149Enabled,
1723 GICXXPred_Simple_IsRule150Enabled,
1724 GICXXPred_Simple_IsRule151Enabled,
1725 GICXXPred_Simple_IsRule152Enabled,
1726 GICXXPred_Simple_IsRule153Enabled,
1727 GICXXPred_Simple_IsRule154Enabled,
1728 GICXXPred_Simple_IsRule155Enabled,
1729 GICXXPred_Simple_IsRule156Enabled,
1730 GICXXPred_Simple_IsRule157Enabled,
1731 GICXXPred_Simple_IsRule158Enabled,
1732 GICXXPred_Simple_IsRule159Enabled,
1733 GICXXPred_Simple_IsRule160Enabled,
1734 GICXXPred_Simple_IsRule161Enabled,
1735 GICXXPred_Simple_IsRule162Enabled,
1736 GICXXPred_Simple_IsRule163Enabled,
1737 GICXXPred_Simple_IsRule164Enabled,
1738 GICXXPred_Simple_IsRule165Enabled,
1739 GICXXPred_Simple_IsRule166Enabled,
1740 GICXXPred_Simple_IsRule167Enabled,
1741 GICXXPred_Simple_IsRule168Enabled,
1742 GICXXPred_Simple_IsRule169Enabled,
1743 GICXXPred_Simple_IsRule170Enabled,
1744 GICXXPred_Simple_IsRule171Enabled,
1745 GICXXPred_Simple_IsRule172Enabled,
1746 GICXXPred_Simple_IsRule173Enabled,
1747};
1748
1749bool AArch64PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
1750 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
1751}
1752// Custom renderers.
1753enum {
1754 GICR_Invalid,
1755};
1756AArch64PostLegalizerCombinerImpl::CustomRendererFn
1757AArch64PostLegalizerCombinerImpl::CustomRenderers[] = {
1758 nullptr, // GICR_Invalid
1759};
1760
1761bool AArch64PostLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
1762 switch (Opc) {
1763 case TargetOpcode::G_ICMP:
1764 case TargetOpcode::G_INSERT_VECTOR_ELT:
1765 case TargetOpcode::G_SADDO:
1766 case TargetOpcode::G_SELECT:
1767 case TargetOpcode::G_SHUFFLE_VECTOR:
1768 case TargetOpcode::G_SMULFIX:
1769 case TargetOpcode::G_SMULFIXSAT:
1770 case TargetOpcode::G_SMULO:
1771 case TargetOpcode::G_SSUBO:
1772 case TargetOpcode::G_UADDO:
1773 case TargetOpcode::G_UMULFIX:
1774 case TargetOpcode::G_UMULFIXSAT:
1775 case TargetOpcode::G_UMULO:
1776 case TargetOpcode::G_USUBO:
1777 case TargetOpcode::G_ADD:
1778 case TargetOpcode::G_AND:
1779 case TargetOpcode::G_ASHR:
1780 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
1781 case TargetOpcode::G_FADD:
1782 case TargetOpcode::G_FCOPYSIGN:
1783 case TargetOpcode::G_FDIV:
1784 case TargetOpcode::G_FMAXIMUM:
1785 case TargetOpcode::G_FMAXIMUMNUM:
1786 case TargetOpcode::G_FMAXNUM:
1787 case TargetOpcode::G_FMAXNUM_IEEE:
1788 case TargetOpcode::G_FMINIMUM:
1789 case TargetOpcode::G_FMINIMUMNUM:
1790 case TargetOpcode::G_FMINNUM:
1791 case TargetOpcode::G_FMINNUM_IEEE:
1792 case TargetOpcode::G_FMUL:
1793 case TargetOpcode::G_FREM:
1794 case TargetOpcode::G_FSUB:
1795 case TargetOpcode::G_LSHR:
1796 case TargetOpcode::G_MERGE_VALUES:
1797 case TargetOpcode::G_MUL:
1798 case TargetOpcode::G_OR:
1799 case TargetOpcode::G_PTR_ADD:
1800 case TargetOpcode::G_ROTL:
1801 case TargetOpcode::G_ROTR:
1802 case TargetOpcode::G_SADDSAT:
1803 case TargetOpcode::G_SDIV:
1804 case TargetOpcode::G_SEXT_INREG:
1805 case TargetOpcode::G_SHL:
1806 case TargetOpcode::G_SMAX:
1807 case TargetOpcode::G_SMIN:
1808 case TargetOpcode::G_SMULH:
1809 case TargetOpcode::G_SREM:
1810 case TargetOpcode::G_SUB:
1811 case TargetOpcode::G_UADDSAT:
1812 case TargetOpcode::G_UDIV:
1813 case TargetOpcode::G_UMAX:
1814 case TargetOpcode::G_UMIN:
1815 case TargetOpcode::G_UMULH:
1816 case TargetOpcode::G_UREM:
1817 case TargetOpcode::G_XOR:
1818 case TargetOpcode::COPY:
1819 case TargetOpcode::G_ABS:
1820 case TargetOpcode::G_ANYEXT:
1821 case TargetOpcode::G_BITCAST:
1822 case TargetOpcode::G_BUILD_VECTOR:
1823 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
1824 case TargetOpcode::G_CONCAT_VECTORS:
1825 case TargetOpcode::G_FABS:
1826 case TargetOpcode::G_FCEIL:
1827 case TargetOpcode::G_FFLOOR:
1828 case TargetOpcode::G_FLOG2:
1829 case TargetOpcode::G_FNEARBYINT:
1830 case TargetOpcode::G_FNEG:
1831 case TargetOpcode::G_FPEXT:
1832 case TargetOpcode::G_FPTOSI:
1833 case TargetOpcode::G_FPTOUI:
1834 case TargetOpcode::G_FPTRUNC:
1835 case TargetOpcode::G_FREEZE:
1836 case TargetOpcode::G_FRINT:
1837 case TargetOpcode::G_FSQRT:
1838 case TargetOpcode::G_INTRINSIC_ROUND:
1839 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
1840 case TargetOpcode::G_INTRINSIC_TRUNC:
1841 case TargetOpcode::G_INTTOPTR:
1842 case TargetOpcode::G_LOAD:
1843 case TargetOpcode::G_PTRTOINT:
1844 case TargetOpcode::G_SEXT:
1845 case TargetOpcode::G_SEXTLOAD:
1846 case TargetOpcode::G_SITOFP:
1847 case TargetOpcode::G_STORE:
1848 case TargetOpcode::G_TRUNC:
1849 case TargetOpcode::G_TRUNC_USAT_U:
1850 case TargetOpcode::G_UITOFP:
1851 case TargetOpcode::G_ZEXT:
1852 case TargetOpcode::G_ZEXTLOAD:
1853 case TargetOpcode::G_UNMERGE_VALUES:
1854 return true;
1855 default:
1856 return false;
1857 }
1858}
1859
1860uint32_t AArch64PostLegalizerCombinerImpl::getRootFlagsToDrop() const {
1861 return MachineInstr::getPoisonGeneratingFlags();
1862}
1863
1864bool AArch64PostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
1865 const PredicateBitset AvailableFeatures = getAvailableFeatures();
1866 State.MIs.clear();
1867 State.MIs.push_back(&I);
1868 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
1869 return true;
1870 }
1871
1872 return false;
1873}
1874
1875enum {
1876 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
1877 GICXXCustomAction_GICombiner1,
1878 GICXXCustomAction_GICombiner2,
1879 GICXXCustomAction_GICombiner3,
1880 GICXXCustomAction_GICombiner4,
1881 GICXXCustomAction_GICombiner5,
1882 GICXXCustomAction_GICombiner6,
1883 GICXXCustomAction_GICombiner7,
1884 GICXXCustomAction_GICombiner8,
1885 GICXXCustomAction_GICombiner9,
1886 GICXXCustomAction_GICombiner10,
1887 GICXXCustomAction_GICombiner11,
1888 GICXXCustomAction_GICombiner12,
1889 GICXXCustomAction_GICombiner13,
1890 GICXXCustomAction_GICombiner14,
1891 GICXXCustomAction_GICombiner15,
1892 GICXXCustomAction_GICombiner16,
1893 GICXXCustomAction_GICombiner17,
1894 GICXXCustomAction_GICombiner18,
1895 GICXXCustomAction_GICombiner19,
1896 GICXXCustomAction_GICombiner20,
1897 GICXXCustomAction_GICombiner21,
1898 GICXXCustomAction_GICombiner22,
1899 GICXXCustomAction_GICombiner23,
1900 GICXXCustomAction_GICombiner24,
1901 GICXXCustomAction_GICombiner25,
1902 GICXXCustomAction_GICombiner26,
1903 GICXXCustomAction_GICombiner27,
1904 GICXXCustomAction_GICombiner28,
1905 GICXXCustomAction_GICombiner29,
1906 GICXXCustomAction_GICombiner30,
1907 GICXXCustomAction_GICombiner31,
1908 GICXXCustomAction_GICombiner32,
1909 GICXXCustomAction_GICombiner33,
1910 GICXXCustomAction_GICombiner34,
1911 GICXXCustomAction_GICombiner35,
1912 GICXXCustomAction_GICombiner36,
1913 GICXXCustomAction_GICombiner37,
1914 GICXXCustomAction_GICombiner38,
1915 GICXXCustomAction_GICombiner39,
1916 GICXXCustomAction_GICombiner40,
1917 GICXXCustomAction_GICombiner41,
1918 GICXXCustomAction_GICombiner42,
1919 GICXXCustomAction_GICombiner43,
1920 GICXXCustomAction_GICombiner44,
1921 GICXXCustomAction_GICombiner45,
1922 GICXXCustomAction_GICombiner46,
1923 GICXXCustomAction_GICombiner47,
1924 GICXXCustomAction_GICombiner48,
1925 GICXXCustomAction_GICombiner49,
1926 GICXXCustomAction_GICombiner50,
1927 GICXXCustomAction_GICombiner51,
1928 GICXXCustomAction_GICombiner52,
1929 GICXXCustomAction_GICombiner53,
1930 GICXXCustomAction_GICombiner54,
1931 GICXXCustomAction_GICombiner55,
1932 GICXXCustomAction_GICombiner56,
1933 GICXXCustomAction_GICombiner57,
1934 GICXXCustomAction_GICombiner58,
1935 GICXXCustomAction_GICombiner59,
1936 GICXXCustomAction_GICombiner60,
1937 GICXXCustomAction_GICombiner61,
1938 GICXXCustomAction_GICombiner62,
1939};
1940bool AArch64PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
1941 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1942 switch(ApplyID) {
1943 case GICXXCustomAction_GICombiner0:{
1944 // Match Patterns
1945 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
1946 return false;
1947 }
1948 // Apply Patterns
1949 Helper.applyCombineCopy(*State.MIs[0]);
1950 return true;
1951 }
1952 case GICXXCustomAction_GICombiner1:{
1953 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1954 // Match Patterns
1955 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1956 return false;
1957 }
1958 // Apply Patterns
1959 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1960 return true;
1961 }
1962 case GICXXCustomAction_GICombiner2:{
1963 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1964 // Match Patterns
1965 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1966 return false;
1967 }
1968 // Apply Patterns
1969 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1970 return true;
1971 }
1972 case GICXXCustomAction_GICombiner3:{
1973 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1974 // Match Patterns
1975 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1976 return false;
1977 }
1978 // Apply Patterns
1979 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1980 return true;
1981 }
1982 case GICXXCustomAction_GICombiner4:{
1983 // Apply Patterns
1984 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
1985 return true;
1986 }
1987 case GICXXCustomAction_GICombiner5:{
1988 // Apply Patterns
1989 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
1990 return true;
1991 }
1992 case GICXXCustomAction_GICombiner6:{
1993 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1994 // Match Patterns
1995 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1996 return false;
1997 }
1998 // Apply Patterns
1999 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2000 return true;
2001 }
2002 case GICXXCustomAction_GICombiner7:{
2003 APInt GIMatchData_matchinfo;
2004 // Match Patterns
2005 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2006 return false;
2007 }
2008 // Apply Patterns
2009 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2010 return true;
2011 }
2012 case GICXXCustomAction_GICombiner8:{
2013 PreferredTuple GIMatchData_matchinfo;
2014 // Match Patterns
2015 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2016 return false;
2017 }
2018 // Apply Patterns
2019 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2020 return true;
2021 }
2022 case GICXXCustomAction_GICombiner9:{
2023 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2024 // Match Patterns
2025 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2026 return false;
2027 }
2028 // Apply Patterns
2029 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2030 return true;
2031 }
2032 case GICXXCustomAction_GICombiner10:{
2033 IndexedLoadStoreMatchInfo GIMatchData_matchinfo;
2034 // Match Patterns
2035 if(![&](){return Helper.matchCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);}()) {
2036 return false;
2037 }
2038 // Apply Patterns
2039 Helper.applyCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);
2040 return true;
2041 }
2042 case GICXXCustomAction_GICombiner11:{
2043 InstructionStepsMatchInfo GIMatchData_info;
2044 // Match Patterns
2045 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2046 return false;
2047 }
2048 // Apply Patterns
2049 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2050 return true;
2051 }
2052 case GICXXCustomAction_GICombiner12:{
2053 Register GIMatchData_matchinfo;
2054 // Match Patterns
2055 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2056 return false;
2057 }
2058 // Apply Patterns
2059 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2060 return true;
2061 }
2062 case GICXXCustomAction_GICombiner13:{
2063 std::pair<Register, Register> GIMatchData_matchinfo;
2064 // Match Patterns
2065 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
2066 return false;
2067 }
2068 // Apply Patterns
2069 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
2070 return true;
2071 }
2072 case GICXXCustomAction_GICombiner14:{
2073 std::tuple<unsigned, LLT, Register> GIMatchData_matchinfo;
2074 // Match Patterns
2075 if(![&](){return matchExtractVecEltPairwiseAdd(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
2076 return false;
2077 }
2078 // Apply Patterns
2079 applyExtractVecEltPairwiseAdd(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
2080 return true;
2081 }
2082 case GICXXCustomAction_GICombiner15:{
2083 Register GIMatchData_matchinfo;
2084 // Match Patterns
2085 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
2086 return false;
2087 }
2088 // Apply Patterns
2089 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2090 return true;
2091 }
2092 case GICXXCustomAction_GICombiner16:{
2093 std::function<void(MachineIRBuilder&, Register)> GIMatchData_matchinfo;
2094 // Match Patterns
2095 if(![&](){return matchAArch64MulConstCombine(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
2096 return false;
2097 }
2098 // Apply Patterns
2099 applyAArch64MulConstCombine(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
2100 return true;
2101 }
2102 case GICXXCustomAction_GICombiner17:{
2103 // Match Patterns
2104 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
2105 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2106 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
2107 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
2108 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
2109 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
2110 return false;
2111 }
2112 // Apply Patterns
2113 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
2114 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
2115 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
2116 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
2117 State.MIs[0]->eraseFromParent();
2118 return true;
2119 }
2120 case GICXXCustomAction_GICombiner18:{
2121 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2122 // Match Patterns
2123 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
2124 return false;
2125 }
2126 // Apply Patterns
2127 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2128 return true;
2129 }
2130 case GICXXCustomAction_GICombiner19:{
2131 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2132 // Match Patterns
2133 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
2134 return false;
2135 }
2136 // Apply Patterns
2137 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2138 return true;
2139 }
2140 case GICXXCustomAction_GICombiner20:{
2141 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2142 // Match Patterns
2143 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
2144 return false;
2145 }
2146 // Apply Patterns
2147 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2148 return true;
2149 }
2150 case GICXXCustomAction_GICombiner21:{
2151 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2152 // Match Patterns
2153 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
2154 return false;
2155 }
2156 // Apply Patterns
2157 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2158 return true;
2159 }
2160 case GICXXCustomAction_GICombiner22:{
2161 // Match Patterns
2162 if(![&](){return Helper.matchRotateOutOfRange(*State.MIs[0]);}()) {
2163 return false;
2164 }
2165 // Apply Patterns
2166 Helper.applyRotateOutOfRange(*State.MIs[0]);
2167 return true;
2168 }
2169 case GICXXCustomAction_GICombiner23:{
2170 int64_t GIMatchData_matchinfo;
2171 // Match Patterns
2172 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2173 return false;
2174 }
2175 // Apply Patterns
2176 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2177 return true;
2178 }
2179 case GICXXCustomAction_GICombiner24:{
2180 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2181 // Match Patterns
2182 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
2183 return false;
2184 }
2185 // Apply Patterns
2186 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2187 return true;
2188 }
2189 case GICXXCustomAction_GICombiner25:{
2190 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2191 // Match Patterns
2192 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
2193 return false;
2194 }
2195 // Apply Patterns
2196 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2197 return true;
2198 }
2199 case GICXXCustomAction_GICombiner26:{
2200 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2201 // Match Patterns
2202 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
2203 return false;
2204 }
2205 // Apply Patterns
2206 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
2207 return true;
2208 }
2209 case GICXXCustomAction_GICombiner27:{
2210 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2211 // Match Patterns
2212 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
2213 return false;
2214 }
2215 // Apply Patterns
2216 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2217 return true;
2218 }
2219 case GICXXCustomAction_GICombiner28:{
2220 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2221 // Match Patterns
2222 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2223 return false;
2224 }
2225 // Apply Patterns
2226 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2227 return true;
2228 }
2229 case GICXXCustomAction_GICombiner29:{
2230 SmallVector<Register> GIMatchData_info;
2231 // Match Patterns
2232 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
2233 return false;
2234 }
2235 // Apply Patterns
2236 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
2237 return true;
2238 }
2239 case GICXXCustomAction_GICombiner30:{
2240 Register GIMatchData_src;
2241 // Match Patterns
2242 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
2243 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
2244 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
2245 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
2246 return false;
2247
2248 // Check counts match.
2249 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
2250 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
2251 if (NumMergeSrcs != NumUnmergeDefs)
2252 return false;
2253
2254 // Verify all merge sources match unmerge defs in order.
2255 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
2256 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
2257 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
2258
2259 if (MergeSrc != UnmergeDef)
2260 return false;
2261
2262 if (!MRI.hasOneNonDBGUse(MergeSrc))
2263 return false;
2264 }
2265
2266 // Check size compatibility.
2267 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
2268 LLT SrcTy = MRI.getType(GIMatchData_src);
2269 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
2270 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
2271 return false;
2272
2273 // Check bitcast legality.
2274 if (SrcTy != DstTy) {
2275 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
2276 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
2277 if (!Helper.isLegalOrBeforeLegalizer(Query))
2278 return false;
2279 }
2280
2281 return true;}()) {
2282 return false;
2283 }
2284 // Apply Patterns
2285 LLT SrcTy = MRI.getType(GIMatchData_src);
2286 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
2287
2288 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2289
2290 if (SrcTy == DstTy) {
2291 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
2292 } else {
2293 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
2294 }
2295
2296 State.MIs[0]->eraseFromParent();
2297 return true;
2298 }
2299 case GICXXCustomAction_GICombiner31:{
2300 SmallVector<APInt, 8> GIMatchData_info;
2301 // Match Patterns
2302 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
2303 return false;
2304 }
2305 // Apply Patterns
2306 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
2307 return true;
2308 }
2309 case GICXXCustomAction_GICombiner32:{
2310 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2311 // Match Patterns
2312 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
2313 return false;
2314 }
2315 // Apply Patterns
2316 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2317 return true;
2318 }
2319 case GICXXCustomAction_GICombiner33:{
2320 // Match Patterns
2321 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
2322 return false;
2323 }
2324 // Apply Patterns
2325 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
2326 return true;
2327 }
2328 case GICXXCustomAction_GICombiner34:{
2329 // Match Patterns
2330 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
2331 return false;
2332 }
2333 // Apply Patterns
2334 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
2335 return true;
2336 }
2337 case GICXXCustomAction_GICombiner35:{
2338 Register GIMatchData_unmergeSrc;
2339 // Match Patterns
2340 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
2341 return false;
2342 }
2343 // Apply Patterns
2344 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
2345 return true;
2346 }
2347 case GICXXCustomAction_GICombiner36:{
2348 APInt GIMatchData_matchinfo;
2349 // Match Patterns
2350 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2351 return false;
2352 }
2353 // Apply Patterns
2354 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2355 return true;
2356 }
2357 case GICXXCustomAction_GICombiner37:{
2358 ConstantFP* GIMatchData_matchinfo;
2359 // Match Patterns
2360 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2361 return false;
2362 }
2363 // Apply Patterns
2364 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
2365 return true;
2366 }
2367 case GICXXCustomAction_GICombiner38:{
2368 APInt GIMatchData_matchinfo;
2369 // Match Patterns
2370 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2371 return false;
2372 }
2373 // Apply Patterns
2374 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2375 return true;
2376 }
2377 case GICXXCustomAction_GICombiner39:{
2378 Register GIMatchData_matchinfo;
2379 // Match Patterns
2380 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2381 return false;
2382 }
2383 // Apply Patterns
2384 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2385 return true;
2386 }
2387 case GICXXCustomAction_GICombiner40:{
2388 Register GIMatchData_matchinfo;
2389 // Match Patterns
2390 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2391 return false;
2392 }
2393 // Apply Patterns
2394 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2395 return true;
2396 }
2397 case GICXXCustomAction_GICombiner41:{
2398 Register GIMatchData_matchinfo;
2399 // Match Patterns
2400 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2401 return false;
2402 }
2403 // Apply Patterns
2404 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2405 return true;
2406 }
2407 case GICXXCustomAction_GICombiner42:{
2408 Register GIMatchData_matchinfo;
2409 // Match Patterns
2410 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2411 return false;
2412 }
2413 // Apply Patterns
2414 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2415 return true;
2416 }
2417 case GICXXCustomAction_GICombiner43:{
2418 PtrAddChain GIMatchData_matchinfo;
2419 // Match Patterns
2420 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2421 return false;
2422 }
2423 // Apply Patterns
2424 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2425 return true;
2426 }
2427 case GICXXCustomAction_GICombiner44:{
2428 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2429 // Match Patterns
2430 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
2431 return false;
2432 }
2433 // Apply Patterns
2434 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2435 return true;
2436 }
2437 case GICXXCustomAction_GICombiner45:{
2438 // Match Patterns
2439 if(![&](){return matchSplitStoreZero128(*State.MIs[0], MRI);}()) {
2440 return false;
2441 }
2442 // Apply Patterns
2443 applySplitStoreZero128(*State.MIs[0], MRI, B, Observer);
2444 return true;
2445 }
2446 case GICXXCustomAction_GICombiner46:{
2447 // Apply Patterns
2448 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), 0);
2449 return true;
2450 }
2451 case GICXXCustomAction_GICombiner47:{
2452 // Apply Patterns
2453 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), -1);
2454 return true;
2455 }
2456 case GICXXCustomAction_GICombiner48:{
2457 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2458 // Match Patterns
2459 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
2460 return false;
2461 }
2462 // Apply Patterns
2463 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2464 return true;
2465 }
2466 case GICXXCustomAction_GICombiner49:{
2467 std::tuple<Register, Register, Register> GIMatchData_matchinfo;
2468 // Match Patterns
2469 if(![&](){return matchOrToBSP(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
2470 return false;
2471 }
2472 // Apply Patterns
2473 applyOrToBSP(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
2474 return true;
2475 }
2476 case GICXXCustomAction_GICombiner50:{
2477 SmallVector<Register> GIMatchData_matchinfo;
2478 // Match Patterns
2479 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
2480 return false;
2481 }
2482 // Apply Patterns
2483 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
2484 return true;
2485 }
2486 case GICXXCustomAction_GICombiner51:{
2487 SmallVector<Register> GIMatchData_matchinfo;
2488 // Match Patterns
2489 if(![&](){return Helper.matchCombineBuildVectorOfBitcast(*State.MIs[0], GIMatchData_matchinfo);}()) {
2490 return false;
2491 }
2492 // Apply Patterns
2493 Helper.applyCombineBuildVectorOfBitcast(*State.MIs[0], GIMatchData_matchinfo);
2494 return true;
2495 }
2496 case GICXXCustomAction_GICombiner52:{
2497 Register GIMatchData_matchinfo;
2498 // Match Patterns
2499 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2500 return false;
2501 }
2502 // Apply Patterns
2503 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2504 return true;
2505 }
2506 case GICXXCustomAction_GICombiner53:{
2507 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2508 // Match Patterns
2509 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2510 return false;
2511 }
2512 // Apply Patterns
2513 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2514 return true;
2515 }
2516 case GICXXCustomAction_GICombiner54:{
2517 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2518 // Match Patterns
2519 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2520 return false;
2521 }
2522 // Apply Patterns
2523 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2524 return true;
2525 }
2526 case GICXXCustomAction_GICombiner55:{
2527 Register GIMatchData_matchinfo;
2528 // Match Patterns
2529 if(![&](){return matchCombineMulCMLT(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
2530 return false;
2531 }
2532 // Apply Patterns
2533 applyCombineMulCMLT(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
2534 return true;
2535 }
2536 case GICXXCustomAction_GICombiner56:{
2537 Register GIMatchData_matchinfo;
2538 // Match Patterns
2539 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
2540 return false;
2541 }
2542 // Apply Patterns
2543 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
2544 return true;
2545 }
2546 case GICXXCustomAction_GICombiner57:{
2547 std::tuple<bool, Register, Register> GIMatchData_matchinfo;
2548 // Match Patterns
2549 if(![&](){return matchExtMulToMULL(*State.MIs[0], MRI, VT, GIMatchData_matchinfo);}()) {
2550 return false;
2551 }
2552 // Apply Patterns
2553 applyExtMulToMULL(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
2554 return true;
2555 }
2556 case GICXXCustomAction_GICombiner58:{
2557 Register GIMatchData_matchinfo;
2558 // Match Patterns
2559 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
2560 return false;
2561 }
2562 // Apply Patterns
2563 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
2564 return true;
2565 }
2566 case GICXXCustomAction_GICombiner59:{
2567 Register GIMatchData_matchinfo;
2568 // Match Patterns
2569 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
2570 return false;
2571 }
2572 // Apply Patterns
2573 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
2574 return true;
2575 }
2576 case GICXXCustomAction_GICombiner60:{
2577 LshrOfTruncOfLshr GIMatchData_matchinfo;
2578 // Match Patterns
2579 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
2580 return false;
2581 }
2582 // Apply Patterns
2583 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
2584 return true;
2585 }
2586 case GICXXCustomAction_GICombiner61:{
2587 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2588 // Match Patterns
2589 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], true, GIMatchData_info);}()) {
2590 return false;
2591 }
2592 // Apply Patterns
2593 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2594 return true;
2595 }
2596 case GICXXCustomAction_GICombiner62:{
2597 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2598 // Match Patterns
2599 if(![&](){return Helper.matchSimplifyDemandedBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2600 return false;
2601 }
2602 // Apply Patterns
2603 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2604 return true;
2605 }
2606 }
2607 llvm_unreachable("Unknown Apply Action");
2608}
2609#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2610#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
2611#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
2612#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)
2613#else
2614#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
2615#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
2616#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)
2617#endif
2618const uint8_t *AArch64PostLegalizerCombinerImpl::getMatchTable() const {
2619 constexpr static uint8_t MatchTable0[] = {
2620 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(287), /*)*//*default:*//*Label 91*/ GIMT_Encode4(6339),
2621 /* 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),
2622 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1090),
2623 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1266),
2624 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1447),
2625 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1628),
2626 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1663),
2627 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1719),
2628 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1754), GIMT_Encode4(0), GIMT_Encode4(0),
2629 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1810),
2630 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(2005),
2631 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(2186), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2632 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 11*/ GIMT_Encode4(2355), GIMT_Encode4(0),
2633 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 12*/ GIMT_Encode4(2422),
2634 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 13*/ GIMT_Encode4(2558),
2635 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 14*/ GIMT_Encode4(2641),
2636 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 15*/ GIMT_Encode4(2656),
2637 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 16*/ GIMT_Encode4(2671),
2638 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 17*/ GIMT_Encode4(2792),
2639 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 18*/ GIMT_Encode4(2850),
2640 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 19*/ GIMT_Encode4(2940), GIMT_Encode4(0), GIMT_Encode4(0),
2641 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 20*/ GIMT_Encode4(2952),
2642 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 21*/ GIMT_Encode4(2974), GIMT_Encode4(0), GIMT_Encode4(0),
2643 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 22*/ GIMT_Encode4(2996), GIMT_Encode4(0), GIMT_Encode4(0),
2644 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 23*/ GIMT_Encode4(3018),
2645 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 24*/ GIMT_Encode4(3041),
2646 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 25*/ GIMT_Encode4(3064), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2647 /* 354 */ /*TargetOpcode::G_STORE*//*Label 26*/ GIMT_Encode4(3087), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2648 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 27*/ GIMT_Encode4(3133),
2649 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 28*/ GIMT_Encode4(3303), GIMT_Encode4(0), GIMT_Encode4(0),
2650 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 29*/ GIMT_Encode4(3548), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2651 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 30*/ GIMT_Encode4(3581),
2652 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 31*/ GIMT_Encode4(3635),
2653 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 32*/ GIMT_Encode4(3858),
2654 /* 550 */ /*TargetOpcode::G_SHL*//*Label 33*/ GIMT_Encode4(3912),
2655 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 34*/ GIMT_Encode4(4015),
2656 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 35*/ GIMT_Encode4(4148), GIMT_Encode4(0), GIMT_Encode4(0),
2657 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 36*/ GIMT_Encode4(4252),
2658 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 37*/ GIMT_Encode4(4287),
2659 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 38*/ GIMT_Encode4(4322), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2660 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 39*/ GIMT_Encode4(4334),
2661 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 40*/ GIMT_Encode4(4745), GIMT_Encode4(0),
2662 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 41*/ GIMT_Encode4(4814), GIMT_Encode4(0),
2663 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 42*/ GIMT_Encode4(4826), GIMT_Encode4(0),
2664 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 43*/ GIMT_Encode4(4895), GIMT_Encode4(0),
2665 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 44*/ GIMT_Encode4(4907),
2666 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 45*/ GIMT_Encode4(4935),
2667 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 46*/ GIMT_Encode4(4963),
2668 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 47*/ GIMT_Encode4(4989),
2669 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 48*/ GIMT_Encode4(5015),
2670 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 49*/ GIMT_Encode4(5041), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2671 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 50*/ GIMT_Encode4(5067),
2672 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 51*/ GIMT_Encode4(5095),
2673 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 52*/ GIMT_Encode4(5123),
2674 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 53*/ GIMT_Encode4(5151), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2675 /* 702 */ /*TargetOpcode::G_FADD*//*Label 54*/ GIMT_Encode4(5179),
2676 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 55*/ GIMT_Encode4(5268),
2677 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 56*/ GIMT_Encode4(5280), GIMT_Encode4(0), GIMT_Encode4(0),
2678 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 57*/ GIMT_Encode4(5360),
2679 /* 726 */ /*TargetOpcode::G_FREM*//*Label 58*/ GIMT_Encode4(5372), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2680 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 59*/ GIMT_Encode4(5384), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2681 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 60*/ GIMT_Encode4(5406),
2682 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 61*/ GIMT_Encode4(5457),
2683 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 62*/ GIMT_Encode4(5479),
2684 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 63*/ GIMT_Encode4(5534),
2685 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 64*/ GIMT_Encode4(5559),
2686 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 65*/ GIMT_Encode4(5584),
2687 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 66*/ GIMT_Encode4(5621), GIMT_Encode4(0), GIMT_Encode4(0),
2688 /* 810 */ /*TargetOpcode::G_FABS*//*Label 67*/ GIMT_Encode4(5658),
2689 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 68*/ GIMT_Encode4(5680), GIMT_Encode4(0), GIMT_Encode4(0),
2690 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 69*/ GIMT_Encode4(5692),
2691 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 70*/ GIMT_Encode4(5729),
2692 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 71*/ GIMT_Encode4(5766),
2693 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 72*/ GIMT_Encode4(5792),
2694 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 73*/ GIMT_Encode4(5818),
2695 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 74*/ GIMT_Encode4(5855),
2696 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 75*/ GIMT_Encode4(5892),
2697 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 76*/ GIMT_Encode4(5904), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2698 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 77*/ GIMT_Encode4(5916), GIMT_Encode4(0),
2699 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 78*/ GIMT_Encode4(5962),
2700 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 79*/ GIMT_Encode4(5999),
2701 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 80*/ GIMT_Encode4(6036),
2702 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 81*/ GIMT_Encode4(6073),
2703 /* 914 */ /*TargetOpcode::G_ABS*//*Label 82*/ GIMT_Encode4(6110), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2704 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 83*/ GIMT_Encode4(6132),
2705 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 84*/ GIMT_Encode4(6151),
2706 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 85*/ GIMT_Encode4(6192), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2707 /* 1014 */ /*TargetOpcode::G_FCEIL*//*Label 86*/ GIMT_Encode4(6229), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2708 /* 1062 */ /*TargetOpcode::G_FSQRT*//*Label 87*/ GIMT_Encode4(6251),
2709 /* 1066 */ /*TargetOpcode::G_FFLOOR*//*Label 88*/ GIMT_Encode4(6273),
2710 /* 1070 */ /*TargetOpcode::G_FRINT*//*Label 89*/ GIMT_Encode4(6295),
2711 /* 1074 */ /*TargetOpcode::G_FNEARBYINT*//*Label 90*/ GIMT_Encode4(6317),
2712 /* 1078 */ // Label 0: @1078
2713 /* 1078 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1089), // Rule ID 0 //
2714 /* 1083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
2715 /* 1086 */ // MIs[0] d
2716 /* 1086 */ // No operand predicates
2717 /* 1086 */ // MIs[0] s
2718 /* 1086 */ // No operand predicates
2719 /* 1086 */ // Combiner Rule #0: copy_prop
2720 /* 1086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
2721 /* 1089 */ // Label 92: @1089
2722 /* 1089 */ GIM_Reject,
2723 /* 1090 */ // Label 1: @1090
2724 /* 1090 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1124), // Rule ID 156 //
2725 /* 1095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
2726 /* 1098 */ // MIs[0] dst
2727 /* 1098 */ // No operand predicates
2728 /* 1098 */ // MIs[0] __add_sub_reg_match_0.tmp
2729 /* 1098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2730 /* 1102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2731 /* 1106 */ // MIs[1] src
2732 /* 1106 */ // No operand predicates
2733 /* 1106 */ // MIs[1] __add_sub_reg_match_0.x
2734 /* 1106 */ // No operand predicates
2735 /* 1106 */ // MIs[0] __add_sub_reg_match_0.x
2736 /* 1106 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
2737 /* 1111 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2738 /* 1116 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2739 /* 1118 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[1]]
2740 /* 1118 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2741 /* 1123 */ GIR_EraseRootFromParent_Done,
2742 /* 1124 */ // Label 93: @1124
2743 /* 1124 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1148), // Rule ID 192 //
2744 /* 1129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
2745 /* 1132 */ // MIs[0] dst
2746 /* 1132 */ // No operand predicates
2747 /* 1132 */ // MIs[0] __propagate_undef_any_op_match_0.x
2748 /* 1132 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2749 /* 1136 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2750 /* 1140 */ // MIs[0] __propagate_undef_any_op_match_0.y
2751 /* 1140 */ // No operand predicates
2752 /* 1140 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2753 /* 1142 */ // Combiner Rule #119: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[0]]
2754 /* 1142 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2755 /* 1145 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2756 /* 1147 */ GIR_EraseRootFromParent_Done,
2757 /* 1148 */ // Label 94: @1148
2758 /* 1148 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1182), // Rule ID 155 //
2759 /* 1153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
2760 /* 1156 */ // MIs[0] dst
2761 /* 1156 */ // No operand predicates
2762 /* 1156 */ // MIs[0] __add_sub_reg_match_0.x
2763 /* 1156 */ // No operand predicates
2764 /* 1156 */ // MIs[0] __add_sub_reg_match_0.tmp
2765 /* 1156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2766 /* 1160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2767 /* 1164 */ // MIs[1] src
2768 /* 1164 */ // No operand predicates
2769 /* 1164 */ // MIs[1] __add_sub_reg_match_0.x
2770 /* 1164 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2771 /* 1169 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2772 /* 1174 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2773 /* 1176 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[0]]
2774 /* 1176 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2775 /* 1181 */ GIR_EraseRootFromParent_Done,
2776 /* 1182 */ // Label 95: @1182
2777 /* 1182 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1206), // Rule ID 195 //
2778 /* 1187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
2779 /* 1190 */ // MIs[0] dst
2780 /* 1190 */ // No operand predicates
2781 /* 1190 */ // MIs[0] __propagate_undef_any_op_match_0.x
2782 /* 1190 */ // No operand predicates
2783 /* 1190 */ // MIs[0] __propagate_undef_any_op_match_0.y
2784 /* 1190 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2785 /* 1194 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2786 /* 1198 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2787 /* 1200 */ // Combiner Rule #119: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[3]]
2788 /* 1200 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2789 /* 1203 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2790 /* 1205 */ GIR_EraseRootFromParent_Done,
2791 /* 1206 */ // Label 96: @1206
2792 /* 1206 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1229), // Rule ID 125 //
2793 /* 1211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
2794 /* 1214 */ // MIs[0] dst
2795 /* 1214 */ // No operand predicates
2796 /* 1214 */ // MIs[0] lhs
2797 /* 1214 */ // No operand predicates
2798 /* 1214 */ // MIs[0] Operand 2
2799 /* 1214 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2800 /* 1218 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2801 /* 1223 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[1]]
2802 /* 1223 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2803 /* 1228 */ GIR_EraseRootFromParent_Done,
2804 /* 1229 */ // Label 97: @1229
2805 /* 1229 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1254), // Rule ID 209 //
2806 /* 1234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
2807 /* 1237 */ // MIs[0] dst
2808 /* 1237 */ // No operand predicates
2809 /* 1237 */ // MIs[0] lhs
2810 /* 1237 */ // No operand predicates
2811 /* 1237 */ // MIs[0] rhs
2812 /* 1237 */ // No operand predicates
2813 /* 1237 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
2814 /* 1241 */ // Combiner Rule #131: G_ADD_commute_constant_to_rhs
2815 /* 1241 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
2816 /* 1244 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2817 /* 1246 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
2818 /* 1248 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
2819 /* 1250 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
2820 /* 1253 */ GIR_EraseRootFromParent_Done,
2821 /* 1254 */ // Label 98: @1254
2822 /* 1254 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1265), // Rule ID 89 //
2823 /* 1259 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
2824 /* 1262 */ // MIs[0] d
2825 /* 1262 */ // No operand predicates
2826 /* 1262 */ // MIs[0] mi.src0
2827 /* 1262 */ // No operand predicates
2828 /* 1262 */ // MIs[0] mi.src1
2829 /* 1262 */ // No operand predicates
2830 /* 1262 */ // Combiner Rule #80: constant_fold_binop @ [mi[0]]
2831 /* 1262 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
2832 /* 1265 */ // Label 99: @1265
2833 /* 1265 */ GIM_Reject,
2834 /* 1266 */ // Label 2: @1266
2835 /* 1266 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1325), // Rule ID 244 //
2836 /* 1271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
2837 /* 1274 */ // MIs[0] dst
2838 /* 1274 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
2839 /* 1278 */ // MIs[0] src3
2840 /* 1278 */ // No operand predicates
2841 /* 1278 */ // MIs[0] tmp
2842 /* 1278 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2843 /* 1282 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
2844 /* 1286 */ // MIs[1] src1
2845 /* 1286 */ // No operand predicates
2846 /* 1286 */ // MIs[1] src2
2847 /* 1286 */ // No operand predicates
2848 /* 1286 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
2849 /* 1290 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2850 /* 1292 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
2851 /* 1295 */ // Combiner Rule #166: subaddmulreassoc
2852 /* 1295 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
2853 /* 1298 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
2854 /* 1303 */ GIR_RootToRootCopy, /*OpIdx*/1, // src3
2855 /* 1305 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
2856 /* 1309 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
2857 /* 1313 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
2858 /* 1317 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
2859 /* 1320 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
2860 /* 1324 */ GIR_EraseRootFromParent_Done,
2861 /* 1325 */ // Label 100: @1325
2862 /* 1325 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1349), // Rule ID 193 //
2863 /* 1330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
2864 /* 1333 */ // MIs[0] dst
2865 /* 1333 */ // No operand predicates
2866 /* 1333 */ // MIs[0] __propagate_undef_any_op_match_0.x
2867 /* 1333 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2868 /* 1337 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2869 /* 1341 */ // MIs[0] __propagate_undef_any_op_match_0.y
2870 /* 1341 */ // No operand predicates
2871 /* 1341 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2872 /* 1343 */ // Combiner Rule #119: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[1]]
2873 /* 1343 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2874 /* 1346 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2875 /* 1348 */ GIR_EraseRootFromParent_Done,
2876 /* 1349 */ // Label 101: @1349
2877 /* 1349 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1388), // Rule ID 136 //
2878 /* 1354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
2879 /* 1357 */ // MIs[0] dst
2880 /* 1357 */ // No operand predicates
2881 /* 1357 */ // MIs[0] x
2882 /* 1357 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
2883 /* 1361 */ // MIs[0] x
2884 /* 1361 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2885 /* 1366 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
2886 /* 1369 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
2887 /* 1379 */ // Combiner Rule #87: same_val_zero @ [__same_val_zero_match_0[0]]
2888 /* 1379 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
2889 /* 1382 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2890 /* 1384 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
2891 /* 1387 */ GIR_EraseRootFromParent_Done,
2892 /* 1388 */ // Label 102: @1388
2893 /* 1388 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1412), // Rule ID 196 //
2894 /* 1393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
2895 /* 1396 */ // MIs[0] dst
2896 /* 1396 */ // No operand predicates
2897 /* 1396 */ // MIs[0] __propagate_undef_any_op_match_0.x
2898 /* 1396 */ // No operand predicates
2899 /* 1396 */ // MIs[0] __propagate_undef_any_op_match_0.y
2900 /* 1396 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2901 /* 1400 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2902 /* 1404 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2903 /* 1406 */ // Combiner Rule #119: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[4]]
2904 /* 1406 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2905 /* 1409 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2906 /* 1411 */ GIR_EraseRootFromParent_Done,
2907 /* 1412 */ // Label 103: @1412
2908 /* 1412 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1435), // Rule ID 124 //
2909 /* 1417 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
2910 /* 1420 */ // MIs[0] dst
2911 /* 1420 */ // No operand predicates
2912 /* 1420 */ // MIs[0] lhs
2913 /* 1420 */ // No operand predicates
2914 /* 1420 */ // MIs[0] Operand 2
2915 /* 1420 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2916 /* 1424 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2917 /* 1429 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[0]]
2918 /* 1429 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2919 /* 1434 */ GIR_EraseRootFromParent_Done,
2920 /* 1435 */ // Label 104: @1435
2921 /* 1435 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1446), // Rule ID 97 //
2922 /* 1440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
2923 /* 1443 */ // MIs[0] d
2924 /* 1443 */ // No operand predicates
2925 /* 1443 */ // MIs[0] mi.src0
2926 /* 1443 */ // No operand predicates
2927 /* 1443 */ // MIs[0] mi.src1
2928 /* 1443 */ // No operand predicates
2929 /* 1443 */ // Combiner Rule #80: constant_fold_binop @ [mi[8]]
2930 /* 1443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
2931 /* 1446 */ // Label 105: @1446
2932 /* 1446 */ GIM_Reject,
2933 /* 1447 */ // Label 3: @1447
2934 /* 1447 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1468), // Rule ID 173 //
2935 /* 1452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
2936 /* 1455 */ // MIs[0] dst
2937 /* 1455 */ // No operand predicates
2938 /* 1455 */ // MIs[0] __undef_to_int_zero_match_0.x
2939 /* 1455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2940 /* 1459 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2941 /* 1463 */ // MIs[0] __undef_to_int_zero_match_0.y
2942 /* 1463 */ // No operand predicates
2943 /* 1463 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2944 /* 1465 */ // Combiner Rule #113: undef_to_int_zero @ [__undef_to_int_zero_match_0[1]]
2945 /* 1465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
2946 /* 1468 */ // Label 106: @1468
2947 /* 1468 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1489), // Rule ID 175 //
2948 /* 1473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
2949 /* 1476 */ // MIs[0] dst
2950 /* 1476 */ // No operand predicates
2951 /* 1476 */ // MIs[0] __undef_to_int_zero_match_0.x
2952 /* 1476 */ // No operand predicates
2953 /* 1476 */ // MIs[0] __undef_to_int_zero_match_0.y
2954 /* 1476 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2955 /* 1480 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2956 /* 1484 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2957 /* 1486 */ // Combiner Rule #113: undef_to_int_zero @ [__undef_to_int_zero_match_0[3]]
2958 /* 1486 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
2959 /* 1489 */ // Label 107: @1489
2960 /* 1489 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1512), // Rule ID 146 //
2961 /* 1494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
2962 /* 1497 */ // MIs[0] dst
2963 /* 1497 */ // No operand predicates
2964 /* 1497 */ // MIs[0] lhs
2965 /* 1497 */ // No operand predicates
2966 /* 1497 */ // MIs[0] zero
2967 /* 1497 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2968 /* 1501 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2969 /* 1506 */ // Combiner Rule #89: binop_right_to_zero
2970 /* 1506 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2971 /* 1511 */ GIR_EraseRootFromParent_Done,
2972 /* 1512 */ // Label 108: @1512
2973 /* 1512 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1535), // Rule ID 153 //
2974 /* 1517 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
2975 /* 1520 */ // MIs[0] dst
2976 /* 1520 */ // No operand predicates
2977 /* 1520 */ // MIs[0] x
2978 /* 1520 */ // No operand predicates
2979 /* 1520 */ // MIs[0] Operand 2
2980 /* 1520 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
2981 /* 1524 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2982 /* 1529 */ // Combiner Rule #96: right_identity_one_int
2983 /* 1529 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2984 /* 1534 */ GIR_EraseRootFromParent_Done,
2985 /* 1535 */ // Label 109: @1535
2986 /* 1535 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1558), // Rule ID 145 //
2987 /* 1540 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
2988 /* 1543 */ // MIs[0] dst
2989 /* 1543 */ // No operand predicates
2990 /* 1543 */ // MIs[0] zero
2991 /* 1543 */ // No operand predicates
2992 /* 1543 */ // MIs[0] rhs
2993 /* 1543 */ // No operand predicates
2994 /* 1543 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
2995 /* 1547 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2996 /* 1552 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
2997 /* 1552 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2998 /* 1557 */ GIR_EraseRootFromParent_Done,
2999 /* 1558 */ // Label 110: @1558
3000 /* 1558 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1583), // Rule ID 210 //
3001 /* 1563 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
3002 /* 1566 */ // MIs[0] dst
3003 /* 1566 */ // No operand predicates
3004 /* 1566 */ // MIs[0] lhs
3005 /* 1566 */ // No operand predicates
3006 /* 1566 */ // MIs[0] rhs
3007 /* 1566 */ // No operand predicates
3008 /* 1566 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
3009 /* 1570 */ // Combiner Rule #132: G_MUL_commute_constant_to_rhs
3010 /* 1570 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
3011 /* 1573 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3012 /* 1575 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
3013 /* 1577 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
3014 /* 1579 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
3015 /* 1582 */ GIR_EraseRootFromParent_Done,
3016 /* 1583 */ // Label 111: @1583
3017 /* 1583 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1594), // Rule ID 47 //
3018 /* 1588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
3019 /* 1591 */ // MIs[0] dst
3020 /* 1591 */ // No operand predicates
3021 /* 1591 */ // MIs[0] src1
3022 /* 1591 */ // No operand predicates
3023 /* 1591 */ // MIs[0] src2
3024 /* 1591 */ // No operand predicates
3025 /* 1591 */ // Combiner Rule #41: mul_const
3026 /* 1591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
3027 /* 1594 */ // Label 112: @1594
3028 /* 1594 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1605), // Rule ID 94 //
3029 /* 1599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3030 /* 1602 */ // MIs[0] d
3031 /* 1602 */ // No operand predicates
3032 /* 1602 */ // MIs[0] mi.src0
3033 /* 1602 */ // No operand predicates
3034 /* 1602 */ // MIs[0] mi.src1
3035 /* 1602 */ // No operand predicates
3036 /* 1602 */ // Combiner Rule #80: constant_fold_binop @ [mi[5]]
3037 /* 1602 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3038 /* 1605 */ // Label 113: @1605
3039 /* 1605 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1616), // Rule ID 241 //
3040 /* 1610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
3041 /* 1613 */ // MIs[0] dst
3042 /* 1613 */ // No operand predicates
3043 /* 1613 */ // MIs[0] src1
3044 /* 1613 */ // No operand predicates
3045 /* 1613 */ // MIs[0] src2
3046 /* 1613 */ // No operand predicates
3047 /* 1613 */ // Combiner Rule #163: combine_mul_cmlt
3048 /* 1613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
3049 /* 1616 */ // Label 114: @1616
3050 /* 1616 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1627), // Rule ID 243 //
3051 /* 1621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
3052 /* 1624 */ // MIs[0] dst
3053 /* 1624 */ // No operand predicates
3054 /* 1624 */ // MIs[0] src1
3055 /* 1624 */ // No operand predicates
3056 /* 1624 */ // MIs[0] src2
3057 /* 1624 */ // No operand predicates
3058 /* 1624 */ // Combiner Rule #165: extmultomull
3059 /* 1624 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
3060 /* 1627 */ // Label 115: @1627
3061 /* 1627 */ GIM_Reject,
3062 /* 1628 */ // Label 4: @1628
3063 /* 1628 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1651), // Rule ID 141 //
3064 /* 1633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
3065 /* 1636 */ // MIs[0] dst
3066 /* 1636 */ // No operand predicates
3067 /* 1636 */ // MIs[0] zero
3068 /* 1636 */ // No operand predicates
3069 /* 1636 */ // MIs[0] rhs
3070 /* 1636 */ // No operand predicates
3071 /* 1636 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
3072 /* 1640 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3073 /* 1645 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
3074 /* 1645 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3075 /* 1650 */ GIR_EraseRootFromParent_Done,
3076 /* 1651 */ // Label 116: @1651
3077 /* 1651 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1662), // Rule ID 100 //
3078 /* 1656 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3079 /* 1659 */ // MIs[0] d
3080 /* 1659 */ // No operand predicates
3081 /* 1659 */ // MIs[0] mi.src0
3082 /* 1659 */ // No operand predicates
3083 /* 1659 */ // MIs[0] mi.src1
3084 /* 1659 */ // No operand predicates
3085 /* 1659 */ // Combiner Rule #80: constant_fold_binop @ [mi[11]]
3086 /* 1659 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3087 /* 1662 */ // Label 117: @1662
3088 /* 1662 */ GIM_Reject,
3089 /* 1663 */ // Label 5: @1663
3090 /* 1663 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1684), // Rule ID 179 //
3091 /* 1668 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
3092 /* 1671 */ // MIs[0] dst
3093 /* 1671 */ // No operand predicates
3094 /* 1671 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
3095 /* 1671 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3096 /* 1675 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3097 /* 1679 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
3098 /* 1679 */ // No operand predicates
3099 /* 1679 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3100 /* 1681 */ // Combiner Rule #115: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[1]]
3101 /* 1681 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
3102 /* 1684 */ // Label 118: @1684
3103 /* 1684 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1707), // Rule ID 142 //
3104 /* 1689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
3105 /* 1692 */ // MIs[0] dst
3106 /* 1692 */ // No operand predicates
3107 /* 1692 */ // MIs[0] zero
3108 /* 1692 */ // No operand predicates
3109 /* 1692 */ // MIs[0] rhs
3110 /* 1692 */ // No operand predicates
3111 /* 1692 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
3112 /* 1696 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3113 /* 1701 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
3114 /* 1701 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3115 /* 1706 */ GIR_EraseRootFromParent_Done,
3116 /* 1707 */ // Label 119: @1707
3117 /* 1707 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1718), // Rule ID 99 //
3118 /* 1712 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3119 /* 1715 */ // MIs[0] d
3120 /* 1715 */ // No operand predicates
3121 /* 1715 */ // MIs[0] mi.src0
3122 /* 1715 */ // No operand predicates
3123 /* 1715 */ // MIs[0] mi.src1
3124 /* 1715 */ // No operand predicates
3125 /* 1715 */ // Combiner Rule #80: constant_fold_binop @ [mi[10]]
3126 /* 1715 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3127 /* 1718 */ // Label 120: @1718
3128 /* 1718 */ GIM_Reject,
3129 /* 1719 */ // Label 6: @1719
3130 /* 1719 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1742), // Rule ID 143 //
3131 /* 1724 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
3132 /* 1727 */ // MIs[0] dst
3133 /* 1727 */ // No operand predicates
3134 /* 1727 */ // MIs[0] zero
3135 /* 1727 */ // No operand predicates
3136 /* 1727 */ // MIs[0] rhs
3137 /* 1727 */ // No operand predicates
3138 /* 1727 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
3139 /* 1731 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3140 /* 1736 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
3141 /* 1736 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3142 /* 1741 */ GIR_EraseRootFromParent_Done,
3143 /* 1742 */ // Label 121: @1742
3144 /* 1742 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1753), // Rule ID 102 //
3145 /* 1747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3146 /* 1750 */ // MIs[0] d
3147 /* 1750 */ // No operand predicates
3148 /* 1750 */ // MIs[0] mi.src0
3149 /* 1750 */ // No operand predicates
3150 /* 1750 */ // MIs[0] mi.src1
3151 /* 1750 */ // No operand predicates
3152 /* 1750 */ // Combiner Rule #80: constant_fold_binop @ [mi[13]]
3153 /* 1750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3154 /* 1753 */ // Label 122: @1753
3155 /* 1753 */ GIM_Reject,
3156 /* 1754 */ // Label 7: @1754
3157 /* 1754 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1775), // Rule ID 180 //
3158 /* 1759 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
3159 /* 1762 */ // MIs[0] dst
3160 /* 1762 */ // No operand predicates
3161 /* 1762 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
3162 /* 1762 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3163 /* 1766 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3164 /* 1770 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
3165 /* 1770 */ // No operand predicates
3166 /* 1770 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3167 /* 1772 */ // Combiner Rule #115: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[2]]
3168 /* 1772 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
3169 /* 1775 */ // Label 123: @1775
3170 /* 1775 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1798), // Rule ID 144 //
3171 /* 1780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
3172 /* 1783 */ // MIs[0] dst
3173 /* 1783 */ // No operand predicates
3174 /* 1783 */ // MIs[0] zero
3175 /* 1783 */ // No operand predicates
3176 /* 1783 */ // MIs[0] rhs
3177 /* 1783 */ // No operand predicates
3178 /* 1783 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
3179 /* 1787 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3180 /* 1792 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
3181 /* 1792 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3182 /* 1797 */ GIR_EraseRootFromParent_Done,
3183 /* 1798 */ // Label 124: @1798
3184 /* 1798 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1809), // Rule ID 101 //
3185 /* 1803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3186 /* 1806 */ // MIs[0] d
3187 /* 1806 */ // No operand predicates
3188 /* 1806 */ // MIs[0] mi.src0
3189 /* 1806 */ // No operand predicates
3190 /* 1806 */ // MIs[0] mi.src1
3191 /* 1806 */ // No operand predicates
3192 /* 1806 */ // Combiner Rule #80: constant_fold_binop @ [mi[12]]
3193 /* 1806 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3194 /* 1809 */ // Label 125: @1809
3195 /* 1809 */ GIM_Reject,
3196 /* 1810 */ // Label 8: @1810
3197 /* 1810 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1821), // Rule ID 251 //
3198 /* 1815 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
3199 /* 1818 */ // Combiner Rule #173: simplify_demanded_bits; wip_match_opcode 'G_AND'
3200 /* 1818 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
3201 /* 1821 */ // Label 126: @1821
3202 /* 1821 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1858), // Rule ID 54 //
3203 /* 1826 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
3204 /* 1829 */ // MIs[0] root
3205 /* 1829 */ // No operand predicates
3206 /* 1829 */ // MIs[0] shift
3207 /* 1829 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3208 /* 1833 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
3209 /* 1837 */ // MIs[1] x
3210 /* 1837 */ // No operand predicates
3211 /* 1837 */ // MIs[1] lsb
3212 /* 1837 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
3213 /* 1841 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3214 /* 1845 */ // MIs[2] imm1
3215 /* 1845 */ // No operand predicates
3216 /* 1845 */ // MIs[0] mask
3217 /* 1845 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
3218 /* 1849 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3219 /* 1853 */ // MIs[3] imm2
3220 /* 1853 */ // No operand predicates
3221 /* 1853 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
3222 /* 1855 */ // Combiner Rule #48: bitfield_extract_from_and
3223 /* 1855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
3224 /* 1858 */ // Label 127: @1858
3225 /* 1858 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1879), // Rule ID 172 //
3226 /* 1863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
3227 /* 1866 */ // MIs[0] dst
3228 /* 1866 */ // No operand predicates
3229 /* 1866 */ // MIs[0] __undef_to_int_zero_match_0.x
3230 /* 1866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3231 /* 1870 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3232 /* 1874 */ // MIs[0] __undef_to_int_zero_match_0.y
3233 /* 1874 */ // No operand predicates
3234 /* 1874 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3235 /* 1876 */ // Combiner Rule #113: undef_to_int_zero @ [__undef_to_int_zero_match_0[0]]
3236 /* 1876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
3237 /* 1879 */ // Label 128: @1879
3238 /* 1879 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1903), // Rule ID 134 //
3239 /* 1884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
3240 /* 1887 */ // MIs[0] dst
3241 /* 1887 */ // No operand predicates
3242 /* 1887 */ // MIs[0] src
3243 /* 1887 */ // No operand predicates
3244 /* 1887 */ // MIs[0] src
3245 /* 1887 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3246 /* 1892 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3247 /* 1897 */ // Combiner Rule #86: binop_same_val @ [__binop_same_val_match_0[0]]
3248 /* 1897 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3249 /* 1902 */ GIR_EraseRootFromParent_Done,
3250 /* 1903 */ // Label 129: @1903
3251 /* 1903 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1924), // Rule ID 174 //
3252 /* 1908 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
3253 /* 1911 */ // MIs[0] dst
3254 /* 1911 */ // No operand predicates
3255 /* 1911 */ // MIs[0] __undef_to_int_zero_match_0.x
3256 /* 1911 */ // No operand predicates
3257 /* 1911 */ // MIs[0] __undef_to_int_zero_match_0.y
3258 /* 1911 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3259 /* 1915 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3260 /* 1919 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3261 /* 1921 */ // Combiner Rule #113: undef_to_int_zero @ [__undef_to_int_zero_match_0[2]]
3262 /* 1921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
3263 /* 1924 */ // Label 130: @1924
3264 /* 1924 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1949), // Rule ID 211 //
3265 /* 1929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
3266 /* 1932 */ // MIs[0] dst
3267 /* 1932 */ // No operand predicates
3268 /* 1932 */ // MIs[0] lhs
3269 /* 1932 */ // No operand predicates
3270 /* 1932 */ // MIs[0] rhs
3271 /* 1932 */ // No operand predicates
3272 /* 1932 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
3273 /* 1936 */ // Combiner Rule #133: G_AND_commute_constant_to_rhs
3274 /* 1936 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
3275 /* 1939 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3276 /* 1941 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
3277 /* 1943 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
3278 /* 1945 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
3279 /* 1948 */ GIR_EraseRootFromParent_Done,
3280 /* 1949 */ // Label 131: @1949
3281 /* 1949 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1960), // Rule ID 34 //
3282 /* 1954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
3283 /* 1957 */ // MIs[0] dst
3284 /* 1957 */ // No operand predicates
3285 /* 1957 */ // MIs[0] src1
3286 /* 1957 */ // No operand predicates
3287 /* 1957 */ // MIs[0] src2
3288 /* 1957 */ // No operand predicates
3289 /* 1957 */ // Combiner Rule #32: load_and_mask
3290 /* 1957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
3291 /* 1960 */ // Label 132: @1960
3292 /* 1960 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1971), // Rule ID 40 //
3293 /* 1965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
3294 /* 1968 */ // MIs[0] root
3295 /* 1968 */ // No operand predicates
3296 /* 1968 */ // MIs[0] mi.x
3297 /* 1968 */ // No operand predicates
3298 /* 1968 */ // MIs[0] mi.y
3299 /* 1968 */ // No operand predicates
3300 /* 1968 */ // Combiner Rule #36: hoist_logic_op_with_same_opcode_hands @ [mi[0]]
3301 /* 1968 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
3302 /* 1971 */ // Label 133: @1971
3303 /* 1971 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1982), // Rule ID 43 //
3304 /* 1976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
3305 /* 1979 */ // MIs[0] dst
3306 /* 1979 */ // No operand predicates
3307 /* 1979 */ // MIs[0] src1
3308 /* 1979 */ // No operand predicates
3309 /* 1979 */ // MIs[0] src2
3310 /* 1979 */ // No operand predicates
3311 /* 1979 */ // Combiner Rule #37: redundant_and
3312 /* 1979 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
3313 /* 1982 */ // Label 134: @1982
3314 /* 1982 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1993), // Rule ID 91 //
3315 /* 1987 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3316 /* 1990 */ // MIs[0] d
3317 /* 1990 */ // No operand predicates
3318 /* 1990 */ // MIs[0] mi.src0
3319 /* 1990 */ // No operand predicates
3320 /* 1990 */ // MIs[0] mi.src1
3321 /* 1990 */ // No operand predicates
3322 /* 1990 */ // Combiner Rule #80: constant_fold_binop @ [mi[2]]
3323 /* 1990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3324 /* 1993 */ // Label 135: @1993
3325 /* 1993 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2004), // Rule ID 168 //
3326 /* 1998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
3327 /* 2001 */ // MIs[0] dst
3328 /* 2001 */ // No operand predicates
3329 /* 2001 */ // MIs[0] x
3330 /* 2001 */ // No operand predicates
3331 /* 2001 */ // MIs[0] y
3332 /* 2001 */ // No operand predicates
3333 /* 2001 */ // Combiner Rule #110: overlapping_and
3334 /* 2001 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
3335 /* 2004 */ // Label 136: @2004
3336 /* 2004 */ GIM_Reject,
3337 /* 2005 */ // Label 9: @2005
3338 /* 2005 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2016), // Rule ID 252 //
3339 /* 2010 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
3340 /* 2013 */ // Combiner Rule #173: simplify_demanded_bits; wip_match_opcode 'G_OR'
3341 /* 2013 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
3342 /* 2016 */ // Label 137: @2016
3343 /* 2016 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2037), // Rule ID 176 //
3344 /* 2021 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
3345 /* 2024 */ // MIs[0] dst
3346 /* 2024 */ // No operand predicates
3347 /* 2024 */ // MIs[0] __undef_to_negative_one_match_0.x
3348 /* 2024 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3349 /* 2028 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3350 /* 2032 */ // MIs[0] __undef_to_negative_one_match_0.y
3351 /* 2032 */ // No operand predicates
3352 /* 2032 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3353 /* 2034 */ // Combiner Rule #114: undef_to_negative_one @ [__undef_to_negative_one_match_0[0]]
3354 /* 2034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
3355 /* 2037 */ // Label 138: @2037
3356 /* 2037 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2061), // Rule ID 135 //
3357 /* 2042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
3358 /* 2045 */ // MIs[0] dst
3359 /* 2045 */ // No operand predicates
3360 /* 2045 */ // MIs[0] src
3361 /* 2045 */ // No operand predicates
3362 /* 2045 */ // MIs[0] src
3363 /* 2045 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3364 /* 2050 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3365 /* 2055 */ // Combiner Rule #86: binop_same_val @ [__binop_same_val_match_0[1]]
3366 /* 2055 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3367 /* 2060 */ GIR_EraseRootFromParent_Done,
3368 /* 2061 */ // Label 139: @2061
3369 /* 2061 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2082), // Rule ID 177 //
3370 /* 2066 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
3371 /* 2069 */ // MIs[0] dst
3372 /* 2069 */ // No operand predicates
3373 /* 2069 */ // MIs[0] __undef_to_negative_one_match_0.x
3374 /* 2069 */ // No operand predicates
3375 /* 2069 */ // MIs[0] __undef_to_negative_one_match_0.y
3376 /* 2069 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3377 /* 2073 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3378 /* 2077 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3379 /* 2079 */ // Combiner Rule #114: undef_to_negative_one @ [__undef_to_negative_one_match_0[1]]
3380 /* 2079 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
3381 /* 2082 */ // Label 140: @2082
3382 /* 2082 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2105), // Rule ID 126 //
3383 /* 2087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3384 /* 2090 */ // MIs[0] dst
3385 /* 2090 */ // No operand predicates
3386 /* 2090 */ // MIs[0] lhs
3387 /* 2090 */ // No operand predicates
3388 /* 2090 */ // MIs[0] Operand 2
3389 /* 2090 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3390 /* 2094 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3391 /* 2099 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[2]]
3392 /* 2099 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3393 /* 2104 */ GIR_EraseRootFromParent_Done,
3394 /* 2105 */ // Label 141: @2105
3395 /* 2105 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2130), // Rule ID 212 //
3396 /* 2110 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
3397 /* 2113 */ // MIs[0] dst
3398 /* 2113 */ // No operand predicates
3399 /* 2113 */ // MIs[0] lhs
3400 /* 2113 */ // No operand predicates
3401 /* 2113 */ // MIs[0] rhs
3402 /* 2113 */ // No operand predicates
3403 /* 2113 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
3404 /* 2117 */ // Combiner Rule #134: G_OR_commute_constant_to_rhs
3405 /* 2117 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
3406 /* 2120 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3407 /* 2122 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
3408 /* 2124 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
3409 /* 2126 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
3410 /* 2129 */ GIR_EraseRootFromParent_Done,
3411 /* 2130 */ // Label 142: @2130
3412 /* 2130 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2141), // Rule ID 41 //
3413 /* 2135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
3414 /* 2138 */ // MIs[0] root
3415 /* 2138 */ // No operand predicates
3416 /* 2138 */ // MIs[0] mi.x
3417 /* 2138 */ // No operand predicates
3418 /* 2138 */ // MIs[0] mi.y
3419 /* 2138 */ // No operand predicates
3420 /* 2138 */ // Combiner Rule #36: hoist_logic_op_with_same_opcode_hands @ [mi[1]]
3421 /* 2138 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
3422 /* 2141 */ // Label 143: @2141
3423 /* 2141 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2152), // Rule ID 46 //
3424 /* 2146 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
3425 /* 2149 */ // MIs[0] dst
3426 /* 2149 */ // No operand predicates
3427 /* 2149 */ // MIs[0] src1
3428 /* 2149 */ // No operand predicates
3429 /* 2149 */ // MIs[0] src2
3430 /* 2149 */ // No operand predicates
3431 /* 2149 */ // Combiner Rule #40: redundant_or
3432 /* 2149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
3433 /* 2152 */ // Label 144: @2152
3434 /* 2152 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2163), // Rule ID 95 //
3435 /* 2157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3436 /* 2160 */ // MIs[0] d
3437 /* 2160 */ // No operand predicates
3438 /* 2160 */ // MIs[0] mi.src0
3439 /* 2160 */ // No operand predicates
3440 /* 2160 */ // MIs[0] mi.src1
3441 /* 2160 */ // No operand predicates
3442 /* 2160 */ // Combiner Rule #80: constant_fold_binop @ [mi[6]]
3443 /* 2160 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3444 /* 2163 */ // Label 145: @2163
3445 /* 2163 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2174), // Rule ID 205 //
3446 /* 2168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
3447 /* 2171 */ // MIs[0] dst
3448 /* 2171 */ // No operand predicates
3449 /* 2171 */ // MIs[0] src1
3450 /* 2171 */ // No operand predicates
3451 /* 2171 */ // MIs[0] src2
3452 /* 2171 */ // No operand predicates
3453 /* 2171 */ // Combiner Rule #127: or_to_bsp
3454 /* 2171 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
3455 /* 2174 */ // Label 146: @2174
3456 /* 2174 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2185), // Rule ID 250 //
3457 /* 2179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
3458 /* 2182 */ // MIs[0] dst
3459 /* 2182 */ // No operand predicates
3460 /* 2182 */ // MIs[0] src1
3461 /* 2182 */ // No operand predicates
3462 /* 2182 */ // MIs[0] src2
3463 /* 2182 */ // No operand predicates
3464 /* 2182 */ // Combiner Rule #172: funnel_shift_from_or_shift_constants_are_legal
3465 /* 2182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
3466 /* 2185 */ // Label 147: @2185
3467 /* 2185 */ GIM_Reject,
3468 /* 2186 */ // Label 10: @2186
3469 /* 2186 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2210), // Rule ID 194 //
3470 /* 2191 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
3471 /* 2194 */ // MIs[0] dst
3472 /* 2194 */ // No operand predicates
3473 /* 2194 */ // MIs[0] __propagate_undef_any_op_match_0.x
3474 /* 2194 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3475 /* 2198 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3476 /* 2202 */ // MIs[0] __propagate_undef_any_op_match_0.y
3477 /* 2202 */ // No operand predicates
3478 /* 2202 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3479 /* 2204 */ // Combiner Rule #119: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[2]]
3480 /* 2204 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3481 /* 2207 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3482 /* 2209 */ GIR_EraseRootFromParent_Done,
3483 /* 2210 */ // Label 148: @2210
3484 /* 2210 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2249), // Rule ID 137 //
3485 /* 2215 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
3486 /* 2218 */ // MIs[0] dst
3487 /* 2218 */ // No operand predicates
3488 /* 2218 */ // MIs[0] x
3489 /* 2218 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
3490 /* 2222 */ // MIs[0] x
3491 /* 2222 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3492 /* 2227 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
3493 /* 2230 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
3494 /* 2240 */ // Combiner Rule #87: same_val_zero @ [__same_val_zero_match_0[1]]
3495 /* 2240 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
3496 /* 2243 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3497 /* 2245 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
3498 /* 2248 */ GIR_EraseRootFromParent_Done,
3499 /* 2249 */ // Label 149: @2249
3500 /* 2249 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2273), // Rule ID 197 //
3501 /* 2254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
3502 /* 2257 */ // MIs[0] dst
3503 /* 2257 */ // No operand predicates
3504 /* 2257 */ // MIs[0] __propagate_undef_any_op_match_0.x
3505 /* 2257 */ // No operand predicates
3506 /* 2257 */ // MIs[0] __propagate_undef_any_op_match_0.y
3507 /* 2257 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3508 /* 2261 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3509 /* 2265 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3510 /* 2267 */ // Combiner Rule #119: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[5]]
3511 /* 2267 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3512 /* 2270 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3513 /* 2272 */ GIR_EraseRootFromParent_Done,
3514 /* 2273 */ // Label 150: @2273
3515 /* 2273 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2296), // Rule ID 127 //
3516 /* 2278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3517 /* 2281 */ // MIs[0] dst
3518 /* 2281 */ // No operand predicates
3519 /* 2281 */ // MIs[0] lhs
3520 /* 2281 */ // No operand predicates
3521 /* 2281 */ // MIs[0] Operand 2
3522 /* 2281 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3523 /* 2285 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3524 /* 2290 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[3]]
3525 /* 2290 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3526 /* 2295 */ GIR_EraseRootFromParent_Done,
3527 /* 2296 */ // Label 151: @2296
3528 /* 2296 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2321), // Rule ID 213 //
3529 /* 2301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
3530 /* 2304 */ // MIs[0] dst
3531 /* 2304 */ // No operand predicates
3532 /* 2304 */ // MIs[0] lhs
3533 /* 2304 */ // No operand predicates
3534 /* 2304 */ // MIs[0] rhs
3535 /* 2304 */ // No operand predicates
3536 /* 2304 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
3537 /* 2308 */ // Combiner Rule #135: G_XOR_commute_constant_to_rhs
3538 /* 2308 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
3539 /* 2311 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3540 /* 2313 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
3541 /* 2315 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
3542 /* 2317 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
3543 /* 2320 */ GIR_EraseRootFromParent_Done,
3544 /* 2321 */ // Label 152: @2321
3545 /* 2321 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2332), // Rule ID 42 //
3546 /* 2326 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
3547 /* 2329 */ // MIs[0] root
3548 /* 2329 */ // No operand predicates
3549 /* 2329 */ // MIs[0] mi.x
3550 /* 2329 */ // No operand predicates
3551 /* 2329 */ // MIs[0] mi.y
3552 /* 2329 */ // No operand predicates
3553 /* 2329 */ // Combiner Rule #36: hoist_logic_op_with_same_opcode_hands @ [mi[2]]
3554 /* 2329 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
3555 /* 2332 */ // Label 153: @2332
3556 /* 2332 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2343), // Rule ID 44 //
3557 /* 2337 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
3558 /* 2340 */ // MIs[0] dst
3559 /* 2340 */ // No operand predicates
3560 /* 2340 */ // MIs[0] src1
3561 /* 2340 */ // No operand predicates
3562 /* 2340 */ // MIs[0] src2
3563 /* 2340 */ // No operand predicates
3564 /* 2340 */ // Combiner Rule #38: xor_of_and_with_same_reg
3565 /* 2340 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
3566 /* 2343 */ // Label 154: @2343
3567 /* 2343 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2354), // Rule ID 98 //
3568 /* 2348 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3569 /* 2351 */ // MIs[0] d
3570 /* 2351 */ // No operand predicates
3571 /* 2351 */ // MIs[0] mi.src0
3572 /* 2351 */ // No operand predicates
3573 /* 2351 */ // MIs[0] mi.src1
3574 /* 2351 */ // No operand predicates
3575 /* 2351 */ // Combiner Rule #80: constant_fold_binop @ [mi[9]]
3576 /* 2351 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3577 /* 2354 */ // Label 155: @2354
3578 /* 2354 */ GIM_Reject,
3579 /* 2355 */ // Label 11: @2355
3580 /* 2355 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2366), // Rule ID 79 //
3581 /* 2360 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
3582 /* 2363 */ // Combiner Rule #70: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
3583 /* 2363 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
3584 /* 2366 */ // Label 156: @2366
3585 /* 2366 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2377), // Rule ID 80 //
3586 /* 2371 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
3587 /* 2374 */ // Combiner Rule #71: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
3588 /* 2374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
3589 /* 2377 */ // Label 157: @2377
3590 /* 2377 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2388), // Rule ID 82 //
3591 /* 2382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
3592 /* 2385 */ // Combiner Rule #73: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
3593 /* 2385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
3594 /* 2388 */ // Label 158: @2388
3595 /* 2388 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2399), // Rule ID 83 //
3596 /* 2393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
3597 /* 2396 */ // Combiner Rule #74: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
3598 /* 2396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
3599 /* 2399 */ // Label 159: @2399
3600 /* 2399 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2410), // Rule ID 84 //
3601 /* 2404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
3602 /* 2407 */ // Combiner Rule #75: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
3603 /* 2407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
3604 /* 2410 */ // Label 160: @2410
3605 /* 2410 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2421), // Rule ID 85 //
3606 /* 2415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
3607 /* 2418 */ // Combiner Rule #76: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
3608 /* 2418 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
3609 /* 2421 */ // Label 161: @2421
3610 /* 2421 */ GIM_Reject,
3611 /* 2422 */ // Label 12: @2422
3612 /* 2422 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2436), // Rule ID 81 //
3613 /* 2427 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
3614 /* 2430 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3615 /* 2433 */ // MIs[0] dst
3616 /* 2433 */ // No operand predicates
3617 /* 2433 */ // MIs[0] merge_srcs
3618 /* 2433 */ // No operand predicates
3619 /* 2433 */ // Combiner Rule #72: merge_unmerge
3620 /* 2433 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
3621 /* 2436 */ // Label 162: @2436
3622 /* 2436 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2557),
3623 /* 2441 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
3624 /* 2444 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2474), // Rule ID 86 //
3625 /* 2449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
3626 /* 2452 */ // MIs[0] root
3627 /* 2452 */ // No operand predicates
3628 /* 2452 */ // MIs[0] x
3629 /* 2452 */ // No operand predicates
3630 /* 2452 */ // MIs[0] undef
3631 /* 2452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3632 /* 2456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3633 /* 2460 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
3634 /* 2464 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3635 /* 2466 */ // Combiner Rule #77: merge_of_x_and_undef
3636 /* 2466 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ANYEXT),
3637 /* 2469 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
3638 /* 2471 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
3639 /* 2473 */ GIR_EraseRootFromParent_Done,
3640 /* 2474 */ // Label 164: @2474
3641 /* 2474 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2515), // Rule ID 78 //
3642 /* 2479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
3643 /* 2482 */ // MIs[0] dst
3644 /* 2482 */ // No operand predicates
3645 /* 2482 */ // MIs[0] x
3646 /* 2482 */ // No operand predicates
3647 /* 2482 */ // MIs[0] zero
3648 /* 2482 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3649 /* 2486 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3650 /* 2490 */ // MIs[1] Operand 1
3651 /* 2490 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3652 /* 2501 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
3653 /* 2505 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3654 /* 2507 */ // Combiner Rule #69: fold_merge_to_zext
3655 /* 2507 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
3656 /* 2510 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3657 /* 2512 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
3658 /* 2514 */ GIR_EraseRootFromParent_Done,
3659 /* 2515 */ // Label 165: @2515
3660 /* 2515 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2556), // Rule ID 87 //
3661 /* 2520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
3662 /* 2523 */ // MIs[0] root
3663 /* 2523 */ // No operand predicates
3664 /* 2523 */ // MIs[0] x
3665 /* 2523 */ // No operand predicates
3666 /* 2523 */ // MIs[0] zero
3667 /* 2523 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3668 /* 2527 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3669 /* 2531 */ // MIs[1] Operand 1
3670 /* 2531 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3671 /* 2542 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
3672 /* 2546 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3673 /* 2548 */ // Combiner Rule #78: merge_of_x_and_zero
3674 /* 2548 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
3675 /* 2551 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
3676 /* 2553 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
3677 /* 2555 */ GIR_EraseRootFromParent_Done,
3678 /* 2556 */ // Label 166: @2556
3679 /* 2556 */ GIM_Reject,
3680 /* 2557 */ // Label 163: @2557
3681 /* 2557 */ GIM_Reject,
3682 /* 2558 */ // Label 13: @2558
3683 /* 2558 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2640),
3684 /* 2563 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3685 /* 2566 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2584), // Rule ID 199 //
3686 /* 2571 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
3687 /* 2574 */ // MIs[0] root
3688 /* 2574 */ // No operand predicates
3689 /* 2574 */ // MIs[0] srcs
3690 /* 2574 */ // No operand predicates
3691 /* 2574 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
3692 /* 2578 */ // Combiner Rule #121: propagate_undef_all_ops_build_vector
3693 /* 2578 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3694 /* 2581 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
3695 /* 2583 */ GIR_EraseRootFromParent_Done,
3696 /* 2584 */ // Label 168: @2584
3697 /* 2584 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2595), // Rule ID 88 //
3698 /* 2589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
3699 /* 2592 */ // MIs[0] dst
3700 /* 2592 */ // No operand predicates
3701 /* 2592 */ // MIs[0] unused
3702 /* 2592 */ // No operand predicates
3703 /* 2592 */ // Combiner Rule #79: combine_build_unmerge
3704 /* 2592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
3705 /* 2595 */ // Label 169: @2595
3706 /* 2595 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2606), // Rule ID 157 //
3707 /* 2600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
3708 /* 2603 */ // MIs[0] build_vector
3709 /* 2603 */ // No operand predicates
3710 /* 2603 */ // MIs[0] srcs
3711 /* 2603 */ // No operand predicates
3712 /* 2603 */ // Combiner Rule #99: buildvector_identity_fold_bv
3713 /* 2603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
3714 /* 2606 */ // Label 170: @2606
3715 /* 2606 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2617), // Rule ID 208 //
3716 /* 2611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
3717 /* 2614 */ // MIs[0] dst
3718 /* 2614 */ // No operand predicates
3719 /* 2614 */ // MIs[0] unused
3720 /* 2614 */ // No operand predicates
3721 /* 2614 */ // Combiner Rule #130: combine_build_vector_of_bitcast
3722 /* 2614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
3723 /* 2617 */ // Label 171: @2617
3724 /* 2617 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2628), // Rule ID 239 //
3725 /* 2622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
3726 /* 2625 */ // MIs[0] dst
3727 /* 2625 */ // No operand predicates
3728 /* 2625 */ // MIs[0] srcs
3729 /* 2625 */ // No operand predicates
3730 /* 2625 */ // Combiner Rule #161: extract_all_elts_from_build_vector
3731 /* 2625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3732 /* 2628 */ // Label 172: @2628
3733 /* 2628 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2639), // Rule ID 242 //
3734 /* 2633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
3735 /* 2636 */ // MIs[0] dst
3736 /* 2636 */ // No operand predicates
3737 /* 2636 */ // MIs[0] unused
3738 /* 2636 */ // No operand predicates
3739 /* 2636 */ // Combiner Rule #164: combine_use_vector_truncate
3740 /* 2636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
3741 /* 2639 */ // Label 173: @2639
3742 /* 2639 */ GIM_Reject,
3743 /* 2640 */ // Label 167: @2640
3744 /* 2640 */ GIM_Reject,
3745 /* 2641 */ // Label 14: @2641
3746 /* 2641 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2655), // Rule ID 158 //
3747 /* 2646 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
3748 /* 2649 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3749 /* 2652 */ // MIs[0] build_vector
3750 /* 2652 */ // No operand predicates
3751 /* 2652 */ // MIs[0] srcs
3752 /* 2652 */ // No operand predicates
3753 /* 2652 */ // Combiner Rule #100: buildvector_identity_fold_bvt
3754 /* 2652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
3755 /* 2655 */ // Label 174: @2655
3756 /* 2655 */ GIM_Reject,
3757 /* 2656 */ // Label 15: @2656
3758 /* 2656 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2670), // Rule ID 207 //
3759 /* 2661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
3760 /* 2664 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3761 /* 2667 */ // MIs[0] dst
3762 /* 2667 */ // No operand predicates
3763 /* 2667 */ // MIs[0] srcs
3764 /* 2667 */ // No operand predicates
3765 /* 2667 */ // Combiner Rule #129: combine_concat_vector
3766 /* 2667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
3767 /* 2670 */ // Label 175: @2670
3768 /* 2670 */ GIM_Reject,
3769 /* 2671 */ // Label 16: @2671
3770 /* 2671 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2703), // Rule ID 148 //
3771 /* 2676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
3772 /* 2679 */ // MIs[0] dst
3773 /* 2679 */ // No operand predicates
3774 /* 2679 */ // MIs[0] t
3775 /* 2679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3776 /* 2683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
3777 /* 2687 */ // MIs[1] ptr
3778 /* 2687 */ // No operand predicates
3779 /* 2687 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
3780 /* 2691 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3781 /* 2693 */ // Combiner Rule #91: i2p_to_p2i_same_size
3782 /* 2693 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
3783 /* 2696 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3784 /* 2698 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
3785 /* 2702 */ GIR_EraseRootFromParent_Done,
3786 /* 2703 */ // Label 176: @2703
3787 /* 2703 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2735), // Rule ID 149 //
3788 /* 2708 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
3789 /* 2711 */ // MIs[0] dst
3790 /* 2711 */ // No operand predicates
3791 /* 2711 */ // MIs[0] t
3792 /* 2711 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3793 /* 2715 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
3794 /* 2719 */ // MIs[1] ptr
3795 /* 2719 */ // No operand predicates
3796 /* 2719 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
3797 /* 2723 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3798 /* 2725 */ // Combiner Rule #92: i2p_to_p2i_zext
3799 /* 2725 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
3800 /* 2728 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3801 /* 2730 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
3802 /* 2734 */ GIR_EraseRootFromParent_Done,
3803 /* 2735 */ // Label 177: @2735
3804 /* 2735 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2767), // Rule ID 150 //
3805 /* 2740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
3806 /* 2743 */ // MIs[0] dst
3807 /* 2743 */ // No operand predicates
3808 /* 2743 */ // MIs[0] t
3809 /* 2743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3810 /* 2747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
3811 /* 2751 */ // MIs[1] ptr
3812 /* 2751 */ // No operand predicates
3813 /* 2751 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
3814 /* 2755 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3815 /* 2757 */ // Combiner Rule #93: i2p_to_p2i_trunc
3816 /* 2757 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC),
3817 /* 2760 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3818 /* 2762 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
3819 /* 2766 */ GIR_EraseRootFromParent_Done,
3820 /* 2767 */ // Label 178: @2767
3821 /* 2767 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2791), // Rule ID 188 //
3822 /* 2772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
3823 /* 2775 */ // MIs[0] dst
3824 /* 2775 */ // No operand predicates
3825 /* 2775 */ // MIs[0] __unary_undef_to_undef_match_0.x
3826 /* 2775 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3827 /* 2779 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3828 /* 2783 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3829 /* 2785 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
3830 /* 2785 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3831 /* 2788 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3832 /* 2790 */ GIR_EraseRootFromParent_Done,
3833 /* 2791 */ // Label 179: @2791
3834 /* 2791 */ GIM_Reject,
3835 /* 2792 */ // Label 17: @2792
3836 /* 2792 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2825), // Rule ID 147 //
3837 /* 2797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3838 /* 2800 */ // MIs[0] dst
3839 /* 2800 */ // No operand predicates
3840 /* 2800 */ // MIs[0] mid
3841 /* 2800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3842 /* 2804 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
3843 /* 2808 */ // MIs[1] x
3844 /* 2808 */ // No operand predicates
3845 /* 2808 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
3846 /* 2812 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3847 /* 2817 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3848 /* 2819 */ // Combiner Rule #90: p2i_to_i2p
3849 /* 2819 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3850 /* 2824 */ GIR_EraseRootFromParent_Done,
3851 /* 2825 */ // Label 180: @2825
3852 /* 2825 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2849), // Rule ID 189 //
3853 /* 2830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
3854 /* 2833 */ // MIs[0] dst
3855 /* 2833 */ // No operand predicates
3856 /* 2833 */ // MIs[0] __unary_undef_to_undef_match_0.x
3857 /* 2833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3858 /* 2837 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3859 /* 2841 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3860 /* 2843 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
3861 /* 2843 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3862 /* 2846 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3863 /* 2848 */ GIR_EraseRootFromParent_Done,
3864 /* 2849 */ // Label 181: @2849
3865 /* 2849 */ GIM_Reject,
3866 /* 2850 */ // Label 18: @2850
3867 /* 2850 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2883), // Rule ID 161 //
3868 /* 2855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
3869 /* 2858 */ // MIs[0] dst
3870 /* 2858 */ // No operand predicates
3871 /* 2858 */ // MIs[0] src1
3872 /* 2858 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3873 /* 2862 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
3874 /* 2866 */ // MIs[1] src0
3875 /* 2866 */ // No operand predicates
3876 /* 2866 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
3877 /* 2870 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3878 /* 2875 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3879 /* 2877 */ // Combiner Rule #103: bitcast_bitcast_fold
3880 /* 2877 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3881 /* 2882 */ GIR_EraseRootFromParent_Done,
3882 /* 2883 */ // Label 182: @2883
3883 /* 2883 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2915), // Rule ID 162 //
3884 /* 2888 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
3885 /* 2891 */ // MIs[0] dst
3886 /* 2891 */ // No operand predicates
3887 /* 2891 */ // MIs[0] src1
3888 /* 2891 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3889 /* 2895 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
3890 /* 2899 */ // MIs[1] src0
3891 /* 2899 */ // No operand predicates
3892 /* 2899 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
3893 /* 2903 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3894 /* 2905 */ // Combiner Rule #104: bitcast_bitcast_to_bitcast
3895 /* 2905 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
3896 /* 2908 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3897 /* 2910 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
3898 /* 2914 */ GIR_EraseRootFromParent_Done,
3899 /* 2915 */ // Label 183: @2915
3900 /* 2915 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2939), // Rule ID 186 //
3901 /* 2920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
3902 /* 2923 */ // MIs[0] dst
3903 /* 2923 */ // No operand predicates
3904 /* 2923 */ // MIs[0] __unary_undef_to_undef_match_0.x
3905 /* 2923 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3906 /* 2927 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3907 /* 2931 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3908 /* 2933 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
3909 /* 2933 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3910 /* 2936 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3911 /* 2938 */ GIR_EraseRootFromParent_Done,
3912 /* 2939 */ // Label 184: @2939
3913 /* 2939 */ GIM_Reject,
3914 /* 2940 */ // Label 19: @2940
3915 /* 2940 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2951), // Rule ID 240 //
3916 /* 2945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
3917 /* 2948 */ // MIs[0] dst
3918 /* 2948 */ // No operand predicates
3919 /* 2948 */ // MIs[0] src
3920 /* 2948 */ // No operand predicates
3921 /* 2948 */ // Combiner Rule #162: push_freeze_to_prevent_poison_from_propagating
3922 /* 2948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
3923 /* 2951 */ // Label 185: @2951
3924 /* 2951 */ GIM_Reject,
3925 /* 2952 */ // Label 20: @2952
3926 /* 2952 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2973), // Rule ID 20 //
3927 /* 2957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
3928 /* 2960 */ // MIs[0] dst
3929 /* 2960 */ // No operand predicates
3930 /* 2960 */ // MIs[0] src0
3931 /* 2960 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3932 /* 2964 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3933 /* 2968 */ // MIs[1] cst
3934 /* 2968 */ // No operand predicates
3935 /* 2968 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3936 /* 2970 */ // Combiner Rule #20: constant_fold_intrinsic_trunc
3937 /* 2970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3938 /* 2973 */ // Label 186: @2973
3939 /* 2973 */ GIM_Reject,
3940 /* 2974 */ // Label 21: @2974
3941 /* 2974 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2995), // Rule ID 21 //
3942 /* 2979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
3943 /* 2982 */ // MIs[0] dst
3944 /* 2982 */ // No operand predicates
3945 /* 2982 */ // MIs[0] src0
3946 /* 2982 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3947 /* 2986 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3948 /* 2990 */ // MIs[1] cst
3949 /* 2990 */ // No operand predicates
3950 /* 2990 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3951 /* 2992 */ // Combiner Rule #21: constant_fold_intrinsic_round
3952 /* 2992 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3953 /* 2995 */ // Label 187: @2995
3954 /* 2995 */ GIM_Reject,
3955 /* 2996 */ // Label 22: @2996
3956 /* 2996 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3017), // Rule ID 22 //
3957 /* 3001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
3958 /* 3004 */ // MIs[0] dst
3959 /* 3004 */ // No operand predicates
3960 /* 3004 */ // MIs[0] src0
3961 /* 3004 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3962 /* 3008 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3963 /* 3012 */ // MIs[1] cst
3964 /* 3012 */ // No operand predicates
3965 /* 3012 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3966 /* 3014 */ // Combiner Rule #22: constant_fold_intrinsic_roundeven
3967 /* 3014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3968 /* 3017 */ // Label 188: @3017
3969 /* 3017 */ GIM_Reject,
3970 /* 3018 */ // Label 23: @3018
3971 /* 3018 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3029), // Rule ID 31 //
3972 /* 3023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
3973 /* 3026 */ // MIs[0] root
3974 /* 3026 */ // No operand predicates
3975 /* 3026 */ // MIs[0] mi.ptr
3976 /* 3026 */ // No operand predicates
3977 /* 3026 */ // Combiner Rule #31: extending_loads @ [mi[0]]
3978 /* 3026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3979 /* 3029 */ // Label 189: @3029
3980 /* 3029 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3040), // Rule ID 35 //
3981 /* 3034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3982 /* 3037 */ // MIs[0] root
3983 /* 3037 */ // No operand predicates
3984 /* 3037 */ // MIs[0] mi.ptr
3985 /* 3037 */ // No operand predicates
3986 /* 3037 */ // Combiner Rule #33: combine_indexed_load @ [mi[0]]
3987 /* 3037 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
3988 /* 3040 */ // Label 190: @3040
3989 /* 3040 */ GIM_Reject,
3990 /* 3041 */ // Label 24: @3041
3991 /* 3041 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3052), // Rule ID 32 //
3992 /* 3046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
3993 /* 3049 */ // MIs[0] root
3994 /* 3049 */ // No operand predicates
3995 /* 3049 */ // MIs[0] mi.ptr
3996 /* 3049 */ // No operand predicates
3997 /* 3049 */ // Combiner Rule #31: extending_loads @ [mi[1]]
3998 /* 3049 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3999 /* 3052 */ // Label 191: @3052
4000 /* 3052 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3063), // Rule ID 36 //
4001 /* 3057 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
4002 /* 3060 */ // MIs[0] root
4003 /* 3060 */ // No operand predicates
4004 /* 3060 */ // MIs[0] mi.ptr
4005 /* 3060 */ // No operand predicates
4006 /* 3060 */ // Combiner Rule #33: combine_indexed_load @ [mi[1]]
4007 /* 3060 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
4008 /* 3063 */ // Label 192: @3063
4009 /* 3063 */ GIM_Reject,
4010 /* 3064 */ // Label 25: @3064
4011 /* 3064 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3075), // Rule ID 33 //
4012 /* 3069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
4013 /* 3072 */ // MIs[0] root
4014 /* 3072 */ // No operand predicates
4015 /* 3072 */ // MIs[0] mi.ptr
4016 /* 3072 */ // No operand predicates
4017 /* 3072 */ // Combiner Rule #31: extending_loads @ [mi[2]]
4018 /* 3072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4019 /* 3075 */ // Label 193: @3075
4020 /* 3075 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3086), // Rule ID 37 //
4021 /* 3080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
4022 /* 3083 */ // MIs[0] root
4023 /* 3083 */ // No operand predicates
4024 /* 3083 */ // MIs[0] mi.ptr
4025 /* 3083 */ // No operand predicates
4026 /* 3083 */ // Combiner Rule #33: combine_indexed_load @ [mi[2]]
4027 /* 3083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
4028 /* 3086 */ // Label 194: @3086
4029 /* 3086 */ GIM_Reject,
4030 /* 3087 */ // Label 26: @3087
4031 /* 3087 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3110), // Rule ID 201 //
4032 /* 3092 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
4033 /* 3095 */ // MIs[0] val
4034 /* 3095 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/0, // MIs[1]
4035 /* 3099 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4036 /* 3103 */ // MIs[0] ptr
4037 /* 3103 */ // No operand predicates
4038 /* 3103 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
4039 /* 3107 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4040 /* 3109 */ // Combiner Rule #123: erase_undef_store
4041 /* 3109 */ GIR_EraseRootFromParent_Done,
4042 /* 3110 */ // Label 195: @3110
4043 /* 3110 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3121), // Rule ID 38 //
4044 /* 3115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
4045 /* 3118 */ // MIs[0] val
4046 /* 3118 */ // No operand predicates
4047 /* 3118 */ // MIs[0] ptr
4048 /* 3118 */ // No operand predicates
4049 /* 3118 */ // Combiner Rule #34: combine_indexed_store
4050 /* 3118 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
4051 /* 3121 */ // Label 196: @3121
4052 /* 3121 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3132), // Rule ID 169 //
4053 /* 3126 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
4054 /* 3129 */ // MIs[0] src
4055 /* 3129 */ // No operand predicates
4056 /* 3129 */ // MIs[0] addr
4057 /* 3129 */ // No operand predicates
4058 /* 3129 */ // Combiner Rule #111: split_store_zero_128
4059 /* 3129 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
4060 /* 3132 */ // Label 197: @3132
4061 /* 3132 */ GIM_Reject,
4062 /* 3133 */ // Label 27: @3133
4063 /* 3133 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3163), // Rule ID 30 //
4064 /* 3138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
4065 /* 3141 */ // MIs[0] dst
4066 /* 3141 */ // No operand predicates
4067 /* 3141 */ // MIs[0] cmp
4068 /* 3141 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4069 /* 3145 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCMP),
4070 /* 3149 */ // MIs[1] p
4071 /* 3149 */ // No operand predicates
4072 /* 3149 */ // MIs[1] a
4073 /* 3149 */ // No operand predicates
4074 /* 3149 */ // MIs[1] b
4075 /* 3149 */ // No operand predicates
4076 /* 3149 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4077 /* 3153 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4078 /* 3155 */ // Combiner Rule #30: mutate_anyext_to_zext_fcmp
4079 /* 3155 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
4080 /* 3158 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4081 /* 3160 */ GIR_RootToRootCopy, /*OpIdx*/1, // cmp
4082 /* 3162 */ GIR_EraseRootFromParent_Done,
4083 /* 3163 */ // Label 198: @3163
4084 /* 3163 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3193), // Rule ID 29 //
4085 /* 3168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
4086 /* 3171 */ // MIs[0] dst
4087 /* 3171 */ // No operand predicates
4088 /* 3171 */ // MIs[0] cmp
4089 /* 3171 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4090 /* 3175 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
4091 /* 3179 */ // MIs[1] p
4092 /* 3179 */ // No operand predicates
4093 /* 3179 */ // MIs[1] a
4094 /* 3179 */ // No operand predicates
4095 /* 3179 */ // MIs[1] b
4096 /* 3179 */ // No operand predicates
4097 /* 3179 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4098 /* 3183 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4099 /* 3185 */ // Combiner Rule #29: mutate_anyext_to_zext_icmp
4100 /* 3185 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
4101 /* 3188 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4102 /* 3190 */ GIR_RootToRootCopy, /*OpIdx*/1, // cmp
4103 /* 3192 */ GIR_EraseRootFromParent_Done,
4104 /* 3193 */ // Label 199: @3193
4105 /* 3193 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3214), // Rule ID 8 //
4106 /* 3198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4107 /* 3201 */ // MIs[0] root
4108 /* 3201 */ // No operand predicates
4109 /* 3201 */ // MIs[0] second
4110 /* 3201 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4111 /* 3205 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4112 /* 3209 */ // MIs[1] src
4113 /* 3209 */ // No operand predicates
4114 /* 3209 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4115 /* 3211 */ // Combiner Rule #8: anyext_of_anyext
4116 /* 3211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4117 /* 3214 */ // Label 200: @3214
4118 /* 3214 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3235), // Rule ID 10 //
4119 /* 3219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4120 /* 3222 */ // MIs[0] root
4121 /* 3222 */ // No operand predicates
4122 /* 3222 */ // MIs[0] second
4123 /* 3222 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4124 /* 3226 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4125 /* 3230 */ // MIs[1] src
4126 /* 3230 */ // No operand predicates
4127 /* 3230 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4128 /* 3232 */ // Combiner Rule #10: anyext_of_sext
4129 /* 3232 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4130 /* 3235 */ // Label 201: @3235
4131 /* 3235 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3256), // Rule ID 9 //
4132 /* 3240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4133 /* 3243 */ // MIs[0] root
4134 /* 3243 */ // No operand predicates
4135 /* 3243 */ // MIs[0] second
4136 /* 3243 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4137 /* 3247 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4138 /* 3251 */ // MIs[1] src
4139 /* 3251 */ // No operand predicates
4140 /* 3251 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4141 /* 3253 */ // Combiner Rule #9: anyext_of_zext
4142 /* 3253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4143 /* 3256 */ // Label 202: @3256
4144 /* 3256 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3280), // Rule ID 187 //
4145 /* 3261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
4146 /* 3264 */ // MIs[0] dst
4147 /* 3264 */ // No operand predicates
4148 /* 3264 */ // MIs[0] __unary_undef_to_undef_match_0.x
4149 /* 3264 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4150 /* 3268 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4151 /* 3272 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4152 /* 3274 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
4153 /* 3274 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4154 /* 3277 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4155 /* 3279 */ GIR_EraseRootFromParent_Done,
4156 /* 3280 */ // Label 203: @3280
4157 /* 3280 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3291), // Rule ID 121 //
4158 /* 3285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
4159 /* 3288 */ // MIs[0] dst
4160 /* 3288 */ // No operand predicates
4161 /* 3288 */ // MIs[0] d.src
4162 /* 3288 */ // No operand predicates
4163 /* 3288 */ // Combiner Rule #82: constant_fold_cast_op @ [d[2]]
4164 /* 3288 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
4165 /* 3291 */ // Label 204: @3291
4166 /* 3291 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3302), // Rule ID 151 //
4167 /* 3296 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
4168 /* 3299 */ // MIs[0] dst
4169 /* 3299 */ // No operand predicates
4170 /* 3299 */ // MIs[0] src
4171 /* 3299 */ // No operand predicates
4172 /* 3299 */ // Combiner Rule #94: anyext_trunc_fold
4173 /* 3299 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4174 /* 3302 */ // Label 205: @3302
4175 /* 3302 */ GIM_Reject,
4176 /* 3303 */ // Label 28: @3303
4177 /* 3303 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3339), // Rule ID 206 //
4178 /* 3308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
4179 /* 3311 */ // MIs[0] dst
4180 /* 3311 */ // No operand predicates
4181 /* 3311 */ // MIs[0] trunc_src
4182 /* 3311 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4183 /* 3315 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
4184 /* 3319 */ // MIs[1] src1
4185 /* 3319 */ // No operand predicates
4186 /* 3319 */ // MIs[1] src2
4187 /* 3319 */ // No operand predicates
4188 /* 3319 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
4189 /* 3323 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4190 /* 3325 */ // Combiner Rule #128: trunc_or_to_addhn
4191 /* 3325 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(AArch64::G_ADDHN),
4192 /* 3328 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4193 /* 3330 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
4194 /* 3334 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
4195 /* 3338 */ GIR_EraseRootFromParent_Done,
4196 /* 3339 */ // Label 206: @3339
4197 /* 3339 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3371), // Rule ID 247 //
4198 /* 3344 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
4199 /* 3347 */ // MIs[0] dst
4200 /* 3347 */ // No operand predicates
4201 /* 3347 */ // MIs[0] min
4202 /* 3347 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4203 /* 3351 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
4204 /* 3355 */ // MIs[1] x
4205 /* 3355 */ // No operand predicates
4206 /* 3355 */ // MIs[1] y
4207 /* 3355 */ // No operand predicates
4208 /* 3355 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
4209 /* 3359 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4210 /* 3361 */ // Combiner Rule #169: trunc_usatu
4211 /* 3361 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
4212 /* 3364 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4213 /* 3366 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4214 /* 3370 */ GIR_EraseRootFromParent_Done,
4215 /* 3371 */ // Label 207: @3371
4216 /* 3371 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3392), // Rule ID 3 //
4217 /* 3376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4218 /* 3379 */ // MIs[0] root
4219 /* 3379 */ // No operand predicates
4220 /* 3379 */ // MIs[0] ext
4221 /* 3379 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4222 /* 3383 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4223 /* 3387 */ // MIs[1] src
4224 /* 3387 */ // No operand predicates
4225 /* 3387 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4226 /* 3389 */ // Combiner Rule #3: truncate_of_anyext
4227 /* 3389 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4228 /* 3392 */ // Label 208: @3392
4229 /* 3392 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3416), // Rule ID 27 //
4230 /* 3397 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
4231 /* 3400 */ // MIs[0] root
4232 /* 3400 */ // No operand predicates
4233 /* 3400 */ // MIs[0] bv
4234 /* 3400 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4235 /* 3404 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
4236 /* 3408 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
4237 /* 3411 */ // MIs[1] unused
4238 /* 3411 */ // No operand predicates
4239 /* 3411 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4240 /* 3413 */ // Combiner Rule #27: buildvector_of_truncate
4241 /* 3413 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4242 /* 3416 */ // Label 209: @3416
4243 /* 3416 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3437), // Rule ID 2 //
4244 /* 3421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4245 /* 3424 */ // MIs[0] root
4246 /* 3424 */ // No operand predicates
4247 /* 3424 */ // MIs[0] ext
4248 /* 3424 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4249 /* 3428 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4250 /* 3432 */ // MIs[1] src
4251 /* 3432 */ // No operand predicates
4252 /* 3432 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4253 /* 3434 */ // Combiner Rule #2: truncate_of_sext
4254 /* 3434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4255 /* 3437 */ // Label 210: @3437
4256 /* 3437 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3458), // Rule ID 1 //
4257 /* 3442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4258 /* 3445 */ // MIs[0] root
4259 /* 3445 */ // No operand predicates
4260 /* 3445 */ // MIs[0] ext
4261 /* 3445 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4262 /* 3449 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4263 /* 3453 */ // MIs[1] src
4264 /* 3453 */ // No operand predicates
4265 /* 3453 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4266 /* 3455 */ // Combiner Rule #1: truncate_of_zext
4267 /* 3455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4268 /* 3458 */ // Label 211: @3458
4269 /* 3458 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3482), // Rule ID 185 //
4270 /* 3463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
4271 /* 3466 */ // MIs[0] dst
4272 /* 3466 */ // No operand predicates
4273 /* 3466 */ // MIs[0] __unary_undef_to_undef_match_0.x
4274 /* 3466 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4275 /* 3470 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4276 /* 3474 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4277 /* 3476 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
4278 /* 3476 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4279 /* 3479 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4280 /* 3481 */ GIR_EraseRootFromParent_Done,
4281 /* 3482 */ // Label 212: @3482
4282 /* 3482 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3503), // Rule ID 28 //
4283 /* 3487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
4284 /* 3490 */ // MIs[0] root
4285 /* 3490 */ // No operand predicates
4286 /* 3490 */ // MIs[0] int
4287 /* 3490 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4288 /* 3494 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4289 /* 3498 */ // MIs[1] imm
4290 /* 3498 */ // No operand predicates
4291 /* 3498 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4292 /* 3500 */ // Combiner Rule #28: integer_of_truncate
4293 /* 3500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4294 /* 3503 */ // Label 213: @3503
4295 /* 3503 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3514), // Rule ID 159 //
4296 /* 3508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4297 /* 3511 */ // MIs[0] dst
4298 /* 3511 */ // No operand predicates
4299 /* 3511 */ // MIs[0] src
4300 /* 3511 */ // No operand predicates
4301 /* 3511 */ // Combiner Rule #101: trunc_buildvector_fold
4302 /* 3511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
4303 /* 3514 */ // Label 214: @3514
4304 /* 3514 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3525), // Rule ID 160 //
4305 /* 3519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
4306 /* 3522 */ // MIs[0] dst
4307 /* 3522 */ // No operand predicates
4308 /* 3522 */ // MIs[0] src
4309 /* 3522 */ // No operand predicates
4310 /* 3522 */ // Combiner Rule #102: trunc_lshr_buildvector_fold
4311 /* 3522 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
4312 /* 3525 */ // Label 215: @3525
4313 /* 3525 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3536), // Rule ID 245 //
4314 /* 3530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
4315 /* 3533 */ // MIs[0] dst
4316 /* 3533 */ // No operand predicates
4317 /* 3533 */ // MIs[0] src
4318 /* 3533 */ // No operand predicates
4319 /* 3533 */ // Combiner Rule #167: trunc_ssats
4320 /* 3533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
4321 /* 3536 */ // Label 216: @3536
4322 /* 3536 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3547), // Rule ID 246 //
4323 /* 3541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
4324 /* 3544 */ // MIs[0] dst
4325 /* 3544 */ // No operand predicates
4326 /* 3544 */ // MIs[0] src
4327 /* 3544 */ // No operand predicates
4328 /* 3544 */ // Combiner Rule #168: trunc_ssatu
4329 /* 3544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
4330 /* 3547 */ // Label 217: @3547
4331 /* 3547 */ GIM_Reject,
4332 /* 3548 */ // Label 29: @3548
4333 /* 3548 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3580), // Rule ID 248 //
4334 /* 3553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
4335 /* 3556 */ // MIs[0] dst
4336 /* 3556 */ // No operand predicates
4337 /* 3556 */ // MIs[0] src
4338 /* 3556 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4339 /* 3560 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
4340 /* 3564 */ // MIs[1] x
4341 /* 3564 */ // No operand predicates
4342 /* 3564 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
4343 /* 3568 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4344 /* 3570 */ // Combiner Rule #170: truncusatu_to_fptouisat
4345 /* 3570 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
4346 /* 3573 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4347 /* 3575 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4348 /* 3579 */ GIR_EraseRootFromParent_Done,
4349 /* 3580 */ // Label 218: @3580
4350 /* 3580 */ GIM_Reject,
4351 /* 3581 */ // Label 30: @3581
4352 /* 3581 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3602), // Rule ID 7 //
4353 /* 3586 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4354 /* 3589 */ // MIs[0] root
4355 /* 3589 */ // No operand predicates
4356 /* 3589 */ // MIs[0] second
4357 /* 3589 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4358 /* 3593 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4359 /* 3597 */ // MIs[1] src
4360 /* 3597 */ // No operand predicates
4361 /* 3597 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4362 /* 3599 */ // Combiner Rule #7: sext_of_anyext
4363 /* 3599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4364 /* 3602 */ // Label 219: @3602
4365 /* 3602 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3623), // Rule ID 6 //
4366 /* 3607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4367 /* 3610 */ // MIs[0] root
4368 /* 3610 */ // No operand predicates
4369 /* 3610 */ // MIs[0] second
4370 /* 3610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4371 /* 3614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4372 /* 3618 */ // MIs[1] src
4373 /* 3618 */ // No operand predicates
4374 /* 3618 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4375 /* 3620 */ // Combiner Rule #6: sext_of_sext
4376 /* 3620 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4377 /* 3623 */ // Label 220: @3623
4378 /* 3623 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3634), // Rule ID 120 //
4379 /* 3628 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
4380 /* 3631 */ // MIs[0] dst
4381 /* 3631 */ // No operand predicates
4382 /* 3631 */ // MIs[0] d.src
4383 /* 3631 */ // No operand predicates
4384 /* 3631 */ // Combiner Rule #82: constant_fold_cast_op @ [d[1]]
4385 /* 3631 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
4386 /* 3634 */ // Label 221: @3634
4387 /* 3634 */ GIM_Reject,
4388 /* 3635 */ // Label 31: @3635
4389 /* 3635 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3656), // Rule ID 11 //
4390 /* 3640 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4391 /* 3643 */ // MIs[0] dst
4392 /* 3643 */ // No operand predicates
4393 /* 3643 */ // MIs[0] x
4394 /* 3643 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4395 /* 3647 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4396 /* 3651 */ // MIs[1] src
4397 /* 3651 */ // No operand predicates
4398 /* 3651 */ // MIs[1] a
4399 /* 3651 */ // No operand predicates
4400 /* 3651 */ // MIs[0] b
4401 /* 3651 */ // No operand predicates
4402 /* 3651 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4403 /* 3653 */ // Combiner Rule #11: sext_inreg_of_sext_inreg
4404 /* 3653 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4405 /* 3656 */ // Label 222: @3656
4406 /* 3656 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3696), // Rule ID 51 //
4407 /* 3661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
4408 /* 3664 */ // MIs[0] dst
4409 /* 3664 */ // No operand predicates
4410 /* 3664 */ // MIs[0] tmp4
4411 /* 3664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4412 /* 3668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4413 /* 3672 */ // MIs[1] tmp2
4414 /* 3672 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4415 /* 3676 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
4416 /* 3680 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
4417 /* 3683 */ // MIs[2] tmp3
4418 /* 3683 */ // No operand predicates
4419 /* 3683 */ // MIs[2] tmp1
4420 /* 3683 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4421 /* 3687 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4422 /* 3691 */ // MIs[3] src
4423 /* 3691 */ // No operand predicates
4424 /* 3691 */ // MIs[0] amt
4425 /* 3691 */ // No operand predicates
4426 /* 3691 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4427 /* 3693 */ // Combiner Rule #45: redundant_aext_unmerge_sext_inreg
4428 /* 3693 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
4429 /* 3696 */ // Label 223: @3696
4430 /* 3696 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3728), // Rule ID 50 //
4431 /* 3701 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
4432 /* 3704 */ // MIs[0] dst
4433 /* 3704 */ // No operand predicates
4434 /* 3704 */ // MIs[0] tmp
4435 /* 3704 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4436 /* 3708 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4437 /* 3712 */ // MIs[1] src
4438 /* 3712 */ // No operand predicates
4439 /* 3712 */ // MIs[0] amt
4440 /* 3712 */ // No operand predicates
4441 /* 3712 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
4442 /* 3716 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4443 /* 3718 */ // Combiner Rule #44: redundant_aext_sext_inreg
4444 /* 3718 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
4445 /* 3721 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4446 /* 3723 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
4447 /* 3727 */ GIR_EraseRootFromParent_Done,
4448 /* 3728 */ // Label 224: @3728
4449 /* 3728 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3768), // Rule ID 52 //
4450 /* 3733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
4451 /* 3736 */ // MIs[0] dst
4452 /* 3736 */ // No operand predicates
4453 /* 3736 */ // MIs[0] tmp4
4454 /* 3736 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4455 /* 3740 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4456 /* 3744 */ // MIs[1] tmp2
4457 /* 3744 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4458 /* 3748 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
4459 /* 3752 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
4460 /* 3755 */ // MIs[2] tmp3
4461 /* 3755 */ // No operand predicates
4462 /* 3755 */ // MIs[2] tmp1
4463 /* 3755 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4464 /* 3759 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
4465 /* 3763 */ // MIs[3] src
4466 /* 3763 */ // No operand predicates
4467 /* 3763 */ // MIs[0] amt
4468 /* 3763 */ // No operand predicates
4469 /* 3763 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4470 /* 3765 */ // Combiner Rule #46: redundant_zext_unmerge_sext_inreg
4471 /* 3765 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
4472 /* 3768 */ // Label 225: @3768
4473 /* 3768 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3800), // Rule ID 49 //
4474 /* 3773 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4475 /* 3776 */ // MIs[0] dst
4476 /* 3776 */ // No operand predicates
4477 /* 3776 */ // MIs[0] tmp
4478 /* 3776 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4479 /* 3780 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4480 /* 3784 */ // MIs[1] src
4481 /* 3784 */ // No operand predicates
4482 /* 3784 */ // MIs[0] amt
4483 /* 3784 */ // No operand predicates
4484 /* 3784 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
4485 /* 3788 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4486 /* 3790 */ // Combiner Rule #43: redundant_zext_sext_inreg
4487 /* 3790 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
4488 /* 3793 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4489 /* 3795 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
4490 /* 3799 */ GIR_EraseRootFromParent_Done,
4491 /* 3800 */ // Label 226: @3800
4492 /* 3800 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3823), // Rule ID 39 //
4493 /* 3805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
4494 /* 3808 */ // MIs[0] dst
4495 /* 3808 */ // No operand predicates
4496 /* 3808 */ // MIs[0] src
4497 /* 3808 */ // No operand predicates
4498 /* 3808 */ // MIs[0] sz
4499 /* 3808 */ // No operand predicates
4500 /* 3808 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
4501 /* 3812 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4502 /* 3817 */ // Combiner Rule #35: sext_trunc_sextload
4503 /* 3817 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4504 /* 3822 */ GIR_EraseRootFromParent_Done,
4505 /* 3823 */ // Label 227: @3823
4506 /* 3823 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3846), // Rule ID 48 //
4507 /* 3828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
4508 /* 3831 */ // MIs[0] dst
4509 /* 3831 */ // No operand predicates
4510 /* 3831 */ // MIs[0] src
4511 /* 3831 */ // No operand predicates
4512 /* 3831 */ // MIs[0] sz
4513 /* 3831 */ // No operand predicates
4514 /* 3831 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
4515 /* 3835 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4516 /* 3840 */ // Combiner Rule #42: redundant_sext_inreg
4517 /* 3840 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4518 /* 3845 */ GIR_EraseRootFromParent_Done,
4519 /* 3846 */ // Label 228: @3846
4520 /* 3846 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3857), // Rule ID 53 //
4521 /* 3851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
4522 /* 3854 */ // MIs[0] dst
4523 /* 3854 */ // No operand predicates
4524 /* 3854 */ // MIs[0] src
4525 /* 3854 */ // No operand predicates
4526 /* 3854 */ // MIs[0] sz
4527 /* 3854 */ // No operand predicates
4528 /* 3854 */ // Combiner Rule #47: bitfield_extract_from_sext_inreg
4529 /* 3854 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4530 /* 3857 */ // Label 229: @3857
4531 /* 3857 */ GIM_Reject,
4532 /* 3858 */ // Label 32: @3858
4533 /* 3858 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3879), // Rule ID 5 //
4534 /* 3863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4535 /* 3866 */ // MIs[0] root
4536 /* 3866 */ // No operand predicates
4537 /* 3866 */ // MIs[0] second
4538 /* 3866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4539 /* 3870 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
4540 /* 3874 */ // MIs[1] src
4541 /* 3874 */ // No operand predicates
4542 /* 3874 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4543 /* 3876 */ // Combiner Rule #5: zext_of_anyext
4544 /* 3876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4545 /* 3879 */ // Label 230: @3879
4546 /* 3879 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3900), // Rule ID 4 //
4547 /* 3884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4548 /* 3887 */ // MIs[0] root
4549 /* 3887 */ // No operand predicates
4550 /* 3887 */ // MIs[0] second
4551 /* 3887 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4552 /* 3891 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4553 /* 3895 */ // MIs[1] src
4554 /* 3895 */ // No operand predicates
4555 /* 3895 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4556 /* 3897 */ // Combiner Rule #4: zext_of_zext
4557 /* 3897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4558 /* 3900 */ // Label 231: @3900
4559 /* 3900 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3911), // Rule ID 119 //
4560 /* 3905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
4561 /* 3908 */ // MIs[0] dst
4562 /* 3908 */ // No operand predicates
4563 /* 3908 */ // MIs[0] d.src
4564 /* 3908 */ // No operand predicates
4565 /* 3908 */ // Combiner Rule #82: constant_fold_cast_op @ [d[0]]
4566 /* 3908 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
4567 /* 3911 */ // Label 232: @3911
4568 /* 3911 */ GIM_Reject,
4569 /* 3912 */ // Label 33: @3912
4570 /* 3912 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3933), // Rule ID 178 //
4571 /* 3917 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
4572 /* 3920 */ // MIs[0] dst
4573 /* 3920 */ // No operand predicates
4574 /* 3920 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
4575 /* 3920 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4576 /* 3924 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4577 /* 3928 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
4578 /* 3928 */ // No operand predicates
4579 /* 3928 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4580 /* 3930 */ // Combiner Rule #115: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[0]]
4581 /* 3930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
4582 /* 3933 */ // Label 233: @3933
4583 /* 3933 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3957), // Rule ID 181 //
4584 /* 3938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4585 /* 3941 */ // MIs[0] dst
4586 /* 3941 */ // No operand predicates
4587 /* 3941 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
4588 /* 3941 */ // No operand predicates
4589 /* 3941 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
4590 /* 3941 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4591 /* 3945 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4592 /* 3949 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4593 /* 3951 */ // Combiner Rule #116: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[0]]
4594 /* 3951 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4595 /* 3954 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4596 /* 3956 */ GIR_EraseRootFromParent_Done,
4597 /* 3957 */ // Label 234: @3957
4598 /* 3957 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3980), // Rule ID 128 //
4599 /* 3962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
4600 /* 3965 */ // MIs[0] dst
4601 /* 3965 */ // No operand predicates
4602 /* 3965 */ // MIs[0] lhs
4603 /* 3965 */ // No operand predicates
4604 /* 3965 */ // MIs[0] Operand 2
4605 /* 3965 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4606 /* 3969 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4607 /* 3974 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[4]]
4608 /* 3974 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4609 /* 3979 */ GIR_EraseRootFromParent_Done,
4610 /* 3980 */ // Label 235: @3980
4611 /* 3980 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4003), // Rule ID 138 //
4612 /* 3985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4613 /* 3988 */ // MIs[0] dst
4614 /* 3988 */ // No operand predicates
4615 /* 3988 */ // MIs[0] zero
4616 /* 3988 */ // No operand predicates
4617 /* 3988 */ // MIs[0] rhs
4618 /* 3988 */ // No operand predicates
4619 /* 3988 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
4620 /* 3992 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4621 /* 3997 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
4622 /* 3997 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4623 /* 4002 */ GIR_EraseRootFromParent_Done,
4624 /* 4003 */ // Label 236: @4003
4625 /* 4003 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4014), // Rule ID 96 //
4626 /* 4008 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4627 /* 4011 */ // MIs[0] d
4628 /* 4011 */ // No operand predicates
4629 /* 4011 */ // MIs[0] mi.src0
4630 /* 4011 */ // No operand predicates
4631 /* 4011 */ // MIs[0] mi.src1
4632 /* 4011 */ // No operand predicates
4633 /* 4011 */ // Combiner Rule #80: constant_fold_binop @ [mi[7]]
4634 /* 4011 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4635 /* 4014 */ // Label 237: @4014
4636 /* 4014 */ GIM_Reject,
4637 /* 4015 */ // Label 34: @4015
4638 /* 4015 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4044), // Rule ID 249 //
4639 /* 4020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
4640 /* 4023 */ // MIs[0] dst
4641 /* 4023 */ // No operand predicates
4642 /* 4023 */ // MIs[0] d2
4643 /* 4023 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4644 /* 4027 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
4645 /* 4031 */ // MIs[1] d1
4646 /* 4031 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4647 /* 4035 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
4648 /* 4039 */ // MIs[2] x
4649 /* 4039 */ // No operand predicates
4650 /* 4039 */ // MIs[2] y
4651 /* 4039 */ // No operand predicates
4652 /* 4039 */ // MIs[0] z
4653 /* 4039 */ // No operand predicates
4654 /* 4039 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4655 /* 4041 */ // Combiner Rule #171: lshr_of_trunc_of_lshr
4656 /* 4041 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
4657 /* 4044 */ // Label 238: @4044
4658 /* 4044 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4068), // Rule ID 183 //
4659 /* 4049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4660 /* 4052 */ // MIs[0] dst
4661 /* 4052 */ // No operand predicates
4662 /* 4052 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
4663 /* 4052 */ // No operand predicates
4664 /* 4052 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
4665 /* 4052 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4666 /* 4056 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4667 /* 4060 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4668 /* 4062 */ // Combiner Rule #116: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[2]]
4669 /* 4062 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4670 /* 4065 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4671 /* 4067 */ GIR_EraseRootFromParent_Done,
4672 /* 4068 */ // Label 239: @4068
4673 /* 4068 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4091), // Rule ID 130 //
4674 /* 4073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
4675 /* 4076 */ // MIs[0] dst
4676 /* 4076 */ // No operand predicates
4677 /* 4076 */ // MIs[0] lhs
4678 /* 4076 */ // No operand predicates
4679 /* 4076 */ // MIs[0] Operand 2
4680 /* 4076 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4681 /* 4080 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4682 /* 4085 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[6]]
4683 /* 4085 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4684 /* 4090 */ GIR_EraseRootFromParent_Done,
4685 /* 4091 */ // Label 240: @4091
4686 /* 4091 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4114), // Rule ID 139 //
4687 /* 4096 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4688 /* 4099 */ // MIs[0] dst
4689 /* 4099 */ // No operand predicates
4690 /* 4099 */ // MIs[0] zero
4691 /* 4099 */ // No operand predicates
4692 /* 4099 */ // MIs[0] rhs
4693 /* 4099 */ // No operand predicates
4694 /* 4099 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
4695 /* 4103 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4696 /* 4108 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
4697 /* 4108 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4698 /* 4113 */ GIR_EraseRootFromParent_Done,
4699 /* 4114 */ // Label 241: @4114
4700 /* 4114 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4125), // Rule ID 56 //
4701 /* 4119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
4702 /* 4122 */ // MIs[0] dst
4703 /* 4122 */ // No operand predicates
4704 /* 4122 */ // MIs[0] root.src
4705 /* 4122 */ // No operand predicates
4706 /* 4122 */ // MIs[0] root.amt
4707 /* 4122 */ // No operand predicates
4708 /* 4122 */ // Combiner Rule #49: bitfield_extract_from_shr @ [root[1]]
4709 /* 4122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
4710 /* 4125 */ // Label 242: @4125
4711 /* 4125 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4136), // Rule ID 58 //
4712 /* 4130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
4713 /* 4133 */ // MIs[0] dst
4714 /* 4133 */ // No operand predicates
4715 /* 4133 */ // MIs[0] root.src
4716 /* 4133 */ // No operand predicates
4717 /* 4133 */ // MIs[0] root.amt
4718 /* 4133 */ // No operand predicates
4719 /* 4133 */ // Combiner Rule #50: bitfield_extract_from_shr_and @ [root[1]]
4720 /* 4133 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
4721 /* 4136 */ // Label 243: @4136
4722 /* 4136 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4147), // Rule ID 93 //
4723 /* 4141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4724 /* 4144 */ // MIs[0] d
4725 /* 4144 */ // No operand predicates
4726 /* 4144 */ // MIs[0] mi.src0
4727 /* 4144 */ // No operand predicates
4728 /* 4144 */ // MIs[0] mi.src1
4729 /* 4144 */ // No operand predicates
4730 /* 4144 */ // Combiner Rule #80: constant_fold_binop @ [mi[4]]
4731 /* 4144 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4732 /* 4147 */ // Label 244: @4147
4733 /* 4147 */ GIM_Reject,
4734 /* 4148 */ // Label 35: @4148
4735 /* 4148 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4172), // Rule ID 182 //
4736 /* 4153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4737 /* 4156 */ // MIs[0] dst
4738 /* 4156 */ // No operand predicates
4739 /* 4156 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
4740 /* 4156 */ // No operand predicates
4741 /* 4156 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
4742 /* 4156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4743 /* 4160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4744 /* 4164 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4745 /* 4166 */ // Combiner Rule #116: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[1]]
4746 /* 4166 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4747 /* 4169 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4748 /* 4171 */ GIR_EraseRootFromParent_Done,
4749 /* 4172 */ // Label 245: @4172
4750 /* 4172 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4195), // Rule ID 129 //
4751 /* 4177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
4752 /* 4180 */ // MIs[0] dst
4753 /* 4180 */ // No operand predicates
4754 /* 4180 */ // MIs[0] lhs
4755 /* 4180 */ // No operand predicates
4756 /* 4180 */ // MIs[0] Operand 2
4757 /* 4180 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4758 /* 4184 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4759 /* 4189 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[5]]
4760 /* 4189 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4761 /* 4194 */ GIR_EraseRootFromParent_Done,
4762 /* 4195 */ // Label 246: @4195
4763 /* 4195 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4218), // Rule ID 140 //
4764 /* 4200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4765 /* 4203 */ // MIs[0] dst
4766 /* 4203 */ // No operand predicates
4767 /* 4203 */ // MIs[0] zero
4768 /* 4203 */ // No operand predicates
4769 /* 4203 */ // MIs[0] rhs
4770 /* 4203 */ // No operand predicates
4771 /* 4203 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
4772 /* 4207 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4773 /* 4212 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
4774 /* 4212 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4775 /* 4217 */ GIR_EraseRootFromParent_Done,
4776 /* 4218 */ // Label 247: @4218
4777 /* 4218 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4229), // Rule ID 55 //
4778 /* 4223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
4779 /* 4226 */ // MIs[0] dst
4780 /* 4226 */ // No operand predicates
4781 /* 4226 */ // MIs[0] root.src
4782 /* 4226 */ // No operand predicates
4783 /* 4226 */ // MIs[0] root.amt
4784 /* 4226 */ // No operand predicates
4785 /* 4226 */ // Combiner Rule #49: bitfield_extract_from_shr @ [root[0]]
4786 /* 4226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
4787 /* 4229 */ // Label 248: @4229
4788 /* 4229 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4240), // Rule ID 57 //
4789 /* 4234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
4790 /* 4237 */ // MIs[0] dst
4791 /* 4237 */ // No operand predicates
4792 /* 4237 */ // MIs[0] root.src
4793 /* 4237 */ // No operand predicates
4794 /* 4237 */ // MIs[0] root.amt
4795 /* 4237 */ // No operand predicates
4796 /* 4237 */ // Combiner Rule #50: bitfield_extract_from_shr_and @ [root[0]]
4797 /* 4237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
4798 /* 4240 */ // Label 249: @4240
4799 /* 4240 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4251), // Rule ID 92 //
4800 /* 4245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4801 /* 4248 */ // MIs[0] d
4802 /* 4248 */ // No operand predicates
4803 /* 4248 */ // MIs[0] mi.src0
4804 /* 4248 */ // No operand predicates
4805 /* 4248 */ // MIs[0] mi.src1
4806 /* 4248 */ // No operand predicates
4807 /* 4248 */ // Combiner Rule #80: constant_fold_binop @ [mi[3]]
4808 /* 4248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4809 /* 4251 */ // Label 250: @4251
4810 /* 4251 */ GIM_Reject,
4811 /* 4252 */ // Label 36: @4252
4812 /* 4252 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4275), // Rule ID 133 //
4813 /* 4257 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
4814 /* 4260 */ // MIs[0] dst
4815 /* 4260 */ // No operand predicates
4816 /* 4260 */ // MIs[0] lhs
4817 /* 4260 */ // No operand predicates
4818 /* 4260 */ // MIs[0] Operand 2
4819 /* 4260 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4820 /* 4264 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4821 /* 4269 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[9]]
4822 /* 4269 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4823 /* 4274 */ GIR_EraseRootFromParent_Done,
4824 /* 4275 */ // Label 251: @4275
4825 /* 4275 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4286), // Rule ID 59 //
4826 /* 4280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
4827 /* 4283 */ // MIs[0] dst
4828 /* 4283 */ // No operand predicates
4829 /* 4283 */ // MIs[0] root.x
4830 /* 4283 */ // No operand predicates
4831 /* 4283 */ // MIs[0] root.amt
4832 /* 4283 */ // No operand predicates
4833 /* 4283 */ // Combiner Rule #51: rotate_out_of_range @ [root[0]]
4834 /* 4283 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
4835 /* 4286 */ // Label 252: @4286
4836 /* 4286 */ GIM_Reject,
4837 /* 4287 */ // Label 37: @4287
4838 /* 4287 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4310), // Rule ID 132 //
4839 /* 4292 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
4840 /* 4295 */ // MIs[0] dst
4841 /* 4295 */ // No operand predicates
4842 /* 4295 */ // MIs[0] lhs
4843 /* 4295 */ // No operand predicates
4844 /* 4295 */ // MIs[0] Operand 2
4845 /* 4295 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4846 /* 4299 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4847 /* 4304 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[8]]
4848 /* 4304 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4849 /* 4309 */ GIR_EraseRootFromParent_Done,
4850 /* 4310 */ // Label 253: @4310
4851 /* 4310 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4321), // Rule ID 60 //
4852 /* 4315 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
4853 /* 4318 */ // MIs[0] dst
4854 /* 4318 */ // No operand predicates
4855 /* 4318 */ // MIs[0] root.x
4856 /* 4318 */ // No operand predicates
4857 /* 4318 */ // MIs[0] root.amt
4858 /* 4318 */ // No operand predicates
4859 /* 4318 */ // Combiner Rule #51: rotate_out_of_range @ [root[1]]
4860 /* 4318 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
4861 /* 4321 */ // Label 254: @4321
4862 /* 4321 */ GIM_Reject,
4863 /* 4322 */ // Label 38: @4322
4864 /* 4322 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4333), // Rule ID 61 //
4865 /* 4327 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
4866 /* 4330 */ // MIs[0] dst
4867 /* 4330 */ // No operand predicates
4868 /* 4330 */ // MIs[0] pred
4869 /* 4330 */ // No operand predicates
4870 /* 4330 */ // MIs[0] src1
4871 /* 4330 */ // No operand predicates
4872 /* 4330 */ // MIs[0] src2
4873 /* 4330 */ // No operand predicates
4874 /* 4330 */ // Combiner Rule #52: icmp_to_true_false_known_bits
4875 /* 4330 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
4876 /* 4333 */ // Label 255: @4333
4877 /* 4333 */ GIM_Reject,
4878 /* 4334 */ // Label 39: @4334
4879 /* 4334 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4414), // Rule ID 75 //
4880 /* 4339 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
4881 /* 4342 */ // MIs[0] dst
4882 /* 4342 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4883 /* 4346 */ // MIs[0] c
4884 /* 4346 */ // No operand predicates
4885 /* 4346 */ // MIs[0] Operand 2
4886 /* 4346 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4887 /* 4350 */ // MIs[0] x
4888 /* 4350 */ // No operand predicates
4889 /* 4350 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
4890 /* 4354 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
4891 /* 4357 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4892 /* 4360 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4893 /* 4370 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4894 /* 4373 */ // Combiner Rule #66: select_zero_true
4895 /* 4373 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4896 /* 4376 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4897 /* 4381 */ GIR_RootToRootCopy, /*OpIdx*/1, // c
4898 /* 4383 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4899 /* 4386 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
4900 /* 4390 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4901 /* 4395 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/3, // x
4902 /* 4399 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
4903 /* 4403 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
4904 /* 4407 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
4905 /* 4410 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
4906 /* 4413 */ GIR_EraseRootFromParent_Done,
4907 /* 4414 */ // Label 256: @4414
4908 /* 4414 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4463), // Rule ID 76 //
4909 /* 4419 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
4910 /* 4422 */ // MIs[0] dst
4911 /* 4422 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4912 /* 4426 */ // MIs[0] c
4913 /* 4426 */ // No operand predicates
4914 /* 4426 */ // MIs[0] x
4915 /* 4426 */ // No operand predicates
4916 /* 4426 */ // MIs[0] Operand 3
4917 /* 4426 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
4918 /* 4430 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
4919 /* 4434 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4920 /* 4437 */ // Combiner Rule #67: select_zero_false
4921 /* 4437 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
4922 /* 4440 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4923 /* 4445 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
4924 /* 4447 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
4925 /* 4451 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4926 /* 4455 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
4927 /* 4459 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4928 /* 4462 */ GIR_EraseRootFromParent_Done,
4929 /* 4463 */ // Label 257: @4463
4930 /* 4463 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4484), // Rule ID 73 //
4931 /* 4468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
4932 /* 4471 */ // MIs[0] root
4933 /* 4471 */ // No operand predicates
4934 /* 4471 */ // MIs[0] tst
4935 /* 4471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4936 /* 4475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
4937 /* 4479 */ // MIs[1] tst1
4938 /* 4479 */ // No operand predicates
4939 /* 4479 */ // MIs[1] a
4940 /* 4479 */ // No operand predicates
4941 /* 4479 */ // MIs[1] b
4942 /* 4479 */ // No operand predicates
4943 /* 4479 */ // MIs[0] x
4944 /* 4479 */ // No operand predicates
4945 /* 4479 */ // MIs[0] y
4946 /* 4479 */ // No operand predicates
4947 /* 4479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4948 /* 4481 */ // Combiner Rule #64: select_to_iminmax
4949 /* 4481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
4950 /* 4484 */ // Label 258: @4484
4951 /* 4484 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4520), // Rule ID 77 //
4952 /* 4489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
4953 /* 4492 */ // MIs[0] dst
4954 /* 4492 */ // No operand predicates
4955 /* 4492 */ // MIs[0] c
4956 /* 4492 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4957 /* 4496 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
4958 /* 4500 */ // MIs[1] src
4959 /* 4500 */ // No operand predicates
4960 /* 4500 */ // MIs[1] Operand 2
4961 /* 4500 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
4962 /* 4504 */ // MIs[0] x
4963 /* 4504 */ // No operand predicates
4964 /* 4504 */ // MIs[0] y
4965 /* 4504 */ // No operand predicates
4966 /* 4504 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4967 /* 4506 */ // Combiner Rule #68: select_not
4968 /* 4506 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
4969 /* 4509 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4970 /* 4511 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
4971 /* 4515 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
4972 /* 4517 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
4973 /* 4519 */ GIR_EraseRootFromParent_Done,
4974 /* 4520 */ // Label 259: @4520
4975 /* 4520 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4549), // Rule ID 68 //
4976 /* 4525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
4977 /* 4528 */ // MIs[0] dst
4978 /* 4528 */ // No operand predicates
4979 /* 4528 */ // MIs[0] undef
4980 /* 4528 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4981 /* 4532 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4982 /* 4536 */ // MIs[0] x
4983 /* 4536 */ // No operand predicates
4984 /* 4536 */ // MIs[0] y
4985 /* 4536 */ // No operand predicates
4986 /* 4536 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4987 /* 4541 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4988 /* 4543 */ // Combiner Rule #59: select_undef_cmp
4989 /* 4543 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4990 /* 4548 */ GIR_EraseRootFromParent_Done,
4991 /* 4549 */ // Label 260: @4549
4992 /* 4549 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4589), // Rule ID 69 //
4993 /* 4554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
4994 /* 4557 */ // MIs[0] dst
4995 /* 4557 */ // No operand predicates
4996 /* 4557 */ // MIs[0] cond
4997 /* 4557 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4998 /* 4561 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4999 /* 4565 */ // MIs[1] Operand 1
5000 /* 4565 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5001 /* 4576 */ // MIs[0] tval
5002 /* 4576 */ // No operand predicates
5003 /* 4576 */ // MIs[0] fval
5004 /* 4576 */ // No operand predicates
5005 /* 4576 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
5006 /* 4581 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5007 /* 4583 */ // Combiner Rule #60: select_constant_cmp_false
5008 /* 4583 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
5009 /* 4588 */ GIR_EraseRootFromParent_Done,
5010 /* 4589 */ // Label 261: @4589
5011 /* 4589 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4629), // Rule ID 70 //
5012 /* 4594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
5013 /* 4597 */ // MIs[0] dst
5014 /* 4597 */ // No operand predicates
5015 /* 4597 */ // MIs[0] cond
5016 /* 4597 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5017 /* 4601 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5018 /* 4605 */ // MIs[1] Operand 1
5019 /* 4605 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(1),
5020 /* 4616 */ // MIs[0] tval
5021 /* 4616 */ // No operand predicates
5022 /* 4616 */ // MIs[0] fval
5023 /* 4616 */ // No operand predicates
5024 /* 4616 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5025 /* 4621 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5026 /* 4623 */ // Combiner Rule #61: select_constant_cmp_true
5027 /* 4623 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5028 /* 4628 */ GIR_EraseRootFromParent_Done,
5029 /* 4629 */ // Label 262: @4629
5030 /* 4629 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4653), // Rule ID 122 //
5031 /* 4634 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5032 /* 4637 */ // MIs[0] dst
5033 /* 4637 */ // No operand predicates
5034 /* 4637 */ // MIs[0] cond
5035 /* 4637 */ // No operand predicates
5036 /* 4637 */ // MIs[0] x
5037 /* 4637 */ // No operand predicates
5038 /* 4637 */ // MIs[0] x
5039 /* 4637 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/0, /*OtherOpIdx*/2,
5040 /* 4642 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5041 /* 4647 */ // Combiner Rule #83: select_same_val_trivial
5042 /* 4647 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5043 /* 4652 */ GIR_EraseRootFromParent_Done,
5044 /* 4653 */ // Label 263: @4653
5045 /* 4653 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4676), // Rule ID 71 //
5046 /* 4658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
5047 /* 4661 */ // MIs[0] dst
5048 /* 4661 */ // No operand predicates
5049 /* 4661 */ // MIs[0] cond
5050 /* 4661 */ // No operand predicates
5051 /* 4661 */ // MIs[0] tval
5052 /* 4661 */ // No operand predicates
5053 /* 4661 */ // MIs[0] fval
5054 /* 4661 */ // No operand predicates
5055 /* 4661 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
5056 /* 4665 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
5057 /* 4670 */ // Combiner Rule #62: select_constant_cmp_general_false
5058 /* 4670 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
5059 /* 4675 */ GIR_EraseRootFromParent_Done,
5060 /* 4676 */ // Label 264: @4676
5061 /* 4676 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4699), // Rule ID 72 //
5062 /* 4681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
5063 /* 4684 */ // MIs[0] dst
5064 /* 4684 */ // No operand predicates
5065 /* 4684 */ // MIs[0] cond
5066 /* 4684 */ // No operand predicates
5067 /* 4684 */ // MIs[0] tval
5068 /* 4684 */ // No operand predicates
5069 /* 4684 */ // MIs[0] fval
5070 /* 4684 */ // No operand predicates
5071 /* 4684 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
5072 /* 4688 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5073 /* 4693 */ // Combiner Rule #63: select_constant_cmp_general_true
5074 /* 4693 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5075 /* 4698 */ GIR_EraseRootFromParent_Done,
5076 /* 4699 */ // Label 265: @4699
5077 /* 4699 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4722), // Rule ID 123 //
5078 /* 4704 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5079 /* 4707 */ // MIs[0] dst
5080 /* 4707 */ // No operand predicates
5081 /* 4707 */ // MIs[0] cond
5082 /* 4707 */ // No operand predicates
5083 /* 4707 */ // MIs[0] tval
5084 /* 4707 */ // No operand predicates
5085 /* 4707 */ // MIs[0] fval
5086 /* 4707 */ // No operand predicates
5087 /* 4707 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
5088 /* 4711 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5089 /* 4716 */ // Combiner Rule #84: select_same_val_equiv
5090 /* 4716 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5091 /* 4721 */ GIR_EraseRootFromParent_Done,
5092 /* 4722 */ // Label 266: @4722
5093 /* 4722 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4733), // Rule ID 74 //
5094 /* 4727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
5095 /* 4730 */ // MIs[0] dst
5096 /* 4730 */ // No operand predicates
5097 /* 4730 */ // MIs[0] cond
5098 /* 4730 */ // No operand predicates
5099 /* 4730 */ // MIs[0] tval
5100 /* 4730 */ // No operand predicates
5101 /* 4730 */ // MIs[0] fval
5102 /* 4730 */ // No operand predicates
5103 /* 4730 */ // Combiner Rule #65: match_selects
5104 /* 4730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
5105 /* 4733 */ // Label 267: @4733
5106 /* 4733 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4744), // Rule ID 204 //
5107 /* 4738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5108 /* 4741 */ // MIs[0] dst
5109 /* 4741 */ // No operand predicates
5110 /* 4741 */ // MIs[0] cond
5111 /* 4741 */ // No operand predicates
5112 /* 4741 */ // MIs[0] tval
5113 /* 4741 */ // No operand predicates
5114 /* 4741 */ // MIs[0] fval
5115 /* 4741 */ // No operand predicates
5116 /* 4741 */ // Combiner Rule #126: select_to_minmax
5117 /* 4741 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5118 /* 4744 */ // Label 268: @4744
5119 /* 4744 */ GIM_Reject,
5120 /* 4745 */ // Label 40: @4745
5121 /* 4745 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4775), // Rule ID 63 //
5122 /* 4750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
5123 /* 4753 */ // MIs[0] dst
5124 /* 4753 */ // No operand predicates
5125 /* 4753 */ // MIs[0] carry
5126 /* 4753 */ // No operand predicates
5127 /* 4753 */ // MIs[0] x
5128 /* 4753 */ // No operand predicates
5129 /* 4753 */ // MIs[0] y
5130 /* 4753 */ // No operand predicates
5131 /* 4753 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
5132 /* 4757 */ // Combiner Rule #54: match_addos_uaddo_dead_carry
5133 /* 4757 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5134 /* 4760 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5135 /* 4762 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
5136 /* 4764 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
5137 /* 4766 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5138 /* 4770 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // carry
5139 /* 4774 */ GIR_EraseRootFromParent_Done,
5140 /* 4775 */ // Label 269: @4775
5141 /* 4775 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4802), // Rule ID 226 //
5142 /* 4780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
5143 /* 4783 */ // MIs[0] dst
5144 /* 4783 */ // No operand predicates
5145 /* 4783 */ // MIs[0] carry
5146 /* 4783 */ // No operand predicates
5147 /* 4783 */ // MIs[0] lhs
5148 /* 4783 */ // No operand predicates
5149 /* 4783 */ // MIs[0] rhs
5150 /* 4783 */ // No operand predicates
5151 /* 4783 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5152 /* 4787 */ // Combiner Rule #148: G_UADDO_commute_constant_to_rhs
5153 /* 4787 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDO),
5154 /* 4790 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5155 /* 4792 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
5156 /* 4794 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
5157 /* 4796 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
5158 /* 4798 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5159 /* 4801 */ GIR_EraseRootFromParent_Done,
5160 /* 4802 */ // Label 270: @4802
5161 /* 4802 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4813), // Rule ID 65 //
5162 /* 4807 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
5163 /* 4810 */ // MIs[0] dst
5164 /* 4810 */ // No operand predicates
5165 /* 4810 */ // MIs[0] carry
5166 /* 4810 */ // No operand predicates
5167 /* 4810 */ // MIs[0] x
5168 /* 4810 */ // No operand predicates
5169 /* 4810 */ // MIs[0] y
5170 /* 4810 */ // No operand predicates
5171 /* 4810 */ // Combiner Rule #56: match_addos_uaddo
5172 /* 4810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
5173 /* 4813 */ // Label 271: @4813
5174 /* 4813 */ GIM_Reject,
5175 /* 4814 */ // Label 41: @4814
5176 /* 4814 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4825), // Rule ID 67 //
5177 /* 4819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
5178 /* 4822 */ // MIs[0] dst
5179 /* 4822 */ // No operand predicates
5180 /* 4822 */ // MIs[0] carry
5181 /* 4822 */ // No operand predicates
5182 /* 4822 */ // MIs[0] x
5183 /* 4822 */ // No operand predicates
5184 /* 4822 */ // MIs[0] y
5185 /* 4822 */ // No operand predicates
5186 /* 4822 */ // Combiner Rule #58: match_subo_no_overflow_usubo
5187 /* 4822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5188 /* 4825 */ // Label 272: @4825
5189 /* 4825 */ GIM_Reject,
5190 /* 4826 */ // Label 42: @4826
5191 /* 4826 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4856), // Rule ID 62 //
5192 /* 4831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
5193 /* 4834 */ // MIs[0] dst
5194 /* 4834 */ // No operand predicates
5195 /* 4834 */ // MIs[0] carry
5196 /* 4834 */ // No operand predicates
5197 /* 4834 */ // MIs[0] x
5198 /* 4834 */ // No operand predicates
5199 /* 4834 */ // MIs[0] y
5200 /* 4834 */ // No operand predicates
5201 /* 4834 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
5202 /* 4838 */ // Combiner Rule #53: match_addos_saddo_dead_carry
5203 /* 4838 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5204 /* 4841 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5205 /* 4843 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
5206 /* 4845 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
5207 /* 4847 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5208 /* 4851 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // carry
5209 /* 4855 */ GIR_EraseRootFromParent_Done,
5210 /* 4856 */ // Label 273: @4856
5211 /* 4856 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4883), // Rule ID 227 //
5212 /* 4861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
5213 /* 4864 */ // MIs[0] dst
5214 /* 4864 */ // No operand predicates
5215 /* 4864 */ // MIs[0] carry
5216 /* 4864 */ // No operand predicates
5217 /* 4864 */ // MIs[0] lhs
5218 /* 4864 */ // No operand predicates
5219 /* 4864 */ // MIs[0] rhs
5220 /* 4864 */ // No operand predicates
5221 /* 4864 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5222 /* 4868 */ // Combiner Rule #149: G_SADDO_commute_constant_to_rhs
5223 /* 4868 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDO),
5224 /* 4871 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5225 /* 4873 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
5226 /* 4875 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
5227 /* 4877 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
5228 /* 4879 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5229 /* 4882 */ GIR_EraseRootFromParent_Done,
5230 /* 4883 */ // Label 274: @4883
5231 /* 4883 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4894), // Rule ID 64 //
5232 /* 4888 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
5233 /* 4891 */ // MIs[0] dst
5234 /* 4891 */ // No operand predicates
5235 /* 4891 */ // MIs[0] carry
5236 /* 4891 */ // No operand predicates
5237 /* 4891 */ // MIs[0] x
5238 /* 4891 */ // No operand predicates
5239 /* 4891 */ // MIs[0] y
5240 /* 4891 */ // No operand predicates
5241 /* 4891 */ // Combiner Rule #55: match_addos_saddo
5242 /* 4891 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
5243 /* 4894 */ // Label 275: @4894
5244 /* 4894 */ GIM_Reject,
5245 /* 4895 */ // Label 43: @4895
5246 /* 4895 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4906), // Rule ID 66 //
5247 /* 4900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
5248 /* 4903 */ // MIs[0] dst
5249 /* 4903 */ // No operand predicates
5250 /* 4903 */ // MIs[0] carry
5251 /* 4903 */ // No operand predicates
5252 /* 4903 */ // MIs[0] x
5253 /* 4903 */ // No operand predicates
5254 /* 4903 */ // MIs[0] y
5255 /* 4903 */ // No operand predicates
5256 /* 4903 */ // Combiner Rule #57: match_subo_no_overflow_ssubo
5257 /* 4903 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5258 /* 4906 */ // Label 276: @4906
5259 /* 4906 */ GIM_Reject,
5260 /* 4907 */ // Label 44: @4907
5261 /* 4907 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4934), // Rule ID 228 //
5262 /* 4912 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
5263 /* 4915 */ // MIs[0] dst
5264 /* 4915 */ // No operand predicates
5265 /* 4915 */ // MIs[0] carry
5266 /* 4915 */ // No operand predicates
5267 /* 4915 */ // MIs[0] lhs
5268 /* 4915 */ // No operand predicates
5269 /* 4915 */ // MIs[0] rhs
5270 /* 4915 */ // No operand predicates
5271 /* 4915 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5272 /* 4919 */ // Combiner Rule #150: G_UMULO_commute_constant_to_rhs
5273 /* 4919 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULO),
5274 /* 4922 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5275 /* 4924 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
5276 /* 4926 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
5277 /* 4928 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
5278 /* 4930 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5279 /* 4933 */ GIR_EraseRootFromParent_Done,
5280 /* 4934 */ // Label 277: @4934
5281 /* 4934 */ GIM_Reject,
5282 /* 4935 */ // Label 45: @4935
5283 /* 4935 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4962), // Rule ID 229 //
5284 /* 4940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
5285 /* 4943 */ // MIs[0] dst
5286 /* 4943 */ // No operand predicates
5287 /* 4943 */ // MIs[0] carry
5288 /* 4943 */ // No operand predicates
5289 /* 4943 */ // MIs[0] lhs
5290 /* 4943 */ // No operand predicates
5291 /* 4943 */ // MIs[0] rhs
5292 /* 4943 */ // No operand predicates
5293 /* 4943 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5294 /* 4947 */ // Combiner Rule #151: G_SMULO_commute_constant_to_rhs
5295 /* 4947 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULO),
5296 /* 4950 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5297 /* 4952 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
5298 /* 4954 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
5299 /* 4956 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
5300 /* 4958 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5301 /* 4961 */ GIR_EraseRootFromParent_Done,
5302 /* 4962 */ // Label 278: @4962
5303 /* 4962 */ GIM_Reject,
5304 /* 4963 */ // Label 46: @4963
5305 /* 4963 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4988), // Rule ID 218 //
5306 /* 4968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
5307 /* 4971 */ // MIs[0] dst
5308 /* 4971 */ // No operand predicates
5309 /* 4971 */ // MIs[0] lhs
5310 /* 4971 */ // No operand predicates
5311 /* 4971 */ // MIs[0] rhs
5312 /* 4971 */ // No operand predicates
5313 /* 4971 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5314 /* 4975 */ // Combiner Rule #140: G_UMULH_commute_constant_to_rhs
5315 /* 4975 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULH),
5316 /* 4978 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5317 /* 4980 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5318 /* 4982 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5319 /* 4984 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5320 /* 4987 */ GIR_EraseRootFromParent_Done,
5321 /* 4988 */ // Label 279: @4988
5322 /* 4988 */ GIM_Reject,
5323 /* 4989 */ // Label 47: @4989
5324 /* 4989 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5014), // Rule ID 219 //
5325 /* 4994 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
5326 /* 4997 */ // MIs[0] dst
5327 /* 4997 */ // No operand predicates
5328 /* 4997 */ // MIs[0] lhs
5329 /* 4997 */ // No operand predicates
5330 /* 4997 */ // MIs[0] rhs
5331 /* 4997 */ // No operand predicates
5332 /* 4997 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5333 /* 5001 */ // Combiner Rule #141: G_SMULH_commute_constant_to_rhs
5334 /* 5001 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULH),
5335 /* 5004 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5336 /* 5006 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5337 /* 5008 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5338 /* 5010 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5339 /* 5013 */ GIR_EraseRootFromParent_Done,
5340 /* 5014 */ // Label 280: @5014
5341 /* 5014 */ GIM_Reject,
5342 /* 5015 */ // Label 48: @5015
5343 /* 5015 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5040), // Rule ID 220 //
5344 /* 5020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
5345 /* 5023 */ // MIs[0] dst
5346 /* 5023 */ // No operand predicates
5347 /* 5023 */ // MIs[0] lhs
5348 /* 5023 */ // No operand predicates
5349 /* 5023 */ // MIs[0] rhs
5350 /* 5023 */ // No operand predicates
5351 /* 5023 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5352 /* 5027 */ // Combiner Rule #142: G_UADDSAT_commute_constant_to_rhs
5353 /* 5027 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDSAT),
5354 /* 5030 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5355 /* 5032 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5356 /* 5034 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5357 /* 5036 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5358 /* 5039 */ GIR_EraseRootFromParent_Done,
5359 /* 5040 */ // Label 281: @5040
5360 /* 5040 */ GIM_Reject,
5361 /* 5041 */ // Label 49: @5041
5362 /* 5041 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5066), // Rule ID 221 //
5363 /* 5046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
5364 /* 5049 */ // MIs[0] dst
5365 /* 5049 */ // No operand predicates
5366 /* 5049 */ // MIs[0] lhs
5367 /* 5049 */ // No operand predicates
5368 /* 5049 */ // MIs[0] rhs
5369 /* 5049 */ // No operand predicates
5370 /* 5049 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5371 /* 5053 */ // Combiner Rule #143: G_SADDSAT_commute_constant_to_rhs
5372 /* 5053 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDSAT),
5373 /* 5056 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5374 /* 5058 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5375 /* 5060 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5376 /* 5062 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5377 /* 5065 */ GIR_EraseRootFromParent_Done,
5378 /* 5066 */ // Label 282: @5066
5379 /* 5066 */ GIM_Reject,
5380 /* 5067 */ // Label 50: @5067
5381 /* 5067 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5094), // Rule ID 222 //
5382 /* 5072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
5383 /* 5075 */ // MIs[0] dst
5384 /* 5075 */ // No operand predicates
5385 /* 5075 */ // MIs[0] lhs
5386 /* 5075 */ // No operand predicates
5387 /* 5075 */ // MIs[0] rhs
5388 /* 5075 */ // No operand predicates
5389 /* 5075 */ // MIs[0] scale
5390 /* 5075 */ // No operand predicates
5391 /* 5075 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5392 /* 5079 */ // Combiner Rule #144: G_SMULFIX_commute_constant_to_rhs
5393 /* 5079 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULFIX),
5394 /* 5082 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5395 /* 5084 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5396 /* 5086 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5397 /* 5088 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
5398 /* 5090 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5399 /* 5093 */ GIR_EraseRootFromParent_Done,
5400 /* 5094 */ // Label 283: @5094
5401 /* 5094 */ GIM_Reject,
5402 /* 5095 */ // Label 51: @5095
5403 /* 5095 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5122), // Rule ID 223 //
5404 /* 5100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
5405 /* 5103 */ // MIs[0] dst
5406 /* 5103 */ // No operand predicates
5407 /* 5103 */ // MIs[0] lhs
5408 /* 5103 */ // No operand predicates
5409 /* 5103 */ // MIs[0] rhs
5410 /* 5103 */ // No operand predicates
5411 /* 5103 */ // MIs[0] scale
5412 /* 5103 */ // No operand predicates
5413 /* 5103 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5414 /* 5107 */ // Combiner Rule #145: G_UMULFIX_commute_constant_to_rhs
5415 /* 5107 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULFIX),
5416 /* 5110 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5417 /* 5112 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5418 /* 5114 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5419 /* 5116 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
5420 /* 5118 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5421 /* 5121 */ GIR_EraseRootFromParent_Done,
5422 /* 5122 */ // Label 284: @5122
5423 /* 5122 */ GIM_Reject,
5424 /* 5123 */ // Label 52: @5123
5425 /* 5123 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5150), // Rule ID 224 //
5426 /* 5128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
5427 /* 5131 */ // MIs[0] dst
5428 /* 5131 */ // No operand predicates
5429 /* 5131 */ // MIs[0] lhs
5430 /* 5131 */ // No operand predicates
5431 /* 5131 */ // MIs[0] rhs
5432 /* 5131 */ // No operand predicates
5433 /* 5131 */ // MIs[0] scale
5434 /* 5131 */ // No operand predicates
5435 /* 5131 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5436 /* 5135 */ // Combiner Rule #146: G_SMULFIXSAT_commute_constant_to_rhs
5437 /* 5135 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULFIXSAT),
5438 /* 5138 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5439 /* 5140 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5440 /* 5142 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5441 /* 5144 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
5442 /* 5146 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5443 /* 5149 */ GIR_EraseRootFromParent_Done,
5444 /* 5150 */ // Label 285: @5150
5445 /* 5150 */ GIM_Reject,
5446 /* 5151 */ // Label 53: @5151
5447 /* 5151 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5178), // Rule ID 225 //
5448 /* 5156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
5449 /* 5159 */ // MIs[0] dst
5450 /* 5159 */ // No operand predicates
5451 /* 5159 */ // MIs[0] lhs
5452 /* 5159 */ // No operand predicates
5453 /* 5159 */ // MIs[0] rhs
5454 /* 5159 */ // No operand predicates
5455 /* 5159 */ // MIs[0] scale
5456 /* 5159 */ // No operand predicates
5457 /* 5159 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5458 /* 5163 */ // Combiner Rule #147: G_UMULFIXSAT_commute_constant_to_rhs
5459 /* 5163 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULFIXSAT),
5460 /* 5166 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5461 /* 5168 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5462 /* 5170 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5463 /* 5172 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
5464 /* 5174 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5465 /* 5177 */ GIR_EraseRootFromParent_Done,
5466 /* 5178 */ // Label 286: @5178
5467 /* 5178 */ GIM_Reject,
5468 /* 5179 */ // Label 54: @5179
5469 /* 5179 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5202), // Rule ID 164 //
5470 /* 5184 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
5471 /* 5187 */ // MIs[0] dst
5472 /* 5187 */ // No operand predicates
5473 /* 5187 */ // MIs[0] x
5474 /* 5187 */ // No operand predicates
5475 /* 5187 */ // MIs[0] y
5476 /* 5187 */ // No operand predicates
5477 /* 5187 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
5478 /* 5191 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5479 /* 5196 */ // Combiner Rule #106: right_identity_neg_zero_fp
5480 /* 5196 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5481 /* 5201 */ GIR_EraseRootFromParent_Done,
5482 /* 5202 */ // Label 287: @5202
5483 /* 5202 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5227), // Rule ID 230 //
5484 /* 5207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
5485 /* 5210 */ // MIs[0] dst
5486 /* 5210 */ // No operand predicates
5487 /* 5210 */ // MIs[0] lhs
5488 /* 5210 */ // No operand predicates
5489 /* 5210 */ // MIs[0] rhs
5490 /* 5210 */ // No operand predicates
5491 /* 5210 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5492 /* 5214 */ // Combiner Rule #152: G_FADD_commute_fp_constant_to_rhs
5493 /* 5214 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FADD),
5494 /* 5217 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5495 /* 5219 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5496 /* 5221 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5497 /* 5223 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5498 /* 5226 */ GIR_EraseRootFromParent_Done,
5499 /* 5227 */ // Label 288: @5227
5500 /* 5227 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5256), // Rule ID 165 //
5501 /* 5232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5502 /* 5235 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
5503 /* 5241 */ // MIs[0] dst
5504 /* 5241 */ // No operand predicates
5505 /* 5241 */ // MIs[0] x
5506 /* 5241 */ // No operand predicates
5507 /* 5241 */ // MIs[0] y
5508 /* 5241 */ // No operand predicates
5509 /* 5241 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
5510 /* 5245 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5511 /* 5250 */ // Combiner Rule #107: right_identity_neg_zero_fp_nsz
5512 /* 5250 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5513 /* 5255 */ GIR_EraseRootFromParent_Done,
5514 /* 5256 */ // Label 289: @5256
5515 /* 5256 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5267), // Rule ID 107 //
5516 /* 5261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5517 /* 5264 */ // MIs[0] d
5518 /* 5264 */ // No operand predicates
5519 /* 5264 */ // MIs[0] mi.src0
5520 /* 5264 */ // No operand predicates
5521 /* 5264 */ // MIs[0] mi.src1
5522 /* 5264 */ // No operand predicates
5523 /* 5264 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[0]]
5524 /* 5264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5525 /* 5267 */ // Label 290: @5267
5526 /* 5267 */ GIM_Reject,
5527 /* 5268 */ // Label 55: @5268
5528 /* 5268 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5279), // Rule ID 108 //
5529 /* 5273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5530 /* 5276 */ // MIs[0] d
5531 /* 5276 */ // No operand predicates
5532 /* 5276 */ // MIs[0] mi.src0
5533 /* 5276 */ // No operand predicates
5534 /* 5276 */ // MIs[0] mi.src1
5535 /* 5276 */ // No operand predicates
5536 /* 5276 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[1]]
5537 /* 5276 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5538 /* 5279 */ // Label 291: @5279
5539 /* 5279 */ GIM_Reject,
5540 /* 5280 */ // Label 56: @5280
5541 /* 5280 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5303), // Rule ID 154 //
5542 /* 5285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
5543 /* 5288 */ // MIs[0] dst
5544 /* 5288 */ // No operand predicates
5545 /* 5288 */ // MIs[0] x
5546 /* 5288 */ // No operand predicates
5547 /* 5288 */ // MIs[0] y
5548 /* 5288 */ // No operand predicates
5549 /* 5288 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
5550 /* 5292 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5551 /* 5297 */ // Combiner Rule #97: right_identity_one_fp
5552 /* 5297 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5553 /* 5302 */ GIR_EraseRootFromParent_Done,
5554 /* 5303 */ // Label 292: @5303
5555 /* 5303 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5323), // Rule ID 166 //
5556 /* 5308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
5557 /* 5311 */ // MIs[0] dst
5558 /* 5311 */ // No operand predicates
5559 /* 5311 */ // MIs[0] x
5560 /* 5311 */ // No operand predicates
5561 /* 5311 */ // MIs[0] y
5562 /* 5311 */ // No operand predicates
5563 /* 5311 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
5564 /* 5315 */ // Combiner Rule #108: right_identity_neg_one_fp
5565 /* 5315 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
5566 /* 5318 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5567 /* 5320 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5568 /* 5322 */ GIR_EraseRootFromParent_Done,
5569 /* 5323 */ // Label 293: @5323
5570 /* 5323 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5348), // Rule ID 231 //
5571 /* 5328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
5572 /* 5331 */ // MIs[0] dst
5573 /* 5331 */ // No operand predicates
5574 /* 5331 */ // MIs[0] lhs
5575 /* 5331 */ // No operand predicates
5576 /* 5331 */ // MIs[0] rhs
5577 /* 5331 */ // No operand predicates
5578 /* 5331 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5579 /* 5335 */ // Combiner Rule #153: G_FMUL_commute_fp_constant_to_rhs
5580 /* 5335 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMUL),
5581 /* 5338 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5582 /* 5340 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5583 /* 5342 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5584 /* 5344 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5585 /* 5347 */ GIR_EraseRootFromParent_Done,
5586 /* 5348 */ // Label 294: @5348
5587 /* 5348 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5359), // Rule ID 109 //
5588 /* 5353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5589 /* 5356 */ // MIs[0] d
5590 /* 5356 */ // No operand predicates
5591 /* 5356 */ // MIs[0] mi.src0
5592 /* 5356 */ // No operand predicates
5593 /* 5356 */ // MIs[0] mi.src1
5594 /* 5356 */ // No operand predicates
5595 /* 5356 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[2]]
5596 /* 5356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5597 /* 5359 */ // Label 295: @5359
5598 /* 5359 */ GIM_Reject,
5599 /* 5360 */ // Label 57: @5360
5600 /* 5360 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5371), // Rule ID 110 //
5601 /* 5365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5602 /* 5368 */ // MIs[0] d
5603 /* 5368 */ // No operand predicates
5604 /* 5368 */ // MIs[0] mi.src0
5605 /* 5368 */ // No operand predicates
5606 /* 5368 */ // MIs[0] mi.src1
5607 /* 5368 */ // No operand predicates
5608 /* 5368 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[3]]
5609 /* 5368 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5610 /* 5371 */ // Label 296: @5371
5611 /* 5371 */ GIM_Reject,
5612 /* 5372 */ // Label 58: @5372
5613 /* 5372 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5383), // Rule ID 111 //
5614 /* 5377 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5615 /* 5380 */ // MIs[0] d
5616 /* 5380 */ // No operand predicates
5617 /* 5380 */ // MIs[0] mi.src0
5618 /* 5380 */ // No operand predicates
5619 /* 5380 */ // MIs[0] mi.src1
5620 /* 5380 */ // No operand predicates
5621 /* 5380 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[4]]
5622 /* 5380 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5623 /* 5383 */ // Label 297: @5383
5624 /* 5383 */ GIM_Reject,
5625 /* 5384 */ // Label 59: @5384
5626 /* 5384 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5405), // Rule ID 15 //
5627 /* 5389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5628 /* 5392 */ // MIs[0] dst
5629 /* 5392 */ // No operand predicates
5630 /* 5392 */ // MIs[0] src0
5631 /* 5392 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5632 /* 5396 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5633 /* 5400 */ // MIs[1] cst
5634 /* 5400 */ // No operand predicates
5635 /* 5400 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5636 /* 5402 */ // Combiner Rule #15: constant_fold_flog2
5637 /* 5402 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5638 /* 5405 */ // Label 298: @5405
5639 /* 5405 */ GIM_Reject,
5640 /* 5406 */ // Label 60: @5406
5641 /* 5406 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5427), // Rule ID 12 //
5642 /* 5411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5643 /* 5414 */ // MIs[0] dst
5644 /* 5414 */ // No operand predicates
5645 /* 5414 */ // MIs[0] src0
5646 /* 5414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5647 /* 5418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5648 /* 5422 */ // MIs[1] cst
5649 /* 5422 */ // No operand predicates
5650 /* 5422 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5651 /* 5424 */ // Combiner Rule #12: constant_fold_fneg
5652 /* 5424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5653 /* 5427 */ // Label 299: @5427
5654 /* 5427 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5456), // Rule ID 152 //
5655 /* 5432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
5656 /* 5435 */ // MIs[0] dst
5657 /* 5435 */ // No operand predicates
5658 /* 5435 */ // MIs[0] t
5659 /* 5435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5660 /* 5439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
5661 /* 5443 */ // MIs[1] src
5662 /* 5443 */ // No operand predicates
5663 /* 5443 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5664 /* 5448 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5665 /* 5450 */ // Combiner Rule #95: fneg_fneg_fold
5666 /* 5450 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5667 /* 5455 */ GIR_EraseRootFromParent_Done,
5668 /* 5456 */ // Label 300: @5456
5669 /* 5456 */ GIM_Reject,
5670 /* 5457 */ // Label 61: @5457
5671 /* 5457 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5478), // Rule ID 17 //
5672 /* 5462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5673 /* 5465 */ // MIs[0] dst
5674 /* 5465 */ // No operand predicates
5675 /* 5465 */ // MIs[0] src0
5676 /* 5465 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5677 /* 5469 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5678 /* 5473 */ // MIs[1] cst
5679 /* 5473 */ // No operand predicates
5680 /* 5473 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5681 /* 5475 */ // Combiner Rule #17: constant_fold_fpext
5682 /* 5475 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5683 /* 5478 */ // Label 301: @5478
5684 /* 5478 */ GIM_Reject,
5685 /* 5479 */ // Label 62: @5479
5686 /* 5479 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5500), // Rule ID 16 //
5687 /* 5484 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5688 /* 5487 */ // MIs[0] dst
5689 /* 5487 */ // No operand predicates
5690 /* 5487 */ // MIs[0] src0
5691 /* 5487 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5692 /* 5491 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5693 /* 5495 */ // MIs[1] cst
5694 /* 5495 */ // No operand predicates
5695 /* 5495 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5696 /* 5497 */ // Combiner Rule #16: constant_fold_fptrunc
5697 /* 5497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5698 /* 5500 */ // Label 302: @5500
5699 /* 5500 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5533), // Rule ID 163 //
5700 /* 5505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5701 /* 5508 */ // MIs[0] dst
5702 /* 5508 */ // No operand predicates
5703 /* 5508 */ // MIs[0] src1
5704 /* 5508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5705 /* 5512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
5706 /* 5516 */ // MIs[1] src0
5707 /* 5516 */ // No operand predicates
5708 /* 5516 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
5709 /* 5520 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5710 /* 5525 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5711 /* 5527 */ // Combiner Rule #105: fptrunc_fpext_fold
5712 /* 5527 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5713 /* 5532 */ GIR_EraseRootFromParent_Done,
5714 /* 5533 */ // Label 303: @5533
5715 /* 5533 */ GIM_Reject,
5716 /* 5534 */ // Label 63: @5534
5717 /* 5534 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5558), // Rule ID 190 //
5718 /* 5539 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
5719 /* 5542 */ // MIs[0] dst
5720 /* 5542 */ // No operand predicates
5721 /* 5542 */ // MIs[0] __unary_undef_to_undef_match_0.x
5722 /* 5542 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5723 /* 5546 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5724 /* 5550 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5725 /* 5552 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
5726 /* 5552 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5727 /* 5555 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5728 /* 5557 */ GIR_EraseRootFromParent_Done,
5729 /* 5558 */ // Label 304: @5558
5730 /* 5558 */ GIM_Reject,
5731 /* 5559 */ // Label 64: @5559
5732 /* 5559 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5583), // Rule ID 191 //
5733 /* 5564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
5734 /* 5567 */ // MIs[0] dst
5735 /* 5567 */ // No operand predicates
5736 /* 5567 */ // MIs[0] __unary_undef_to_undef_match_0.x
5737 /* 5567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5738 /* 5571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5739 /* 5575 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5740 /* 5577 */ // Combiner Rule #118: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
5741 /* 5577 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5742 /* 5580 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5743 /* 5582 */ GIR_EraseRootFromParent_Done,
5744 /* 5583 */ // Label 305: @5583
5745 /* 5583 */ GIM_Reject,
5746 /* 5584 */ // Label 65: @5584
5747 /* 5584 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5605), // Rule ID 171 //
5748 /* 5589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5749 /* 5592 */ // MIs[0] dst
5750 /* 5592 */ // No operand predicates
5751 /* 5592 */ // MIs[0] __undef_to_fp_zero_match_0.x
5752 /* 5592 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5753 /* 5596 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5754 /* 5600 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5755 /* 5602 */ // Combiner Rule #112: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[1]]
5756 /* 5602 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
5757 /* 5605 */ // Label 306: @5605
5758 /* 5605 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5620), // Rule ID 25 //
5759 /* 5610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
5760 /* 5613 */ // MIs[0] dst
5761 /* 5613 */ // No operand predicates
5762 /* 5613 */ // MIs[0] Operand 1
5763 /* 5613 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5764 /* 5617 */ // Combiner Rule #25: itof_const_zero_fold_si
5765 /* 5617 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
5766 /* 5620 */ // Label 307: @5620
5767 /* 5620 */ GIM_Reject,
5768 /* 5621 */ // Label 66: @5621
5769 /* 5621 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5642), // Rule ID 170 //
5770 /* 5626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5771 /* 5629 */ // MIs[0] dst
5772 /* 5629 */ // No operand predicates
5773 /* 5629 */ // MIs[0] __undef_to_fp_zero_match_0.x
5774 /* 5629 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5775 /* 5633 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5776 /* 5637 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5777 /* 5639 */ // Combiner Rule #112: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[0]]
5778 /* 5639 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
5779 /* 5642 */ // Label 308: @5642
5780 /* 5642 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5657), // Rule ID 26 //
5781 /* 5647 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
5782 /* 5650 */ // MIs[0] dst
5783 /* 5650 */ // No operand predicates
5784 /* 5650 */ // MIs[0] Operand 1
5785 /* 5650 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5786 /* 5654 */ // Combiner Rule #26: itof_const_zero_fold_ui
5787 /* 5654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
5788 /* 5657 */ // Label 309: @5657
5789 /* 5657 */ GIM_Reject,
5790 /* 5658 */ // Label 67: @5658
5791 /* 5658 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5679), // Rule ID 13 //
5792 /* 5663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
5793 /* 5666 */ // MIs[0] dst
5794 /* 5666 */ // No operand predicates
5795 /* 5666 */ // MIs[0] src0
5796 /* 5666 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5797 /* 5670 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5798 /* 5674 */ // MIs[1] cst
5799 /* 5674 */ // No operand predicates
5800 /* 5674 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5801 /* 5676 */ // Combiner Rule #13: constant_fold_fabs
5802 /* 5676 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5803 /* 5679 */ // Label 310: @5679
5804 /* 5679 */ GIM_Reject,
5805 /* 5680 */ // Label 68: @5680
5806 /* 5680 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5691), // Rule ID 112 //
5807 /* 5685 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5808 /* 5688 */ // MIs[0] d
5809 /* 5688 */ // No operand predicates
5810 /* 5688 */ // MIs[0] mi.src0
5811 /* 5688 */ // No operand predicates
5812 /* 5688 */ // MIs[0] mi.src1
5813 /* 5688 */ // No operand predicates
5814 /* 5688 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[5]]
5815 /* 5688 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5816 /* 5691 */ // Label 311: @5691
5817 /* 5691 */ GIM_Reject,
5818 /* 5692 */ // Label 69: @5692
5819 /* 5692 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5717), // Rule ID 232 //
5820 /* 5697 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
5821 /* 5700 */ // MIs[0] dst
5822 /* 5700 */ // No operand predicates
5823 /* 5700 */ // MIs[0] lhs
5824 /* 5700 */ // No operand predicates
5825 /* 5700 */ // MIs[0] rhs
5826 /* 5700 */ // No operand predicates
5827 /* 5700 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5828 /* 5704 */ // Combiner Rule #154: G_FMINNUM_commute_fp_constant_to_rhs
5829 /* 5704 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINNUM),
5830 /* 5707 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5831 /* 5709 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5832 /* 5711 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5833 /* 5713 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5834 /* 5716 */ GIR_EraseRootFromParent_Done,
5835 /* 5717 */ // Label 312: @5717
5836 /* 5717 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5728), // Rule ID 113 //
5837 /* 5722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5838 /* 5725 */ // MIs[0] d
5839 /* 5725 */ // No operand predicates
5840 /* 5725 */ // MIs[0] mi.src0
5841 /* 5725 */ // No operand predicates
5842 /* 5725 */ // MIs[0] mi.src1
5843 /* 5725 */ // No operand predicates
5844 /* 5725 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[6]]
5845 /* 5725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5846 /* 5728 */ // Label 313: @5728
5847 /* 5728 */ GIM_Reject,
5848 /* 5729 */ // Label 70: @5729
5849 /* 5729 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5754), // Rule ID 233 //
5850 /* 5734 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
5851 /* 5737 */ // MIs[0] dst
5852 /* 5737 */ // No operand predicates
5853 /* 5737 */ // MIs[0] lhs
5854 /* 5737 */ // No operand predicates
5855 /* 5737 */ // MIs[0] rhs
5856 /* 5737 */ // No operand predicates
5857 /* 5737 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5858 /* 5741 */ // Combiner Rule #155: G_FMAXNUM_commute_fp_constant_to_rhs
5859 /* 5741 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXNUM),
5860 /* 5744 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5861 /* 5746 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5862 /* 5748 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5863 /* 5750 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5864 /* 5753 */ GIR_EraseRootFromParent_Done,
5865 /* 5754 */ // Label 314: @5754
5866 /* 5754 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5765), // Rule ID 114 //
5867 /* 5759 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5868 /* 5762 */ // MIs[0] d
5869 /* 5762 */ // No operand predicates
5870 /* 5762 */ // MIs[0] mi.src0
5871 /* 5762 */ // No operand predicates
5872 /* 5762 */ // MIs[0] mi.src1
5873 /* 5762 */ // No operand predicates
5874 /* 5762 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[7]]
5875 /* 5762 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5876 /* 5765 */ // Label 315: @5765
5877 /* 5765 */ GIM_Reject,
5878 /* 5766 */ // Label 71: @5766
5879 /* 5766 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5791), // Rule ID 234 //
5880 /* 5771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
5881 /* 5774 */ // MIs[0] dst
5882 /* 5774 */ // No operand predicates
5883 /* 5774 */ // MIs[0] lhs
5884 /* 5774 */ // No operand predicates
5885 /* 5774 */ // MIs[0] rhs
5886 /* 5774 */ // No operand predicates
5887 /* 5774 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5888 /* 5778 */ // Combiner Rule #156: G_FMINNUM_IEEE_commute_fp_constant_to_rhs
5889 /* 5778 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINNUM_IEEE),
5890 /* 5781 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5891 /* 5783 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5892 /* 5785 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5893 /* 5787 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5894 /* 5790 */ GIR_EraseRootFromParent_Done,
5895 /* 5791 */ // Label 316: @5791
5896 /* 5791 */ GIM_Reject,
5897 /* 5792 */ // Label 72: @5792
5898 /* 5792 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5817), // Rule ID 235 //
5899 /* 5797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
5900 /* 5800 */ // MIs[0] dst
5901 /* 5800 */ // No operand predicates
5902 /* 5800 */ // MIs[0] lhs
5903 /* 5800 */ // No operand predicates
5904 /* 5800 */ // MIs[0] rhs
5905 /* 5800 */ // No operand predicates
5906 /* 5800 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5907 /* 5804 */ // Combiner Rule #157: G_FMAXNUM_IEEE_commute_fp_constant_to_rhs
5908 /* 5804 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXNUM_IEEE),
5909 /* 5807 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5910 /* 5809 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5911 /* 5811 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5912 /* 5813 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5913 /* 5816 */ GIR_EraseRootFromParent_Done,
5914 /* 5817 */ // Label 317: @5817
5915 /* 5817 */ GIM_Reject,
5916 /* 5818 */ // Label 73: @5818
5917 /* 5818 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5843), // Rule ID 236 //
5918 /* 5823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
5919 /* 5826 */ // MIs[0] dst
5920 /* 5826 */ // No operand predicates
5921 /* 5826 */ // MIs[0] lhs
5922 /* 5826 */ // No operand predicates
5923 /* 5826 */ // MIs[0] rhs
5924 /* 5826 */ // No operand predicates
5925 /* 5826 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5926 /* 5830 */ // Combiner Rule #158: G_FMINIMUM_commute_fp_constant_to_rhs
5927 /* 5830 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINIMUM),
5928 /* 5833 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5929 /* 5835 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5930 /* 5837 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5931 /* 5839 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5932 /* 5842 */ GIR_EraseRootFromParent_Done,
5933 /* 5843 */ // Label 318: @5843
5934 /* 5843 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5854), // Rule ID 115 //
5935 /* 5848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5936 /* 5851 */ // MIs[0] d
5937 /* 5851 */ // No operand predicates
5938 /* 5851 */ // MIs[0] mi.src0
5939 /* 5851 */ // No operand predicates
5940 /* 5851 */ // MIs[0] mi.src1
5941 /* 5851 */ // No operand predicates
5942 /* 5851 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[8]]
5943 /* 5851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5944 /* 5854 */ // Label 319: @5854
5945 /* 5854 */ GIM_Reject,
5946 /* 5855 */ // Label 74: @5855
5947 /* 5855 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5880), // Rule ID 237 //
5948 /* 5860 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
5949 /* 5863 */ // MIs[0] dst
5950 /* 5863 */ // No operand predicates
5951 /* 5863 */ // MIs[0] lhs
5952 /* 5863 */ // No operand predicates
5953 /* 5863 */ // MIs[0] rhs
5954 /* 5863 */ // No operand predicates
5955 /* 5863 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
5956 /* 5867 */ // Combiner Rule #159: G_FMAXIMUM_commute_fp_constant_to_rhs
5957 /* 5867 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXIMUM),
5958 /* 5870 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5959 /* 5872 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5960 /* 5874 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5961 /* 5876 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5962 /* 5879 */ GIR_EraseRootFromParent_Done,
5963 /* 5880 */ // Label 320: @5880
5964 /* 5880 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5891), // Rule ID 116 //
5965 /* 5885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5966 /* 5888 */ // MIs[0] d
5967 /* 5888 */ // No operand predicates
5968 /* 5888 */ // MIs[0] mi.src0
5969 /* 5888 */ // No operand predicates
5970 /* 5888 */ // MIs[0] mi.src1
5971 /* 5888 */ // No operand predicates
5972 /* 5888 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[9]]
5973 /* 5888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5974 /* 5891 */ // Label 321: @5891
5975 /* 5891 */ GIM_Reject,
5976 /* 5892 */ // Label 75: @5892
5977 /* 5892 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5903), // Rule ID 117 //
5978 /* 5897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5979 /* 5900 */ // MIs[0] d
5980 /* 5900 */ // No operand predicates
5981 /* 5900 */ // MIs[0] mi.src0
5982 /* 5900 */ // No operand predicates
5983 /* 5900 */ // MIs[0] mi.src1
5984 /* 5900 */ // No operand predicates
5985 /* 5900 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[10]]
5986 /* 5900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
5987 /* 5903 */ // Label 322: @5903
5988 /* 5903 */ GIM_Reject,
5989 /* 5904 */ // Label 76: @5904
5990 /* 5904 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5915), // Rule ID 118 //
5991 /* 5909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5992 /* 5912 */ // MIs[0] d
5993 /* 5912 */ // No operand predicates
5994 /* 5912 */ // MIs[0] mi.src0
5995 /* 5912 */ // No operand predicates
5996 /* 5912 */ // MIs[0] mi.src1
5997 /* 5912 */ // No operand predicates
5998 /* 5912 */ // Combiner Rule #81: constant_fold_fp_binop @ [mi[11]]
5999 /* 5912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6000 /* 5915 */ // Label 323: @5915
6001 /* 5915 */ GIM_Reject,
6002 /* 5916 */ // Label 77: @5916
6003 /* 5916 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5939), // Rule ID 131 //
6004 /* 5921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6005 /* 5924 */ // MIs[0] dst
6006 /* 5924 */ // No operand predicates
6007 /* 5924 */ // MIs[0] lhs
6008 /* 5924 */ // No operand predicates
6009 /* 5924 */ // MIs[0] Operand 2
6010 /* 5924 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6011 /* 5928 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6012 /* 5933 */ // Combiner Rule #85: right_identity_zero @ [__right_identity_zero_match_0[7]]
6013 /* 5933 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6014 /* 5938 */ GIR_EraseRootFromParent_Done,
6015 /* 5939 */ // Label 324: @5939
6016 /* 5939 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5950), // Rule ID 90 //
6017 /* 5944 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6018 /* 5947 */ // MIs[0] d
6019 /* 5947 */ // No operand predicates
6020 /* 5947 */ // MIs[0] mi.src0
6021 /* 5947 */ // No operand predicates
6022 /* 5947 */ // MIs[0] mi.src1
6023 /* 5947 */ // No operand predicates
6024 /* 5947 */ // Combiner Rule #80: constant_fold_binop @ [mi[1]]
6025 /* 5947 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6026 /* 5950 */ // Label 325: @5950
6027 /* 5950 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5961), // Rule ID 167 //
6028 /* 5955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
6029 /* 5958 */ // MIs[0] dst
6030 /* 5958 */ // No operand predicates
6031 /* 5958 */ // MIs[0] base
6032 /* 5958 */ // No operand predicates
6033 /* 5958 */ // MIs[0] offset
6034 /* 5958 */ // No operand predicates
6035 /* 5958 */ // Combiner Rule #109: ptr_add_immed_chain
6036 /* 5958 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
6037 /* 5961 */ // Label 326: @5961
6038 /* 5961 */ GIM_Reject,
6039 /* 5962 */ // Label 78: @5962
6040 /* 5962 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5987), // Rule ID 214 //
6041 /* 5967 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
6042 /* 5970 */ // MIs[0] dst
6043 /* 5970 */ // No operand predicates
6044 /* 5970 */ // MIs[0] lhs
6045 /* 5970 */ // No operand predicates
6046 /* 5970 */ // MIs[0] rhs
6047 /* 5970 */ // No operand predicates
6048 /* 5970 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
6049 /* 5974 */ // Combiner Rule #136: G_SMIN_commute_constant_to_rhs
6050 /* 5974 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
6051 /* 5977 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6052 /* 5979 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
6053 /* 5981 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
6054 /* 5983 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
6055 /* 5986 */ GIR_EraseRootFromParent_Done,
6056 /* 5987 */ // Label 327: @5987
6057 /* 5987 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5998), // Rule ID 103 //
6058 /* 5992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6059 /* 5995 */ // MIs[0] d
6060 /* 5995 */ // No operand predicates
6061 /* 5995 */ // MIs[0] mi.src0
6062 /* 5995 */ // No operand predicates
6063 /* 5995 */ // MIs[0] mi.src1
6064 /* 5995 */ // No operand predicates
6065 /* 5995 */ // Combiner Rule #80: constant_fold_binop @ [mi[14]]
6066 /* 5995 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6067 /* 5998 */ // Label 328: @5998
6068 /* 5998 */ GIM_Reject,
6069 /* 5999 */ // Label 79: @5999
6070 /* 5999 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6024), // Rule ID 215 //
6071 /* 6004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
6072 /* 6007 */ // MIs[0] dst
6073 /* 6007 */ // No operand predicates
6074 /* 6007 */ // MIs[0] lhs
6075 /* 6007 */ // No operand predicates
6076 /* 6007 */ // MIs[0] rhs
6077 /* 6007 */ // No operand predicates
6078 /* 6007 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
6079 /* 6011 */ // Combiner Rule #137: G_SMAX_commute_constant_to_rhs
6080 /* 6011 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMAX),
6081 /* 6014 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6082 /* 6016 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
6083 /* 6018 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
6084 /* 6020 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
6085 /* 6023 */ GIR_EraseRootFromParent_Done,
6086 /* 6024 */ // Label 329: @6024
6087 /* 6024 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6035), // Rule ID 104 //
6088 /* 6029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6089 /* 6032 */ // MIs[0] d
6090 /* 6032 */ // No operand predicates
6091 /* 6032 */ // MIs[0] mi.src0
6092 /* 6032 */ // No operand predicates
6093 /* 6032 */ // MIs[0] mi.src1
6094 /* 6032 */ // No operand predicates
6095 /* 6032 */ // Combiner Rule #80: constant_fold_binop @ [mi[15]]
6096 /* 6032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6097 /* 6035 */ // Label 330: @6035
6098 /* 6035 */ GIM_Reject,
6099 /* 6036 */ // Label 80: @6036
6100 /* 6036 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6061), // Rule ID 216 //
6101 /* 6041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
6102 /* 6044 */ // MIs[0] dst
6103 /* 6044 */ // No operand predicates
6104 /* 6044 */ // MIs[0] lhs
6105 /* 6044 */ // No operand predicates
6106 /* 6044 */ // MIs[0] rhs
6107 /* 6044 */ // No operand predicates
6108 /* 6044 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
6109 /* 6048 */ // Combiner Rule #138: G_UMIN_commute_constant_to_rhs
6110 /* 6048 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
6111 /* 6051 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6112 /* 6053 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
6113 /* 6055 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
6114 /* 6057 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
6115 /* 6060 */ GIR_EraseRootFromParent_Done,
6116 /* 6061 */ // Label 331: @6061
6117 /* 6061 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6072), // Rule ID 105 //
6118 /* 6066 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6119 /* 6069 */ // MIs[0] d
6120 /* 6069 */ // No operand predicates
6121 /* 6069 */ // MIs[0] mi.src0
6122 /* 6069 */ // No operand predicates
6123 /* 6069 */ // MIs[0] mi.src1
6124 /* 6069 */ // No operand predicates
6125 /* 6069 */ // Combiner Rule #80: constant_fold_binop @ [mi[16]]
6126 /* 6069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6127 /* 6072 */ // Label 332: @6072
6128 /* 6072 */ GIM_Reject,
6129 /* 6073 */ // Label 81: @6073
6130 /* 6073 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6098), // Rule ID 217 //
6131 /* 6078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
6132 /* 6081 */ // MIs[0] dst
6133 /* 6081 */ // No operand predicates
6134 /* 6081 */ // MIs[0] lhs
6135 /* 6081 */ // No operand predicates
6136 /* 6081 */ // MIs[0] rhs
6137 /* 6081 */ // No operand predicates
6138 /* 6081 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
6139 /* 6085 */ // Combiner Rule #139: G_UMAX_commute_constant_to_rhs
6140 /* 6085 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMAX),
6141 /* 6088 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6142 /* 6090 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
6143 /* 6092 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
6144 /* 6094 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
6145 /* 6097 */ GIR_EraseRootFromParent_Done,
6146 /* 6098 */ // Label 333: @6098
6147 /* 6098 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6109), // Rule ID 106 //
6148 /* 6103 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6149 /* 6106 */ // MIs[0] d
6150 /* 6106 */ // No operand predicates
6151 /* 6106 */ // MIs[0] mi.src0
6152 /* 6106 */ // No operand predicates
6153 /* 6106 */ // MIs[0] mi.src1
6154 /* 6106 */ // No operand predicates
6155 /* 6106 */ // Combiner Rule #80: constant_fold_binop @ [mi[17]]
6156 /* 6106 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6157 /* 6109 */ // Label 334: @6109
6158 /* 6109 */ GIM_Reject,
6159 /* 6110 */ // Label 82: @6110
6160 /* 6110 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6131), // Rule ID 184 //
6161 /* 6115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
6162 /* 6118 */ // MIs[0] dst
6163 /* 6118 */ // No operand predicates
6164 /* 6118 */ // MIs[0] __unary_undef_to_zero_match_0.x
6165 /* 6118 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6166 /* 6122 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6167 /* 6126 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6168 /* 6128 */ // Combiner Rule #117: unary_undef_to_zero @ [__unary_undef_to_zero_match_0[0]]
6169 /* 6128 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6170 /* 6131 */ // Label 335: @6131
6171 /* 6131 */ GIM_Reject,
6172 /* 6132 */ // Label 83: @6132
6173 /* 6132 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6150), // Rule ID 202 //
6174 /* 6137 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6175 /* 6140 */ // MIs[0] root
6176 /* 6140 */ // No operand predicates
6177 /* 6140 */ // MIs[0] vec
6178 /* 6140 */ // No operand predicates
6179 /* 6140 */ // MIs[0] elt
6180 /* 6140 */ // No operand predicates
6181 /* 6140 */ // MIs[0] idx
6182 /* 6140 */ // No operand predicates
6183 /* 6140 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
6184 /* 6144 */ // Combiner Rule #124: insert_vec_elt_out_of_bounds
6185 /* 6144 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6186 /* 6147 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6187 /* 6149 */ GIR_EraseRootFromParent_Done,
6188 /* 6150 */ // Label 336: @6150
6189 /* 6150 */ GIM_Reject,
6190 /* 6151 */ // Label 84: @6151
6191 /* 6151 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6169), // Rule ID 203 //
6192 /* 6156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
6193 /* 6159 */ // MIs[0] root
6194 /* 6159 */ // No operand predicates
6195 /* 6159 */ // MIs[0] vec
6196 /* 6159 */ // No operand predicates
6197 /* 6159 */ // MIs[0] idx
6198 /* 6159 */ // No operand predicates
6199 /* 6159 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
6200 /* 6163 */ // Combiner Rule #125: extract_vec_elt_out_of_bounds
6201 /* 6163 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6202 /* 6166 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6203 /* 6168 */ GIR_EraseRootFromParent_Done,
6204 /* 6169 */ // Label 337: @6169
6205 /* 6169 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6180), // Rule ID 45 //
6206 /* 6174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
6207 /* 6177 */ // MIs[0] dst
6208 /* 6177 */ // No operand predicates
6209 /* 6177 */ // MIs[0] src
6210 /* 6177 */ // No operand predicates
6211 /* 6177 */ // MIs[0] idx
6212 /* 6177 */ // No operand predicates
6213 /* 6177 */ // Combiner Rule #39: extractvecelt_pairwise_add
6214 /* 6177 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
6215 /* 6180 */ // Label 338: @6180
6216 /* 6180 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6191), // Rule ID 238 //
6217 /* 6185 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
6218 /* 6188 */ // MIs[0] dst
6219 /* 6188 */ // No operand predicates
6220 /* 6188 */ // MIs[0] src
6221 /* 6188 */ // No operand predicates
6222 /* 6188 */ // MIs[0] idx
6223 /* 6188 */ // No operand predicates
6224 /* 6188 */ // Combiner Rule #160: extract_vec_elt_build_vec
6225 /* 6188 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
6226 /* 6191 */ // Label 339: @6191
6227 /* 6191 */ GIM_Reject,
6228 /* 6192 */ // Label 85: @6192
6229 /* 6192 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6210), // Rule ID 198 //
6230 /* 6197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
6231 /* 6200 */ // MIs[0] root
6232 /* 6200 */ // No operand predicates
6233 /* 6200 */ // MIs[0] src1
6234 /* 6200 */ // No operand predicates
6235 /* 6200 */ // MIs[0] src2
6236 /* 6200 */ // No operand predicates
6237 /* 6200 */ // MIs[0] mask
6238 /* 6200 */ // No operand predicates
6239 /* 6200 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
6240 /* 6204 */ // Combiner Rule #120: propagate_undef_all_ops_shuffle_vector
6241 /* 6204 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6242 /* 6207 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6243 /* 6209 */ GIR_EraseRootFromParent_Done,
6244 /* 6210 */ // Label 340: @6210
6245 /* 6210 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6228), // Rule ID 200 //
6246 /* 6215 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6247 /* 6218 */ // MIs[0] dst
6248 /* 6218 */ // No operand predicates
6249 /* 6218 */ // MIs[0] src1
6250 /* 6218 */ // No operand predicates
6251 /* 6218 */ // MIs[0] src2
6252 /* 6218 */ // No operand predicates
6253 /* 6218 */ // MIs[0] mask
6254 /* 6218 */ // No operand predicates
6255 /* 6218 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
6256 /* 6222 */ // Combiner Rule #122: propagate_undef_shuffle_mask
6257 /* 6222 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6258 /* 6225 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6259 /* 6227 */ GIR_EraseRootFromParent_Done,
6260 /* 6228 */ // Label 341: @6228
6261 /* 6228 */ GIM_Reject,
6262 /* 6229 */ // Label 86: @6229
6263 /* 6229 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6250), // Rule ID 18 //
6264 /* 6234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
6265 /* 6237 */ // MIs[0] dst
6266 /* 6237 */ // No operand predicates
6267 /* 6237 */ // MIs[0] src0
6268 /* 6237 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6269 /* 6241 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6270 /* 6245 */ // MIs[1] cst
6271 /* 6245 */ // No operand predicates
6272 /* 6245 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6273 /* 6247 */ // Combiner Rule #18: constant_fold_fceil
6274 /* 6247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
6275 /* 6250 */ // Label 342: @6250
6276 /* 6250 */ GIM_Reject,
6277 /* 6251 */ // Label 87: @6251
6278 /* 6251 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6272), // Rule ID 14 //
6279 /* 6256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
6280 /* 6259 */ // MIs[0] dst
6281 /* 6259 */ // No operand predicates
6282 /* 6259 */ // MIs[0] src0
6283 /* 6259 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6284 /* 6263 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6285 /* 6267 */ // MIs[1] cst
6286 /* 6267 */ // No operand predicates
6287 /* 6267 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6288 /* 6269 */ // Combiner Rule #14: constant_fold_fsqrt
6289 /* 6269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
6290 /* 6272 */ // Label 343: @6272
6291 /* 6272 */ GIM_Reject,
6292 /* 6273 */ // Label 88: @6273
6293 /* 6273 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6294), // Rule ID 19 //
6294 /* 6278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
6295 /* 6281 */ // MIs[0] dst
6296 /* 6281 */ // No operand predicates
6297 /* 6281 */ // MIs[0] src0
6298 /* 6281 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6299 /* 6285 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6300 /* 6289 */ // MIs[1] cst
6301 /* 6289 */ // No operand predicates
6302 /* 6289 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6303 /* 6291 */ // Combiner Rule #19: constant_fold_ffloor
6304 /* 6291 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
6305 /* 6294 */ // Label 344: @6294
6306 /* 6294 */ GIM_Reject,
6307 /* 6295 */ // Label 89: @6295
6308 /* 6295 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6316), // Rule ID 23 //
6309 /* 6300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
6310 /* 6303 */ // MIs[0] dst
6311 /* 6303 */ // No operand predicates
6312 /* 6303 */ // MIs[0] src0
6313 /* 6303 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6314 /* 6307 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6315 /* 6311 */ // MIs[1] cst
6316 /* 6311 */ // No operand predicates
6317 /* 6311 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6318 /* 6313 */ // Combiner Rule #23: constant_fold_frint
6319 /* 6313 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
6320 /* 6316 */ // Label 345: @6316
6321 /* 6316 */ GIM_Reject,
6322 /* 6317 */ // Label 90: @6317
6323 /* 6317 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6338), // Rule ID 24 //
6324 /* 6322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6325 /* 6325 */ // MIs[0] dst
6326 /* 6325 */ // No operand predicates
6327 /* 6325 */ // MIs[0] src0
6328 /* 6325 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6329 /* 6329 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6330 /* 6333 */ // MIs[1] cst
6331 /* 6333 */ // No operand predicates
6332 /* 6333 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6333 /* 6335 */ // Combiner Rule #24: constant_fold_fnearbyint
6334 /* 6335 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
6335 /* 6338 */ // Label 346: @6338
6336 /* 6338 */ GIM_Reject,
6337 /* 6339 */ // Label 91: @6339
6338 /* 6339 */ GIM_Reject,
6339 /* 6340 */ }; // Size: 6340 bytes
6340 return MatchTable0;
6341}
6342#undef GIMT_Encode2
6343#undef GIMT_Encode4
6344#undef GIMT_Encode8
6345
6346
6347#endif // GET_GICOMBINER_IMPL
6348
6349#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
6350
6351AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
6352AvailableFunctionFeatures()
6353
6354#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
6355
6356#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
6357
6358, State(0),
6359ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
6360
6361#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
6362
6363