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