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