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