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 39; // "mul_const"
52 case 'o': // 1 string to match.
53 if (memcmp(RuleIdentifier.data()+1, "r_to_bsp", 8) != 0)
54 break;
55 return 103; // "or_to_bsp"
56 }
57 break;
58 case 10: // 2 strings to match.
59 switch (RuleIdentifier[0]) {
60 default: break;
61 case 'i': // 1 string to match.
62 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
63 break;
64 return 73; // "i2p_to_p2i"
65 case 'p': // 1 string to match.
66 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
67 break;
68 return 72; // "p2i_to_i2p"
69 }
70 break;
71 case 11: // 6 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 78; // "add_sub_reg"
78 case 'm': // 1 string to match.
79 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
80 break;
81 return 47; // "match_addos"
82 case 't': // 3 strings to match.
83 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
84 break;
85 switch (RuleIdentifier[6]) {
86 default: break;
87 case 's': // 2 strings to match.
88 if (memcmp(RuleIdentifier.data()+7, "sat", 3) != 0)
89 break;
90 switch (RuleIdentifier[10]) {
91 default: break;
92 case 's': // 1 string to match.
93 return 114; // "trunc_ssats"
94 case 'u': // 1 string to match.
95 return 115; // "trunc_ssatu"
96 }
97 break;
98 case 'u': // 1 string to match.
99 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
100 break;
101 return 116; // "trunc_usatu"
102 }
103 break;
104 case 'u': // 1 string to match.
105 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
106 break;
107 return 57; // "unmerge_cst"
108 }
109 break;
110 case 12: // 4 strings to match.
111 switch (RuleIdentifier[0]) {
112 default: break;
113 case 'e': // 1 string to match.
114 if (memcmp(RuleIdentifier.data()+1, "xtmultomull", 11) != 0)
115 break;
116 return 112; // "extmultomull"
117 case 'r': // 1 string to match.
118 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
119 break;
120 return 38; // "redundant_or"
121 case 's': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "ext_of_sext", 11) != 0)
123 break;
124 return 6; // "sext_of_sext"
125 case 'z': // 1 string to match.
126 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
127 break;
128 return 4; // "zext_of_zext"
129 }
130 break;
131 case 13: // 7 strings to match.
132 switch (RuleIdentifier[0]) {
133 default: break;
134 case 'l': // 1 string to match.
135 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
136 break;
137 return 31; // "load_and_mask"
138 case 'm': // 2 strings to match.
139 switch (RuleIdentifier[1]) {
140 default: break;
141 case 'a': // 1 string to match.
142 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
143 break;
144 return 52; // "match_selects"
145 case 'e': // 1 string to match.
146 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
147 break;
148 return 56; // "merge_unmerge"
149 }
150 break;
151 case 'r': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
153 break;
154 return 35; // "redundant_and"
155 case 's': // 1 string to match.
156 if (memcmp(RuleIdentifier.data()+1, "ame_val_zero", 12) != 0)
157 break;
158 return 69; // "same_val_zero"
159 case 'u': // 2 strings to match.
160 if (memcmp(RuleIdentifier.data()+1, "nmerge_", 7) != 0)
161 break;
162 switch (RuleIdentifier[8]) {
163 default: break;
164 case 'm': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
166 break;
167 return 55; // "unmerge_merge"
168 case 'u': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
170 break;
171 return 58; // "unmerge_undef"
172 }
173 break;
174 }
175 break;
176 case 14: // 6 strings to match.
177 switch (RuleIdentifier[0]) {
178 default: break;
179 case 'a': // 2 strings to match.
180 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
181 break;
182 switch (RuleIdentifier[10]) {
183 default: break;
184 case 's': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
186 break;
187 return 10; // "anyext_of_sext"
188 case 'z': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
190 break;
191 return 9; // "anyext_of_zext"
192 }
193 break;
194 case 'b': // 1 string to match.
195 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
196 break;
197 return 68; // "binop_same_val"
198 case 'f': // 1 string to match.
199 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
200 break;
201 return 75; // "fneg_fneg_fold"
202 case 's': // 1 string to match.
203 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
204 break;
205 return 7; // "sext_of_anyext"
206 case 'z': // 1 string to match.
207 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
208 break;
209 return 5; // "zext_of_anyext"
210 }
211 break;
212 case 15: // 3 strings to match.
213 switch (RuleIdentifier[0]) {
214 default: break;
215 case 'e': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
217 break;
218 return 30; // "extending_loads"
219 case 'o': // 1 string to match.
220 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
221 break;
222 return 88; // "overlapping_and"
223 case 's': // 1 string to match.
224 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
225 break;
226 return 66; // "select_same_val"
227 }
228 break;
229 case 16: // 8 strings to match.
230 switch (RuleIdentifier[0]) {
231 default: break;
232 case 'a': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
234 break;
235 return 8; // "anyext_of_anyext"
236 case 'c': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "ombine_mul_cmlt", 15) != 0)
238 break;
239 return 110; // "combine_mul_cmlt"
240 case 's': // 3 strings to match.
241 switch (RuleIdentifier[1]) {
242 default: break;
243 case 'e': // 2 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 102; // "select_to_minmax"
252 case 'u': // 1 string to match.
253 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
254 break;
255 return 49; // "select_undef_cmp"
256 }
257 break;
258 case 'u': // 1 string to match.
259 if (memcmp(RuleIdentifier.data()+2, "baddmulreassoc", 14) != 0)
260 break;
261 return 113; // "subaddmulreassoc"
262 }
263 break;
264 case 't': // 2 strings to match.
265 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
266 break;
267 switch (RuleIdentifier[12]) {
268 default: break;
269 case 's': // 1 string to match.
270 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
271 break;
272 return 2; // "truncate_of_sext"
273 case 'z': // 1 string to match.
274 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
275 break;
276 return 1; // "truncate_of_zext"
277 }
278 break;
279 case 'u': // 1 string to match.
280 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
281 break;
282 return 90; // "undef_to_fp_zero"
283 }
284 break;
285 case 17: // 4 strings to match.
286 switch (RuleIdentifier[0]) {
287 default: break;
288 case 'a': // 1 string to match.
289 if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
290 break;
291 return 74; // "anyext_trunc_fold"
292 case 'e': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
294 break;
295 return 100; // "erase_undef_store"
296 case 's': // 1 string to match.
297 if (memcmp(RuleIdentifier.data()+1, "elect_to_iminmax", 16) != 0)
298 break;
299 return 51; // "select_to_iminmax"
300 case 'u': // 1 string to match.
301 if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0)
302 break;
303 return 91; // "undef_to_int_zero"
304 }
305 break;
306 case 18: // 6 strings to match.
307 switch (RuleIdentifier[0]) {
308 default: break;
309 case 'b': // 1 string to match.
310 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
311 break;
312 return 70; // "binop_left_to_zero"
313 case 'c': // 2 strings to match.
314 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
315 break;
316 switch (RuleIdentifier[15]) {
317 default: break;
318 case 'a': // 1 string to match.
319 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
320 break;
321 return 13; // "constant_fold_fabs"
322 case 'n': // 1 string to match.
323 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
324 break;
325 return 12; // "constant_fold_fneg"
326 }
327 break;
328 case 'f': // 2 strings to match.
329 switch (RuleIdentifier[1]) {
330 default: break;
331 case 'o': // 1 string to match.
332 if (memcmp(RuleIdentifier.data()+2, "ld_merge_to_zext", 16) != 0)
333 break;
334 return 53; // "fold_merge_to_zext"
335 case 'p': // 1 string to match.
336 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
337 break;
338 return 83; // "fptrunc_fpext_fold"
339 }
340 break;
341 case 't': // 1 string to match.
342 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
343 break;
344 return 3; // "truncate_of_anyext"
345 }
346 break;
347 case 19: // 15 strings to match.
348 switch (RuleIdentifier[0]) {
349 default: break;
350 case 'b': // 1 string to match.
351 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
352 break;
353 return 71; // "binop_right_to_zero"
354 case 'c': // 6 strings to match.
355 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_", 13) != 0)
356 break;
357 switch (RuleIdentifier[14]) {
358 default: break;
359 case 'b': // 1 string to match.
360 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
361 break;
362 return 64; // "constant_fold_binop"
363 case 'f': // 5 strings to match.
364 switch (RuleIdentifier[15]) {
365 default: break;
366 case 'c': // 1 string to match.
367 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
368 break;
369 return 18; // "constant_fold_fceil"
370 case 'l': // 1 string to match.
371 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
372 break;
373 return 15; // "constant_fold_flog2"
374 case 'p': // 1 string to match.
375 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
376 break;
377 return 17; // "constant_fold_fpext"
378 case 'r': // 1 string to match.
379 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
380 break;
381 return 23; // "constant_fold_frint"
382 case 's': // 1 string to match.
383 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
384 break;
385 return 14; // "constant_fold_fsqrt"
386 }
387 break;
388 }
389 break;
390 case 'i': // 1 string to match.
391 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
392 break;
393 return 28; // "integer_of_truncate"
394 case 'm': // 1 string to match.
395 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
396 break;
397 return 62; // "merge_of_x_and_zero"
398 case 'p': // 1 string to match.
399 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
400 break;
401 return 87; // "ptr_add_immed_chain"
402 case 'r': // 2 strings to match.
403 switch (RuleIdentifier[1]) {
404 default: break;
405 case 'i': // 1 string to match.
406 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
407 break;
408 return 67; // "right_identity_zero"
409 case 'o': // 1 string to match.
410 if (memcmp(RuleIdentifier.data()+2, "tate_out_of_range", 17) != 0)
411 break;
412 return 45; // "rotate_out_of_range"
413 }
414 break;
415 case 's': // 2 strings to match.
416 if (RuleIdentifier[1] != 'e')
417 break;
418 switch (RuleIdentifier[2]) {
419 default: break;
420 case 'l': // 1 string to match.
421 if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp", 16) != 0)
422 break;
423 return 50; // "select_constant_cmp"
424 case 'x': // 1 string to match.
425 if (memcmp(RuleIdentifier.data()+3, "t_trunc_sextload", 16) != 0)
426 break;
427 return 33; // "sext_trunc_sextload"
428 }
429 break;
430 case 'u': // 1 string to match.
431 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
432 break;
433 return 95; // "unary_undef_to_zero"
434 }
435 break;
436 case 20: // 7 strings to match.
437 switch (RuleIdentifier[0]) {
438 default: break;
439 case 'b': // 1 string to match.
440 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
441 break;
442 return 82; // "bitcast_bitcast_fold"
443 case 'c': // 1 string to match.
444 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
445 break;
446 return 19; // "constant_fold_ffloor"
447 case 'm': // 1 string to match.
448 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
449 break;
450 return 61; // "merge_of_x_and_undef"
451 case 'r': // 1 string to match.
452 if (memcmp(RuleIdentifier.data()+1, "edundant_sext_inreg", 19) != 0)
453 break;
454 return 40; // "redundant_sext_inreg"
455 case 's': // 1 string to match.
456 if (memcmp(RuleIdentifier.data()+1, "plit_store_zero_128", 19) != 0)
457 break;
458 return 89; // "split_store_zero_128"
459 case 'u': // 2 strings to match.
460 if (RuleIdentifier[1] != 'n')
461 break;
462 switch (RuleIdentifier[2]) {
463 default: break;
464 case 'a': // 1 string to match.
465 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
466 break;
467 return 96; // "unary_undef_to_undef"
468 case 'm': // 1 string to match.
469 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
470 break;
471 return 60; // "unmerge_zext_to_zext"
472 }
473 break;
474 }
475 break;
476 case 21: // 8 strings to match.
477 switch (RuleIdentifier[0]) {
478 default: break;
479 case 'c': // 3 strings to match.
480 if (RuleIdentifier[1] != 'o')
481 break;
482 switch (RuleIdentifier[2]) {
483 default: break;
484 case 'm': // 2 strings to match.
485 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
486 break;
487 switch (RuleIdentifier[8]) {
488 default: break;
489 case 'b': // 1 string to match.
490 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
491 break;
492 return 63; // "combine_build_unmerge"
493 case 'c': // 1 string to match.
494 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
495 break;
496 return 104; // "combine_concat_vector"
497 }
498 break;
499 case 'n': // 1 string to match.
500 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fptrunc", 18) != 0)
501 break;
502 return 16; // "constant_fold_fptrunc"
503 }
504 break;
505 case 'l': // 1 string to match.
506 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
507 break;
508 return 118; // "lshr_of_trunc_of_lshr"
509 case 'm': // 1 string to match.
510 if (memcmp(RuleIdentifier.data()+1, "utate_anyext_to_zext", 20) != 0)
511 break;
512 return 29; // "mutate_anyext_to_zext"
513 case 'r': // 1 string to match.
514 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
515 break;
516 return 77; // "right_identity_one_fp"
517 case 'u': // 2 strings to match.
518 if (RuleIdentifier[1] != 'n')
519 break;
520 switch (RuleIdentifier[2]) {
521 default: break;
522 case 'd': // 1 string to match.
523 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
524 break;
525 return 92; // "undef_to_negative_one"
526 case 'm': // 1 string to match.
527 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
528 break;
529 return 59; // "unmerge_dead_to_trunc"
530 }
531 break;
532 }
533 break;
534 case 22: // 5 strings to match.
535 switch (RuleIdentifier[0]) {
536 default: break;
537 case 'c': // 1 string to match.
538 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0)
539 break;
540 return 65; // "constant_fold_fp_binop"
541 case 'm': // 1 string to match.
542 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
543 break;
544 return 48; // "match_subo_no_overflow"
545 case 'p': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
547 break;
548 return 97; // "propagate_undef_any_op"
549 case 'r': // 1 string to match.
550 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
551 break;
552 return 76; // "right_identity_one_int"
553 case 't': // 1 string to match.
554 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
555 break;
556 return 80; // "trunc_buildvector_fold"
557 }
558 break;
559 case 23: // 5 strings to match.
560 switch (RuleIdentifier[0]) {
561 default: break;
562 case 'b': // 1 string to match.
563 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
564 break;
565 return 27; // "buildvector_of_truncate"
566 case 'i': // 2 strings to match.
567 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
568 break;
569 switch (RuleIdentifier[21]) {
570 default: break;
571 case 's': // 1 string to match.
572 if (RuleIdentifier[22] != 'i')
573 break;
574 return 25; // "itof_const_zero_fold_si"
575 case 'u': // 1 string to match.
576 if (RuleIdentifier[22] != 'i')
577 break;
578 return 26; // "itof_const_zero_fold_ui"
579 }
580 break;
581 case 'p': // 1 string to match.
582 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
583 break;
584 return 98; // "propagate_undef_all_ops"
585 case 't': // 1 string to match.
586 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
587 break;
588 return 117; // "truncusatu_to_fptouisat"
589 }
590 break;
591 case 24: // 4 strings to match.
592 switch (RuleIdentifier[0]) {
593 default: break;
594 case 'b': // 1 string to match.
595 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
596 break;
597 return 93; // "binop_left_undef_to_zero"
598 case 'c': // 1 string to match.
599 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
600 break;
601 return 24; // "constant_fold_fnearbyint"
602 case 's': // 1 string to match.
603 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_of_sext_inreg", 23) != 0)
604 break;
605 return 11; // "sext_inreg_of_sext_inreg"
606 case 'x': // 1 string to match.
607 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
608 break;
609 return 36; // "xor_of_and_with_same_reg"
610 }
611 break;
612 case 25: // 5 strings to match.
613 switch (RuleIdentifier[0]) {
614 default: break;
615 case 'b': // 3 strings to match.
616 switch (RuleIdentifier[1]) {
617 default: break;
618 case 'i': // 2 strings to match.
619 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
620 break;
621 switch (RuleIdentifier[22]) {
622 default: break;
623 case 'a': // 1 string to match.
624 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
625 break;
626 return 42; // "bitfield_extract_from_and"
627 case 's': // 1 string to match.
628 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
629 break;
630 return 43; // "bitfield_extract_from_shr"
631 }
632 break;
633 case 'u': // 1 string to match.
634 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
635 break;
636 return 79; // "buildvector_identity_fold"
637 }
638 break;
639 case 'e': // 1 string to match.
640 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
641 break;
642 return 107; // "extract_vec_elt_build_vec"
643 case 'r': // 1 string to match.
644 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
645 break;
646 return 86; // "right_identity_neg_one_fp"
647 }
648 break;
649 case 26: // 5 strings to match.
650 switch (RuleIdentifier[0]) {
651 default: break;
652 case 'b': // 1 string to match.
653 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
654 break;
655 return 94; // "binop_right_undef_to_undef"
656 case 'c': // 2 strings to match.
657 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
658 break;
659 switch (RuleIdentifier[3]) {
660 default: break;
661 case 'b': // 1 string to match.
662 if (memcmp(RuleIdentifier.data()+4, "ine_indexed_load_store", 22) != 0)
663 break;
664 return 32; // "combine_indexed_load_store"
665 case 'm': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+4, "ute_fp_constant_to_rhs", 22) != 0)
667 break;
668 return 106; // "commute_fp_constant_to_rhs"
669 }
670 break;
671 case 'e': // 1 string to match.
672 if (memcmp(RuleIdentifier.data()+1, "xtractvecelt_pairwise_add", 25) != 0)
673 break;
674 return 37; // "extractvecelt_pairwise_add"
675 case 'r': // 1 string to match.
676 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
677 break;
678 return 84; // "right_identity_neg_zero_fp"
679 }
680 break;
681 case 27: // 4 strings to match.
682 switch (RuleIdentifier[0]) {
683 default: break;
684 case 'c': // 2 strings to match.
685 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
686 break;
687 switch (RuleIdentifier[3]) {
688 default: break;
689 case 'b': // 1 string to match.
690 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
691 break;
692 return 111; // "combine_use_vector_truncate"
693 case 'm': // 1 string to match.
694 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
695 break;
696 return 105; // "commute_int_constant_to_rhs"
697 }
698 break;
699 case 't': // 1 string to match.
700 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
701 break;
702 return 81; // "trunc_lshr_buildvector_fold"
703 case 'u': // 1 string to match.
704 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
705 break;
706 return 54; // "unmerge_anyext_build_vector"
707 }
708 break;
709 case 28: // 1 string to match.
710 if (memcmp(RuleIdentifier.data()+0, "propagate_undef_shuffle_mask", 28) != 0)
711 break;
712 return 99; // "propagate_undef_shuffle_mask"
713 case 29: // 4 strings to match.
714 switch (RuleIdentifier[0]) {
715 default: break;
716 case 'b': // 1 string to match.
717 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
718 break;
719 return 44; // "bitfield_extract_from_shr_and"
720 case 'c': // 2 strings to match.
721 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_", 23) != 0)
722 break;
723 switch (RuleIdentifier[24]) {
724 default: break;
725 case 'r': // 1 string to match.
726 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
727 break;
728 return 21; // "constant_fold_intrinsic_round"
729 case 't': // 1 string to match.
730 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
731 break;
732 return 20; // "constant_fold_intrinsic_trunc"
733 }
734 break;
735 case 'i': // 1 string to match.
736 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
737 break;
738 return 46; // "icmp_to_true_false_known_bits"
739 }
740 break;
741 case 30: // 1 string to match.
742 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp_nsz", 30) != 0)
743 break;
744 return 85; // "right_identity_neg_zero_fp_nsz"
745 case 32: // 1 string to match.
746 if (memcmp(RuleIdentifier.data()+0, "bitfield_extract_from_sext_inreg", 32) != 0)
747 break;
748 return 41; // "bitfield_extract_from_sext_inreg"
749 case 33: // 1 string to match.
750 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
751 break;
752 return 22; // "constant_fold_intrinsic_roundeven"
753 case 34: // 1 string to match.
754 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
755 break;
756 return 108; // "extract_all_elts_from_build_vector"
757 case 36: // 1 string to match.
758 if (memcmp(RuleIdentifier.data()+0, "insert_extract_vec_elt_out_of_bounds", 36) != 0)
759 break;
760 return 101; // "insert_extract_vec_elt_out_of_bounds"
761 case 37: // 1 string to match.
762 if (memcmp(RuleIdentifier.data()+0, "hoist_logic_op_with_same_opcode_hands", 37) != 0)
763 break;
764 return 34; // "hoist_logic_op_with_same_opcode_hands"
765 case 46: // 2 strings to match.
766 switch (RuleIdentifier[0]) {
767 default: break;
768 case 'f': // 1 string to match.
769 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift_constants_are_legal", 45) != 0)
770 break;
771 return 119; // "funnel_shift_from_or_shift_constants_are_legal"
772 case 'p': // 1 string to match.
773 if (memcmp(RuleIdentifier.data()+1, "ush_freeze_to_prevent_poison_from_propagating", 45) != 0)
774 break;
775 return 109; // "push_freeze_to_prevent_poison_from_propagating"
776 }
777 break;
778 }
779#endif // ifndef NDEBUG
780
781 return std::nullopt;
782}
783static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
784 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
785 if (!RangePair.second.empty()) {
786 const auto First = getRuleIdxForIdentifier(RangePair.first);
787 const auto Last = getRuleIdxForIdentifier(RangePair.second);
788 if (!First || !Last)
789 return std::nullopt;
790 if (First >= Last)
791 report_fatal_error("Beginning of range should be before end of range");
792 return {{*First, *Last + 1}};
793 }
794 if (RangePair.first == "*") {
795 return {{0, 120}};
796 }
797 const auto I = getRuleIdxForIdentifier(RangePair.first);
798 if (!I)
799 return std::nullopt;
800 return {{*I, *I + 1}};
801}
802
803bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
804 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
805 if (!MaybeRange)
806 return false;
807 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
808 DisabledRules.reset(I);
809 return true;
810}
811
812bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
813 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
814 if (!MaybeRange)
815 return false;
816 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
817 DisabledRules.set(I);
818 return true;
819}
820
821static std::vector<std::string> AArch64PostLegalizerCombinerOption;
822static cl::list<std::string> AArch64PostLegalizerCombinerDisableOption(
823 "aarch64postlegalizercombiner-disable-rule",
824 cl::desc("Disable one or more combiner rules temporarily in the AArch64PostLegalizerCombiner pass"),
825 cl::CommaSeparated,
826 cl::Hidden,
827 cl::cat(GICombinerOptionCategory),
828 cl::callback([](const std::string &Str) {
829 AArch64PostLegalizerCombinerOption.push_back(Str);
830 }));
831static cl::list<std::string> AArch64PostLegalizerCombinerOnlyEnableOption(
832 "aarch64postlegalizercombiner-only-enable-rule",
833 cl::desc("Disable all rules in the AArch64PostLegalizerCombiner pass then re-enable the specified ones"),
834 cl::Hidden,
835 cl::cat(GICombinerOptionCategory),
836 cl::callback([](const std::string &CommaSeparatedArg) {
837 StringRef Str = CommaSeparatedArg;
838 AArch64PostLegalizerCombinerOption.push_back("*");
839 do {
840 auto X = Str.split(",");
841 AArch64PostLegalizerCombinerOption.push_back(("!" + X.first).str());
842 Str = X.second;
843 } while (!Str.empty());
844 }));
845
846
847bool AArch64PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
848 return !DisabledRules.test(RuleID);
849}
850bool AArch64PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
851 for (StringRef Identifier : AArch64PostLegalizerCombinerOption) {
852 bool Enabled = Identifier.consume_front("!");
853 if (Enabled && !setRuleEnabled(Identifier))
854 return false;
855 if (!Enabled && !setRuleDisabled(Identifier))
856 return false;
857 }
858 return true;
859}
860
861
862#endif // GET_GICOMBINER_TYPES
863
864#ifdef GET_GICOMBINER_TYPES
865
866const unsigned MAX_SUBTARGET_PREDICATES = 0;
867using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
868
869#endif // GET_GICOMBINER_TYPES
870
871#ifdef GET_GICOMBINER_CLASS_MEMBERS
872
873PredicateBitset AvailableModuleFeatures;
874mutable PredicateBitset AvailableFunctionFeatures;
875PredicateBitset getAvailableFeatures() const {
876 return AvailableModuleFeatures | AvailableFunctionFeatures;
877}
878PredicateBitset
879computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
880PredicateBitset
881computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
882 const MachineFunction *MF) const;
883void setupGeneratedPerFunctionState(MachineFunction &MF) override;
884
885#endif // GET_GICOMBINER_CLASS_MEMBERS
886
887#ifdef GET_GICOMBINER_CLASS_MEMBERS
888
889 mutable MatcherState State;
890 typedef ComplexRendererFns(AArch64PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
891 typedef void(AArch64PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
892 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
893 static AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
894 static AArch64PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
895 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
896 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
897 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
898 const uint8_t *getMatchTable() const override;
899 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
900 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
901 bool testSimplePredicate(unsigned PredicateID) const override;
902 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
903
904#endif // GET_GICOMBINER_CLASS_MEMBERS
905
906#ifdef GET_GICOMBINER_IMPL
907
908// LLT Objects.
909enum {
910 GILLT_s1,
911};
912const static size_t NumTypeObjects = 1;
913const static LLT TypeObjects[] = {
914 LLT::scalar(1),
915};
916
917// Bits for subtarget features that participate in instruction matching.
918enum SubtargetFeatureBits : uint8_t {
919};
920
921PredicateBitset AArch64PostLegalizerCombinerImpl::
922computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
923 PredicateBitset Features{};
924 return Features;
925}
926
927void AArch64PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
928 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
929}
930PredicateBitset AArch64PostLegalizerCombinerImpl::
931computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
932 PredicateBitset Features{};
933 return Features;
934}
935
936// Feature bitsets.
937enum {
938 GIFBS_Invalid,
939};
940constexpr static PredicateBitset FeatureBitsets[] {
941 {}, // GIFBS_Invalid
942};
943
944// ComplexPattern predicates.
945enum {
946 GICP_Invalid,
947};
948// See constructor for table contents
949
950AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn
951AArch64PostLegalizerCombinerImpl::ComplexPredicateFns[] = {
952 nullptr, // GICP_Invalid
953};
954
955enum {
956 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
957 GICXXPred_MI_Predicate_GICombiner1,
958 GICXXPred_MI_Predicate_GICombiner2,
959 GICXXPred_MI_Predicate_GICombiner3,
960 GICXXPred_MI_Predicate_GICombiner4,
961 GICXXPred_MI_Predicate_GICombiner5,
962};
963bool AArch64PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
964 switch (PredicateID) {
965 case GICXXPred_MI_Predicate_GICombiner0: {
966 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
967 }
968 case GICXXPred_MI_Predicate_GICombiner1: {
969 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
970 }
971 case GICXXPred_MI_Predicate_GICombiner2: {
972 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
973 }
974 case GICXXPred_MI_Predicate_GICombiner3: {
975 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
976 }
977 case GICXXPred_MI_Predicate_GICombiner4: {
978 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
979 }
980 case GICXXPred_MI_Predicate_GICombiner5: {
981 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
982 }
983 }
984 llvm_unreachable("Unknown predicate");
985 return false;
986}
987bool AArch64PostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
988 llvm_unreachable("Unknown predicate");
989 return false;
990}
991bool AArch64PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
992 llvm_unreachable("Unknown predicate");
993 return false;
994}
995bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
996 llvm_unreachable("Unknown predicate");
997 return false;
998}
999bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1000 llvm_unreachable("Unknown predicate");
1001 return false;
1002}
1003enum {
1004 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1005 GICXXPred_Simple_IsRule1Enabled,
1006 GICXXPred_Simple_IsRule2Enabled,
1007 GICXXPred_Simple_IsRule3Enabled,
1008 GICXXPred_Simple_IsRule4Enabled,
1009 GICXXPred_Simple_IsRule5Enabled,
1010 GICXXPred_Simple_IsRule6Enabled,
1011 GICXXPred_Simple_IsRule7Enabled,
1012 GICXXPred_Simple_IsRule8Enabled,
1013 GICXXPred_Simple_IsRule9Enabled,
1014 GICXXPred_Simple_IsRule10Enabled,
1015 GICXXPred_Simple_IsRule11Enabled,
1016 GICXXPred_Simple_IsRule12Enabled,
1017 GICXXPred_Simple_IsRule13Enabled,
1018 GICXXPred_Simple_IsRule14Enabled,
1019 GICXXPred_Simple_IsRule15Enabled,
1020 GICXXPred_Simple_IsRule16Enabled,
1021 GICXXPred_Simple_IsRule17Enabled,
1022 GICXXPred_Simple_IsRule18Enabled,
1023 GICXXPred_Simple_IsRule19Enabled,
1024 GICXXPred_Simple_IsRule20Enabled,
1025 GICXXPred_Simple_IsRule21Enabled,
1026 GICXXPred_Simple_IsRule22Enabled,
1027 GICXXPred_Simple_IsRule23Enabled,
1028 GICXXPred_Simple_IsRule24Enabled,
1029 GICXXPred_Simple_IsRule25Enabled,
1030 GICXXPred_Simple_IsRule26Enabled,
1031 GICXXPred_Simple_IsRule27Enabled,
1032 GICXXPred_Simple_IsRule28Enabled,
1033 GICXXPred_Simple_IsRule29Enabled,
1034 GICXXPred_Simple_IsRule30Enabled,
1035 GICXXPred_Simple_IsRule31Enabled,
1036 GICXXPred_Simple_IsRule32Enabled,
1037 GICXXPred_Simple_IsRule33Enabled,
1038 GICXXPred_Simple_IsRule34Enabled,
1039 GICXXPred_Simple_IsRule35Enabled,
1040 GICXXPred_Simple_IsRule36Enabled,
1041 GICXXPred_Simple_IsRule37Enabled,
1042 GICXXPred_Simple_IsRule38Enabled,
1043 GICXXPred_Simple_IsRule39Enabled,
1044 GICXXPred_Simple_IsRule40Enabled,
1045 GICXXPred_Simple_IsRule41Enabled,
1046 GICXXPred_Simple_IsRule42Enabled,
1047 GICXXPred_Simple_IsRule43Enabled,
1048 GICXXPred_Simple_IsRule44Enabled,
1049 GICXXPred_Simple_IsRule45Enabled,
1050 GICXXPred_Simple_IsRule46Enabled,
1051 GICXXPred_Simple_IsRule47Enabled,
1052 GICXXPred_Simple_IsRule48Enabled,
1053 GICXXPred_Simple_IsRule49Enabled,
1054 GICXXPred_Simple_IsRule50Enabled,
1055 GICXXPred_Simple_IsRule51Enabled,
1056 GICXXPred_Simple_IsRule52Enabled,
1057 GICXXPred_Simple_IsRule53Enabled,
1058 GICXXPred_Simple_IsRule54Enabled,
1059 GICXXPred_Simple_IsRule55Enabled,
1060 GICXXPred_Simple_IsRule56Enabled,
1061 GICXXPred_Simple_IsRule57Enabled,
1062 GICXXPred_Simple_IsRule58Enabled,
1063 GICXXPred_Simple_IsRule59Enabled,
1064 GICXXPred_Simple_IsRule60Enabled,
1065 GICXXPred_Simple_IsRule61Enabled,
1066 GICXXPred_Simple_IsRule62Enabled,
1067 GICXXPred_Simple_IsRule63Enabled,
1068 GICXXPred_Simple_IsRule64Enabled,
1069 GICXXPred_Simple_IsRule65Enabled,
1070 GICXXPred_Simple_IsRule66Enabled,
1071 GICXXPred_Simple_IsRule67Enabled,
1072 GICXXPred_Simple_IsRule68Enabled,
1073 GICXXPred_Simple_IsRule69Enabled,
1074 GICXXPred_Simple_IsRule70Enabled,
1075 GICXXPred_Simple_IsRule71Enabled,
1076 GICXXPred_Simple_IsRule72Enabled,
1077 GICXXPred_Simple_IsRule73Enabled,
1078 GICXXPred_Simple_IsRule74Enabled,
1079 GICXXPred_Simple_IsRule75Enabled,
1080 GICXXPred_Simple_IsRule76Enabled,
1081 GICXXPred_Simple_IsRule77Enabled,
1082 GICXXPred_Simple_IsRule78Enabled,
1083 GICXXPred_Simple_IsRule79Enabled,
1084 GICXXPred_Simple_IsRule80Enabled,
1085 GICXXPred_Simple_IsRule81Enabled,
1086 GICXXPred_Simple_IsRule82Enabled,
1087 GICXXPred_Simple_IsRule83Enabled,
1088 GICXXPred_Simple_IsRule84Enabled,
1089 GICXXPred_Simple_IsRule85Enabled,
1090 GICXXPred_Simple_IsRule86Enabled,
1091 GICXXPred_Simple_IsRule87Enabled,
1092 GICXXPred_Simple_IsRule88Enabled,
1093 GICXXPred_Simple_IsRule89Enabled,
1094 GICXXPred_Simple_IsRule90Enabled,
1095 GICXXPred_Simple_IsRule91Enabled,
1096 GICXXPred_Simple_IsRule92Enabled,
1097 GICXXPred_Simple_IsRule93Enabled,
1098 GICXXPred_Simple_IsRule94Enabled,
1099 GICXXPred_Simple_IsRule95Enabled,
1100 GICXXPred_Simple_IsRule96Enabled,
1101 GICXXPred_Simple_IsRule97Enabled,
1102 GICXXPred_Simple_IsRule98Enabled,
1103 GICXXPred_Simple_IsRule99Enabled,
1104 GICXXPred_Simple_IsRule100Enabled,
1105 GICXXPred_Simple_IsRule101Enabled,
1106 GICXXPred_Simple_IsRule102Enabled,
1107 GICXXPred_Simple_IsRule103Enabled,
1108 GICXXPred_Simple_IsRule104Enabled,
1109 GICXXPred_Simple_IsRule105Enabled,
1110 GICXXPred_Simple_IsRule106Enabled,
1111 GICXXPred_Simple_IsRule107Enabled,
1112 GICXXPred_Simple_IsRule108Enabled,
1113 GICXXPred_Simple_IsRule109Enabled,
1114 GICXXPred_Simple_IsRule110Enabled,
1115 GICXXPred_Simple_IsRule111Enabled,
1116 GICXXPred_Simple_IsRule112Enabled,
1117 GICXXPred_Simple_IsRule113Enabled,
1118 GICXXPred_Simple_IsRule114Enabled,
1119 GICXXPred_Simple_IsRule115Enabled,
1120 GICXXPred_Simple_IsRule116Enabled,
1121 GICXXPred_Simple_IsRule117Enabled,
1122 GICXXPred_Simple_IsRule118Enabled,
1123 GICXXPred_Simple_IsRule119Enabled,
1124};
1125
1126bool AArch64PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
1127 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
1128}
1129// Custom renderers.
1130enum {
1131 GICR_Invalid,
1132};
1133AArch64PostLegalizerCombinerImpl::CustomRendererFn
1134AArch64PostLegalizerCombinerImpl::CustomRenderers[] = {
1135 nullptr, // GICR_Invalid
1136};
1137
1138bool AArch64PostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
1139 const TargetSubtargetInfo &ST = MF.getSubtarget();
1140 const PredicateBitset AvailableFeatures = getAvailableFeatures();
1141 B.setInstrAndDebugLoc(I);
1142 State.MIs.clear();
1143 State.MIs.push_back(&I);
1144 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
1145 return true;
1146 }
1147
1148 return false;
1149}
1150
1151enum {
1152 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
1153 GICXXCustomAction_GICombiner1,
1154 GICXXCustomAction_GICombiner2,
1155 GICXXCustomAction_GICombiner3,
1156 GICXXCustomAction_GICombiner4,
1157 GICXXCustomAction_GICombiner5,
1158 GICXXCustomAction_GICombiner6,
1159 GICXXCustomAction_GICombiner7,
1160 GICXXCustomAction_GICombiner8,
1161 GICXXCustomAction_GICombiner9,
1162 GICXXCustomAction_GICombiner10,
1163 GICXXCustomAction_GICombiner11,
1164 GICXXCustomAction_GICombiner12,
1165 GICXXCustomAction_GICombiner13,
1166 GICXXCustomAction_GICombiner14,
1167 GICXXCustomAction_GICombiner15,
1168 GICXXCustomAction_GICombiner16,
1169 GICXXCustomAction_GICombiner17,
1170 GICXXCustomAction_GICombiner18,
1171 GICXXCustomAction_GICombiner19,
1172 GICXXCustomAction_GICombiner20,
1173 GICXXCustomAction_GICombiner21,
1174 GICXXCustomAction_GICombiner22,
1175 GICXXCustomAction_GICombiner23,
1176 GICXXCustomAction_GICombiner24,
1177 GICXXCustomAction_GICombiner25,
1178 GICXXCustomAction_GICombiner26,
1179 GICXXCustomAction_GICombiner27,
1180 GICXXCustomAction_GICombiner28,
1181 GICXXCustomAction_GICombiner29,
1182 GICXXCustomAction_GICombiner30,
1183 GICXXCustomAction_GICombiner31,
1184 GICXXCustomAction_GICombiner32,
1185 GICXXCustomAction_GICombiner33,
1186 GICXXCustomAction_GICombiner34,
1187 GICXXCustomAction_GICombiner35,
1188 GICXXCustomAction_GICombiner36,
1189 GICXXCustomAction_GICombiner37,
1190 GICXXCustomAction_GICombiner38,
1191 GICXXCustomAction_GICombiner39,
1192 GICXXCustomAction_GICombiner40,
1193 GICXXCustomAction_GICombiner41,
1194 GICXXCustomAction_GICombiner42,
1195 GICXXCustomAction_GICombiner43,
1196 GICXXCustomAction_GICombiner44,
1197 GICXXCustomAction_GICombiner45,
1198 GICXXCustomAction_GICombiner46,
1199 GICXXCustomAction_GICombiner47,
1200 GICXXCustomAction_GICombiner48,
1201 GICXXCustomAction_GICombiner49,
1202 GICXXCustomAction_GICombiner50,
1203 GICXXCustomAction_GICombiner51,
1204 GICXXCustomAction_GICombiner52,
1205 GICXXCustomAction_GICombiner53,
1206 GICXXCustomAction_GICombiner54,
1207 GICXXCustomAction_GICombiner55,
1208 GICXXCustomAction_GICombiner56,
1209 GICXXCustomAction_GICombiner57,
1210 GICXXCustomAction_GICombiner58,
1211 GICXXCustomAction_GICombiner59,
1212 GICXXCustomAction_GICombiner60,
1213 GICXXCustomAction_GICombiner61,
1214 GICXXCustomAction_GICombiner62,
1215 GICXXCustomAction_GICombiner63,
1216 GICXXCustomAction_GICombiner64,
1217 GICXXCustomAction_GICombiner65,
1218 GICXXCustomAction_GICombiner66,
1219 GICXXCustomAction_GICombiner67,
1220 GICXXCustomAction_GICombiner68,
1221 GICXXCustomAction_GICombiner69,
1222 GICXXCustomAction_GICombiner70,
1223 GICXXCustomAction_GICombiner71,
1224 GICXXCustomAction_GICombiner72,
1225 GICXXCustomAction_GICombiner73,
1226 GICXXCustomAction_GICombiner74,
1227 GICXXCustomAction_GICombiner75,
1228 GICXXCustomAction_GICombiner76,
1229 GICXXCustomAction_GICombiner77,
1230 GICXXCustomAction_GICombiner78,
1231 GICXXCustomAction_GICombiner79,
1232 GICXXCustomAction_GICombiner80,
1233 GICXXCustomAction_GICombiner81,
1234};
1235bool AArch64PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
1236 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1237 switch(ApplyID) {
1238 case GICXXCustomAction_GICombiner0:{
1239 // Match Patterns
1240 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
1241 return false;
1242 }
1243 // Apply Patterns
1244 Helper.applyCombineCopy(*State.MIs[0]);
1245 return true;
1246 }
1247 case GICXXCustomAction_GICombiner1:{
1248 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1249 // Match Patterns
1250 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1251 return false;
1252 }
1253 // Apply Patterns
1254 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1255 return true;
1256 }
1257 case GICXXCustomAction_GICombiner2:{
1258 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1259 // Match Patterns
1260 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1261 return false;
1262 }
1263 // Apply Patterns
1264 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1265 return true;
1266 }
1267 case GICXXCustomAction_GICombiner3:{
1268 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1269 // Match Patterns
1270 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1271 return false;
1272 }
1273 // Apply Patterns
1274 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1275 return true;
1276 }
1277 case GICXXCustomAction_GICombiner4:{
1278 // Apply Patterns
1279 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
1280 return true;
1281 }
1282 case GICXXCustomAction_GICombiner5:{
1283 // Apply Patterns
1284 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
1285 return true;
1286 }
1287 case GICXXCustomAction_GICombiner6:{
1288 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1289 // Match Patterns
1290 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1291 return false;
1292 }
1293 // Apply Patterns
1294 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1295 return true;
1296 }
1297 case GICXXCustomAction_GICombiner7:{
1298 APInt GIMatchData_matchinfo;
1299 // Match Patterns
1300 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
1301 return false;
1302 }
1303 // Apply Patterns
1304 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1305 return true;
1306 }
1307 case GICXXCustomAction_GICombiner8:{
1308 // Match Patterns
1309 if(![&](){return matchMutateAnyExtToZExt(*State.MIs[0], MRI);}()) {
1310 return false;
1311 }
1312 // Apply Patterns
1313 applyMutateAnyExtToZExt(*State.MIs[0], MRI, B, Observer);
1314 return true;
1315 }
1316 case GICXXCustomAction_GICombiner9:{
1317 PreferredTuple GIMatchData_matchinfo;
1318 // Match Patterns
1319 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
1320 return false;
1321 }
1322 // Apply Patterns
1323 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
1324 return true;
1325 }
1326 case GICXXCustomAction_GICombiner10:{
1327 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1328 // Match Patterns
1329 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
1330 return false;
1331 }
1332 // Apply Patterns
1333 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1334 return true;
1335 }
1336 case GICXXCustomAction_GICombiner11:{
1337 IndexedLoadStoreMatchInfo GIMatchData_matchinfo;
1338 // Match Patterns
1339 if(![&](){return Helper.matchCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);}()) {
1340 return false;
1341 }
1342 // Apply Patterns
1343 Helper.applyCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);
1344 return true;
1345 }
1346 case GICXXCustomAction_GICombiner12:{
1347 // Match Patterns
1348 if(![&](){return Helper.matchSextTruncSextLoad(*State.MIs[0]);}()) {
1349 return false;
1350 }
1351 // Apply Patterns
1352 Helper.applySextTruncSextLoad(*State.MIs[0]);
1353 return true;
1354 }
1355 case GICXXCustomAction_GICombiner13:{
1356 InstructionStepsMatchInfo GIMatchData_info;
1357 // Match Patterns
1358 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
1359 return false;
1360 }
1361 // Apply Patterns
1362 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
1363 return true;
1364 }
1365 case GICXXCustomAction_GICombiner14:{
1366 Register GIMatchData_matchinfo;
1367 // Match Patterns
1368 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
1369 return false;
1370 }
1371 // Apply Patterns
1372 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1373 return true;
1374 }
1375 case GICXXCustomAction_GICombiner15:{
1376 std::pair<Register, Register> GIMatchData_matchinfo;
1377 // Match Patterns
1378 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
1379 return false;
1380 }
1381 // Apply Patterns
1382 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
1383 return true;
1384 }
1385 case GICXXCustomAction_GICombiner16:{
1386 std::tuple<unsigned, LLT, Register> GIMatchData_matchinfo;
1387 // Match Patterns
1388 if(![&](){return matchExtractVecEltPairwiseAdd(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
1389 return false;
1390 }
1391 // Apply Patterns
1392 applyExtractVecEltPairwiseAdd(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
1393 return true;
1394 }
1395 case GICXXCustomAction_GICombiner17:{
1396 Register GIMatchData_matchinfo;
1397 // Match Patterns
1398 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
1399 return false;
1400 }
1401 // Apply Patterns
1402 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1403 return true;
1404 }
1405 case GICXXCustomAction_GICombiner18:{
1406 std::function<void(MachineIRBuilder&, Register)> GIMatchData_matchinfo;
1407 // Match Patterns
1408 if(![&](){return matchAArch64MulConstCombine(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
1409 return false;
1410 }
1411 // Apply Patterns
1412 applyAArch64MulConstCombine(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
1413 return true;
1414 }
1415 case GICXXCustomAction_GICombiner19:{
1416 // Match Patterns
1417 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
1418 return false;
1419 }
1420 // Apply Patterns
1421 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
1422 return true;
1423 }
1424 case GICXXCustomAction_GICombiner20:{
1425 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1426 // Match Patterns
1427 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
1428 return false;
1429 }
1430 // Apply Patterns
1431 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1432 return true;
1433 }
1434 case GICXXCustomAction_GICombiner21:{
1435 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1436 // Match Patterns
1437 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
1438 return false;
1439 }
1440 // Apply Patterns
1441 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1442 return true;
1443 }
1444 case GICXXCustomAction_GICombiner22:{
1445 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1446 // Match Patterns
1447 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
1448 return false;
1449 }
1450 // Apply Patterns
1451 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1452 return true;
1453 }
1454 case GICXXCustomAction_GICombiner23:{
1455 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1456 // Match Patterns
1457 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
1458 return false;
1459 }
1460 // Apply Patterns
1461 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1462 return true;
1463 }
1464 case GICXXCustomAction_GICombiner24:{
1465 // Match Patterns
1466 if(![&](){return Helper.matchRotateOutOfRange(*State.MIs[0]);}()) {
1467 return false;
1468 }
1469 // Apply Patterns
1470 Helper.applyRotateOutOfRange(*State.MIs[0]);
1471 return true;
1472 }
1473 case GICXXCustomAction_GICombiner25:{
1474 int64_t GIMatchData_matchinfo;
1475 // Match Patterns
1476 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
1477 return false;
1478 }
1479 // Apply Patterns
1480 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1481 return true;
1482 }
1483 case GICXXCustomAction_GICombiner26:{
1484 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1485 // Match Patterns
1486 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
1487 return false;
1488 }
1489 // Apply Patterns
1490 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1491 return true;
1492 }
1493 case GICXXCustomAction_GICombiner27:{
1494 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1495 // Match Patterns
1496 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
1497 return false;
1498 }
1499 // Apply Patterns
1500 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1501 return true;
1502 }
1503 case GICXXCustomAction_GICombiner28:{
1504 unsigned GIMatchData_matchinfo;
1505 // Match Patterns
1506 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1507 return false;
1508 }
1509 // Apply Patterns
1510 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
1511 return true;
1512 }
1513 case GICXXCustomAction_GICombiner29:{
1514 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1515 // Match Patterns
1516 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
1517 return false;
1518 }
1519 // Apply Patterns
1520 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
1521 return true;
1522 }
1523 case GICXXCustomAction_GICombiner30:{
1524 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1525 // Match Patterns
1526 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
1527 return false;
1528 }
1529 // Apply Patterns
1530 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1531 return true;
1532 }
1533 case GICXXCustomAction_GICombiner31:{
1534 // Match Patterns
1535 if(![&](){return matchFoldMergeToZext(*State.MIs[0], MRI);}()) {
1536 return false;
1537 }
1538 // Apply Patterns
1539 applyFoldMergeToZext(*State.MIs[0], MRI, B, Observer);
1540 return true;
1541 }
1542 case GICXXCustomAction_GICombiner32:{
1543 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1544 // Match Patterns
1545 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
1546 return false;
1547 }
1548 // Apply Patterns
1549 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1550 return true;
1551 }
1552 case GICXXCustomAction_GICombiner33:{
1553 SmallVector<Register> GIMatchData_info;
1554 // Match Patterns
1555 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
1556 return false;
1557 }
1558 // Apply Patterns
1559 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
1560 return true;
1561 }
1562 case GICXXCustomAction_GICombiner34:{
1563 Register GIMatchData_src;
1564 // Match Patterns
1565 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
1566 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
1567 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
1568 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
1569 return false;
1570
1571 // Check counts match.
1572 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
1573 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
1574 if (NumMergeSrcs != NumUnmergeDefs)
1575 return false;
1576
1577 // Verify all merge sources match unmerge defs in order.
1578 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
1579 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
1580 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
1581
1582 if (MergeSrc != UnmergeDef)
1583 return false;
1584
1585 if (!MRI.hasOneNonDBGUse(MergeSrc))
1586 return false;
1587 }
1588
1589 // Check size compatibility.
1590 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
1591 LLT SrcTy = MRI.getType(GIMatchData_src);
1592 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
1593 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
1594 return false;
1595
1596 // Check bitcast legality.
1597 if (SrcTy != DstTy) {
1598 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
1599 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
1600 if (!Helper.isLegalOrBeforeLegalizer(Query))
1601 return false;
1602 }
1603
1604 return true;}()) {
1605 return false;
1606 }
1607 // Apply Patterns
1608 LLT SrcTy = MRI.getType(GIMatchData_src);
1609 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
1610
1611 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1612
1613 if (SrcTy == DstTy) {
1614 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
1615 } else {
1616 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
1617 }
1618
1619 State.MIs[0]->eraseFromParent();
1620 return true;
1621 }
1622 case GICXXCustomAction_GICombiner35:{
1623 SmallVector<APInt, 8> GIMatchData_info;
1624 // Match Patterns
1625 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
1626 return false;
1627 }
1628 // Apply Patterns
1629 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
1630 return true;
1631 }
1632 case GICXXCustomAction_GICombiner36:{
1633 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1634 // Match Patterns
1635 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
1636 return false;
1637 }
1638 // Apply Patterns
1639 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1640 return true;
1641 }
1642 case GICXXCustomAction_GICombiner37:{
1643 // Match Patterns
1644 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
1645 return false;
1646 }
1647 // Apply Patterns
1648 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
1649 return true;
1650 }
1651 case GICXXCustomAction_GICombiner38:{
1652 // Match Patterns
1653 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
1654 return false;
1655 }
1656 // Apply Patterns
1657 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
1658 return true;
1659 }
1660 case GICXXCustomAction_GICombiner39:{
1661 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1662 // Match Patterns
1663 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
1664 return false;
1665 }
1666 // Apply Patterns
1667 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1668 return true;
1669 }
1670 case GICXXCustomAction_GICombiner40:{
1671 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1672 // Match Patterns
1673 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
1674 return false;
1675 }
1676 // Apply Patterns
1677 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1678 return true;
1679 }
1680 case GICXXCustomAction_GICombiner41:{
1681 Register GIMatchData_unmergeSrc;
1682 // Match Patterns
1683 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
1684 return false;
1685 }
1686 // Apply Patterns
1687 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
1688 return true;
1689 }
1690 case GICXXCustomAction_GICombiner42:{
1691 APInt GIMatchData_matchinfo;
1692 // Match Patterns
1693 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1694 return false;
1695 }
1696 // Apply Patterns
1697 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1698 return true;
1699 }
1700 case GICXXCustomAction_GICombiner43:{
1701 ConstantFP* GIMatchData_matchinfo;
1702 // Match Patterns
1703 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1704 return false;
1705 }
1706 // Apply Patterns
1707 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
1708 return true;
1709 }
1710 case GICXXCustomAction_GICombiner44:{
1711 // Match Patterns
1712 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
1713 return false;
1714 }
1715 // Apply Patterns
1716 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
1717 return true;
1718 }
1719 case GICXXCustomAction_GICombiner45:{
1720 Register GIMatchData_info;
1721 // Match Patterns
1722 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
1723 return false;
1724 }
1725 // Apply Patterns
1726 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
1727 return true;
1728 }
1729 case GICXXCustomAction_GICombiner46:{
1730 Register GIMatchData_info;
1731 // Match Patterns
1732 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
1733 return false;
1734 }
1735 // Apply Patterns
1736 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
1737 return true;
1738 }
1739 case GICXXCustomAction_GICombiner47:{
1740 Register GIMatchData_matchinfo;
1741 // Match Patterns
1742 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
1743 return false;
1744 }
1745 // Apply Patterns
1746 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1747 return true;
1748 }
1749 case GICXXCustomAction_GICombiner48:{
1750 Register GIMatchData_matchinfo;
1751 // Match Patterns
1752 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
1753 return false;
1754 }
1755 // Apply Patterns
1756 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1757 return true;
1758 }
1759 case GICXXCustomAction_GICombiner49:{
1760 Register GIMatchData_matchinfo;
1761 // Match Patterns
1762 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
1763 return false;
1764 }
1765 // Apply Patterns
1766 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1767 return true;
1768 }
1769 case GICXXCustomAction_GICombiner50:{
1770 Register GIMatchData_matchinfo;
1771 // Match Patterns
1772 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
1773 return false;
1774 }
1775 // Apply Patterns
1776 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1777 return true;
1778 }
1779 case GICXXCustomAction_GICombiner51:{
1780 // Match Patterns
1781 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
1782 return false;
1783 }
1784 // Apply Patterns
1785 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
1786 return true;
1787 }
1788 case GICXXCustomAction_GICombiner52:{
1789 PtrAddChain GIMatchData_matchinfo;
1790 // Match Patterns
1791 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
1792 return false;
1793 }
1794 // Apply Patterns
1795 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
1796 return true;
1797 }
1798 case GICXXCustomAction_GICombiner53:{
1799 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1800 // Match Patterns
1801 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
1802 return false;
1803 }
1804 // Apply Patterns
1805 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1806 return true;
1807 }
1808 case GICXXCustomAction_GICombiner54:{
1809 // Match Patterns
1810 if(![&](){return matchSplitStoreZero128(*State.MIs[0], MRI);}()) {
1811 return false;
1812 }
1813 // Apply Patterns
1814 applySplitStoreZero128(*State.MIs[0], MRI, B, Observer);
1815 return true;
1816 }
1817 case GICXXCustomAction_GICombiner55:{
1818 // Match Patterns
1819 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
1820 return false;
1821 }
1822 // Apply Patterns
1823 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
1824 return true;
1825 }
1826 case GICXXCustomAction_GICombiner56:{
1827 // Match Patterns
1828 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
1829 return false;
1830 }
1831 // Apply Patterns
1832 Helper.replaceInstWithConstant(*State.MIs[0], 0);
1833 return true;
1834 }
1835 case GICXXCustomAction_GICombiner57:{
1836 // Match Patterns
1837 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
1838 return false;
1839 }
1840 // Apply Patterns
1841 Helper.replaceInstWithConstant(*State.MIs[0], -1);
1842 return true;
1843 }
1844 case GICXXCustomAction_GICombiner58:{
1845 // Match Patterns
1846 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
1847 return false;
1848 }
1849 // Apply Patterns
1850 Helper.replaceInstWithConstant(*State.MIs[0], 0);
1851 return true;
1852 }
1853 case GICXXCustomAction_GICombiner59:{
1854 // Match Patterns
1855 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
1856 return false;
1857 }
1858 // Apply Patterns
1859 Helper.replaceInstWithUndef(*State.MIs[0]);
1860 return true;
1861 }
1862 case GICXXCustomAction_GICombiner60:{
1863 // Apply Patterns
1864 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
1865 return true;
1866 }
1867 case GICXXCustomAction_GICombiner61:{
1868 // Match Patterns
1869 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
1870 return false;
1871 }
1872 // Apply Patterns
1873 Helper.replaceInstWithUndef(*State.MIs[0]);
1874 return true;
1875 }
1876 case GICXXCustomAction_GICombiner62:{
1877 // Match Patterns
1878 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
1879 return false;
1880 }
1881 // Apply Patterns
1882 Helper.replaceInstWithUndef(*State.MIs[0]);
1883 return true;
1884 }
1885 case GICXXCustomAction_GICombiner63:{
1886 // Match Patterns
1887 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
1888 return false;
1889 }
1890 // Apply Patterns
1891 Helper.replaceInstWithUndef(*State.MIs[0]);
1892 return true;
1893 }
1894 case GICXXCustomAction_GICombiner64:{
1895 // Match Patterns
1896 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
1897 return false;
1898 }
1899 // Apply Patterns
1900 Helper.eraseInst(*State.MIs[0]);
1901 return true;
1902 }
1903 case GICXXCustomAction_GICombiner65:{
1904 // Match Patterns
1905 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
1906 return false;
1907 }
1908 // Apply Patterns
1909 Helper.replaceInstWithUndef(*State.MIs[0]);
1910 return true;
1911 }
1912 case GICXXCustomAction_GICombiner66:{
1913 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1914 // Match Patterns
1915 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
1916 return false;
1917 }
1918 // Apply Patterns
1919 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1920 return true;
1921 }
1922 case GICXXCustomAction_GICombiner67:{
1923 std::tuple<Register, Register, Register> GIMatchData_matchinfo;
1924 // Match Patterns
1925 if(![&](){return matchOrToBSP(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
1926 return false;
1927 }
1928 // Apply Patterns
1929 applyOrToBSP(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
1930 return true;
1931 }
1932 case GICXXCustomAction_GICombiner68:{
1933 SmallVector<Register> GIMatchData_matchinfo;
1934 // Match Patterns
1935 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
1936 return false;
1937 }
1938 // Apply Patterns
1939 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
1940 return true;
1941 }
1942 case GICXXCustomAction_GICombiner69:{
1943 // Match Patterns
1944 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
1945 return false;
1946 }
1947 // Apply Patterns
1948 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
1949 return true;
1950 }
1951 case GICXXCustomAction_GICombiner70:{
1952 // Match Patterns
1953 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
1954 return false;
1955 }
1956 // Apply Patterns
1957 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
1958 return true;
1959 }
1960 case GICXXCustomAction_GICombiner71:{
1961 Register GIMatchData_matchinfo;
1962 // Match Patterns
1963 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
1964 return false;
1965 }
1966 // Apply Patterns
1967 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
1968 return true;
1969 }
1970 case GICXXCustomAction_GICombiner72:{
1971 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
1972 // Match Patterns
1973 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
1974 return false;
1975 }
1976 // Apply Patterns
1977 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
1978 return true;
1979 }
1980 case GICXXCustomAction_GICombiner73:{
1981 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1982 // Match Patterns
1983 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
1984 return false;
1985 }
1986 // Apply Patterns
1987 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1988 return true;
1989 }
1990 case GICXXCustomAction_GICombiner74:{
1991 Register GIMatchData_matchinfo;
1992 // Match Patterns
1993 if(![&](){return matchCombineMulCMLT(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
1994 return false;
1995 }
1996 // Apply Patterns
1997 applyCombineMulCMLT(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
1998 return true;
1999 }
2000 case GICXXCustomAction_GICombiner75:{
2001 Register GIMatchData_matchinfo;
2002 // Match Patterns
2003 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
2004 return false;
2005 }
2006 // Apply Patterns
2007 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
2008 return true;
2009 }
2010 case GICXXCustomAction_GICombiner76:{
2011 std::tuple<bool, Register, Register> GIMatchData_matchinfo;
2012 // Match Patterns
2013 if(![&](){return matchExtMulToMULL(*State.MIs[0], MRI, VT, GIMatchData_matchinfo);}()) {
2014 return false;
2015 }
2016 // Apply Patterns
2017 applyExtMulToMULL(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
2018 return true;
2019 }
2020 case GICXXCustomAction_GICombiner77:{
2021 // Match Patterns
2022 if(![&](){return matchSubAddMulReassoc(State.MIs[1]->getOperand(1).getReg(), State.MIs[1]->getOperand(2).getReg(),
2023 State.MIs[0]->getOperand(2).getReg(), State.MIs[0]->getOperand(1).getReg(), MRI);}()) {
2024 return false;
2025 }
2026 // Apply Patterns
2027 applySubAddMulReassoc(*State.MIs[0], *State.MIs[1], MRI, B, Observer);
2028 return true;
2029 }
2030 case GICXXCustomAction_GICombiner78:{
2031 Register GIMatchData_matchinfo;
2032 // Match Patterns
2033 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
2034 return false;
2035 }
2036 // Apply Patterns
2037 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
2038 return true;
2039 }
2040 case GICXXCustomAction_GICombiner79:{
2041 Register GIMatchData_matchinfo;
2042 // Match Patterns
2043 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
2044 return false;
2045 }
2046 // Apply Patterns
2047 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
2048 return true;
2049 }
2050 case GICXXCustomAction_GICombiner80:{
2051 LshrOfTruncOfLshr GIMatchData_matchinfo;
2052 // Match Patterns
2053 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
2054 return false;
2055 }
2056 // Apply Patterns
2057 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
2058 return true;
2059 }
2060 case GICXXCustomAction_GICombiner81:{
2061 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2062 // Match Patterns
2063 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], true, GIMatchData_info);}()) {
2064 return false;
2065 }
2066 // Apply Patterns
2067 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2068 return true;
2069 }
2070 }
2071 llvm_unreachable("Unknown Apply Action");
2072}
2073#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2074#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
2075#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
2076#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)
2077#else
2078#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
2079#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
2080#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)
2081#endif
2082const uint8_t *AArch64PostLegalizerCombinerImpl::getMatchTable() const {
2083 constexpr static uint8_t MatchTable0[] = {
2084 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(282), /*)*//*default:*//*Label 87*/ GIMT_Encode4(4630),
2085 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1058), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2086 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1070),
2087 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1195),
2088 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1301),
2089 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1454),
2090 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1506),
2091 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1569),
2092 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1621), GIMT_Encode4(0), GIMT_Encode4(0),
2093 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1684),
2094 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(1823),
2095 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(1948), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2096 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 11*/ GIMT_Encode4(2066), GIMT_Encode4(0),
2097 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 12*/ GIMT_Encode4(2133),
2098 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 13*/ GIMT_Encode4(2221),
2099 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 14*/ GIMT_Encode4(2286),
2100 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 15*/ GIMT_Encode4(2298),
2101 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 16*/ GIMT_Encode4(2310),
2102 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 17*/ GIMT_Encode4(2353),
2103 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 18*/ GIMT_Encode4(2386),
2104 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 19*/ GIMT_Encode4(2429), GIMT_Encode4(0), GIMT_Encode4(0),
2105 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 20*/ GIMT_Encode4(2441),
2106 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 21*/ GIMT_Encode4(2463), GIMT_Encode4(0), GIMT_Encode4(0),
2107 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 22*/ GIMT_Encode4(2485), GIMT_Encode4(0), GIMT_Encode4(0),
2108 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 23*/ GIMT_Encode4(2507),
2109 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 24*/ GIMT_Encode4(2530),
2110 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 25*/ GIMT_Encode4(2553), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2111 /* 350 */ /*TargetOpcode::G_STORE*//*Label 26*/ GIMT_Encode4(2576), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2112 /* 494 */ /*TargetOpcode::G_ANYEXT*//*Label 27*/ GIMT_Encode4(2610),
2113 /* 498 */ /*TargetOpcode::G_TRUNC*//*Label 28*/ GIMT_Encode4(2717), GIMT_Encode4(0), GIMT_Encode4(0),
2114 /* 510 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 29*/ GIMT_Encode4(2923), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2115 /* 530 */ /*TargetOpcode::G_SEXT*//*Label 30*/ GIMT_Encode4(2956),
2116 /* 534 */ /*TargetOpcode::G_SEXT_INREG*//*Label 31*/ GIMT_Encode4(2999),
2117 /* 538 */ /*TargetOpcode::G_ZEXT*//*Label 32*/ GIMT_Encode4(3054),
2118 /* 542 */ /*TargetOpcode::G_SHL*//*Label 33*/ GIMT_Encode4(3097),
2119 /* 546 */ /*TargetOpcode::G_LSHR*//*Label 34*/ GIMT_Encode4(3194),
2120 /* 550 */ /*TargetOpcode::G_ASHR*//*Label 35*/ GIMT_Encode4(3331), GIMT_Encode4(0), GIMT_Encode4(0),
2121 /* 562 */ /*TargetOpcode::G_ROTR*//*Label 36*/ GIMT_Encode4(3439),
2122 /* 566 */ /*TargetOpcode::G_ROTL*//*Label 37*/ GIMT_Encode4(3474),
2123 /* 570 */ /*TargetOpcode::G_ICMP*//*Label 38*/ GIMT_Encode4(3509), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2124 /* 586 */ /*TargetOpcode::G_SELECT*//*Label 39*/ GIMT_Encode4(3521),
2125 /* 590 */ /*TargetOpcode::G_UADDO*//*Label 40*/ GIMT_Encode4(3616), GIMT_Encode4(0),
2126 /* 598 */ /*TargetOpcode::G_USUBO*//*Label 41*/ GIMT_Encode4(3639), GIMT_Encode4(0),
2127 /* 606 */ /*TargetOpcode::G_SADDO*//*Label 42*/ GIMT_Encode4(3651), GIMT_Encode4(0),
2128 /* 614 */ /*TargetOpcode::G_SSUBO*//*Label 43*/ GIMT_Encode4(3674), GIMT_Encode4(0),
2129 /* 622 */ /*TargetOpcode::G_UMULO*//*Label 44*/ GIMT_Encode4(3686),
2130 /* 626 */ /*TargetOpcode::G_SMULO*//*Label 45*/ GIMT_Encode4(3698),
2131 /* 630 */ /*TargetOpcode::G_UMULH*//*Label 46*/ GIMT_Encode4(3710),
2132 /* 634 */ /*TargetOpcode::G_SMULH*//*Label 47*/ GIMT_Encode4(3722),
2133 /* 638 */ /*TargetOpcode::G_UADDSAT*//*Label 48*/ GIMT_Encode4(3734),
2134 /* 642 */ /*TargetOpcode::G_SADDSAT*//*Label 49*/ GIMT_Encode4(3746), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2135 /* 662 */ /*TargetOpcode::G_SMULFIX*//*Label 50*/ GIMT_Encode4(3758),
2136 /* 666 */ /*TargetOpcode::G_UMULFIX*//*Label 51*/ GIMT_Encode4(3770),
2137 /* 670 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 52*/ GIMT_Encode4(3782),
2138 /* 674 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 53*/ GIMT_Encode4(3794), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2139 /* 694 */ /*TargetOpcode::G_FADD*//*Label 54*/ GIMT_Encode4(3806),
2140 /* 698 */ /*TargetOpcode::G_FSUB*//*Label 55*/ GIMT_Encode4(3881),
2141 /* 702 */ /*TargetOpcode::G_FMUL*//*Label 56*/ GIMT_Encode4(3893), GIMT_Encode4(0), GIMT_Encode4(0),
2142 /* 714 */ /*TargetOpcode::G_FDIV*//*Label 57*/ GIMT_Encode4(3959), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2143 /* 750 */ /*TargetOpcode::G_FLOG2*//*Label 58*/ GIMT_Encode4(3971), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2144 /* 766 */ /*TargetOpcode::G_FNEG*//*Label 59*/ GIMT_Encode4(3993),
2145 /* 770 */ /*TargetOpcode::G_FPEXT*//*Label 60*/ GIMT_Encode4(4044),
2146 /* 774 */ /*TargetOpcode::G_FPTRUNC*//*Label 61*/ GIMT_Encode4(4066),
2147 /* 778 */ /*TargetOpcode::G_FPTOSI*//*Label 62*/ GIMT_Encode4(4109),
2148 /* 782 */ /*TargetOpcode::G_FPTOUI*//*Label 63*/ GIMT_Encode4(4131),
2149 /* 786 */ /*TargetOpcode::G_SITOFP*//*Label 64*/ GIMT_Encode4(4153),
2150 /* 790 */ /*TargetOpcode::G_UITOFP*//*Label 65*/ GIMT_Encode4(4180), GIMT_Encode4(0), GIMT_Encode4(0),
2151 /* 802 */ /*TargetOpcode::G_FABS*//*Label 66*/ GIMT_Encode4(4207), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2152 /* 818 */ /*TargetOpcode::G_FMINNUM*//*Label 67*/ GIMT_Encode4(4229),
2153 /* 822 */ /*TargetOpcode::G_FMAXNUM*//*Label 68*/ GIMT_Encode4(4241),
2154 /* 826 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 69*/ GIMT_Encode4(4253),
2155 /* 830 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 70*/ GIMT_Encode4(4265),
2156 /* 834 */ /*TargetOpcode::G_FMINIMUM*//*Label 71*/ GIMT_Encode4(4277),
2157 /* 838 */ /*TargetOpcode::G_FMAXIMUM*//*Label 72*/ GIMT_Encode4(4289), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2158 /* 882 */ /*TargetOpcode::G_PTR_ADD*//*Label 73*/ GIMT_Encode4(4301), GIMT_Encode4(0),
2159 /* 890 */ /*TargetOpcode::G_SMIN*//*Label 74*/ GIMT_Encode4(4347),
2160 /* 894 */ /*TargetOpcode::G_SMAX*//*Label 75*/ GIMT_Encode4(4370),
2161 /* 898 */ /*TargetOpcode::G_UMIN*//*Label 76*/ GIMT_Encode4(4393),
2162 /* 902 */ /*TargetOpcode::G_UMAX*//*Label 77*/ GIMT_Encode4(4416),
2163 /* 906 */ /*TargetOpcode::G_ABS*//*Label 78*/ GIMT_Encode4(4439), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2164 /* 938 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 79*/ GIMT_Encode4(4451),
2165 /* 942 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 80*/ GIMT_Encode4(4463),
2166 /* 946 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 81*/ GIMT_Encode4(4497), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2167 /* 994 */ /*TargetOpcode::G_FCEIL*//*Label 82*/ GIMT_Encode4(4520), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2168 /* 1042 */ /*TargetOpcode::G_FSQRT*//*Label 83*/ GIMT_Encode4(4542),
2169 /* 1046 */ /*TargetOpcode::G_FFLOOR*//*Label 84*/ GIMT_Encode4(4564),
2170 /* 1050 */ /*TargetOpcode::G_FRINT*//*Label 85*/ GIMT_Encode4(4586),
2171 /* 1054 */ /*TargetOpcode::G_FNEARBYINT*//*Label 86*/ GIMT_Encode4(4608),
2172 /* 1058 */ // Label 0: @1058
2173 /* 1058 */ GIM_Try, /*On fail goto*//*Label 88*/ GIMT_Encode4(1069), // Rule ID 0 //
2174 /* 1063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
2175 /* 1066 */ // MIs[0] d
2176 /* 1066 */ // No operand predicates
2177 /* 1066 */ // MIs[0] s
2178 /* 1066 */ // No operand predicates
2179 /* 1066 */ // Combiner Rule #0: copy_prop
2180 /* 1066 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
2181 /* 1069 */ // Label 88: @1069
2182 /* 1069 */ GIM_Reject,
2183 /* 1070 */ // Label 1: @1070
2184 /* 1070 */ GIM_Try, /*On fail goto*//*Label 89*/ GIMT_Encode4(1081), // Rule ID 76 //
2185 /* 1075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2186 /* 1078 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_ADD'
2187 /* 1078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2188 /* 1081 */ // Label 89: @1081
2189 /* 1081 */ GIM_Try, /*On fail goto*//*Label 90*/ GIMT_Encode4(1092), // Rule ID 161 //
2190 /* 1086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
2191 /* 1089 */ // Combiner Rule #97: propagate_undef_any_op; wip_match_opcode 'G_ADD'
2192 /* 1089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2193 /* 1092 */ // Label 90: @1092
2194 /* 1092 */ GIM_Try, /*On fail goto*//*Label 91*/ GIMT_Encode4(1103), // Rule ID 173 //
2195 /* 1097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2196 /* 1100 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
2197 /* 1100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
2198 /* 1103 */ // Label 91: @1103
2199 /* 1103 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1137), // Rule ID 129 //
2200 /* 1108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
2201 /* 1111 */ // MIs[0] dst
2202 /* 1111 */ // No operand predicates
2203 /* 1111 */ // MIs[0] __add_sub_reg_match_0.tmp
2204 /* 1111 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2205 /* 1115 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2206 /* 1119 */ // MIs[1] src
2207 /* 1119 */ // No operand predicates
2208 /* 1119 */ // MIs[1] __add_sub_reg_match_0.x
2209 /* 1119 */ // No operand predicates
2210 /* 1119 */ // MIs[0] __add_sub_reg_match_0.x
2211 /* 1119 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
2212 /* 1124 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2213 /* 1129 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2214 /* 1131 */ // Combiner Rule #78: add_sub_reg @ [__add_sub_reg_match_0[1]]
2215 /* 1131 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2216 /* 1136 */ GIR_EraseRootFromParent_Done,
2217 /* 1137 */ // Label 92: @1137
2218 /* 1137 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1171), // Rule ID 128 //
2219 /* 1142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
2220 /* 1145 */ // MIs[0] dst
2221 /* 1145 */ // No operand predicates
2222 /* 1145 */ // MIs[0] __add_sub_reg_match_0.x
2223 /* 1145 */ // No operand predicates
2224 /* 1145 */ // MIs[0] __add_sub_reg_match_0.tmp
2225 /* 1145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2226 /* 1149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2227 /* 1153 */ // MIs[1] src
2228 /* 1153 */ // No operand predicates
2229 /* 1153 */ // MIs[1] __add_sub_reg_match_0.x
2230 /* 1153 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2231 /* 1158 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2232 /* 1163 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2233 /* 1165 */ // Combiner Rule #78: add_sub_reg @ [__add_sub_reg_match_0[0]]
2234 /* 1165 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2235 /* 1170 */ GIR_EraseRootFromParent_Done,
2236 /* 1171 */ // Label 93: @1171
2237 /* 1171 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1194), // Rule ID 100 //
2238 /* 1176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
2239 /* 1179 */ // MIs[0] dst
2240 /* 1179 */ // No operand predicates
2241 /* 1179 */ // MIs[0] lhs
2242 /* 1179 */ // No operand predicates
2243 /* 1179 */ // MIs[0] Operand 2
2244 /* 1179 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2245 /* 1183 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2246 /* 1188 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[1]]
2247 /* 1188 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2248 /* 1193 */ GIR_EraseRootFromParent_Done,
2249 /* 1194 */ // Label 94: @1194
2250 /* 1194 */ GIM_Reject,
2251 /* 1195 */ // Label 2: @1195
2252 /* 1195 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1206), // Rule ID 84 //
2253 /* 1200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2254 /* 1203 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_SUB'
2255 /* 1203 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2256 /* 1206 */ // Label 95: @1206
2257 /* 1206 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1217), // Rule ID 162 //
2258 /* 1211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
2259 /* 1214 */ // Combiner Rule #97: propagate_undef_any_op; wip_match_opcode 'G_SUB'
2260 /* 1214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2261 /* 1217 */ // Label 96: @1217
2262 /* 1217 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1256), // Rule ID 111 //
2263 /* 1222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
2264 /* 1225 */ // MIs[0] dst
2265 /* 1225 */ // No operand predicates
2266 /* 1225 */ // MIs[0] x
2267 /* 1225 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
2268 /* 1229 */ // MIs[0] x
2269 /* 1229 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2270 /* 1234 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
2271 /* 1237 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
2272 /* 1247 */ // Combiner Rule #69: same_val_zero @ [__same_val_zero_match_0[0]]
2273 /* 1247 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
2274 /* 1250 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2275 /* 1252 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
2276 /* 1255 */ GIR_EraseRootFromParent_Done,
2277 /* 1256 */ // Label 97: @1256
2278 /* 1256 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1277), // Rule ID 208 //
2279 /* 1261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
2280 /* 1264 */ // MIs[0] dst
2281 /* 1264 */ // No operand predicates
2282 /* 1264 */ // MIs[0] src3
2283 /* 1264 */ // No operand predicates
2284 /* 1264 */ // MIs[0] tmp
2285 /* 1264 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2286 /* 1268 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
2287 /* 1272 */ // MIs[1] src1
2288 /* 1272 */ // No operand predicates
2289 /* 1272 */ // MIs[1] src2
2290 /* 1272 */ // No operand predicates
2291 /* 1272 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2292 /* 1274 */ // Combiner Rule #113: subaddmulreassoc
2293 /* 1274 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
2294 /* 1277 */ // Label 98: @1277
2295 /* 1277 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1300), // Rule ID 99 //
2296 /* 1282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
2297 /* 1285 */ // MIs[0] dst
2298 /* 1285 */ // No operand predicates
2299 /* 1285 */ // MIs[0] lhs
2300 /* 1285 */ // No operand predicates
2301 /* 1285 */ // MIs[0] Operand 2
2302 /* 1285 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2303 /* 1289 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2304 /* 1294 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[0]]
2305 /* 1294 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2306 /* 1299 */ GIR_EraseRootFromParent_Done,
2307 /* 1300 */ // Label 99: @1300
2308 /* 1300 */ GIM_Reject,
2309 /* 1301 */ // Label 3: @1301
2310 /* 1301 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1312), // Rule ID 46 //
2311 /* 1306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
2312 /* 1309 */ // Combiner Rule #39: mul_const; wip_match_opcode 'G_MUL'
2313 /* 1309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
2314 /* 1312 */ // Label 100: @1312
2315 /* 1312 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1323), // Rule ID 81 //
2316 /* 1317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2317 /* 1320 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_MUL'
2318 /* 1320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2319 /* 1323 */ // Label 101: @1323
2320 /* 1323 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1334), // Rule ID 145 //
2321 /* 1328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
2322 /* 1331 */ // Combiner Rule #91: undef_to_int_zero; wip_match_opcode 'G_MUL'
2323 /* 1331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
2324 /* 1334 */ // Label 102: @1334
2325 /* 1334 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1345), // Rule ID 174 //
2326 /* 1339 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2327 /* 1342 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
2328 /* 1342 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
2329 /* 1345 */ // Label 103: @1345
2330 /* 1345 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1356), // Rule ID 205 //
2331 /* 1350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
2332 /* 1353 */ // Combiner Rule #110: combine_mul_cmlt; wip_match_opcode 'G_MUL'
2333 /* 1353 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
2334 /* 1356 */ // Label 104: @1356
2335 /* 1356 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1396), // Rule ID 120 //
2336 /* 1361 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
2337 /* 1364 */ // MIs[0] dst
2338 /* 1364 */ // No operand predicates
2339 /* 1364 */ // MIs[0] zero
2340 /* 1364 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2341 /* 1368 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2342 /* 1372 */ // MIs[1] Operand 1
2343 /* 1372 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2344 /* 1383 */ // MIs[0] rhs
2345 /* 1383 */ // No operand predicates
2346 /* 1383 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2347 /* 1388 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2348 /* 1390 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
2349 /* 1390 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2350 /* 1395 */ GIR_EraseRootFromParent_Done,
2351 /* 1396 */ // Label 105: @1396
2352 /* 1396 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1419), // Rule ID 121 //
2353 /* 1401 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
2354 /* 1404 */ // MIs[0] dst
2355 /* 1404 */ // No operand predicates
2356 /* 1404 */ // MIs[0] lhs
2357 /* 1404 */ // No operand predicates
2358 /* 1404 */ // MIs[0] zero
2359 /* 1404 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2360 /* 1408 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2361 /* 1413 */ // Combiner Rule #71: binop_right_to_zero
2362 /* 1413 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2363 /* 1418 */ GIR_EraseRootFromParent_Done,
2364 /* 1419 */ // Label 106: @1419
2365 /* 1419 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1442), // Rule ID 126 //
2366 /* 1424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
2367 /* 1427 */ // MIs[0] dst
2368 /* 1427 */ // No operand predicates
2369 /* 1427 */ // MIs[0] x
2370 /* 1427 */ // No operand predicates
2371 /* 1427 */ // MIs[0] Operand 2
2372 /* 1427 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
2373 /* 1431 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2374 /* 1436 */ // Combiner Rule #76: right_identity_one_int
2375 /* 1436 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2376 /* 1441 */ GIR_EraseRootFromParent_Done,
2377 /* 1442 */ // Label 107: @1442
2378 /* 1442 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1453), // Rule ID 207 //
2379 /* 1447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
2380 /* 1450 */ // MIs[0] dst
2381 /* 1450 */ // No operand predicates
2382 /* 1450 */ // MIs[0] src1
2383 /* 1450 */ // No operand predicates
2384 /* 1450 */ // MIs[0] src2
2385 /* 1450 */ // No operand predicates
2386 /* 1450 */ // Combiner Rule #112: extmultomull
2387 /* 1450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
2388 /* 1453 */ // Label 108: @1453
2389 /* 1453 */ GIM_Reject,
2390 /* 1454 */ // Label 4: @1454
2391 /* 1454 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1465), // Rule ID 87 //
2392 /* 1459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2393 /* 1462 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_SDIV'
2394 /* 1462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2395 /* 1465 */ // Label 109: @1465
2396 /* 1465 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1505), // Rule ID 116 //
2397 /* 1470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
2398 /* 1473 */ // MIs[0] dst
2399 /* 1473 */ // No operand predicates
2400 /* 1473 */ // MIs[0] zero
2401 /* 1473 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2402 /* 1477 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2403 /* 1481 */ // MIs[1] Operand 1
2404 /* 1481 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2405 /* 1492 */ // MIs[0] rhs
2406 /* 1492 */ // No operand predicates
2407 /* 1492 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2408 /* 1497 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2409 /* 1499 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
2410 /* 1499 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2411 /* 1504 */ GIR_EraseRootFromParent_Done,
2412 /* 1505 */ // Label 110: @1505
2413 /* 1505 */ GIM_Reject,
2414 /* 1506 */ // Label 5: @1506
2415 /* 1506 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1517), // Rule ID 86 //
2416 /* 1511 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2417 /* 1514 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_UDIV'
2418 /* 1514 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2419 /* 1517 */ // Label 111: @1517
2420 /* 1517 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1528), // Rule ID 148 //
2421 /* 1522 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
2422 /* 1525 */ // Combiner Rule #93: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
2423 /* 1525 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
2424 /* 1528 */ // Label 112: @1528
2425 /* 1528 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1568), // Rule ID 117 //
2426 /* 1533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
2427 /* 1536 */ // MIs[0] dst
2428 /* 1536 */ // No operand predicates
2429 /* 1536 */ // MIs[0] zero
2430 /* 1536 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2431 /* 1540 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2432 /* 1544 */ // MIs[1] Operand 1
2433 /* 1544 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2434 /* 1555 */ // MIs[0] rhs
2435 /* 1555 */ // No operand predicates
2436 /* 1555 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2437 /* 1560 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2438 /* 1562 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
2439 /* 1562 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2440 /* 1567 */ GIR_EraseRootFromParent_Done,
2441 /* 1568 */ // Label 113: @1568
2442 /* 1568 */ GIM_Reject,
2443 /* 1569 */ // Label 6: @1569
2444 /* 1569 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1580), // Rule ID 89 //
2445 /* 1574 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2446 /* 1577 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_SREM'
2447 /* 1577 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2448 /* 1580 */ // Label 114: @1580
2449 /* 1580 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1620), // Rule ID 118 //
2450 /* 1585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
2451 /* 1588 */ // MIs[0] dst
2452 /* 1588 */ // No operand predicates
2453 /* 1588 */ // MIs[0] zero
2454 /* 1588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2455 /* 1592 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2456 /* 1596 */ // MIs[1] Operand 1
2457 /* 1596 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2458 /* 1607 */ // MIs[0] rhs
2459 /* 1607 */ // No operand predicates
2460 /* 1607 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2461 /* 1612 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2462 /* 1614 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
2463 /* 1614 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2464 /* 1619 */ GIR_EraseRootFromParent_Done,
2465 /* 1620 */ // Label 115: @1620
2466 /* 1620 */ GIM_Reject,
2467 /* 1621 */ // Label 7: @1621
2468 /* 1621 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1632), // Rule ID 88 //
2469 /* 1626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2470 /* 1629 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_UREM'
2471 /* 1629 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2472 /* 1632 */ // Label 116: @1632
2473 /* 1632 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1643), // Rule ID 149 //
2474 /* 1637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
2475 /* 1640 */ // Combiner Rule #93: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
2476 /* 1640 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
2477 /* 1643 */ // Label 117: @1643
2478 /* 1643 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1683), // Rule ID 119 //
2479 /* 1648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
2480 /* 1651 */ // MIs[0] dst
2481 /* 1651 */ // No operand predicates
2482 /* 1651 */ // MIs[0] zero
2483 /* 1651 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2484 /* 1655 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2485 /* 1659 */ // MIs[1] Operand 1
2486 /* 1659 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2487 /* 1670 */ // MIs[0] rhs
2488 /* 1670 */ // No operand predicates
2489 /* 1670 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2490 /* 1675 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2491 /* 1677 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
2492 /* 1677 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2493 /* 1682 */ GIR_EraseRootFromParent_Done,
2494 /* 1683 */ // Label 118: @1683
2495 /* 1683 */ GIM_Reject,
2496 /* 1684 */ // Label 8: @1684
2497 /* 1684 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1695), // Rule ID 33 //
2498 /* 1689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
2499 /* 1692 */ // Combiner Rule #31: load_and_mask; wip_match_opcode 'G_AND'
2500 /* 1692 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
2501 /* 1695 */ // Label 119: @1695
2502 /* 1695 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1706), // Rule ID 39 //
2503 /* 1700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2504 /* 1703 */ // Combiner Rule #34: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
2505 /* 1703 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
2506 /* 1706 */ // Label 120: @1706
2507 /* 1706 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1717), // Rule ID 42 //
2508 /* 1711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
2509 /* 1714 */ // Combiner Rule #35: redundant_and; wip_match_opcode 'G_AND'
2510 /* 1714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
2511 /* 1717 */ // Label 121: @1717
2512 /* 1717 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1728), // Rule ID 78 //
2513 /* 1722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2514 /* 1725 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_AND'
2515 /* 1725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2516 /* 1728 */ // Label 122: @1728
2517 /* 1728 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1739), // Rule ID 140 //
2518 /* 1733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
2519 /* 1736 */ // Combiner Rule #88: overlapping_and; wip_match_opcode 'G_AND'
2520 /* 1736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
2521 /* 1739 */ // Label 123: @1739
2522 /* 1739 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1750), // Rule ID 144 //
2523 /* 1744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
2524 /* 1747 */ // Combiner Rule #91: undef_to_int_zero; wip_match_opcode 'G_AND'
2525 /* 1747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
2526 /* 1750 */ // Label 124: @1750
2527 /* 1750 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1761), // Rule ID 175 //
2528 /* 1755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2529 /* 1758 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
2530 /* 1758 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
2531 /* 1761 */ // Label 125: @1761
2532 /* 1761 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1798), // Rule ID 49 //
2533 /* 1766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
2534 /* 1769 */ // MIs[0] root
2535 /* 1769 */ // No operand predicates
2536 /* 1769 */ // MIs[0] shift
2537 /* 1769 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2538 /* 1773 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
2539 /* 1777 */ // MIs[1] x
2540 /* 1777 */ // No operand predicates
2541 /* 1777 */ // MIs[1] lsb
2542 /* 1777 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
2543 /* 1781 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2544 /* 1785 */ // MIs[2] imm1
2545 /* 1785 */ // No operand predicates
2546 /* 1785 */ // MIs[0] mask
2547 /* 1785 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
2548 /* 1789 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2549 /* 1793 */ // MIs[3] imm2
2550 /* 1793 */ // No operand predicates
2551 /* 1793 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
2552 /* 1795 */ // Combiner Rule #42: bitfield_extract_from_and
2553 /* 1795 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
2554 /* 1798 */ // Label 126: @1798
2555 /* 1798 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1822), // Rule ID 109 //
2556 /* 1803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
2557 /* 1806 */ // MIs[0] dst
2558 /* 1806 */ // No operand predicates
2559 /* 1806 */ // MIs[0] src
2560 /* 1806 */ // No operand predicates
2561 /* 1806 */ // MIs[0] src
2562 /* 1806 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2563 /* 1811 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2564 /* 1816 */ // Combiner Rule #68: binop_same_val @ [__binop_same_val_match_0[0]]
2565 /* 1816 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2566 /* 1821 */ GIR_EraseRootFromParent_Done,
2567 /* 1822 */ // Label 127: @1822
2568 /* 1822 */ GIM_Reject,
2569 /* 1823 */ // Label 9: @1823
2570 /* 1823 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1834), // Rule ID 40 //
2571 /* 1828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2572 /* 1831 */ // Combiner Rule #34: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
2573 /* 1831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
2574 /* 1834 */ // Label 128: @1834
2575 /* 1834 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1845), // Rule ID 45 //
2576 /* 1839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
2577 /* 1842 */ // Combiner Rule #38: redundant_or; wip_match_opcode 'G_OR'
2578 /* 1842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
2579 /* 1845 */ // Label 129: @1845
2580 /* 1845 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1856), // Rule ID 82 //
2581 /* 1850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2582 /* 1853 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_OR'
2583 /* 1853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2584 /* 1856 */ // Label 130: @1856
2585 /* 1856 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1867), // Rule ID 146 //
2586 /* 1861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
2587 /* 1864 */ // Combiner Rule #92: undef_to_negative_one; wip_match_opcode 'G_OR'
2588 /* 1864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
2589 /* 1867 */ // Label 131: @1867
2590 /* 1867 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1878), // Rule ID 176 //
2591 /* 1872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2592 /* 1875 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
2593 /* 1875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
2594 /* 1878 */ // Label 132: @1878
2595 /* 1878 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1889), // Rule ID 214 //
2596 /* 1883 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
2597 /* 1886 */ // Combiner Rule #119: funnel_shift_from_or_shift_constants_are_legal; wip_match_opcode 'G_OR'
2598 /* 1886 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
2599 /* 1889 */ // Label 133: @1889
2600 /* 1889 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1913), // Rule ID 110 //
2601 /* 1894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
2602 /* 1897 */ // MIs[0] dst
2603 /* 1897 */ // No operand predicates
2604 /* 1897 */ // MIs[0] src
2605 /* 1897 */ // No operand predicates
2606 /* 1897 */ // MIs[0] src
2607 /* 1897 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2608 /* 1902 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2609 /* 1907 */ // Combiner Rule #68: binop_same_val @ [__binop_same_val_match_0[1]]
2610 /* 1907 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2611 /* 1912 */ GIR_EraseRootFromParent_Done,
2612 /* 1913 */ // Label 134: @1913
2613 /* 1913 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1936), // Rule ID 101 //
2614 /* 1918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
2615 /* 1921 */ // MIs[0] dst
2616 /* 1921 */ // No operand predicates
2617 /* 1921 */ // MIs[0] lhs
2618 /* 1921 */ // No operand predicates
2619 /* 1921 */ // MIs[0] Operand 2
2620 /* 1921 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2621 /* 1925 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2622 /* 1930 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[2]]
2623 /* 1930 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2624 /* 1935 */ GIR_EraseRootFromParent_Done,
2625 /* 1936 */ // Label 135: @1936
2626 /* 1936 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1947), // Rule ID 171 //
2627 /* 1941 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
2628 /* 1944 */ // MIs[0] dst
2629 /* 1944 */ // No operand predicates
2630 /* 1944 */ // MIs[0] src1
2631 /* 1944 */ // No operand predicates
2632 /* 1944 */ // MIs[0] src2
2633 /* 1944 */ // No operand predicates
2634 /* 1944 */ // Combiner Rule #103: or_to_bsp
2635 /* 1944 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
2636 /* 1947 */ // Label 136: @1947
2637 /* 1947 */ GIM_Reject,
2638 /* 1948 */ // Label 10: @1948
2639 /* 1948 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1959), // Rule ID 41 //
2640 /* 1953 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
2641 /* 1956 */ // Combiner Rule #34: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
2642 /* 1956 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
2643 /* 1959 */ // Label 137: @1959
2644 /* 1959 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1970), // Rule ID 43 //
2645 /* 1964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
2646 /* 1967 */ // Combiner Rule #36: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
2647 /* 1967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
2648 /* 1970 */ // Label 138: @1970
2649 /* 1970 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1981), // Rule ID 85 //
2650 /* 1975 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
2651 /* 1978 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_XOR'
2652 /* 1978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
2653 /* 1981 */ // Label 139: @1981
2654 /* 1981 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1992), // Rule ID 163 //
2655 /* 1986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
2656 /* 1989 */ // Combiner Rule #97: propagate_undef_any_op; wip_match_opcode 'G_XOR'
2657 /* 1989 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2658 /* 1992 */ // Label 140: @1992
2659 /* 1992 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2003), // Rule ID 177 //
2660 /* 1997 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2661 /* 2000 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
2662 /* 2000 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
2663 /* 2003 */ // Label 141: @2003
2664 /* 2003 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2042), // Rule ID 112 //
2665 /* 2008 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
2666 /* 2011 */ // MIs[0] dst
2667 /* 2011 */ // No operand predicates
2668 /* 2011 */ // MIs[0] x
2669 /* 2011 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
2670 /* 2015 */ // MIs[0] x
2671 /* 2015 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2672 /* 2020 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
2673 /* 2023 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
2674 /* 2033 */ // Combiner Rule #69: same_val_zero @ [__same_val_zero_match_0[1]]
2675 /* 2033 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
2676 /* 2036 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2677 /* 2038 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
2678 /* 2041 */ GIR_EraseRootFromParent_Done,
2679 /* 2042 */ // Label 142: @2042
2680 /* 2042 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2065), // Rule ID 102 //
2681 /* 2047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
2682 /* 2050 */ // MIs[0] dst
2683 /* 2050 */ // No operand predicates
2684 /* 2050 */ // MIs[0] lhs
2685 /* 2050 */ // No operand predicates
2686 /* 2050 */ // MIs[0] Operand 2
2687 /* 2050 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2688 /* 2054 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2689 /* 2059 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[3]]
2690 /* 2059 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2691 /* 2064 */ GIR_EraseRootFromParent_Done,
2692 /* 2065 */ // Label 143: @2065
2693 /* 2065 */ GIM_Reject,
2694 /* 2066 */ // Label 11: @2066
2695 /* 2066 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2077), // Rule ID 66 //
2696 /* 2071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
2697 /* 2074 */ // Combiner Rule #54: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
2698 /* 2074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
2699 /* 2077 */ // Label 144: @2077
2700 /* 2077 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2088), // Rule ID 67 //
2701 /* 2082 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
2702 /* 2085 */ // Combiner Rule #55: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
2703 /* 2085 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
2704 /* 2088 */ // Label 145: @2088
2705 /* 2088 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2099), // Rule ID 69 //
2706 /* 2093 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
2707 /* 2096 */ // Combiner Rule #57: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
2708 /* 2096 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
2709 /* 2099 */ // Label 146: @2099
2710 /* 2099 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2110), // Rule ID 70 //
2711 /* 2104 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
2712 /* 2107 */ // Combiner Rule #58: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
2713 /* 2107 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
2714 /* 2110 */ // Label 147: @2110
2715 /* 2110 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2121), // Rule ID 71 //
2716 /* 2115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
2717 /* 2118 */ // Combiner Rule #59: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
2718 /* 2118 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
2719 /* 2121 */ // Label 148: @2121
2720 /* 2121 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2132), // Rule ID 72 //
2721 /* 2126 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
2722 /* 2129 */ // Combiner Rule #60: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
2723 /* 2129 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
2724 /* 2132 */ // Label 149: @2132
2725 /* 2132 */ GIM_Reject,
2726 /* 2133 */ // Label 12: @2133
2727 /* 2133 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2144), // Rule ID 65 //
2728 /* 2138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
2729 /* 2141 */ // Combiner Rule #53: fold_merge_to_zext; wip_match_opcode 'G_MERGE_VALUES'
2730 /* 2141 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
2731 /* 2144 */ // Label 150: @2144
2732 /* 2144 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2158), // Rule ID 68 //
2733 /* 2149 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
2734 /* 2152 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
2735 /* 2155 */ // MIs[0] dst
2736 /* 2155 */ // No operand predicates
2737 /* 2155 */ // MIs[0] merge_srcs
2738 /* 2155 */ // No operand predicates
2739 /* 2155 */ // Combiner Rule #56: merge_unmerge
2740 /* 2155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
2741 /* 2158 */ // Label 151: @2158
2742 /* 2158 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2220),
2743 /* 2163 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
2744 /* 2166 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2187), // Rule ID 73 //
2745 /* 2171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
2746 /* 2174 */ // MIs[0] root
2747 /* 2174 */ // No operand predicates
2748 /* 2174 */ // MIs[0] x
2749 /* 2174 */ // No operand predicates
2750 /* 2174 */ // MIs[0] undef
2751 /* 2174 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2752 /* 2178 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2753 /* 2182 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2754 /* 2184 */ // Combiner Rule #61: merge_of_x_and_undef
2755 /* 2184 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2756 /* 2187 */ // Label 153: @2187
2757 /* 2187 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2219), // Rule ID 74 //
2758 /* 2192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
2759 /* 2195 */ // MIs[0] root
2760 /* 2195 */ // No operand predicates
2761 /* 2195 */ // MIs[0] x
2762 /* 2195 */ // No operand predicates
2763 /* 2195 */ // MIs[0] zero
2764 /* 2195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2765 /* 2199 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2766 /* 2203 */ // MIs[1] Operand 1
2767 /* 2203 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2768 /* 2214 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2769 /* 2216 */ // Combiner Rule #62: merge_of_x_and_zero
2770 /* 2216 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
2771 /* 2219 */ // Label 154: @2219
2772 /* 2219 */ GIM_Reject,
2773 /* 2220 */ // Label 152: @2220
2774 /* 2220 */ GIM_Reject,
2775 /* 2221 */ // Label 13: @2221
2776 /* 2221 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2232), // Rule ID 131 //
2777 /* 2226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
2778 /* 2229 */ // Combiner Rule #79: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
2779 /* 2229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
2780 /* 2232 */ // Label 155: @2232
2781 /* 2232 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2243), // Rule ID 165 //
2782 /* 2237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
2783 /* 2240 */ // Combiner Rule #98: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
2784 /* 2240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
2785 /* 2243 */ // Label 156: @2243
2786 /* 2243 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2254), // Rule ID 203 //
2787 /* 2248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
2788 /* 2251 */ // Combiner Rule #108: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
2789 /* 2251 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
2790 /* 2254 */ // Label 157: @2254
2791 /* 2254 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2285),
2792 /* 2259 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
2793 /* 2262 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2273), // Rule ID 75 //
2794 /* 2267 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
2795 /* 2270 */ // MIs[0] dst
2796 /* 2270 */ // No operand predicates
2797 /* 2270 */ // MIs[0] unused
2798 /* 2270 */ // No operand predicates
2799 /* 2270 */ // Combiner Rule #63: combine_build_unmerge
2800 /* 2270 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
2801 /* 2273 */ // Label 159: @2273
2802 /* 2273 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2284), // Rule ID 206 //
2803 /* 2278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
2804 /* 2281 */ // MIs[0] dst
2805 /* 2281 */ // No operand predicates
2806 /* 2281 */ // MIs[0] unused
2807 /* 2281 */ // No operand predicates
2808 /* 2281 */ // Combiner Rule #111: combine_use_vector_truncate
2809 /* 2281 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
2810 /* 2284 */ // Label 160: @2284
2811 /* 2284 */ GIM_Reject,
2812 /* 2285 */ // Label 158: @2285
2813 /* 2285 */ GIM_Reject,
2814 /* 2286 */ // Label 14: @2286
2815 /* 2286 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2297), // Rule ID 130 //
2816 /* 2291 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
2817 /* 2294 */ // Combiner Rule #79: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
2818 /* 2294 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
2819 /* 2297 */ // Label 161: @2297
2820 /* 2297 */ GIM_Reject,
2821 /* 2298 */ // Label 15: @2298
2822 /* 2298 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2309), // Rule ID 172 //
2823 /* 2303 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
2824 /* 2306 */ // Combiner Rule #104: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
2825 /* 2306 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
2826 /* 2309 */ // Label 162: @2309
2827 /* 2309 */ GIM_Reject,
2828 /* 2310 */ // Label 16: @2310
2829 /* 2310 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2331), // Rule ID 123 //
2830 /* 2315 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
2831 /* 2318 */ // MIs[0] dst
2832 /* 2318 */ // No operand predicates
2833 /* 2318 */ // MIs[0] t
2834 /* 2318 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2835 /* 2322 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
2836 /* 2326 */ // MIs[1] ptr
2837 /* 2326 */ // No operand predicates
2838 /* 2326 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2839 /* 2328 */ // Combiner Rule #73: i2p_to_p2i
2840 /* 2328 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
2841 /* 2331 */ // Label 163: @2331
2842 /* 2331 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2352), // Rule ID 157 //
2843 /* 2336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
2844 /* 2339 */ // MIs[0] dst
2845 /* 2339 */ // No operand predicates
2846 /* 2339 */ // MIs[0] __unary_undef_to_undef_match_0.x
2847 /* 2339 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2848 /* 2343 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2849 /* 2347 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2850 /* 2349 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
2851 /* 2349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
2852 /* 2352 */ // Label 164: @2352
2853 /* 2352 */ GIM_Reject,
2854 /* 2353 */ // Label 17: @2353
2855 /* 2353 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2364), // Rule ID 122 //
2856 /* 2358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
2857 /* 2361 */ // Combiner Rule #72: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
2858 /* 2361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
2859 /* 2364 */ // Label 165: @2364
2860 /* 2364 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2385), // Rule ID 158 //
2861 /* 2369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
2862 /* 2372 */ // MIs[0] dst
2863 /* 2372 */ // No operand predicates
2864 /* 2372 */ // MIs[0] __unary_undef_to_undef_match_0.x
2865 /* 2372 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2866 /* 2376 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2867 /* 2380 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2868 /* 2382 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
2869 /* 2382 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
2870 /* 2385 */ // Label 166: @2385
2871 /* 2385 */ GIM_Reject,
2872 /* 2386 */ // Label 18: @2386
2873 /* 2386 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2407), // Rule ID 134 //
2874 /* 2391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
2875 /* 2394 */ // MIs[0] dst
2876 /* 2394 */ // No operand predicates
2877 /* 2394 */ // MIs[0] src1
2878 /* 2394 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2879 /* 2398 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
2880 /* 2402 */ // MIs[1] src0
2881 /* 2402 */ // No operand predicates
2882 /* 2402 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2883 /* 2404 */ // Combiner Rule #82: bitcast_bitcast_fold
2884 /* 2404 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2885 /* 2407 */ // Label 167: @2407
2886 /* 2407 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2428), // Rule ID 155 //
2887 /* 2412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
2888 /* 2415 */ // MIs[0] dst
2889 /* 2415 */ // No operand predicates
2890 /* 2415 */ // MIs[0] __unary_undef_to_undef_match_0.x
2891 /* 2415 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2892 /* 2419 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2893 /* 2423 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2894 /* 2425 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
2895 /* 2425 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
2896 /* 2428 */ // Label 168: @2428
2897 /* 2428 */ GIM_Reject,
2898 /* 2429 */ // Label 19: @2429
2899 /* 2429 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2440), // Rule ID 204 //
2900 /* 2434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
2901 /* 2437 */ // MIs[0] dst
2902 /* 2437 */ // No operand predicates
2903 /* 2437 */ // MIs[0] src
2904 /* 2437 */ // No operand predicates
2905 /* 2437 */ // Combiner Rule #109: push_freeze_to_prevent_poison_from_propagating
2906 /* 2437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
2907 /* 2440 */ // Label 169: @2440
2908 /* 2440 */ GIM_Reject,
2909 /* 2441 */ // Label 20: @2441
2910 /* 2441 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2462), // Rule ID 20 //
2911 /* 2446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
2912 /* 2449 */ // MIs[0] dst
2913 /* 2449 */ // No operand predicates
2914 /* 2449 */ // MIs[0] src0
2915 /* 2449 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2916 /* 2453 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2917 /* 2457 */ // MIs[1] cst
2918 /* 2457 */ // No operand predicates
2919 /* 2457 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2920 /* 2459 */ // Combiner Rule #20: constant_fold_intrinsic_trunc
2921 /* 2459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
2922 /* 2462 */ // Label 170: @2462
2923 /* 2462 */ GIM_Reject,
2924 /* 2463 */ // Label 21: @2463
2925 /* 2463 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2484), // Rule ID 21 //
2926 /* 2468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
2927 /* 2471 */ // MIs[0] dst
2928 /* 2471 */ // No operand predicates
2929 /* 2471 */ // MIs[0] src0
2930 /* 2471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2931 /* 2475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2932 /* 2479 */ // MIs[1] cst
2933 /* 2479 */ // No operand predicates
2934 /* 2479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2935 /* 2481 */ // Combiner Rule #21: constant_fold_intrinsic_round
2936 /* 2481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
2937 /* 2484 */ // Label 171: @2484
2938 /* 2484 */ GIM_Reject,
2939 /* 2485 */ // Label 22: @2485
2940 /* 2485 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2506), // Rule ID 22 //
2941 /* 2490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
2942 /* 2493 */ // MIs[0] dst
2943 /* 2493 */ // No operand predicates
2944 /* 2493 */ // MIs[0] src0
2945 /* 2493 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2946 /* 2497 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
2947 /* 2501 */ // MIs[1] cst
2948 /* 2501 */ // No operand predicates
2949 /* 2501 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2950 /* 2503 */ // Combiner Rule #22: constant_fold_intrinsic_roundeven
2951 /* 2503 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
2952 /* 2506 */ // Label 172: @2506
2953 /* 2506 */ GIM_Reject,
2954 /* 2507 */ // Label 23: @2507
2955 /* 2507 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2518), // Rule ID 30 //
2956 /* 2512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
2957 /* 2515 */ // Combiner Rule #30: extending_loads; wip_match_opcode 'G_LOAD'
2958 /* 2515 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
2959 /* 2518 */ // Label 173: @2518
2960 /* 2518 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2529), // Rule ID 34 //
2961 /* 2523 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
2962 /* 2526 */ // Combiner Rule #32: combine_indexed_load_store; wip_match_opcode 'G_LOAD'
2963 /* 2526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2964 /* 2529 */ // Label 174: @2529
2965 /* 2529 */ GIM_Reject,
2966 /* 2530 */ // Label 24: @2530
2967 /* 2530 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2541), // Rule ID 31 //
2968 /* 2535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
2969 /* 2538 */ // Combiner Rule #30: extending_loads; wip_match_opcode 'G_SEXTLOAD'
2970 /* 2538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
2971 /* 2541 */ // Label 175: @2541
2972 /* 2541 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2552), // Rule ID 35 //
2973 /* 2546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
2974 /* 2549 */ // Combiner Rule #32: combine_indexed_load_store; wip_match_opcode 'G_SEXTLOAD'
2975 /* 2549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2976 /* 2552 */ // Label 176: @2552
2977 /* 2552 */ GIM_Reject,
2978 /* 2553 */ // Label 25: @2553
2979 /* 2553 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2564), // Rule ID 32 //
2980 /* 2558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
2981 /* 2561 */ // Combiner Rule #30: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
2982 /* 2561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
2983 /* 2564 */ // Label 177: @2564
2984 /* 2564 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2575), // Rule ID 36 //
2985 /* 2569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
2986 /* 2572 */ // Combiner Rule #32: combine_indexed_load_store; wip_match_opcode 'G_ZEXTLOAD'
2987 /* 2572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2988 /* 2575 */ // Label 178: @2575
2989 /* 2575 */ GIM_Reject,
2990 /* 2576 */ // Label 26: @2576
2991 /* 2576 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2587), // Rule ID 37 //
2992 /* 2581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
2993 /* 2584 */ // Combiner Rule #32: combine_indexed_load_store; wip_match_opcode 'G_STORE'
2994 /* 2584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2995 /* 2587 */ // Label 179: @2587
2996 /* 2587 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2598), // Rule ID 167 //
2997 /* 2592 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
2998 /* 2595 */ // Combiner Rule #100: erase_undef_store; wip_match_opcode 'G_STORE'
2999 /* 2595 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
3000 /* 2598 */ // Label 180: @2598
3001 /* 2598 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2609), // Rule ID 141 //
3002 /* 2603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
3003 /* 2606 */ // MIs[0] src
3004 /* 2606 */ // No operand predicates
3005 /* 2606 */ // MIs[0] addr
3006 /* 2606 */ // No operand predicates
3007 /* 2606 */ // Combiner Rule #89: split_store_zero_128
3008 /* 2606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
3009 /* 2609 */ // Label 181: @2609
3010 /* 2609 */ GIM_Reject,
3011 /* 2610 */ // Label 27: @2610
3012 /* 2610 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2621), // Rule ID 29 //
3013 /* 2615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
3014 /* 2618 */ // Combiner Rule #29: mutate_anyext_to_zext; wip_match_opcode 'G_ANYEXT'
3015 /* 2618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3016 /* 2621 */ // Label 182: @2621
3017 /* 2621 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2632), // Rule ID 124 //
3018 /* 2626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
3019 /* 2629 */ // Combiner Rule #74: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
3020 /* 2629 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
3021 /* 2632 */ // Label 183: @2632
3022 /* 2632 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2653), // Rule ID 8 //
3023 /* 2637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
3024 /* 2640 */ // MIs[0] root
3025 /* 2640 */ // No operand predicates
3026 /* 2640 */ // MIs[0] second
3027 /* 2640 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3028 /* 2644 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3029 /* 2648 */ // MIs[1] src
3030 /* 2648 */ // No operand predicates
3031 /* 2648 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3032 /* 2650 */ // Combiner Rule #8: anyext_of_anyext
3033 /* 2650 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3034 /* 2653 */ // Label 184: @2653
3035 /* 2653 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2674), // Rule ID 10 //
3036 /* 2658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
3037 /* 2661 */ // MIs[0] root
3038 /* 2661 */ // No operand predicates
3039 /* 2661 */ // MIs[0] second
3040 /* 2661 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3041 /* 2665 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
3042 /* 2669 */ // MIs[1] src
3043 /* 2669 */ // No operand predicates
3044 /* 2669 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3045 /* 2671 */ // Combiner Rule #10: anyext_of_sext
3046 /* 2671 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3047 /* 2674 */ // Label 185: @2674
3048 /* 2674 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2695), // Rule ID 9 //
3049 /* 2679 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
3050 /* 2682 */ // MIs[0] root
3051 /* 2682 */ // No operand predicates
3052 /* 2682 */ // MIs[0] second
3053 /* 2682 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3054 /* 2686 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3055 /* 2690 */ // MIs[1] src
3056 /* 2690 */ // No operand predicates
3057 /* 2690 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3058 /* 2692 */ // Combiner Rule #9: anyext_of_zext
3059 /* 2692 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3060 /* 2695 */ // Label 186: @2695
3061 /* 2695 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2716), // Rule ID 156 //
3062 /* 2700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
3063 /* 2703 */ // MIs[0] dst
3064 /* 2703 */ // No operand predicates
3065 /* 2703 */ // MIs[0] __unary_undef_to_undef_match_0.x
3066 /* 2703 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3067 /* 2707 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3068 /* 2711 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3069 /* 2713 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
3070 /* 2713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
3071 /* 2716 */ // Label 187: @2716
3072 /* 2716 */ GIM_Reject,
3073 /* 2717 */ // Label 28: @2717
3074 /* 2717 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(2728), // Rule ID 132 //
3075 /* 2722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3076 /* 2725 */ // Combiner Rule #80: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
3077 /* 2725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
3078 /* 2728 */ // Label 188: @2728
3079 /* 2728 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(2739), // Rule ID 133 //
3080 /* 2733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
3081 /* 2736 */ // Combiner Rule #81: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
3082 /* 2736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
3083 /* 2739 */ // Label 189: @2739
3084 /* 2739 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(2771), // Rule ID 211 //
3085 /* 2744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
3086 /* 2747 */ // MIs[0] dst
3087 /* 2747 */ // No operand predicates
3088 /* 2747 */ // MIs[0] min
3089 /* 2747 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3090 /* 2751 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
3091 /* 2755 */ // MIs[1] x
3092 /* 2755 */ // No operand predicates
3093 /* 2755 */ // MIs[1] y
3094 /* 2755 */ // No operand predicates
3095 /* 2755 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
3096 /* 2759 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3097 /* 2761 */ // Combiner Rule #116: trunc_usatu
3098 /* 2761 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
3099 /* 2764 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3100 /* 2766 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
3101 /* 2770 */ GIR_EraseRootFromParent_Done,
3102 /* 2771 */ // Label 190: @2771
3103 /* 2771 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(2792), // Rule ID 3 //
3104 /* 2776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
3105 /* 2779 */ // MIs[0] root
3106 /* 2779 */ // No operand predicates
3107 /* 2779 */ // MIs[0] ext
3108 /* 2779 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3109 /* 2783 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3110 /* 2787 */ // MIs[1] src
3111 /* 2787 */ // No operand predicates
3112 /* 2787 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3113 /* 2789 */ // Combiner Rule #3: truncate_of_anyext
3114 /* 2789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3115 /* 2792 */ // Label 191: @2792
3116 /* 2792 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(2816), // Rule ID 27 //
3117 /* 2797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
3118 /* 2800 */ // MIs[0] root
3119 /* 2800 */ // No operand predicates
3120 /* 2800 */ // MIs[0] bv
3121 /* 2800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3122 /* 2804 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
3123 /* 2808 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
3124 /* 2811 */ // MIs[1] unused
3125 /* 2811 */ // No operand predicates
3126 /* 2811 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3127 /* 2813 */ // Combiner Rule #27: buildvector_of_truncate
3128 /* 2813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
3129 /* 2816 */ // Label 192: @2816
3130 /* 2816 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(2837), // Rule ID 2 //
3131 /* 2821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
3132 /* 2824 */ // MIs[0] root
3133 /* 2824 */ // No operand predicates
3134 /* 2824 */ // MIs[0] ext
3135 /* 2824 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3136 /* 2828 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
3137 /* 2832 */ // MIs[1] src
3138 /* 2832 */ // No operand predicates
3139 /* 2832 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3140 /* 2834 */ // Combiner Rule #2: truncate_of_sext
3141 /* 2834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3142 /* 2837 */ // Label 193: @2837
3143 /* 2837 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(2858), // Rule ID 1 //
3144 /* 2842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
3145 /* 2845 */ // MIs[0] root
3146 /* 2845 */ // No operand predicates
3147 /* 2845 */ // MIs[0] ext
3148 /* 2845 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3149 /* 2849 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3150 /* 2853 */ // MIs[1] src
3151 /* 2853 */ // No operand predicates
3152 /* 2853 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3153 /* 2855 */ // Combiner Rule #1: truncate_of_zext
3154 /* 2855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3155 /* 2858 */ // Label 194: @2858
3156 /* 2858 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(2879), // Rule ID 154 //
3157 /* 2863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
3158 /* 2866 */ // MIs[0] dst
3159 /* 2866 */ // No operand predicates
3160 /* 2866 */ // MIs[0] __unary_undef_to_undef_match_0.x
3161 /* 2866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3162 /* 2870 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3163 /* 2874 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3164 /* 2876 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
3165 /* 2876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
3166 /* 2879 */ // Label 195: @2879
3167 /* 2879 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(2900), // Rule ID 28 //
3168 /* 2884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
3169 /* 2887 */ // MIs[0] root
3170 /* 2887 */ // No operand predicates
3171 /* 2887 */ // MIs[0] int
3172 /* 2887 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3173 /* 2891 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3174 /* 2895 */ // MIs[1] imm
3175 /* 2895 */ // No operand predicates
3176 /* 2895 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3177 /* 2897 */ // Combiner Rule #28: integer_of_truncate
3178 /* 2897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
3179 /* 2900 */ // Label 196: @2900
3180 /* 2900 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(2911), // Rule ID 209 //
3181 /* 2905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
3182 /* 2908 */ // MIs[0] dst
3183 /* 2908 */ // No operand predicates
3184 /* 2908 */ // MIs[0] src
3185 /* 2908 */ // No operand predicates
3186 /* 2908 */ // Combiner Rule #114: trunc_ssats
3187 /* 2908 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
3188 /* 2911 */ // Label 197: @2911
3189 /* 2911 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(2922), // Rule ID 210 //
3190 /* 2916 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
3191 /* 2919 */ // MIs[0] dst
3192 /* 2919 */ // No operand predicates
3193 /* 2919 */ // MIs[0] src
3194 /* 2919 */ // No operand predicates
3195 /* 2919 */ // Combiner Rule #115: trunc_ssatu
3196 /* 2919 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
3197 /* 2922 */ // Label 198: @2922
3198 /* 2922 */ GIM_Reject,
3199 /* 2923 */ // Label 29: @2923
3200 /* 2923 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(2955), // Rule ID 212 //
3201 /* 2928 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
3202 /* 2931 */ // MIs[0] dst
3203 /* 2931 */ // No operand predicates
3204 /* 2931 */ // MIs[0] src
3205 /* 2931 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3206 /* 2935 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
3207 /* 2939 */ // MIs[1] x
3208 /* 2939 */ // No operand predicates
3209 /* 2939 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
3210 /* 2943 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3211 /* 2945 */ // Combiner Rule #117: truncusatu_to_fptouisat
3212 /* 2945 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
3213 /* 2948 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3214 /* 2950 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
3215 /* 2954 */ GIR_EraseRootFromParent_Done,
3216 /* 2955 */ // Label 199: @2955
3217 /* 2955 */ GIM_Reject,
3218 /* 2956 */ // Label 30: @2956
3219 /* 2956 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(2977), // Rule ID 7 //
3220 /* 2961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
3221 /* 2964 */ // MIs[0] root
3222 /* 2964 */ // No operand predicates
3223 /* 2964 */ // MIs[0] second
3224 /* 2964 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3225 /* 2968 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3226 /* 2972 */ // MIs[1] src
3227 /* 2972 */ // No operand predicates
3228 /* 2972 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3229 /* 2974 */ // Combiner Rule #7: sext_of_anyext
3230 /* 2974 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3231 /* 2977 */ // Label 200: @2977
3232 /* 2977 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(2998), // Rule ID 6 //
3233 /* 2982 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
3234 /* 2985 */ // MIs[0] root
3235 /* 2985 */ // No operand predicates
3236 /* 2985 */ // MIs[0] second
3237 /* 2985 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3238 /* 2989 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
3239 /* 2993 */ // MIs[1] src
3240 /* 2993 */ // No operand predicates
3241 /* 2993 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3242 /* 2995 */ // Combiner Rule #6: sext_of_sext
3243 /* 2995 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3244 /* 2998 */ // Label 201: @2998
3245 /* 2998 */ GIM_Reject,
3246 /* 2999 */ // Label 31: @2999
3247 /* 2999 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3010), // Rule ID 38 //
3248 /* 3004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3249 /* 3007 */ // Combiner Rule #33: sext_trunc_sextload; wip_match_opcode 'G_SEXT_INREG'
3250 /* 3007 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
3251 /* 3010 */ // Label 202: @3010
3252 /* 3010 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3021), // Rule ID 47 //
3253 /* 3015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
3254 /* 3018 */ // Combiner Rule #40: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
3255 /* 3018 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
3256 /* 3021 */ // Label 203: @3021
3257 /* 3021 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3032), // Rule ID 48 //
3258 /* 3026 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
3259 /* 3029 */ // Combiner Rule #41: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
3260 /* 3029 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
3261 /* 3032 */ // Label 204: @3032
3262 /* 3032 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3053), // Rule ID 11 //
3263 /* 3037 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
3264 /* 3040 */ // MIs[0] dst
3265 /* 3040 */ // No operand predicates
3266 /* 3040 */ // MIs[0] x
3267 /* 3040 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3268 /* 3044 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
3269 /* 3048 */ // MIs[1] src
3270 /* 3048 */ // No operand predicates
3271 /* 3048 */ // MIs[1] a
3272 /* 3048 */ // No operand predicates
3273 /* 3048 */ // MIs[0] b
3274 /* 3048 */ // No operand predicates
3275 /* 3048 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3276 /* 3050 */ // Combiner Rule #11: sext_inreg_of_sext_inreg
3277 /* 3050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
3278 /* 3053 */ // Label 205: @3053
3279 /* 3053 */ GIM_Reject,
3280 /* 3054 */ // Label 32: @3054
3281 /* 3054 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3075), // Rule ID 5 //
3282 /* 3059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
3283 /* 3062 */ // MIs[0] root
3284 /* 3062 */ // No operand predicates
3285 /* 3062 */ // MIs[0] second
3286 /* 3062 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3287 /* 3066 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3288 /* 3070 */ // MIs[1] src
3289 /* 3070 */ // No operand predicates
3290 /* 3070 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3291 /* 3072 */ // Combiner Rule #5: zext_of_anyext
3292 /* 3072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3293 /* 3075 */ // Label 206: @3075
3294 /* 3075 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3096), // Rule ID 4 //
3295 /* 3080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
3296 /* 3083 */ // MIs[0] root
3297 /* 3083 */ // No operand predicates
3298 /* 3083 */ // MIs[0] second
3299 /* 3083 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3300 /* 3087 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3301 /* 3091 */ // MIs[1] src
3302 /* 3091 */ // No operand predicates
3303 /* 3091 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3304 /* 3093 */ // Combiner Rule #4: zext_of_zext
3305 /* 3093 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3306 /* 3096 */ // Label 207: @3096
3307 /* 3096 */ GIM_Reject,
3308 /* 3097 */ // Label 33: @3097
3309 /* 3097 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3108), // Rule ID 83 //
3310 /* 3102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
3311 /* 3105 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_SHL'
3312 /* 3105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3313 /* 3108 */ // Label 208: @3108
3314 /* 3108 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3119), // Rule ID 147 //
3315 /* 3113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
3316 /* 3116 */ // Combiner Rule #93: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
3317 /* 3116 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
3318 /* 3119 */ // Label 209: @3119
3319 /* 3119 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3130), // Rule ID 150 //
3320 /* 3124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
3321 /* 3127 */ // Combiner Rule #94: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
3322 /* 3127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
3323 /* 3130 */ // Label 210: @3130
3324 /* 3130 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3170), // Rule ID 113 //
3325 /* 3135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
3326 /* 3138 */ // MIs[0] dst
3327 /* 3138 */ // No operand predicates
3328 /* 3138 */ // MIs[0] zero
3329 /* 3138 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3330 /* 3142 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3331 /* 3146 */ // MIs[1] Operand 1
3332 /* 3146 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3333 /* 3157 */ // MIs[0] rhs
3334 /* 3157 */ // No operand predicates
3335 /* 3157 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3336 /* 3162 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3337 /* 3164 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
3338 /* 3164 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3339 /* 3169 */ GIR_EraseRootFromParent_Done,
3340 /* 3170 */ // Label 211: @3170
3341 /* 3170 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3193), // Rule ID 103 //
3342 /* 3175 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
3343 /* 3178 */ // MIs[0] dst
3344 /* 3178 */ // No operand predicates
3345 /* 3178 */ // MIs[0] lhs
3346 /* 3178 */ // No operand predicates
3347 /* 3178 */ // MIs[0] Operand 2
3348 /* 3178 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3349 /* 3182 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3350 /* 3187 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[4]]
3351 /* 3187 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3352 /* 3192 */ GIR_EraseRootFromParent_Done,
3353 /* 3193 */ // Label 212: @3193
3354 /* 3193 */ GIM_Reject,
3355 /* 3194 */ // Label 34: @3194
3356 /* 3194 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3205), // Rule ID 51 //
3357 /* 3199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
3358 /* 3202 */ // Combiner Rule #43: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
3359 /* 3202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
3360 /* 3205 */ // Label 213: @3205
3361 /* 3205 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3216), // Rule ID 53 //
3362 /* 3210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3363 /* 3213 */ // Combiner Rule #44: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
3364 /* 3213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
3365 /* 3216 */ // Label 214: @3216
3366 /* 3216 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3227), // Rule ID 80 //
3367 /* 3221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
3368 /* 3224 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_LSHR'
3369 /* 3224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3370 /* 3227 */ // Label 215: @3227
3371 /* 3227 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3238), // Rule ID 152 //
3372 /* 3232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
3373 /* 3235 */ // Combiner Rule #94: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
3374 /* 3235 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
3375 /* 3238 */ // Label 216: @3238
3376 /* 3238 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3267), // Rule ID 213 //
3377 /* 3243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
3378 /* 3246 */ // MIs[0] dst
3379 /* 3246 */ // No operand predicates
3380 /* 3246 */ // MIs[0] d2
3381 /* 3246 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3382 /* 3250 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
3383 /* 3254 */ // MIs[1] d1
3384 /* 3254 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
3385 /* 3258 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
3386 /* 3262 */ // MIs[2] x
3387 /* 3262 */ // No operand predicates
3388 /* 3262 */ // MIs[2] y
3389 /* 3262 */ // No operand predicates
3390 /* 3262 */ // MIs[0] z
3391 /* 3262 */ // No operand predicates
3392 /* 3262 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
3393 /* 3264 */ // Combiner Rule #118: lshr_of_trunc_of_lshr
3394 /* 3264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
3395 /* 3267 */ // Label 217: @3267
3396 /* 3267 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3307), // Rule ID 114 //
3397 /* 3272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
3398 /* 3275 */ // MIs[0] dst
3399 /* 3275 */ // No operand predicates
3400 /* 3275 */ // MIs[0] zero
3401 /* 3275 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3402 /* 3279 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3403 /* 3283 */ // MIs[1] Operand 1
3404 /* 3283 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3405 /* 3294 */ // MIs[0] rhs
3406 /* 3294 */ // No operand predicates
3407 /* 3294 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3408 /* 3299 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3409 /* 3301 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
3410 /* 3301 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3411 /* 3306 */ GIR_EraseRootFromParent_Done,
3412 /* 3307 */ // Label 218: @3307
3413 /* 3307 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3330), // Rule ID 105 //
3414 /* 3312 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
3415 /* 3315 */ // MIs[0] dst
3416 /* 3315 */ // No operand predicates
3417 /* 3315 */ // MIs[0] lhs
3418 /* 3315 */ // No operand predicates
3419 /* 3315 */ // MIs[0] Operand 2
3420 /* 3315 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3421 /* 3319 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3422 /* 3324 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[6]]
3423 /* 3324 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3424 /* 3329 */ GIR_EraseRootFromParent_Done,
3425 /* 3330 */ // Label 219: @3330
3426 /* 3330 */ GIM_Reject,
3427 /* 3331 */ // Label 35: @3331
3428 /* 3331 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3342), // Rule ID 50 //
3429 /* 3336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
3430 /* 3339 */ // Combiner Rule #43: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
3431 /* 3339 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
3432 /* 3342 */ // Label 220: @3342
3433 /* 3342 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3353), // Rule ID 52 //
3434 /* 3347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3435 /* 3350 */ // Combiner Rule #44: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
3436 /* 3350 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
3437 /* 3353 */ // Label 221: @3353
3438 /* 3353 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3364), // Rule ID 79 //
3439 /* 3358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
3440 /* 3361 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_ASHR'
3441 /* 3361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3442 /* 3364 */ // Label 222: @3364
3443 /* 3364 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3375), // Rule ID 151 //
3444 /* 3369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
3445 /* 3372 */ // Combiner Rule #94: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
3446 /* 3372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
3447 /* 3375 */ // Label 223: @3375
3448 /* 3375 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3415), // Rule ID 115 //
3449 /* 3380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
3450 /* 3383 */ // MIs[0] dst
3451 /* 3383 */ // No operand predicates
3452 /* 3383 */ // MIs[0] zero
3453 /* 3383 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3454 /* 3387 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3455 /* 3391 */ // MIs[1] Operand 1
3456 /* 3391 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3457 /* 3402 */ // MIs[0] rhs
3458 /* 3402 */ // No operand predicates
3459 /* 3402 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3460 /* 3407 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3461 /* 3409 */ // Combiner Rule #70: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
3462 /* 3409 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3463 /* 3414 */ GIR_EraseRootFromParent_Done,
3464 /* 3415 */ // Label 224: @3415
3465 /* 3415 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3438), // Rule ID 104 //
3466 /* 3420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
3467 /* 3423 */ // MIs[0] dst
3468 /* 3423 */ // No operand predicates
3469 /* 3423 */ // MIs[0] lhs
3470 /* 3423 */ // No operand predicates
3471 /* 3423 */ // MIs[0] Operand 2
3472 /* 3423 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3473 /* 3427 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3474 /* 3432 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[5]]
3475 /* 3432 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3476 /* 3437 */ GIR_EraseRootFromParent_Done,
3477 /* 3438 */ // Label 225: @3438
3478 /* 3438 */ GIM_Reject,
3479 /* 3439 */ // Label 36: @3439
3480 /* 3439 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3450), // Rule ID 54 //
3481 /* 3444 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
3482 /* 3447 */ // Combiner Rule #45: rotate_out_of_range; wip_match_opcode 'G_ROTR'
3483 /* 3447 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
3484 /* 3450 */ // Label 226: @3450
3485 /* 3450 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3473), // Rule ID 108 //
3486 /* 3455 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
3487 /* 3458 */ // MIs[0] dst
3488 /* 3458 */ // No operand predicates
3489 /* 3458 */ // MIs[0] lhs
3490 /* 3458 */ // No operand predicates
3491 /* 3458 */ // MIs[0] Operand 2
3492 /* 3458 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3493 /* 3462 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3494 /* 3467 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[9]]
3495 /* 3467 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3496 /* 3472 */ GIR_EraseRootFromParent_Done,
3497 /* 3473 */ // Label 227: @3473
3498 /* 3473 */ GIM_Reject,
3499 /* 3474 */ // Label 37: @3474
3500 /* 3474 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3485), // Rule ID 55 //
3501 /* 3479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
3502 /* 3482 */ // Combiner Rule #45: rotate_out_of_range; wip_match_opcode 'G_ROTL'
3503 /* 3482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
3504 /* 3485 */ // Label 228: @3485
3505 /* 3485 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3508), // Rule ID 107 //
3506 /* 3490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
3507 /* 3493 */ // MIs[0] dst
3508 /* 3493 */ // No operand predicates
3509 /* 3493 */ // MIs[0] lhs
3510 /* 3493 */ // No operand predicates
3511 /* 3493 */ // MIs[0] Operand 2
3512 /* 3493 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3513 /* 3497 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3514 /* 3502 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[8]]
3515 /* 3502 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3516 /* 3507 */ GIR_EraseRootFromParent_Done,
3517 /* 3508 */ // Label 229: @3508
3518 /* 3508 */ GIM_Reject,
3519 /* 3509 */ // Label 38: @3509
3520 /* 3509 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3520), // Rule ID 56 //
3521 /* 3514 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
3522 /* 3517 */ // Combiner Rule #46: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
3523 /* 3517 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
3524 /* 3520 */ // Label 230: @3520
3525 /* 3520 */ GIM_Reject,
3526 /* 3521 */ // Label 39: @3521
3527 /* 3521 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3532), // Rule ID 62 //
3528 /* 3526 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
3529 /* 3529 */ // Combiner Rule #50: select_constant_cmp; wip_match_opcode 'G_SELECT'
3530 /* 3529 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
3531 /* 3532 */ // Label 231: @3532
3532 /* 3532 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3543), // Rule ID 64 //
3533 /* 3537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
3534 /* 3540 */ // Combiner Rule #52: match_selects; wip_match_opcode 'G_SELECT'
3535 /* 3540 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
3536 /* 3543 */ // Label 232: @3543
3537 /* 3543 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3554), // Rule ID 98 //
3538 /* 3548 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
3539 /* 3551 */ // Combiner Rule #66: select_same_val; wip_match_opcode 'G_SELECT'
3540 /* 3551 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
3541 /* 3554 */ // Label 233: @3554
3542 /* 3554 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3565), // Rule ID 170 //
3543 /* 3559 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
3544 /* 3562 */ // Combiner Rule #102: select_to_minmax; wip_match_opcode 'G_SELECT'
3545 /* 3562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
3546 /* 3565 */ // Label 234: @3565
3547 /* 3565 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3586), // Rule ID 63 //
3548 /* 3570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
3549 /* 3573 */ // MIs[0] root
3550 /* 3573 */ // No operand predicates
3551 /* 3573 */ // MIs[0] tst
3552 /* 3573 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3553 /* 3577 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
3554 /* 3581 */ // MIs[1] tst1
3555 /* 3581 */ // No operand predicates
3556 /* 3581 */ // MIs[1] a
3557 /* 3581 */ // No operand predicates
3558 /* 3581 */ // MIs[1] b
3559 /* 3581 */ // No operand predicates
3560 /* 3581 */ // MIs[0] x
3561 /* 3581 */ // No operand predicates
3562 /* 3581 */ // MIs[0] y
3563 /* 3581 */ // No operand predicates
3564 /* 3581 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3565 /* 3583 */ // Combiner Rule #51: select_to_iminmax
3566 /* 3583 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
3567 /* 3586 */ // Label 235: @3586
3568 /* 3586 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(3615), // Rule ID 61 //
3569 /* 3591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
3570 /* 3594 */ // MIs[0] dst
3571 /* 3594 */ // No operand predicates
3572 /* 3594 */ // MIs[0] undef
3573 /* 3594 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3574 /* 3598 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3575 /* 3602 */ // MIs[0] x
3576 /* 3602 */ // No operand predicates
3577 /* 3602 */ // MIs[0] y
3578 /* 3602 */ // No operand predicates
3579 /* 3602 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
3580 /* 3607 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3581 /* 3609 */ // Combiner Rule #49: select_undef_cmp
3582 /* 3609 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
3583 /* 3614 */ GIR_EraseRootFromParent_Done,
3584 /* 3615 */ // Label 236: @3615
3585 /* 3615 */ GIM_Reject,
3586 /* 3616 */ // Label 40: @3616
3587 /* 3616 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(3627), // Rule ID 58 //
3588 /* 3621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
3589 /* 3624 */ // Combiner Rule #47: match_addos; wip_match_opcode 'G_UADDO'
3590 /* 3624 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
3591 /* 3627 */ // Label 237: @3627
3592 /* 3627 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(3638), // Rule ID 182 //
3593 /* 3632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3594 /* 3635 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
3595 /* 3635 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3596 /* 3638 */ // Label 238: @3638
3597 /* 3638 */ GIM_Reject,
3598 /* 3639 */ // Label 41: @3639
3599 /* 3639 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(3650), // Rule ID 60 //
3600 /* 3644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
3601 /* 3647 */ // Combiner Rule #48: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
3602 /* 3647 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
3603 /* 3650 */ // Label 239: @3650
3604 /* 3650 */ GIM_Reject,
3605 /* 3651 */ // Label 42: @3651
3606 /* 3651 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(3662), // Rule ID 57 //
3607 /* 3656 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
3608 /* 3659 */ // Combiner Rule #47: match_addos; wip_match_opcode 'G_SADDO'
3609 /* 3659 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
3610 /* 3662 */ // Label 240: @3662
3611 /* 3662 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(3673), // Rule ID 183 //
3612 /* 3667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3613 /* 3670 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
3614 /* 3670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3615 /* 3673 */ // Label 241: @3673
3616 /* 3673 */ GIM_Reject,
3617 /* 3674 */ // Label 43: @3674
3618 /* 3674 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(3685), // Rule ID 59 //
3619 /* 3679 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
3620 /* 3682 */ // Combiner Rule #48: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
3621 /* 3682 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
3622 /* 3685 */ // Label 242: @3685
3623 /* 3685 */ GIM_Reject,
3624 /* 3686 */ // Label 44: @3686
3625 /* 3686 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(3697), // Rule ID 184 //
3626 /* 3691 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3627 /* 3694 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
3628 /* 3694 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3629 /* 3697 */ // Label 243: @3697
3630 /* 3697 */ GIM_Reject,
3631 /* 3698 */ // Label 45: @3698
3632 /* 3698 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(3709), // Rule ID 185 //
3633 /* 3703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3634 /* 3706 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
3635 /* 3706 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3636 /* 3709 */ // Label 244: @3709
3637 /* 3709 */ GIM_Reject,
3638 /* 3710 */ // Label 46: @3710
3639 /* 3710 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(3721), // Rule ID 186 //
3640 /* 3715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3641 /* 3718 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
3642 /* 3718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3643 /* 3721 */ // Label 245: @3721
3644 /* 3721 */ GIM_Reject,
3645 /* 3722 */ // Label 47: @3722
3646 /* 3722 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(3733), // Rule ID 187 //
3647 /* 3727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3648 /* 3730 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
3649 /* 3730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3650 /* 3733 */ // Label 246: @3733
3651 /* 3733 */ GIM_Reject,
3652 /* 3734 */ // Label 48: @3734
3653 /* 3734 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(3745), // Rule ID 188 //
3654 /* 3739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3655 /* 3742 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
3656 /* 3742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3657 /* 3745 */ // Label 247: @3745
3658 /* 3745 */ GIM_Reject,
3659 /* 3746 */ // Label 49: @3746
3660 /* 3746 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(3757), // Rule ID 189 //
3661 /* 3751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3662 /* 3754 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
3663 /* 3754 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3664 /* 3757 */ // Label 248: @3757
3665 /* 3757 */ GIM_Reject,
3666 /* 3758 */ // Label 50: @3758
3667 /* 3758 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(3769), // Rule ID 190 //
3668 /* 3763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3669 /* 3766 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
3670 /* 3766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3671 /* 3769 */ // Label 249: @3769
3672 /* 3769 */ GIM_Reject,
3673 /* 3770 */ // Label 51: @3770
3674 /* 3770 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(3781), // Rule ID 191 //
3675 /* 3775 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3676 /* 3778 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
3677 /* 3778 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3678 /* 3781 */ // Label 250: @3781
3679 /* 3781 */ GIM_Reject,
3680 /* 3782 */ // Label 52: @3782
3681 /* 3782 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(3793), // Rule ID 192 //
3682 /* 3787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3683 /* 3790 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
3684 /* 3790 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3685 /* 3793 */ // Label 251: @3793
3686 /* 3793 */ GIM_Reject,
3687 /* 3794 */ // Label 53: @3794
3688 /* 3794 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(3805), // Rule ID 193 //
3689 /* 3799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
3690 /* 3802 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
3691 /* 3802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3692 /* 3805 */ // Label 252: @3805
3693 /* 3805 */ GIM_Reject,
3694 /* 3806 */ // Label 54: @3806
3695 /* 3806 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(3817), // Rule ID 94 //
3696 /* 3811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
3697 /* 3814 */ // Combiner Rule #65: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
3698 /* 3814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
3699 /* 3817 */ // Label 253: @3817
3700 /* 3817 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(3828), // Rule ID 194 //
3701 /* 3822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3702 /* 3825 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
3703 /* 3825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3704 /* 3828 */ // Label 254: @3828
3705 /* 3828 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(3851), // Rule ID 136 //
3706 /* 3833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
3707 /* 3836 */ // MIs[0] dst
3708 /* 3836 */ // No operand predicates
3709 /* 3836 */ // MIs[0] x
3710 /* 3836 */ // No operand predicates
3711 /* 3836 */ // MIs[0] y
3712 /* 3836 */ // No operand predicates
3713 /* 3836 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
3714 /* 3840 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3715 /* 3845 */ // Combiner Rule #84: right_identity_neg_zero_fp
3716 /* 3845 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3717 /* 3850 */ GIR_EraseRootFromParent_Done,
3718 /* 3851 */ // Label 255: @3851
3719 /* 3851 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(3880), // Rule ID 137 //
3720 /* 3856 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3721 /* 3859 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
3722 /* 3865 */ // MIs[0] dst
3723 /* 3865 */ // No operand predicates
3724 /* 3865 */ // MIs[0] x
3725 /* 3865 */ // No operand predicates
3726 /* 3865 */ // MIs[0] y
3727 /* 3865 */ // No operand predicates
3728 /* 3865 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
3729 /* 3869 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3730 /* 3874 */ // Combiner Rule #85: right_identity_neg_zero_fp_nsz
3731 /* 3874 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3732 /* 3879 */ GIR_EraseRootFromParent_Done,
3733 /* 3880 */ // Label 256: @3880
3734 /* 3880 */ GIM_Reject,
3735 /* 3881 */ // Label 55: @3881
3736 /* 3881 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(3892), // Rule ID 95 //
3737 /* 3886 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
3738 /* 3889 */ // Combiner Rule #65: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
3739 /* 3889 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
3740 /* 3892 */ // Label 257: @3892
3741 /* 3892 */ GIM_Reject,
3742 /* 3893 */ // Label 56: @3893
3743 /* 3893 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(3904), // Rule ID 96 //
3744 /* 3898 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
3745 /* 3901 */ // Combiner Rule #65: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
3746 /* 3901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
3747 /* 3904 */ // Label 258: @3904
3748 /* 3904 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(3915), // Rule ID 195 //
3749 /* 3909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3750 /* 3912 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
3751 /* 3912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3752 /* 3915 */ // Label 259: @3915
3753 /* 3915 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(3938), // Rule ID 127 //
3754 /* 3920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
3755 /* 3923 */ // MIs[0] dst
3756 /* 3923 */ // No operand predicates
3757 /* 3923 */ // MIs[0] x
3758 /* 3923 */ // No operand predicates
3759 /* 3923 */ // MIs[0] y
3760 /* 3923 */ // No operand predicates
3761 /* 3923 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
3762 /* 3927 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3763 /* 3932 */ // Combiner Rule #77: right_identity_one_fp
3764 /* 3932 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3765 /* 3937 */ GIR_EraseRootFromParent_Done,
3766 /* 3938 */ // Label 260: @3938
3767 /* 3938 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(3958), // Rule ID 138 //
3768 /* 3943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
3769 /* 3946 */ // MIs[0] dst
3770 /* 3946 */ // No operand predicates
3771 /* 3946 */ // MIs[0] x
3772 /* 3946 */ // No operand predicates
3773 /* 3946 */ // MIs[0] y
3774 /* 3946 */ // No operand predicates
3775 /* 3946 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
3776 /* 3950 */ // Combiner Rule #86: right_identity_neg_one_fp
3777 /* 3950 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
3778 /* 3953 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3779 /* 3955 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
3780 /* 3957 */ GIR_EraseRootFromParent_Done,
3781 /* 3958 */ // Label 261: @3958
3782 /* 3958 */ GIM_Reject,
3783 /* 3959 */ // Label 57: @3959
3784 /* 3959 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(3970), // Rule ID 97 //
3785 /* 3964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
3786 /* 3967 */ // Combiner Rule #65: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
3787 /* 3967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
3788 /* 3970 */ // Label 262: @3970
3789 /* 3970 */ GIM_Reject,
3790 /* 3971 */ // Label 58: @3971
3791 /* 3971 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(3992), // Rule ID 15 //
3792 /* 3976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
3793 /* 3979 */ // MIs[0] dst
3794 /* 3979 */ // No operand predicates
3795 /* 3979 */ // MIs[0] src0
3796 /* 3979 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3797 /* 3983 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3798 /* 3987 */ // MIs[1] cst
3799 /* 3987 */ // No operand predicates
3800 /* 3987 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3801 /* 3989 */ // Combiner Rule #15: constant_fold_flog2
3802 /* 3989 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3803 /* 3992 */ // Label 263: @3992
3804 /* 3992 */ GIM_Reject,
3805 /* 3993 */ // Label 59: @3993
3806 /* 3993 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4014), // Rule ID 12 //
3807 /* 3998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
3808 /* 4001 */ // MIs[0] dst
3809 /* 4001 */ // No operand predicates
3810 /* 4001 */ // MIs[0] src0
3811 /* 4001 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3812 /* 4005 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3813 /* 4009 */ // MIs[1] cst
3814 /* 4009 */ // No operand predicates
3815 /* 4009 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3816 /* 4011 */ // Combiner Rule #12: constant_fold_fneg
3817 /* 4011 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3818 /* 4014 */ // Label 264: @4014
3819 /* 4014 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4043), // Rule ID 125 //
3820 /* 4019 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
3821 /* 4022 */ // MIs[0] dst
3822 /* 4022 */ // No operand predicates
3823 /* 4022 */ // MIs[0] t
3824 /* 4022 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3825 /* 4026 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
3826 /* 4030 */ // MIs[1] src
3827 /* 4030 */ // No operand predicates
3828 /* 4030 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3829 /* 4035 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3830 /* 4037 */ // Combiner Rule #75: fneg_fneg_fold
3831 /* 4037 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3832 /* 4042 */ GIR_EraseRootFromParent_Done,
3833 /* 4043 */ // Label 265: @4043
3834 /* 4043 */ GIM_Reject,
3835 /* 4044 */ // Label 60: @4044
3836 /* 4044 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4065), // Rule ID 17 //
3837 /* 4049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
3838 /* 4052 */ // MIs[0] dst
3839 /* 4052 */ // No operand predicates
3840 /* 4052 */ // MIs[0] src0
3841 /* 4052 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3842 /* 4056 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3843 /* 4060 */ // MIs[1] cst
3844 /* 4060 */ // No operand predicates
3845 /* 4060 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3846 /* 4062 */ // Combiner Rule #17: constant_fold_fpext
3847 /* 4062 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3848 /* 4065 */ // Label 266: @4065
3849 /* 4065 */ GIM_Reject,
3850 /* 4066 */ // Label 61: @4066
3851 /* 4066 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4087), // Rule ID 16 //
3852 /* 4071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
3853 /* 4074 */ // MIs[0] dst
3854 /* 4074 */ // No operand predicates
3855 /* 4074 */ // MIs[0] src0
3856 /* 4074 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3857 /* 4078 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3858 /* 4082 */ // MIs[1] cst
3859 /* 4082 */ // No operand predicates
3860 /* 4082 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3861 /* 4084 */ // Combiner Rule #16: constant_fold_fptrunc
3862 /* 4084 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3863 /* 4087 */ // Label 267: @4087
3864 /* 4087 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4108), // Rule ID 135 //
3865 /* 4092 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
3866 /* 4095 */ // MIs[0] dst
3867 /* 4095 */ // No operand predicates
3868 /* 4095 */ // MIs[0] src1
3869 /* 4095 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3870 /* 4099 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
3871 /* 4103 */ // MIs[1] src0
3872 /* 4103 */ // No operand predicates
3873 /* 4103 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3874 /* 4105 */ // Combiner Rule #83: fptrunc_fpext_fold
3875 /* 4105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
3876 /* 4108 */ // Label 268: @4108
3877 /* 4108 */ GIM_Reject,
3878 /* 4109 */ // Label 62: @4109
3879 /* 4109 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4130), // Rule ID 159 //
3880 /* 4114 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
3881 /* 4117 */ // MIs[0] dst
3882 /* 4117 */ // No operand predicates
3883 /* 4117 */ // MIs[0] __unary_undef_to_undef_match_0.x
3884 /* 4117 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3885 /* 4121 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3886 /* 4125 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3887 /* 4127 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
3888 /* 4127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
3889 /* 4130 */ // Label 269: @4130
3890 /* 4130 */ GIM_Reject,
3891 /* 4131 */ // Label 63: @4131
3892 /* 4131 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4152), // Rule ID 160 //
3893 /* 4136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
3894 /* 4139 */ // MIs[0] dst
3895 /* 4139 */ // No operand predicates
3896 /* 4139 */ // MIs[0] __unary_undef_to_undef_match_0.x
3897 /* 4139 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3898 /* 4143 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3899 /* 4147 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3900 /* 4149 */ // Combiner Rule #96: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
3901 /* 4149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
3902 /* 4152 */ // Label 270: @4152
3903 /* 4152 */ GIM_Reject,
3904 /* 4153 */ // Label 64: @4153
3905 /* 4153 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4164), // Rule ID 143 //
3906 /* 4158 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3907 /* 4161 */ // Combiner Rule #90: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
3908 /* 4161 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
3909 /* 4164 */ // Label 271: @4164
3910 /* 4164 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4179), // Rule ID 25 //
3911 /* 4169 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
3912 /* 4172 */ // MIs[0] dst
3913 /* 4172 */ // No operand predicates
3914 /* 4172 */ // MIs[0] Operand 1
3915 /* 4172 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
3916 /* 4176 */ // Combiner Rule #25: itof_const_zero_fold_si
3917 /* 4176 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
3918 /* 4179 */ // Label 272: @4179
3919 /* 4179 */ GIM_Reject,
3920 /* 4180 */ // Label 65: @4180
3921 /* 4180 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4191), // Rule ID 142 //
3922 /* 4185 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
3923 /* 4188 */ // Combiner Rule #90: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
3924 /* 4188 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
3925 /* 4191 */ // Label 273: @4191
3926 /* 4191 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4206), // Rule ID 26 //
3927 /* 4196 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
3928 /* 4199 */ // MIs[0] dst
3929 /* 4199 */ // No operand predicates
3930 /* 4199 */ // MIs[0] Operand 1
3931 /* 4199 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
3932 /* 4203 */ // Combiner Rule #26: itof_const_zero_fold_ui
3933 /* 4203 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
3934 /* 4206 */ // Label 274: @4206
3935 /* 4206 */ GIM_Reject,
3936 /* 4207 */ // Label 66: @4207
3937 /* 4207 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4228), // Rule ID 13 //
3938 /* 4212 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
3939 /* 4215 */ // MIs[0] dst
3940 /* 4215 */ // No operand predicates
3941 /* 4215 */ // MIs[0] src0
3942 /* 4215 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3943 /* 4219 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3944 /* 4223 */ // MIs[1] cst
3945 /* 4223 */ // No operand predicates
3946 /* 4223 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3947 /* 4225 */ // Combiner Rule #13: constant_fold_fabs
3948 /* 4225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3949 /* 4228 */ // Label 275: @4228
3950 /* 4228 */ GIM_Reject,
3951 /* 4229 */ // Label 67: @4229
3952 /* 4229 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4240), // Rule ID 196 //
3953 /* 4234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3954 /* 4237 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
3955 /* 4237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3956 /* 4240 */ // Label 276: @4240
3957 /* 4240 */ GIM_Reject,
3958 /* 4241 */ // Label 68: @4241
3959 /* 4241 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4252), // Rule ID 197 //
3960 /* 4246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3961 /* 4249 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
3962 /* 4249 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3963 /* 4252 */ // Label 277: @4252
3964 /* 4252 */ GIM_Reject,
3965 /* 4253 */ // Label 69: @4253
3966 /* 4253 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4264), // Rule ID 198 //
3967 /* 4258 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3968 /* 4261 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
3969 /* 4261 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3970 /* 4264 */ // Label 278: @4264
3971 /* 4264 */ GIM_Reject,
3972 /* 4265 */ // Label 70: @4265
3973 /* 4265 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4276), // Rule ID 199 //
3974 /* 4270 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3975 /* 4273 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
3976 /* 4273 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3977 /* 4276 */ // Label 279: @4276
3978 /* 4276 */ GIM_Reject,
3979 /* 4277 */ // Label 71: @4277
3980 /* 4277 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4288), // Rule ID 200 //
3981 /* 4282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3982 /* 4285 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
3983 /* 4285 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3984 /* 4288 */ // Label 280: @4288
3985 /* 4288 */ GIM_Reject,
3986 /* 4289 */ // Label 72: @4289
3987 /* 4289 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4300), // Rule ID 201 //
3988 /* 4294 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3989 /* 4297 */ // Combiner Rule #106: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
3990 /* 4297 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3991 /* 4300 */ // Label 281: @4300
3992 /* 4300 */ GIM_Reject,
3993 /* 4301 */ // Label 73: @4301
3994 /* 4301 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4312), // Rule ID 77 //
3995 /* 4306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
3996 /* 4309 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
3997 /* 4309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3998 /* 4312 */ // Label 282: @4312
3999 /* 4312 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4323), // Rule ID 139 //
4000 /* 4317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4001 /* 4320 */ // Combiner Rule #87: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
4002 /* 4320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
4003 /* 4323 */ // Label 283: @4323
4004 /* 4323 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4346), // Rule ID 106 //
4005 /* 4328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
4006 /* 4331 */ // MIs[0] dst
4007 /* 4331 */ // No operand predicates
4008 /* 4331 */ // MIs[0] lhs
4009 /* 4331 */ // No operand predicates
4010 /* 4331 */ // MIs[0] Operand 2
4011 /* 4331 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4012 /* 4335 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4013 /* 4340 */ // Combiner Rule #67: right_identity_zero @ [__right_identity_zero_match_0[7]]
4014 /* 4340 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4015 /* 4345 */ GIR_EraseRootFromParent_Done,
4016 /* 4346 */ // Label 284: @4346
4017 /* 4346 */ GIM_Reject,
4018 /* 4347 */ // Label 74: @4347
4019 /* 4347 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(4358), // Rule ID 90 //
4020 /* 4352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
4021 /* 4355 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_SMIN'
4022 /* 4355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
4023 /* 4358 */ // Label 285: @4358
4024 /* 4358 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(4369), // Rule ID 178 //
4025 /* 4363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
4026 /* 4366 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
4027 /* 4366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
4028 /* 4369 */ // Label 286: @4369
4029 /* 4369 */ GIM_Reject,
4030 /* 4370 */ // Label 75: @4370
4031 /* 4370 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(4381), // Rule ID 91 //
4032 /* 4375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
4033 /* 4378 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_SMAX'
4034 /* 4378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
4035 /* 4381 */ // Label 287: @4381
4036 /* 4381 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(4392), // Rule ID 179 //
4037 /* 4386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
4038 /* 4389 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
4039 /* 4389 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
4040 /* 4392 */ // Label 288: @4392
4041 /* 4392 */ GIM_Reject,
4042 /* 4393 */ // Label 76: @4393
4043 /* 4393 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(4404), // Rule ID 92 //
4044 /* 4398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
4045 /* 4401 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_UMIN'
4046 /* 4401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
4047 /* 4404 */ // Label 289: @4404
4048 /* 4404 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(4415), // Rule ID 180 //
4049 /* 4409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
4050 /* 4412 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
4051 /* 4412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
4052 /* 4415 */ // Label 290: @4415
4053 /* 4415 */ GIM_Reject,
4054 /* 4416 */ // Label 77: @4416
4055 /* 4416 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(4427), // Rule ID 93 //
4056 /* 4421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
4057 /* 4424 */ // Combiner Rule #64: constant_fold_binop; wip_match_opcode 'G_UMAX'
4058 /* 4424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
4059 /* 4427 */ // Label 291: @4427
4060 /* 4427 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(4438), // Rule ID 181 //
4061 /* 4432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
4062 /* 4435 */ // Combiner Rule #105: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
4063 /* 4435 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
4064 /* 4438 */ // Label 292: @4438
4065 /* 4438 */ GIM_Reject,
4066 /* 4439 */ // Label 78: @4439
4067 /* 4439 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(4450), // Rule ID 153 //
4068 /* 4444 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
4069 /* 4447 */ // Combiner Rule #95: unary_undef_to_zero; wip_match_opcode 'G_ABS'
4070 /* 4447 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
4071 /* 4450 */ // Label 293: @4450
4072 /* 4450 */ GIM_Reject,
4073 /* 4451 */ // Label 79: @4451
4074 /* 4451 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(4462), // Rule ID 168 //
4075 /* 4456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4076 /* 4459 */ // Combiner Rule #101: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
4077 /* 4459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
4078 /* 4462 */ // Label 294: @4462
4079 /* 4462 */ GIM_Reject,
4080 /* 4463 */ // Label 80: @4463
4081 /* 4463 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(4474), // Rule ID 44 //
4082 /* 4468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
4083 /* 4471 */ // Combiner Rule #37: extractvecelt_pairwise_add; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
4084 /* 4471 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4085 /* 4474 */ // Label 295: @4474
4086 /* 4474 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(4485), // Rule ID 169 //
4087 /* 4479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4088 /* 4482 */ // Combiner Rule #101: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
4089 /* 4482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
4090 /* 4485 */ // Label 296: @4485
4091 /* 4485 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(4496), // Rule ID 202 //
4092 /* 4490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4093 /* 4493 */ // Combiner Rule #107: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
4094 /* 4493 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
4095 /* 4496 */ // Label 297: @4496
4096 /* 4496 */ GIM_Reject,
4097 /* 4497 */ // Label 81: @4497
4098 /* 4497 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(4508), // Rule ID 164 //
4099 /* 4502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4100 /* 4505 */ // Combiner Rule #98: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
4101 /* 4505 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4102 /* 4508 */ // Label 298: @4508
4103 /* 4508 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(4519), // Rule ID 166 //
4104 /* 4513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
4105 /* 4516 */ // Combiner Rule #99: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
4106 /* 4516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
4107 /* 4519 */ // Label 299: @4519
4108 /* 4519 */ GIM_Reject,
4109 /* 4520 */ // Label 82: @4520
4110 /* 4520 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(4541), // Rule ID 18 //
4111 /* 4525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4112 /* 4528 */ // MIs[0] dst
4113 /* 4528 */ // No operand predicates
4114 /* 4528 */ // MIs[0] src0
4115 /* 4528 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4116 /* 4532 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4117 /* 4536 */ // MIs[1] cst
4118 /* 4536 */ // No operand predicates
4119 /* 4536 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4120 /* 4538 */ // Combiner Rule #18: constant_fold_fceil
4121 /* 4538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4122 /* 4541 */ // Label 300: @4541
4123 /* 4541 */ GIM_Reject,
4124 /* 4542 */ // Label 83: @4542
4125 /* 4542 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(4563), // Rule ID 14 //
4126 /* 4547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4127 /* 4550 */ // MIs[0] dst
4128 /* 4550 */ // No operand predicates
4129 /* 4550 */ // MIs[0] src0
4130 /* 4550 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4131 /* 4554 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4132 /* 4558 */ // MIs[1] cst
4133 /* 4558 */ // No operand predicates
4134 /* 4558 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4135 /* 4560 */ // Combiner Rule #14: constant_fold_fsqrt
4136 /* 4560 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4137 /* 4563 */ // Label 301: @4563
4138 /* 4563 */ GIM_Reject,
4139 /* 4564 */ // Label 84: @4564
4140 /* 4564 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(4585), // Rule ID 19 //
4141 /* 4569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4142 /* 4572 */ // MIs[0] dst
4143 /* 4572 */ // No operand predicates
4144 /* 4572 */ // MIs[0] src0
4145 /* 4572 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4146 /* 4576 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4147 /* 4580 */ // MIs[1] cst
4148 /* 4580 */ // No operand predicates
4149 /* 4580 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4150 /* 4582 */ // Combiner Rule #19: constant_fold_ffloor
4151 /* 4582 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4152 /* 4585 */ // Label 302: @4585
4153 /* 4585 */ GIM_Reject,
4154 /* 4586 */ // Label 85: @4586
4155 /* 4586 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(4607), // Rule ID 23 //
4156 /* 4591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
4157 /* 4594 */ // MIs[0] dst
4158 /* 4594 */ // No operand predicates
4159 /* 4594 */ // MIs[0] src0
4160 /* 4594 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4161 /* 4598 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4162 /* 4602 */ // MIs[1] cst
4163 /* 4602 */ // No operand predicates
4164 /* 4602 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4165 /* 4604 */ // Combiner Rule #23: constant_fold_frint
4166 /* 4604 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4167 /* 4607 */ // Label 303: @4607
4168 /* 4607 */ GIM_Reject,
4169 /* 4608 */ // Label 86: @4608
4170 /* 4608 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(4629), // Rule ID 24 //
4171 /* 4613 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
4172 /* 4616 */ // MIs[0] dst
4173 /* 4616 */ // No operand predicates
4174 /* 4616 */ // MIs[0] src0
4175 /* 4616 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4176 /* 4620 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4177 /* 4624 */ // MIs[1] cst
4178 /* 4624 */ // No operand predicates
4179 /* 4624 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4180 /* 4626 */ // Combiner Rule #24: constant_fold_fnearbyint
4181 /* 4626 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4182 /* 4629 */ // Label 304: @4629
4183 /* 4629 */ GIM_Reject,
4184 /* 4630 */ // Label 87: @4630
4185 /* 4630 */ GIM_Reject,
4186 /* 4631 */ }; // Size: 4631 bytes
4187 return MatchTable0;
4188}
4189#undef GIMT_Encode2
4190#undef GIMT_Encode4
4191#undef GIMT_Encode8
4192
4193
4194#endif // GET_GICOMBINER_IMPL
4195
4196#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
4197
4198AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
4199AvailableFunctionFeatures()
4200
4201#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
4202
4203#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
4204
4205, State(0),
4206ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
4207
4208#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
4209
4210