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: // 6 strings to match.
37 switch (RuleIdentifier[0]) {
38 default: break;
39 case 'a': // 1 string to match.
40 if (memcmp(RuleIdentifier.data()+1, "dd_shift", 8) != 0)
41 break;
42 return 238; // "add_shift"
43 case 'c': // 1 string to match.
44 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
45 break;
46 return 15; // "copy_prop"
47 case 'm': // 3 strings to match.
48 switch (RuleIdentifier[1]) {
49 default: break;
50 case 'a': // 1 string to match.
51 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
52 break;
53 return 209; // "match_ors"
54 case 'u': // 2 strings to match.
55 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
56 break;
57 switch (RuleIdentifier[8]) {
58 default: break;
59 case '0': // 1 string to match.
60 return 155; // "mulo_by_0"
61 case '2': // 1 string to match.
62 return 154; // "mulo_by_2"
63 }
64 break;
65 }
66 break;
67 case 'n': // 1 string to match.
68 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
69 break;
70 return 214; // "nneg_zext"
71 }
72 break;
73 case 10: // 7 strings to match.
74 switch (RuleIdentifier[0]) {
75 default: break;
76 case 'i': // 1 string to match.
77 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
78 break;
79 return 91; // "i2p_to_p2i"
80 case 'm': // 2 strings to match.
81 switch (RuleIdentifier[1]) {
82 default: break;
83 case 'a': // 1 string to match.
84 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
85 break;
86 return 208; // "match_ands"
87 case 'u': // 1 string to match.
88 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
89 break;
90 return 16; // "mul_to_shl"
91 }
92 break;
93 case 'p': // 1 string to match.
94 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
95 break;
96 return 90; // "p2i_to_i2p"
97 case 's': // 2 strings to match.
98 switch (RuleIdentifier[1]) {
99 default: break;
100 case 'e': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+2, "xt_trunc", 8) != 0)
102 break;
103 return 212; // "sext_trunc"
104 case 'u': // 1 string to match.
105 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
106 break;
107 return 17; // "sub_to_add"
108 }
109 break;
110 case 'z': // 1 string to match.
111 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
112 break;
113 return 213; // "zext_trunc"
114 }
115 break;
116 case 11: // 8 strings to match.
117 switch (RuleIdentifier[0]) {
118 default: break;
119 case 'a': // 1 string to match.
120 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
121 break;
122 return 96; // "add_sub_reg"
123 case 'm': // 1 string to match.
124 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
125 break;
126 return 229; // "match_addos"
127 case 's': // 1 string to match.
128 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
129 break;
130 return 203; // "sub_add_reg"
131 case 't': // 4 strings to match.
132 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
133 break;
134 switch (RuleIdentifier[6]) {
135 default: break;
136 case 's': // 3 strings to match.
137 switch (RuleIdentifier[7]) {
138 default: break;
139 case 'h': // 1 string to match.
140 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
141 break;
142 return 134; // "trunc_shift"
143 case 's': // 2 strings to match.
144 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
145 break;
146 switch (RuleIdentifier[10]) {
147 default: break;
148 case 's': // 1 string to match.
149 return 231; // "trunc_ssats"
150 case 'u': // 1 string to match.
151 return 232; // "trunc_ssatu"
152 }
153 break;
154 }
155 break;
156 case 'u': // 1 string to match.
157 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
158 break;
159 return 233; // "trunc_usatu"
160 }
161 break;
162 case 'u': // 1 string to match.
163 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
164 break;
165 return 222; // "unmerge_cst"
166 }
167 break;
168 case 12: // 12 strings to match.
169 switch (RuleIdentifier[0]) {
170 default: break;
171 case 'A': // 1 string to match.
172 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
173 break;
174 return 4; // "APlusBMinusB"
175 case 'B': // 1 string to match.
176 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
177 break;
178 return 5; // "BMinusAPlusA"
179 case 'a': // 1 string to match.
180 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
181 break;
182 return 156; // "adde_to_addo"
183 case 'c': // 1 string to match.
184 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
185 break;
186 return 236; // "ctlz_to_ctls"
187 case 'f': // 1 string to match.
188 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
189 break;
190 return 205; // "fsub_to_fneg"
191 case 'm': // 1 string to match.
192 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
193 break;
194 return 184; // "mulh_to_lshr"
195 case 'n': // 1 string to match.
196 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
197 break;
198 return 135; // "not_cmp_fold"
199 case 'r': // 1 string to match.
200 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
201 break;
202 return 130; // "redundant_or"
203 case 's': // 2 strings to match.
204 switch (RuleIdentifier[1]) {
205 default: break;
206 case 'd': // 1 string to match.
207 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
208 break;
209 return 199; // "sdiv_by_pow2"
210 case 'e': // 1 string to match.
211 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
212 break;
213 return 50; // "sext_of_sext"
214 }
215 break;
216 case 'u': // 1 string to match.
217 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
218 break;
219 return 198; // "udiv_by_pow2"
220 case 'z': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
222 break;
223 return 48; // "zext_of_zext"
224 }
225 break;
226 case 13: // 15 strings to match.
227 switch (RuleIdentifier[0]) {
228 default: break;
229 case 'a': // 1 string to match.
230 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
231 break;
232 return 39; // "add_of_vscale"
233 case 'c': // 1 string to match.
234 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
235 break;
236 return 174; // "commute_shift"
237 case 'l': // 1 string to match.
238 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
239 break;
240 return 71; // "load_and_mask"
241 case 'm': // 3 strings to match.
242 switch (RuleIdentifier[1]) {
243 default: break;
244 case 'a': // 1 string to match.
245 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
246 break;
247 return 127; // "match_selects"
248 case 'e': // 1 string to match.
249 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
250 break;
251 return 221; // "merge_unmerge"
252 case 'u': // 1 string to match.
253 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
254 break;
255 return 40; // "mul_of_vscale"
256 }
257 break;
258 case 'r': // 1 string to match.
259 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
260 break;
261 return 128; // "redundant_and"
262 case 's': // 4 strings to match.
263 switch (RuleIdentifier[1]) {
264 default: break;
265 case 'd': // 1 string to match.
266 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
267 break;
268 return 201; // "sdiv_by_const"
269 case 'h': // 1 string to match.
270 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
271 break;
272 return 41; // "shl_of_vscale"
273 case 'r': // 1 string to match.
274 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
275 break;
276 return 197; // "srem_by_const"
277 case 'u': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+2, "b_of_vscale", 11) != 0)
279 break;
280 return 42; // "sub_of_vscale"
281 }
282 break;
283 case 'u': // 4 strings to match.
284 switch (RuleIdentifier[1]) {
285 default: break;
286 case 'd': // 1 string to match.
287 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
288 break;
289 return 200; // "udiv_by_const"
290 case 'n': // 2 strings to match.
291 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
292 break;
293 switch (RuleIdentifier[8]) {
294 default: break;
295 case 'm': // 1 string to match.
296 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
297 break;
298 return 220; // "unmerge_merge"
299 case 'u': // 1 string to match.
300 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
301 break;
302 return 223; // "unmerge_undef"
303 }
304 break;
305 case 'r': // 1 string to match.
306 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
307 break;
308 return 196; // "urem_by_const"
309 }
310 break;
311 }
312 break;
313 case 14: // 15 strings to match.
314 switch (RuleIdentifier[0]) {
315 default: break;
316 case 'A': // 2 strings to match.
317 switch (RuleIdentifier[1]) {
318 default: break;
319 case 'M': // 1 string to match.
320 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
321 break;
322 return 14; // "AMinusC1PlusC2"
323 case 'P': // 1 string to match.
324 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
325 break;
326 return 10; // "APlusC1MinusC2"
327 }
328 break;
329 case 'C': // 1 string to match.
330 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
331 break;
332 return 11; // "C2MinusAPlusC1"
333 case 'a': // 2 strings to match.
334 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
335 break;
336 switch (RuleIdentifier[10]) {
337 default: break;
338 case 's': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
340 break;
341 return 54; // "anyext_of_sext"
342 case 'z': // 1 string to match.
343 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
344 break;
345 return 53; // "anyext_of_zext"
346 }
347 break;
348 case 'b': // 2 strings to match.
349 if (RuleIdentifier[1] != 'i')
350 break;
351 switch (RuleIdentifier[2]) {
352 default: break;
353 case 'n': // 1 string to match.
354 if (memcmp(RuleIdentifier.data()+3, "op_same_val", 11) != 0)
355 break;
356 return 87; // "binop_same_val"
357 case 't': // 1 string to match.
358 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
359 break;
360 return 172; // "bitreverse_shl"
361 }
362 break;
363 case 'f': // 2 strings to match.
364 switch (RuleIdentifier[1]) {
365 default: break;
366 case 'a': // 1 string to match.
367 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
368 break;
369 return 183; // "fabs_fneg_fold"
370 case 'n': // 1 string to match.
371 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
372 break;
373 return 93; // "fneg_fneg_fold"
374 }
375 break;
376 case 'm': // 1 string to match.
377 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
378 break;
379 return 19; // "mul_by_neg_one"
380 case 'r': // 1 string to match.
381 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
382 break;
383 return 109; // "reassoc_ptradd"
384 case 's': // 3 strings to match.
385 switch (RuleIdentifier[1]) {
386 default: break;
387 case 'e': // 2 strings to match.
388 switch (RuleIdentifier[2]) {
389 default: break;
390 case 'l': // 1 string to match.
391 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
392 break;
393 return 56; // "select_of_zext"
394 case 'x': // 1 string to match.
395 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
396 break;
397 return 51; // "sext_of_anyext"
398 }
399 break;
400 case 'h': // 1 string to match.
401 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
402 break;
403 return 108; // "shifts_too_big"
404 }
405 break;
406 case 'z': // 1 string to match.
407 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
408 break;
409 return 49; // "zext_of_anyext"
410 }
411 break;
412 case 15: // 12 strings to match.
413 switch (RuleIdentifier[0]) {
414 default: break;
415 case 'A': // 2 strings to match.
416 switch (RuleIdentifier[1]) {
417 default: break;
418 case 'M': // 1 string to match.
419 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
420 break;
421 return 12; // "AMinusC1MinusC2"
422 case 'P': // 1 string to match.
423 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
424 break;
425 return 3; // "APlusZeroMinusB"
426 }
427 break;
428 case 'C': // 1 string to match.
429 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
430 break;
431 return 13; // "C1Minus2MinusC2"
432 case 'Z': // 1 string to match.
433 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
434 break;
435 return 2; // "ZeroMinusAPlusB"
436 case 'b': // 1 string to match.
437 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
438 break;
439 return 173; // "bitreverse_lshr"
440 case 'e': // 1 string to match.
441 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
442 break;
443 return 70; // "extending_loads"
444 case 'i': // 1 string to match.
445 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
446 break;
447 return 20; // "idempotent_prop"
448 case 'l': // 1 string to match.
449 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
450 break;
451 return 163; // "load_or_combine"
452 case 'n': // 1 string to match.
453 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
454 break;
455 return 64; // "narrow_binop_or"
456 case 'o': // 1 string to match.
457 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
458 break;
459 return 153; // "overlapping_and"
460 case 's': // 1 string to match.
461 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
462 break;
463 return 85; // "select_same_val"
464 case 'z': // 1 string to match.
465 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
466 break;
467 return 132; // "zext_trunc_fold"
468 }
469 break;
470 case 16: // 12 strings to match.
471 switch (RuleIdentifier[0]) {
472 default: break;
473 case 'a': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
475 break;
476 return 52; // "anyext_of_anyext"
477 case 'n': // 5 strings to match.
478 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
479 break;
480 switch (RuleIdentifier[13]) {
481 default: break;
482 case 'a': // 2 strings to match.
483 switch (RuleIdentifier[14]) {
484 default: break;
485 case 'd': // 1 string to match.
486 if (RuleIdentifier[15] != 'd')
487 break;
488 return 60; // "narrow_binop_add"
489 case 'n': // 1 string to match.
490 if (RuleIdentifier[15] != 'd')
491 break;
492 return 63; // "narrow_binop_and"
493 }
494 break;
495 case 'm': // 1 string to match.
496 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
497 break;
498 return 62; // "narrow_binop_mul"
499 case 's': // 1 string to match.
500 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
501 break;
502 return 61; // "narrow_binop_sub"
503 case 'x': // 1 string to match.
504 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
505 break;
506 return 65; // "narrow_binop_xor"
507 }
508 break;
509 case 's': // 3 strings to match.
510 if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
511 break;
512 switch (RuleIdentifier[7]) {
513 default: break;
514 case 'o': // 1 string to match.
515 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
516 break;
517 return 57; // "select_of_anyext"
518 case 't': // 1 string to match.
519 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
520 break;
521 return 204; // "select_to_minmax"
522 case 'u': // 1 string to match.
523 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
524 break;
525 return 124; // "select_undef_cmp"
526 }
527 break;
528 case 't': // 2 strings to match.
529 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
530 break;
531 switch (RuleIdentifier[12]) {
532 default: break;
533 case 's': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
535 break;
536 return 46; // "truncate_of_sext"
537 case 'z': // 1 string to match.
538 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
539 break;
540 return 45; // "truncate_of_zext"
541 }
542 break;
543 case 'u': // 1 string to match.
544 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
545 break;
546 return 73; // "undef_to_fp_zero"
547 }
548 break;
549 case 17: // 14 strings to match.
550 switch (RuleIdentifier[0]) {
551 default: break;
552 case 'A': // 2 strings to match.
553 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
554 break;
555 switch (RuleIdentifier[11]) {
556 default: break;
557 case 'A': // 1 string to match.
558 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
559 break;
560 return 8; // "APlusBMinusAplusC"
561 case 'C': // 1 string to match.
562 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
563 break;
564 return 9; // "APlusBMinusCPlusA"
565 }
566 break;
567 case 'a': // 2 strings to match.
568 switch (RuleIdentifier[1]) {
569 default: break;
570 case 'd': // 1 string to match.
571 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
572 break;
573 return 18; // "add_p2i_to_ptradd"
574 case 'n': // 1 string to match.
575 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
576 break;
577 return 92; // "anyext_trunc_fold"
578 }
579 break;
580 case 'c': // 3 strings to match.
581 switch (RuleIdentifier[1]) {
582 default: break;
583 case 'a': // 2 strings to match.
584 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
585 break;
586 switch (RuleIdentifier[13]) {
587 default: break;
588 case 'f': // 1 string to match.
589 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
590 break;
591 return 113; // "canonicalize_fcmp"
592 case 'i': // 1 string to match.
593 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
594 break;
595 return 112; // "canonicalize_icmp"
596 }
597 break;
598 case 'o': // 1 string to match.
599 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fma", 15) != 0)
600 break;
601 return 181; // "constant_fold_fma"
602 }
603 break;
604 case 'd': // 1 string to match.
605 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
606 break;
607 return 164; // "div_rem_to_divrem"
608 case 'e': // 1 string to match.
609 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
610 break;
611 return 83; // "erase_undef_store"
612 case 'p': // 1 string to match.
613 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
614 break;
615 return 160; // "ptr_add_with_zero"
616 case 's': // 2 strings to match.
617 switch (RuleIdentifier[1]) {
618 default: break;
619 case 'e': // 1 string to match.
620 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
621 break;
622 return 126; // "select_to_iminmax"
623 case 'h': // 1 string to match.
624 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
625 break;
626 return 161; // "shift_immed_chain"
627 }
628 break;
629 case 'u': // 2 strings to match.
630 switch (RuleIdentifier[1]) {
631 default: break;
632 case 'n': // 1 string to match.
633 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
634 break;
635 return 74; // "undef_to_int_zero"
636 case 'r': // 1 string to match.
637 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
638 break;
639 return 131; // "urem_pow2_to_mask"
640 }
641 break;
642 }
643 break;
644 case 18: // 13 strings to match.
645 switch (RuleIdentifier[0]) {
646 default: break;
647 case 'A': // 3 strings to match.
648 switch (RuleIdentifier[1]) {
649 default: break;
650 case 'M': // 2 strings to match.
651 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
652 break;
653 switch (RuleIdentifier[11]) {
654 default: break;
655 case 'B': // 1 string to match.
656 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
657 break;
658 return 7; // "AMinusBPlusBMinusC"
659 case 'C': // 1 string to match.
660 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
661 break;
662 return 6; // "AMinusBPlusCMinusA"
663 }
664 break;
665 case 'P': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
667 break;
668 return 0; // "APlusBMinusCMinusB"
669 }
670 break;
671 case 'b': // 1 string to match.
672 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
673 break;
674 return 88; // "binop_left_to_zero"
675 case 'c': // 3 strings to match.
676 if (RuleIdentifier[1] != 'o')
677 break;
678 switch (RuleIdentifier[2]) {
679 default: break;
680 case 'm': // 1 string to match.
681 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
682 break;
683 return 157; // "combine_minmax_nan"
684 case 'n': // 2 strings to match.
685 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
686 break;
687 switch (RuleIdentifier[15]) {
688 default: break;
689 case 'a': // 1 string to match.
690 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
691 break;
692 return 138; // "constant_fold_fabs"
693 case 'n': // 1 string to match.
694 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
695 break;
696 return 137; // "constant_fold_fneg"
697 }
698 break;
699 }
700 break;
701 case 'e': // 1 string to match.
702 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
703 break;
704 return 158; // "expand_const_fpowi"
705 case 'f': // 2 strings to match.
706 switch (RuleIdentifier[1]) {
707 default: break;
708 case 'o': // 1 string to match.
709 if (memcmp(RuleIdentifier.data()+2, "ld_global_offset", 16) != 0)
710 break;
711 return 240; // "fold_global_offset"
712 case 'p': // 1 string to match.
713 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
714 break;
715 return 101; // "fptrunc_fpext_fold"
716 }
717 break;
718 case 's': // 2 strings to match.
719 if (RuleIdentifier[1] != 'e')
720 break;
721 switch (RuleIdentifier[2]) {
722 default: break;
723 case 'l': // 1 string to match.
724 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
725 break;
726 return 58; // "select_of_truncate"
727 case 'x': // 1 string to match.
728 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
729 break;
730 return 121; // "sext_inreg_of_load"
731 }
732 break;
733 case 't': // 1 string to match.
734 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
735 break;
736 return 47; // "truncate_of_anyext"
737 }
738 break;
739 case 19: // 20 strings to match.
740 switch (RuleIdentifier[0]) {
741 default: break;
742 case 'A': // 1 string to match.
743 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
744 break;
745 return 1; // "AMinusBMinusCMinusC"
746 case 'b': // 1 string to match.
747 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
748 break;
749 return 89; // "binop_right_to_zero"
750 case 'c': // 7 strings to match.
751 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
752 break;
753 switch (RuleIdentifier[5]) {
754 default: break;
755 case '_': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
757 break;
758 return 152; // "const_ptradd_to_i2p"
759 case 'a': // 6 strings to match.
760 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
761 break;
762 switch (RuleIdentifier[14]) {
763 default: break;
764 case 'b': // 1 string to match.
765 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
766 break;
767 return 179; // "constant_fold_binop"
768 case 'f': // 5 strings to match.
769 switch (RuleIdentifier[15]) {
770 default: break;
771 case 'c': // 1 string to match.
772 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
773 break;
774 return 143; // "constant_fold_fceil"
775 case 'l': // 1 string to match.
776 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
777 break;
778 return 140; // "constant_fold_flog2"
779 case 'p': // 1 string to match.
780 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
781 break;
782 return 142; // "constant_fold_fpext"
783 case 'r': // 1 string to match.
784 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
785 break;
786 return 148; // "constant_fold_frint"
787 case 's': // 1 string to match.
788 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
789 break;
790 return 139; // "constant_fold_fsqrt"
791 }
792 break;
793 }
794 break;
795 }
796 break;
797 case 'e': // 2 strings to match.
798 if (memcmp(RuleIdentifier.data()+1, "xt", 2) != 0)
799 break;
800 switch (RuleIdentifier[3]) {
801 default: break;
802 case '_': // 1 string to match.
803 if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv", 15) != 0)
804 break;
805 return 242; // "ext_uaddv_to_uaddlv"
806 case 'e': // 1 string to match.
807 if (memcmp(RuleIdentifier.data()+4, "nd_through_phis", 15) != 0)
808 break;
809 return 105; // "extend_through_phis"
810 }
811 break;
812 case 'i': // 1 string to match.
813 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
814 break;
815 return 66; // "integer_of_truncate"
816 case 'm': // 1 string to match.
817 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
818 break;
819 return 227; // "merge_of_x_and_zero"
820 case 'p': // 1 string to match.
821 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
822 break;
823 return 111; // "ptr_add_immed_chain"
824 case 'r': // 2 strings to match.
825 switch (RuleIdentifier[1]) {
826 default: break;
827 case 'e': // 1 string to match.
828 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
829 break;
830 return 110; // "reassoc_comm_binops"
831 case 'i': // 1 string to match.
832 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
833 break;
834 return 86; // "right_identity_zero"
835 }
836 break;
837 case 's': // 3 strings to match.
838 switch (RuleIdentifier[1]) {
839 default: break;
840 case 'e': // 1 string to match.
841 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
842 break;
843 return 125; // "select_constant_cmp"
844 case 'i': // 2 strings to match.
845 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
846 break;
847 switch (RuleIdentifier[9]) {
848 default: break;
849 case 'a': // 1 string to match.
850 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
851 break;
852 return 106; // "simplify_add_to_sub"
853 case 'n': // 1 string to match.
854 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
855 break;
856 return 210; // "simplify_neg_minmax"
857 }
858 break;
859 }
860 break;
861 case 'u': // 1 string to match.
862 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
863 break;
864 return 78; // "unary_undef_to_zero"
865 }
866 break;
867 case 20: // 9 strings to match.
868 switch (RuleIdentifier[0]) {
869 default: break;
870 case 'a': // 1 string to match.
871 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
872 break;
873 return 186; // "and_or_disjoint_mask"
874 case 'b': // 1 string to match.
875 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
876 break;
877 return 100; // "bitcast_bitcast_fold"
878 case 'c': // 1 string to match.
879 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
880 break;
881 return 144; // "constant_fold_ffloor"
882 case 'i': // 1 string to match.
883 if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc", 19) != 0)
884 break;
885 return 239; // "icmp_redundant_trunc"
886 case 'm': // 1 string to match.
887 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
888 break;
889 return 226; // "merge_of_x_and_undef"
890 case 'r': // 2 strings to match.
891 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
892 break;
893 switch (RuleIdentifier[4]) {
894 default: break;
895 case 'c': // 1 string to match.
896 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
897 break;
898 return 122; // "reduce_shl_of_extend"
899 case 'n': // 1 string to match.
900 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
901 break;
902 return 129; // "redundant_sext_inreg"
903 }
904 break;
905 case 'u': // 2 strings to match.
906 if (RuleIdentifier[1] != 'n')
907 break;
908 switch (RuleIdentifier[2]) {
909 default: break;
910 case 'a': // 1 string to match.
911 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
912 break;
913 return 79; // "unary_undef_to_undef"
914 case 'm': // 1 string to match.
915 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
916 break;
917 return 225; // "unmerge_zext_to_zext"
918 }
919 break;
920 }
921 break;
922 case 21: // 17 strings to match.
923 switch (RuleIdentifier[0]) {
924 default: break;
925 case 'c': // 4 strings to match.
926 if (RuleIdentifier[1] != 'o')
927 break;
928 switch (RuleIdentifier[2]) {
929 default: break;
930 case 'm': // 2 strings to match.
931 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
932 break;
933 switch (RuleIdentifier[8]) {
934 default: break;
935 case 'b': // 1 string to match.
936 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
937 break;
938 return 228; // "combine_build_unmerge"
939 case 'c': // 1 string to match.
940 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
941 break;
942 return 211; // "combine_concat_vector"
943 }
944 break;
945 case 'n': // 2 strings to match.
946 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
947 break;
948 switch (RuleIdentifier[14]) {
949 default: break;
950 case 'c': // 1 string to match.
951 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
952 break;
953 return 182; // "constant_fold_cast_op"
954 case 'f': // 1 string to match.
955 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
956 break;
957 return 141; // "constant_fold_fptrunc"
958 }
959 break;
960 }
961 break;
962 case 'e': // 1 string to match.
963 if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv", 20) != 0)
964 break;
965 return 241; // "ext_addv_to_udot_addv"
966 case 'f': // 1 string to match.
967 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
968 break;
969 return 202; // "fdiv_repeated_divison"
970 case 'i': // 1 string to match.
971 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
972 break;
973 return 26; // "insert_vector_elt_oob"
974 case 'l': // 1 string to match.
975 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
976 break;
977 return 235; // "lshr_of_trunc_of_lshr"
978 case 'p': // 6 strings to match.
979 if (memcmp(RuleIdentifier.data()+1, "ush_", 4) != 0)
980 break;
981 switch (RuleIdentifier[5]) {
982 default: break;
983 case 'a': // 2 strings to match.
984 if (memcmp(RuleIdentifier.data()+6, "dd_through_", 11) != 0)
985 break;
986 switch (RuleIdentifier[17]) {
987 default: break;
988 case 's': // 1 string to match.
989 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
990 break;
991 return 247; // "push_add_through_sext"
992 case 'z': // 1 string to match.
993 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
994 break;
995 return 244; // "push_add_through_zext"
996 }
997 break;
998 case 'm': // 2 strings to match.
999 if (memcmp(RuleIdentifier.data()+6, "ul_through_", 11) != 0)
1000 break;
1001 switch (RuleIdentifier[17]) {
1002 default: break;
1003 case 's': // 1 string to match.
1004 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1005 break;
1006 return 248; // "push_mul_through_sext"
1007 case 'z': // 1 string to match.
1008 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1009 break;
1010 return 245; // "push_mul_through_zext"
1011 }
1012 break;
1013 case 's': // 2 strings to match.
1014 if (memcmp(RuleIdentifier.data()+6, "ub_through_", 11) != 0)
1015 break;
1016 switch (RuleIdentifier[17]) {
1017 default: break;
1018 case 's': // 1 string to match.
1019 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1020 break;
1021 return 246; // "push_sub_through_sext"
1022 case 'z': // 1 string to match.
1023 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1024 break;
1025 return 243; // "push_sub_through_zext"
1026 }
1027 break;
1028 }
1029 break;
1030 case 'r': // 1 string to match.
1031 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1032 break;
1033 return 95; // "right_identity_one_fp"
1034 case 'u': // 2 strings to match.
1035 if (RuleIdentifier[1] != 'n')
1036 break;
1037 switch (RuleIdentifier[2]) {
1038 default: break;
1039 case 'd': // 1 string to match.
1040 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1041 break;
1042 return 75; // "undef_to_negative_one"
1043 case 'm': // 1 string to match.
1044 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1045 break;
1046 return 224; // "unmerge_dead_to_trunc"
1047 }
1048 break;
1049 }
1050 break;
1051 case 22: // 13 strings to match.
1052 switch (RuleIdentifier[0]) {
1053 default: break;
1054 case 'c': // 2 strings to match.
1055 if (RuleIdentifier[1] != 'o')
1056 break;
1057 switch (RuleIdentifier[2]) {
1058 default: break;
1059 case 'm': // 1 string to match.
1060 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1061 break;
1062 return 215; // "combine_shuffle_concat"
1063 case 'n': // 1 string to match.
1064 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1065 break;
1066 return 180; // "constant_fold_fp_binop"
1067 }
1068 break;
1069 case 'f': // 4 strings to match.
1070 switch (RuleIdentifier[1]) {
1071 default: break;
1072 case 'o': // 1 string to match.
1073 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1074 break;
1075 return 195; // "fold_binop_into_select"
1076 case 'u': // 3 strings to match.
1077 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1078 break;
1079 switch (RuleIdentifier[13]) {
1080 default: break;
1081 case 'l': // 1 string to match.
1082 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1083 break;
1084 return 168; // "funnel_shift_left_zero"
1085 case 'o': // 1 string to match.
1086 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1087 break;
1088 return 169; // "funnel_shift_overshift"
1089 case 't': // 1 string to match.
1090 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1091 break;
1092 return 166; // "funnel_shift_to_rotate"
1093 }
1094 break;
1095 }
1096 break;
1097 case 'i': // 1 string to match.
1098 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1099 break;
1100 return 115; // "icmp_to_lhs_known_bits"
1101 case 'm': // 1 string to match.
1102 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1103 break;
1104 return 230; // "match_subo_no_overflow"
1105 case 'p': // 1 string to match.
1106 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1107 break;
1108 return 80; // "propagate_undef_any_op"
1109 case 'r': // 2 strings to match.
1110 switch (RuleIdentifier[1]) {
1111 default: break;
1112 case 'e': // 1 string to match.
1113 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1114 break;
1115 return 185; // "redundant_neg_operands"
1116 case 'i': // 1 string to match.
1117 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1118 break;
1119 return 94; // "right_identity_one_int"
1120 }
1121 break;
1122 case 's': // 1 string to match.
1123 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1124 break;
1125 return 119; // "shl_ashr_to_sext_inreg"
1126 case 't': // 1 string to match.
1127 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1128 break;
1129 return 98; // "trunc_buildvector_fold"
1130 }
1131 break;
1132 case 23: // 7 strings to match.
1133 switch (RuleIdentifier[0]) {
1134 default: break;
1135 case 'b': // 1 string to match.
1136 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1137 break;
1138 return 59; // "buildvector_of_truncate"
1139 case 'c': // 1 string to match.
1140 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1141 break;
1142 return 237; // "ctlz_zero_undef_to_ctls"
1143 case 'f': // 1 string to match.
1144 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1145 break;
1146 return 167; // "funnel_shift_right_zero"
1147 case 'i': // 2 strings to match.
1148 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1149 break;
1150 switch (RuleIdentifier[21]) {
1151 default: break;
1152 case 's': // 1 string to match.
1153 if (RuleIdentifier[22] != 'i')
1154 break;
1155 return 150; // "itof_const_zero_fold_si"
1156 case 'u': // 1 string to match.
1157 if (RuleIdentifier[22] != 'i')
1158 break;
1159 return 151; // "itof_const_zero_fold_ui"
1160 }
1161 break;
1162 case 'p': // 1 string to match.
1163 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1164 break;
1165 return 81; // "propagate_undef_all_ops"
1166 case 't': // 1 string to match.
1167 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1168 break;
1169 return 234; // "truncusatu_to_fptouisat"
1170 }
1171 break;
1172 case 24: // 7 strings to match.
1173 switch (RuleIdentifier[0]) {
1174 default: break;
1175 case 'b': // 1 string to match.
1176 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1177 break;
1178 return 76; // "binop_left_undef_to_zero"
1179 case 'c': // 1 string to match.
1180 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1181 break;
1182 return 149; // "constant_fold_fnearbyint"
1183 case 'm': // 1 string to match.
1184 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1185 break;
1186 return 25; // "match_extract_of_element"
1187 case 'n': // 1 string to match.
1188 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1189 break;
1190 return 123; // "narrow_binop_feeding_and"
1191 case 's': // 2 strings to match.
1192 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1193 break;
1194 switch (RuleIdentifier[11]) {
1195 default: break;
1196 case 'o': // 1 string to match.
1197 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1198 break;
1199 return 55; // "sext_inreg_of_sext_inreg"
1200 case 't': // 1 string to match.
1201 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1202 break;
1203 return 133; // "sext_inreg_to_zext_inreg"
1204 }
1205 break;
1206 case 'x': // 1 string to match.
1207 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1208 break;
1209 return 159; // "xor_of_and_with_same_reg"
1210 }
1211 break;
1212 case 25: // 7 strings to match.
1213 switch (RuleIdentifier[0]) {
1214 default: break;
1215 case 'b': // 3 strings to match.
1216 switch (RuleIdentifier[1]) {
1217 default: break;
1218 case 'i': // 2 strings to match.
1219 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1220 break;
1221 switch (RuleIdentifier[22]) {
1222 default: break;
1223 case 'a': // 1 string to match.
1224 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1225 break;
1226 return 176; // "bitfield_extract_from_and"
1227 case 's': // 1 string to match.
1228 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1229 break;
1230 return 177; // "bitfield_extract_from_shr"
1231 }
1232 break;
1233 case 'u': // 1 string to match.
1234 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1235 break;
1236 return 97; // "buildvector_identity_fold"
1237 }
1238 break;
1239 case 'c': // 1 string to match.
1240 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1241 break;
1242 return 216; // "combine_shuffle_undef_rhs"
1243 case 'e': // 1 string to match.
1244 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1245 break;
1246 return 68; // "extract_vec_elt_build_vec"
1247 case 'n': // 1 string to match.
1248 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1249 break;
1250 return 120; // "neg_and_one_to_sext_inreg"
1251 case 'r': // 1 string to match.
1252 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1253 break;
1254 return 104; // "right_identity_neg_one_fp"
1255 }
1256 break;
1257 case 26: // 4 strings to match.
1258 switch (RuleIdentifier[0]) {
1259 default: break;
1260 case 'b': // 1 string to match.
1261 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1262 break;
1263 return 77; // "binop_right_undef_to_undef"
1264 case 'c': // 1 string to match.
1265 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1266 break;
1267 return 207; // "commute_fp_constant_to_rhs"
1268 case 'f': // 1 string to match.
1269 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1270 break;
1271 return 165; // "funnel_shift_from_or_shift"
1272 case 'r': // 1 string to match.
1273 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1274 break;
1275 return 102; // "right_identity_neg_zero_fp"
1276 }
1277 break;
1278 case 27: // 6 strings to match.
1279 switch (RuleIdentifier[0]) {
1280 default: break;
1281 case 'c': // 2 strings to match.
1282 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1283 break;
1284 switch (RuleIdentifier[3]) {
1285 default: break;
1286 case 'b': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1288 break;
1289 return 218; // "combine_use_vector_truncate"
1290 case 'm': // 1 string to match.
1291 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1292 break;
1293 return 206; // "commute_int_constant_to_rhs"
1294 }
1295 break;
1296 case 'd': // 1 string to match.
1297 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1298 break;
1299 return 117; // "double_icmp_zero_or_combine"
1300 case 'r': // 1 string to match.
1301 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1302 break;
1303 return 118; // "redundant_binop_in_equality"
1304 case 't': // 1 string to match.
1305 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1306 break;
1307 return 99; // "trunc_lshr_buildvector_fold"
1308 case 'u': // 1 string to match.
1309 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1310 break;
1311 return 219; // "unmerge_anyext_build_vector"
1312 }
1313 break;
1314 case 28: // 4 strings to match.
1315 switch (RuleIdentifier[0]) {
1316 default: break;
1317 case 'd': // 1 string to match.
1318 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1319 break;
1320 return 116; // "double_icmp_zero_and_combine"
1321 case 'o': // 1 string to match.
1322 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1323 break;
1324 return 136; // "opt_brcond_by_inverting_cond"
1325 case 'p': // 1 string to match.
1326 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1327 break;
1328 return 82; // "propagate_undef_shuffle_mask"
1329 case 's': // 1 string to match.
1330 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1331 break;
1332 return 162; // "shift_of_shifted_logic_chain"
1333 }
1334 break;
1335 case 29: // 6 strings to match.
1336 switch (RuleIdentifier[0]) {
1337 default: break;
1338 case 'b': // 1 string to match.
1339 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1340 break;
1341 return 178; // "bitfield_extract_from_shr_and"
1342 case 'c': // 4 strings to match.
1343 if (RuleIdentifier[1] != 'o')
1344 break;
1345 switch (RuleIdentifier[2]) {
1346 default: break;
1347 case 'm': // 2 strings to match.
1348 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1349 break;
1350 switch (RuleIdentifier[8]) {
1351 default: break;
1352 case 'e': // 1 string to match.
1353 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1354 break;
1355 return 72; // "combine_extracted_vector_load"
1356 case 's': // 1 string to match.
1357 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1358 break;
1359 return 217; // "combine_shuffle_disjoint_mask"
1360 }
1361 break;
1362 case 'n': // 2 strings to match.
1363 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1364 break;
1365 switch (RuleIdentifier[24]) {
1366 default: break;
1367 case 'r': // 1 string to match.
1368 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1369 break;
1370 return 146; // "constant_fold_intrinsic_round"
1371 case 't': // 1 string to match.
1372 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1373 break;
1374 return 145; // "constant_fold_intrinsic_trunc"
1375 }
1376 break;
1377 }
1378 break;
1379 case 'i': // 1 string to match.
1380 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1381 break;
1382 return 114; // "icmp_to_true_false_known_bits"
1383 }
1384 break;
1385 case 30: // 2 strings to match.
1386 switch (RuleIdentifier[0]) {
1387 default: break;
1388 case 'f': // 1 string to match.
1389 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1390 break;
1391 return 43; // "freeze_of_non_undef_non_poison"
1392 case 'r': // 1 string to match.
1393 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1394 break;
1395 return 103; // "right_identity_neg_zero_fp_nsz"
1396 }
1397 break;
1398 case 31: // 2 strings to match.
1399 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1400 break;
1401 switch (RuleIdentifier[22]) {
1402 default: break;
1403 case 'e': // 1 string to match.
1404 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1405 break;
1406 return 24; // "insert_vector_element_elt_undef"
1407 case 'i': // 1 string to match.
1408 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1409 break;
1410 return 23; // "insert_vector_element_idx_undef"
1411 }
1412 break;
1413 case 32: // 4 strings to match.
1414 switch (RuleIdentifier[0]) {
1415 default: break;
1416 case 'b': // 1 string to match.
1417 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1418 break;
1419 return 175; // "bitfield_extract_from_sext_inreg"
1420 case 'c': // 2 strings to match.
1421 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1422 break;
1423 switch (RuleIdentifier[9]) {
1424 default: break;
1425 case 'a': // 1 string to match.
1426 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1427 break;
1428 return 187; // "combine_fadd_fmul_to_fmad_or_fma"
1429 case 's': // 1 string to match.
1430 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1431 break;
1432 return 191; // "combine_fsub_fmul_to_fmad_or_fma"
1433 }
1434 break;
1435 case 'e': // 1 string to match.
1436 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1437 break;
1438 return 27; // "extract_vector_element_not_const"
1439 }
1440 break;
1441 case 33: // 1 string to match.
1442 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1443 break;
1444 return 147; // "constant_fold_intrinsic_roundeven"
1445 case 34: // 1 string to match.
1446 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1447 break;
1448 return 69; // "extract_all_elts_from_build_vector"
1449 case 35: // 1 string to match.
1450 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1451 break;
1452 return 29; // "extract_vector_element_build_vector"
1453 case 36: // 4 strings to match.
1454 switch (RuleIdentifier[0]) {
1455 default: break;
1456 case 'c': // 2 strings to match.
1457 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1458 break;
1459 switch (RuleIdentifier[8]) {
1460 default: break;
1461 case 'f': // 1 string to match.
1462 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1463 break;
1464 return 189; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1465 case 'i': // 1 string to match.
1466 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1467 break;
1468 return 67; // "combine_insert_vec_elts_build_vector"
1469 }
1470 break;
1471 case 'i': // 1 string to match.
1472 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1473 break;
1474 return 84; // "insert_extract_vec_elt_out_of_bounds"
1475 case 'm': // 1 string to match.
1476 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1477 break;
1478 return 22; // "match_extract_of_element_undef_index"
1479 }
1480 break;
1481 case 37: // 4 strings to match.
1482 switch (RuleIdentifier[0]) {
1483 default: break;
1484 case 'c': // 1 string to match.
1485 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1486 break;
1487 return 192; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1488 case 'e': // 1 string to match.
1489 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1490 break;
1491 return 37; // "extract_vector_element_shuffle_vector"
1492 case 'h': // 1 string to match.
1493 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1494 break;
1495 return 107; // "hoist_logic_op_with_same_opcode_hands"
1496 case 'm': // 1 string to match.
1497 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1498 break;
1499 return 21; // "match_extract_of_element_undef_vector"
1500 }
1501 break;
1502 case 38: // 2 strings to match.
1503 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1504 break;
1505 switch (RuleIdentifier[9]) {
1506 default: break;
1507 case 'a': // 1 string to match.
1508 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1509 break;
1510 return 188; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1511 case 's': // 1 string to match.
1512 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1513 break;
1514 return 193; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1515 }
1516 break;
1517 case 40: // 1 string to match.
1518 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1519 break;
1520 return 28; // "extract_vector_element_different_indices"
1521 case 42: // 9 strings to match.
1522 switch (RuleIdentifier[0]) {
1523 default: break;
1524 case 'c': // 1 string to match.
1525 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1526 break;
1527 return 190; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1528 case 'e': // 7 strings to match.
1529 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1530 break;
1531 switch (RuleIdentifier[41]) {
1532 default: break;
1533 case '2': // 1 string to match.
1534 return 30; // "extract_vector_element_build_vector_trunc2"
1535 case '3': // 1 string to match.
1536 return 31; // "extract_vector_element_build_vector_trunc3"
1537 case '4': // 1 string to match.
1538 return 32; // "extract_vector_element_build_vector_trunc4"
1539 case '5': // 1 string to match.
1540 return 33; // "extract_vector_element_build_vector_trunc5"
1541 case '6': // 1 string to match.
1542 return 34; // "extract_vector_element_build_vector_trunc6"
1543 case '7': // 1 string to match.
1544 return 35; // "extract_vector_element_build_vector_trunc7"
1545 case '8': // 1 string to match.
1546 return 36; // "extract_vector_element_build_vector_trunc8"
1547 }
1548 break;
1549 case 'f': // 1 string to match.
1550 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1551 break;
1552 return 170; // "funnel_shift_or_shift_to_funnel_shift_left"
1553 }
1554 break;
1555 case 43: // 2 strings to match.
1556 switch (RuleIdentifier[0]) {
1557 default: break;
1558 case 'c': // 1 string to match.
1559 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1560 break;
1561 return 194; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1562 case 'f': // 1 string to match.
1563 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1564 break;
1565 return 171; // "funnel_shift_or_shift_to_funnel_shift_right"
1566 }
1567 break;
1568 case 44: // 1 string to match.
1569 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1570 break;
1571 return 38; // "insert_vector_element_extract_vector_element"
1572 case 46: // 1 string to match.
1573 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1574 break;
1575 return 44; // "push_freeze_to_prevent_poison_from_propagating"
1576 }
1577#endif // ifndef NDEBUG
1578
1579 return std::nullopt;
1580}
1581static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1582 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1583 if (!RangePair.second.empty()) {
1584 const auto First = getRuleIdxForIdentifier(RangePair.first);
1585 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1586 if (!First || !Last)
1587 return std::nullopt;
1588 if (First >= Last)
1589 report_fatal_error("Beginning of range should be before end of range");
1590 return {{*First, *Last + 1}};
1591 }
1592 if (RangePair.first == "*") {
1593 return {{0, 249}};
1594 }
1595 const auto I = getRuleIdxForIdentifier(RangePair.first);
1596 if (!I)
1597 return std::nullopt;
1598 return {{*I, *I + 1}};
1599}
1600
1601bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1602 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1603 if (!MaybeRange)
1604 return false;
1605 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1606 DisabledRules.reset(I);
1607 return true;
1608}
1609
1610bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1611 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1612 if (!MaybeRange)
1613 return false;
1614 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1615 DisabledRules.set(I);
1616 return true;
1617}
1618
1619static std::vector<std::string> AArch64PreLegalizerCombinerOption;
1620static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption(
1621 "aarch64prelegalizercombiner-disable-rule",
1622 cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass"),
1623 cl::CommaSeparated,
1624 cl::Hidden,
1625 cl::cat(GICombinerOptionCategory),
1626 cl::callback([](const std::string &Str) {
1627 AArch64PreLegalizerCombinerOption.push_back(Str);
1628 }));
1629static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption(
1630 "aarch64prelegalizercombiner-only-enable-rule",
1631 cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones"),
1632 cl::Hidden,
1633 cl::cat(GICombinerOptionCategory),
1634 cl::callback([](const std::string &CommaSeparatedArg) {
1635 StringRef Str = CommaSeparatedArg;
1636 AArch64PreLegalizerCombinerOption.push_back("*");
1637 do {
1638 auto X = Str.split(",");
1639 AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str());
1640 Str = X.second;
1641 } while (!Str.empty());
1642 }));
1643
1644
1645bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1646 return !DisabledRules.test(RuleID);
1647}
1648bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1649 for (StringRef Identifier : AArch64PreLegalizerCombinerOption) {
1650 bool Enabled = Identifier.consume_front("!");
1651 if (Enabled && !setRuleEnabled(Identifier))
1652 return false;
1653 if (!Enabled && !setRuleDisabled(Identifier))
1654 return false;
1655 }
1656 return true;
1657}
1658
1659#endif // ifdef GET_GICOMBINER_TYPES
1660
1661#ifdef GET_GICOMBINER_TYPES
1662const unsigned MAX_SUBTARGET_PREDICATES = 1;
1663using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1664#endif // ifdef GET_GICOMBINER_TYPES
1665
1666#ifdef GET_GICOMBINER_CLASS_MEMBERS
1667PredicateBitset AvailableModuleFeatures;
1668mutable PredicateBitset AvailableFunctionFeatures;
1669PredicateBitset getAvailableFeatures() const {
1670 return AvailableModuleFeatures | AvailableFunctionFeatures;
1671}
1672PredicateBitset
1673computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
1674PredicateBitset
1675computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
1676 const MachineFunction *MF) const;
1677void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1678#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1679#ifdef GET_GICOMBINER_CLASS_MEMBERS
1680 mutable MatcherState State;
1681 typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1682 typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1683 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1684 static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1685 static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1686 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1687 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1688 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1689 const uint8_t *getMatchTable() const override;
1690 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1691 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1692 bool testSimplePredicate(unsigned PredicateID) const override;
1693 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1694#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1695
1696#ifdef GET_GICOMBINER_IMPL
1697// LLT Objects.
1698enum {
1699 GILLT_s1,
1700};
1701const static size_t NumTypeObjects = 1;
1702const static LLT TypeObjects[] = {
1703 LLT::scalar(1),
1704};
1705
1706// Bits for subtarget features that participate in instruction matching.
1707enum SubtargetFeatureBits : uint8_t {
1708 Feature_HasDotProdBit = 0,
1709};
1710
1711PredicateBitset AArch64PreLegalizerCombinerImpl::
1712computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
1713 PredicateBitset Features{};
1714 if (Subtarget->hasDotProd())
1715 Features.set(Feature_HasDotProdBit);
1716 return Features;
1717}
1718
1719void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1720 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
1721}
1722PredicateBitset AArch64PreLegalizerCombinerImpl::
1723computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
1724 PredicateBitset Features{};
1725 return Features;
1726}
1727
1728// Feature bitsets.
1729enum {
1730 GIFBS_Invalid,
1731 GIFBS_HasDotProd,
1732};
1733constexpr static PredicateBitset FeatureBitsets[] {
1734 {}, // GIFBS_Invalid
1735 {Feature_HasDotProdBit, },
1736};
1737
1738// ComplexPattern predicates.
1739enum {
1740 GICP_Invalid,
1741};
1742// See constructor for table contents
1743
1744AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn
1745AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1746 nullptr, // GICP_Invalid
1747};
1748
1749enum {
1750 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1751 GICXXPred_MI_Predicate_GICombiner1,
1752 GICXXPred_MI_Predicate_GICombiner2,
1753 GICXXPred_MI_Predicate_GICombiner3,
1754 GICXXPred_MI_Predicate_GICombiner4,
1755 GICXXPred_MI_Predicate_GICombiner5,
1756 GICXXPred_MI_Predicate_GICombiner6,
1757 GICXXPred_MI_Predicate_GICombiner7,
1758 GICXXPred_MI_Predicate_GICombiner8,
1759 GICXXPred_MI_Predicate_GICombiner9,
1760 GICXXPred_MI_Predicate_GICombiner10,
1761 GICXXPred_MI_Predicate_GICombiner11,
1762 GICXXPred_MI_Predicate_GICombiner12,
1763 GICXXPred_MI_Predicate_GICombiner13,
1764 GICXXPred_MI_Predicate_GICombiner14,
1765};
1766bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1767 switch (PredicateID) {
1768 case GICXXPred_MI_Predicate_GICombiner0: {
1769 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1770 }
1771 case GICXXPred_MI_Predicate_GICombiner1: {
1772 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1773 }
1774 case GICXXPred_MI_Predicate_GICombiner2: {
1775 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1776 }
1777 case GICXXPred_MI_Predicate_GICombiner3: {
1778 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1779 }
1780 case GICXXPred_MI_Predicate_GICombiner4: {
1781 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1782 }
1783 case GICXXPred_MI_Predicate_GICombiner5: {
1784 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1785 }
1786 case GICXXPred_MI_Predicate_GICombiner6: {
1787 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1788 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1789 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1790 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1791 }
1792 case GICXXPred_MI_Predicate_GICombiner7: {
1793 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1794 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1795 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1796 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1797 }
1798 case GICXXPred_MI_Predicate_GICombiner8: {
1799 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1800 Helper.isLegalOrBeforeLegalizer(
1801 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1802 }
1803 case GICXXPred_MI_Predicate_GICombiner9: {
1804 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1805 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1806 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1807 }
1808 case GICXXPred_MI_Predicate_GICombiner10: {
1809 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1810 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1811 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1812 }
1813 case GICXXPred_MI_Predicate_GICombiner11: {
1814 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1815 }
1816 case GICXXPred_MI_Predicate_GICombiner12: {
1817 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1818 }
1819 case GICXXPred_MI_Predicate_GICombiner13: {
1820 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1821 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1822 }
1823 case GICXXPred_MI_Predicate_GICombiner14: {
1824 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1825 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1826 }
1827 }
1828 llvm_unreachable("Unknown predicate");
1829 return false;
1830}
1831bool AArch64PreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1832 llvm_unreachable("Unknown predicate");
1833 return false;
1834}
1835bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1836 llvm_unreachable("Unknown predicate");
1837 return false;
1838}
1839bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1840 llvm_unreachable("Unknown predicate");
1841 return false;
1842}
1843bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1844 llvm_unreachable("Unknown predicate");
1845 return false;
1846}
1847enum {
1848 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1849 GICXXPred_Simple_IsRule1Enabled,
1850 GICXXPred_Simple_IsRule2Enabled,
1851 GICXXPred_Simple_IsRule3Enabled,
1852 GICXXPred_Simple_IsRule4Enabled,
1853 GICXXPred_Simple_IsRule5Enabled,
1854 GICXXPred_Simple_IsRule6Enabled,
1855 GICXXPred_Simple_IsRule7Enabled,
1856 GICXXPred_Simple_IsRule8Enabled,
1857 GICXXPred_Simple_IsRule9Enabled,
1858 GICXXPred_Simple_IsRule10Enabled,
1859 GICXXPred_Simple_IsRule11Enabled,
1860 GICXXPred_Simple_IsRule12Enabled,
1861 GICXXPred_Simple_IsRule13Enabled,
1862 GICXXPred_Simple_IsRule14Enabled,
1863 GICXXPred_Simple_IsRule15Enabled,
1864 GICXXPred_Simple_IsRule16Enabled,
1865 GICXXPred_Simple_IsRule17Enabled,
1866 GICXXPred_Simple_IsRule18Enabled,
1867 GICXXPred_Simple_IsRule19Enabled,
1868 GICXXPred_Simple_IsRule20Enabled,
1869 GICXXPred_Simple_IsRule21Enabled,
1870 GICXXPred_Simple_IsRule22Enabled,
1871 GICXXPred_Simple_IsRule23Enabled,
1872 GICXXPred_Simple_IsRule24Enabled,
1873 GICXXPred_Simple_IsRule25Enabled,
1874 GICXXPred_Simple_IsRule26Enabled,
1875 GICXXPred_Simple_IsRule27Enabled,
1876 GICXXPred_Simple_IsRule28Enabled,
1877 GICXXPred_Simple_IsRule29Enabled,
1878 GICXXPred_Simple_IsRule30Enabled,
1879 GICXXPred_Simple_IsRule31Enabled,
1880 GICXXPred_Simple_IsRule32Enabled,
1881 GICXXPred_Simple_IsRule33Enabled,
1882 GICXXPred_Simple_IsRule34Enabled,
1883 GICXXPred_Simple_IsRule35Enabled,
1884 GICXXPred_Simple_IsRule36Enabled,
1885 GICXXPred_Simple_IsRule37Enabled,
1886 GICXXPred_Simple_IsRule38Enabled,
1887 GICXXPred_Simple_IsRule39Enabled,
1888 GICXXPred_Simple_IsRule40Enabled,
1889 GICXXPred_Simple_IsRule41Enabled,
1890 GICXXPred_Simple_IsRule42Enabled,
1891 GICXXPred_Simple_IsRule43Enabled,
1892 GICXXPred_Simple_IsRule44Enabled,
1893 GICXXPred_Simple_IsRule45Enabled,
1894 GICXXPred_Simple_IsRule46Enabled,
1895 GICXXPred_Simple_IsRule47Enabled,
1896 GICXXPred_Simple_IsRule48Enabled,
1897 GICXXPred_Simple_IsRule49Enabled,
1898 GICXXPred_Simple_IsRule50Enabled,
1899 GICXXPred_Simple_IsRule51Enabled,
1900 GICXXPred_Simple_IsRule52Enabled,
1901 GICXXPred_Simple_IsRule53Enabled,
1902 GICXXPred_Simple_IsRule54Enabled,
1903 GICXXPred_Simple_IsRule55Enabled,
1904 GICXXPred_Simple_IsRule56Enabled,
1905 GICXXPred_Simple_IsRule57Enabled,
1906 GICXXPred_Simple_IsRule58Enabled,
1907 GICXXPred_Simple_IsRule59Enabled,
1908 GICXXPred_Simple_IsRule60Enabled,
1909 GICXXPred_Simple_IsRule61Enabled,
1910 GICXXPred_Simple_IsRule62Enabled,
1911 GICXXPred_Simple_IsRule63Enabled,
1912 GICXXPred_Simple_IsRule64Enabled,
1913 GICXXPred_Simple_IsRule65Enabled,
1914 GICXXPred_Simple_IsRule66Enabled,
1915 GICXXPred_Simple_IsRule67Enabled,
1916 GICXXPred_Simple_IsRule68Enabled,
1917 GICXXPred_Simple_IsRule69Enabled,
1918 GICXXPred_Simple_IsRule70Enabled,
1919 GICXXPred_Simple_IsRule71Enabled,
1920 GICXXPred_Simple_IsRule72Enabled,
1921 GICXXPred_Simple_IsRule73Enabled,
1922 GICXXPred_Simple_IsRule74Enabled,
1923 GICXXPred_Simple_IsRule75Enabled,
1924 GICXXPred_Simple_IsRule76Enabled,
1925 GICXXPred_Simple_IsRule77Enabled,
1926 GICXXPred_Simple_IsRule78Enabled,
1927 GICXXPred_Simple_IsRule79Enabled,
1928 GICXXPred_Simple_IsRule80Enabled,
1929 GICXXPred_Simple_IsRule81Enabled,
1930 GICXXPred_Simple_IsRule82Enabled,
1931 GICXXPred_Simple_IsRule83Enabled,
1932 GICXXPred_Simple_IsRule84Enabled,
1933 GICXXPred_Simple_IsRule85Enabled,
1934 GICXXPred_Simple_IsRule86Enabled,
1935 GICXXPred_Simple_IsRule87Enabled,
1936 GICXXPred_Simple_IsRule88Enabled,
1937 GICXXPred_Simple_IsRule89Enabled,
1938 GICXXPred_Simple_IsRule90Enabled,
1939 GICXXPred_Simple_IsRule91Enabled,
1940 GICXXPred_Simple_IsRule92Enabled,
1941 GICXXPred_Simple_IsRule93Enabled,
1942 GICXXPred_Simple_IsRule94Enabled,
1943 GICXXPred_Simple_IsRule95Enabled,
1944 GICXXPred_Simple_IsRule96Enabled,
1945 GICXXPred_Simple_IsRule97Enabled,
1946 GICXXPred_Simple_IsRule98Enabled,
1947 GICXXPred_Simple_IsRule99Enabled,
1948 GICXXPred_Simple_IsRule100Enabled,
1949 GICXXPred_Simple_IsRule101Enabled,
1950 GICXXPred_Simple_IsRule102Enabled,
1951 GICXXPred_Simple_IsRule103Enabled,
1952 GICXXPred_Simple_IsRule104Enabled,
1953 GICXXPred_Simple_IsRule105Enabled,
1954 GICXXPred_Simple_IsRule106Enabled,
1955 GICXXPred_Simple_IsRule107Enabled,
1956 GICXXPred_Simple_IsRule108Enabled,
1957 GICXXPred_Simple_IsRule109Enabled,
1958 GICXXPred_Simple_IsRule110Enabled,
1959 GICXXPred_Simple_IsRule111Enabled,
1960 GICXXPred_Simple_IsRule112Enabled,
1961 GICXXPred_Simple_IsRule113Enabled,
1962 GICXXPred_Simple_IsRule114Enabled,
1963 GICXXPred_Simple_IsRule115Enabled,
1964 GICXXPred_Simple_IsRule116Enabled,
1965 GICXXPred_Simple_IsRule117Enabled,
1966 GICXXPred_Simple_IsRule118Enabled,
1967 GICXXPred_Simple_IsRule119Enabled,
1968 GICXXPred_Simple_IsRule120Enabled,
1969 GICXXPred_Simple_IsRule121Enabled,
1970 GICXXPred_Simple_IsRule122Enabled,
1971 GICXXPred_Simple_IsRule123Enabled,
1972 GICXXPred_Simple_IsRule124Enabled,
1973 GICXXPred_Simple_IsRule125Enabled,
1974 GICXXPred_Simple_IsRule126Enabled,
1975 GICXXPred_Simple_IsRule127Enabled,
1976 GICXXPred_Simple_IsRule128Enabled,
1977 GICXXPred_Simple_IsRule129Enabled,
1978 GICXXPred_Simple_IsRule130Enabled,
1979 GICXXPred_Simple_IsRule131Enabled,
1980 GICXXPred_Simple_IsRule132Enabled,
1981 GICXXPred_Simple_IsRule133Enabled,
1982 GICXXPred_Simple_IsRule134Enabled,
1983 GICXXPred_Simple_IsRule135Enabled,
1984 GICXXPred_Simple_IsRule136Enabled,
1985 GICXXPred_Simple_IsRule137Enabled,
1986 GICXXPred_Simple_IsRule138Enabled,
1987 GICXXPred_Simple_IsRule139Enabled,
1988 GICXXPred_Simple_IsRule140Enabled,
1989 GICXXPred_Simple_IsRule141Enabled,
1990 GICXXPred_Simple_IsRule142Enabled,
1991 GICXXPred_Simple_IsRule143Enabled,
1992 GICXXPred_Simple_IsRule144Enabled,
1993 GICXXPred_Simple_IsRule145Enabled,
1994 GICXXPred_Simple_IsRule146Enabled,
1995 GICXXPred_Simple_IsRule147Enabled,
1996 GICXXPred_Simple_IsRule148Enabled,
1997 GICXXPred_Simple_IsRule149Enabled,
1998 GICXXPred_Simple_IsRule150Enabled,
1999 GICXXPred_Simple_IsRule151Enabled,
2000 GICXXPred_Simple_IsRule152Enabled,
2001 GICXXPred_Simple_IsRule153Enabled,
2002 GICXXPred_Simple_IsRule154Enabled,
2003 GICXXPred_Simple_IsRule155Enabled,
2004 GICXXPred_Simple_IsRule156Enabled,
2005 GICXXPred_Simple_IsRule157Enabled,
2006 GICXXPred_Simple_IsRule158Enabled,
2007 GICXXPred_Simple_IsRule159Enabled,
2008 GICXXPred_Simple_IsRule160Enabled,
2009 GICXXPred_Simple_IsRule161Enabled,
2010 GICXXPred_Simple_IsRule162Enabled,
2011 GICXXPred_Simple_IsRule163Enabled,
2012 GICXXPred_Simple_IsRule164Enabled,
2013 GICXXPred_Simple_IsRule165Enabled,
2014 GICXXPred_Simple_IsRule166Enabled,
2015 GICXXPred_Simple_IsRule167Enabled,
2016 GICXXPred_Simple_IsRule168Enabled,
2017 GICXXPred_Simple_IsRule169Enabled,
2018 GICXXPred_Simple_IsRule170Enabled,
2019 GICXXPred_Simple_IsRule171Enabled,
2020 GICXXPred_Simple_IsRule172Enabled,
2021 GICXXPred_Simple_IsRule173Enabled,
2022 GICXXPred_Simple_IsRule174Enabled,
2023 GICXXPred_Simple_IsRule175Enabled,
2024 GICXXPred_Simple_IsRule176Enabled,
2025 GICXXPred_Simple_IsRule177Enabled,
2026 GICXXPred_Simple_IsRule178Enabled,
2027 GICXXPred_Simple_IsRule179Enabled,
2028 GICXXPred_Simple_IsRule180Enabled,
2029 GICXXPred_Simple_IsRule181Enabled,
2030 GICXXPred_Simple_IsRule182Enabled,
2031 GICXXPred_Simple_IsRule183Enabled,
2032 GICXXPred_Simple_IsRule184Enabled,
2033 GICXXPred_Simple_IsRule185Enabled,
2034 GICXXPred_Simple_IsRule186Enabled,
2035 GICXXPred_Simple_IsRule187Enabled,
2036 GICXXPred_Simple_IsRule188Enabled,
2037 GICXXPred_Simple_IsRule189Enabled,
2038 GICXXPred_Simple_IsRule190Enabled,
2039 GICXXPred_Simple_IsRule191Enabled,
2040 GICXXPred_Simple_IsRule192Enabled,
2041 GICXXPred_Simple_IsRule193Enabled,
2042 GICXXPred_Simple_IsRule194Enabled,
2043 GICXXPred_Simple_IsRule195Enabled,
2044 GICXXPred_Simple_IsRule196Enabled,
2045 GICXXPred_Simple_IsRule197Enabled,
2046 GICXXPred_Simple_IsRule198Enabled,
2047 GICXXPred_Simple_IsRule199Enabled,
2048 GICXXPred_Simple_IsRule200Enabled,
2049 GICXXPred_Simple_IsRule201Enabled,
2050 GICXXPred_Simple_IsRule202Enabled,
2051 GICXXPred_Simple_IsRule203Enabled,
2052 GICXXPred_Simple_IsRule204Enabled,
2053 GICXXPred_Simple_IsRule205Enabled,
2054 GICXXPred_Simple_IsRule206Enabled,
2055 GICXXPred_Simple_IsRule207Enabled,
2056 GICXXPred_Simple_IsRule208Enabled,
2057 GICXXPred_Simple_IsRule209Enabled,
2058 GICXXPred_Simple_IsRule210Enabled,
2059 GICXXPred_Simple_IsRule211Enabled,
2060 GICXXPred_Simple_IsRule212Enabled,
2061 GICXXPred_Simple_IsRule213Enabled,
2062 GICXXPred_Simple_IsRule214Enabled,
2063 GICXXPred_Simple_IsRule215Enabled,
2064 GICXXPred_Simple_IsRule216Enabled,
2065 GICXXPred_Simple_IsRule217Enabled,
2066 GICXXPred_Simple_IsRule218Enabled,
2067 GICXXPred_Simple_IsRule219Enabled,
2068 GICXXPred_Simple_IsRule220Enabled,
2069 GICXXPred_Simple_IsRule221Enabled,
2070 GICXXPred_Simple_IsRule222Enabled,
2071 GICXXPred_Simple_IsRule223Enabled,
2072 GICXXPred_Simple_IsRule224Enabled,
2073 GICXXPred_Simple_IsRule225Enabled,
2074 GICXXPred_Simple_IsRule226Enabled,
2075 GICXXPred_Simple_IsRule227Enabled,
2076 GICXXPred_Simple_IsRule228Enabled,
2077 GICXXPred_Simple_IsRule229Enabled,
2078 GICXXPred_Simple_IsRule230Enabled,
2079 GICXXPred_Simple_IsRule231Enabled,
2080 GICXXPred_Simple_IsRule232Enabled,
2081 GICXXPred_Simple_IsRule233Enabled,
2082 GICXXPred_Simple_IsRule234Enabled,
2083 GICXXPred_Simple_IsRule235Enabled,
2084 GICXXPred_Simple_IsRule236Enabled,
2085 GICXXPred_Simple_IsRule237Enabled,
2086 GICXXPred_Simple_IsRule238Enabled,
2087 GICXXPred_Simple_IsRule239Enabled,
2088 GICXXPred_Simple_IsRule240Enabled,
2089 GICXXPred_Simple_IsRule241Enabled,
2090 GICXXPred_Simple_IsRule242Enabled,
2091 GICXXPred_Simple_IsRule243Enabled,
2092 GICXXPred_Simple_IsRule244Enabled,
2093 GICXXPred_Simple_IsRule245Enabled,
2094 GICXXPred_Simple_IsRule246Enabled,
2095 GICXXPred_Simple_IsRule247Enabled,
2096 GICXXPred_Simple_IsRule248Enabled,
2097};
2098
2099bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2100 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2101}
2102// Custom renderers.
2103enum {
2104 GICR_Invalid,
2105};
2106AArch64PreLegalizerCombinerImpl::CustomRendererFn
2107AArch64PreLegalizerCombinerImpl::CustomRenderers[] = {
2108 nullptr, // GICR_Invalid
2109};
2110
2111bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2112 const TargetSubtargetInfo &ST = MF.getSubtarget();
2113 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2114 B.setInstrAndDebugLoc(I);
2115 State.MIs.clear();
2116 State.MIs.push_back(&I);
2117 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2118 return true;
2119 }
2120
2121 return false;
2122}
2123
2124enum {
2125 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2126 GICXXCustomAction_GICombiner1,
2127 GICXXCustomAction_GICombiner2,
2128 GICXXCustomAction_GICombiner3,
2129 GICXXCustomAction_GICombiner4,
2130 GICXXCustomAction_GICombiner5,
2131 GICXXCustomAction_GICombiner6,
2132 GICXXCustomAction_GICombiner7,
2133 GICXXCustomAction_GICombiner8,
2134 GICXXCustomAction_GICombiner9,
2135 GICXXCustomAction_GICombiner10,
2136 GICXXCustomAction_GICombiner11,
2137 GICXXCustomAction_GICombiner12,
2138 GICXXCustomAction_GICombiner13,
2139 GICXXCustomAction_GICombiner14,
2140 GICXXCustomAction_GICombiner15,
2141 GICXXCustomAction_GICombiner16,
2142 GICXXCustomAction_GICombiner17,
2143 GICXXCustomAction_GICombiner18,
2144 GICXXCustomAction_GICombiner19,
2145 GICXXCustomAction_GICombiner20,
2146 GICXXCustomAction_GICombiner21,
2147 GICXXCustomAction_GICombiner22,
2148 GICXXCustomAction_GICombiner23,
2149 GICXXCustomAction_GICombiner24,
2150 GICXXCustomAction_GICombiner25,
2151 GICXXCustomAction_GICombiner26,
2152 GICXXCustomAction_GICombiner27,
2153 GICXXCustomAction_GICombiner28,
2154 GICXXCustomAction_GICombiner29,
2155 GICXXCustomAction_GICombiner30,
2156 GICXXCustomAction_GICombiner31,
2157 GICXXCustomAction_GICombiner32,
2158 GICXXCustomAction_GICombiner33,
2159 GICXXCustomAction_GICombiner34,
2160 GICXXCustomAction_GICombiner35,
2161 GICXXCustomAction_GICombiner36,
2162 GICXXCustomAction_GICombiner37,
2163 GICXXCustomAction_GICombiner38,
2164 GICXXCustomAction_GICombiner39,
2165 GICXXCustomAction_GICombiner40,
2166 GICXXCustomAction_GICombiner41,
2167 GICXXCustomAction_GICombiner42,
2168 GICXXCustomAction_GICombiner43,
2169 GICXXCustomAction_GICombiner44,
2170 GICXXCustomAction_GICombiner45,
2171 GICXXCustomAction_GICombiner46,
2172 GICXXCustomAction_GICombiner47,
2173 GICXXCustomAction_GICombiner48,
2174 GICXXCustomAction_GICombiner49,
2175 GICXXCustomAction_GICombiner50,
2176 GICXXCustomAction_GICombiner51,
2177 GICXXCustomAction_GICombiner52,
2178 GICXXCustomAction_GICombiner53,
2179 GICXXCustomAction_GICombiner54,
2180 GICXXCustomAction_GICombiner55,
2181 GICXXCustomAction_GICombiner56,
2182 GICXXCustomAction_GICombiner57,
2183 GICXXCustomAction_GICombiner58,
2184 GICXXCustomAction_GICombiner59,
2185 GICXXCustomAction_GICombiner60,
2186 GICXXCustomAction_GICombiner61,
2187 GICXXCustomAction_GICombiner62,
2188 GICXXCustomAction_GICombiner63,
2189 GICXXCustomAction_GICombiner64,
2190 GICXXCustomAction_GICombiner65,
2191 GICXXCustomAction_GICombiner66,
2192 GICXXCustomAction_GICombiner67,
2193 GICXXCustomAction_GICombiner68,
2194 GICXXCustomAction_GICombiner69,
2195 GICXXCustomAction_GICombiner70,
2196 GICXXCustomAction_GICombiner71,
2197 GICXXCustomAction_GICombiner72,
2198 GICXXCustomAction_GICombiner73,
2199 GICXXCustomAction_GICombiner74,
2200 GICXXCustomAction_GICombiner75,
2201 GICXXCustomAction_GICombiner76,
2202 GICXXCustomAction_GICombiner77,
2203 GICXXCustomAction_GICombiner78,
2204 GICXXCustomAction_GICombiner79,
2205 GICXXCustomAction_GICombiner80,
2206 GICXXCustomAction_GICombiner81,
2207 GICXXCustomAction_GICombiner82,
2208 GICXXCustomAction_GICombiner83,
2209 GICXXCustomAction_GICombiner84,
2210 GICXXCustomAction_GICombiner85,
2211 GICXXCustomAction_GICombiner86,
2212 GICXXCustomAction_GICombiner87,
2213 GICXXCustomAction_GICombiner88,
2214 GICXXCustomAction_GICombiner89,
2215 GICXXCustomAction_GICombiner90,
2216 GICXXCustomAction_GICombiner91,
2217 GICXXCustomAction_GICombiner92,
2218 GICXXCustomAction_GICombiner93,
2219 GICXXCustomAction_GICombiner94,
2220 GICXXCustomAction_GICombiner95,
2221 GICXXCustomAction_GICombiner96,
2222 GICXXCustomAction_GICombiner97,
2223 GICXXCustomAction_GICombiner98,
2224 GICXXCustomAction_GICombiner99,
2225 GICXXCustomAction_GICombiner100,
2226 GICXXCustomAction_GICombiner101,
2227 GICXXCustomAction_GICombiner102,
2228 GICXXCustomAction_GICombiner103,
2229 GICXXCustomAction_GICombiner104,
2230 GICXXCustomAction_GICombiner105,
2231 GICXXCustomAction_GICombiner106,
2232 GICXXCustomAction_GICombiner107,
2233 GICXXCustomAction_GICombiner108,
2234 GICXXCustomAction_GICombiner109,
2235 GICXXCustomAction_GICombiner110,
2236 GICXXCustomAction_GICombiner111,
2237 GICXXCustomAction_GICombiner112,
2238 GICXXCustomAction_GICombiner113,
2239 GICXXCustomAction_GICombiner114,
2240 GICXXCustomAction_GICombiner115,
2241 GICXXCustomAction_GICombiner116,
2242 GICXXCustomAction_GICombiner117,
2243 GICXXCustomAction_GICombiner118,
2244 GICXXCustomAction_GICombiner119,
2245 GICXXCustomAction_GICombiner120,
2246 GICXXCustomAction_GICombiner121,
2247 GICXXCustomAction_GICombiner122,
2248 GICXXCustomAction_GICombiner123,
2249 GICXXCustomAction_GICombiner124,
2250 GICXXCustomAction_GICombiner125,
2251 GICXXCustomAction_GICombiner126,
2252 GICXXCustomAction_GICombiner127,
2253 GICXXCustomAction_GICombiner128,
2254 GICXXCustomAction_GICombiner129,
2255 GICXXCustomAction_GICombiner130,
2256 GICXXCustomAction_GICombiner131,
2257 GICXXCustomAction_GICombiner132,
2258 GICXXCustomAction_GICombiner133,
2259 GICXXCustomAction_GICombiner134,
2260 GICXXCustomAction_GICombiner135,
2261 GICXXCustomAction_GICombiner136,
2262 GICXXCustomAction_GICombiner137,
2263 GICXXCustomAction_GICombiner138,
2264 GICXXCustomAction_GICombiner139,
2265 GICXXCustomAction_GICombiner140,
2266 GICXXCustomAction_GICombiner141,
2267 GICXXCustomAction_GICombiner142,
2268 GICXXCustomAction_GICombiner143,
2269 GICXXCustomAction_GICombiner144,
2270 GICXXCustomAction_GICombiner145,
2271 GICXXCustomAction_GICombiner146,
2272 GICXXCustomAction_GICombiner147,
2273 GICXXCustomAction_GICombiner148,
2274 GICXXCustomAction_GICombiner149,
2275 GICXXCustomAction_GICombiner150,
2276 GICXXCustomAction_GICombiner151,
2277 GICXXCustomAction_GICombiner152,
2278 GICXXCustomAction_GICombiner153,
2279 GICXXCustomAction_GICombiner154,
2280 GICXXCustomAction_GICombiner155,
2281 GICXXCustomAction_GICombiner156,
2282 GICXXCustomAction_GICombiner157,
2283 GICXXCustomAction_GICombiner158,
2284 GICXXCustomAction_GICombiner159,
2285 GICXXCustomAction_GICombiner160,
2286};
2287bool AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2288 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2289 switch(ApplyID) {
2290 case GICXXCustomAction_GICombiner0:{
2291 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2292 // Match Patterns
2293 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2294 return false;
2295 }
2296 // Apply Patterns
2297 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2298 return true;
2299 }
2300 case GICXXCustomAction_GICombiner1:{
2301 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2302 // Match Patterns
2303 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2304 return false;
2305 }
2306 // Apply Patterns
2307 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2308 return true;
2309 }
2310 case GICXXCustomAction_GICombiner2:{
2311 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2312 // Match Patterns
2313 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2314 return false;
2315 }
2316 // Apply Patterns
2317 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2318 return true;
2319 }
2320 case GICXXCustomAction_GICombiner3:{
2321 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2322 // Match Patterns
2323 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2324 return false;
2325 }
2326 // Apply Patterns
2327 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2328 return true;
2329 }
2330 case GICXXCustomAction_GICombiner4:{
2331 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2332 // Match Patterns
2333 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2334 return false;
2335 }
2336 // Apply Patterns
2337 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2338 return true;
2339 }
2340 case GICXXCustomAction_GICombiner5:{
2341 // Match Patterns
2342 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2343 return false;
2344 }
2345 // Apply Patterns
2346 Helper.applyCombineCopy(*State.MIs[0]);
2347 return true;
2348 }
2349 case GICXXCustomAction_GICombiner6:{
2350 unsigned GIMatchData_matchinfo;
2351 // Match Patterns
2352 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2353 return false;
2354 }
2355 // Apply Patterns
2356 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2357 return true;
2358 }
2359 case GICXXCustomAction_GICombiner7:{
2360 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2361 // Match Patterns
2362 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2363 return false;
2364 }
2365 // Apply Patterns
2366 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2367 return true;
2368 }
2369 case GICXXCustomAction_GICombiner8:{
2370 std::pair<Register, bool> GIMatchData_info;
2371 // Match Patterns
2372 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2373 return false;
2374 }
2375 // Apply Patterns
2376 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2377 return true;
2378 }
2379 case GICXXCustomAction_GICombiner9:{
2380 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2381 // Match Patterns
2382 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2383 return false;
2384 }
2385 // Apply Patterns
2386 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2387 return true;
2388 }
2389 case GICXXCustomAction_GICombiner10:{
2390 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2391 // Match Patterns
2392 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2393 return false;
2394 }
2395 // Apply Patterns
2396 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2397 return true;
2398 }
2399 case GICXXCustomAction_GICombiner11:{
2400 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2401 // Match Patterns
2402 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2403 return false;
2404 }
2405 // Apply Patterns
2406 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2407 return true;
2408 }
2409 case GICXXCustomAction_GICombiner12:{
2410 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2411 // Match Patterns
2412 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2413 GIMatchData_matchinfo);}()) {
2414 return false;
2415 }
2416 // Apply Patterns
2417 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2418 return true;
2419 }
2420 case GICXXCustomAction_GICombiner13:{
2421 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2422 // Match Patterns
2423 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2424 return false;
2425 }
2426 // Apply Patterns
2427 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2428 return true;
2429 }
2430 case GICXXCustomAction_GICombiner14:{
2431 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2432 // Match Patterns
2433 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2434 GIMatchData_matchinfo);}()) {
2435 return false;
2436 }
2437 // Apply Patterns
2438 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2439 return true;
2440 }
2441 case GICXXCustomAction_GICombiner15:{
2442 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2443 // Match Patterns
2444 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2445 return false;
2446 }
2447 // Apply Patterns
2448 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2449 return true;
2450 }
2451 case GICXXCustomAction_GICombiner16:{
2452 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2453 // Match Patterns
2454 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2455 return false;
2456 }
2457 // Apply Patterns
2458 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2459 return true;
2460 }
2461 case GICXXCustomAction_GICombiner17:{
2462 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2463 // Match Patterns
2464 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2465 return false;
2466 }
2467 // Apply Patterns
2468 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2469 return true;
2470 }
2471 case GICXXCustomAction_GICombiner18:{
2472 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2473 // Match Patterns
2474 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2475 return false;
2476 }
2477 // Apply Patterns
2478 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2479 return true;
2480 }
2481 case GICXXCustomAction_GICombiner19:{
2482 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2483 // Match Patterns
2484 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2485 return false;
2486 }
2487 // Apply Patterns
2488 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2489 return true;
2490 }
2491 case GICXXCustomAction_GICombiner20:{
2492 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2493 // Match Patterns
2494 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2495 return false;
2496 }
2497 // Apply Patterns
2498 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2499 return true;
2500 }
2501 case GICXXCustomAction_GICombiner21:{
2502 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2503 // Match Patterns
2504 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2505 return false;
2506 }
2507 // Apply Patterns
2508 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2509 return true;
2510 }
2511 case GICXXCustomAction_GICombiner22:{
2512 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2513 // Match Patterns
2514 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2515 return false;
2516 }
2517 // Apply Patterns
2518 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2519 return true;
2520 }
2521 case GICXXCustomAction_GICombiner23:{
2522 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2523 // Match Patterns
2524 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2525 return false;
2526 }
2527 // Apply Patterns
2528 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2529 return true;
2530 }
2531 case GICXXCustomAction_GICombiner24:{
2532 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2533 // Match Patterns
2534 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2535 return false;
2536 }
2537 // Apply Patterns
2538 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2539 return true;
2540 }
2541 case GICXXCustomAction_GICombiner25:{
2542 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2543 // Match Patterns
2544 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2545 return false;
2546 }
2547 // Apply Patterns
2548 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2549 return true;
2550 }
2551 case GICXXCustomAction_GICombiner26:{
2552 APInt GIMatchData_matchinfo;
2553 // Match Patterns
2554 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2555 return false;
2556 }
2557 // Apply Patterns
2558 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2559 return true;
2560 }
2561 case GICXXCustomAction_GICombiner27:{
2562 SmallVector<Register> GIMatchData_info;
2563 // Match Patterns
2564 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2565 return false;
2566 }
2567 // Apply Patterns
2568 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2569 return true;
2570 }
2571 case GICXXCustomAction_GICombiner28:{
2572 Register GIMatchData_matchinfo;
2573 // Match Patterns
2574 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2575 return false;
2576 }
2577 // Apply Patterns
2578 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2579 return true;
2580 }
2581 case GICXXCustomAction_GICombiner29:{
2582 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2583 // Match Patterns
2584 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2585 return false;
2586 }
2587 // Apply Patterns
2588 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2589 return true;
2590 }
2591 case GICXXCustomAction_GICombiner30:{
2592 PreferredTuple GIMatchData_matchinfo;
2593 // Match Patterns
2594 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2595 return false;
2596 }
2597 // Apply Patterns
2598 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2599 return true;
2600 }
2601 case GICXXCustomAction_GICombiner31:{
2602 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2603 // Match Patterns
2604 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2605 return false;
2606 }
2607 // Apply Patterns
2608 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2609 return true;
2610 }
2611 case GICXXCustomAction_GICombiner32:{
2612 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2613 // Match Patterns
2614 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2615 return false;
2616 }
2617 // Apply Patterns
2618 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2619 return true;
2620 }
2621 case GICXXCustomAction_GICombiner33:{
2622 // Match Patterns
2623 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2624 return false;
2625 }
2626 // Apply Patterns
2627 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2628 return true;
2629 }
2630 case GICXXCustomAction_GICombiner34:{
2631 // Match Patterns
2632 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2633 return false;
2634 }
2635 // Apply Patterns
2636 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2637 return true;
2638 }
2639 case GICXXCustomAction_GICombiner35:{
2640 // Match Patterns
2641 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2642 return false;
2643 }
2644 // Apply Patterns
2645 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2646 return true;
2647 }
2648 case GICXXCustomAction_GICombiner36:{
2649 // Match Patterns
2650 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2651 return false;
2652 }
2653 // Apply Patterns
2654 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2655 return true;
2656 }
2657 case GICXXCustomAction_GICombiner37:{
2658 // Match Patterns
2659 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2660 return false;
2661 }
2662 // Apply Patterns
2663 Helper.replaceInstWithUndef(*State.MIs[0]);
2664 return true;
2665 }
2666 case GICXXCustomAction_GICombiner38:{
2667 // Apply Patterns
2668 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2669 return true;
2670 }
2671 case GICXXCustomAction_GICombiner39:{
2672 // Match Patterns
2673 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2674 return false;
2675 }
2676 // Apply Patterns
2677 Helper.replaceInstWithUndef(*State.MIs[0]);
2678 return true;
2679 }
2680 case GICXXCustomAction_GICombiner40:{
2681 // Match Patterns
2682 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2683 return false;
2684 }
2685 // Apply Patterns
2686 Helper.replaceInstWithUndef(*State.MIs[0]);
2687 return true;
2688 }
2689 case GICXXCustomAction_GICombiner41:{
2690 // Match Patterns
2691 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2692 return false;
2693 }
2694 // Apply Patterns
2695 Helper.replaceInstWithUndef(*State.MIs[0]);
2696 return true;
2697 }
2698 case GICXXCustomAction_GICombiner42:{
2699 // Match Patterns
2700 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2701 return false;
2702 }
2703 // Apply Patterns
2704 Helper.eraseInst(*State.MIs[0]);
2705 return true;
2706 }
2707 case GICXXCustomAction_GICombiner43:{
2708 // Match Patterns
2709 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2710 return false;
2711 }
2712 // Apply Patterns
2713 Helper.replaceInstWithUndef(*State.MIs[0]);
2714 return true;
2715 }
2716 case GICXXCustomAction_GICombiner44:{
2717 // Match Patterns
2718 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2719 return false;
2720 }
2721 // Apply Patterns
2722 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2723 return true;
2724 }
2725 case GICXXCustomAction_GICombiner45:{
2726 Register GIMatchData_info;
2727 // Match Patterns
2728 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2729 return false;
2730 }
2731 // Apply Patterns
2732 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2733 return true;
2734 }
2735 case GICXXCustomAction_GICombiner46:{
2736 Register GIMatchData_info;
2737 // Match Patterns
2738 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2739 return false;
2740 }
2741 // Apply Patterns
2742 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2743 return true;
2744 }
2745 case GICXXCustomAction_GICombiner47:{
2746 Register GIMatchData_matchinfo;
2747 // Match Patterns
2748 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2749 return false;
2750 }
2751 // Apply Patterns
2752 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2753 return true;
2754 }
2755 case GICXXCustomAction_GICombiner48:{
2756 Register GIMatchData_matchinfo;
2757 // Match Patterns
2758 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2759 return false;
2760 }
2761 // Apply Patterns
2762 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2763 return true;
2764 }
2765 case GICXXCustomAction_GICombiner49:{
2766 Register GIMatchData_matchinfo;
2767 // Match Patterns
2768 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2769 return false;
2770 }
2771 // Apply Patterns
2772 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2773 return true;
2774 }
2775 case GICXXCustomAction_GICombiner50:{
2776 Register GIMatchData_matchinfo;
2777 // Match Patterns
2778 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2779 return false;
2780 }
2781 // Apply Patterns
2782 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2783 return true;
2784 }
2785 case GICXXCustomAction_GICombiner51:{
2786 // Match Patterns
2787 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2788 return false;
2789 }
2790 // Apply Patterns
2791 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2792 return true;
2793 }
2794 case GICXXCustomAction_GICombiner52:{
2795 MachineInstr* GIMatchData_matchinfo;
2796 // Match Patterns
2797 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2798 return false;
2799 }
2800 // Apply Patterns
2801 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2802 return true;
2803 }
2804 case GICXXCustomAction_GICombiner53:{
2805 std::tuple<Register, Register> GIMatchData_info;
2806 // Match Patterns
2807 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2808 return false;
2809 }
2810 // Apply Patterns
2811 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2812 return true;
2813 }
2814 case GICXXCustomAction_GICombiner54:{
2815 InstructionStepsMatchInfo GIMatchData_info;
2816 // Match Patterns
2817 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2818 return false;
2819 }
2820 // Apply Patterns
2821 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2822 return true;
2823 }
2824 case GICXXCustomAction_GICombiner55:{
2825 std::optional<int64_t> GIMatchData_matchinfo;
2826 // Match Patterns
2827 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2828 return false;
2829 }
2830 // Apply Patterns
2831 if (GIMatchData_matchinfo) {
2832 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2833 } else {
2834 Helper.replaceInstWithUndef(*State.MIs[0]);
2835 }
2836 return true;
2837 }
2838 case GICXXCustomAction_GICombiner56:{
2839 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2840 // Match Patterns
2841 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2842 return false;
2843 }
2844 // Apply Patterns
2845 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2846 return true;
2847 }
2848 case GICXXCustomAction_GICombiner57:{
2849 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2850 // Match Patterns
2851 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2852 return false;
2853 }
2854 // Apply Patterns
2855 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2856 return true;
2857 }
2858 case GICXXCustomAction_GICombiner58:{
2859 PtrAddChain GIMatchData_matchinfo;
2860 // Match Patterns
2861 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2862 return false;
2863 }
2864 // Apply Patterns
2865 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2866 return true;
2867 }
2868 case GICXXCustomAction_GICombiner59:{
2869 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2870 // Match Patterns
2871 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2872 return false;
2873 }
2874 // Apply Patterns
2875 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2876 return true;
2877 }
2878 case GICXXCustomAction_GICombiner60:{
2879 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2880 // Match Patterns
2881 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2882 return false;
2883 }
2884 // Apply Patterns
2885 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2886 return true;
2887 }
2888 case GICXXCustomAction_GICombiner61:{
2889 int64_t GIMatchData_matchinfo;
2890 // Match Patterns
2891 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2892 return false;
2893 }
2894 // Apply Patterns
2895 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2896 return true;
2897 }
2898 case GICXXCustomAction_GICombiner62:{
2899 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2900 // Match Patterns
2901 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2902 return false;
2903 }
2904 // Apply Patterns
2905 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2906 return true;
2907 }
2908 case GICXXCustomAction_GICombiner63:{
2909 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2910 // Match Patterns
2911 if(![&](){return Helper.matchRedundantBinOpInEquality(*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_GICombiner64:{
2919 std::tuple<Register, int64_t> GIMatchData_info;
2920 // Match Patterns
2921 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2922 return false;
2923 }
2924 // Apply Patterns
2925 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2926 return true;
2927 }
2928 case GICXXCustomAction_GICombiner65:{
2929 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2930 // Match Patterns
2931 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2932 return false;
2933 }
2934 // Apply Patterns
2935 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2936 return true;
2937 }
2938 case GICXXCustomAction_GICombiner66:{
2939 RegisterImmPair GIMatchData_matchinfo;
2940 // Match Patterns
2941 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2942 return false;
2943 }
2944 // Apply Patterns
2945 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2946 return true;
2947 }
2948 case GICXXCustomAction_GICombiner67:{
2949 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2950 // Match Patterns
2951 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2952 return false;
2953 }
2954 // Apply Patterns
2955 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2956 return true;
2957 }
2958 case GICXXCustomAction_GICombiner68:{
2959 unsigned GIMatchData_matchinfo;
2960 // Match Patterns
2961 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2962 return false;
2963 }
2964 // Apply Patterns
2965 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
2966 return true;
2967 }
2968 case GICXXCustomAction_GICombiner69:{
2969 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2970 // Match Patterns
2971 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
2972 return false;
2973 }
2974 // Apply Patterns
2975 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
2976 return true;
2977 }
2978 case GICXXCustomAction_GICombiner70:{
2979 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2980 // Match Patterns
2981 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
2982 return false;
2983 }
2984 // Apply Patterns
2985 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2986 return true;
2987 }
2988 case GICXXCustomAction_GICombiner71:{
2989 Register GIMatchData_matchinfo;
2990 // Match Patterns
2991 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2992 return false;
2993 }
2994 // Apply Patterns
2995 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2996 return true;
2997 }
2998 case GICXXCustomAction_GICombiner72:{
2999 // Match Patterns
3000 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3001 return false;
3002 }
3003 // Apply Patterns
3004 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3005 return true;
3006 }
3007 case GICXXCustomAction_GICombiner73:{
3008 Register GIMatchData_matchinfo;
3009 // Match Patterns
3010 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3011 return false;
3012 }
3013 // Apply Patterns
3014 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3015 return true;
3016 }
3017 case GICXXCustomAction_GICombiner74:{
3018 // Match Patterns
3019 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
3020 return false;
3021 }
3022 // Apply Patterns
3023 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3024 return true;
3025 }
3026 case GICXXCustomAction_GICombiner75:{
3027 Register GIMatchData_matchinfo;
3028 // Match Patterns
3029 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3030 return false;
3031 }
3032 // Apply Patterns
3033 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3034 return true;
3035 }
3036 case GICXXCustomAction_GICombiner76:{
3037 // Match Patterns
3038 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3039 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3040 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3041 return false;
3042 }
3043 // Apply Patterns
3044 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3045 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3046 State.MIs[0]->eraseFromParent();
3047 return true;
3048 }
3049 case GICXXCustomAction_GICombiner77:{
3050 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3051 // Match Patterns
3052 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3053 return false;
3054 }
3055 // Apply Patterns
3056 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3057 return true;
3058 }
3059 case GICXXCustomAction_GICombiner78:{
3060 SmallVector<Register> GIMatchData_info;
3061 // Match Patterns
3062 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3063 return false;
3064 }
3065 // Apply Patterns
3066 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3067 return true;
3068 }
3069 case GICXXCustomAction_GICombiner79:{
3070 MachineInstr * GIMatchData_matchinfo;
3071 // Match Patterns
3072 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3073 return false;
3074 }
3075 // Apply Patterns
3076 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3077 return true;
3078 }
3079 case GICXXCustomAction_GICombiner80:{
3080 // Apply Patterns
3081 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3082 return true;
3083 }
3084 case GICXXCustomAction_GICombiner81:{
3085 // Apply Patterns
3086 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3087 return true;
3088 }
3089 case GICXXCustomAction_GICombiner82:{
3090 APInt GIMatchData_info;
3091 // Match Patterns
3092 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3093 return false;
3094 }
3095 // Apply Patterns
3096 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3097 return true;
3098 }
3099 case GICXXCustomAction_GICombiner83:{
3100 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3101 // Match Patterns
3102 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3103 return false;
3104 }
3105 // Apply Patterns
3106 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3107 return true;
3108 }
3109 case GICXXCustomAction_GICombiner84:{
3110 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3111 // Match Patterns
3112 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3113 return false;
3114 }
3115 // Apply Patterns
3116 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3117 return true;
3118 }
3119 case GICXXCustomAction_GICombiner85:{
3120 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3121 // Match Patterns
3122 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3123 return false;
3124 }
3125 // Apply Patterns
3126 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3127 return true;
3128 }
3129 case GICXXCustomAction_GICombiner86:{
3130 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3131 // Match Patterns
3132 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3133 return false;
3134 }
3135 // Apply Patterns
3136 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3137 return true;
3138 }
3139 case GICXXCustomAction_GICombiner87:{
3140 unsigned GIMatchData_info;
3141 // Match Patterns
3142 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3143 return false;
3144 }
3145 // Apply Patterns
3146 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3147 return true;
3148 }
3149 case GICXXCustomAction_GICombiner88:{
3150 // Match Patterns
3151 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3152 return false;
3153 }
3154 // Apply Patterns
3155 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3156 return true;
3157 }
3158 case GICXXCustomAction_GICombiner89:{
3159 std::pair<Register, Register> GIMatchData_matchinfo;
3160 // Match Patterns
3161 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3162 return false;
3163 }
3164 // Apply Patterns
3165 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3166 return true;
3167 }
3168 case GICXXCustomAction_GICombiner90:{
3169 // Match Patterns
3170 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3171 return false;
3172 }
3173 // Apply Patterns
3174 Helper.applyPtrAddZero(*State.MIs[0]);
3175 return true;
3176 }
3177 case GICXXCustomAction_GICombiner91:{
3178 RegisterImmPair GIMatchData_matchinfo;
3179 // Match Patterns
3180 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3181 return false;
3182 }
3183 // Apply Patterns
3184 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3185 return true;
3186 }
3187 case GICXXCustomAction_GICombiner92:{
3188 ShiftOfShiftedLogic GIMatchData_matchinfo;
3189 // Match Patterns
3190 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3191 return false;
3192 }
3193 // Apply Patterns
3194 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3195 return true;
3196 }
3197 case GICXXCustomAction_GICombiner93:{
3198 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3199 // Match Patterns
3200 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3201 return false;
3202 }
3203 // Apply Patterns
3204 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3205 return true;
3206 }
3207 case GICXXCustomAction_GICombiner94:{
3208 MachineInstr * GIMatchData_matchinfo;
3209 // Match Patterns
3210 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3211 return false;
3212 }
3213 // Apply Patterns
3214 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3215 return true;
3216 }
3217 case GICXXCustomAction_GICombiner95:{
3218 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3219 // Match Patterns
3220 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3221 return false;
3222 }
3223 // Apply Patterns
3224 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3225 return true;
3226 }
3227 case GICXXCustomAction_GICombiner96:{
3228 // Match Patterns
3229 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3230 return false;
3231 }
3232 // Apply Patterns
3233 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3234 return true;
3235 }
3236 case GICXXCustomAction_GICombiner97:{
3237 // Match Patterns
3238 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3239 return false;
3240 }
3241 // Apply Patterns
3242 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3243 return true;
3244 }
3245 case GICXXCustomAction_GICombiner98:{
3246 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3247 // Match Patterns
3248 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3249 return false;
3250 }
3251 // Apply Patterns
3252 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3253 return true;
3254 }
3255 case GICXXCustomAction_GICombiner99:{
3256 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3257 // Match Patterns
3258 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3259 return false;
3260 }
3261 // Apply Patterns
3262 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3263 return true;
3264 }
3265 case GICXXCustomAction_GICombiner100:{
3266 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3267 // Match Patterns
3268 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3269 return false;
3270 }
3271 // Apply Patterns
3272 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3273 return true;
3274 }
3275 case GICXXCustomAction_GICombiner101:{
3276 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3277 // Match Patterns
3278 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3279 return false;
3280 }
3281 // Apply Patterns
3282 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3283 return true;
3284 }
3285 case GICXXCustomAction_GICombiner102:{
3286 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3287 // Match Patterns
3288 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3289 return false;
3290 }
3291 // Apply Patterns
3292 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3293 return true;
3294 }
3295 case GICXXCustomAction_GICombiner103:{
3296 APInt GIMatchData_matchinfo;
3297 // Match Patterns
3298 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3299 return false;
3300 }
3301 // Apply Patterns
3302 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3303 return true;
3304 }
3305 case GICXXCustomAction_GICombiner104:{
3306 ConstantFP* GIMatchData_matchinfo;
3307 // Match Patterns
3308 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3309 return false;
3310 }
3311 // Apply Patterns
3312 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3313 return true;
3314 }
3315 case GICXXCustomAction_GICombiner105:{
3316 ConstantFP* GIMatchData_matchinfo;
3317 // Match Patterns
3318 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3319 return false;
3320 }
3321 // Apply Patterns
3322 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3323 return true;
3324 }
3325 case GICXXCustomAction_GICombiner106:{
3326 APInt GIMatchData_matchinfo;
3327 // Match Patterns
3328 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3329 return false;
3330 }
3331 // Apply Patterns
3332 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3333 return true;
3334 }
3335 case GICXXCustomAction_GICombiner107:{
3336 // Match Patterns
3337 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3338 return false;
3339 }
3340 // Apply Patterns
3341 Helper.applyUMulHToLShr(*State.MIs[0]);
3342 return true;
3343 }
3344 case GICXXCustomAction_GICombiner108:{
3345 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3346 // Match Patterns
3347 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3348 return false;
3349 }
3350 // Apply Patterns
3351 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3352 return true;
3353 }
3354 case GICXXCustomAction_GICombiner109:{
3355 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3356 // Match Patterns
3357 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3358 return false;
3359 }
3360 // Apply Patterns
3361 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3362 return true;
3363 }
3364 case GICXXCustomAction_GICombiner110:{
3365 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3366 // Match Patterns
3367 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3368 GIMatchData_info);}()) {
3369 return false;
3370 }
3371 // Apply Patterns
3372 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3373 return true;
3374 }
3375 case GICXXCustomAction_GICombiner111:{
3376 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3377 // Match Patterns
3378 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3379 GIMatchData_info);}()) {
3380 return false;
3381 }
3382 // Apply Patterns
3383 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3384 return true;
3385 }
3386 case GICXXCustomAction_GICombiner112:{
3387 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3388 // Match Patterns
3389 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3390 GIMatchData_info);}()) {
3391 return false;
3392 }
3393 // Apply Patterns
3394 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3395 return true;
3396 }
3397 case GICXXCustomAction_GICombiner113:{
3398 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3399 // Match Patterns
3400 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3401 *State.MIs[0], GIMatchData_info);}()) {
3402 return false;
3403 }
3404 // Apply Patterns
3405 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3406 return true;
3407 }
3408 case GICXXCustomAction_GICombiner114:{
3409 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3410 // Match Patterns
3411 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3412 GIMatchData_info);}()) {
3413 return false;
3414 }
3415 // Apply Patterns
3416 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3417 return true;
3418 }
3419 case GICXXCustomAction_GICombiner115:{
3420 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3421 // Match Patterns
3422 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3423 GIMatchData_info);}()) {
3424 return false;
3425 }
3426 // Apply Patterns
3427 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3428 return true;
3429 }
3430 case GICXXCustomAction_GICombiner116:{
3431 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3432 // Match Patterns
3433 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3434 GIMatchData_info);}()) {
3435 return false;
3436 }
3437 // Apply Patterns
3438 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3439 return true;
3440 }
3441 case GICXXCustomAction_GICombiner117:{
3442 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3443 // Match Patterns
3444 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3445 *State.MIs[0], GIMatchData_info);}()) {
3446 return false;
3447 }
3448 // Apply Patterns
3449 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3450 return true;
3451 }
3452 case GICXXCustomAction_GICombiner118:{
3453 unsigned GIMatchData_select_op_no;
3454 // Match Patterns
3455 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3456 return false;
3457 }
3458 // Apply Patterns
3459 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3460 return true;
3461 }
3462 case GICXXCustomAction_GICombiner119:{
3463 // Match Patterns
3464 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3465 return false;
3466 }
3467 // Apply Patterns
3468 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3469 return true;
3470 }
3471 case GICXXCustomAction_GICombiner120:{
3472 // Match Patterns
3473 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3474 return false;
3475 }
3476 // Apply Patterns
3477 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3478 return true;
3479 }
3480 case GICXXCustomAction_GICombiner121:{
3481 // Match Patterns
3482 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3483 return false;
3484 }
3485 // Apply Patterns
3486 Helper.applyUDivByPow2(*State.MIs[0]);
3487 return true;
3488 }
3489 case GICXXCustomAction_GICombiner122:{
3490 // Match Patterns
3491 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3492 return false;
3493 }
3494 // Apply Patterns
3495 Helper.applySDivByPow2(*State.MIs[0]);
3496 return true;
3497 }
3498 case GICXXCustomAction_GICombiner123:{
3499 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3500 // Match Patterns
3501 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3502 return false;
3503 }
3504 // Apply Patterns
3505 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3506 return true;
3507 }
3508 case GICXXCustomAction_GICombiner124:{
3509 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3510 // Match Patterns
3511 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3512 return false;
3513 }
3514 // Apply Patterns
3515 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3516 return true;
3517 }
3518 case GICXXCustomAction_GICombiner125:{
3519 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3520 // Match Patterns
3521 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3522 return false;
3523 }
3524 // Apply Patterns
3525 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3526 return true;
3527 }
3528 case GICXXCustomAction_GICombiner126:{
3529 Register GIMatchData_matchinfo;
3530 // Match Patterns
3531 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3532 return false;
3533 }
3534 // Apply Patterns
3535 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3536 return true;
3537 }
3538 case GICXXCustomAction_GICombiner127:{
3539 // Match Patterns
3540 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3541 return false;
3542 }
3543 // Apply Patterns
3544 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3545 return true;
3546 }
3547 case GICXXCustomAction_GICombiner128:{
3548 // Match Patterns
3549 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3550 return false;
3551 }
3552 // Apply Patterns
3553 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3554 return true;
3555 }
3556 case GICXXCustomAction_GICombiner129:{
3557 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3558 // Match Patterns
3559 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3560 return false;
3561 }
3562 // Apply Patterns
3563 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3564 return true;
3565 }
3566 case GICXXCustomAction_GICombiner130:{
3567 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3568 // Match Patterns
3569 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3570 return false;
3571 }
3572 // Apply Patterns
3573 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3574 return true;
3575 }
3576 case GICXXCustomAction_GICombiner131:{
3577 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3578 // Match Patterns
3579 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3580 return false;
3581 }
3582 // Apply Patterns
3583 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3584 return true;
3585 }
3586 case GICXXCustomAction_GICombiner132:{
3587 SmallVector<Register> GIMatchData_matchinfo;
3588 // Match Patterns
3589 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3590 return false;
3591 }
3592 // Apply Patterns
3593 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3594 return true;
3595 }
3596 case GICXXCustomAction_GICombiner133:{
3597 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3598 // Match Patterns
3599 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3600 return false;
3601 }
3602 // Apply Patterns
3603 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3604 return true;
3605 }
3606 case GICXXCustomAction_GICombiner134:{
3607 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3608 // Match Patterns
3609 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3610 return false;
3611 }
3612 // Apply Patterns
3613 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3614 return true;
3615 }
3616 case GICXXCustomAction_GICombiner135:{
3617 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3618 // Match Patterns
3619 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3620 return false;
3621 }
3622 // Apply Patterns
3623 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3624 return true;
3625 }
3626 case GICXXCustomAction_GICombiner136:{
3627 SmallVector<Register> GIMatchData_matchinfo;
3628 // Match Patterns
3629 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3630 return false;
3631 }
3632 // Apply Patterns
3633 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3634 return true;
3635 }
3636 case GICXXCustomAction_GICombiner137:{
3637 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3638 // Match Patterns
3639 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3640 return false;
3641 }
3642 // Apply Patterns
3643 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3644 return true;
3645 }
3646 case GICXXCustomAction_GICombiner138:{
3647 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3648 // Match Patterns
3649 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3650 return false;
3651 }
3652 // Apply Patterns
3653 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3654 return true;
3655 }
3656 case GICXXCustomAction_GICombiner139:{
3657 Register GIMatchData_matchinfo;
3658 // Match Patterns
3659 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3660 return false;
3661 }
3662 // Apply Patterns
3663 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3664 return true;
3665 }
3666 case GICXXCustomAction_GICombiner140:{
3667 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3668 // Match Patterns
3669 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3670 return false;
3671 }
3672 // Apply Patterns
3673 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3674 return true;
3675 }
3676 case GICXXCustomAction_GICombiner141:{
3677 SmallVector<Register> GIMatchData_info;
3678 // Match Patterns
3679 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3680 return false;
3681 }
3682 // Apply Patterns
3683 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3684 return true;
3685 }
3686 case GICXXCustomAction_GICombiner142:{
3687 Register GIMatchData_src;
3688 // Match Patterns
3689 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3690 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3691 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3692 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3693 return false;
3694
3695 // Check counts match.
3696 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3697 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3698 if (NumMergeSrcs != NumUnmergeDefs)
3699 return false;
3700
3701 // Verify all merge sources match unmerge defs in order.
3702 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3703 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3704 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3705
3706 if (MergeSrc != UnmergeDef)
3707 return false;
3708
3709 if (!MRI.hasOneNonDBGUse(MergeSrc))
3710 return false;
3711 }
3712
3713 // Check size compatibility.
3714 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3715 LLT SrcTy = MRI.getType(GIMatchData_src);
3716 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3717 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3718 return false;
3719
3720 // Check bitcast legality.
3721 if (SrcTy != DstTy) {
3722 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3723 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3724 if (!Helper.isLegalOrBeforeLegalizer(Query))
3725 return false;
3726 }
3727
3728 return true;}()) {
3729 return false;
3730 }
3731 // Apply Patterns
3732 LLT SrcTy = MRI.getType(GIMatchData_src);
3733 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3734
3735 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3736
3737 if (SrcTy == DstTy) {
3738 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3739 } else {
3740 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3741 }
3742
3743 State.MIs[0]->eraseFromParent();
3744 return true;
3745 }
3746 case GICXXCustomAction_GICombiner143:{
3747 SmallVector<APInt, 8> GIMatchData_info;
3748 // Match Patterns
3749 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3750 return false;
3751 }
3752 // Apply Patterns
3753 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3754 return true;
3755 }
3756 case GICXXCustomAction_GICombiner144:{
3757 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3758 // Match Patterns
3759 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3760 return false;
3761 }
3762 // Apply Patterns
3763 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3764 return true;
3765 }
3766 case GICXXCustomAction_GICombiner145:{
3767 // Match Patterns
3768 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3769 return false;
3770 }
3771 // Apply Patterns
3772 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3773 return true;
3774 }
3775 case GICXXCustomAction_GICombiner146:{
3776 // Match Patterns
3777 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3778 return false;
3779 }
3780 // Apply Patterns
3781 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3782 return true;
3783 }
3784 case GICXXCustomAction_GICombiner147:{
3785 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3786 // Match Patterns
3787 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3788 return false;
3789 }
3790 // Apply Patterns
3791 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3792 return true;
3793 }
3794 case GICXXCustomAction_GICombiner148:{
3795 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3796 // Match Patterns
3797 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3798 return false;
3799 }
3800 // Apply Patterns
3801 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3802 return true;
3803 }
3804 case GICXXCustomAction_GICombiner149:{
3805 Register GIMatchData_unmergeSrc;
3806 // Match Patterns
3807 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3808 return false;
3809 }
3810 // Apply Patterns
3811 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3812 return true;
3813 }
3814 case GICXXCustomAction_GICombiner150:{
3815 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3816 // Match Patterns
3817 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3818 return false;
3819 }
3820 // Apply Patterns
3821 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3822 return true;
3823 }
3824 case GICXXCustomAction_GICombiner151:{
3825 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3826 // Match Patterns
3827 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3828 return false;
3829 }
3830 // Apply Patterns
3831 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3832 return true;
3833 }
3834 case GICXXCustomAction_GICombiner152:{
3835 Register GIMatchData_matchinfo;
3836 // Match Patterns
3837 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3838 return false;
3839 }
3840 // Apply Patterns
3841 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3842 return true;
3843 }
3844 case GICXXCustomAction_GICombiner153:{
3845 Register GIMatchData_matchinfo;
3846 // Match Patterns
3847 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3848 return false;
3849 }
3850 // Apply Patterns
3851 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3852 return true;
3853 }
3854 case GICXXCustomAction_GICombiner154:{
3855 LshrOfTruncOfLshr GIMatchData_matchinfo;
3856 // Match Patterns
3857 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3858 return false;
3859 }
3860 // Apply Patterns
3861 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3862 return true;
3863 }
3864 case GICXXCustomAction_GICombiner155:{
3865 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3866 // Match Patterns
3867 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3868 return false;
3869 }
3870 // Apply Patterns
3871 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3872 return true;
3873 }
3874 case GICXXCustomAction_GICombiner156:{
3875 Register GIMatchData_matchinfo;
3876 // Match Patterns
3877 if(![&](){return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getValueTracking(), GIMatchData_matchinfo);}()) {
3878 return false;
3879 }
3880 // Apply Patterns
3881 applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3882 return true;
3883 }
3884 case GICXXCustomAction_GICombiner157:{
3885 std::pair<uint64_t, uint64_t> GIMatchData_matchinfo;
3886 // Match Patterns
3887 if(![&](){return matchFoldGlobalOffset(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
3888 return false;
3889 }
3890 // Apply Patterns
3891 applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3892 return true;
3893 }
3894 case GICXXCustomAction_GICombiner158:{
3895 std::tuple<Register, Register, bool> GIMatchData_matchinfo;
3896 // Match Patterns
3897 if(![&](){return matchExtAddvToDotAddv(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
3898 return false;
3899 }
3900 // Apply Patterns
3901 applyExtAddvToDotAddv(*State.MIs[0], MRI, B, Observer, STI, GIMatchData_matchinfo);
3902 return true;
3903 }
3904 case GICXXCustomAction_GICombiner159:{
3905 std::pair<Register, bool> GIMatchData_matchinfo;
3906 // Match Patterns
3907 if(![&](){return matchExtUaddvToUaddlv(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
3908 return false;
3909 }
3910 // Apply Patterns
3911 applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3912 return true;
3913 }
3914 case GICXXCustomAction_GICombiner160:{
3915 // Match Patterns
3916 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());}()) {
3917 return false;
3918 }
3919 // Apply Patterns
3920 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());
3921 return true;
3922 }
3923 }
3924 llvm_unreachable("Unknown Apply Action");
3925}
3926#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3927#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
3928#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
3929#define GIMT_Encode8(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24), uint8_t(uint64_t(Val) >> 32), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 56)
3930#else
3931#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
3932#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3933#define GIMT_Encode8(Val) uint8_t(uint64_t(Val) >> 56), uint8_t(uint64_t(Val) >> 48), uint8_t(uint64_t(Val) >> 40), uint8_t(uint64_t(Val) >> 32), uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3934#endif
3935const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const {
3936 constexpr static uint8_t MatchTable0[] = {
3937 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(313), /*)*//*default:*//*Label 108*/ GIMT_Encode4(8533),
3938 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1182), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3939 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1194),
3940 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1985),
3941 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2451),
3942 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(2715),
3943 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2817),
3944 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(2930),
3945 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3015), GIMT_Encode4(0), GIMT_Encode4(0),
3946 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3122),
3947 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3403),
3948 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(3836), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3949 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(3937), GIMT_Encode4(0),
3950 /* 234 */ /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(3949), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3951 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(3961), GIMT_Encode4(0),
3952 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(4028),
3953 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(4105),
3954 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(4170),
3955 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 17*/ GIMT_Encode4(4182),
3956 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 18*/ GIMT_Encode4(4194),
3957 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 19*/ GIMT_Encode4(4237),
3958 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 20*/ GIMT_Encode4(4270),
3959 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 21*/ GIMT_Encode4(4313), GIMT_Encode4(0), GIMT_Encode4(0),
3960 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 22*/ GIMT_Encode4(4377),
3961 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 23*/ GIMT_Encode4(4399), GIMT_Encode4(0), GIMT_Encode4(0),
3962 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 24*/ GIMT_Encode4(4421), GIMT_Encode4(0), GIMT_Encode4(0),
3963 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 25*/ GIMT_Encode4(4443),
3964 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 26*/ GIMT_Encode4(4455),
3965 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 27*/ GIMT_Encode4(4467), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3966 /* 350 */ /*TargetOpcode::G_STORE*//*Label 28*/ GIMT_Encode4(4479), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3967 /* 486 */ /*TargetOpcode::G_ANYEXT*//*Label 29*/ GIMT_Encode4(4491),
3968 /* 490 */ /*TargetOpcode::G_TRUNC*//*Label 30*/ GIMT_Encode4(4619), GIMT_Encode4(0), GIMT_Encode4(0),
3969 /* 502 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 31*/ GIMT_Encode4(5031), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3970 /* 522 */ /*TargetOpcode::G_SEXT*//*Label 32*/ GIMT_Encode4(5064),
3971 /* 526 */ /*TargetOpcode::G_SEXT_INREG*//*Label 33*/ GIMT_Encode4(5139),
3972 /* 530 */ /*TargetOpcode::G_ZEXT*//*Label 34*/ GIMT_Encode4(5205),
3973 /* 534 */ /*TargetOpcode::G_SHL*//*Label 35*/ GIMT_Encode4(5335),
3974 /* 538 */ /*TargetOpcode::G_LSHR*//*Label 36*/ GIMT_Encode4(5533),
3975 /* 542 */ /*TargetOpcode::G_ASHR*//*Label 37*/ GIMT_Encode4(5714),
3976 /* 546 */ /*TargetOpcode::G_FSHL*//*Label 38*/ GIMT_Encode4(5877),
3977 /* 550 */ /*TargetOpcode::G_FSHR*//*Label 39*/ GIMT_Encode4(5920),
3978 /* 554 */ /*TargetOpcode::G_ROTR*//*Label 40*/ GIMT_Encode4(5963),
3979 /* 558 */ /*TargetOpcode::G_ROTL*//*Label 41*/ GIMT_Encode4(5987),
3980 /* 562 */ /*TargetOpcode::G_ICMP*//*Label 42*/ GIMT_Encode4(6011),
3981 /* 566 */ /*TargetOpcode::G_FCMP*//*Label 43*/ GIMT_Encode4(6067), GIMT_Encode4(0), GIMT_Encode4(0),
3982 /* 578 */ /*TargetOpcode::G_SELECT*//*Label 44*/ GIMT_Encode4(6079),
3983 /* 582 */ /*TargetOpcode::G_UADDO*//*Label 45*/ GIMT_Encode4(6174),
3984 /* 586 */ /*TargetOpcode::G_UADDE*//*Label 46*/ GIMT_Encode4(6197),
3985 /* 590 */ /*TargetOpcode::G_USUBO*//*Label 47*/ GIMT_Encode4(6209),
3986 /* 594 */ /*TargetOpcode::G_USUBE*//*Label 48*/ GIMT_Encode4(6221),
3987 /* 598 */ /*TargetOpcode::G_SADDO*//*Label 49*/ GIMT_Encode4(6233),
3988 /* 602 */ /*TargetOpcode::G_SADDE*//*Label 50*/ GIMT_Encode4(6256),
3989 /* 606 */ /*TargetOpcode::G_SSUBO*//*Label 51*/ GIMT_Encode4(6268),
3990 /* 610 */ /*TargetOpcode::G_SSUBE*//*Label 52*/ GIMT_Encode4(6280),
3991 /* 614 */ /*TargetOpcode::G_UMULO*//*Label 53*/ GIMT_Encode4(6292),
3992 /* 618 */ /*TargetOpcode::G_SMULO*//*Label 54*/ GIMT_Encode4(6326),
3993 /* 622 */ /*TargetOpcode::G_UMULH*//*Label 55*/ GIMT_Encode4(6360),
3994 /* 626 */ /*TargetOpcode::G_SMULH*//*Label 56*/ GIMT_Encode4(6383),
3995 /* 630 */ /*TargetOpcode::G_UADDSAT*//*Label 57*/ GIMT_Encode4(6395),
3996 /* 634 */ /*TargetOpcode::G_SADDSAT*//*Label 58*/ GIMT_Encode4(6407), GIMT_Encode4(0), GIMT_Encode4(0),
3997 /* 646 */ /*TargetOpcode::G_USHLSAT*//*Label 59*/ GIMT_Encode4(6419),
3998 /* 650 */ /*TargetOpcode::G_SSHLSAT*//*Label 60*/ GIMT_Encode4(6442),
3999 /* 654 */ /*TargetOpcode::G_SMULFIX*//*Label 61*/ GIMT_Encode4(6465),
4000 /* 658 */ /*TargetOpcode::G_UMULFIX*//*Label 62*/ GIMT_Encode4(6477),
4001 /* 662 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 63*/ GIMT_Encode4(6489),
4002 /* 666 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 64*/ GIMT_Encode4(6501), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4003 /* 686 */ /*TargetOpcode::G_FADD*//*Label 65*/ GIMT_Encode4(6513),
4004 /* 690 */ /*TargetOpcode::G_FSUB*//*Label 66*/ GIMT_Encode4(6654),
4005 /* 694 */ /*TargetOpcode::G_FMUL*//*Label 67*/ GIMT_Encode4(6743),
4006 /* 698 */ /*TargetOpcode::G_FMA*//*Label 68*/ GIMT_Encode4(6831),
4007 /* 702 */ /*TargetOpcode::G_FMAD*//*Label 69*/ GIMT_Encode4(6854),
4008 /* 706 */ /*TargetOpcode::G_FDIV*//*Label 70*/ GIMT_Encode4(6877),
4009 /* 710 */ /*TargetOpcode::G_FREM*//*Label 71*/ GIMT_Encode4(6922), GIMT_Encode4(0), GIMT_Encode4(0),
4010 /* 722 */ /*TargetOpcode::G_FPOWI*//*Label 72*/ GIMT_Encode4(6934), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4011 /* 742 */ /*TargetOpcode::G_FLOG2*//*Label 73*/ GIMT_Encode4(6956), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4012 /* 758 */ /*TargetOpcode::G_FNEG*//*Label 74*/ GIMT_Encode4(6978),
4013 /* 762 */ /*TargetOpcode::G_FPEXT*//*Label 75*/ GIMT_Encode4(7029),
4014 /* 766 */ /*TargetOpcode::G_FPTRUNC*//*Label 76*/ GIMT_Encode4(7051),
4015 /* 770 */ /*TargetOpcode::G_FPTOSI*//*Label 77*/ GIMT_Encode4(7094),
4016 /* 774 */ /*TargetOpcode::G_FPTOUI*//*Label 78*/ GIMT_Encode4(7116),
4017 /* 778 */ /*TargetOpcode::G_SITOFP*//*Label 79*/ GIMT_Encode4(7138),
4018 /* 782 */ /*TargetOpcode::G_UITOFP*//*Label 80*/ GIMT_Encode4(7165), GIMT_Encode4(0), GIMT_Encode4(0),
4019 /* 794 */ /*TargetOpcode::G_FABS*//*Label 81*/ GIMT_Encode4(7192), GIMT_Encode4(0), GIMT_Encode4(0),
4020 /* 806 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(7271),
4021 /* 810 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(7301),
4022 /* 814 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(7335),
4023 /* 818 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(7369),
4024 /* 822 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(7381),
4025 /* 826 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(7393),
4026 /* 830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(7427), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4027 /* 874 */ /*TargetOpcode::G_PTR_ADD*//*Label 89*/ GIMT_Encode4(7461), GIMT_Encode4(0),
4028 /* 882 */ /*TargetOpcode::G_SMIN*//*Label 90*/ GIMT_Encode4(7551),
4029 /* 886 */ /*TargetOpcode::G_SMAX*//*Label 91*/ GIMT_Encode4(7585),
4030 /* 890 */ /*TargetOpcode::G_UMIN*//*Label 92*/ GIMT_Encode4(7619),
4031 /* 894 */ /*TargetOpcode::G_UMAX*//*Label 93*/ GIMT_Encode4(7653),
4032 /* 898 */ /*TargetOpcode::G_ABS*//*Label 94*/ GIMT_Encode4(7687), GIMT_Encode4(0), GIMT_Encode4(0),
4033 /* 910 */ /*TargetOpcode::G_BR*//*Label 95*/ GIMT_Encode4(7699), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4034 /* 930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(7711),
4035 /* 934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 97*/ GIMT_Encode4(7841),
4036 /* 938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 98*/ GIMT_Encode4(8218), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4037 /* 962 */ /*TargetOpcode::G_CTLZ*//*Label 99*/ GIMT_Encode4(8284),
4038 /* 966 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 100*/ GIMT_Encode4(8296), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4039 /* 982 */ /*TargetOpcode::G_BITREVERSE*//*Label 101*/ GIMT_Encode4(8308),
4040 /* 986 */ /*TargetOpcode::G_FCEIL*//*Label 102*/ GIMT_Encode4(8397), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4041 /* 1034 */ /*TargetOpcode::G_FSQRT*//*Label 103*/ GIMT_Encode4(8419),
4042 /* 1038 */ /*TargetOpcode::G_FFLOOR*//*Label 104*/ GIMT_Encode4(8441),
4043 /* 1042 */ /*TargetOpcode::G_FRINT*//*Label 105*/ GIMT_Encode4(8463),
4044 /* 1046 */ /*TargetOpcode::G_FNEARBYINT*//*Label 106*/ GIMT_Encode4(8485), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4045 /* 1178 */ /*TargetOpcode::G_VECREDUCE_ADD*//*Label 107*/ GIMT_Encode4(8507),
4046 /* 1182 */ // Label 0: @1182
4047 /* 1182 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1193), // Rule ID 15 //
4048 /* 1187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4049 /* 1190 */ // MIs[0] d
4050 /* 1190 */ // No operand predicates
4051 /* 1190 */ // MIs[0] s
4052 /* 1190 */ // No operand predicates
4053 /* 1190 */ // Combiner Rule #15: copy_prop
4054 /* 1190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4055 /* 1193 */ // Label 109: @1193
4056 /* 1193 */ GIM_Reject,
4057 /* 1194 */ // Label 1: @1194
4058 /* 1194 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1205), // Rule ID 18 //
4059 /* 1199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4060 /* 1202 */ // Combiner Rule #18: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4061 /* 1202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4062 /* 1205 */ // Label 110: @1205
4063 /* 1205 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1216), // Rule ID 96 //
4064 /* 1210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4065 /* 1213 */ // Combiner Rule #80: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4066 /* 1213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4067 /* 1216 */ // Label 111: @1216
4068 /* 1216 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1227), // Rule ID 145 //
4069 /* 1221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
4070 /* 1224 */ // Combiner Rule #106: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4071 /* 1224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4072 /* 1227 */ // Label 112: @1227
4073 /* 1227 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1238), // Rule ID 247 //
4074 /* 1232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4075 /* 1235 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_ADD'
4076 /* 1235 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4077 /* 1238 */ // Label 113: @1238
4078 /* 1238 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1249), // Rule ID 291 //
4079 /* 1243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4080 /* 1246 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_ADD'
4081 /* 1246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4082 /* 1249 */ // Label 114: @1249
4083 /* 1249 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1260), // Rule ID 327 //
4084 /* 1254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
4085 /* 1257 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4086 /* 1257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4087 /* 1260 */ // Label 115: @1260
4088 /* 1260 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1348), // Rule ID 389 //
4089 /* 1265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
4090 /* 1268 */ // MIs[0] dst
4091 /* 1268 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4092 /* 1272 */ // MIs[0] __add_shift_match_0.shl_neg
4093 /* 1272 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4094 /* 1276 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4095 /* 1280 */ // MIs[1] __add_shift_match_0.neg_y
4096 /* 1280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4097 /* 1284 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4098 /* 1288 */ // MIs[2] __add_shift_match_0.zero
4099 /* 1288 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4100 /* 1292 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4101 /* 1296 */ // MIs[3] Operand 1
4102 /* 1296 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4103 /* 1307 */ // MIs[2] y
4104 /* 1307 */ // No operand predicates
4105 /* 1307 */ // MIs[1] n
4106 /* 1307 */ // No operand predicates
4107 /* 1307 */ // MIs[0] x
4108 /* 1307 */ // No operand predicates
4109 /* 1307 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
4110 /* 1311 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4111 /* 1313 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4112 /* 1316 */ // Combiner Rule #238: add_shift @ [__add_shift_match_0[1]]
4113 /* 1316 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4114 /* 1319 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4115 /* 1324 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4116 /* 1328 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4117 /* 1332 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4118 /* 1336 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4119 /* 1340 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4120 /* 1344 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4121 /* 1347 */ GIR_EraseRootFromParent_Done,
4122 /* 1348 */ // Label 116: @1348
4123 /* 1348 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1436), // Rule ID 388 //
4124 /* 1353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
4125 /* 1356 */ // MIs[0] dst
4126 /* 1356 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4127 /* 1360 */ // MIs[0] x
4128 /* 1360 */ // No operand predicates
4129 /* 1360 */ // MIs[0] __add_shift_match_0.shl_neg
4130 /* 1360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4131 /* 1364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4132 /* 1368 */ // MIs[1] __add_shift_match_0.neg_y
4133 /* 1368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4134 /* 1372 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4135 /* 1376 */ // MIs[2] __add_shift_match_0.zero
4136 /* 1376 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4137 /* 1380 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4138 /* 1384 */ // MIs[3] Operand 1
4139 /* 1384 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4140 /* 1395 */ // MIs[2] y
4141 /* 1395 */ // No operand predicates
4142 /* 1395 */ // MIs[1] n
4143 /* 1395 */ // No operand predicates
4144 /* 1395 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
4145 /* 1399 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4146 /* 1401 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4147 /* 1404 */ // Combiner Rule #238: add_shift @ [__add_shift_match_0[0]]
4148 /* 1404 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4149 /* 1407 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4150 /* 1412 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4151 /* 1416 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4152 /* 1420 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4153 /* 1424 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4154 /* 1428 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4155 /* 1432 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4156 /* 1435 */ GIR_EraseRootFromParent_Done,
4157 /* 1436 */ // Label 117: @1436
4158 /* 1436 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1470), // Rule ID 2 //
4159 /* 1441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4160 /* 1444 */ // MIs[0] root
4161 /* 1444 */ // No operand predicates
4162 /* 1444 */ // MIs[0] sub
4163 /* 1444 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4164 /* 1448 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4165 /* 1452 */ // MIs[1] Operand 1
4166 /* 1452 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4167 /* 1456 */ // MIs[1] A
4168 /* 1456 */ // No operand predicates
4169 /* 1456 */ // MIs[0] B
4170 /* 1456 */ // No operand predicates
4171 /* 1456 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4172 /* 1458 */ // Combiner Rule #2: ZeroMinusAPlusB
4173 /* 1458 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4174 /* 1461 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4175 /* 1463 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4176 /* 1465 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4177 /* 1469 */ GIR_EraseRootFromParent_Done,
4178 /* 1470 */ // Label 118: @1470
4179 /* 1470 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1507), // Rule ID 14 //
4180 /* 1475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4181 /* 1478 */ // MIs[0] root
4182 /* 1478 */ // No operand predicates
4183 /* 1478 */ // MIs[0] sub
4184 /* 1478 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4185 /* 1482 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4186 /* 1486 */ // MIs[1] A
4187 /* 1486 */ // No operand predicates
4188 /* 1486 */ // MIs[1] c1
4189 /* 1486 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4190 /* 1490 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4191 /* 1494 */ // MIs[2] imm1
4192 /* 1494 */ // No operand predicates
4193 /* 1494 */ // MIs[0] c2
4194 /* 1494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4195 /* 1498 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4196 /* 1502 */ // MIs[3] imm2
4197 /* 1502 */ // No operand predicates
4198 /* 1502 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4199 /* 1504 */ // Combiner Rule #14: AMinusC1PlusC2
4200 /* 1504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4201 /* 1507 */ // Label 119: @1507
4202 /* 1507 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1541), // Rule ID 5 //
4203 /* 1512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4204 /* 1515 */ // MIs[0] root
4205 /* 1515 */ // No operand predicates
4206 /* 1515 */ // MIs[0] sub
4207 /* 1515 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4208 /* 1519 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4209 /* 1523 */ // MIs[1] B
4210 /* 1523 */ // No operand predicates
4211 /* 1523 */ // MIs[1] A
4212 /* 1523 */ // No operand predicates
4213 /* 1523 */ // MIs[0] A
4214 /* 1523 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4215 /* 1528 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4216 /* 1533 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4217 /* 1535 */ // Combiner Rule #5: BMinusAPlusA
4218 /* 1535 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4219 /* 1540 */ GIR_EraseRootFromParent_Done,
4220 /* 1541 */ // Label 120: @1541
4221 /* 1541 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1575), // Rule ID 134 //
4222 /* 1546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4223 /* 1549 */ // MIs[0] dst
4224 /* 1549 */ // No operand predicates
4225 /* 1549 */ // MIs[0] __add_sub_reg_match_0.tmp
4226 /* 1549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4227 /* 1553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4228 /* 1557 */ // MIs[1] src
4229 /* 1557 */ // No operand predicates
4230 /* 1557 */ // MIs[1] __add_sub_reg_match_0.x
4231 /* 1557 */ // No operand predicates
4232 /* 1557 */ // MIs[0] __add_sub_reg_match_0.x
4233 /* 1557 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4234 /* 1562 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4235 /* 1567 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4236 /* 1569 */ // Combiner Rule #96: add_sub_reg @ [__add_sub_reg_match_0[1]]
4237 /* 1569 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4238 /* 1574 */ GIR_EraseRootFromParent_Done,
4239 /* 1575 */ // Label 121: @1575
4240 /* 1575 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1620), // Rule ID 7 //
4241 /* 1580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4242 /* 1583 */ // MIs[0] root
4243 /* 1583 */ // No operand predicates
4244 /* 1583 */ // MIs[0] sub1
4245 /* 1583 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4246 /* 1587 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4247 /* 1591 */ // MIs[1] A
4248 /* 1591 */ // No operand predicates
4249 /* 1591 */ // MIs[1] B
4250 /* 1591 */ // No operand predicates
4251 /* 1591 */ // MIs[0] sub2
4252 /* 1591 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4253 /* 1595 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4254 /* 1599 */ // MIs[2] B
4255 /* 1599 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4256 /* 1604 */ // MIs[2] C
4257 /* 1604 */ // No operand predicates
4258 /* 1604 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4259 /* 1606 */ // Combiner Rule #7: AMinusBPlusBMinusC
4260 /* 1606 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4261 /* 1609 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4262 /* 1611 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4263 /* 1615 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4264 /* 1619 */ GIR_EraseRootFromParent_Done,
4265 /* 1620 */ // Label 122: @1620
4266 /* 1620 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1665), // Rule ID 6 //
4267 /* 1625 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4268 /* 1628 */ // MIs[0] root
4269 /* 1628 */ // No operand predicates
4270 /* 1628 */ // MIs[0] sub1
4271 /* 1628 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4272 /* 1632 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4273 /* 1636 */ // MIs[1] A
4274 /* 1636 */ // No operand predicates
4275 /* 1636 */ // MIs[1] B
4276 /* 1636 */ // No operand predicates
4277 /* 1636 */ // MIs[0] sub2
4278 /* 1636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4279 /* 1640 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4280 /* 1644 */ // MIs[2] C
4281 /* 1644 */ // No operand predicates
4282 /* 1644 */ // MIs[2] A
4283 /* 1644 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4284 /* 1649 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4285 /* 1651 */ // Combiner Rule #6: AMinusBPlusCMinusA
4286 /* 1651 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4287 /* 1654 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4288 /* 1656 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4289 /* 1660 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4290 /* 1664 */ GIR_EraseRootFromParent_Done,
4291 /* 1665 */ // Label 123: @1665
4292 /* 1665 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1694), // Rule ID 398 //
4293 /* 1670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
4294 /* 1673 */ // MIs[0] dst
4295 /* 1673 */ // No operand predicates
4296 /* 1673 */ // MIs[0] ext1
4297 /* 1673 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4298 /* 1677 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4299 /* 1681 */ // MIs[1] src1
4300 /* 1681 */ // No operand predicates
4301 /* 1681 */ // MIs[0] ext2
4302 /* 1681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4303 /* 1685 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4304 /* 1689 */ // MIs[2] src2
4305 /* 1689 */ // No operand predicates
4306 /* 1689 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4307 /* 1691 */ // Combiner Rule #247: push_add_through_sext
4308 /* 1691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4309 /* 1694 */ // Label 124: @1694
4310 /* 1694 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1729), // Rule ID 41 //
4311 /* 1699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
4312 /* 1702 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4313 /* 1708 */ // MIs[0] root
4314 /* 1708 */ // No operand predicates
4315 /* 1708 */ // MIs[0] left
4316 /* 1708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4317 /* 1712 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4318 /* 1716 */ // MIs[1] imm1
4319 /* 1716 */ // No operand predicates
4320 /* 1716 */ // MIs[0] right
4321 /* 1716 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4322 /* 1720 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4323 /* 1724 */ // MIs[2] imm2
4324 /* 1724 */ // No operand predicates
4325 /* 1724 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4326 /* 1726 */ // Combiner Rule #39: add_of_vscale
4327 /* 1726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4328 /* 1729 */ // Label 125: @1729
4329 /* 1729 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1758), // Rule ID 395 //
4330 /* 1734 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
4331 /* 1737 */ // MIs[0] dst
4332 /* 1737 */ // No operand predicates
4333 /* 1737 */ // MIs[0] ext1
4334 /* 1737 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4335 /* 1741 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4336 /* 1745 */ // MIs[1] src1
4337 /* 1745 */ // No operand predicates
4338 /* 1745 */ // MIs[0] ext2
4339 /* 1745 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4340 /* 1749 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4341 /* 1753 */ // MIs[2] src2
4342 /* 1753 */ // No operand predicates
4343 /* 1753 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4344 /* 1755 */ // Combiner Rule #244: push_add_through_zext
4345 /* 1755 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4346 /* 1758 */ // Label 126: @1758
4347 /* 1758 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1792), // Rule ID 3 //
4348 /* 1763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4349 /* 1766 */ // MIs[0] root
4350 /* 1766 */ // No operand predicates
4351 /* 1766 */ // MIs[0] A
4352 /* 1766 */ // No operand predicates
4353 /* 1766 */ // MIs[0] sub
4354 /* 1766 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4355 /* 1770 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4356 /* 1774 */ // MIs[1] Operand 1
4357 /* 1774 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4358 /* 1778 */ // MIs[1] B
4359 /* 1778 */ // No operand predicates
4360 /* 1778 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4361 /* 1780 */ // Combiner Rule #3: APlusZeroMinusB
4362 /* 1780 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4363 /* 1783 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4364 /* 1785 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4365 /* 1787 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4366 /* 1791 */ GIR_EraseRootFromParent_Done,
4367 /* 1792 */ // Label 127: @1792
4368 /* 1792 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1826), // Rule ID 4 //
4369 /* 1797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4370 /* 1800 */ // MIs[0] root
4371 /* 1800 */ // No operand predicates
4372 /* 1800 */ // MIs[0] A
4373 /* 1800 */ // No operand predicates
4374 /* 1800 */ // MIs[0] sub
4375 /* 1800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4376 /* 1804 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4377 /* 1808 */ // MIs[1] B
4378 /* 1808 */ // No operand predicates
4379 /* 1808 */ // MIs[1] A
4380 /* 1808 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4381 /* 1813 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4382 /* 1818 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4383 /* 1820 */ // Combiner Rule #4: APlusBMinusB
4384 /* 1820 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4385 /* 1825 */ GIR_EraseRootFromParent_Done,
4386 /* 1826 */ // Label 128: @1826
4387 /* 1826 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1860), // Rule ID 133 //
4388 /* 1831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4389 /* 1834 */ // MIs[0] dst
4390 /* 1834 */ // No operand predicates
4391 /* 1834 */ // MIs[0] __add_sub_reg_match_0.x
4392 /* 1834 */ // No operand predicates
4393 /* 1834 */ // MIs[0] __add_sub_reg_match_0.tmp
4394 /* 1834 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4395 /* 1838 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4396 /* 1842 */ // MIs[1] src
4397 /* 1842 */ // No operand predicates
4398 /* 1842 */ // MIs[1] __add_sub_reg_match_0.x
4399 /* 1842 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4400 /* 1847 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4401 /* 1852 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4402 /* 1854 */ // Combiner Rule #96: add_sub_reg @ [__add_sub_reg_match_0[0]]
4403 /* 1854 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4404 /* 1859 */ GIR_EraseRootFromParent_Done,
4405 /* 1860 */ // Label 129: @1860
4406 /* 1860 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1905), // Rule ID 8 //
4407 /* 1865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4408 /* 1868 */ // MIs[0] root
4409 /* 1868 */ // No operand predicates
4410 /* 1868 */ // MIs[0] A
4411 /* 1868 */ // No operand predicates
4412 /* 1868 */ // MIs[0] sub1
4413 /* 1868 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4414 /* 1872 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4415 /* 1876 */ // MIs[1] B
4416 /* 1876 */ // No operand predicates
4417 /* 1876 */ // MIs[1] add1
4418 /* 1876 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4419 /* 1880 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4420 /* 1884 */ // MIs[2] A
4421 /* 1884 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4422 /* 1889 */ // MIs[2] C
4423 /* 1889 */ // No operand predicates
4424 /* 1889 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4425 /* 1891 */ // Combiner Rule #8: APlusBMinusAplusC
4426 /* 1891 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4427 /* 1894 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4428 /* 1896 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4429 /* 1900 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4430 /* 1904 */ GIR_EraseRootFromParent_Done,
4431 /* 1905 */ // Label 130: @1905
4432 /* 1905 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1950), // Rule ID 9 //
4433 /* 1910 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4434 /* 1913 */ // MIs[0] root
4435 /* 1913 */ // No operand predicates
4436 /* 1913 */ // MIs[0] A
4437 /* 1913 */ // No operand predicates
4438 /* 1913 */ // MIs[0] sub1
4439 /* 1913 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4440 /* 1917 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4441 /* 1921 */ // MIs[1] B
4442 /* 1921 */ // No operand predicates
4443 /* 1921 */ // MIs[1] add1
4444 /* 1921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4445 /* 1925 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4446 /* 1929 */ // MIs[2] C
4447 /* 1929 */ // No operand predicates
4448 /* 1929 */ // MIs[2] A
4449 /* 1929 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4450 /* 1934 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4451 /* 1936 */ // Combiner Rule #9: APlusBMinusCPlusA
4452 /* 1936 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4453 /* 1939 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4454 /* 1941 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4455 /* 1945 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4456 /* 1949 */ GIR_EraseRootFromParent_Done,
4457 /* 1950 */ // Label 131: @1950
4458 /* 1950 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1973), // Rule ID 107 //
4459 /* 1955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4460 /* 1958 */ // MIs[0] dst
4461 /* 1958 */ // No operand predicates
4462 /* 1958 */ // MIs[0] lhs
4463 /* 1958 */ // No operand predicates
4464 /* 1958 */ // MIs[0] Operand 2
4465 /* 1958 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4466 /* 1962 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4467 /* 1967 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[1]]
4468 /* 1967 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4469 /* 1972 */ GIR_EraseRootFromParent_Done,
4470 /* 1973 */ // Label 132: @1973
4471 /* 1973 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1984), // Rule ID 153 //
4472 /* 1978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
4473 /* 1981 */ // MIs[0] root
4474 /* 1981 */ // No operand predicates
4475 /* 1981 */ // MIs[0] src1
4476 /* 1981 */ // No operand predicates
4477 /* 1981 */ // MIs[0] src2
4478 /* 1981 */ // No operand predicates
4479 /* 1981 */ // Combiner Rule #110: reassoc_comm_binops
4480 /* 1981 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4481 /* 1984 */ // Label 133: @1984
4482 /* 1984 */ GIM_Reject,
4483 /* 1985 */ // Label 2: @1985
4484 /* 1985 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1996), // Rule ID 97 //
4485 /* 1990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4486 /* 1993 */ // Combiner Rule #80: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4487 /* 1993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4488 /* 1996 */ // Label 134: @1996
4489 /* 1996 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2007), // Rule ID 255 //
4490 /* 2001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4491 /* 2004 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SUB'
4492 /* 2004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4493 /* 2007 */ // Label 135: @2007
4494 /* 2007 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2018), // Rule ID 292 //
4495 /* 2012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4496 /* 2015 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SUB'
4497 /* 2015 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4498 /* 2018 */ // Label 136: @2018
4499 /* 2018 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2029), // Rule ID 324 //
4500 /* 2023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
4501 /* 2026 */ // Combiner Rule #203: sub_add_reg; wip_match_opcode 'G_SUB'
4502 /* 2026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4503 /* 2029 */ // Label 137: @2029
4504 /* 2029 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2040), // Rule ID 358 //
4505 /* 2034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
4506 /* 2037 */ // Combiner Rule #210: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4507 /* 2037 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4508 /* 2040 */ // Label 138: @2040
4509 /* 2040 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2085), // Rule ID 0 //
4510 /* 2045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4511 /* 2048 */ // MIs[0] root
4512 /* 2048 */ // No operand predicates
4513 /* 2048 */ // MIs[0] add1
4514 /* 2048 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4515 /* 2052 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4516 /* 2056 */ // MIs[1] A
4517 /* 2056 */ // No operand predicates
4518 /* 2056 */ // MIs[1] sub1
4519 /* 2056 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4520 /* 2060 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4521 /* 2064 */ // MIs[2] B
4522 /* 2064 */ // No operand predicates
4523 /* 2064 */ // MIs[2] C
4524 /* 2064 */ // No operand predicates
4525 /* 2064 */ // MIs[0] B
4526 /* 2064 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4527 /* 2069 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4528 /* 2071 */ // Combiner Rule #0: APlusBMinusCMinusB
4529 /* 2071 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4530 /* 2074 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4531 /* 2076 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4532 /* 2080 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4533 /* 2084 */ GIR_EraseRootFromParent_Done,
4534 /* 2085 */ // Label 139: @2085
4535 /* 2085 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2122), // Rule ID 10 //
4536 /* 2090 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4537 /* 2093 */ // MIs[0] root
4538 /* 2093 */ // No operand predicates
4539 /* 2093 */ // MIs[0] add
4540 /* 2093 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4541 /* 2097 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4542 /* 2101 */ // MIs[1] A
4543 /* 2101 */ // No operand predicates
4544 /* 2101 */ // MIs[1] c1
4545 /* 2101 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4546 /* 2105 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4547 /* 2109 */ // MIs[2] imm1
4548 /* 2109 */ // No operand predicates
4549 /* 2109 */ // MIs[0] c2
4550 /* 2109 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4551 /* 2113 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4552 /* 2117 */ // MIs[3] imm2
4553 /* 2117 */ // No operand predicates
4554 /* 2117 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4555 /* 2119 */ // Combiner Rule #10: APlusC1MinusC2
4556 /* 2119 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4557 /* 2122 */ // Label 140: @2122
4558 /* 2122 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2159), // Rule ID 13 //
4559 /* 2127 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
4560 /* 2130 */ // MIs[0] root
4561 /* 2130 */ // No operand predicates
4562 /* 2130 */ // MIs[0] sub1
4563 /* 2130 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4564 /* 2134 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4565 /* 2138 */ // MIs[1] c1
4566 /* 2138 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4567 /* 2142 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4568 /* 2146 */ // MIs[2] imm1
4569 /* 2146 */ // No operand predicates
4570 /* 2146 */ // MIs[1] A
4571 /* 2146 */ // No operand predicates
4572 /* 2146 */ // MIs[0] c2
4573 /* 2146 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4574 /* 2150 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4575 /* 2154 */ // MIs[3] imm2
4576 /* 2154 */ // No operand predicates
4577 /* 2154 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4578 /* 2156 */ // Combiner Rule #13: C1Minus2MinusC2
4579 /* 2156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4580 /* 2159 */ // Label 141: @2159
4581 /* 2159 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2204), // Rule ID 1 //
4582 /* 2164 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4583 /* 2167 */ // MIs[0] root
4584 /* 2167 */ // No operand predicates
4585 /* 2167 */ // MIs[0] sub2
4586 /* 2167 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4587 /* 2171 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4588 /* 2175 */ // MIs[1] A
4589 /* 2175 */ // No operand predicates
4590 /* 2175 */ // MIs[1] sub1
4591 /* 2175 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4592 /* 2179 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4593 /* 2183 */ // MIs[2] B
4594 /* 2183 */ // No operand predicates
4595 /* 2183 */ // MIs[2] C
4596 /* 2183 */ // No operand predicates
4597 /* 2183 */ // MIs[0] C
4598 /* 2183 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4599 /* 2188 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4600 /* 2190 */ // Combiner Rule #1: AMinusBMinusCMinusC
4601 /* 2190 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4602 /* 2193 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4603 /* 2195 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4604 /* 2199 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4605 /* 2203 */ GIR_EraseRootFromParent_Done,
4606 /* 2204 */ // Label 142: @2204
4607 /* 2204 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2241), // Rule ID 12 //
4608 /* 2209 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4609 /* 2212 */ // MIs[0] root
4610 /* 2212 */ // No operand predicates
4611 /* 2212 */ // MIs[0] sub1
4612 /* 2212 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4613 /* 2216 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4614 /* 2220 */ // MIs[1] A
4615 /* 2220 */ // No operand predicates
4616 /* 2220 */ // MIs[1] c1
4617 /* 2220 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4618 /* 2224 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4619 /* 2228 */ // MIs[2] imm1
4620 /* 2228 */ // No operand predicates
4621 /* 2228 */ // MIs[0] c2
4622 /* 2228 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4623 /* 2232 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4624 /* 2236 */ // MIs[3] imm2
4625 /* 2236 */ // No operand predicates
4626 /* 2236 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4627 /* 2238 */ // Combiner Rule #12: AMinusC1MinusC2
4628 /* 2238 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4629 /* 2241 */ // Label 143: @2241
4630 /* 2241 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2270), // Rule ID 397 //
4631 /* 2246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
4632 /* 2249 */ // MIs[0] dst
4633 /* 2249 */ // No operand predicates
4634 /* 2249 */ // MIs[0] ext1
4635 /* 2249 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4636 /* 2253 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4637 /* 2257 */ // MIs[1] src1
4638 /* 2257 */ // No operand predicates
4639 /* 2257 */ // MIs[0] ext2
4640 /* 2257 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4641 /* 2261 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4642 /* 2265 */ // MIs[2] src2
4643 /* 2265 */ // No operand predicates
4644 /* 2265 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4645 /* 2267 */ // Combiner Rule #246: push_sub_through_sext
4646 /* 2267 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4647 /* 2270 */ // Label 144: @2270
4648 /* 2270 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2299), // Rule ID 394 //
4649 /* 2275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
4650 /* 2278 */ // MIs[0] dst
4651 /* 2278 */ // No operand predicates
4652 /* 2278 */ // MIs[0] ext1
4653 /* 2278 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4654 /* 2282 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4655 /* 2286 */ // MIs[1] src1
4656 /* 2286 */ // No operand predicates
4657 /* 2286 */ // MIs[0] ext2
4658 /* 2286 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4659 /* 2290 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4660 /* 2294 */ // MIs[2] src2
4661 /* 2294 */ // No operand predicates
4662 /* 2294 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4663 /* 2296 */ // Combiner Rule #243: push_sub_through_zext
4664 /* 2296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4665 /* 2299 */ // Label 145: @2299
4666 /* 2299 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2342), // Rule ID 163 //
4667 /* 2304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4668 /* 2307 */ // MIs[0] dst
4669 /* 2307 */ // No operand predicates
4670 /* 2307 */ // MIs[0] Operand 1
4671 /* 2307 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4672 /* 2311 */ // MIs[0] and
4673 /* 2311 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4674 /* 2315 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4675 /* 2319 */ // MIs[1] x
4676 /* 2319 */ // No operand predicates
4677 /* 2319 */ // MIs[1] Operand 2
4678 /* 2319 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4679 /* 2323 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
4680 /* 2327 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4681 /* 2329 */ // Combiner Rule #120: neg_and_one_to_sext_inreg
4682 /* 2329 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4683 /* 2332 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4684 /* 2334 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4685 /* 2338 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4686 /* 2341 */ GIR_EraseRootFromParent_Done,
4687 /* 2342 */ // Label 146: @2342
4688 /* 2342 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2379), // Rule ID 11 //
4689 /* 2347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4690 /* 2350 */ // MIs[0] root
4691 /* 2350 */ // No operand predicates
4692 /* 2350 */ // MIs[0] c2
4693 /* 2350 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4694 /* 2354 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4695 /* 2358 */ // MIs[1] imm2
4696 /* 2358 */ // No operand predicates
4697 /* 2358 */ // MIs[0] add
4698 /* 2358 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4699 /* 2362 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4700 /* 2366 */ // MIs[2] A
4701 /* 2366 */ // No operand predicates
4702 /* 2366 */ // MIs[2] c1
4703 /* 2366 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4704 /* 2370 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4705 /* 2374 */ // MIs[3] imm1
4706 /* 2374 */ // No operand predicates
4707 /* 2374 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4708 /* 2376 */ // Combiner Rule #11: C2MinusAPlusC1
4709 /* 2376 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4710 /* 2379 */ // Label 147: @2379
4711 /* 2379 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2406), // Rule ID 44 //
4712 /* 2384 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
4713 /* 2387 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4714 /* 2393 */ // MIs[0] root
4715 /* 2393 */ // No operand predicates
4716 /* 2393 */ // MIs[0] x
4717 /* 2393 */ // No operand predicates
4718 /* 2393 */ // MIs[0] right
4719 /* 2393 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4720 /* 2397 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4721 /* 2401 */ // MIs[1] imm
4722 /* 2401 */ // No operand predicates
4723 /* 2401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4724 /* 2403 */ // Combiner Rule #42: sub_of_vscale
4725 /* 2403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4726 /* 2406 */ // Label 148: @2406
4727 /* 2406 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2429), // Rule ID 106 //
4728 /* 2411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4729 /* 2414 */ // MIs[0] dst
4730 /* 2414 */ // No operand predicates
4731 /* 2414 */ // MIs[0] lhs
4732 /* 2414 */ // No operand predicates
4733 /* 2414 */ // MIs[0] Operand 2
4734 /* 2414 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4735 /* 2418 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4736 /* 2423 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[0]]
4737 /* 2423 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4738 /* 2428 */ GIR_EraseRootFromParent_Done,
4739 /* 2429 */ // Label 149: @2429
4740 /* 2429 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2450), // Rule ID 17 //
4741 /* 2434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4742 /* 2437 */ // MIs[0] d
4743 /* 2437 */ // No operand predicates
4744 /* 2437 */ // MIs[0] op1
4745 /* 2437 */ // No operand predicates
4746 /* 2437 */ // MIs[0] c
4747 /* 2437 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4748 /* 2441 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4749 /* 2445 */ // MIs[1] imm
4750 /* 2445 */ // No operand predicates
4751 /* 2445 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4752 /* 2447 */ // Combiner Rule #17: sub_to_add
4753 /* 2447 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4754 /* 2450 */ // Label 150: @2450
4755 /* 2450 */ GIM_Reject,
4756 /* 2451 */ // Label 3: @2451
4757 /* 2451 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2462), // Rule ID 80 //
4758 /* 2456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4759 /* 2459 */ // Combiner Rule #74: undef_to_int_zero; wip_match_opcode 'G_MUL'
4760 /* 2459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4761 /* 2462 */ // Label 151: @2462
4762 /* 2462 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2473), // Rule ID 252 //
4763 /* 2467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4764 /* 2470 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_MUL'
4765 /* 2470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4766 /* 2473 */ // Label 152: @2473
4767 /* 2473 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2484), // Rule ID 328 //
4768 /* 2478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
4769 /* 2481 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4770 /* 2481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4771 /* 2484 */ // Label 153: @2484
4772 /* 2484 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2524), // Rule ID 19 //
4773 /* 2489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4774 /* 2492 */ // MIs[0] dst
4775 /* 2492 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4776 /* 2496 */ // MIs[0] x
4777 /* 2496 */ // No operand predicates
4778 /* 2496 */ // MIs[0] Operand 2
4779 /* 2496 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
4780 /* 2500 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4781 /* 2503 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4782 /* 2513 */ // Combiner Rule #19: mul_by_neg_one
4783 /* 2513 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4784 /* 2516 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4785 /* 2518 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4786 /* 2521 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4787 /* 2523 */ GIR_EraseRootFromParent_Done,
4788 /* 2524 */ // Label 154: @2524
4789 /* 2524 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2553), // Rule ID 399 //
4790 /* 2529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
4791 /* 2532 */ // MIs[0] dst
4792 /* 2532 */ // No operand predicates
4793 /* 2532 */ // MIs[0] ext1
4794 /* 2532 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4795 /* 2536 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4796 /* 2540 */ // MIs[1] src1
4797 /* 2540 */ // No operand predicates
4798 /* 2540 */ // MIs[0] ext2
4799 /* 2540 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4800 /* 2544 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4801 /* 2548 */ // MIs[2] src2
4802 /* 2548 */ // No operand predicates
4803 /* 2548 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4804 /* 2550 */ // Combiner Rule #248: push_mul_through_sext
4805 /* 2550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4806 /* 2553 */ // Label 155: @2553
4807 /* 2553 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2588), // Rule ID 42 //
4808 /* 2558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
4809 /* 2561 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4810 /* 2567 */ // MIs[0] root
4811 /* 2567 */ // No operand predicates
4812 /* 2567 */ // MIs[0] left
4813 /* 2567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4814 /* 2571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4815 /* 2575 */ // MIs[1] scale
4816 /* 2575 */ // No operand predicates
4817 /* 2575 */ // MIs[0] x
4818 /* 2575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4819 /* 2579 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4820 /* 2583 */ // MIs[2] imm1
4821 /* 2583 */ // No operand predicates
4822 /* 2583 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4823 /* 2585 */ // Combiner Rule #40: mul_of_vscale
4824 /* 2585 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4825 /* 2588 */ // Label 156: @2588
4826 /* 2588 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2617), // Rule ID 396 //
4827 /* 2593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
4828 /* 2596 */ // MIs[0] dst
4829 /* 2596 */ // No operand predicates
4830 /* 2596 */ // MIs[0] ext1
4831 /* 2596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4832 /* 2600 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4833 /* 2604 */ // MIs[1] src1
4834 /* 2604 */ // No operand predicates
4835 /* 2604 */ // MIs[0] ext2
4836 /* 2604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4837 /* 2608 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4838 /* 2612 */ // MIs[2] src2
4839 /* 2612 */ // No operand predicates
4840 /* 2612 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4841 /* 2614 */ // Combiner Rule #245: push_mul_through_zext
4842 /* 2614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4843 /* 2617 */ // Label 157: @2617
4844 /* 2617 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2657), // Rule ID 125 //
4845 /* 2622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4846 /* 2625 */ // MIs[0] dst
4847 /* 2625 */ // No operand predicates
4848 /* 2625 */ // MIs[0] zero
4849 /* 2625 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4850 /* 2629 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4851 /* 2633 */ // MIs[1] Operand 1
4852 /* 2633 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4853 /* 2644 */ // MIs[0] rhs
4854 /* 2644 */ // No operand predicates
4855 /* 2644 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4856 /* 2649 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4857 /* 2651 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
4858 /* 2651 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4859 /* 2656 */ GIR_EraseRootFromParent_Done,
4860 /* 2657 */ // Label 158: @2657
4861 /* 2657 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2680), // Rule ID 126 //
4862 /* 2662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4863 /* 2665 */ // MIs[0] dst
4864 /* 2665 */ // No operand predicates
4865 /* 2665 */ // MIs[0] lhs
4866 /* 2665 */ // No operand predicates
4867 /* 2665 */ // MIs[0] zero
4868 /* 2665 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4869 /* 2669 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4870 /* 2674 */ // Combiner Rule #89: binop_right_to_zero
4871 /* 2674 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4872 /* 2679 */ GIR_EraseRootFromParent_Done,
4873 /* 2680 */ // Label 159: @2680
4874 /* 2680 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2703), // Rule ID 131 //
4875 /* 2685 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
4876 /* 2688 */ // MIs[0] dst
4877 /* 2688 */ // No operand predicates
4878 /* 2688 */ // MIs[0] x
4879 /* 2688 */ // No operand predicates
4880 /* 2688 */ // MIs[0] Operand 2
4881 /* 2688 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4882 /* 2692 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4883 /* 2697 */ // Combiner Rule #94: right_identity_one_int
4884 /* 2697 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4885 /* 2702 */ GIR_EraseRootFromParent_Done,
4886 /* 2703 */ // Label 160: @2703
4887 /* 2703 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2714), // Rule ID 16 //
4888 /* 2708 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4889 /* 2711 */ // MIs[0] d
4890 /* 2711 */ // No operand predicates
4891 /* 2711 */ // MIs[0] op1
4892 /* 2711 */ // No operand predicates
4893 /* 2711 */ // MIs[0] op2
4894 /* 2711 */ // No operand predicates
4895 /* 2711 */ // Combiner Rule #16: mul_to_shl
4896 /* 2711 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4897 /* 2714 */ // Label 161: @2714
4898 /* 2714 */ GIM_Reject,
4899 /* 2715 */ // Label 4: @2715
4900 /* 2715 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2726), // Rule ID 223 //
4901 /* 2720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
4902 /* 2723 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
4903 /* 2723 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4904 /* 2726 */ // Label 162: @2726
4905 /* 2726 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2737), // Rule ID 258 //
4906 /* 2731 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4907 /* 2734 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SDIV'
4908 /* 2734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4909 /* 2737 */ // Label 163: @2737
4910 /* 2737 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2748), // Rule ID 297 //
4911 /* 2742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4912 /* 2745 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SDIV'
4913 /* 2745 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4914 /* 2748 */ // Label 164: @2748
4915 /* 2748 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2788), // Rule ID 121 //
4916 /* 2753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4917 /* 2756 */ // MIs[0] dst
4918 /* 2756 */ // No operand predicates
4919 /* 2756 */ // MIs[0] zero
4920 /* 2756 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4921 /* 2760 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4922 /* 2764 */ // MIs[1] Operand 1
4923 /* 2764 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4924 /* 2775 */ // MIs[0] rhs
4925 /* 2775 */ // No operand predicates
4926 /* 2775 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4927 /* 2780 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4928 /* 2782 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
4929 /* 2782 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4930 /* 2787 */ GIR_EraseRootFromParent_Done,
4931 /* 2788 */ // Label 165: @2788
4932 /* 2788 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2805), // Rule ID 320 //
4933 /* 2793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
4934 /* 2796 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4935 /* 2802 */ // MIs[0] dst
4936 /* 2802 */ // No operand predicates
4937 /* 2802 */ // MIs[0] x
4938 /* 2802 */ // No operand predicates
4939 /* 2802 */ // MIs[0] y
4940 /* 2802 */ // No operand predicates
4941 /* 2802 */ // Combiner Rule #199: sdiv_by_pow2
4942 /* 2802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
4943 /* 2805 */ // Label 166: @2805
4944 /* 2805 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2816), // Rule ID 322 //
4945 /* 2810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
4946 /* 2813 */ // MIs[0] dst
4947 /* 2813 */ // No operand predicates
4948 /* 2813 */ // MIs[0] x
4949 /* 2813 */ // No operand predicates
4950 /* 2813 */ // MIs[0] y
4951 /* 2813 */ // No operand predicates
4952 /* 2813 */ // Combiner Rule #201: sdiv_by_const
4953 /* 2813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4954 /* 2816 */ // Label 167: @2816
4955 /* 2816 */ GIM_Reject,
4956 /* 2817 */ // Label 5: @2817
4957 /* 2817 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2828), // Rule ID 83 //
4958 /* 2822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
4959 /* 2825 */ // Combiner Rule #76: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
4960 /* 2825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4961 /* 2828 */ // Label 168: @2828
4962 /* 2828 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2839), // Rule ID 224 //
4963 /* 2833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
4964 /* 2836 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
4965 /* 2836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4966 /* 2839 */ // Label 169: @2839
4967 /* 2839 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2850), // Rule ID 257 //
4968 /* 2844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4969 /* 2847 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UDIV'
4970 /* 2847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4971 /* 2850 */ // Label 170: @2850
4972 /* 2850 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2861), // Rule ID 299 //
4973 /* 2855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4974 /* 2858 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UDIV'
4975 /* 2858 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4976 /* 2861 */ // Label 171: @2861
4977 /* 2861 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2901), // Rule ID 122 //
4978 /* 2866 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4979 /* 2869 */ // MIs[0] dst
4980 /* 2869 */ // No operand predicates
4981 /* 2869 */ // MIs[0] zero
4982 /* 2869 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4983 /* 2873 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4984 /* 2877 */ // MIs[1] Operand 1
4985 /* 2877 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4986 /* 2888 */ // MIs[0] rhs
4987 /* 2888 */ // No operand predicates
4988 /* 2888 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4989 /* 2893 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4990 /* 2895 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
4991 /* 2895 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4992 /* 2900 */ GIR_EraseRootFromParent_Done,
4993 /* 2901 */ // Label 172: @2901
4994 /* 2901 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2918), // Rule ID 319 //
4995 /* 2906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
4996 /* 2909 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4997 /* 2915 */ // MIs[0] dst
4998 /* 2915 */ // No operand predicates
4999 /* 2915 */ // MIs[0] x
5000 /* 2915 */ // No operand predicates
5001 /* 2915 */ // MIs[0] y
5002 /* 2915 */ // No operand predicates
5003 /* 2915 */ // Combiner Rule #198: udiv_by_pow2
5004 /* 2915 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5005 /* 2918 */ // Label 173: @2918
5006 /* 2918 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2929), // Rule ID 321 //
5007 /* 2923 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5008 /* 2926 */ // MIs[0] dst
5009 /* 2926 */ // No operand predicates
5010 /* 2926 */ // MIs[0] x
5011 /* 2926 */ // No operand predicates
5012 /* 2926 */ // MIs[0] y
5013 /* 2926 */ // No operand predicates
5014 /* 2926 */ // Combiner Rule #200: udiv_by_const
5015 /* 2926 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5016 /* 2929 */ // Label 174: @2929
5017 /* 2929 */ GIM_Reject,
5018 /* 2930 */ // Label 6: @2930
5019 /* 2930 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2941), // Rule ID 225 //
5020 /* 2935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
5021 /* 2938 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5022 /* 2938 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5023 /* 2941 */ // Label 175: @2941
5024 /* 2941 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2952), // Rule ID 260 //
5025 /* 2946 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5026 /* 2949 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SREM'
5027 /* 2949 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5028 /* 2952 */ // Label 176: @2952
5029 /* 2952 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2963), // Rule ID 298 //
5030 /* 2957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5031 /* 2960 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SREM'
5032 /* 2960 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5033 /* 2963 */ // Label 177: @2963
5034 /* 2963 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3003), // Rule ID 123 //
5035 /* 2968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5036 /* 2971 */ // MIs[0] dst
5037 /* 2971 */ // No operand predicates
5038 /* 2971 */ // MIs[0] zero
5039 /* 2971 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5040 /* 2975 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5041 /* 2979 */ // MIs[1] Operand 1
5042 /* 2979 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5043 /* 2990 */ // MIs[0] rhs
5044 /* 2990 */ // No operand predicates
5045 /* 2990 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5046 /* 2995 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5047 /* 2997 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5048 /* 2997 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5049 /* 3002 */ GIR_EraseRootFromParent_Done,
5050 /* 3003 */ // Label 178: @3003
5051 /* 3003 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3014), // Rule ID 318 //
5052 /* 3008 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5053 /* 3011 */ // MIs[0] dst
5054 /* 3011 */ // No operand predicates
5055 /* 3011 */ // MIs[0] x
5056 /* 3011 */ // No operand predicates
5057 /* 3011 */ // MIs[0] y
5058 /* 3011 */ // No operand predicates
5059 /* 3011 */ // Combiner Rule #197: srem_by_const
5060 /* 3011 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5061 /* 3014 */ // Label 179: @3014
5062 /* 3014 */ GIM_Reject,
5063 /* 3015 */ // Label 7: @3015
5064 /* 3015 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3026), // Rule ID 84 //
5065 /* 3020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
5066 /* 3023 */ // Combiner Rule #76: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5067 /* 3023 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5068 /* 3026 */ // Label 180: @3026
5069 /* 3026 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3037), // Rule ID 174 //
5070 /* 3031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
5071 /* 3034 */ // Combiner Rule #131: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
5072 /* 3034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5073 /* 3037 */ // Label 181: @3037
5074 /* 3037 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3048), // Rule ID 226 //
5075 /* 3042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
5076 /* 3045 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5077 /* 3045 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5078 /* 3048 */ // Label 182: @3048
5079 /* 3048 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3059), // Rule ID 259 //
5080 /* 3053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5081 /* 3056 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UREM'
5082 /* 3056 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5083 /* 3059 */ // Label 183: @3059
5084 /* 3059 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3070), // Rule ID 300 //
5085 /* 3064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5086 /* 3067 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UREM'
5087 /* 3067 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5088 /* 3070 */ // Label 184: @3070
5089 /* 3070 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3110), // Rule ID 124 //
5090 /* 3075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5091 /* 3078 */ // MIs[0] dst
5092 /* 3078 */ // No operand predicates
5093 /* 3078 */ // MIs[0] zero
5094 /* 3078 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5095 /* 3082 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5096 /* 3086 */ // MIs[1] Operand 1
5097 /* 3086 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5098 /* 3097 */ // MIs[0] rhs
5099 /* 3097 */ // No operand predicates
5100 /* 3097 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5101 /* 3102 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5102 /* 3104 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5103 /* 3104 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5104 /* 3109 */ GIR_EraseRootFromParent_Done,
5105 /* 3110 */ // Label 185: @3110
5106 /* 3110 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3121), // Rule ID 317 //
5107 /* 3115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
5108 /* 3118 */ // MIs[0] dst
5109 /* 3118 */ // No operand predicates
5110 /* 3118 */ // MIs[0] x
5111 /* 3118 */ // No operand predicates
5112 /* 3118 */ // MIs[0] y
5113 /* 3118 */ // No operand predicates
5114 /* 3118 */ // Combiner Rule #196: urem_by_const
5115 /* 3118 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5116 /* 3121 */ // Label 186: @3121
5117 /* 3121 */ GIM_Reject,
5118 /* 3122 */ // Label 8: @3122
5119 /* 3122 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3133), // Rule ID 75 //
5120 /* 3127 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5121 /* 3130 */ // Combiner Rule #71: load_and_mask; wip_match_opcode 'G_AND'
5122 /* 3130 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5123 /* 3133 */ // Label 187: @3133
5124 /* 3133 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3144), // Rule ID 79 //
5125 /* 3138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
5126 /* 3141 */ // Combiner Rule #74: undef_to_int_zero; wip_match_opcode 'G_AND'
5127 /* 3141 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5128 /* 3144 */ // Label 188: @3144
5129 /* 3144 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3155), // Rule ID 146 //
5130 /* 3149 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5131 /* 3152 */ // Combiner Rule #107: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5132 /* 3152 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5133 /* 3155 */ // Label 189: @3155
5134 /* 3155 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3166), // Rule ID 166 //
5135 /* 3160 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
5136 /* 3163 */ // Combiner Rule #123: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5137 /* 3163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5138 /* 3166 */ // Label 190: @3166
5139 /* 3166 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3177), // Rule ID 171 //
5140 /* 3171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
5141 /* 3174 */ // Combiner Rule #128: redundant_and; wip_match_opcode 'G_AND'
5142 /* 3174 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
5143 /* 3177 */ // Label 191: @3177
5144 /* 3177 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3188), // Rule ID 196 //
5145 /* 3182 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
5146 /* 3185 */ // Combiner Rule #153: overlapping_and; wip_match_opcode 'G_AND'
5147 /* 3185 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
5148 /* 3188 */ // Label 192: @3188
5149 /* 3188 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3199), // Rule ID 249 //
5150 /* 3193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5151 /* 3196 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_AND'
5152 /* 3196 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5153 /* 3199 */ // Label 193: @3199
5154 /* 3199 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3210), // Rule ID 282 //
5155 /* 3204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
5156 /* 3207 */ // Combiner Rule #186: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5157 /* 3207 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5158 /* 3210 */ // Label 194: @3210
5159 /* 3210 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3221), // Rule ID 294 //
5160 /* 3215 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5161 /* 3218 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_AND'
5162 /* 3218 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5163 /* 3221 */ // Label 195: @3221
5164 /* 3221 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3232), // Rule ID 329 //
5165 /* 3226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5166 /* 3229 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5167 /* 3229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5168 /* 3232 */ // Label 196: @3232
5169 /* 3232 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3243), // Rule ID 356 //
5170 /* 3237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5171 /* 3240 */ // Combiner Rule #208: match_ands; wip_match_opcode 'G_AND'
5172 /* 3240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5173 /* 3243 */ // Label 197: @3243
5174 /* 3243 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3341), // Rule ID 159 //
5175 /* 3248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
5176 /* 3251 */ // MIs[0] root
5177 /* 3251 */ // No operand predicates
5178 /* 3251 */ // MIs[0] d1
5179 /* 3251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5180 /* 3255 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5181 /* 3259 */ // MIs[1] p
5182 /* 3259 */ // No operand predicates
5183 /* 3259 */ // MIs[1] s1
5184 /* 3259 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5185 /* 3263 */ // MIs[1] Operand 3
5186 /* 3263 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5187 /* 3267 */ // MIs[0] d2
5188 /* 3267 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5189 /* 3271 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5190 /* 3275 */ // MIs[2] p
5191 /* 3275 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5192 /* 3280 */ // MIs[2] s2
5193 /* 3280 */ // No operand predicates
5194 /* 3280 */ // MIs[2] Operand 3
5195 /* 3280 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5196 /* 3284 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
5197 /* 3288 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5198 /* 3290 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5199 /* 3293 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5200 /* 3303 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5201 /* 3306 */ // Combiner Rule #116: double_icmp_zero_and_combine
5202 /* 3306 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5203 /* 3309 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5204 /* 3314 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5205 /* 3318 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5206 /* 3322 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5207 /* 3326 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5208 /* 3330 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5209 /* 3334 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5210 /* 3337 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5211 /* 3340 */ GIR_EraseRootFromParent_Done,
5212 /* 3341 */ // Label 198: @3341
5213 /* 3341 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3378), // Rule ID 242 //
5214 /* 3346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5215 /* 3349 */ // MIs[0] root
5216 /* 3349 */ // No operand predicates
5217 /* 3349 */ // MIs[0] shift
5218 /* 3349 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5219 /* 3353 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5220 /* 3357 */ // MIs[1] x
5221 /* 3357 */ // No operand predicates
5222 /* 3357 */ // MIs[1] lsb
5223 /* 3357 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5224 /* 3361 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5225 /* 3365 */ // MIs[2] imm1
5226 /* 3365 */ // No operand predicates
5227 /* 3365 */ // MIs[0] mask
5228 /* 3365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5229 /* 3369 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5230 /* 3373 */ // MIs[3] imm2
5231 /* 3373 */ // No operand predicates
5232 /* 3373 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5233 /* 3375 */ // Combiner Rule #176: bitfield_extract_from_and
5234 /* 3375 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5235 /* 3378 */ // Label 199: @3378
5236 /* 3378 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3402), // Rule ID 116 //
5237 /* 3383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5238 /* 3386 */ // MIs[0] dst
5239 /* 3386 */ // No operand predicates
5240 /* 3386 */ // MIs[0] src
5241 /* 3386 */ // No operand predicates
5242 /* 3386 */ // MIs[0] src
5243 /* 3386 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5244 /* 3391 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5245 /* 3396 */ // Combiner Rule #87: binop_same_val @ [__binop_same_val_match_0[0]]
5246 /* 3396 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5247 /* 3401 */ GIR_EraseRootFromParent_Done,
5248 /* 3402 */ // Label 200: @3402
5249 /* 3402 */ GIM_Reject,
5250 /* 3403 */ // Label 9: @3403
5251 /* 3403 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3414), // Rule ID 81 //
5252 /* 3408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5253 /* 3411 */ // Combiner Rule #75: undef_to_negative_one; wip_match_opcode 'G_OR'
5254 /* 3411 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5255 /* 3414 */ // Label 201: @3414
5256 /* 3414 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3425), // Rule ID 147 //
5257 /* 3419 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5258 /* 3422 */ // Combiner Rule #107: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5259 /* 3422 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5260 /* 3425 */ // Label 202: @3425
5261 /* 3425 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3436), // Rule ID 173 //
5262 /* 3430 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
5263 /* 3433 */ // Combiner Rule #130: redundant_or; wip_match_opcode 'G_OR'
5264 /* 3433 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5265 /* 3436 */ // Label 203: @3436
5266 /* 3436 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3447), // Rule ID 222 //
5267 /* 3441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
5268 /* 3444 */ // Combiner Rule #163: load_or_combine; wip_match_opcode 'G_OR'
5269 /* 3444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5270 /* 3447 */ // Label 204: @3447
5271 /* 3447 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3458), // Rule ID 227 //
5272 /* 3452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5273 /* 3455 */ // Combiner Rule #165: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5274 /* 3455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5275 /* 3458 */ // Label 205: @3458
5276 /* 3458 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3469), // Rule ID 253 //
5277 /* 3463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5278 /* 3466 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_OR'
5279 /* 3466 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5280 /* 3469 */ // Label 206: @3469
5281 /* 3469 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3480), // Rule ID 295 //
5282 /* 3474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5283 /* 3477 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_OR'
5284 /* 3477 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5285 /* 3480 */ // Label 207: @3480
5286 /* 3480 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3491), // Rule ID 330 //
5287 /* 3485 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5288 /* 3488 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5289 /* 3488 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5290 /* 3491 */ // Label 208: @3491
5291 /* 3491 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3502), // Rule ID 357 //
5292 /* 3496 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
5293 /* 3499 */ // Combiner Rule #209: match_ors; wip_match_opcode 'G_OR'
5294 /* 3499 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5295 /* 3502 */ // Label 209: @3502
5296 /* 3502 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3549), // Rule ID 234 //
5297 /* 3507 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5298 /* 3510 */ // MIs[0] root
5299 /* 3510 */ // No operand predicates
5300 /* 3510 */ // MIs[0] out1
5301 /* 3510 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5302 /* 3514 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5303 /* 3518 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5304 /* 3518 */ // No operand predicates
5305 /* 3518 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5306 /* 3518 */ // No operand predicates
5307 /* 3518 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5308 /* 3518 */ // No operand predicates
5309 /* 3518 */ // MIs[0] out2
5310 /* 3518 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5311 /* 3522 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5312 /* 3526 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5313 /* 3526 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5314 /* 3531 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5315 /* 3531 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5316 /* 3536 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5317 /* 3541 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5318 /* 3543 */ // Combiner Rule #170: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5319 /* 3543 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5320 /* 3548 */ GIR_EraseRootFromParent_Done,
5321 /* 3549 */ // Label 210: @3549
5322 /* 3549 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3596), // Rule ID 236 //
5323 /* 3554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
5324 /* 3557 */ // MIs[0] root
5325 /* 3557 */ // No operand predicates
5326 /* 3557 */ // MIs[0] out1
5327 /* 3557 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5328 /* 3561 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5329 /* 3565 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5330 /* 3565 */ // No operand predicates
5331 /* 3565 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5332 /* 3565 */ // No operand predicates
5333 /* 3565 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5334 /* 3565 */ // No operand predicates
5335 /* 3565 */ // MIs[0] out2
5336 /* 3565 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5337 /* 3569 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5338 /* 3573 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5339 /* 3573 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5340 /* 3578 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5341 /* 3578 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5342 /* 3583 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5343 /* 3588 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5344 /* 3590 */ // Combiner Rule #171: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5345 /* 3590 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5346 /* 3595 */ GIR_EraseRootFromParent_Done,
5347 /* 3596 */ // Label 211: @3596
5348 /* 3596 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3694), // Rule ID 160 //
5349 /* 3601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
5350 /* 3604 */ // MIs[0] root
5351 /* 3604 */ // No operand predicates
5352 /* 3604 */ // MIs[0] d1
5353 /* 3604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5354 /* 3608 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5355 /* 3612 */ // MIs[1] p
5356 /* 3612 */ // No operand predicates
5357 /* 3612 */ // MIs[1] s1
5358 /* 3612 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5359 /* 3616 */ // MIs[1] Operand 3
5360 /* 3616 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5361 /* 3620 */ // MIs[0] d2
5362 /* 3620 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5363 /* 3624 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5364 /* 3628 */ // MIs[2] p
5365 /* 3628 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5366 /* 3633 */ // MIs[2] s2
5367 /* 3633 */ // No operand predicates
5368 /* 3633 */ // MIs[2] Operand 3
5369 /* 3633 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5370 /* 3637 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
5371 /* 3641 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5372 /* 3643 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5373 /* 3646 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5374 /* 3656 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5375 /* 3659 */ // Combiner Rule #117: double_icmp_zero_or_combine
5376 /* 3659 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5377 /* 3662 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5378 /* 3667 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5379 /* 3671 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5380 /* 3675 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5381 /* 3679 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5382 /* 3683 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5383 /* 3687 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5384 /* 3690 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5385 /* 3693 */ GIR_EraseRootFromParent_Done,
5386 /* 3694 */ // Label 212: @3694
5387 /* 3694 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3741), // Rule ID 237 //
5388 /* 3699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
5389 /* 3702 */ // MIs[0] root
5390 /* 3702 */ // No operand predicates
5391 /* 3702 */ // MIs[0] out2
5392 /* 3702 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5393 /* 3706 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5394 /* 3710 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5395 /* 3710 */ // No operand predicates
5396 /* 3710 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5397 /* 3710 */ // No operand predicates
5398 /* 3710 */ // MIs[0] out1
5399 /* 3710 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5400 /* 3714 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5401 /* 3718 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5402 /* 3718 */ // No operand predicates
5403 /* 3718 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5404 /* 3718 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5405 /* 3723 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5406 /* 3723 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5407 /* 3728 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5408 /* 3733 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5409 /* 3735 */ // Combiner Rule #171: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5410 /* 3735 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5411 /* 3740 */ GIR_EraseRootFromParent_Done,
5412 /* 3741 */ // Label 213: @3741
5413 /* 3741 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3788), // Rule ID 235 //
5414 /* 3746 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5415 /* 3749 */ // MIs[0] root
5416 /* 3749 */ // No operand predicates
5417 /* 3749 */ // MIs[0] out2
5418 /* 3749 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5419 /* 3753 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5420 /* 3757 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5421 /* 3757 */ // No operand predicates
5422 /* 3757 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5423 /* 3757 */ // No operand predicates
5424 /* 3757 */ // MIs[0] out1
5425 /* 3757 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5426 /* 3761 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5427 /* 3765 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5428 /* 3765 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5429 /* 3770 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5430 /* 3770 */ // No operand predicates
5431 /* 3770 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5432 /* 3770 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5433 /* 3775 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5434 /* 3780 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5435 /* 3782 */ // Combiner Rule #170: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5436 /* 3782 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5437 /* 3787 */ GIR_EraseRootFromParent_Done,
5438 /* 3788 */ // Label 214: @3788
5439 /* 3788 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3812), // Rule ID 117 //
5440 /* 3793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5441 /* 3796 */ // MIs[0] dst
5442 /* 3796 */ // No operand predicates
5443 /* 3796 */ // MIs[0] src
5444 /* 3796 */ // No operand predicates
5445 /* 3796 */ // MIs[0] src
5446 /* 3796 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5447 /* 3801 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5448 /* 3806 */ // Combiner Rule #87: binop_same_val @ [__binop_same_val_match_0[1]]
5449 /* 3806 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5450 /* 3811 */ GIR_EraseRootFromParent_Done,
5451 /* 3812 */ // Label 215: @3812
5452 /* 3812 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3835), // Rule ID 108 //
5453 /* 3817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
5454 /* 3820 */ // MIs[0] dst
5455 /* 3820 */ // No operand predicates
5456 /* 3820 */ // MIs[0] lhs
5457 /* 3820 */ // No operand predicates
5458 /* 3820 */ // MIs[0] Operand 2
5459 /* 3820 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5460 /* 3824 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5461 /* 3829 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[2]]
5462 /* 3829 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5463 /* 3834 */ GIR_EraseRootFromParent_Done,
5464 /* 3835 */ // Label 216: @3835
5465 /* 3835 */ GIM_Reject,
5466 /* 3836 */ // Label 10: @3836
5467 /* 3836 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3847), // Rule ID 98 //
5468 /* 3841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5469 /* 3844 */ // Combiner Rule #80: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5470 /* 3844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5471 /* 3847 */ // Label 217: @3847
5472 /* 3847 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3858), // Rule ID 148 //
5473 /* 3852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5474 /* 3855 */ // Combiner Rule #107: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5475 /* 3855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5476 /* 3858 */ // Label 218: @3858
5477 /* 3858 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3869), // Rule ID 178 //
5478 /* 3863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
5479 /* 3866 */ // Combiner Rule #135: not_cmp_fold; wip_match_opcode 'G_XOR'
5480 /* 3866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5481 /* 3869 */ // Label 219: @3869
5482 /* 3869 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3880), // Rule ID 210 //
5483 /* 3874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
5484 /* 3877 */ // Combiner Rule #159: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5485 /* 3877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5486 /* 3880 */ // Label 220: @3880
5487 /* 3880 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3891), // Rule ID 256 //
5488 /* 3885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5489 /* 3888 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_XOR'
5490 /* 3888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5491 /* 3891 */ // Label 221: @3891
5492 /* 3891 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3902), // Rule ID 296 //
5493 /* 3896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5494 /* 3899 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_XOR'
5495 /* 3899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5496 /* 3902 */ // Label 222: @3902
5497 /* 3902 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3913), // Rule ID 331 //
5498 /* 3907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5499 /* 3910 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5500 /* 3910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5501 /* 3913 */ // Label 223: @3913
5502 /* 3913 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3936), // Rule ID 109 //
5503 /* 3918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
5504 /* 3921 */ // MIs[0] dst
5505 /* 3921 */ // No operand predicates
5506 /* 3921 */ // MIs[0] lhs
5507 /* 3921 */ // No operand predicates
5508 /* 3921 */ // MIs[0] Operand 2
5509 /* 3921 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5510 /* 3925 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5511 /* 3930 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[3]]
5512 /* 3930 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5513 /* 3935 */ GIR_EraseRootFromParent_Done,
5514 /* 3936 */ // Label 224: @3936
5515 /* 3936 */ GIM_Reject,
5516 /* 3937 */ // Label 11: @3937
5517 /* 3937 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3948), // Rule ID 144 //
5518 /* 3942 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5519 /* 3945 */ // Combiner Rule #105: extend_through_phis; wip_match_opcode 'G_PHI'
5520 /* 3945 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5521 /* 3948 */ // Label 225: @3948
5522 /* 3948 */ GIM_Reject,
5523 /* 3949 */ // Label 12: @3949
5524 /* 3949 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3960), // Rule ID 391 //
5525 /* 3954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
5526 /* 3957 */ // Combiner Rule #240: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE'
5527 /* 3957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
5528 /* 3960 */ // Label 226: @3960
5529 /* 3960 */ GIM_Reject,
5530 /* 3961 */ // Label 13: @3961
5531 /* 3961 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3972), // Rule ID 367 //
5532 /* 3966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
5533 /* 3969 */ // Combiner Rule #219: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5534 /* 3969 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5535 /* 3972 */ // Label 227: @3972
5536 /* 3972 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3983), // Rule ID 368 //
5537 /* 3977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5538 /* 3980 */ // Combiner Rule #220: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5539 /* 3980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5540 /* 3983 */ // Label 228: @3983
5541 /* 3983 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3994), // Rule ID 370 //
5542 /* 3988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5543 /* 3991 */ // Combiner Rule #222: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5544 /* 3991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5545 /* 3994 */ // Label 229: @3994
5546 /* 3994 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4005), // Rule ID 371 //
5547 /* 3999 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5548 /* 4002 */ // Combiner Rule #223: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5549 /* 4002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5550 /* 4005 */ // Label 230: @4005
5551 /* 4005 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4016), // Rule ID 372 //
5552 /* 4010 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5553 /* 4013 */ // Combiner Rule #224: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5554 /* 4013 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5555 /* 4016 */ // Label 231: @4016
5556 /* 4016 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4027), // Rule ID 373 //
5557 /* 4021 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5558 /* 4024 */ // Combiner Rule #225: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5559 /* 4024 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5560 /* 4027 */ // Label 232: @4027
5561 /* 4027 */ GIM_Reject,
5562 /* 4028 */ // Label 14: @4028
5563 /* 4028 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4042), // Rule ID 369 //
5564 /* 4033 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5565 /* 4036 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5566 /* 4039 */ // MIs[0] dst
5567 /* 4039 */ // No operand predicates
5568 /* 4039 */ // MIs[0] merge_srcs
5569 /* 4039 */ // No operand predicates
5570 /* 4039 */ // Combiner Rule #221: merge_unmerge
5571 /* 4039 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5572 /* 4042 */ // Label 233: @4042
5573 /* 4042 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4104),
5574 /* 4047 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5575 /* 4050 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4071), // Rule ID 374 //
5576 /* 4055 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5577 /* 4058 */ // MIs[0] root
5578 /* 4058 */ // No operand predicates
5579 /* 4058 */ // MIs[0] x
5580 /* 4058 */ // No operand predicates
5581 /* 4058 */ // MIs[0] undef
5582 /* 4058 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5583 /* 4062 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5584 /* 4066 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5585 /* 4068 */ // Combiner Rule #226: merge_of_x_and_undef
5586 /* 4068 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5587 /* 4071 */ // Label 235: @4071
5588 /* 4071 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4103), // Rule ID 375 //
5589 /* 4076 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5590 /* 4079 */ // MIs[0] root
5591 /* 4079 */ // No operand predicates
5592 /* 4079 */ // MIs[0] x
5593 /* 4079 */ // No operand predicates
5594 /* 4079 */ // MIs[0] zero
5595 /* 4079 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5596 /* 4083 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5597 /* 4087 */ // MIs[1] Operand 1
5598 /* 4087 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5599 /* 4098 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5600 /* 4100 */ // Combiner Rule #227: merge_of_x_and_zero
5601 /* 4100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5602 /* 4103 */ // Label 236: @4103
5603 /* 4103 */ GIM_Reject,
5604 /* 4104 */ // Label 234: @4104
5605 /* 4104 */ GIM_Reject,
5606 /* 4105 */ // Label 15: @4105
5607 /* 4105 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4116), // Rule ID 71 //
5608 /* 4110 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
5609 /* 4113 */ // Combiner Rule #69: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5610 /* 4113 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5611 /* 4116 */ // Label 237: @4116
5612 /* 4116 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4127), // Rule ID 100 //
5613 /* 4121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5614 /* 4124 */ // Combiner Rule #81: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5615 /* 4124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5616 /* 4127 */ // Label 238: @4127
5617 /* 4127 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4138), // Rule ID 136 //
5618 /* 4132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
5619 /* 4135 */ // Combiner Rule #97: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5620 /* 4135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5621 /* 4138 */ // Label 239: @4138
5622 /* 4138 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4169),
5623 /* 4143 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5624 /* 4146 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4157), // Rule ID 366 //
5625 /* 4151 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
5626 /* 4154 */ // MIs[0] dst
5627 /* 4154 */ // No operand predicates
5628 /* 4154 */ // MIs[0] unused
5629 /* 4154 */ // No operand predicates
5630 /* 4154 */ // Combiner Rule #218: combine_use_vector_truncate
5631 /* 4154 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5632 /* 4157 */ // Label 241: @4157
5633 /* 4157 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4168), // Rule ID 376 //
5634 /* 4162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5635 /* 4165 */ // MIs[0] dst
5636 /* 4165 */ // No operand predicates
5637 /* 4165 */ // MIs[0] unused
5638 /* 4165 */ // No operand predicates
5639 /* 4165 */ // Combiner Rule #228: combine_build_unmerge
5640 /* 4165 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5641 /* 4168 */ // Label 242: @4168
5642 /* 4168 */ GIM_Reject,
5643 /* 4169 */ // Label 240: @4169
5644 /* 4169 */ GIM_Reject,
5645 /* 4170 */ // Label 16: @4170
5646 /* 4170 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4181), // Rule ID 135 //
5647 /* 4175 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
5648 /* 4178 */ // Combiner Rule #97: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5649 /* 4178 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5650 /* 4181 */ // Label 243: @4181
5651 /* 4181 */ GIM_Reject,
5652 /* 4182 */ // Label 17: @4182
5653 /* 4182 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4193), // Rule ID 359 //
5654 /* 4187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5655 /* 4190 */ // Combiner Rule #211: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5656 /* 4190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5657 /* 4193 */ // Label 244: @4193
5658 /* 4193 */ GIM_Reject,
5659 /* 4194 */ // Label 18: @4194
5660 /* 4194 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4215), // Rule ID 128 //
5661 /* 4199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5662 /* 4202 */ // MIs[0] dst
5663 /* 4202 */ // No operand predicates
5664 /* 4202 */ // MIs[0] t
5665 /* 4202 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5666 /* 4206 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5667 /* 4210 */ // MIs[1] ptr
5668 /* 4210 */ // No operand predicates
5669 /* 4210 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5670 /* 4212 */ // Combiner Rule #91: i2p_to_p2i
5671 /* 4212 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5672 /* 4215 */ // Label 245: @4215
5673 /* 4215 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4236), // Rule ID 92 //
5674 /* 4220 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5675 /* 4223 */ // MIs[0] dst
5676 /* 4223 */ // No operand predicates
5677 /* 4223 */ // MIs[0] __unary_undef_to_undef_match_0.x
5678 /* 4223 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5679 /* 4227 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5680 /* 4231 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5681 /* 4233 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5682 /* 4233 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5683 /* 4236 */ // Label 246: @4236
5684 /* 4236 */ GIM_Reject,
5685 /* 4237 */ // Label 19: @4237
5686 /* 4237 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4248), // Rule ID 127 //
5687 /* 4242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5688 /* 4245 */ // Combiner Rule #90: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5689 /* 4245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5690 /* 4248 */ // Label 247: @4248
5691 /* 4248 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4269), // Rule ID 93 //
5692 /* 4253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5693 /* 4256 */ // MIs[0] dst
5694 /* 4256 */ // No operand predicates
5695 /* 4256 */ // MIs[0] __unary_undef_to_undef_match_0.x
5696 /* 4256 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5697 /* 4260 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5698 /* 4264 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5699 /* 4266 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5700 /* 4266 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5701 /* 4269 */ // Label 248: @4269
5702 /* 4269 */ GIM_Reject,
5703 /* 4270 */ // Label 20: @4270
5704 /* 4270 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4291), // Rule ID 139 //
5705 /* 4275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
5706 /* 4278 */ // MIs[0] dst
5707 /* 4278 */ // No operand predicates
5708 /* 4278 */ // MIs[0] src1
5709 /* 4278 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5710 /* 4282 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5711 /* 4286 */ // MIs[1] src0
5712 /* 4286 */ // No operand predicates
5713 /* 4286 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5714 /* 4288 */ // Combiner Rule #100: bitcast_bitcast_fold
5715 /* 4288 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5716 /* 4291 */ // Label 249: @4291
5717 /* 4291 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4312), // Rule ID 90 //
5718 /* 4296 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5719 /* 4299 */ // MIs[0] dst
5720 /* 4299 */ // No operand predicates
5721 /* 4299 */ // MIs[0] __unary_undef_to_undef_match_0.x
5722 /* 4299 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5723 /* 4303 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5724 /* 4307 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5725 /* 4309 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
5726 /* 4309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5727 /* 4312 */ // Label 250: @4312
5728 /* 4312 */ GIM_Reject,
5729 /* 4313 */ // Label 21: @4313
5730 /* 4313 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4342), // Rule ID 20 //
5731 /* 4318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5732 /* 4321 */ // MIs[0] dst
5733 /* 4321 */ // No operand predicates
5734 /* 4321 */ // MIs[0] src
5735 /* 4321 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5736 /* 4325 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
5737 /* 4329 */ // MIs[1] __idempotent_prop_match_0.x
5738 /* 4329 */ // No operand predicates
5739 /* 4329 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5740 /* 4334 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5741 /* 4336 */ // Combiner Rule #20: idempotent_prop @ [__idempotent_prop_match_0[0]]
5742 /* 4336 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5743 /* 4341 */ GIR_EraseRootFromParent_Done,
5744 /* 4342 */ // Label 251: @4342
5745 /* 4342 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4365), // Rule ID 45 //
5746 /* 4347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
5747 /* 4350 */ // MIs[0] root
5748 /* 4350 */ // No operand predicates
5749 /* 4350 */ // MIs[0] src
5750 /* 4350 */ // No operand predicates
5751 /* 4350 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5752 /* 4354 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5753 /* 4359 */ // Combiner Rule #43: freeze_of_non_undef_non_poison
5754 /* 4359 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5755 /* 4364 */ GIR_EraseRootFromParent_Done,
5756 /* 4365 */ // Label 252: @4365
5757 /* 4365 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4376), // Rule ID 46 //
5758 /* 4370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5759 /* 4373 */ // MIs[0] dst
5760 /* 4373 */ // No operand predicates
5761 /* 4373 */ // MIs[0] src
5762 /* 4373 */ // No operand predicates
5763 /* 4373 */ // Combiner Rule #44: push_freeze_to_prevent_poison_from_propagating
5764 /* 4373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
5765 /* 4376 */ // Label 253: @4376
5766 /* 4376 */ GIM_Reject,
5767 /* 4377 */ // Label 22: @4377
5768 /* 4377 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4398), // Rule ID 188 //
5769 /* 4382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
5770 /* 4385 */ // MIs[0] dst
5771 /* 4385 */ // No operand predicates
5772 /* 4385 */ // MIs[0] src0
5773 /* 4385 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5774 /* 4389 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5775 /* 4393 */ // MIs[1] cst
5776 /* 4393 */ // No operand predicates
5777 /* 4393 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5778 /* 4395 */ // Combiner Rule #145: constant_fold_intrinsic_trunc
5779 /* 4395 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5780 /* 4398 */ // Label 254: @4398
5781 /* 4398 */ GIM_Reject,
5782 /* 4399 */ // Label 23: @4399
5783 /* 4399 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4420), // Rule ID 189 //
5784 /* 4404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
5785 /* 4407 */ // MIs[0] dst
5786 /* 4407 */ // No operand predicates
5787 /* 4407 */ // MIs[0] src0
5788 /* 4407 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5789 /* 4411 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5790 /* 4415 */ // MIs[1] cst
5791 /* 4415 */ // No operand predicates
5792 /* 4415 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5793 /* 4417 */ // Combiner Rule #146: constant_fold_intrinsic_round
5794 /* 4417 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5795 /* 4420 */ // Label 255: @4420
5796 /* 4420 */ GIM_Reject,
5797 /* 4421 */ // Label 24: @4421
5798 /* 4421 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4442), // Rule ID 190 //
5799 /* 4426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
5800 /* 4429 */ // MIs[0] dst
5801 /* 4429 */ // No operand predicates
5802 /* 4429 */ // MIs[0] src0
5803 /* 4429 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5804 /* 4433 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5805 /* 4437 */ // MIs[1] cst
5806 /* 4437 */ // No operand predicates
5807 /* 4437 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5808 /* 4439 */ // Combiner Rule #147: constant_fold_intrinsic_roundeven
5809 /* 4439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5810 /* 4442 */ // Label 256: @4442
5811 /* 4442 */ GIM_Reject,
5812 /* 4443 */ // Label 25: @4443
5813 /* 4443 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4454), // Rule ID 72 //
5814 /* 4448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5815 /* 4451 */ // Combiner Rule #70: extending_loads; wip_match_opcode 'G_LOAD'
5816 /* 4451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5817 /* 4454 */ // Label 257: @4454
5818 /* 4454 */ GIM_Reject,
5819 /* 4455 */ // Label 26: @4455
5820 /* 4455 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4466), // Rule ID 73 //
5821 /* 4460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5822 /* 4463 */ // Combiner Rule #70: extending_loads; wip_match_opcode 'G_SEXTLOAD'
5823 /* 4463 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5824 /* 4466 */ // Label 258: @4466
5825 /* 4466 */ GIM_Reject,
5826 /* 4467 */ // Label 27: @4467
5827 /* 4467 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4478), // Rule ID 74 //
5828 /* 4472 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5829 /* 4475 */ // Combiner Rule #70: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
5830 /* 4475 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5831 /* 4478 */ // Label 259: @4478
5832 /* 4478 */ GIM_Reject,
5833 /* 4479 */ // Label 28: @4479
5834 /* 4479 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4490), // Rule ID 102 //
5835 /* 4484 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5836 /* 4487 */ // Combiner Rule #83: erase_undef_store; wip_match_opcode 'G_STORE'
5837 /* 4487 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
5838 /* 4490 */ // Label 260: @4490
5839 /* 4490 */ GIM_Reject,
5840 /* 4491 */ // Label 29: @4491
5841 /* 4491 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4502), // Rule ID 129 //
5842 /* 4496 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5843 /* 4499 */ // Combiner Rule #92: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
5844 /* 4499 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
5845 /* 4502 */ // Label 261: @4502
5846 /* 4502 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4513), // Rule ID 273 //
5847 /* 4507 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
5848 /* 4510 */ // Combiner Rule #182: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
5849 /* 4510 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5850 /* 4513 */ // Label 262: @4513
5851 /* 4513 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4534), // Rule ID 59 //
5852 /* 4518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
5853 /* 4521 */ // MIs[0] root
5854 /* 4521 */ // No operand predicates
5855 /* 4521 */ // MIs[0] select
5856 /* 4521 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5857 /* 4525 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5858 /* 4529 */ // MIs[1] cond
5859 /* 4529 */ // No operand predicates
5860 /* 4529 */ // MIs[1] true
5861 /* 4529 */ // No operand predicates
5862 /* 4529 */ // MIs[1] false
5863 /* 4529 */ // No operand predicates
5864 /* 4529 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5865 /* 4531 */ // Combiner Rule #57: select_of_anyext
5866 /* 4531 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5867 /* 4534 */ // Label 263: @4534
5868 /* 4534 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4555), // Rule ID 54 //
5869 /* 4539 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
5870 /* 4542 */ // MIs[0] root
5871 /* 4542 */ // No operand predicates
5872 /* 4542 */ // MIs[0] second
5873 /* 4542 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5874 /* 4546 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5875 /* 4550 */ // MIs[1] src
5876 /* 4550 */ // No operand predicates
5877 /* 4550 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5878 /* 4552 */ // Combiner Rule #52: anyext_of_anyext
5879 /* 4552 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5880 /* 4555 */ // Label 264: @4555
5881 /* 4555 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4576), // Rule ID 56 //
5882 /* 4560 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
5883 /* 4563 */ // MIs[0] root
5884 /* 4563 */ // No operand predicates
5885 /* 4563 */ // MIs[0] second
5886 /* 4563 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5887 /* 4567 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5888 /* 4571 */ // MIs[1] src
5889 /* 4571 */ // No operand predicates
5890 /* 4571 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5891 /* 4573 */ // Combiner Rule #54: anyext_of_sext
5892 /* 4573 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5893 /* 4576 */ // Label 265: @4576
5894 /* 4576 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4597), // Rule ID 55 //
5895 /* 4581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
5896 /* 4584 */ // MIs[0] root
5897 /* 4584 */ // No operand predicates
5898 /* 4584 */ // MIs[0] second
5899 /* 4584 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5900 /* 4588 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5901 /* 4592 */ // MIs[1] src
5902 /* 4592 */ // No operand predicates
5903 /* 4592 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5904 /* 4594 */ // Combiner Rule #53: anyext_of_zext
5905 /* 4594 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5906 /* 4597 */ // Label 266: @4597
5907 /* 4597 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4618), // Rule ID 91 //
5908 /* 4602 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5909 /* 4605 */ // MIs[0] dst
5910 /* 4605 */ // No operand predicates
5911 /* 4605 */ // MIs[0] __unary_undef_to_undef_match_0.x
5912 /* 4605 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5913 /* 4609 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5914 /* 4613 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5915 /* 4615 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
5916 /* 4615 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5917 /* 4618 */ // Label 267: @4618
5918 /* 4618 */ GIM_Reject,
5919 /* 4619 */ // Label 30: @4619
5920 /* 4619 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4630), // Rule ID 137 //
5921 /* 4624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
5922 /* 4627 */ // Combiner Rule #98: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
5923 /* 4627 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
5924 /* 4630 */ // Label 268: @4630
5925 /* 4630 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4641), // Rule ID 138 //
5926 /* 4635 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5927 /* 4638 */ // Combiner Rule #99: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
5928 /* 4638 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
5929 /* 4641 */ // Label 269: @4641
5930 /* 4641 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4652), // Rule ID 177 //
5931 /* 4646 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
5932 /* 4649 */ // Combiner Rule #134: trunc_shift; wip_match_opcode 'G_TRUNC'
5933 /* 4649 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
5934 /* 4652 */ // Label 270: @4652
5935 /* 4652 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4673), // Rule ID 60 //
5936 /* 4657 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
5937 /* 4660 */ // MIs[0] root
5938 /* 4660 */ // No operand predicates
5939 /* 4660 */ // MIs[0] select
5940 /* 4660 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5941 /* 4664 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5942 /* 4668 */ // MIs[1] cond
5943 /* 4668 */ // No operand predicates
5944 /* 4668 */ // MIs[1] true
5945 /* 4668 */ // No operand predicates
5946 /* 4668 */ // MIs[1] false
5947 /* 4668 */ // No operand predicates
5948 /* 4668 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5949 /* 4670 */ // Combiner Rule #58: select_of_truncate
5950 /* 4670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5951 /* 4673 */ // Label 271: @4673
5952 /* 4673 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4702), // Rule ID 62 //
5953 /* 4678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
5954 /* 4681 */ // MIs[0] root
5955 /* 4681 */ // No operand predicates
5956 /* 4681 */ // MIs[0] binop
5957 /* 4681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5958 /* 4685 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5959 /* 4689 */ // MIs[1] x
5960 /* 4689 */ // No operand predicates
5961 /* 4689 */ // MIs[1] const
5962 /* 4689 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5963 /* 4693 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5964 /* 4697 */ // MIs[2] imm
5965 /* 4697 */ // No operand predicates
5966 /* 4697 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5967 /* 4699 */ // Combiner Rule #60: narrow_binop_add
5968 /* 4699 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5969 /* 4702 */ // Label 272: @4702
5970 /* 4702 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4731), // Rule ID 65 //
5971 /* 4707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
5972 /* 4710 */ // MIs[0] root
5973 /* 4710 */ // No operand predicates
5974 /* 4710 */ // MIs[0] binop
5975 /* 4710 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5976 /* 4714 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5977 /* 4718 */ // MIs[1] x
5978 /* 4718 */ // No operand predicates
5979 /* 4718 */ // MIs[1] const
5980 /* 4718 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5981 /* 4722 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5982 /* 4726 */ // MIs[2] imm
5983 /* 4726 */ // No operand predicates
5984 /* 4726 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5985 /* 4728 */ // Combiner Rule #63: narrow_binop_and
5986 /* 4728 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5987 /* 4731 */ // Label 273: @4731
5988 /* 4731 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4760), // Rule ID 64 //
5989 /* 4736 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
5990 /* 4739 */ // MIs[0] root
5991 /* 4739 */ // No operand predicates
5992 /* 4739 */ // MIs[0] binop
5993 /* 4739 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5994 /* 4743 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5995 /* 4747 */ // MIs[1] x
5996 /* 4747 */ // No operand predicates
5997 /* 4747 */ // MIs[1] const
5998 /* 4747 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5999 /* 4751 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6000 /* 4755 */ // MIs[2] imm
6001 /* 4755 */ // No operand predicates
6002 /* 4755 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6003 /* 4757 */ // Combiner Rule #62: narrow_binop_mul
6004 /* 4757 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6005 /* 4760 */ // Label 274: @4760
6006 /* 4760 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4789), // Rule ID 66 //
6007 /* 4765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6008 /* 4768 */ // MIs[0] root
6009 /* 4768 */ // No operand predicates
6010 /* 4768 */ // MIs[0] binop
6011 /* 4768 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6012 /* 4772 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6013 /* 4776 */ // MIs[1] x
6014 /* 4776 */ // No operand predicates
6015 /* 4776 */ // MIs[1] const
6016 /* 4776 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6017 /* 4780 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6018 /* 4784 */ // MIs[2] imm
6019 /* 4784 */ // No operand predicates
6020 /* 4784 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6021 /* 4786 */ // Combiner Rule #64: narrow_binop_or
6022 /* 4786 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6023 /* 4789 */ // Label 275: @4789
6024 /* 4789 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4818), // Rule ID 63 //
6025 /* 4794 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6026 /* 4797 */ // MIs[0] root
6027 /* 4797 */ // No operand predicates
6028 /* 4797 */ // MIs[0] binop
6029 /* 4797 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6030 /* 4801 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6031 /* 4805 */ // MIs[1] x
6032 /* 4805 */ // No operand predicates
6033 /* 4805 */ // MIs[1] const
6034 /* 4805 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6035 /* 4809 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6036 /* 4813 */ // MIs[2] imm
6037 /* 4813 */ // No operand predicates
6038 /* 4813 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6039 /* 4815 */ // Combiner Rule #61: narrow_binop_sub
6040 /* 4815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6041 /* 4818 */ // Label 276: @4818
6042 /* 4818 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4850), // Rule ID 383 //
6043 /* 4823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6044 /* 4826 */ // MIs[0] dst
6045 /* 4826 */ // No operand predicates
6046 /* 4826 */ // MIs[0] min
6047 /* 4826 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6048 /* 4830 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6049 /* 4834 */ // MIs[1] x
6050 /* 4834 */ // No operand predicates
6051 /* 4834 */ // MIs[1] y
6052 /* 4834 */ // No operand predicates
6053 /* 4834 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
6054 /* 4838 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6055 /* 4840 */ // Combiner Rule #233: trunc_usatu
6056 /* 4840 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6057 /* 4843 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6058 /* 4845 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6059 /* 4849 */ GIR_EraseRootFromParent_Done,
6060 /* 4850 */ // Label 277: @4850
6061 /* 4850 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4879), // Rule ID 67 //
6062 /* 4855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6063 /* 4858 */ // MIs[0] root
6064 /* 4858 */ // No operand predicates
6065 /* 4858 */ // MIs[0] binop
6066 /* 4858 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6067 /* 4862 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6068 /* 4866 */ // MIs[1] x
6069 /* 4866 */ // No operand predicates
6070 /* 4866 */ // MIs[1] const
6071 /* 4866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6072 /* 4870 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6073 /* 4874 */ // MIs[2] imm
6074 /* 4874 */ // No operand predicates
6075 /* 4874 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6076 /* 4876 */ // Combiner Rule #65: narrow_binop_xor
6077 /* 4876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6078 /* 4879 */ // Label 278: @4879
6079 /* 4879 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4900), // Rule ID 49 //
6080 /* 4884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6081 /* 4887 */ // MIs[0] root
6082 /* 4887 */ // No operand predicates
6083 /* 4887 */ // MIs[0] ext
6084 /* 4887 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6085 /* 4891 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6086 /* 4895 */ // MIs[1] src
6087 /* 4895 */ // No operand predicates
6088 /* 4895 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6089 /* 4897 */ // Combiner Rule #47: truncate_of_anyext
6090 /* 4897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6091 /* 4900 */ // Label 279: @4900
6092 /* 4900 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4924), // Rule ID 61 //
6093 /* 4905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
6094 /* 4908 */ // MIs[0] root
6095 /* 4908 */ // No operand predicates
6096 /* 4908 */ // MIs[0] bv
6097 /* 4908 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6098 /* 4912 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6099 /* 4916 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6100 /* 4919 */ // MIs[1] unused
6101 /* 4919 */ // No operand predicates
6102 /* 4919 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6103 /* 4921 */ // Combiner Rule #59: buildvector_of_truncate
6104 /* 4921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6105 /* 4924 */ // Label 280: @4924
6106 /* 4924 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4945), // Rule ID 48 //
6107 /* 4929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
6108 /* 4932 */ // MIs[0] root
6109 /* 4932 */ // No operand predicates
6110 /* 4932 */ // MIs[0] ext
6111 /* 4932 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6112 /* 4936 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6113 /* 4940 */ // MIs[1] src
6114 /* 4940 */ // No operand predicates
6115 /* 4940 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6116 /* 4942 */ // Combiner Rule #46: truncate_of_sext
6117 /* 4942 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6118 /* 4945 */ // Label 281: @4945
6119 /* 4945 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4966), // Rule ID 47 //
6120 /* 4950 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
6121 /* 4953 */ // MIs[0] root
6122 /* 4953 */ // No operand predicates
6123 /* 4953 */ // MIs[0] ext
6124 /* 4953 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6125 /* 4957 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6126 /* 4961 */ // MIs[1] src
6127 /* 4961 */ // No operand predicates
6128 /* 4961 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6129 /* 4963 */ // Combiner Rule #45: truncate_of_zext
6130 /* 4963 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6131 /* 4966 */ // Label 282: @4966
6132 /* 4966 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4987), // Rule ID 89 //
6133 /* 4971 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6134 /* 4974 */ // MIs[0] dst
6135 /* 4974 */ // No operand predicates
6136 /* 4974 */ // MIs[0] __unary_undef_to_undef_match_0.x
6137 /* 4974 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6138 /* 4978 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6139 /* 4982 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6140 /* 4984 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6141 /* 4984 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6142 /* 4987 */ // Label 283: @4987
6143 /* 4987 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5008), // Rule ID 68 //
6144 /* 4992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6145 /* 4995 */ // MIs[0] root
6146 /* 4995 */ // No operand predicates
6147 /* 4995 */ // MIs[0] int
6148 /* 4995 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6149 /* 4999 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6150 /* 5003 */ // MIs[1] imm
6151 /* 5003 */ // No operand predicates
6152 /* 5003 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6153 /* 5005 */ // Combiner Rule #66: integer_of_truncate
6154 /* 5005 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6155 /* 5008 */ // Label 284: @5008
6156 /* 5008 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5019), // Rule ID 381 //
6157 /* 5013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6158 /* 5016 */ // MIs[0] dst
6159 /* 5016 */ // No operand predicates
6160 /* 5016 */ // MIs[0] src
6161 /* 5016 */ // No operand predicates
6162 /* 5016 */ // Combiner Rule #231: trunc_ssats
6163 /* 5016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6164 /* 5019 */ // Label 285: @5019
6165 /* 5019 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5030), // Rule ID 382 //
6166 /* 5024 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6167 /* 5027 */ // MIs[0] dst
6168 /* 5027 */ // No operand predicates
6169 /* 5027 */ // MIs[0] src
6170 /* 5027 */ // No operand predicates
6171 /* 5027 */ // Combiner Rule #232: trunc_ssatu
6172 /* 5027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
6173 /* 5030 */ // Label 286: @5030
6174 /* 5030 */ GIM_Reject,
6175 /* 5031 */ // Label 31: @5031
6176 /* 5031 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5063), // Rule ID 384 //
6177 /* 5036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6178 /* 5039 */ // MIs[0] dst
6179 /* 5039 */ // No operand predicates
6180 /* 5039 */ // MIs[0] src
6181 /* 5039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6182 /* 5043 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6183 /* 5047 */ // MIs[1] x
6184 /* 5047 */ // No operand predicates
6185 /* 5047 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6186 /* 5051 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6187 /* 5053 */ // Combiner Rule #234: truncusatu_to_fptouisat
6188 /* 5053 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6189 /* 5056 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6190 /* 5058 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6191 /* 5062 */ GIR_EraseRootFromParent_Done,
6192 /* 5063 */ // Label 287: @5063
6193 /* 5063 */ GIM_Reject,
6194 /* 5064 */ // Label 32: @5064
6195 /* 5064 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5075), // Rule ID 272 //
6196 /* 5069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6197 /* 5072 */ // Combiner Rule #182: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6198 /* 5072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6199 /* 5075 */ // Label 288: @5075
6200 /* 5075 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5096), // Rule ID 53 //
6201 /* 5080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6202 /* 5083 */ // MIs[0] root
6203 /* 5083 */ // No operand predicates
6204 /* 5083 */ // MIs[0] second
6205 /* 5083 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6206 /* 5087 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6207 /* 5091 */ // MIs[1] src
6208 /* 5091 */ // No operand predicates
6209 /* 5091 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6210 /* 5093 */ // Combiner Rule #51: sext_of_anyext
6211 /* 5093 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6212 /* 5096 */ // Label 289: @5096
6213 /* 5096 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5117), // Rule ID 52 //
6214 /* 5101 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6215 /* 5104 */ // MIs[0] root
6216 /* 5104 */ // No operand predicates
6217 /* 5104 */ // MIs[0] second
6218 /* 5104 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6219 /* 5108 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6220 /* 5112 */ // MIs[1] src
6221 /* 5112 */ // No operand predicates
6222 /* 5112 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6223 /* 5114 */ // Combiner Rule #50: sext_of_sext
6224 /* 5114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6225 /* 5117 */ // Label 290: @5117
6226 /* 5117 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5138), // Rule ID 360 //
6227 /* 5122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
6228 /* 5125 */ // MIs[0] root
6229 /* 5125 */ // No operand predicates
6230 /* 5125 */ // MIs[0] src
6231 /* 5125 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6232 /* 5129 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6233 /* 5133 */ // MIs[1] x
6234 /* 5133 */ // No operand predicates
6235 /* 5133 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6236 /* 5135 */ // Combiner Rule #212: sext_trunc
6237 /* 5135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6238 /* 5138 */ // Label 291: @5138
6239 /* 5138 */ GIM_Reject,
6240 /* 5139 */ // Label 33: @5139
6241 /* 5139 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5150), // Rule ID 164 //
6242 /* 5144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
6243 /* 5147 */ // Combiner Rule #121: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6244 /* 5147 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6245 /* 5150 */ // Label 292: @5150
6246 /* 5150 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5161), // Rule ID 172 //
6247 /* 5155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6248 /* 5158 */ // Combiner Rule #129: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6249 /* 5158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6250 /* 5161 */ // Label 293: @5161
6251 /* 5161 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5172), // Rule ID 241 //
6252 /* 5166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
6253 /* 5169 */ // Combiner Rule #175: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6254 /* 5169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6255 /* 5172 */ // Label 294: @5172
6256 /* 5172 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5193), // Rule ID 57 //
6257 /* 5177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
6258 /* 5180 */ // MIs[0] dst
6259 /* 5180 */ // No operand predicates
6260 /* 5180 */ // MIs[0] x
6261 /* 5180 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6262 /* 5184 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6263 /* 5188 */ // MIs[1] src
6264 /* 5188 */ // No operand predicates
6265 /* 5188 */ // MIs[1] a
6266 /* 5188 */ // No operand predicates
6267 /* 5188 */ // MIs[0] b
6268 /* 5188 */ // No operand predicates
6269 /* 5188 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6270 /* 5190 */ // Combiner Rule #55: sext_inreg_of_sext_inreg
6271 /* 5190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6272 /* 5193 */ // Label 295: @5193
6273 /* 5193 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5204), // Rule ID 176 //
6274 /* 5198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
6275 /* 5201 */ // MIs[0] dst
6276 /* 5201 */ // No operand predicates
6277 /* 5201 */ // MIs[0] src
6278 /* 5201 */ // No operand predicates
6279 /* 5201 */ // MIs[0] imm
6280 /* 5201 */ // No operand predicates
6281 /* 5201 */ // Combiner Rule #133: sext_inreg_to_zext_inreg
6282 /* 5201 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6283 /* 5204 */ // Label 296: @5204
6284 /* 5204 */ GIM_Reject,
6285 /* 5205 */ // Label 34: @5205
6286 /* 5205 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5216), // Rule ID 175 //
6287 /* 5210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
6288 /* 5213 */ // Combiner Rule #132: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6289 /* 5213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6290 /* 5216 */ // Label 297: @5216
6291 /* 5216 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5227), // Rule ID 271 //
6292 /* 5221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6293 /* 5224 */ // Combiner Rule #182: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6294 /* 5224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6295 /* 5227 */ // Label 298: @5227
6296 /* 5227 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5248), // Rule ID 58 //
6297 /* 5232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6298 /* 5235 */ // MIs[0] root
6299 /* 5235 */ // No operand predicates
6300 /* 5235 */ // MIs[0] select
6301 /* 5235 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6302 /* 5239 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6303 /* 5243 */ // MIs[1] cond
6304 /* 5243 */ // No operand predicates
6305 /* 5243 */ // MIs[1] true
6306 /* 5243 */ // No operand predicates
6307 /* 5243 */ // MIs[1] false
6308 /* 5243 */ // No operand predicates
6309 /* 5243 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6310 /* 5245 */ // Combiner Rule #56: select_of_zext
6311 /* 5245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6312 /* 5248 */ // Label 299: @5248
6313 /* 5248 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5269), // Rule ID 51 //
6314 /* 5253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6315 /* 5256 */ // MIs[0] root
6316 /* 5256 */ // No operand predicates
6317 /* 5256 */ // MIs[0] second
6318 /* 5256 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6319 /* 5260 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6320 /* 5264 */ // MIs[1] src
6321 /* 5264 */ // No operand predicates
6322 /* 5264 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6323 /* 5266 */ // Combiner Rule #49: zext_of_anyext
6324 /* 5266 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6325 /* 5269 */ // Label 300: @5269
6326 /* 5269 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5296), // Rule ID 361 //
6327 /* 5274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
6328 /* 5277 */ // MIs[0] root
6329 /* 5277 */ // No operand predicates
6330 /* 5277 */ // MIs[0] src
6331 /* 5277 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6332 /* 5281 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6333 /* 5285 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6334 /* 5291 */ // MIs[1] x
6335 /* 5291 */ // No operand predicates
6336 /* 5291 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6337 /* 5293 */ // Combiner Rule #213: zext_trunc
6338 /* 5293 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6339 /* 5296 */ // Label 301: @5296
6340 /* 5296 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5317), // Rule ID 50 //
6341 /* 5301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6342 /* 5304 */ // MIs[0] root
6343 /* 5304 */ // No operand predicates
6344 /* 5304 */ // MIs[0] second
6345 /* 5304 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6346 /* 5308 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6347 /* 5312 */ // MIs[1] src
6348 /* 5312 */ // No operand predicates
6349 /* 5312 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6350 /* 5314 */ // Combiner Rule #48: zext_of_zext
6351 /* 5314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6352 /* 5317 */ // Label 302: @5317
6353 /* 5317 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5334), // Rule ID 362 //
6354 /* 5322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
6355 /* 5325 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6356 /* 5331 */ // MIs[0] root
6357 /* 5331 */ // No operand predicates
6358 /* 5331 */ // MIs[0] x
6359 /* 5331 */ // No operand predicates
6360 /* 5331 */ // Combiner Rule #214: nneg_zext
6361 /* 5331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6362 /* 5334 */ // Label 303: @5334
6363 /* 5334 */ GIM_Reject,
6364 /* 5335 */ // Label 35: @5335
6365 /* 5335 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5346), // Rule ID 82 //
6366 /* 5340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
6367 /* 5343 */ // Combiner Rule #76: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6368 /* 5343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6369 /* 5346 */ // Label 304: @5346
6370 /* 5346 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5357), // Rule ID 85 //
6371 /* 5351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6372 /* 5354 */ // Combiner Rule #77: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6373 /* 5354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6374 /* 5357 */ // Label 305: @5357
6375 /* 5357 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5368), // Rule ID 212 //
6376 /* 5362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6377 /* 5365 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_SHL'
6378 /* 5365 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6379 /* 5368 */ // Label 306: @5368
6380 /* 5368 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5379), // Rule ID 217 //
6381 /* 5373 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6382 /* 5376 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6383 /* 5376 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6384 /* 5379 */ // Label 307: @5379
6385 /* 5379 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5390), // Rule ID 240 //
6386 /* 5384 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
6387 /* 5387 */ // Combiner Rule #174: commute_shift; wip_match_opcode 'G_SHL'
6388 /* 5387 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6389 /* 5390 */ // Label 308: @5390
6390 /* 5390 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5401), // Rule ID 254 //
6391 /* 5395 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6392 /* 5398 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SHL'
6393 /* 5398 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6394 /* 5401 */ // Label 309: @5401
6395 /* 5401 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5412), // Rule ID 303 //
6396 /* 5406 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6397 /* 5409 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SHL'
6398 /* 5409 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6399 /* 5412 */ // Label 310: @5412
6400 /* 5412 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5447), // Rule ID 43 //
6401 /* 5417 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
6402 /* 5420 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6403 /* 5426 */ // MIs[0] root
6404 /* 5426 */ // No operand predicates
6405 /* 5426 */ // MIs[0] left
6406 /* 5426 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6407 /* 5430 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6408 /* 5434 */ // MIs[1] imm
6409 /* 5434 */ // No operand predicates
6410 /* 5434 */ // MIs[0] x
6411 /* 5434 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6412 /* 5438 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6413 /* 5442 */ // MIs[2] imm1
6414 /* 5442 */ // No operand predicates
6415 /* 5442 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6416 /* 5444 */ // Combiner Rule #41: shl_of_vscale
6417 /* 5444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6418 /* 5447 */ // Label 311: @5447
6419 /* 5447 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5487), // Rule ID 118 //
6420 /* 5452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
6421 /* 5455 */ // MIs[0] dst
6422 /* 5455 */ // No operand predicates
6423 /* 5455 */ // MIs[0] zero
6424 /* 5455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6425 /* 5459 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6426 /* 5463 */ // MIs[1] Operand 1
6427 /* 5463 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6428 /* 5474 */ // MIs[0] rhs
6429 /* 5474 */ // No operand predicates
6430 /* 5474 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6431 /* 5479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6432 /* 5481 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6433 /* 5481 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6434 /* 5486 */ GIR_EraseRootFromParent_Done,
6435 /* 5487 */ // Label 312: @5487
6436 /* 5487 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5510), // Rule ID 110 //
6437 /* 5492 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6438 /* 5495 */ // MIs[0] dst
6439 /* 5495 */ // No operand predicates
6440 /* 5495 */ // MIs[0] lhs
6441 /* 5495 */ // No operand predicates
6442 /* 5495 */ // MIs[0] Operand 2
6443 /* 5495 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6444 /* 5499 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6445 /* 5504 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[4]]
6446 /* 5504 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6447 /* 5509 */ GIR_EraseRootFromParent_Done,
6448 /* 5510 */ // Label 313: @5510
6449 /* 5510 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5521), // Rule ID 149 //
6450 /* 5515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
6451 /* 5518 */ // MIs[0] root
6452 /* 5518 */ // No operand predicates
6453 /* 5518 */ // MIs[0] mi.shifted
6454 /* 5518 */ // No operand predicates
6455 /* 5518 */ // MIs[0] mi.amt
6456 /* 5518 */ // No operand predicates
6457 /* 5518 */ // Combiner Rule #108: shifts_too_big @ [mi[0]]
6458 /* 5518 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6459 /* 5521 */ // Label 314: @5521
6460 /* 5521 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5532), // Rule ID 165 //
6461 /* 5526 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6462 /* 5529 */ // MIs[0] dst
6463 /* 5529 */ // No operand predicates
6464 /* 5529 */ // MIs[0] src0
6465 /* 5529 */ // No operand predicates
6466 /* 5529 */ // MIs[0] src1
6467 /* 5529 */ // No operand predicates
6468 /* 5529 */ // Combiner Rule #122: reduce_shl_of_extend
6469 /* 5529 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6470 /* 5532 */ // Label 315: @5532
6471 /* 5532 */ GIM_Reject,
6472 /* 5533 */ // Label 36: @5533
6473 /* 5533 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5544), // Rule ID 87 //
6474 /* 5538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6475 /* 5541 */ // Combiner Rule #77: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6476 /* 5541 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6477 /* 5544 */ // Label 316: @5544
6478 /* 5544 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5555), // Rule ID 214 //
6479 /* 5549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6480 /* 5552 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_LSHR'
6481 /* 5552 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6482 /* 5555 */ // Label 317: @5555
6483 /* 5555 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5566), // Rule ID 219 //
6484 /* 5560 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6485 /* 5563 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6486 /* 5563 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6487 /* 5566 */ // Label 318: @5566
6488 /* 5566 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5577), // Rule ID 244 //
6489 /* 5571 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6490 /* 5574 */ // Combiner Rule #177: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6491 /* 5574 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6492 /* 5577 */ // Label 319: @5577
6493 /* 5577 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5588), // Rule ID 246 //
6494 /* 5582 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6495 /* 5585 */ // Combiner Rule #178: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6496 /* 5585 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6497 /* 5588 */ // Label 320: @5588
6498 /* 5588 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5599), // Rule ID 251 //
6499 /* 5593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6500 /* 5596 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_LSHR'
6501 /* 5596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6502 /* 5599 */ // Label 321: @5599
6503 /* 5599 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5610), // Rule ID 301 //
6504 /* 5604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6505 /* 5607 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6506 /* 5607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6507 /* 5610 */ // Label 322: @5610
6508 /* 5610 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5639), // Rule ID 385 //
6509 /* 5615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6510 /* 5618 */ // MIs[0] dst
6511 /* 5618 */ // No operand predicates
6512 /* 5618 */ // MIs[0] d2
6513 /* 5618 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6514 /* 5622 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6515 /* 5626 */ // MIs[1] d1
6516 /* 5626 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6517 /* 5630 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6518 /* 5634 */ // MIs[2] x
6519 /* 5634 */ // No operand predicates
6520 /* 5634 */ // MIs[2] y
6521 /* 5634 */ // No operand predicates
6522 /* 5634 */ // MIs[0] z
6523 /* 5634 */ // No operand predicates
6524 /* 5634 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6525 /* 5636 */ // Combiner Rule #235: lshr_of_trunc_of_lshr
6526 /* 5636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6527 /* 5639 */ // Label 323: @5639
6528 /* 5639 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5679), // Rule ID 119 //
6529 /* 5644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
6530 /* 5647 */ // MIs[0] dst
6531 /* 5647 */ // No operand predicates
6532 /* 5647 */ // MIs[0] zero
6533 /* 5647 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6534 /* 5651 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6535 /* 5655 */ // MIs[1] Operand 1
6536 /* 5655 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6537 /* 5666 */ // MIs[0] rhs
6538 /* 5666 */ // No operand predicates
6539 /* 5666 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6540 /* 5671 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6541 /* 5673 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6542 /* 5673 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6543 /* 5678 */ GIR_EraseRootFromParent_Done,
6544 /* 5679 */ // Label 324: @5679
6545 /* 5679 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5702), // Rule ID 112 //
6546 /* 5684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6547 /* 5687 */ // MIs[0] dst
6548 /* 5687 */ // No operand predicates
6549 /* 5687 */ // MIs[0] lhs
6550 /* 5687 */ // No operand predicates
6551 /* 5687 */ // MIs[0] Operand 2
6552 /* 5687 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6553 /* 5691 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6554 /* 5696 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[6]]
6555 /* 5696 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6556 /* 5701 */ GIR_EraseRootFromParent_Done,
6557 /* 5702 */ // Label 325: @5702
6558 /* 5702 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5713), // Rule ID 151 //
6559 /* 5707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
6560 /* 5710 */ // MIs[0] root
6561 /* 5710 */ // No operand predicates
6562 /* 5710 */ // MIs[0] mi.shifted
6563 /* 5710 */ // No operand predicates
6564 /* 5710 */ // MIs[0] mi.amt
6565 /* 5710 */ // No operand predicates
6566 /* 5710 */ // Combiner Rule #108: shifts_too_big @ [mi[2]]
6567 /* 5710 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6568 /* 5713 */ // Label 326: @5713
6569 /* 5713 */ GIM_Reject,
6570 /* 5714 */ // Label 37: @5714
6571 /* 5714 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5725), // Rule ID 86 //
6572 /* 5719 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6573 /* 5722 */ // Combiner Rule #77: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6574 /* 5722 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6575 /* 5725 */ // Label 327: @5725
6576 /* 5725 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5736), // Rule ID 162 //
6577 /* 5730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
6578 /* 5733 */ // Combiner Rule #119: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6579 /* 5733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6580 /* 5736 */ // Label 328: @5736
6581 /* 5736 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(5747), // Rule ID 213 //
6582 /* 5741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6583 /* 5744 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_ASHR'
6584 /* 5744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6585 /* 5747 */ // Label 329: @5747
6586 /* 5747 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(5758), // Rule ID 218 //
6587 /* 5752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6588 /* 5755 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6589 /* 5755 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6590 /* 5758 */ // Label 330: @5758
6591 /* 5758 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(5769), // Rule ID 243 //
6592 /* 5763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6593 /* 5766 */ // Combiner Rule #177: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6594 /* 5766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6595 /* 5769 */ // Label 331: @5769
6596 /* 5769 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(5780), // Rule ID 245 //
6597 /* 5774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6598 /* 5777 */ // Combiner Rule #178: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6599 /* 5777 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6600 /* 5780 */ // Label 332: @5780
6601 /* 5780 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(5791), // Rule ID 250 //
6602 /* 5785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6603 /* 5788 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_ASHR'
6604 /* 5788 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6605 /* 5791 */ // Label 333: @5791
6606 /* 5791 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(5802), // Rule ID 302 //
6607 /* 5796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6608 /* 5799 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6609 /* 5799 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6610 /* 5802 */ // Label 334: @5802
6611 /* 5802 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(5842), // Rule ID 120 //
6612 /* 5807 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
6613 /* 5810 */ // MIs[0] dst
6614 /* 5810 */ // No operand predicates
6615 /* 5810 */ // MIs[0] zero
6616 /* 5810 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6617 /* 5814 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6618 /* 5818 */ // MIs[1] Operand 1
6619 /* 5818 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6620 /* 5829 */ // MIs[0] rhs
6621 /* 5829 */ // No operand predicates
6622 /* 5829 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6623 /* 5834 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6624 /* 5836 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6625 /* 5836 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6626 /* 5841 */ GIR_EraseRootFromParent_Done,
6627 /* 5842 */ // Label 335: @5842
6628 /* 5842 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(5865), // Rule ID 111 //
6629 /* 5847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6630 /* 5850 */ // MIs[0] dst
6631 /* 5850 */ // No operand predicates
6632 /* 5850 */ // MIs[0] lhs
6633 /* 5850 */ // No operand predicates
6634 /* 5850 */ // MIs[0] Operand 2
6635 /* 5850 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6636 /* 5854 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6637 /* 5859 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[5]]
6638 /* 5859 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6639 /* 5864 */ GIR_EraseRootFromParent_Done,
6640 /* 5865 */ // Label 336: @5865
6641 /* 5865 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(5876), // Rule ID 150 //
6642 /* 5870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
6643 /* 5873 */ // MIs[0] root
6644 /* 5873 */ // No operand predicates
6645 /* 5873 */ // MIs[0] mi.shifted
6646 /* 5873 */ // No operand predicates
6647 /* 5873 */ // MIs[0] mi.amt
6648 /* 5873 */ // No operand predicates
6649 /* 5873 */ // Combiner Rule #108: shifts_too_big @ [mi[1]]
6650 /* 5873 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6651 /* 5876 */ // Label 337: @5876
6652 /* 5876 */ GIM_Reject,
6653 /* 5877 */ // Label 38: @5877
6654 /* 5877 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(5888), // Rule ID 228 //
6655 /* 5882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6656 /* 5885 */ // Combiner Rule #166: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6657 /* 5885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6658 /* 5888 */ // Label 338: @5888
6659 /* 5888 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(5899), // Rule ID 232 //
6660 /* 5893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6661 /* 5896 */ // Combiner Rule #169: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6662 /* 5896 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6663 /* 5899 */ // Label 339: @5899
6664 /* 5899 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(5919), // Rule ID 231 //
6665 /* 5904 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6666 /* 5907 */ // MIs[0] x
6667 /* 5907 */ // No operand predicates
6668 /* 5907 */ // MIs[0] y
6669 /* 5907 */ // No operand predicates
6670 /* 5907 */ // MIs[0] z
6671 /* 5907 */ // No operand predicates
6672 /* 5907 */ // MIs[0] Operand 3
6673 /* 5907 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6674 /* 5911 */ // Combiner Rule #168: funnel_shift_left_zero
6675 /* 5911 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6676 /* 5914 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6677 /* 5916 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6678 /* 5918 */ GIR_EraseRootFromParent_Done,
6679 /* 5919 */ // Label 340: @5919
6680 /* 5919 */ GIM_Reject,
6681 /* 5920 */ // Label 39: @5920
6682 /* 5920 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(5931), // Rule ID 229 //
6683 /* 5925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6684 /* 5928 */ // Combiner Rule #166: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6685 /* 5928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6686 /* 5931 */ // Label 341: @5931
6687 /* 5931 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(5942), // Rule ID 233 //
6688 /* 5936 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6689 /* 5939 */ // Combiner Rule #169: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6690 /* 5939 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6691 /* 5942 */ // Label 342: @5942
6692 /* 5942 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(5962), // Rule ID 230 //
6693 /* 5947 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6694 /* 5950 */ // MIs[0] x
6695 /* 5950 */ // No operand predicates
6696 /* 5950 */ // MIs[0] y
6697 /* 5950 */ // No operand predicates
6698 /* 5950 */ // MIs[0] z
6699 /* 5950 */ // No operand predicates
6700 /* 5950 */ // MIs[0] Operand 3
6701 /* 5950 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6702 /* 5954 */ // Combiner Rule #167: funnel_shift_right_zero
6703 /* 5954 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6704 /* 5957 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6705 /* 5959 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6706 /* 5961 */ GIR_EraseRootFromParent_Done,
6707 /* 5962 */ // Label 343: @5962
6708 /* 5962 */ GIM_Reject,
6709 /* 5963 */ // Label 40: @5963
6710 /* 5963 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(5986), // Rule ID 115 //
6711 /* 5968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6712 /* 5971 */ // MIs[0] dst
6713 /* 5971 */ // No operand predicates
6714 /* 5971 */ // MIs[0] lhs
6715 /* 5971 */ // No operand predicates
6716 /* 5971 */ // MIs[0] Operand 2
6717 /* 5971 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6718 /* 5975 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6719 /* 5980 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[9]]
6720 /* 5980 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6721 /* 5985 */ GIR_EraseRootFromParent_Done,
6722 /* 5986 */ // Label 344: @5986
6723 /* 5986 */ GIM_Reject,
6724 /* 5987 */ // Label 41: @5987
6725 /* 5987 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6010), // Rule ID 114 //
6726 /* 5992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6727 /* 5995 */ // MIs[0] dst
6728 /* 5995 */ // No operand predicates
6729 /* 5995 */ // MIs[0] lhs
6730 /* 5995 */ // No operand predicates
6731 /* 5995 */ // MIs[0] Operand 2
6732 /* 5995 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6733 /* 5999 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6734 /* 6004 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[8]]
6735 /* 6004 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6736 /* 6009 */ GIR_EraseRootFromParent_Done,
6737 /* 6010 */ // Label 345: @6010
6738 /* 6010 */ GIM_Reject,
6739 /* 6011 */ // Label 42: @6011
6740 /* 6011 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6022), // Rule ID 157 //
6741 /* 6016 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
6742 /* 6019 */ // Combiner Rule #114: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
6743 /* 6019 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
6744 /* 6022 */ // Label 346: @6022
6745 /* 6022 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6033), // Rule ID 158 //
6746 /* 6027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
6747 /* 6030 */ // Combiner Rule #115: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
6748 /* 6030 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
6749 /* 6033 */ // Label 347: @6033
6750 /* 6033 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6044), // Rule ID 161 //
6751 /* 6038 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
6752 /* 6041 */ // Combiner Rule #118: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
6753 /* 6041 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
6754 /* 6044 */ // Label 348: @6044
6755 /* 6044 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6055), // Rule ID 155 //
6756 /* 6049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
6757 /* 6052 */ // MIs[0] root
6758 /* 6052 */ // No operand predicates
6759 /* 6052 */ // MIs[0] pred
6760 /* 6052 */ // No operand predicates
6761 /* 6052 */ // MIs[0] lhs
6762 /* 6052 */ // No operand predicates
6763 /* 6052 */ // MIs[0] rhs
6764 /* 6052 */ // No operand predicates
6765 /* 6052 */ // Combiner Rule #112: canonicalize_icmp
6766 /* 6052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6767 /* 6055 */ // Label 349: @6055
6768 /* 6055 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6066), // Rule ID 390 //
6769 /* 6060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6770 /* 6063 */ // MIs[0] dst
6771 /* 6063 */ // No operand predicates
6772 /* 6063 */ // MIs[0] tst
6773 /* 6063 */ // No operand predicates
6774 /* 6063 */ // MIs[0] src1
6775 /* 6063 */ // No operand predicates
6776 /* 6063 */ // MIs[0] src2
6777 /* 6063 */ // No operand predicates
6778 /* 6063 */ // Combiner Rule #239: icmp_redundant_trunc
6779 /* 6063 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
6780 /* 6066 */ // Label 350: @6066
6781 /* 6066 */ GIM_Reject,
6782 /* 6067 */ // Label 43: @6067
6783 /* 6067 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6078), // Rule ID 156 //
6784 /* 6072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6785 /* 6075 */ // MIs[0] root
6786 /* 6075 */ // No operand predicates
6787 /* 6075 */ // MIs[0] pred
6788 /* 6075 */ // No operand predicates
6789 /* 6075 */ // MIs[0] lhs
6790 /* 6075 */ // No operand predicates
6791 /* 6075 */ // MIs[0] rhs
6792 /* 6075 */ // No operand predicates
6793 /* 6075 */ // Combiner Rule #113: canonicalize_fcmp
6794 /* 6075 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
6795 /* 6078 */ // Label 351: @6078
6796 /* 6078 */ GIM_Reject,
6797 /* 6079 */ // Label 44: @6079
6798 /* 6079 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6090), // Rule ID 105 //
6799 /* 6084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6800 /* 6087 */ // Combiner Rule #85: select_same_val; wip_match_opcode 'G_SELECT'
6801 /* 6087 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
6802 /* 6090 */ // Label 352: @6090
6803 /* 6090 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6101), // Rule ID 168 //
6804 /* 6095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
6805 /* 6098 */ // Combiner Rule #125: select_constant_cmp; wip_match_opcode 'G_SELECT'
6806 /* 6098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
6807 /* 6101 */ // Label 353: @6101
6808 /* 6101 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6112), // Rule ID 170 //
6809 /* 6106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6810 /* 6109 */ // Combiner Rule #127: match_selects; wip_match_opcode 'G_SELECT'
6811 /* 6109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
6812 /* 6112 */ // Label 354: @6112
6813 /* 6112 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6123), // Rule ID 325 //
6814 /* 6117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
6815 /* 6120 */ // Combiner Rule #204: select_to_minmax; wip_match_opcode 'G_SELECT'
6816 /* 6120 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
6817 /* 6123 */ // Label 355: @6123
6818 /* 6123 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6144), // Rule ID 169 //
6819 /* 6128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6820 /* 6131 */ // MIs[0] root
6821 /* 6131 */ // No operand predicates
6822 /* 6131 */ // MIs[0] tst
6823 /* 6131 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6824 /* 6135 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6825 /* 6139 */ // MIs[1] tst1
6826 /* 6139 */ // No operand predicates
6827 /* 6139 */ // MIs[1] a
6828 /* 6139 */ // No operand predicates
6829 /* 6139 */ // MIs[1] b
6830 /* 6139 */ // No operand predicates
6831 /* 6139 */ // MIs[0] x
6832 /* 6139 */ // No operand predicates
6833 /* 6139 */ // MIs[0] y
6834 /* 6139 */ // No operand predicates
6835 /* 6139 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6836 /* 6141 */ // Combiner Rule #126: select_to_iminmax
6837 /* 6141 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
6838 /* 6144 */ // Label 356: @6144
6839 /* 6144 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6173), // Rule ID 167 //
6840 /* 6149 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6841 /* 6152 */ // MIs[0] dst
6842 /* 6152 */ // No operand predicates
6843 /* 6152 */ // MIs[0] undef
6844 /* 6152 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6845 /* 6156 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6846 /* 6160 */ // MIs[0] x
6847 /* 6160 */ // No operand predicates
6848 /* 6160 */ // MIs[0] y
6849 /* 6160 */ // No operand predicates
6850 /* 6160 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6851 /* 6165 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6852 /* 6167 */ // Combiner Rule #124: select_undef_cmp
6853 /* 6167 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6854 /* 6172 */ GIR_EraseRootFromParent_Done,
6855 /* 6173 */ // Label 357: @6173
6856 /* 6173 */ GIM_Reject,
6857 /* 6174 */ // Label 45: @6174
6858 /* 6174 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6185), // Rule ID 336 //
6859 /* 6179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6860 /* 6182 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
6861 /* 6182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6862 /* 6185 */ // Label 358: @6185
6863 /* 6185 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6196), // Rule ID 378 //
6864 /* 6190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6865 /* 6193 */ // Combiner Rule #229: match_addos; wip_match_opcode 'G_UADDO'
6866 /* 6193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6867 /* 6196 */ // Label 359: @6196
6868 /* 6196 */ GIM_Reject,
6869 /* 6197 */ // Label 46: @6197
6870 /* 6197 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6208), // Rule ID 201 //
6871 /* 6202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6872 /* 6205 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_UADDE'
6873 /* 6205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6874 /* 6208 */ // Label 360: @6208
6875 /* 6208 */ GIM_Reject,
6876 /* 6209 */ // Label 47: @6209
6877 /* 6209 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6220), // Rule ID 380 //
6878 /* 6214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
6879 /* 6217 */ // Combiner Rule #230: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
6880 /* 6217 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6881 /* 6220 */ // Label 361: @6220
6882 /* 6220 */ GIM_Reject,
6883 /* 6221 */ // Label 48: @6221
6884 /* 6221 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6232), // Rule ID 203 //
6885 /* 6226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6886 /* 6229 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_USUBE'
6887 /* 6229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6888 /* 6232 */ // Label 362: @6232
6889 /* 6232 */ GIM_Reject,
6890 /* 6233 */ // Label 49: @6233
6891 /* 6233 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6244), // Rule ID 337 //
6892 /* 6238 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6893 /* 6241 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
6894 /* 6241 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6895 /* 6244 */ // Label 363: @6244
6896 /* 6244 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6255), // Rule ID 377 //
6897 /* 6249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6898 /* 6252 */ // Combiner Rule #229: match_addos; wip_match_opcode 'G_SADDO'
6899 /* 6252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6900 /* 6255 */ // Label 364: @6255
6901 /* 6255 */ GIM_Reject,
6902 /* 6256 */ // Label 50: @6256
6903 /* 6256 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6267), // Rule ID 202 //
6904 /* 6261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6905 /* 6264 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_SADDE'
6906 /* 6264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6907 /* 6267 */ // Label 365: @6267
6908 /* 6267 */ GIM_Reject,
6909 /* 6268 */ // Label 51: @6268
6910 /* 6268 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6279), // Rule ID 379 //
6911 /* 6273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
6912 /* 6276 */ // Combiner Rule #230: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
6913 /* 6276 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6914 /* 6279 */ // Label 366: @6279
6915 /* 6279 */ GIM_Reject,
6916 /* 6280 */ // Label 52: @6280
6917 /* 6280 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6291), // Rule ID 204 //
6918 /* 6285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6919 /* 6288 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_SSUBE'
6920 /* 6288 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6921 /* 6291 */ // Label 367: @6291
6922 /* 6291 */ GIM_Reject,
6923 /* 6292 */ // Label 53: @6292
6924 /* 6292 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6303), // Rule ID 197 //
6925 /* 6297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
6926 /* 6300 */ // Combiner Rule #154: mulo_by_2; wip_match_opcode 'G_UMULO'
6927 /* 6300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6928 /* 6303 */ // Label 368: @6303
6929 /* 6303 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6314), // Rule ID 199 //
6930 /* 6308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
6931 /* 6311 */ // Combiner Rule #155: mulo_by_0; wip_match_opcode 'G_UMULO'
6932 /* 6311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6933 /* 6314 */ // Label 369: @6314
6934 /* 6314 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6325), // Rule ID 338 //
6935 /* 6319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6936 /* 6322 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
6937 /* 6322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6938 /* 6325 */ // Label 370: @6325
6939 /* 6325 */ GIM_Reject,
6940 /* 6326 */ // Label 54: @6326
6941 /* 6326 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6337), // Rule ID 198 //
6942 /* 6331 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
6943 /* 6334 */ // Combiner Rule #154: mulo_by_2; wip_match_opcode 'G_SMULO'
6944 /* 6334 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6945 /* 6337 */ // Label 371: @6337
6946 /* 6337 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6348), // Rule ID 200 //
6947 /* 6342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
6948 /* 6345 */ // Combiner Rule #155: mulo_by_0; wip_match_opcode 'G_SMULO'
6949 /* 6345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6950 /* 6348 */ // Label 372: @6348
6951 /* 6348 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6359), // Rule ID 339 //
6952 /* 6353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6953 /* 6356 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
6954 /* 6356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6955 /* 6359 */ // Label 373: @6359
6956 /* 6359 */ GIM_Reject,
6957 /* 6360 */ // Label 55: @6360
6958 /* 6360 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6371), // Rule ID 275 //
6959 /* 6365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6960 /* 6368 */ // Combiner Rule #184: mulh_to_lshr; wip_match_opcode 'G_UMULH'
6961 /* 6368 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
6962 /* 6371 */ // Label 374: @6371
6963 /* 6371 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6382), // Rule ID 340 //
6964 /* 6376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6965 /* 6379 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
6966 /* 6379 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6967 /* 6382 */ // Label 375: @6382
6968 /* 6382 */ GIM_Reject,
6969 /* 6383 */ // Label 56: @6383
6970 /* 6383 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6394), // Rule ID 341 //
6971 /* 6388 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6972 /* 6391 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
6973 /* 6391 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6974 /* 6394 */ // Label 376: @6394
6975 /* 6394 */ GIM_Reject,
6976 /* 6395 */ // Label 57: @6395
6977 /* 6395 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6406), // Rule ID 342 //
6978 /* 6400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6979 /* 6403 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
6980 /* 6403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6981 /* 6406 */ // Label 377: @6406
6982 /* 6406 */ GIM_Reject,
6983 /* 6407 */ // Label 58: @6407
6984 /* 6407 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6418), // Rule ID 343 //
6985 /* 6412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6986 /* 6415 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
6987 /* 6415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6988 /* 6418 */ // Label 378: @6418
6989 /* 6418 */ GIM_Reject,
6990 /* 6419 */ // Label 59: @6419
6991 /* 6419 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6430), // Rule ID 216 //
6992 /* 6424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6993 /* 6427 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
6994 /* 6427 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6995 /* 6430 */ // Label 379: @6430
6996 /* 6430 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6441), // Rule ID 220 //
6997 /* 6435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6998 /* 6438 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
6999 /* 6438 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7000 /* 6441 */ // Label 380: @6441
7001 /* 6441 */ GIM_Reject,
7002 /* 6442 */ // Label 60: @6442
7003 /* 6442 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6453), // Rule ID 215 //
7004 /* 6447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7005 /* 6450 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
7006 /* 6450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7007 /* 6453 */ // Label 381: @6453
7008 /* 6453 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6464), // Rule ID 221 //
7009 /* 6458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7010 /* 6461 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
7011 /* 6461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7012 /* 6464 */ // Label 382: @6464
7013 /* 6464 */ GIM_Reject,
7014 /* 6465 */ // Label 61: @6465
7015 /* 6465 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6476), // Rule ID 344 //
7016 /* 6470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7017 /* 6473 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
7018 /* 6473 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7019 /* 6476 */ // Label 383: @6476
7020 /* 6476 */ GIM_Reject,
7021 /* 6477 */ // Label 62: @6477
7022 /* 6477 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6488), // Rule ID 345 //
7023 /* 6482 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7024 /* 6485 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
7025 /* 6485 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7026 /* 6488 */ // Label 384: @6488
7027 /* 6488 */ GIM_Reject,
7028 /* 6489 */ // Label 63: @6489
7029 /* 6489 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6500), // Rule ID 346 //
7030 /* 6494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7031 /* 6497 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
7032 /* 6497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7033 /* 6500 */ // Label 385: @6500
7034 /* 6500 */ GIM_Reject,
7035 /* 6501 */ // Label 64: @6501
7036 /* 6501 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6512), // Rule ID 347 //
7037 /* 6506 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7038 /* 6509 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
7039 /* 6509 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7040 /* 6512 */ // Label 386: @6512
7041 /* 6512 */ GIM_Reject,
7042 /* 6513 */ // Label 65: @6513
7043 /* 6513 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6524), // Rule ID 265 //
7044 /* 6518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
7045 /* 6521 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
7046 /* 6521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7047 /* 6524 */ // Label 387: @6524
7048 /* 6524 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6535), // Rule ID 276 //
7049 /* 6529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7050 /* 6532 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FADD'
7051 /* 6532 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7052 /* 6535 */ // Label 388: @6535
7053 /* 6535 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6546), // Rule ID 283 //
7054 /* 6540 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7055 /* 6543 */ // Combiner Rule #187: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7056 /* 6543 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
7057 /* 6546 */ // Label 389: @6546
7058 /* 6546 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6557), // Rule ID 284 //
7059 /* 6551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
7060 /* 6554 */ // Combiner Rule #188: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7061 /* 6554 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
7062 /* 6557 */ // Label 390: @6557
7063 /* 6557 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6568), // Rule ID 285 //
7064 /* 6562 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7065 /* 6565 */ // Combiner Rule #189: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7066 /* 6565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7067 /* 6568 */ // Label 391: @6568
7068 /* 6568 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(6579), // Rule ID 286 //
7069 /* 6573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7070 /* 6576 */ // Combiner Rule #190: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7071 /* 6576 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7072 /* 6579 */ // Label 392: @6579
7073 /* 6579 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(6590), // Rule ID 309 //
7074 /* 6584 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7075 /* 6587 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FADD'
7076 /* 6587 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7077 /* 6590 */ // Label 393: @6590
7078 /* 6590 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(6601), // Rule ID 348 //
7079 /* 6595 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7080 /* 6598 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
7081 /* 6598 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7082 /* 6601 */ // Label 394: @6601
7083 /* 6601 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(6624), // Rule ID 141 //
7084 /* 6606 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
7085 /* 6609 */ // MIs[0] dst
7086 /* 6609 */ // No operand predicates
7087 /* 6609 */ // MIs[0] x
7088 /* 6609 */ // No operand predicates
7089 /* 6609 */ // MIs[0] y
7090 /* 6609 */ // No operand predicates
7091 /* 6609 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
7092 /* 6613 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7093 /* 6618 */ // Combiner Rule #102: right_identity_neg_zero_fp
7094 /* 6618 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7095 /* 6623 */ GIR_EraseRootFromParent_Done,
7096 /* 6624 */ // Label 395: @6624
7097 /* 6624 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(6653), // Rule ID 142 //
7098 /* 6629 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7099 /* 6632 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
7100 /* 6638 */ // MIs[0] dst
7101 /* 6638 */ // No operand predicates
7102 /* 6638 */ // MIs[0] x
7103 /* 6638 */ // No operand predicates
7104 /* 6638 */ // MIs[0] y
7105 /* 6638 */ // No operand predicates
7106 /* 6638 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7107 /* 6642 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7108 /* 6647 */ // Combiner Rule #103: right_identity_neg_zero_fp_nsz
7109 /* 6647 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7110 /* 6652 */ GIR_EraseRootFromParent_Done,
7111 /* 6653 */ // Label 396: @6653
7112 /* 6653 */ GIM_Reject,
7113 /* 6654 */ // Label 66: @6654
7114 /* 6654 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(6665), // Rule ID 266 //
7115 /* 6659 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
7116 /* 6662 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
7117 /* 6662 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7118 /* 6665 */ // Label 397: @6665
7119 /* 6665 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(6676), // Rule ID 277 //
7120 /* 6670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7121 /* 6673 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FSUB'
7122 /* 6673 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7123 /* 6676 */ // Label 398: @6676
7124 /* 6676 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(6687), // Rule ID 287 //
7125 /* 6681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7126 /* 6684 */ // Combiner Rule #191: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7127 /* 6684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7128 /* 6687 */ // Label 399: @6687
7129 /* 6687 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(6698), // Rule ID 288 //
7130 /* 6692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
7131 /* 6695 */ // Combiner Rule #192: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7132 /* 6695 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7133 /* 6698 */ // Label 400: @6698
7134 /* 6698 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(6709), // Rule ID 289 //
7135 /* 6703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
7136 /* 6706 */ // Combiner Rule #193: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7137 /* 6706 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7138 /* 6709 */ // Label 401: @6709
7139 /* 6709 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(6720), // Rule ID 290 //
7140 /* 6714 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7141 /* 6717 */ // Combiner Rule #194: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7142 /* 6717 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7143 /* 6720 */ // Label 402: @6720
7144 /* 6720 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(6731), // Rule ID 310 //
7145 /* 6725 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7146 /* 6728 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FSUB'
7147 /* 6728 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7148 /* 6731 */ // Label 403: @6731
7149 /* 6731 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(6742), // Rule ID 326 //
7150 /* 6736 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
7151 /* 6739 */ // Combiner Rule #205: fsub_to_fneg; wip_match_opcode 'G_FSUB'
7152 /* 6739 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
7153 /* 6742 */ // Label 404: @6742
7154 /* 6742 */ GIM_Reject,
7155 /* 6743 */ // Label 67: @6743
7156 /* 6743 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(6754), // Rule ID 267 //
7157 /* 6748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
7158 /* 6751 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
7159 /* 6751 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7160 /* 6754 */ // Label 405: @6754
7161 /* 6754 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(6765), // Rule ID 278 //
7162 /* 6759 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7163 /* 6762 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FMUL'
7164 /* 6762 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7165 /* 6765 */ // Label 406: @6765
7166 /* 6765 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(6776), // Rule ID 308 //
7167 /* 6770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7168 /* 6773 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMUL'
7169 /* 6773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7170 /* 6776 */ // Label 407: @6776
7171 /* 6776 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(6787), // Rule ID 349 //
7172 /* 6781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7173 /* 6784 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
7174 /* 6784 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7175 /* 6787 */ // Label 408: @6787
7176 /* 6787 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(6810), // Rule ID 132 //
7177 /* 6792 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
7178 /* 6795 */ // MIs[0] dst
7179 /* 6795 */ // No operand predicates
7180 /* 6795 */ // MIs[0] x
7181 /* 6795 */ // No operand predicates
7182 /* 6795 */ // MIs[0] y
7183 /* 6795 */ // No operand predicates
7184 /* 6795 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
7185 /* 6799 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7186 /* 6804 */ // Combiner Rule #95: right_identity_one_fp
7187 /* 6804 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7188 /* 6809 */ GIR_EraseRootFromParent_Done,
7189 /* 6810 */ // Label 409: @6810
7190 /* 6810 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(6830), // Rule ID 143 //
7191 /* 6815 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7192 /* 6818 */ // MIs[0] dst
7193 /* 6818 */ // No operand predicates
7194 /* 6818 */ // MIs[0] x
7195 /* 6818 */ // No operand predicates
7196 /* 6818 */ // MIs[0] y
7197 /* 6818 */ // No operand predicates
7198 /* 6818 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
7199 /* 6822 */ // Combiner Rule #104: right_identity_neg_one_fp
7200 /* 6822 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
7201 /* 6825 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7202 /* 6827 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7203 /* 6829 */ GIR_EraseRootFromParent_Done,
7204 /* 6830 */ // Label 410: @6830
7205 /* 6830 */ GIM_Reject,
7206 /* 6831 */ // Label 68: @6831
7207 /* 6831 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(6842), // Rule ID 270 //
7208 /* 6836 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7209 /* 6839 */ // Combiner Rule #181: constant_fold_fma; wip_match_opcode 'G_FMA'
7210 /* 6839 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7211 /* 6842 */ // Label 411: @6842
7212 /* 6842 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(6853), // Rule ID 281 //
7213 /* 6847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7214 /* 6850 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FMA'
7215 /* 6850 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7216 /* 6853 */ // Label 412: @6853
7217 /* 6853 */ GIM_Reject,
7218 /* 6854 */ // Label 69: @6854
7219 /* 6854 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(6865), // Rule ID 269 //
7220 /* 6859 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7221 /* 6862 */ // Combiner Rule #181: constant_fold_fma; wip_match_opcode 'G_FMAD'
7222 /* 6862 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7223 /* 6865 */ // Label 413: @6865
7224 /* 6865 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(6876), // Rule ID 280 //
7225 /* 6870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7226 /* 6873 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FMAD'
7227 /* 6873 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7228 /* 6876 */ // Label 414: @6876
7229 /* 6876 */ GIM_Reject,
7230 /* 6877 */ // Label 70: @6877
7231 /* 6877 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(6888), // Rule ID 268 //
7232 /* 6882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
7233 /* 6885 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
7234 /* 6885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7235 /* 6888 */ // Label 415: @6888
7236 /* 6888 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(6899), // Rule ID 279 //
7237 /* 6893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7238 /* 6896 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FDIV'
7239 /* 6896 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7240 /* 6899 */ // Label 416: @6899
7241 /* 6899 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(6910), // Rule ID 311 //
7242 /* 6904 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7243 /* 6907 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FDIV'
7244 /* 6907 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7245 /* 6910 */ // Label 417: @6910
7246 /* 6910 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(6921), // Rule ID 323 //
7247 /* 6915 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
7248 /* 6918 */ // MIs[0] dst
7249 /* 6918 */ // No operand predicates
7250 /* 6918 */ // MIs[0] src1
7251 /* 6918 */ // No operand predicates
7252 /* 6918 */ // MIs[0] src2
7253 /* 6918 */ // No operand predicates
7254 /* 6918 */ // Combiner Rule #202: fdiv_repeated_divison
7255 /* 6918 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7256 /* 6921 */ // Label 418: @6921
7257 /* 6921 */ GIM_Reject,
7258 /* 6922 */ // Label 71: @6922
7259 /* 6922 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(6933), // Rule ID 312 //
7260 /* 6927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7261 /* 6930 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FREM'
7262 /* 6930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7263 /* 6933 */ // Label 419: @6933
7264 /* 6933 */ GIM_Reject,
7265 /* 6934 */ // Label 72: @6934
7266 /* 6934 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(6955), // Rule ID 209 //
7267 /* 6939 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
7268 /* 6942 */ // MIs[0] dst
7269 /* 6942 */ // No operand predicates
7270 /* 6942 */ // MIs[0] float
7271 /* 6942 */ // No operand predicates
7272 /* 6942 */ // MIs[0] int
7273 /* 6942 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7274 /* 6946 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7275 /* 6950 */ // MIs[1] imm
7276 /* 6950 */ // No operand predicates
7277 /* 6950 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7278 /* 6952 */ // Combiner Rule #158: expand_const_fpowi
7279 /* 6952 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7280 /* 6955 */ // Label 420: @6955
7281 /* 6955 */ GIM_Reject,
7282 /* 6956 */ // Label 73: @6956
7283 /* 6956 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(6977), // Rule ID 183 //
7284 /* 6961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7285 /* 6964 */ // MIs[0] dst
7286 /* 6964 */ // No operand predicates
7287 /* 6964 */ // MIs[0] src0
7288 /* 6964 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7289 /* 6968 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7290 /* 6972 */ // MIs[1] cst
7291 /* 6972 */ // No operand predicates
7292 /* 6972 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7293 /* 6974 */ // Combiner Rule #140: constant_fold_flog2
7294 /* 6974 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7295 /* 6977 */ // Label 421: @6977
7296 /* 6977 */ GIM_Reject,
7297 /* 6978 */ // Label 74: @6978
7298 /* 6978 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(6999), // Rule ID 180 //
7299 /* 6983 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
7300 /* 6986 */ // MIs[0] dst
7301 /* 6986 */ // No operand predicates
7302 /* 6986 */ // MIs[0] src0
7303 /* 6986 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7304 /* 6990 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7305 /* 6994 */ // MIs[1] cst
7306 /* 6994 */ // No operand predicates
7307 /* 6994 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7308 /* 6996 */ // Combiner Rule #137: constant_fold_fneg
7309 /* 6996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7310 /* 6999 */ // Label 422: @6999
7311 /* 6999 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7028), // Rule ID 130 //
7312 /* 7004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7313 /* 7007 */ // MIs[0] dst
7314 /* 7007 */ // No operand predicates
7315 /* 7007 */ // MIs[0] t
7316 /* 7007 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7317 /* 7011 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7318 /* 7015 */ // MIs[1] src
7319 /* 7015 */ // No operand predicates
7320 /* 7015 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7321 /* 7020 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7322 /* 7022 */ // Combiner Rule #93: fneg_fneg_fold
7323 /* 7022 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7324 /* 7027 */ GIR_EraseRootFromParent_Done,
7325 /* 7028 */ // Label 423: @7028
7326 /* 7028 */ GIM_Reject,
7327 /* 7029 */ // Label 75: @7029
7328 /* 7029 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7050), // Rule ID 185 //
7329 /* 7034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7330 /* 7037 */ // MIs[0] dst
7331 /* 7037 */ // No operand predicates
7332 /* 7037 */ // MIs[0] src0
7333 /* 7037 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7334 /* 7041 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7335 /* 7045 */ // MIs[1] cst
7336 /* 7045 */ // No operand predicates
7337 /* 7045 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7338 /* 7047 */ // Combiner Rule #142: constant_fold_fpext
7339 /* 7047 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7340 /* 7050 */ // Label 424: @7050
7341 /* 7050 */ GIM_Reject,
7342 /* 7051 */ // Label 76: @7051
7343 /* 7051 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7072), // Rule ID 184 //
7344 /* 7056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
7345 /* 7059 */ // MIs[0] dst
7346 /* 7059 */ // No operand predicates
7347 /* 7059 */ // MIs[0] src0
7348 /* 7059 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7349 /* 7063 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7350 /* 7067 */ // MIs[1] cst
7351 /* 7067 */ // No operand predicates
7352 /* 7067 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7353 /* 7069 */ // Combiner Rule #141: constant_fold_fptrunc
7354 /* 7069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7355 /* 7072 */ // Label 425: @7072
7356 /* 7072 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7093), // Rule ID 140 //
7357 /* 7077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
7358 /* 7080 */ // MIs[0] dst
7359 /* 7080 */ // No operand predicates
7360 /* 7080 */ // MIs[0] src1
7361 /* 7080 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7362 /* 7084 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7363 /* 7088 */ // MIs[1] src0
7364 /* 7088 */ // No operand predicates
7365 /* 7088 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7366 /* 7090 */ // Combiner Rule #101: fptrunc_fpext_fold
7367 /* 7090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7368 /* 7093 */ // Label 426: @7093
7369 /* 7093 */ GIM_Reject,
7370 /* 7094 */ // Label 77: @7094
7371 /* 7094 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7115), // Rule ID 94 //
7372 /* 7099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7373 /* 7102 */ // MIs[0] dst
7374 /* 7102 */ // No operand predicates
7375 /* 7102 */ // MIs[0] __unary_undef_to_undef_match_0.x
7376 /* 7102 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7377 /* 7106 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7378 /* 7110 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7379 /* 7112 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7380 /* 7112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7381 /* 7115 */ // Label 427: @7115
7382 /* 7115 */ GIM_Reject,
7383 /* 7116 */ // Label 78: @7116
7384 /* 7116 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7137), // Rule ID 95 //
7385 /* 7121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7386 /* 7124 */ // MIs[0] dst
7387 /* 7124 */ // No operand predicates
7388 /* 7124 */ // MIs[0] __unary_undef_to_undef_match_0.x
7389 /* 7124 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7390 /* 7128 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7391 /* 7132 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7392 /* 7134 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7393 /* 7134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7394 /* 7137 */ // Label 428: @7137
7395 /* 7137 */ GIM_Reject,
7396 /* 7138 */ // Label 79: @7138
7397 /* 7138 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7149), // Rule ID 78 //
7398 /* 7143 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7399 /* 7146 */ // Combiner Rule #73: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7400 /* 7146 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7401 /* 7149 */ // Label 429: @7149
7402 /* 7149 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7164), // Rule ID 193 //
7403 /* 7154 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
7404 /* 7157 */ // MIs[0] dst
7405 /* 7157 */ // No operand predicates
7406 /* 7157 */ // MIs[0] Operand 1
7407 /* 7157 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7408 /* 7161 */ // Combiner Rule #150: itof_const_zero_fold_si
7409 /* 7161 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7410 /* 7164 */ // Label 430: @7164
7411 /* 7164 */ GIM_Reject,
7412 /* 7165 */ // Label 80: @7165
7413 /* 7165 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7176), // Rule ID 77 //
7414 /* 7170 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7415 /* 7173 */ // Combiner Rule #73: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7416 /* 7173 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7417 /* 7176 */ // Label 431: @7176
7418 /* 7176 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7191), // Rule ID 194 //
7419 /* 7181 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
7420 /* 7184 */ // MIs[0] dst
7421 /* 7184 */ // No operand predicates
7422 /* 7184 */ // MIs[0] Operand 1
7423 /* 7184 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7424 /* 7188 */ // Combiner Rule #151: itof_const_zero_fold_ui
7425 /* 7188 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7426 /* 7191 */ // Label 432: @7191
7427 /* 7191 */ GIM_Reject,
7428 /* 7192 */ // Label 81: @7192
7429 /* 7192 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7221), // Rule ID 21 //
7430 /* 7197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
7431 /* 7200 */ // MIs[0] dst
7432 /* 7200 */ // No operand predicates
7433 /* 7200 */ // MIs[0] src
7434 /* 7200 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7435 /* 7204 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7436 /* 7208 */ // MIs[1] __idempotent_prop_match_0.x
7437 /* 7208 */ // No operand predicates
7438 /* 7208 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7439 /* 7213 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7440 /* 7215 */ // Combiner Rule #20: idempotent_prop @ [__idempotent_prop_match_0[1]]
7441 /* 7215 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7442 /* 7220 */ GIR_EraseRootFromParent_Done,
7443 /* 7221 */ // Label 433: @7221
7444 /* 7221 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7242), // Rule ID 181 //
7445 /* 7226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7446 /* 7229 */ // MIs[0] dst
7447 /* 7229 */ // No operand predicates
7448 /* 7229 */ // MIs[0] src0
7449 /* 7229 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7450 /* 7233 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7451 /* 7237 */ // MIs[1] cst
7452 /* 7237 */ // No operand predicates
7453 /* 7237 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7454 /* 7239 */ // Combiner Rule #138: constant_fold_fabs
7455 /* 7239 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7456 /* 7242 */ // Label 434: @7242
7457 /* 7242 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7270), // Rule ID 274 //
7458 /* 7247 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7459 /* 7250 */ // MIs[0] dst
7460 /* 7250 */ // No operand predicates
7461 /* 7250 */ // MIs[0] tmp
7462 /* 7250 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7463 /* 7254 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7464 /* 7258 */ // MIs[1] x
7465 /* 7258 */ // No operand predicates
7466 /* 7258 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7467 /* 7260 */ // Combiner Rule #183: fabs_fneg_fold
7468 /* 7260 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7469 /* 7263 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7470 /* 7265 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7471 /* 7269 */ GIR_EraseRootFromParent_Done,
7472 /* 7270 */ // Label 435: @7270
7473 /* 7270 */ GIM_Reject,
7474 /* 7271 */ // Label 82: @7271
7475 /* 7271 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7300), // Rule ID 22 //
7476 /* 7276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
7477 /* 7279 */ // MIs[0] dst
7478 /* 7279 */ // No operand predicates
7479 /* 7279 */ // MIs[0] src
7480 /* 7279 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7481 /* 7283 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7482 /* 7287 */ // MIs[1] __idempotent_prop_match_0.x
7483 /* 7287 */ // No operand predicates
7484 /* 7287 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7485 /* 7292 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7486 /* 7294 */ // Combiner Rule #20: idempotent_prop @ [__idempotent_prop_match_0[2]]
7487 /* 7294 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7488 /* 7299 */ GIR_EraseRootFromParent_Done,
7489 /* 7300 */ // Label 436: @7300
7490 /* 7300 */ GIM_Reject,
7491 /* 7301 */ // Label 83: @7301
7492 /* 7301 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7312), // Rule ID 205 //
7493 /* 7306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7494 /* 7309 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7495 /* 7309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7496 /* 7312 */ // Label 437: @7312
7497 /* 7312 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7323), // Rule ID 313 //
7498 /* 7317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7499 /* 7320 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7500 /* 7320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7501 /* 7323 */ // Label 438: @7323
7502 /* 7323 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7334), // Rule ID 350 //
7503 /* 7328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7504 /* 7331 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7505 /* 7331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7506 /* 7334 */ // Label 439: @7334
7507 /* 7334 */ GIM_Reject,
7508 /* 7335 */ // Label 84: @7335
7509 /* 7335 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7346), // Rule ID 206 //
7510 /* 7340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7511 /* 7343 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7512 /* 7343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7513 /* 7346 */ // Label 440: @7346
7514 /* 7346 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7357), // Rule ID 314 //
7515 /* 7351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7516 /* 7354 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7517 /* 7354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7518 /* 7357 */ // Label 441: @7357
7519 /* 7357 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7368), // Rule ID 351 //
7520 /* 7362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7521 /* 7365 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7522 /* 7365 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7523 /* 7368 */ // Label 442: @7368
7524 /* 7368 */ GIM_Reject,
7525 /* 7369 */ // Label 85: @7369
7526 /* 7369 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7380), // Rule ID 352 //
7527 /* 7374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7528 /* 7377 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7529 /* 7377 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7530 /* 7380 */ // Label 443: @7380
7531 /* 7380 */ GIM_Reject,
7532 /* 7381 */ // Label 86: @7381
7533 /* 7381 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7392), // Rule ID 353 //
7534 /* 7386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7535 /* 7389 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7536 /* 7389 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7537 /* 7392 */ // Label 444: @7392
7538 /* 7392 */ GIM_Reject,
7539 /* 7393 */ // Label 87: @7393
7540 /* 7393 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7404), // Rule ID 207 //
7541 /* 7398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7542 /* 7401 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7543 /* 7401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7544 /* 7404 */ // Label 445: @7404
7545 /* 7404 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7415), // Rule ID 315 //
7546 /* 7409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7547 /* 7412 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7548 /* 7412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7549 /* 7415 */ // Label 446: @7415
7550 /* 7415 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7426), // Rule ID 354 //
7551 /* 7420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7552 /* 7423 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7553 /* 7423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7554 /* 7426 */ // Label 447: @7426
7555 /* 7426 */ GIM_Reject,
7556 /* 7427 */ // Label 88: @7427
7557 /* 7427 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7438), // Rule ID 208 //
7558 /* 7432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7559 /* 7435 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7560 /* 7435 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7561 /* 7438 */ // Label 448: @7438
7562 /* 7438 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7449), // Rule ID 316 //
7563 /* 7443 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7564 /* 7446 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7565 /* 7446 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7566 /* 7449 */ // Label 449: @7449
7567 /* 7449 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7460), // Rule ID 355 //
7568 /* 7454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7569 /* 7457 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7570 /* 7457 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7571 /* 7460 */ // Label 450: @7460
7572 /* 7460 */ GIM_Reject,
7573 /* 7461 */ // Label 89: @7461
7574 /* 7461 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7472), // Rule ID 152 //
7575 /* 7466 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
7576 /* 7469 */ // Combiner Rule #109: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7577 /* 7469 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7578 /* 7472 */ // Label 451: @7472
7579 /* 7472 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7483), // Rule ID 154 //
7580 /* 7477 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7581 /* 7480 */ // Combiner Rule #111: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7582 /* 7480 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7583 /* 7483 */ // Label 452: @7483
7584 /* 7483 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7494), // Rule ID 195 //
7585 /* 7488 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
7586 /* 7491 */ // Combiner Rule #152: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7587 /* 7491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7588 /* 7494 */ // Label 453: @7494
7589 /* 7494 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7505), // Rule ID 211 //
7590 /* 7499 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7591 /* 7502 */ // Combiner Rule #160: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7592 /* 7502 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7593 /* 7505 */ // Label 454: @7505
7594 /* 7505 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7516), // Rule ID 248 //
7595 /* 7510 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7596 /* 7513 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7597 /* 7513 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7598 /* 7516 */ // Label 455: @7516
7599 /* 7516 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7527), // Rule ID 293 //
7600 /* 7521 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7601 /* 7524 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7602 /* 7524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7603 /* 7527 */ // Label 456: @7527
7604 /* 7527 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7550), // Rule ID 113 //
7605 /* 7532 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
7606 /* 7535 */ // MIs[0] dst
7607 /* 7535 */ // No operand predicates
7608 /* 7535 */ // MIs[0] lhs
7609 /* 7535 */ // No operand predicates
7610 /* 7535 */ // MIs[0] Operand 2
7611 /* 7535 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7612 /* 7539 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7613 /* 7544 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[7]]
7614 /* 7544 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7615 /* 7549 */ GIR_EraseRootFromParent_Done,
7616 /* 7550 */ // Label 457: @7550
7617 /* 7550 */ GIM_Reject,
7618 /* 7551 */ // Label 90: @7551
7619 /* 7551 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7562), // Rule ID 261 //
7620 /* 7556 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7621 /* 7559 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SMIN'
7622 /* 7559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7623 /* 7562 */ // Label 458: @7562
7624 /* 7562 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(7573), // Rule ID 304 //
7625 /* 7567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7626 /* 7570 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7627 /* 7570 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7628 /* 7573 */ // Label 459: @7573
7629 /* 7573 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(7584), // Rule ID 332 //
7630 /* 7578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7631 /* 7581 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7632 /* 7581 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7633 /* 7584 */ // Label 460: @7584
7634 /* 7584 */ GIM_Reject,
7635 /* 7585 */ // Label 91: @7585
7636 /* 7585 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(7596), // Rule ID 262 //
7637 /* 7590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7638 /* 7593 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SMAX'
7639 /* 7593 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7640 /* 7596 */ // Label 461: @7596
7641 /* 7596 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(7607), // Rule ID 305 //
7642 /* 7601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7643 /* 7604 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7644 /* 7604 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7645 /* 7607 */ // Label 462: @7607
7646 /* 7607 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(7618), // Rule ID 333 //
7647 /* 7612 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7648 /* 7615 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7649 /* 7615 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7650 /* 7618 */ // Label 463: @7618
7651 /* 7618 */ GIM_Reject,
7652 /* 7619 */ // Label 92: @7619
7653 /* 7619 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(7630), // Rule ID 263 //
7654 /* 7624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7655 /* 7627 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UMIN'
7656 /* 7627 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7657 /* 7630 */ // Label 464: @7630
7658 /* 7630 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(7641), // Rule ID 306 //
7659 /* 7635 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7660 /* 7638 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7661 /* 7638 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7662 /* 7641 */ // Label 465: @7641
7663 /* 7641 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(7652), // Rule ID 334 //
7664 /* 7646 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7665 /* 7649 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7666 /* 7649 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7667 /* 7652 */ // Label 466: @7652
7668 /* 7652 */ GIM_Reject,
7669 /* 7653 */ // Label 93: @7653
7670 /* 7653 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(7664), // Rule ID 264 //
7671 /* 7658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7672 /* 7661 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UMAX'
7673 /* 7661 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7674 /* 7664 */ // Label 467: @7664
7675 /* 7664 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(7675), // Rule ID 307 //
7676 /* 7669 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7677 /* 7672 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7678 /* 7672 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7679 /* 7675 */ // Label 468: @7675
7680 /* 7675 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(7686), // Rule ID 335 //
7681 /* 7680 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7682 /* 7683 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7683 /* 7683 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7684 /* 7686 */ // Label 469: @7686
7685 /* 7686 */ GIM_Reject,
7686 /* 7687 */ // Label 94: @7687
7687 /* 7687 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(7698), // Rule ID 88 //
7688 /* 7692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
7689 /* 7695 */ // Combiner Rule #78: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7690 /* 7695 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7691 /* 7698 */ // Label 470: @7698
7692 /* 7698 */ GIM_Reject,
7693 /* 7699 */ // Label 95: @7699
7694 /* 7699 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(7710), // Rule ID 179 //
7695 /* 7704 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
7696 /* 7707 */ // Combiner Rule #136: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7697 /* 7707 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7698 /* 7710 */ // Label 471: @7710
7699 /* 7710 */ GIM_Reject,
7700 /* 7711 */ // Label 96: @7711
7701 /* 7711 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(7722), // Rule ID 28 //
7702 /* 7716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
7703 /* 7719 */ // Combiner Rule #26: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7704 /* 7719 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7705 /* 7722 */ // Label 472: @7722
7706 /* 7722 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(7733), // Rule ID 69 //
7707 /* 7727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
7708 /* 7730 */ // Combiner Rule #67: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7709 /* 7730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7710 /* 7733 */ // Label 473: @7733
7711 /* 7733 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(7744), // Rule ID 103 //
7712 /* 7738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
7713 /* 7741 */ // Combiner Rule #84: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7714 /* 7741 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7715 /* 7744 */ // Label 474: @7744
7716 /* 7744 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(7783), // Rule ID 40 //
7717 /* 7749 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
7718 /* 7752 */ // MIs[0] root
7719 /* 7752 */ // No operand predicates
7720 /* 7752 */ // MIs[0] src
7721 /* 7752 */ // No operand predicates
7722 /* 7752 */ // MIs[0] elt
7723 /* 7752 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7724 /* 7756 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
7725 /* 7760 */ // MIs[1] src
7726 /* 7760 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7727 /* 7765 */ // MIs[1] idx
7728 /* 7765 */ // No operand predicates
7729 /* 7765 */ // MIs[0] idx
7730 /* 7765 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
7731 /* 7770 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7732 /* 7775 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7733 /* 7777 */ // Combiner Rule #38: insert_vector_element_extract_vector_element
7734 /* 7777 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7735 /* 7782 */ GIR_EraseRootFromParent_Done,
7736 /* 7783 */ // Label 475: @7783
7737 /* 7783 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(7816), // Rule ID 26 //
7738 /* 7788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7739 /* 7791 */ // MIs[0] root
7740 /* 7791 */ // No operand predicates
7741 /* 7791 */ // MIs[0] src
7742 /* 7791 */ // No operand predicates
7743 /* 7791 */ // MIs[0] elt
7744 /* 7791 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7745 /* 7795 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7746 /* 7799 */ // MIs[0] idx
7747 /* 7799 */ // No operand predicates
7748 /* 7799 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
7749 /* 7803 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7750 /* 7808 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7751 /* 7810 */ // Combiner Rule #24: insert_vector_element_elt_undef
7752 /* 7810 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7753 /* 7815 */ GIR_EraseRootFromParent_Done,
7754 /* 7816 */ // Label 476: @7816
7755 /* 7816 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(7840), // Rule ID 25 //
7756 /* 7821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
7757 /* 7824 */ // MIs[0] root
7758 /* 7824 */ // No operand predicates
7759 /* 7824 */ // MIs[0] src
7760 /* 7824 */ // No operand predicates
7761 /* 7824 */ // MIs[0] elt
7762 /* 7824 */ // No operand predicates
7763 /* 7824 */ // MIs[0] idx
7764 /* 7824 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
7765 /* 7828 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7766 /* 7832 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7767 /* 7834 */ // Combiner Rule #23: insert_vector_element_idx_undef
7768 /* 7834 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7769 /* 7837 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7770 /* 7839 */ GIR_EraseRootFromParent_Done,
7771 /* 7840 */ // Label 477: @7840
7772 /* 7840 */ GIM_Reject,
7773 /* 7841 */ // Label 97: @7841
7774 /* 7841 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(7852), // Rule ID 27 //
7775 /* 7846 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
7776 /* 7849 */ // Combiner Rule #25: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7777 /* 7849 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
7778 /* 7852 */ // Label 478: @7852
7779 /* 7852 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(7863), // Rule ID 70 //
7780 /* 7857 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7781 /* 7860 */ // Combiner Rule #68: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7782 /* 7860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7783 /* 7863 */ // Label 479: @7863
7784 /* 7863 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(7874), // Rule ID 76 //
7785 /* 7868 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
7786 /* 7871 */ // Combiner Rule #72: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7787 /* 7871 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7788 /* 7874 */ // Label 480: @7874
7789 /* 7874 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(7885), // Rule ID 104 //
7790 /* 7879 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
7791 /* 7882 */ // Combiner Rule #84: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7792 /* 7882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7793 /* 7885 */ // Label 481: @7885
7794 /* 7885 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(7909), // Rule ID 38 //
7795 /* 7890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
7796 /* 7893 */ // MIs[0] root
7797 /* 7893 */ // No operand predicates
7798 /* 7893 */ // MIs[0] src
7799 /* 7893 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7800 /* 7897 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7801 /* 7901 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
7802 /* 7904 */ // MIs[1] x
7803 /* 7904 */ // No operand predicates
7804 /* 7904 */ // MIs[1] y
7805 /* 7904 */ // No operand predicates
7806 /* 7904 */ // MIs[1] z
7807 /* 7904 */ // No operand predicates
7808 /* 7904 */ // MIs[1] a
7809 /* 7904 */ // No operand predicates
7810 /* 7904 */ // MIs[1] b
7811 /* 7904 */ // No operand predicates
7812 /* 7904 */ // MIs[1] c
7813 /* 7904 */ // No operand predicates
7814 /* 7904 */ // MIs[1] d
7815 /* 7904 */ // No operand predicates
7816 /* 7904 */ // MIs[1] e
7817 /* 7904 */ // No operand predicates
7818 /* 7904 */ // MIs[0] idx
7819 /* 7904 */ // No operand predicates
7820 /* 7904 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7821 /* 7906 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc8
7822 /* 7906 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7823 /* 7909 */ // Label 482: @7909
7824 /* 7909 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(7933), // Rule ID 37 //
7825 /* 7914 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
7826 /* 7917 */ // MIs[0] root
7827 /* 7917 */ // No operand predicates
7828 /* 7917 */ // MIs[0] src
7829 /* 7917 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7830 /* 7921 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7831 /* 7925 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
7832 /* 7928 */ // MIs[1] x
7833 /* 7928 */ // No operand predicates
7834 /* 7928 */ // MIs[1] y
7835 /* 7928 */ // No operand predicates
7836 /* 7928 */ // MIs[1] z
7837 /* 7928 */ // No operand predicates
7838 /* 7928 */ // MIs[1] a
7839 /* 7928 */ // No operand predicates
7840 /* 7928 */ // MIs[1] b
7841 /* 7928 */ // No operand predicates
7842 /* 7928 */ // MIs[1] c
7843 /* 7928 */ // No operand predicates
7844 /* 7928 */ // MIs[1] d
7845 /* 7928 */ // No operand predicates
7846 /* 7928 */ // MIs[0] idx
7847 /* 7928 */ // No operand predicates
7848 /* 7928 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7849 /* 7930 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc7
7850 /* 7930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7851 /* 7933 */ // Label 483: @7933
7852 /* 7933 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(7957), // Rule ID 36 //
7853 /* 7938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
7854 /* 7941 */ // MIs[0] root
7855 /* 7941 */ // No operand predicates
7856 /* 7941 */ // MIs[0] src
7857 /* 7941 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7858 /* 7945 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7859 /* 7949 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
7860 /* 7952 */ // MIs[1] x
7861 /* 7952 */ // No operand predicates
7862 /* 7952 */ // MIs[1] y
7863 /* 7952 */ // No operand predicates
7864 /* 7952 */ // MIs[1] z
7865 /* 7952 */ // No operand predicates
7866 /* 7952 */ // MIs[1] a
7867 /* 7952 */ // No operand predicates
7868 /* 7952 */ // MIs[1] b
7869 /* 7952 */ // No operand predicates
7870 /* 7952 */ // MIs[1] c
7871 /* 7952 */ // No operand predicates
7872 /* 7952 */ // MIs[0] idx
7873 /* 7952 */ // No operand predicates
7874 /* 7952 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7875 /* 7954 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc6
7876 /* 7954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7877 /* 7957 */ // Label 484: @7957
7878 /* 7957 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(7981), // Rule ID 35 //
7879 /* 7962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
7880 /* 7965 */ // MIs[0] root
7881 /* 7965 */ // No operand predicates
7882 /* 7965 */ // MIs[0] src
7883 /* 7965 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7884 /* 7969 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7885 /* 7973 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
7886 /* 7976 */ // MIs[1] x
7887 /* 7976 */ // No operand predicates
7888 /* 7976 */ // MIs[1] y
7889 /* 7976 */ // No operand predicates
7890 /* 7976 */ // MIs[1] z
7891 /* 7976 */ // No operand predicates
7892 /* 7976 */ // MIs[1] a
7893 /* 7976 */ // No operand predicates
7894 /* 7976 */ // MIs[1] b
7895 /* 7976 */ // No operand predicates
7896 /* 7976 */ // MIs[0] idx
7897 /* 7976 */ // No operand predicates
7898 /* 7976 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7899 /* 7978 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc5
7900 /* 7978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7901 /* 7981 */ // Label 485: @7981
7902 /* 7981 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8005), // Rule ID 34 //
7903 /* 7986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
7904 /* 7989 */ // MIs[0] root
7905 /* 7989 */ // No operand predicates
7906 /* 7989 */ // MIs[0] src
7907 /* 7989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7908 /* 7993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7909 /* 7997 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
7910 /* 8000 */ // MIs[1] x
7911 /* 8000 */ // No operand predicates
7912 /* 8000 */ // MIs[1] y
7913 /* 8000 */ // No operand predicates
7914 /* 8000 */ // MIs[1] z
7915 /* 8000 */ // No operand predicates
7916 /* 8000 */ // MIs[1] a
7917 /* 8000 */ // No operand predicates
7918 /* 8000 */ // MIs[0] idx
7919 /* 8000 */ // No operand predicates
7920 /* 8000 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7921 /* 8002 */ // Combiner Rule #32: extract_vector_element_build_vector_trunc4
7922 /* 8002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7923 /* 8005 */ // Label 486: @8005
7924 /* 8005 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8029), // Rule ID 33 //
7925 /* 8010 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
7926 /* 8013 */ // MIs[0] root
7927 /* 8013 */ // No operand predicates
7928 /* 8013 */ // MIs[0] src
7929 /* 8013 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7930 /* 8017 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7931 /* 8021 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
7932 /* 8024 */ // MIs[1] x
7933 /* 8024 */ // No operand predicates
7934 /* 8024 */ // MIs[1] y
7935 /* 8024 */ // No operand predicates
7936 /* 8024 */ // MIs[1] z
7937 /* 8024 */ // No operand predicates
7938 /* 8024 */ // MIs[0] idx
7939 /* 8024 */ // No operand predicates
7940 /* 8024 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7941 /* 8026 */ // Combiner Rule #31: extract_vector_element_build_vector_trunc3
7942 /* 8026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7943 /* 8029 */ // Label 487: @8029
7944 /* 8029 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8063), // Rule ID 29 //
7945 /* 8034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
7946 /* 8037 */ // MIs[0] root
7947 /* 8037 */ // No operand predicates
7948 /* 8037 */ // MIs[0] src
7949 /* 8037 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7950 /* 8041 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
7951 /* 8045 */ // MIs[1] x
7952 /* 8045 */ // No operand predicates
7953 /* 8045 */ // MIs[1] value
7954 /* 8045 */ // No operand predicates
7955 /* 8045 */ // MIs[1] idx
7956 /* 8045 */ // No operand predicates
7957 /* 8045 */ // MIs[0] idx
7958 /* 8045 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
7959 /* 8050 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
7960 /* 8055 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7961 /* 8057 */ // Combiner Rule #27: extract_vector_element_not_const
7962 /* 8057 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
7963 /* 8062 */ GIR_EraseRootFromParent_Done,
7964 /* 8063 */ // Label 488: @8063
7965 /* 8063 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8084), // Rule ID 30 //
7966 /* 8068 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
7967 /* 8071 */ // MIs[0] root
7968 /* 8071 */ // No operand predicates
7969 /* 8071 */ // MIs[0] src
7970 /* 8071 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7971 /* 8075 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
7972 /* 8079 */ // MIs[1] x
7973 /* 8079 */ // No operand predicates
7974 /* 8079 */ // MIs[1] value
7975 /* 8079 */ // No operand predicates
7976 /* 8079 */ // MIs[1] idx2
7977 /* 8079 */ // No operand predicates
7978 /* 8079 */ // MIs[0] idx1
7979 /* 8079 */ // No operand predicates
7980 /* 8079 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7981 /* 8081 */ // Combiner Rule #28: extract_vector_element_different_indices
7982 /* 8081 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
7983 /* 8084 */ // Label 489: @8084
7984 /* 8084 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8113), // Rule ID 39 //
7985 /* 8089 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
7986 /* 8092 */ // MIs[0] root
7987 /* 8092 */ // No operand predicates
7988 /* 8092 */ // MIs[0] src
7989 /* 8092 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7990 /* 8096 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
7991 /* 8100 */ // MIs[1] src1
7992 /* 8100 */ // No operand predicates
7993 /* 8100 */ // MIs[1] src2
7994 /* 8100 */ // No operand predicates
7995 /* 8100 */ // MIs[1] mask
7996 /* 8100 */ // No operand predicates
7997 /* 8100 */ // MIs[0] idx
7998 /* 8100 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7999 /* 8104 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8000 /* 8108 */ // MIs[2] imm
8001 /* 8108 */ // No operand predicates
8002 /* 8108 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8003 /* 8110 */ // Combiner Rule #37: extract_vector_element_shuffle_vector
8004 /* 8110 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8005 /* 8113 */ // Label 490: @8113
8006 /* 8113 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8137), // Rule ID 32 //
8007 /* 8118 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
8008 /* 8121 */ // MIs[0] root
8009 /* 8121 */ // No operand predicates
8010 /* 8121 */ // MIs[0] src
8011 /* 8121 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8012 /* 8125 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8013 /* 8129 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
8014 /* 8132 */ // MIs[1] x
8015 /* 8132 */ // No operand predicates
8016 /* 8132 */ // MIs[1] y
8017 /* 8132 */ // No operand predicates
8018 /* 8132 */ // MIs[0] idx
8019 /* 8132 */ // No operand predicates
8020 /* 8132 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8021 /* 8134 */ // Combiner Rule #30: extract_vector_element_build_vector_trunc2
8022 /* 8134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8023 /* 8137 */ // Label 491: @8137
8024 /* 8137 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8169), // Rule ID 31 //
8025 /* 8142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
8026 /* 8145 */ // MIs[0] root
8027 /* 8145 */ // No operand predicates
8028 /* 8145 */ // MIs[0] src
8029 /* 8145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8030 /* 8149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
8031 /* 8153 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
8032 /* 8156 */ // MIs[1] unused
8033 /* 8156 */ // No operand predicates
8034 /* 8156 */ // MIs[0] idx
8035 /* 8156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8036 /* 8160 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8037 /* 8164 */ // MIs[2] imm
8038 /* 8164 */ // No operand predicates
8039 /* 8164 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8040 /* 8166 */ // Combiner Rule #29: extract_vector_element_build_vector
8041 /* 8166 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
8042 /* 8169 */ // Label 492: @8169
8043 /* 8169 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8193), // Rule ID 23 //
8044 /* 8174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
8045 /* 8177 */ // MIs[0] root
8046 /* 8177 */ // No operand predicates
8047 /* 8177 */ // MIs[0] vector
8048 /* 8177 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8049 /* 8181 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8050 /* 8185 */ // MIs[0] idx
8051 /* 8185 */ // No operand predicates
8052 /* 8185 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8053 /* 8187 */ // Combiner Rule #21: match_extract_of_element_undef_vector
8054 /* 8187 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8055 /* 8190 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8056 /* 8192 */ GIR_EraseRootFromParent_Done,
8057 /* 8193 */ // Label 493: @8193
8058 /* 8193 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8217), // Rule ID 24 //
8059 /* 8198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
8060 /* 8201 */ // MIs[0] root
8061 /* 8201 */ // No operand predicates
8062 /* 8201 */ // MIs[0] vector
8063 /* 8201 */ // No operand predicates
8064 /* 8201 */ // MIs[0] idx
8065 /* 8201 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8066 /* 8205 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8067 /* 8209 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8068 /* 8211 */ // Combiner Rule #22: match_extract_of_element_undef_index
8069 /* 8211 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8070 /* 8214 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8071 /* 8216 */ GIR_EraseRootFromParent_Done,
8072 /* 8217 */ // Label 494: @8217
8073 /* 8217 */ GIM_Reject,
8074 /* 8218 */ // Label 98: @8218
8075 /* 8218 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8229), // Rule ID 99 //
8076 /* 8223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
8077 /* 8226 */ // Combiner Rule #81: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
8078 /* 8226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
8079 /* 8229 */ // Label 495: @8229
8080 /* 8229 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8240), // Rule ID 101 //
8081 /* 8234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
8082 /* 8237 */ // Combiner Rule #82: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8083 /* 8237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
8084 /* 8240 */ // Label 496: @8240
8085 /* 8240 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8251), // Rule ID 363 //
8086 /* 8245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8087 /* 8248 */ // Combiner Rule #215: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
8088 /* 8248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
8089 /* 8251 */ // Label 497: @8251
8090 /* 8251 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8262), // Rule ID 365 //
8091 /* 8256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8092 /* 8259 */ // Combiner Rule #217: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8093 /* 8259 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
8094 /* 8262 */ // Label 498: @8262
8095 /* 8262 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8283), // Rule ID 364 //
8096 /* 8267 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8097 /* 8270 */ // MIs[0] root
8098 /* 8270 */ // No operand predicates
8099 /* 8270 */ // MIs[0] src1
8100 /* 8270 */ // No operand predicates
8101 /* 8270 */ // MIs[0] undef
8102 /* 8270 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8103 /* 8274 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8104 /* 8278 */ // MIs[0] mask
8105 /* 8278 */ // No operand predicates
8106 /* 8278 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8107 /* 8280 */ // Combiner Rule #216: combine_shuffle_undef_rhs
8108 /* 8280 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
8109 /* 8283 */ // Label 499: @8283
8110 /* 8283 */ GIM_Reject,
8111 /* 8284 */ // Label 99: @8284
8112 /* 8284 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8295), // Rule ID 386 //
8113 /* 8289 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
8114 /* 8292 */ // MIs[0] dst
8115 /* 8292 */ // No operand predicates
8116 /* 8292 */ // MIs[0] src
8117 /* 8292 */ // No operand predicates
8118 /* 8292 */ // Combiner Rule #236: ctlz_to_ctls
8119 /* 8292 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8120 /* 8295 */ // Label 500: @8295
8121 /* 8295 */ GIM_Reject,
8122 /* 8296 */ // Label 100: @8296
8123 /* 8296 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(8307), // Rule ID 387 //
8124 /* 8301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
8125 /* 8304 */ // MIs[0] dst
8126 /* 8304 */ // No operand predicates
8127 /* 8304 */ // MIs[0] src
8128 /* 8304 */ // No operand predicates
8129 /* 8304 */ // Combiner Rule #237: ctlz_zero_undef_to_ctls
8130 /* 8304 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8131 /* 8307 */ // Label 501: @8307
8132 /* 8307 */ GIM_Reject,
8133 /* 8308 */ // Label 101: @8308
8134 /* 8308 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(8352), // Rule ID 239 //
8135 /* 8313 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8136 /* 8316 */ // MIs[0] d
8137 /* 8316 */ // No operand predicates
8138 /* 8316 */ // MIs[0] src
8139 /* 8316 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8140 /* 8320 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
8141 /* 8324 */ // MIs[1] rev
8142 /* 8324 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8143 /* 8328 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8144 /* 8332 */ // MIs[2] val
8145 /* 8332 */ // No operand predicates
8146 /* 8332 */ // MIs[1] amt
8147 /* 8332 */ // No operand predicates
8148 /* 8332 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
8149 /* 8336 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8150 /* 8338 */ // Combiner Rule #173: bitreverse_lshr
8151 /* 8338 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8152 /* 8341 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8153 /* 8343 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8154 /* 8347 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8155 /* 8351 */ GIR_EraseRootFromParent_Done,
8156 /* 8352 */ // Label 502: @8352
8157 /* 8352 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(8396), // Rule ID 238 //
8158 /* 8357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
8159 /* 8360 */ // MIs[0] d
8160 /* 8360 */ // No operand predicates
8161 /* 8360 */ // MIs[0] src
8162 /* 8360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8163 /* 8364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
8164 /* 8368 */ // MIs[1] rev
8165 /* 8368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8166 /* 8372 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8167 /* 8376 */ // MIs[2] val
8168 /* 8376 */ // No operand predicates
8169 /* 8376 */ // MIs[1] amt
8170 /* 8376 */ // No operand predicates
8171 /* 8376 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
8172 /* 8380 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8173 /* 8382 */ // Combiner Rule #172: bitreverse_shl
8174 /* 8382 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
8175 /* 8385 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8176 /* 8387 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8177 /* 8391 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8178 /* 8395 */ GIR_EraseRootFromParent_Done,
8179 /* 8396 */ // Label 503: @8396
8180 /* 8396 */ GIM_Reject,
8181 /* 8397 */ // Label 102: @8397
8182 /* 8397 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(8418), // Rule ID 186 //
8183 /* 8402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
8184 /* 8405 */ // MIs[0] dst
8185 /* 8405 */ // No operand predicates
8186 /* 8405 */ // MIs[0] src0
8187 /* 8405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8188 /* 8409 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8189 /* 8413 */ // MIs[1] cst
8190 /* 8413 */ // No operand predicates
8191 /* 8413 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8192 /* 8415 */ // Combiner Rule #143: constant_fold_fceil
8193 /* 8415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8194 /* 8418 */ // Label 504: @8418
8195 /* 8418 */ GIM_Reject,
8196 /* 8419 */ // Label 103: @8419
8197 /* 8419 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(8440), // Rule ID 182 //
8198 /* 8424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
8199 /* 8427 */ // MIs[0] dst
8200 /* 8427 */ // No operand predicates
8201 /* 8427 */ // MIs[0] src0
8202 /* 8427 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8203 /* 8431 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8204 /* 8435 */ // MIs[1] cst
8205 /* 8435 */ // No operand predicates
8206 /* 8435 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8207 /* 8437 */ // Combiner Rule #139: constant_fold_fsqrt
8208 /* 8437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8209 /* 8440 */ // Label 505: @8440
8210 /* 8440 */ GIM_Reject,
8211 /* 8441 */ // Label 104: @8441
8212 /* 8441 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(8462), // Rule ID 187 //
8213 /* 8446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
8214 /* 8449 */ // MIs[0] dst
8215 /* 8449 */ // No operand predicates
8216 /* 8449 */ // MIs[0] src0
8217 /* 8449 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8218 /* 8453 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8219 /* 8457 */ // MIs[1] cst
8220 /* 8457 */ // No operand predicates
8221 /* 8457 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8222 /* 8459 */ // Combiner Rule #144: constant_fold_ffloor
8223 /* 8459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8224 /* 8462 */ // Label 506: @8462
8225 /* 8462 */ GIM_Reject,
8226 /* 8463 */ // Label 105: @8463
8227 /* 8463 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(8484), // Rule ID 191 //
8228 /* 8468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
8229 /* 8471 */ // MIs[0] dst
8230 /* 8471 */ // No operand predicates
8231 /* 8471 */ // MIs[0] src0
8232 /* 8471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8233 /* 8475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8234 /* 8479 */ // MIs[1] cst
8235 /* 8479 */ // No operand predicates
8236 /* 8479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8237 /* 8481 */ // Combiner Rule #148: constant_fold_frint
8238 /* 8481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8239 /* 8484 */ // Label 507: @8484
8240 /* 8484 */ GIM_Reject,
8241 /* 8485 */ // Label 106: @8485
8242 /* 8485 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(8506), // Rule ID 192 //
8243 /* 8490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8244 /* 8493 */ // MIs[0] dst
8245 /* 8493 */ // No operand predicates
8246 /* 8493 */ // MIs[0] src0
8247 /* 8493 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8248 /* 8497 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8249 /* 8501 */ // MIs[1] cst
8250 /* 8501 */ // No operand predicates
8251 /* 8501 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8252 /* 8503 */ // Combiner Rule #149: constant_fold_fnearbyint
8253 /* 8503 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8254 /* 8506 */ // Label 508: @8506
8255 /* 8506 */ GIM_Reject,
8256 /* 8507 */ // Label 107: @8507
8257 /* 8507 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(8521), // Rule ID 392 //
8258 /* 8512 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_HasDotProd),
8259 /* 8515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
8260 /* 8518 */ // Combiner Rule #241: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD'
8261 /* 8518 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
8262 /* 8521 */ // Label 509: @8521
8263 /* 8521 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(8532), // Rule ID 393 //
8264 /* 8526 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
8265 /* 8529 */ // Combiner Rule #242: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD'
8266 /* 8529 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
8267 /* 8532 */ // Label 510: @8532
8268 /* 8532 */ GIM_Reject,
8269 /* 8533 */ // Label 108: @8533
8270 /* 8533 */ GIM_Reject,
8271 /* 8534 */ }; // Size: 8534 bytes
8272 return MatchTable0;
8273}
8274#undef GIMT_Encode2
8275#undef GIMT_Encode4
8276#undef GIMT_Encode8
8277
8278#endif // ifdef GET_GICOMBINER_IMPL
8279
8280#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8281AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
8282AvailableFunctionFeatures()
8283#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8284#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8285, State(0),
8286ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
8287#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8288
8289