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