1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* RISCVPreLegalizerCombinerImpl 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 RISCVPreLegalizerCombinerImplRuleConfig {
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: // 12 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': // 1 string to match.
706 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
707 break;
708 return 101; // "fptrunc_fpext_fold"
709 case 's': // 2 strings to match.
710 if (RuleIdentifier[1] != 'e')
711 break;
712 switch (RuleIdentifier[2]) {
713 default: break;
714 case 'l': // 1 string to match.
715 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
716 break;
717 return 58; // "select_of_truncate"
718 case 'x': // 1 string to match.
719 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
720 break;
721 return 121; // "sext_inreg_of_load"
722 }
723 break;
724 case 't': // 1 string to match.
725 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
726 break;
727 return 47; // "truncate_of_anyext"
728 }
729 break;
730 case 19: // 19 strings to match.
731 switch (RuleIdentifier[0]) {
732 default: break;
733 case 'A': // 1 string to match.
734 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
735 break;
736 return 1; // "AMinusBMinusCMinusC"
737 case 'b': // 1 string to match.
738 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
739 break;
740 return 89; // "binop_right_to_zero"
741 case 'c': // 7 strings to match.
742 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
743 break;
744 switch (RuleIdentifier[5]) {
745 default: break;
746 case '_': // 1 string to match.
747 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
748 break;
749 return 152; // "const_ptradd_to_i2p"
750 case 'a': // 6 strings to match.
751 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
752 break;
753 switch (RuleIdentifier[14]) {
754 default: break;
755 case 'b': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
757 break;
758 return 179; // "constant_fold_binop"
759 case 'f': // 5 strings to match.
760 switch (RuleIdentifier[15]) {
761 default: break;
762 case 'c': // 1 string to match.
763 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
764 break;
765 return 143; // "constant_fold_fceil"
766 case 'l': // 1 string to match.
767 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
768 break;
769 return 140; // "constant_fold_flog2"
770 case 'p': // 1 string to match.
771 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
772 break;
773 return 142; // "constant_fold_fpext"
774 case 'r': // 1 string to match.
775 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
776 break;
777 return 148; // "constant_fold_frint"
778 case 's': // 1 string to match.
779 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
780 break;
781 return 139; // "constant_fold_fsqrt"
782 }
783 break;
784 }
785 break;
786 }
787 break;
788 case 'e': // 1 string to match.
789 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
790 break;
791 return 105; // "extend_through_phis"
792 case 'i': // 1 string to match.
793 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
794 break;
795 return 66; // "integer_of_truncate"
796 case 'm': // 1 string to match.
797 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
798 break;
799 return 227; // "merge_of_x_and_zero"
800 case 'p': // 1 string to match.
801 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
802 break;
803 return 111; // "ptr_add_immed_chain"
804 case 'r': // 2 strings to match.
805 switch (RuleIdentifier[1]) {
806 default: break;
807 case 'e': // 1 string to match.
808 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
809 break;
810 return 110; // "reassoc_comm_binops"
811 case 'i': // 1 string to match.
812 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
813 break;
814 return 86; // "right_identity_zero"
815 }
816 break;
817 case 's': // 3 strings to match.
818 switch (RuleIdentifier[1]) {
819 default: break;
820 case 'e': // 1 string to match.
821 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
822 break;
823 return 125; // "select_constant_cmp"
824 case 'i': // 2 strings to match.
825 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
826 break;
827 switch (RuleIdentifier[9]) {
828 default: break;
829 case 'a': // 1 string to match.
830 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
831 break;
832 return 106; // "simplify_add_to_sub"
833 case 'n': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
835 break;
836 return 210; // "simplify_neg_minmax"
837 }
838 break;
839 }
840 break;
841 case 'u': // 1 string to match.
842 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
843 break;
844 return 78; // "unary_undef_to_zero"
845 }
846 break;
847 case 20: // 8 strings to match.
848 switch (RuleIdentifier[0]) {
849 default: break;
850 case 'a': // 1 string to match.
851 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
852 break;
853 return 186; // "and_or_disjoint_mask"
854 case 'b': // 1 string to match.
855 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
856 break;
857 return 100; // "bitcast_bitcast_fold"
858 case 'c': // 1 string to match.
859 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
860 break;
861 return 144; // "constant_fold_ffloor"
862 case 'm': // 1 string to match.
863 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
864 break;
865 return 226; // "merge_of_x_and_undef"
866 case 'r': // 2 strings to match.
867 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
868 break;
869 switch (RuleIdentifier[4]) {
870 default: break;
871 case 'c': // 1 string to match.
872 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
873 break;
874 return 122; // "reduce_shl_of_extend"
875 case 'n': // 1 string to match.
876 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
877 break;
878 return 129; // "redundant_sext_inreg"
879 }
880 break;
881 case 'u': // 2 strings to match.
882 if (RuleIdentifier[1] != 'n')
883 break;
884 switch (RuleIdentifier[2]) {
885 default: break;
886 case 'a': // 1 string to match.
887 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
888 break;
889 return 79; // "unary_undef_to_undef"
890 case 'm': // 1 string to match.
891 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
892 break;
893 return 225; // "unmerge_zext_to_zext"
894 }
895 break;
896 }
897 break;
898 case 21: // 10 strings to match.
899 switch (RuleIdentifier[0]) {
900 default: break;
901 case 'c': // 4 strings to match.
902 if (RuleIdentifier[1] != 'o')
903 break;
904 switch (RuleIdentifier[2]) {
905 default: break;
906 case 'm': // 2 strings to match.
907 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
908 break;
909 switch (RuleIdentifier[8]) {
910 default: break;
911 case 'b': // 1 string to match.
912 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
913 break;
914 return 228; // "combine_build_unmerge"
915 case 'c': // 1 string to match.
916 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
917 break;
918 return 211; // "combine_concat_vector"
919 }
920 break;
921 case 'n': // 2 strings to match.
922 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
923 break;
924 switch (RuleIdentifier[14]) {
925 default: break;
926 case 'c': // 1 string to match.
927 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
928 break;
929 return 182; // "constant_fold_cast_op"
930 case 'f': // 1 string to match.
931 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
932 break;
933 return 141; // "constant_fold_fptrunc"
934 }
935 break;
936 }
937 break;
938 case 'f': // 1 string to match.
939 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
940 break;
941 return 202; // "fdiv_repeated_divison"
942 case 'i': // 1 string to match.
943 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
944 break;
945 return 26; // "insert_vector_elt_oob"
946 case 'l': // 1 string to match.
947 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
948 break;
949 return 235; // "lshr_of_trunc_of_lshr"
950 case 'r': // 1 string to match.
951 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
952 break;
953 return 95; // "right_identity_one_fp"
954 case 'u': // 2 strings to match.
955 if (RuleIdentifier[1] != 'n')
956 break;
957 switch (RuleIdentifier[2]) {
958 default: break;
959 case 'd': // 1 string to match.
960 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
961 break;
962 return 75; // "undef_to_negative_one"
963 case 'm': // 1 string to match.
964 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
965 break;
966 return 224; // "unmerge_dead_to_trunc"
967 }
968 break;
969 }
970 break;
971 case 22: // 13 strings to match.
972 switch (RuleIdentifier[0]) {
973 default: break;
974 case 'c': // 2 strings to match.
975 if (RuleIdentifier[1] != 'o')
976 break;
977 switch (RuleIdentifier[2]) {
978 default: break;
979 case 'm': // 1 string to match.
980 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
981 break;
982 return 215; // "combine_shuffle_concat"
983 case 'n': // 1 string to match.
984 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
985 break;
986 return 180; // "constant_fold_fp_binop"
987 }
988 break;
989 case 'f': // 4 strings to match.
990 switch (RuleIdentifier[1]) {
991 default: break;
992 case 'o': // 1 string to match.
993 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
994 break;
995 return 195; // "fold_binop_into_select"
996 case 'u': // 3 strings to match.
997 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
998 break;
999 switch (RuleIdentifier[13]) {
1000 default: break;
1001 case 'l': // 1 string to match.
1002 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1003 break;
1004 return 168; // "funnel_shift_left_zero"
1005 case 'o': // 1 string to match.
1006 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1007 break;
1008 return 169; // "funnel_shift_overshift"
1009 case 't': // 1 string to match.
1010 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1011 break;
1012 return 166; // "funnel_shift_to_rotate"
1013 }
1014 break;
1015 }
1016 break;
1017 case 'i': // 1 string to match.
1018 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1019 break;
1020 return 115; // "icmp_to_lhs_known_bits"
1021 case 'm': // 1 string to match.
1022 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1023 break;
1024 return 230; // "match_subo_no_overflow"
1025 case 'p': // 1 string to match.
1026 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1027 break;
1028 return 80; // "propagate_undef_any_op"
1029 case 'r': // 2 strings to match.
1030 switch (RuleIdentifier[1]) {
1031 default: break;
1032 case 'e': // 1 string to match.
1033 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1034 break;
1035 return 185; // "redundant_neg_operands"
1036 case 'i': // 1 string to match.
1037 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1038 break;
1039 return 94; // "right_identity_one_int"
1040 }
1041 break;
1042 case 's': // 1 string to match.
1043 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1044 break;
1045 return 119; // "shl_ashr_to_sext_inreg"
1046 case 't': // 1 string to match.
1047 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1048 break;
1049 return 98; // "trunc_buildvector_fold"
1050 }
1051 break;
1052 case 23: // 7 strings to match.
1053 switch (RuleIdentifier[0]) {
1054 default: break;
1055 case 'b': // 1 string to match.
1056 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1057 break;
1058 return 59; // "buildvector_of_truncate"
1059 case 'c': // 1 string to match.
1060 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1061 break;
1062 return 237; // "ctlz_zero_undef_to_ctls"
1063 case 'f': // 1 string to match.
1064 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1065 break;
1066 return 167; // "funnel_shift_right_zero"
1067 case 'i': // 2 strings to match.
1068 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1069 break;
1070 switch (RuleIdentifier[21]) {
1071 default: break;
1072 case 's': // 1 string to match.
1073 if (RuleIdentifier[22] != 'i')
1074 break;
1075 return 150; // "itof_const_zero_fold_si"
1076 case 'u': // 1 string to match.
1077 if (RuleIdentifier[22] != 'i')
1078 break;
1079 return 151; // "itof_const_zero_fold_ui"
1080 }
1081 break;
1082 case 'p': // 1 string to match.
1083 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1084 break;
1085 return 81; // "propagate_undef_all_ops"
1086 case 't': // 1 string to match.
1087 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1088 break;
1089 return 234; // "truncusatu_to_fptouisat"
1090 }
1091 break;
1092 case 24: // 7 strings to match.
1093 switch (RuleIdentifier[0]) {
1094 default: break;
1095 case 'b': // 1 string to match.
1096 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1097 break;
1098 return 76; // "binop_left_undef_to_zero"
1099 case 'c': // 1 string to match.
1100 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1101 break;
1102 return 149; // "constant_fold_fnearbyint"
1103 case 'm': // 1 string to match.
1104 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1105 break;
1106 return 25; // "match_extract_of_element"
1107 case 'n': // 1 string to match.
1108 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1109 break;
1110 return 123; // "narrow_binop_feeding_and"
1111 case 's': // 2 strings to match.
1112 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1113 break;
1114 switch (RuleIdentifier[11]) {
1115 default: break;
1116 case 'o': // 1 string to match.
1117 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1118 break;
1119 return 55; // "sext_inreg_of_sext_inreg"
1120 case 't': // 1 string to match.
1121 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1122 break;
1123 return 133; // "sext_inreg_to_zext_inreg"
1124 }
1125 break;
1126 case 'x': // 1 string to match.
1127 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1128 break;
1129 return 159; // "xor_of_and_with_same_reg"
1130 }
1131 break;
1132 case 25: // 7 strings to match.
1133 switch (RuleIdentifier[0]) {
1134 default: break;
1135 case 'b': // 3 strings to match.
1136 switch (RuleIdentifier[1]) {
1137 default: break;
1138 case 'i': // 2 strings to match.
1139 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1140 break;
1141 switch (RuleIdentifier[22]) {
1142 default: break;
1143 case 'a': // 1 string to match.
1144 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1145 break;
1146 return 176; // "bitfield_extract_from_and"
1147 case 's': // 1 string to match.
1148 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1149 break;
1150 return 177; // "bitfield_extract_from_shr"
1151 }
1152 break;
1153 case 'u': // 1 string to match.
1154 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1155 break;
1156 return 97; // "buildvector_identity_fold"
1157 }
1158 break;
1159 case 'c': // 1 string to match.
1160 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1161 break;
1162 return 216; // "combine_shuffle_undef_rhs"
1163 case 'e': // 1 string to match.
1164 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1165 break;
1166 return 68; // "extract_vec_elt_build_vec"
1167 case 'n': // 1 string to match.
1168 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1169 break;
1170 return 120; // "neg_and_one_to_sext_inreg"
1171 case 'r': // 1 string to match.
1172 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1173 break;
1174 return 104; // "right_identity_neg_one_fp"
1175 }
1176 break;
1177 case 26: // 4 strings to match.
1178 switch (RuleIdentifier[0]) {
1179 default: break;
1180 case 'b': // 1 string to match.
1181 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1182 break;
1183 return 77; // "binop_right_undef_to_undef"
1184 case 'c': // 1 string to match.
1185 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1186 break;
1187 return 207; // "commute_fp_constant_to_rhs"
1188 case 'f': // 1 string to match.
1189 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1190 break;
1191 return 165; // "funnel_shift_from_or_shift"
1192 case 'r': // 1 string to match.
1193 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1194 break;
1195 return 102; // "right_identity_neg_zero_fp"
1196 }
1197 break;
1198 case 27: // 6 strings to match.
1199 switch (RuleIdentifier[0]) {
1200 default: break;
1201 case 'c': // 2 strings to match.
1202 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1203 break;
1204 switch (RuleIdentifier[3]) {
1205 default: break;
1206 case 'b': // 1 string to match.
1207 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1208 break;
1209 return 218; // "combine_use_vector_truncate"
1210 case 'm': // 1 string to match.
1211 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1212 break;
1213 return 206; // "commute_int_constant_to_rhs"
1214 }
1215 break;
1216 case 'd': // 1 string to match.
1217 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1218 break;
1219 return 117; // "double_icmp_zero_or_combine"
1220 case 'r': // 1 string to match.
1221 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1222 break;
1223 return 118; // "redundant_binop_in_equality"
1224 case 't': // 1 string to match.
1225 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1226 break;
1227 return 99; // "trunc_lshr_buildvector_fold"
1228 case 'u': // 1 string to match.
1229 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1230 break;
1231 return 219; // "unmerge_anyext_build_vector"
1232 }
1233 break;
1234 case 28: // 4 strings to match.
1235 switch (RuleIdentifier[0]) {
1236 default: break;
1237 case 'd': // 1 string to match.
1238 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1239 break;
1240 return 116; // "double_icmp_zero_and_combine"
1241 case 'o': // 1 string to match.
1242 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1243 break;
1244 return 136; // "opt_brcond_by_inverting_cond"
1245 case 'p': // 1 string to match.
1246 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1247 break;
1248 return 82; // "propagate_undef_shuffle_mask"
1249 case 's': // 1 string to match.
1250 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1251 break;
1252 return 162; // "shift_of_shifted_logic_chain"
1253 }
1254 break;
1255 case 29: // 6 strings to match.
1256 switch (RuleIdentifier[0]) {
1257 default: break;
1258 case 'b': // 1 string to match.
1259 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1260 break;
1261 return 178; // "bitfield_extract_from_shr_and"
1262 case 'c': // 4 strings to match.
1263 if (RuleIdentifier[1] != 'o')
1264 break;
1265 switch (RuleIdentifier[2]) {
1266 default: break;
1267 case 'm': // 2 strings to match.
1268 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1269 break;
1270 switch (RuleIdentifier[8]) {
1271 default: break;
1272 case 'e': // 1 string to match.
1273 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1274 break;
1275 return 72; // "combine_extracted_vector_load"
1276 case 's': // 1 string to match.
1277 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1278 break;
1279 return 217; // "combine_shuffle_disjoint_mask"
1280 }
1281 break;
1282 case 'n': // 2 strings to match.
1283 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1284 break;
1285 switch (RuleIdentifier[24]) {
1286 default: break;
1287 case 'r': // 1 string to match.
1288 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1289 break;
1290 return 146; // "constant_fold_intrinsic_round"
1291 case 't': // 1 string to match.
1292 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1293 break;
1294 return 145; // "constant_fold_intrinsic_trunc"
1295 }
1296 break;
1297 }
1298 break;
1299 case 'i': // 1 string to match.
1300 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1301 break;
1302 return 114; // "icmp_to_true_false_known_bits"
1303 }
1304 break;
1305 case 30: // 2 strings to match.
1306 switch (RuleIdentifier[0]) {
1307 default: break;
1308 case 'f': // 1 string to match.
1309 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1310 break;
1311 return 43; // "freeze_of_non_undef_non_poison"
1312 case 'r': // 1 string to match.
1313 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1314 break;
1315 return 103; // "right_identity_neg_zero_fp_nsz"
1316 }
1317 break;
1318 case 31: // 2 strings to match.
1319 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1320 break;
1321 switch (RuleIdentifier[22]) {
1322 default: break;
1323 case 'e': // 1 string to match.
1324 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1325 break;
1326 return 24; // "insert_vector_element_elt_undef"
1327 case 'i': // 1 string to match.
1328 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1329 break;
1330 return 23; // "insert_vector_element_idx_undef"
1331 }
1332 break;
1333 case 32: // 4 strings to match.
1334 switch (RuleIdentifier[0]) {
1335 default: break;
1336 case 'b': // 1 string to match.
1337 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1338 break;
1339 return 175; // "bitfield_extract_from_sext_inreg"
1340 case 'c': // 2 strings to match.
1341 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1342 break;
1343 switch (RuleIdentifier[9]) {
1344 default: break;
1345 case 'a': // 1 string to match.
1346 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1347 break;
1348 return 187; // "combine_fadd_fmul_to_fmad_or_fma"
1349 case 's': // 1 string to match.
1350 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1351 break;
1352 return 191; // "combine_fsub_fmul_to_fmad_or_fma"
1353 }
1354 break;
1355 case 'e': // 1 string to match.
1356 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1357 break;
1358 return 27; // "extract_vector_element_not_const"
1359 }
1360 break;
1361 case 33: // 1 string to match.
1362 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1363 break;
1364 return 147; // "constant_fold_intrinsic_roundeven"
1365 case 34: // 1 string to match.
1366 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1367 break;
1368 return 69; // "extract_all_elts_from_build_vector"
1369 case 35: // 1 string to match.
1370 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1371 break;
1372 return 29; // "extract_vector_element_build_vector"
1373 case 36: // 4 strings to match.
1374 switch (RuleIdentifier[0]) {
1375 default: break;
1376 case 'c': // 2 strings to match.
1377 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1378 break;
1379 switch (RuleIdentifier[8]) {
1380 default: break;
1381 case 'f': // 1 string to match.
1382 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1383 break;
1384 return 189; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1385 case 'i': // 1 string to match.
1386 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1387 break;
1388 return 67; // "combine_insert_vec_elts_build_vector"
1389 }
1390 break;
1391 case 'i': // 1 string to match.
1392 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1393 break;
1394 return 84; // "insert_extract_vec_elt_out_of_bounds"
1395 case 'm': // 1 string to match.
1396 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1397 break;
1398 return 22; // "match_extract_of_element_undef_index"
1399 }
1400 break;
1401 case 37: // 4 strings to match.
1402 switch (RuleIdentifier[0]) {
1403 default: break;
1404 case 'c': // 1 string to match.
1405 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1406 break;
1407 return 192; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1408 case 'e': // 1 string to match.
1409 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1410 break;
1411 return 37; // "extract_vector_element_shuffle_vector"
1412 case 'h': // 1 string to match.
1413 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1414 break;
1415 return 107; // "hoist_logic_op_with_same_opcode_hands"
1416 case 'm': // 1 string to match.
1417 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1418 break;
1419 return 21; // "match_extract_of_element_undef_vector"
1420 }
1421 break;
1422 case 38: // 2 strings to match.
1423 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1424 break;
1425 switch (RuleIdentifier[9]) {
1426 default: break;
1427 case 'a': // 1 string to match.
1428 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1429 break;
1430 return 188; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1431 case 's': // 1 string to match.
1432 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1433 break;
1434 return 193; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1435 }
1436 break;
1437 case 40: // 1 string to match.
1438 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1439 break;
1440 return 28; // "extract_vector_element_different_indices"
1441 case 42: // 9 strings to match.
1442 switch (RuleIdentifier[0]) {
1443 default: break;
1444 case 'c': // 1 string to match.
1445 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1446 break;
1447 return 190; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1448 case 'e': // 7 strings to match.
1449 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1450 break;
1451 switch (RuleIdentifier[41]) {
1452 default: break;
1453 case '2': // 1 string to match.
1454 return 30; // "extract_vector_element_build_vector_trunc2"
1455 case '3': // 1 string to match.
1456 return 31; // "extract_vector_element_build_vector_trunc3"
1457 case '4': // 1 string to match.
1458 return 32; // "extract_vector_element_build_vector_trunc4"
1459 case '5': // 1 string to match.
1460 return 33; // "extract_vector_element_build_vector_trunc5"
1461 case '6': // 1 string to match.
1462 return 34; // "extract_vector_element_build_vector_trunc6"
1463 case '7': // 1 string to match.
1464 return 35; // "extract_vector_element_build_vector_trunc7"
1465 case '8': // 1 string to match.
1466 return 36; // "extract_vector_element_build_vector_trunc8"
1467 }
1468 break;
1469 case 'f': // 1 string to match.
1470 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1471 break;
1472 return 170; // "funnel_shift_or_shift_to_funnel_shift_left"
1473 }
1474 break;
1475 case 43: // 2 strings to match.
1476 switch (RuleIdentifier[0]) {
1477 default: break;
1478 case 'c': // 1 string to match.
1479 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1480 break;
1481 return 194; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1482 case 'f': // 1 string to match.
1483 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1484 break;
1485 return 171; // "funnel_shift_or_shift_to_funnel_shift_right"
1486 }
1487 break;
1488 case 44: // 1 string to match.
1489 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1490 break;
1491 return 38; // "insert_vector_element_extract_vector_element"
1492 case 46: // 1 string to match.
1493 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1494 break;
1495 return 44; // "push_freeze_to_prevent_poison_from_propagating"
1496 }
1497#endif // ifndef NDEBUG
1498
1499 return std::nullopt;
1500}
1501static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1502 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1503 if (!RangePair.second.empty()) {
1504 const auto First = getRuleIdxForIdentifier(RangePair.first);
1505 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1506 if (!First || !Last)
1507 return std::nullopt;
1508 if (First >= Last)
1509 report_fatal_error("Beginning of range should be before end of range");
1510 return {{*First, *Last + 1}};
1511 }
1512 if (RangePair.first == "*") {
1513 return {{0, 239}};
1514 }
1515 const auto I = getRuleIdxForIdentifier(RangePair.first);
1516 if (!I)
1517 return std::nullopt;
1518 return {{*I, *I + 1}};
1519}
1520
1521bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1522 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1523 if (!MaybeRange)
1524 return false;
1525 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1526 DisabledRules.reset(I);
1527 return true;
1528}
1529
1530bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1531 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1532 if (!MaybeRange)
1533 return false;
1534 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1535 DisabledRules.set(I);
1536 return true;
1537}
1538
1539static std::vector<std::string> RISCVPreLegalizerCombinerOption;
1540static cl::list<std::string> RISCVPreLegalizerCombinerDisableOption(
1541 "riscvprelegalizercombiner-disable-rule",
1542 cl::desc("Disable one or more combiner rules temporarily in the RISCVPreLegalizerCombiner pass"),
1543 cl::CommaSeparated,
1544 cl::Hidden,
1545 cl::cat(GICombinerOptionCategory),
1546 cl::callback([](const std::string &Str) {
1547 RISCVPreLegalizerCombinerOption.push_back(Str);
1548 }));
1549static cl::list<std::string> RISCVPreLegalizerCombinerOnlyEnableOption(
1550 "riscvprelegalizercombiner-only-enable-rule",
1551 cl::desc("Disable all rules in the RISCVPreLegalizerCombiner pass then re-enable the specified ones"),
1552 cl::Hidden,
1553 cl::cat(GICombinerOptionCategory),
1554 cl::callback([](const std::string &CommaSeparatedArg) {
1555 StringRef Str = CommaSeparatedArg;
1556 RISCVPreLegalizerCombinerOption.push_back("*");
1557 do {
1558 auto X = Str.split(",");
1559 RISCVPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1560 Str = X.second;
1561 } while (!Str.empty());
1562 }));
1563
1564
1565bool RISCVPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1566 return !DisabledRules.test(RuleID);
1567}
1568bool RISCVPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1569 for (StringRef Identifier : RISCVPreLegalizerCombinerOption) {
1570 bool Enabled = Identifier.consume_front("!");
1571 if (Enabled && !setRuleEnabled(Identifier))
1572 return false;
1573 if (!Enabled && !setRuleDisabled(Identifier))
1574 return false;
1575 }
1576 return true;
1577}
1578
1579#endif // ifdef GET_GICOMBINER_TYPES
1580
1581#ifdef GET_GICOMBINER_TYPES
1582const unsigned MAX_SUBTARGET_PREDICATES = 0;
1583using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1584#endif // ifdef GET_GICOMBINER_TYPES
1585
1586#ifdef GET_GICOMBINER_CLASS_MEMBERS
1587PredicateBitset AvailableModuleFeatures;
1588mutable PredicateBitset AvailableFunctionFeatures;
1589PredicateBitset getAvailableFeatures() const {
1590 return AvailableModuleFeatures | AvailableFunctionFeatures;
1591}
1592PredicateBitset
1593computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
1594PredicateBitset
1595computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
1596 const MachineFunction *MF) const;
1597void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1598#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1599#ifdef GET_GICOMBINER_CLASS_MEMBERS
1600 mutable MatcherState State;
1601 typedef ComplexRendererFns(RISCVPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1602 typedef void(RISCVPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1603 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1604 static RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1605 static RISCVPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1606 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1607 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1608 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1609 const uint8_t *getMatchTable() const override;
1610 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1611 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1612 bool testSimplePredicate(unsigned PredicateID) const override;
1613 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1614#endif // ifdef GET_GICOMBINER_CLASS_MEMBERS
1615
1616#ifdef GET_GICOMBINER_IMPL
1617// LLT Objects.
1618enum {
1619 GILLT_s1,
1620};
1621const static size_t NumTypeObjects = 1;
1622const static LLT TypeObjects[] = {
1623 LLT::scalar(1),
1624};
1625
1626// Bits for subtarget features that participate in instruction matching.
1627enum SubtargetFeatureBits : uint8_t {
1628};
1629
1630PredicateBitset RISCVPreLegalizerCombinerImpl::
1631computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
1632 PredicateBitset Features{};
1633 return Features;
1634}
1635
1636void RISCVPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1637 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
1638}
1639PredicateBitset RISCVPreLegalizerCombinerImpl::
1640computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
1641 PredicateBitset Features{};
1642 return Features;
1643}
1644
1645// Feature bitsets.
1646enum {
1647 GIFBS_Invalid,
1648};
1649constexpr static PredicateBitset FeatureBitsets[] {
1650 {}, // GIFBS_Invalid
1651};
1652
1653// ComplexPattern predicates.
1654enum {
1655 GICP_Invalid,
1656};
1657// See constructor for table contents
1658
1659RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn
1660RISCVPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1661 nullptr, // GICP_Invalid
1662};
1663
1664enum {
1665 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1666 GICXXPred_MI_Predicate_GICombiner1,
1667 GICXXPred_MI_Predicate_GICombiner2,
1668 GICXXPred_MI_Predicate_GICombiner3,
1669 GICXXPred_MI_Predicate_GICombiner4,
1670 GICXXPred_MI_Predicate_GICombiner5,
1671 GICXXPred_MI_Predicate_GICombiner6,
1672 GICXXPred_MI_Predicate_GICombiner7,
1673 GICXXPred_MI_Predicate_GICombiner8,
1674 GICXXPred_MI_Predicate_GICombiner9,
1675 GICXXPred_MI_Predicate_GICombiner10,
1676 GICXXPred_MI_Predicate_GICombiner11,
1677 GICXXPred_MI_Predicate_GICombiner12,
1678 GICXXPred_MI_Predicate_GICombiner13,
1679 GICXXPred_MI_Predicate_GICombiner14,
1680};
1681bool RISCVPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1682 switch (PredicateID) {
1683 case GICXXPred_MI_Predicate_GICombiner0: {
1684 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1685 }
1686 case GICXXPred_MI_Predicate_GICombiner1: {
1687 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1688 }
1689 case GICXXPred_MI_Predicate_GICombiner2: {
1690 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1691 }
1692 case GICXXPred_MI_Predicate_GICombiner3: {
1693 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1694 }
1695 case GICXXPred_MI_Predicate_GICombiner4: {
1696 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1697 }
1698 case GICXXPred_MI_Predicate_GICombiner5: {
1699 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1700 }
1701 case GICXXPred_MI_Predicate_GICombiner6: {
1702 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1703 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1704 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1705 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1706 }
1707 case GICXXPred_MI_Predicate_GICombiner7: {
1708 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1709 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1710 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1711 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1712 }
1713 case GICXXPred_MI_Predicate_GICombiner8: {
1714 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1715 Helper.isLegalOrBeforeLegalizer(
1716 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1717 }
1718 case GICXXPred_MI_Predicate_GICombiner9: {
1719 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1720 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1721 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1722 }
1723 case GICXXPred_MI_Predicate_GICombiner10: {
1724 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1725 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1726 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1727 }
1728 case GICXXPred_MI_Predicate_GICombiner11: {
1729 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1730 }
1731 case GICXXPred_MI_Predicate_GICombiner12: {
1732 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1733 }
1734 case GICXXPred_MI_Predicate_GICombiner13: {
1735 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1736 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1737 }
1738 case GICXXPred_MI_Predicate_GICombiner14: {
1739 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1740 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1741 }
1742 }
1743 llvm_unreachable("Unknown predicate");
1744 return false;
1745}
1746bool RISCVPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1747 llvm_unreachable("Unknown predicate");
1748 return false;
1749}
1750bool RISCVPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1751 llvm_unreachable("Unknown predicate");
1752 return false;
1753}
1754bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1755 llvm_unreachable("Unknown predicate");
1756 return false;
1757}
1758bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1759 llvm_unreachable("Unknown predicate");
1760 return false;
1761}
1762enum {
1763 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1764 GICXXPred_Simple_IsRule1Enabled,
1765 GICXXPred_Simple_IsRule2Enabled,
1766 GICXXPred_Simple_IsRule3Enabled,
1767 GICXXPred_Simple_IsRule4Enabled,
1768 GICXXPred_Simple_IsRule5Enabled,
1769 GICXXPred_Simple_IsRule6Enabled,
1770 GICXXPred_Simple_IsRule7Enabled,
1771 GICXXPred_Simple_IsRule8Enabled,
1772 GICXXPred_Simple_IsRule9Enabled,
1773 GICXXPred_Simple_IsRule10Enabled,
1774 GICXXPred_Simple_IsRule11Enabled,
1775 GICXXPred_Simple_IsRule12Enabled,
1776 GICXXPred_Simple_IsRule13Enabled,
1777 GICXXPred_Simple_IsRule14Enabled,
1778 GICXXPred_Simple_IsRule15Enabled,
1779 GICXXPred_Simple_IsRule16Enabled,
1780 GICXXPred_Simple_IsRule17Enabled,
1781 GICXXPred_Simple_IsRule18Enabled,
1782 GICXXPred_Simple_IsRule19Enabled,
1783 GICXXPred_Simple_IsRule20Enabled,
1784 GICXXPred_Simple_IsRule21Enabled,
1785 GICXXPred_Simple_IsRule22Enabled,
1786 GICXXPred_Simple_IsRule23Enabled,
1787 GICXXPred_Simple_IsRule24Enabled,
1788 GICXXPred_Simple_IsRule25Enabled,
1789 GICXXPred_Simple_IsRule26Enabled,
1790 GICXXPred_Simple_IsRule27Enabled,
1791 GICXXPred_Simple_IsRule28Enabled,
1792 GICXXPred_Simple_IsRule29Enabled,
1793 GICXXPred_Simple_IsRule30Enabled,
1794 GICXXPred_Simple_IsRule31Enabled,
1795 GICXXPred_Simple_IsRule32Enabled,
1796 GICXXPred_Simple_IsRule33Enabled,
1797 GICXXPred_Simple_IsRule34Enabled,
1798 GICXXPred_Simple_IsRule35Enabled,
1799 GICXXPred_Simple_IsRule36Enabled,
1800 GICXXPred_Simple_IsRule37Enabled,
1801 GICXXPred_Simple_IsRule38Enabled,
1802 GICXXPred_Simple_IsRule39Enabled,
1803 GICXXPred_Simple_IsRule40Enabled,
1804 GICXXPred_Simple_IsRule41Enabled,
1805 GICXXPred_Simple_IsRule42Enabled,
1806 GICXXPred_Simple_IsRule43Enabled,
1807 GICXXPred_Simple_IsRule44Enabled,
1808 GICXXPred_Simple_IsRule45Enabled,
1809 GICXXPred_Simple_IsRule46Enabled,
1810 GICXXPred_Simple_IsRule47Enabled,
1811 GICXXPred_Simple_IsRule48Enabled,
1812 GICXXPred_Simple_IsRule49Enabled,
1813 GICXXPred_Simple_IsRule50Enabled,
1814 GICXXPred_Simple_IsRule51Enabled,
1815 GICXXPred_Simple_IsRule52Enabled,
1816 GICXXPred_Simple_IsRule53Enabled,
1817 GICXXPred_Simple_IsRule54Enabled,
1818 GICXXPred_Simple_IsRule55Enabled,
1819 GICXXPred_Simple_IsRule56Enabled,
1820 GICXXPred_Simple_IsRule57Enabled,
1821 GICXXPred_Simple_IsRule58Enabled,
1822 GICXXPred_Simple_IsRule59Enabled,
1823 GICXXPred_Simple_IsRule60Enabled,
1824 GICXXPred_Simple_IsRule61Enabled,
1825 GICXXPred_Simple_IsRule62Enabled,
1826 GICXXPred_Simple_IsRule63Enabled,
1827 GICXXPred_Simple_IsRule64Enabled,
1828 GICXXPred_Simple_IsRule65Enabled,
1829 GICXXPred_Simple_IsRule66Enabled,
1830 GICXXPred_Simple_IsRule67Enabled,
1831 GICXXPred_Simple_IsRule68Enabled,
1832 GICXXPred_Simple_IsRule69Enabled,
1833 GICXXPred_Simple_IsRule70Enabled,
1834 GICXXPred_Simple_IsRule71Enabled,
1835 GICXXPred_Simple_IsRule72Enabled,
1836 GICXXPred_Simple_IsRule73Enabled,
1837 GICXXPred_Simple_IsRule74Enabled,
1838 GICXXPred_Simple_IsRule75Enabled,
1839 GICXXPred_Simple_IsRule76Enabled,
1840 GICXXPred_Simple_IsRule77Enabled,
1841 GICXXPred_Simple_IsRule78Enabled,
1842 GICXXPred_Simple_IsRule79Enabled,
1843 GICXXPred_Simple_IsRule80Enabled,
1844 GICXXPred_Simple_IsRule81Enabled,
1845 GICXXPred_Simple_IsRule82Enabled,
1846 GICXXPred_Simple_IsRule83Enabled,
1847 GICXXPred_Simple_IsRule84Enabled,
1848 GICXXPred_Simple_IsRule85Enabled,
1849 GICXXPred_Simple_IsRule86Enabled,
1850 GICXXPred_Simple_IsRule87Enabled,
1851 GICXXPred_Simple_IsRule88Enabled,
1852 GICXXPred_Simple_IsRule89Enabled,
1853 GICXXPred_Simple_IsRule90Enabled,
1854 GICXXPred_Simple_IsRule91Enabled,
1855 GICXXPred_Simple_IsRule92Enabled,
1856 GICXXPred_Simple_IsRule93Enabled,
1857 GICXXPred_Simple_IsRule94Enabled,
1858 GICXXPred_Simple_IsRule95Enabled,
1859 GICXXPred_Simple_IsRule96Enabled,
1860 GICXXPred_Simple_IsRule97Enabled,
1861 GICXXPred_Simple_IsRule98Enabled,
1862 GICXXPred_Simple_IsRule99Enabled,
1863 GICXXPred_Simple_IsRule100Enabled,
1864 GICXXPred_Simple_IsRule101Enabled,
1865 GICXXPred_Simple_IsRule102Enabled,
1866 GICXXPred_Simple_IsRule103Enabled,
1867 GICXXPred_Simple_IsRule104Enabled,
1868 GICXXPred_Simple_IsRule105Enabled,
1869 GICXXPred_Simple_IsRule106Enabled,
1870 GICXXPred_Simple_IsRule107Enabled,
1871 GICXXPred_Simple_IsRule108Enabled,
1872 GICXXPred_Simple_IsRule109Enabled,
1873 GICXXPred_Simple_IsRule110Enabled,
1874 GICXXPred_Simple_IsRule111Enabled,
1875 GICXXPred_Simple_IsRule112Enabled,
1876 GICXXPred_Simple_IsRule113Enabled,
1877 GICXXPred_Simple_IsRule114Enabled,
1878 GICXXPred_Simple_IsRule115Enabled,
1879 GICXXPred_Simple_IsRule116Enabled,
1880 GICXXPred_Simple_IsRule117Enabled,
1881 GICXXPred_Simple_IsRule118Enabled,
1882 GICXXPred_Simple_IsRule119Enabled,
1883 GICXXPred_Simple_IsRule120Enabled,
1884 GICXXPred_Simple_IsRule121Enabled,
1885 GICXXPred_Simple_IsRule122Enabled,
1886 GICXXPred_Simple_IsRule123Enabled,
1887 GICXXPred_Simple_IsRule124Enabled,
1888 GICXXPred_Simple_IsRule125Enabled,
1889 GICXXPred_Simple_IsRule126Enabled,
1890 GICXXPred_Simple_IsRule127Enabled,
1891 GICXXPred_Simple_IsRule128Enabled,
1892 GICXXPred_Simple_IsRule129Enabled,
1893 GICXXPred_Simple_IsRule130Enabled,
1894 GICXXPred_Simple_IsRule131Enabled,
1895 GICXXPred_Simple_IsRule132Enabled,
1896 GICXXPred_Simple_IsRule133Enabled,
1897 GICXXPred_Simple_IsRule134Enabled,
1898 GICXXPred_Simple_IsRule135Enabled,
1899 GICXXPred_Simple_IsRule136Enabled,
1900 GICXXPred_Simple_IsRule137Enabled,
1901 GICXXPred_Simple_IsRule138Enabled,
1902 GICXXPred_Simple_IsRule139Enabled,
1903 GICXXPred_Simple_IsRule140Enabled,
1904 GICXXPred_Simple_IsRule141Enabled,
1905 GICXXPred_Simple_IsRule142Enabled,
1906 GICXXPred_Simple_IsRule143Enabled,
1907 GICXXPred_Simple_IsRule144Enabled,
1908 GICXXPred_Simple_IsRule145Enabled,
1909 GICXXPred_Simple_IsRule146Enabled,
1910 GICXXPred_Simple_IsRule147Enabled,
1911 GICXXPred_Simple_IsRule148Enabled,
1912 GICXXPred_Simple_IsRule149Enabled,
1913 GICXXPred_Simple_IsRule150Enabled,
1914 GICXXPred_Simple_IsRule151Enabled,
1915 GICXXPred_Simple_IsRule152Enabled,
1916 GICXXPred_Simple_IsRule153Enabled,
1917 GICXXPred_Simple_IsRule154Enabled,
1918 GICXXPred_Simple_IsRule155Enabled,
1919 GICXXPred_Simple_IsRule156Enabled,
1920 GICXXPred_Simple_IsRule157Enabled,
1921 GICXXPred_Simple_IsRule158Enabled,
1922 GICXXPred_Simple_IsRule159Enabled,
1923 GICXXPred_Simple_IsRule160Enabled,
1924 GICXXPred_Simple_IsRule161Enabled,
1925 GICXXPred_Simple_IsRule162Enabled,
1926 GICXXPred_Simple_IsRule163Enabled,
1927 GICXXPred_Simple_IsRule164Enabled,
1928 GICXXPred_Simple_IsRule165Enabled,
1929 GICXXPred_Simple_IsRule166Enabled,
1930 GICXXPred_Simple_IsRule167Enabled,
1931 GICXXPred_Simple_IsRule168Enabled,
1932 GICXXPred_Simple_IsRule169Enabled,
1933 GICXXPred_Simple_IsRule170Enabled,
1934 GICXXPred_Simple_IsRule171Enabled,
1935 GICXXPred_Simple_IsRule172Enabled,
1936 GICXXPred_Simple_IsRule173Enabled,
1937 GICXXPred_Simple_IsRule174Enabled,
1938 GICXXPred_Simple_IsRule175Enabled,
1939 GICXXPred_Simple_IsRule176Enabled,
1940 GICXXPred_Simple_IsRule177Enabled,
1941 GICXXPred_Simple_IsRule178Enabled,
1942 GICXXPred_Simple_IsRule179Enabled,
1943 GICXXPred_Simple_IsRule180Enabled,
1944 GICXXPred_Simple_IsRule181Enabled,
1945 GICXXPred_Simple_IsRule182Enabled,
1946 GICXXPred_Simple_IsRule183Enabled,
1947 GICXXPred_Simple_IsRule184Enabled,
1948 GICXXPred_Simple_IsRule185Enabled,
1949 GICXXPred_Simple_IsRule186Enabled,
1950 GICXXPred_Simple_IsRule187Enabled,
1951 GICXXPred_Simple_IsRule188Enabled,
1952 GICXXPred_Simple_IsRule189Enabled,
1953 GICXXPred_Simple_IsRule190Enabled,
1954 GICXXPred_Simple_IsRule191Enabled,
1955 GICXXPred_Simple_IsRule192Enabled,
1956 GICXXPred_Simple_IsRule193Enabled,
1957 GICXXPred_Simple_IsRule194Enabled,
1958 GICXXPred_Simple_IsRule195Enabled,
1959 GICXXPred_Simple_IsRule196Enabled,
1960 GICXXPred_Simple_IsRule197Enabled,
1961 GICXXPred_Simple_IsRule198Enabled,
1962 GICXXPred_Simple_IsRule199Enabled,
1963 GICXXPred_Simple_IsRule200Enabled,
1964 GICXXPred_Simple_IsRule201Enabled,
1965 GICXXPred_Simple_IsRule202Enabled,
1966 GICXXPred_Simple_IsRule203Enabled,
1967 GICXXPred_Simple_IsRule204Enabled,
1968 GICXXPred_Simple_IsRule205Enabled,
1969 GICXXPred_Simple_IsRule206Enabled,
1970 GICXXPred_Simple_IsRule207Enabled,
1971 GICXXPred_Simple_IsRule208Enabled,
1972 GICXXPred_Simple_IsRule209Enabled,
1973 GICXXPred_Simple_IsRule210Enabled,
1974 GICXXPred_Simple_IsRule211Enabled,
1975 GICXXPred_Simple_IsRule212Enabled,
1976 GICXXPred_Simple_IsRule213Enabled,
1977 GICXXPred_Simple_IsRule214Enabled,
1978 GICXXPred_Simple_IsRule215Enabled,
1979 GICXXPred_Simple_IsRule216Enabled,
1980 GICXXPred_Simple_IsRule217Enabled,
1981 GICXXPred_Simple_IsRule218Enabled,
1982 GICXXPred_Simple_IsRule219Enabled,
1983 GICXXPred_Simple_IsRule220Enabled,
1984 GICXXPred_Simple_IsRule221Enabled,
1985 GICXXPred_Simple_IsRule222Enabled,
1986 GICXXPred_Simple_IsRule223Enabled,
1987 GICXXPred_Simple_IsRule224Enabled,
1988 GICXXPred_Simple_IsRule225Enabled,
1989 GICXXPred_Simple_IsRule226Enabled,
1990 GICXXPred_Simple_IsRule227Enabled,
1991 GICXXPred_Simple_IsRule228Enabled,
1992 GICXXPred_Simple_IsRule229Enabled,
1993 GICXXPred_Simple_IsRule230Enabled,
1994 GICXXPred_Simple_IsRule231Enabled,
1995 GICXXPred_Simple_IsRule232Enabled,
1996 GICXXPred_Simple_IsRule233Enabled,
1997 GICXXPred_Simple_IsRule234Enabled,
1998 GICXXPred_Simple_IsRule235Enabled,
1999 GICXXPred_Simple_IsRule236Enabled,
2000 GICXXPred_Simple_IsRule237Enabled,
2001 GICXXPred_Simple_IsRule238Enabled,
2002};
2003
2004bool RISCVPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2005 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2006}
2007// Custom renderers.
2008enum {
2009 GICR_Invalid,
2010};
2011RISCVPreLegalizerCombinerImpl::CustomRendererFn
2012RISCVPreLegalizerCombinerImpl::CustomRenderers[] = {
2013 nullptr, // GICR_Invalid
2014};
2015
2016bool RISCVPreLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
2017 const TargetSubtargetInfo &ST = MF.getSubtarget();
2018 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2019 B.setInstrAndDebugLoc(I);
2020 State.MIs.clear();
2021 State.MIs.push_back(&I);
2022 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2023 return true;
2024 }
2025
2026 return false;
2027}
2028
2029enum {
2030 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2031 GICXXCustomAction_GICombiner1,
2032 GICXXCustomAction_GICombiner2,
2033 GICXXCustomAction_GICombiner3,
2034 GICXXCustomAction_GICombiner4,
2035 GICXXCustomAction_GICombiner5,
2036 GICXXCustomAction_GICombiner6,
2037 GICXXCustomAction_GICombiner7,
2038 GICXXCustomAction_GICombiner8,
2039 GICXXCustomAction_GICombiner9,
2040 GICXXCustomAction_GICombiner10,
2041 GICXXCustomAction_GICombiner11,
2042 GICXXCustomAction_GICombiner12,
2043 GICXXCustomAction_GICombiner13,
2044 GICXXCustomAction_GICombiner14,
2045 GICXXCustomAction_GICombiner15,
2046 GICXXCustomAction_GICombiner16,
2047 GICXXCustomAction_GICombiner17,
2048 GICXXCustomAction_GICombiner18,
2049 GICXXCustomAction_GICombiner19,
2050 GICXXCustomAction_GICombiner20,
2051 GICXXCustomAction_GICombiner21,
2052 GICXXCustomAction_GICombiner22,
2053 GICXXCustomAction_GICombiner23,
2054 GICXXCustomAction_GICombiner24,
2055 GICXXCustomAction_GICombiner25,
2056 GICXXCustomAction_GICombiner26,
2057 GICXXCustomAction_GICombiner27,
2058 GICXXCustomAction_GICombiner28,
2059 GICXXCustomAction_GICombiner29,
2060 GICXXCustomAction_GICombiner30,
2061 GICXXCustomAction_GICombiner31,
2062 GICXXCustomAction_GICombiner32,
2063 GICXXCustomAction_GICombiner33,
2064 GICXXCustomAction_GICombiner34,
2065 GICXXCustomAction_GICombiner35,
2066 GICXXCustomAction_GICombiner36,
2067 GICXXCustomAction_GICombiner37,
2068 GICXXCustomAction_GICombiner38,
2069 GICXXCustomAction_GICombiner39,
2070 GICXXCustomAction_GICombiner40,
2071 GICXXCustomAction_GICombiner41,
2072 GICXXCustomAction_GICombiner42,
2073 GICXXCustomAction_GICombiner43,
2074 GICXXCustomAction_GICombiner44,
2075 GICXXCustomAction_GICombiner45,
2076 GICXXCustomAction_GICombiner46,
2077 GICXXCustomAction_GICombiner47,
2078 GICXXCustomAction_GICombiner48,
2079 GICXXCustomAction_GICombiner49,
2080 GICXXCustomAction_GICombiner50,
2081 GICXXCustomAction_GICombiner51,
2082 GICXXCustomAction_GICombiner52,
2083 GICXXCustomAction_GICombiner53,
2084 GICXXCustomAction_GICombiner54,
2085 GICXXCustomAction_GICombiner55,
2086 GICXXCustomAction_GICombiner56,
2087 GICXXCustomAction_GICombiner57,
2088 GICXXCustomAction_GICombiner58,
2089 GICXXCustomAction_GICombiner59,
2090 GICXXCustomAction_GICombiner60,
2091 GICXXCustomAction_GICombiner61,
2092 GICXXCustomAction_GICombiner62,
2093 GICXXCustomAction_GICombiner63,
2094 GICXXCustomAction_GICombiner64,
2095 GICXXCustomAction_GICombiner65,
2096 GICXXCustomAction_GICombiner66,
2097 GICXXCustomAction_GICombiner67,
2098 GICXXCustomAction_GICombiner68,
2099 GICXXCustomAction_GICombiner69,
2100 GICXXCustomAction_GICombiner70,
2101 GICXXCustomAction_GICombiner71,
2102 GICXXCustomAction_GICombiner72,
2103 GICXXCustomAction_GICombiner73,
2104 GICXXCustomAction_GICombiner74,
2105 GICXXCustomAction_GICombiner75,
2106 GICXXCustomAction_GICombiner76,
2107 GICXXCustomAction_GICombiner77,
2108 GICXXCustomAction_GICombiner78,
2109 GICXXCustomAction_GICombiner79,
2110 GICXXCustomAction_GICombiner80,
2111 GICXXCustomAction_GICombiner81,
2112 GICXXCustomAction_GICombiner82,
2113 GICXXCustomAction_GICombiner83,
2114 GICXXCustomAction_GICombiner84,
2115 GICXXCustomAction_GICombiner85,
2116 GICXXCustomAction_GICombiner86,
2117 GICXXCustomAction_GICombiner87,
2118 GICXXCustomAction_GICombiner88,
2119 GICXXCustomAction_GICombiner89,
2120 GICXXCustomAction_GICombiner90,
2121 GICXXCustomAction_GICombiner91,
2122 GICXXCustomAction_GICombiner92,
2123 GICXXCustomAction_GICombiner93,
2124 GICXXCustomAction_GICombiner94,
2125 GICXXCustomAction_GICombiner95,
2126 GICXXCustomAction_GICombiner96,
2127 GICXXCustomAction_GICombiner97,
2128 GICXXCustomAction_GICombiner98,
2129 GICXXCustomAction_GICombiner99,
2130 GICXXCustomAction_GICombiner100,
2131 GICXXCustomAction_GICombiner101,
2132 GICXXCustomAction_GICombiner102,
2133 GICXXCustomAction_GICombiner103,
2134 GICXXCustomAction_GICombiner104,
2135 GICXXCustomAction_GICombiner105,
2136 GICXXCustomAction_GICombiner106,
2137 GICXXCustomAction_GICombiner107,
2138 GICXXCustomAction_GICombiner108,
2139 GICXXCustomAction_GICombiner109,
2140 GICXXCustomAction_GICombiner110,
2141 GICXXCustomAction_GICombiner111,
2142 GICXXCustomAction_GICombiner112,
2143 GICXXCustomAction_GICombiner113,
2144 GICXXCustomAction_GICombiner114,
2145 GICXXCustomAction_GICombiner115,
2146 GICXXCustomAction_GICombiner116,
2147 GICXXCustomAction_GICombiner117,
2148 GICXXCustomAction_GICombiner118,
2149 GICXXCustomAction_GICombiner119,
2150 GICXXCustomAction_GICombiner120,
2151 GICXXCustomAction_GICombiner121,
2152 GICXXCustomAction_GICombiner122,
2153 GICXXCustomAction_GICombiner123,
2154 GICXXCustomAction_GICombiner124,
2155 GICXXCustomAction_GICombiner125,
2156 GICXXCustomAction_GICombiner126,
2157 GICXXCustomAction_GICombiner127,
2158 GICXXCustomAction_GICombiner128,
2159 GICXXCustomAction_GICombiner129,
2160 GICXXCustomAction_GICombiner130,
2161 GICXXCustomAction_GICombiner131,
2162 GICXXCustomAction_GICombiner132,
2163 GICXXCustomAction_GICombiner133,
2164 GICXXCustomAction_GICombiner134,
2165 GICXXCustomAction_GICombiner135,
2166 GICXXCustomAction_GICombiner136,
2167 GICXXCustomAction_GICombiner137,
2168 GICXXCustomAction_GICombiner138,
2169 GICXXCustomAction_GICombiner139,
2170 GICXXCustomAction_GICombiner140,
2171 GICXXCustomAction_GICombiner141,
2172 GICXXCustomAction_GICombiner142,
2173 GICXXCustomAction_GICombiner143,
2174 GICXXCustomAction_GICombiner144,
2175 GICXXCustomAction_GICombiner145,
2176 GICXXCustomAction_GICombiner146,
2177 GICXXCustomAction_GICombiner147,
2178 GICXXCustomAction_GICombiner148,
2179 GICXXCustomAction_GICombiner149,
2180 GICXXCustomAction_GICombiner150,
2181 GICXXCustomAction_GICombiner151,
2182 GICXXCustomAction_GICombiner152,
2183 GICXXCustomAction_GICombiner153,
2184 GICXXCustomAction_GICombiner154,
2185 GICXXCustomAction_GICombiner155,
2186};
2187bool RISCVPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2188 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2189 switch(ApplyID) {
2190 case GICXXCustomAction_GICombiner0:{
2191 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2192 // Match Patterns
2193 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2194 return false;
2195 }
2196 // Apply Patterns
2197 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2198 return true;
2199 }
2200 case GICXXCustomAction_GICombiner1:{
2201 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2202 // Match Patterns
2203 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2204 return false;
2205 }
2206 // Apply Patterns
2207 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2208 return true;
2209 }
2210 case GICXXCustomAction_GICombiner2:{
2211 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2212 // Match Patterns
2213 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2214 return false;
2215 }
2216 // Apply Patterns
2217 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2218 return true;
2219 }
2220 case GICXXCustomAction_GICombiner3:{
2221 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2222 // Match Patterns
2223 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2224 return false;
2225 }
2226 // Apply Patterns
2227 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2228 return true;
2229 }
2230 case GICXXCustomAction_GICombiner4:{
2231 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2232 // Match Patterns
2233 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2234 return false;
2235 }
2236 // Apply Patterns
2237 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2238 return true;
2239 }
2240 case GICXXCustomAction_GICombiner5:{
2241 // Match Patterns
2242 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2243 return false;
2244 }
2245 // Apply Patterns
2246 Helper.applyCombineCopy(*State.MIs[0]);
2247 return true;
2248 }
2249 case GICXXCustomAction_GICombiner6:{
2250 unsigned GIMatchData_matchinfo;
2251 // Match Patterns
2252 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2253 return false;
2254 }
2255 // Apply Patterns
2256 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2257 return true;
2258 }
2259 case GICXXCustomAction_GICombiner7:{
2260 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2261 // Match Patterns
2262 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2263 return false;
2264 }
2265 // Apply Patterns
2266 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2267 return true;
2268 }
2269 case GICXXCustomAction_GICombiner8:{
2270 std::pair<Register, bool> GIMatchData_info;
2271 // Match Patterns
2272 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2273 return false;
2274 }
2275 // Apply Patterns
2276 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2277 return true;
2278 }
2279 case GICXXCustomAction_GICombiner9:{
2280 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2281 // Match Patterns
2282 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2283 return false;
2284 }
2285 // Apply Patterns
2286 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2287 return true;
2288 }
2289 case GICXXCustomAction_GICombiner10:{
2290 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2291 // Match Patterns
2292 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2293 return false;
2294 }
2295 // Apply Patterns
2296 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2297 return true;
2298 }
2299 case GICXXCustomAction_GICombiner11:{
2300 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2301 // Match Patterns
2302 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2303 return false;
2304 }
2305 // Apply Patterns
2306 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2307 return true;
2308 }
2309 case GICXXCustomAction_GICombiner12:{
2310 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2311 // Match Patterns
2312 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2313 GIMatchData_matchinfo);}()) {
2314 return false;
2315 }
2316 // Apply Patterns
2317 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2318 return true;
2319 }
2320 case GICXXCustomAction_GICombiner13:{
2321 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2322 // Match Patterns
2323 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2324 return false;
2325 }
2326 // Apply Patterns
2327 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2328 return true;
2329 }
2330 case GICXXCustomAction_GICombiner14:{
2331 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2332 // Match Patterns
2333 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2334 GIMatchData_matchinfo);}()) {
2335 return false;
2336 }
2337 // Apply Patterns
2338 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2339 return true;
2340 }
2341 case GICXXCustomAction_GICombiner15:{
2342 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2343 // Match Patterns
2344 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2345 return false;
2346 }
2347 // Apply Patterns
2348 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2349 return true;
2350 }
2351 case GICXXCustomAction_GICombiner16:{
2352 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2353 // Match Patterns
2354 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2355 return false;
2356 }
2357 // Apply Patterns
2358 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2359 return true;
2360 }
2361 case GICXXCustomAction_GICombiner17:{
2362 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2363 // Match Patterns
2364 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2365 return false;
2366 }
2367 // Apply Patterns
2368 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2369 return true;
2370 }
2371 case GICXXCustomAction_GICombiner18:{
2372 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2373 // Match Patterns
2374 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2375 return false;
2376 }
2377 // Apply Patterns
2378 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2379 return true;
2380 }
2381 case GICXXCustomAction_GICombiner19:{
2382 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2383 // Match Patterns
2384 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2385 return false;
2386 }
2387 // Apply Patterns
2388 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2389 return true;
2390 }
2391 case GICXXCustomAction_GICombiner20:{
2392 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2393 // Match Patterns
2394 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2395 return false;
2396 }
2397 // Apply Patterns
2398 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2399 return true;
2400 }
2401 case GICXXCustomAction_GICombiner21:{
2402 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2403 // Match Patterns
2404 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2405 return false;
2406 }
2407 // Apply Patterns
2408 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2409 return true;
2410 }
2411 case GICXXCustomAction_GICombiner22:{
2412 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2413 // Match Patterns
2414 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2415 return false;
2416 }
2417 // Apply Patterns
2418 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2419 return true;
2420 }
2421 case GICXXCustomAction_GICombiner23:{
2422 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2423 // Match Patterns
2424 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2425 return false;
2426 }
2427 // Apply Patterns
2428 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2429 return true;
2430 }
2431 case GICXXCustomAction_GICombiner24:{
2432 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2433 // Match Patterns
2434 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2435 return false;
2436 }
2437 // Apply Patterns
2438 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2439 return true;
2440 }
2441 case GICXXCustomAction_GICombiner25:{
2442 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2443 // Match Patterns
2444 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2445 return false;
2446 }
2447 // Apply Patterns
2448 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2449 return true;
2450 }
2451 case GICXXCustomAction_GICombiner26:{
2452 APInt GIMatchData_matchinfo;
2453 // Match Patterns
2454 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2455 return false;
2456 }
2457 // Apply Patterns
2458 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2459 return true;
2460 }
2461 case GICXXCustomAction_GICombiner27:{
2462 SmallVector<Register> GIMatchData_info;
2463 // Match Patterns
2464 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2465 return false;
2466 }
2467 // Apply Patterns
2468 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2469 return true;
2470 }
2471 case GICXXCustomAction_GICombiner28:{
2472 Register GIMatchData_matchinfo;
2473 // Match Patterns
2474 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2475 return false;
2476 }
2477 // Apply Patterns
2478 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2479 return true;
2480 }
2481 case GICXXCustomAction_GICombiner29:{
2482 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2483 // Match Patterns
2484 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2485 return false;
2486 }
2487 // Apply Patterns
2488 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2489 return true;
2490 }
2491 case GICXXCustomAction_GICombiner30:{
2492 PreferredTuple GIMatchData_matchinfo;
2493 // Match Patterns
2494 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2495 return false;
2496 }
2497 // Apply Patterns
2498 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2499 return true;
2500 }
2501 case GICXXCustomAction_GICombiner31:{
2502 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2503 // Match Patterns
2504 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2505 return false;
2506 }
2507 // Apply Patterns
2508 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2509 return true;
2510 }
2511 case GICXXCustomAction_GICombiner32:{
2512 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2513 // Match Patterns
2514 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2515 return false;
2516 }
2517 // Apply Patterns
2518 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2519 return true;
2520 }
2521 case GICXXCustomAction_GICombiner33:{
2522 // Match Patterns
2523 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2524 return false;
2525 }
2526 // Apply Patterns
2527 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2528 return true;
2529 }
2530 case GICXXCustomAction_GICombiner34:{
2531 // Match Patterns
2532 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2533 return false;
2534 }
2535 // Apply Patterns
2536 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2537 return true;
2538 }
2539 case GICXXCustomAction_GICombiner35:{
2540 // Match Patterns
2541 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2542 return false;
2543 }
2544 // Apply Patterns
2545 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2546 return true;
2547 }
2548 case GICXXCustomAction_GICombiner36:{
2549 // Match Patterns
2550 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2551 return false;
2552 }
2553 // Apply Patterns
2554 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2555 return true;
2556 }
2557 case GICXXCustomAction_GICombiner37:{
2558 // Match Patterns
2559 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2560 return false;
2561 }
2562 // Apply Patterns
2563 Helper.replaceInstWithUndef(*State.MIs[0]);
2564 return true;
2565 }
2566 case GICXXCustomAction_GICombiner38:{
2567 // Apply Patterns
2568 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2569 return true;
2570 }
2571 case GICXXCustomAction_GICombiner39:{
2572 // Match Patterns
2573 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2574 return false;
2575 }
2576 // Apply Patterns
2577 Helper.replaceInstWithUndef(*State.MIs[0]);
2578 return true;
2579 }
2580 case GICXXCustomAction_GICombiner40:{
2581 // Match Patterns
2582 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2583 return false;
2584 }
2585 // Apply Patterns
2586 Helper.replaceInstWithUndef(*State.MIs[0]);
2587 return true;
2588 }
2589 case GICXXCustomAction_GICombiner41:{
2590 // Match Patterns
2591 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2592 return false;
2593 }
2594 // Apply Patterns
2595 Helper.replaceInstWithUndef(*State.MIs[0]);
2596 return true;
2597 }
2598 case GICXXCustomAction_GICombiner42:{
2599 // Match Patterns
2600 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2601 return false;
2602 }
2603 // Apply Patterns
2604 Helper.eraseInst(*State.MIs[0]);
2605 return true;
2606 }
2607 case GICXXCustomAction_GICombiner43:{
2608 // Match Patterns
2609 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2610 return false;
2611 }
2612 // Apply Patterns
2613 Helper.replaceInstWithUndef(*State.MIs[0]);
2614 return true;
2615 }
2616 case GICXXCustomAction_GICombiner44:{
2617 // Match Patterns
2618 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2619 return false;
2620 }
2621 // Apply Patterns
2622 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2623 return true;
2624 }
2625 case GICXXCustomAction_GICombiner45:{
2626 Register GIMatchData_info;
2627 // Match Patterns
2628 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2629 return false;
2630 }
2631 // Apply Patterns
2632 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2633 return true;
2634 }
2635 case GICXXCustomAction_GICombiner46:{
2636 Register GIMatchData_info;
2637 // Match Patterns
2638 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2639 return false;
2640 }
2641 // Apply Patterns
2642 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2643 return true;
2644 }
2645 case GICXXCustomAction_GICombiner47:{
2646 Register GIMatchData_matchinfo;
2647 // Match Patterns
2648 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2649 return false;
2650 }
2651 // Apply Patterns
2652 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2653 return true;
2654 }
2655 case GICXXCustomAction_GICombiner48:{
2656 Register GIMatchData_matchinfo;
2657 // Match Patterns
2658 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2659 return false;
2660 }
2661 // Apply Patterns
2662 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2663 return true;
2664 }
2665 case GICXXCustomAction_GICombiner49:{
2666 Register GIMatchData_matchinfo;
2667 // Match Patterns
2668 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2669 return false;
2670 }
2671 // Apply Patterns
2672 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2673 return true;
2674 }
2675 case GICXXCustomAction_GICombiner50:{
2676 Register GIMatchData_matchinfo;
2677 // Match Patterns
2678 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2679 return false;
2680 }
2681 // Apply Patterns
2682 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2683 return true;
2684 }
2685 case GICXXCustomAction_GICombiner51:{
2686 // Match Patterns
2687 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2688 return false;
2689 }
2690 // Apply Patterns
2691 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2692 return true;
2693 }
2694 case GICXXCustomAction_GICombiner52:{
2695 MachineInstr* GIMatchData_matchinfo;
2696 // Match Patterns
2697 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2698 return false;
2699 }
2700 // Apply Patterns
2701 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2702 return true;
2703 }
2704 case GICXXCustomAction_GICombiner53:{
2705 std::tuple<Register, Register> GIMatchData_info;
2706 // Match Patterns
2707 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2708 return false;
2709 }
2710 // Apply Patterns
2711 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2712 return true;
2713 }
2714 case GICXXCustomAction_GICombiner54:{
2715 InstructionStepsMatchInfo GIMatchData_info;
2716 // Match Patterns
2717 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2718 return false;
2719 }
2720 // Apply Patterns
2721 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2722 return true;
2723 }
2724 case GICXXCustomAction_GICombiner55:{
2725 std::optional<int64_t> GIMatchData_matchinfo;
2726 // Match Patterns
2727 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2728 return false;
2729 }
2730 // Apply Patterns
2731 if (GIMatchData_matchinfo) {
2732 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2733 } else {
2734 Helper.replaceInstWithUndef(*State.MIs[0]);
2735 }
2736 return true;
2737 }
2738 case GICXXCustomAction_GICombiner56:{
2739 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2740 // Match Patterns
2741 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2742 return false;
2743 }
2744 // Apply Patterns
2745 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2746 return true;
2747 }
2748 case GICXXCustomAction_GICombiner57:{
2749 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2750 // Match Patterns
2751 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2752 return false;
2753 }
2754 // Apply Patterns
2755 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2756 return true;
2757 }
2758 case GICXXCustomAction_GICombiner58:{
2759 PtrAddChain GIMatchData_matchinfo;
2760 // Match Patterns
2761 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2762 return false;
2763 }
2764 // Apply Patterns
2765 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2766 return true;
2767 }
2768 case GICXXCustomAction_GICombiner59:{
2769 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2770 // Match Patterns
2771 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2772 return false;
2773 }
2774 // Apply Patterns
2775 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2776 return true;
2777 }
2778 case GICXXCustomAction_GICombiner60:{
2779 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2780 // Match Patterns
2781 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2782 return false;
2783 }
2784 // Apply Patterns
2785 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2786 return true;
2787 }
2788 case GICXXCustomAction_GICombiner61:{
2789 int64_t GIMatchData_matchinfo;
2790 // Match Patterns
2791 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2792 return false;
2793 }
2794 // Apply Patterns
2795 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2796 return true;
2797 }
2798 case GICXXCustomAction_GICombiner62:{
2799 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2800 // Match Patterns
2801 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2802 return false;
2803 }
2804 // Apply Patterns
2805 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2806 return true;
2807 }
2808 case GICXXCustomAction_GICombiner63:{
2809 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2810 // Match Patterns
2811 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2812 return false;
2813 }
2814 // Apply Patterns
2815 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2816 return true;
2817 }
2818 case GICXXCustomAction_GICombiner64:{
2819 std::tuple<Register, int64_t> GIMatchData_info;
2820 // Match Patterns
2821 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2822 return false;
2823 }
2824 // Apply Patterns
2825 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2826 return true;
2827 }
2828 case GICXXCustomAction_GICombiner65:{
2829 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2830 // Match Patterns
2831 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2832 return false;
2833 }
2834 // Apply Patterns
2835 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2836 return true;
2837 }
2838 case GICXXCustomAction_GICombiner66:{
2839 RegisterImmPair GIMatchData_matchinfo;
2840 // Match Patterns
2841 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2842 return false;
2843 }
2844 // Apply Patterns
2845 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2846 return true;
2847 }
2848 case GICXXCustomAction_GICombiner67:{
2849 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2850 // Match Patterns
2851 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2852 return false;
2853 }
2854 // Apply Patterns
2855 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2856 return true;
2857 }
2858 case GICXXCustomAction_GICombiner68:{
2859 unsigned GIMatchData_matchinfo;
2860 // Match Patterns
2861 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2862 return false;
2863 }
2864 // Apply Patterns
2865 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
2866 return true;
2867 }
2868 case GICXXCustomAction_GICombiner69:{
2869 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2870 // Match Patterns
2871 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
2872 return false;
2873 }
2874 // Apply Patterns
2875 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
2876 return true;
2877 }
2878 case GICXXCustomAction_GICombiner70:{
2879 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2880 // Match Patterns
2881 if(![&](){return Helper.matchSelect(*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_GICombiner71:{
2889 Register GIMatchData_matchinfo;
2890 // Match Patterns
2891 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2892 return false;
2893 }
2894 // Apply Patterns
2895 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2896 return true;
2897 }
2898 case GICXXCustomAction_GICombiner72:{
2899 // Match Patterns
2900 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
2901 return false;
2902 }
2903 // Apply Patterns
2904 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
2905 return true;
2906 }
2907 case GICXXCustomAction_GICombiner73:{
2908 Register GIMatchData_matchinfo;
2909 // Match Patterns
2910 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
2911 return false;
2912 }
2913 // Apply Patterns
2914 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2915 return true;
2916 }
2917 case GICXXCustomAction_GICombiner74:{
2918 // Match Patterns
2919 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
2920 return false;
2921 }
2922 // Apply Patterns
2923 Helper.applySimplifyURemByPow2(*State.MIs[0]);
2924 return true;
2925 }
2926 case GICXXCustomAction_GICombiner75:{
2927 Register GIMatchData_matchinfo;
2928 // Match Patterns
2929 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2930 return false;
2931 }
2932 // Apply Patterns
2933 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2934 return true;
2935 }
2936 case GICXXCustomAction_GICombiner76:{
2937 // Match Patterns
2938 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
2939 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
2940 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
2941 return false;
2942 }
2943 // Apply Patterns
2944 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2945 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
2946 State.MIs[0]->eraseFromParent();
2947 return true;
2948 }
2949 case GICXXCustomAction_GICombiner77:{
2950 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
2951 // Match Patterns
2952 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
2953 return false;
2954 }
2955 // Apply Patterns
2956 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
2957 return true;
2958 }
2959 case GICXXCustomAction_GICombiner78:{
2960 SmallVector<Register> GIMatchData_info;
2961 // Match Patterns
2962 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
2963 return false;
2964 }
2965 // Apply Patterns
2966 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
2967 return true;
2968 }
2969 case GICXXCustomAction_GICombiner79:{
2970 MachineInstr * GIMatchData_matchinfo;
2971 // Match Patterns
2972 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
2973 return false;
2974 }
2975 // Apply Patterns
2976 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
2977 return true;
2978 }
2979 case GICXXCustomAction_GICombiner80:{
2980 // Apply Patterns
2981 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
2982 return true;
2983 }
2984 case GICXXCustomAction_GICombiner81:{
2985 // Apply Patterns
2986 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
2987 return true;
2988 }
2989 case GICXXCustomAction_GICombiner82:{
2990 APInt GIMatchData_info;
2991 // Match Patterns
2992 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
2993 return false;
2994 }
2995 // Apply Patterns
2996 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
2997 return true;
2998 }
2999 case GICXXCustomAction_GICombiner83:{
3000 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3001 // Match Patterns
3002 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3003 return false;
3004 }
3005 // Apply Patterns
3006 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3007 return true;
3008 }
3009 case GICXXCustomAction_GICombiner84:{
3010 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3011 // Match Patterns
3012 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3013 return false;
3014 }
3015 // Apply Patterns
3016 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3017 return true;
3018 }
3019 case GICXXCustomAction_GICombiner85:{
3020 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3021 // Match Patterns
3022 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3023 return false;
3024 }
3025 // Apply Patterns
3026 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3027 return true;
3028 }
3029 case GICXXCustomAction_GICombiner86:{
3030 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3031 // Match Patterns
3032 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3033 return false;
3034 }
3035 // Apply Patterns
3036 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3037 return true;
3038 }
3039 case GICXXCustomAction_GICombiner87:{
3040 unsigned GIMatchData_info;
3041 // Match Patterns
3042 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3043 return false;
3044 }
3045 // Apply Patterns
3046 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3047 return true;
3048 }
3049 case GICXXCustomAction_GICombiner88:{
3050 // Match Patterns
3051 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3052 return false;
3053 }
3054 // Apply Patterns
3055 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3056 return true;
3057 }
3058 case GICXXCustomAction_GICombiner89:{
3059 std::pair<Register, Register> GIMatchData_matchinfo;
3060 // Match Patterns
3061 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3062 return false;
3063 }
3064 // Apply Patterns
3065 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3066 return true;
3067 }
3068 case GICXXCustomAction_GICombiner90:{
3069 // Match Patterns
3070 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3071 return false;
3072 }
3073 // Apply Patterns
3074 Helper.applyPtrAddZero(*State.MIs[0]);
3075 return true;
3076 }
3077 case GICXXCustomAction_GICombiner91:{
3078 RegisterImmPair GIMatchData_matchinfo;
3079 // Match Patterns
3080 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3081 return false;
3082 }
3083 // Apply Patterns
3084 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3085 return true;
3086 }
3087 case GICXXCustomAction_GICombiner92:{
3088 ShiftOfShiftedLogic GIMatchData_matchinfo;
3089 // Match Patterns
3090 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3091 return false;
3092 }
3093 // Apply Patterns
3094 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3095 return true;
3096 }
3097 case GICXXCustomAction_GICombiner93:{
3098 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3099 // Match Patterns
3100 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3101 return false;
3102 }
3103 // Apply Patterns
3104 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3105 return true;
3106 }
3107 case GICXXCustomAction_GICombiner94:{
3108 MachineInstr * GIMatchData_matchinfo;
3109 // Match Patterns
3110 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3111 return false;
3112 }
3113 // Apply Patterns
3114 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3115 return true;
3116 }
3117 case GICXXCustomAction_GICombiner95:{
3118 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3119 // Match Patterns
3120 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3121 return false;
3122 }
3123 // Apply Patterns
3124 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3125 return true;
3126 }
3127 case GICXXCustomAction_GICombiner96:{
3128 // Match Patterns
3129 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3130 return false;
3131 }
3132 // Apply Patterns
3133 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3134 return true;
3135 }
3136 case GICXXCustomAction_GICombiner97:{
3137 // Match Patterns
3138 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3139 return false;
3140 }
3141 // Apply Patterns
3142 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3143 return true;
3144 }
3145 case GICXXCustomAction_GICombiner98:{
3146 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3147 // Match Patterns
3148 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3149 return false;
3150 }
3151 // Apply Patterns
3152 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3153 return true;
3154 }
3155 case GICXXCustomAction_GICombiner99:{
3156 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3157 // Match Patterns
3158 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3159 return false;
3160 }
3161 // Apply Patterns
3162 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3163 return true;
3164 }
3165 case GICXXCustomAction_GICombiner100:{
3166 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3167 // Match Patterns
3168 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3169 return false;
3170 }
3171 // Apply Patterns
3172 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3173 return true;
3174 }
3175 case GICXXCustomAction_GICombiner101:{
3176 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3177 // Match Patterns
3178 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3179 return false;
3180 }
3181 // Apply Patterns
3182 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3183 return true;
3184 }
3185 case GICXXCustomAction_GICombiner102:{
3186 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3187 // Match Patterns
3188 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3189 return false;
3190 }
3191 // Apply Patterns
3192 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3193 return true;
3194 }
3195 case GICXXCustomAction_GICombiner103:{
3196 APInt GIMatchData_matchinfo;
3197 // Match Patterns
3198 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3199 return false;
3200 }
3201 // Apply Patterns
3202 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3203 return true;
3204 }
3205 case GICXXCustomAction_GICombiner104:{
3206 ConstantFP* GIMatchData_matchinfo;
3207 // Match Patterns
3208 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3209 return false;
3210 }
3211 // Apply Patterns
3212 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3213 return true;
3214 }
3215 case GICXXCustomAction_GICombiner105:{
3216 ConstantFP* GIMatchData_matchinfo;
3217 // Match Patterns
3218 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3219 return false;
3220 }
3221 // Apply Patterns
3222 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3223 return true;
3224 }
3225 case GICXXCustomAction_GICombiner106:{
3226 APInt GIMatchData_matchinfo;
3227 // Match Patterns
3228 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3229 return false;
3230 }
3231 // Apply Patterns
3232 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3233 return true;
3234 }
3235 case GICXXCustomAction_GICombiner107:{
3236 // Match Patterns
3237 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3238 return false;
3239 }
3240 // Apply Patterns
3241 Helper.applyUMulHToLShr(*State.MIs[0]);
3242 return true;
3243 }
3244 case GICXXCustomAction_GICombiner108:{
3245 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3246 // Match Patterns
3247 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3248 return false;
3249 }
3250 // Apply Patterns
3251 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3252 return true;
3253 }
3254 case GICXXCustomAction_GICombiner109:{
3255 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3256 // Match Patterns
3257 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3258 return false;
3259 }
3260 // Apply Patterns
3261 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3262 return true;
3263 }
3264 case GICXXCustomAction_GICombiner110:{
3265 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3266 // Match Patterns
3267 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3268 GIMatchData_info);}()) {
3269 return false;
3270 }
3271 // Apply Patterns
3272 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3273 return true;
3274 }
3275 case GICXXCustomAction_GICombiner111:{
3276 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3277 // Match Patterns
3278 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3279 GIMatchData_info);}()) {
3280 return false;
3281 }
3282 // Apply Patterns
3283 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3284 return true;
3285 }
3286 case GICXXCustomAction_GICombiner112:{
3287 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3288 // Match Patterns
3289 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3290 GIMatchData_info);}()) {
3291 return false;
3292 }
3293 // Apply Patterns
3294 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3295 return true;
3296 }
3297 case GICXXCustomAction_GICombiner113:{
3298 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3299 // Match Patterns
3300 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3301 *State.MIs[0], GIMatchData_info);}()) {
3302 return false;
3303 }
3304 // Apply Patterns
3305 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3306 return true;
3307 }
3308 case GICXXCustomAction_GICombiner114:{
3309 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3310 // Match Patterns
3311 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3312 GIMatchData_info);}()) {
3313 return false;
3314 }
3315 // Apply Patterns
3316 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3317 return true;
3318 }
3319 case GICXXCustomAction_GICombiner115:{
3320 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3321 // Match Patterns
3322 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3323 GIMatchData_info);}()) {
3324 return false;
3325 }
3326 // Apply Patterns
3327 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3328 return true;
3329 }
3330 case GICXXCustomAction_GICombiner116:{
3331 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3332 // Match Patterns
3333 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3334 GIMatchData_info);}()) {
3335 return false;
3336 }
3337 // Apply Patterns
3338 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3339 return true;
3340 }
3341 case GICXXCustomAction_GICombiner117:{
3342 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3343 // Match Patterns
3344 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3345 *State.MIs[0], GIMatchData_info);}()) {
3346 return false;
3347 }
3348 // Apply Patterns
3349 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3350 return true;
3351 }
3352 case GICXXCustomAction_GICombiner118:{
3353 unsigned GIMatchData_select_op_no;
3354 // Match Patterns
3355 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3356 return false;
3357 }
3358 // Apply Patterns
3359 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3360 return true;
3361 }
3362 case GICXXCustomAction_GICombiner119:{
3363 // Match Patterns
3364 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3365 return false;
3366 }
3367 // Apply Patterns
3368 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3369 return true;
3370 }
3371 case GICXXCustomAction_GICombiner120:{
3372 // Match Patterns
3373 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3374 return false;
3375 }
3376 // Apply Patterns
3377 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3378 return true;
3379 }
3380 case GICXXCustomAction_GICombiner121:{
3381 // Match Patterns
3382 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3383 return false;
3384 }
3385 // Apply Patterns
3386 Helper.applyUDivByPow2(*State.MIs[0]);
3387 return true;
3388 }
3389 case GICXXCustomAction_GICombiner122:{
3390 // Match Patterns
3391 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3392 return false;
3393 }
3394 // Apply Patterns
3395 Helper.applySDivByPow2(*State.MIs[0]);
3396 return true;
3397 }
3398 case GICXXCustomAction_GICombiner123:{
3399 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3400 // Match Patterns
3401 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3402 return false;
3403 }
3404 // Apply Patterns
3405 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3406 return true;
3407 }
3408 case GICXXCustomAction_GICombiner124:{
3409 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3410 // Match Patterns
3411 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3412 return false;
3413 }
3414 // Apply Patterns
3415 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3416 return true;
3417 }
3418 case GICXXCustomAction_GICombiner125:{
3419 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3420 // Match Patterns
3421 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3422 return false;
3423 }
3424 // Apply Patterns
3425 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3426 return true;
3427 }
3428 case GICXXCustomAction_GICombiner126:{
3429 Register GIMatchData_matchinfo;
3430 // Match Patterns
3431 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3432 return false;
3433 }
3434 // Apply Patterns
3435 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3436 return true;
3437 }
3438 case GICXXCustomAction_GICombiner127:{
3439 // Match Patterns
3440 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3441 return false;
3442 }
3443 // Apply Patterns
3444 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3445 return true;
3446 }
3447 case GICXXCustomAction_GICombiner128:{
3448 // Match Patterns
3449 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3450 return false;
3451 }
3452 // Apply Patterns
3453 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3454 return true;
3455 }
3456 case GICXXCustomAction_GICombiner129:{
3457 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3458 // Match Patterns
3459 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3460 return false;
3461 }
3462 // Apply Patterns
3463 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3464 return true;
3465 }
3466 case GICXXCustomAction_GICombiner130:{
3467 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3468 // Match Patterns
3469 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3470 return false;
3471 }
3472 // Apply Patterns
3473 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3474 return true;
3475 }
3476 case GICXXCustomAction_GICombiner131:{
3477 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3478 // Match Patterns
3479 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3480 return false;
3481 }
3482 // Apply Patterns
3483 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3484 return true;
3485 }
3486 case GICXXCustomAction_GICombiner132:{
3487 SmallVector<Register> GIMatchData_matchinfo;
3488 // Match Patterns
3489 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3490 return false;
3491 }
3492 // Apply Patterns
3493 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3494 return true;
3495 }
3496 case GICXXCustomAction_GICombiner133:{
3497 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3498 // Match Patterns
3499 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3500 return false;
3501 }
3502 // Apply Patterns
3503 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3504 return true;
3505 }
3506 case GICXXCustomAction_GICombiner134:{
3507 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3508 // Match Patterns
3509 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3510 return false;
3511 }
3512 // Apply Patterns
3513 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3514 return true;
3515 }
3516 case GICXXCustomAction_GICombiner135:{
3517 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3518 // Match Patterns
3519 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3520 return false;
3521 }
3522 // Apply Patterns
3523 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3524 return true;
3525 }
3526 case GICXXCustomAction_GICombiner136:{
3527 SmallVector<Register> GIMatchData_matchinfo;
3528 // Match Patterns
3529 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3530 return false;
3531 }
3532 // Apply Patterns
3533 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3534 return true;
3535 }
3536 case GICXXCustomAction_GICombiner137:{
3537 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3538 // Match Patterns
3539 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3540 return false;
3541 }
3542 // Apply Patterns
3543 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3544 return true;
3545 }
3546 case GICXXCustomAction_GICombiner138:{
3547 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3548 // Match Patterns
3549 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3550 return false;
3551 }
3552 // Apply Patterns
3553 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3554 return true;
3555 }
3556 case GICXXCustomAction_GICombiner139:{
3557 Register GIMatchData_matchinfo;
3558 // Match Patterns
3559 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3560 return false;
3561 }
3562 // Apply Patterns
3563 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3564 return true;
3565 }
3566 case GICXXCustomAction_GICombiner140:{
3567 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3568 // Match Patterns
3569 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*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_GICombiner141:{
3577 SmallVector<Register> GIMatchData_info;
3578 // Match Patterns
3579 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3580 return false;
3581 }
3582 // Apply Patterns
3583 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3584 return true;
3585 }
3586 case GICXXCustomAction_GICombiner142:{
3587 Register GIMatchData_src;
3588 // Match Patterns
3589 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3590 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3591 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3592 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3593 return false;
3594
3595 // Check counts match.
3596 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3597 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3598 if (NumMergeSrcs != NumUnmergeDefs)
3599 return false;
3600
3601 // Verify all merge sources match unmerge defs in order.
3602 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3603 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3604 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3605
3606 if (MergeSrc != UnmergeDef)
3607 return false;
3608
3609 if (!MRI.hasOneNonDBGUse(MergeSrc))
3610 return false;
3611 }
3612
3613 // Check size compatibility.
3614 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3615 LLT SrcTy = MRI.getType(GIMatchData_src);
3616 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3617 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3618 return false;
3619
3620 // Check bitcast legality.
3621 if (SrcTy != DstTy) {
3622 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3623 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3624 if (!Helper.isLegalOrBeforeLegalizer(Query))
3625 return false;
3626 }
3627
3628 return true;}()) {
3629 return false;
3630 }
3631 // Apply Patterns
3632 LLT SrcTy = MRI.getType(GIMatchData_src);
3633 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3634
3635 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3636
3637 if (SrcTy == DstTy) {
3638 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3639 } else {
3640 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3641 }
3642
3643 State.MIs[0]->eraseFromParent();
3644 return true;
3645 }
3646 case GICXXCustomAction_GICombiner143:{
3647 SmallVector<APInt, 8> GIMatchData_info;
3648 // Match Patterns
3649 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3650 return false;
3651 }
3652 // Apply Patterns
3653 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3654 return true;
3655 }
3656 case GICXXCustomAction_GICombiner144:{
3657 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3658 // Match Patterns
3659 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3660 return false;
3661 }
3662 // Apply Patterns
3663 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3664 return true;
3665 }
3666 case GICXXCustomAction_GICombiner145:{
3667 // Match Patterns
3668 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3669 return false;
3670 }
3671 // Apply Patterns
3672 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3673 return true;
3674 }
3675 case GICXXCustomAction_GICombiner146:{
3676 // Match Patterns
3677 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3678 return false;
3679 }
3680 // Apply Patterns
3681 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3682 return true;
3683 }
3684 case GICXXCustomAction_GICombiner147:{
3685 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3686 // Match Patterns
3687 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3688 return false;
3689 }
3690 // Apply Patterns
3691 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3692 return true;
3693 }
3694 case GICXXCustomAction_GICombiner148:{
3695 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3696 // Match Patterns
3697 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3698 return false;
3699 }
3700 // Apply Patterns
3701 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3702 return true;
3703 }
3704 case GICXXCustomAction_GICombiner149:{
3705 Register GIMatchData_unmergeSrc;
3706 // Match Patterns
3707 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3708 return false;
3709 }
3710 // Apply Patterns
3711 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3712 return true;
3713 }
3714 case GICXXCustomAction_GICombiner150:{
3715 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3716 // Match Patterns
3717 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3718 return false;
3719 }
3720 // Apply Patterns
3721 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3722 return true;
3723 }
3724 case GICXXCustomAction_GICombiner151:{
3725 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3726 // Match Patterns
3727 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3728 return false;
3729 }
3730 // Apply Patterns
3731 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3732 return true;
3733 }
3734 case GICXXCustomAction_GICombiner152:{
3735 Register GIMatchData_matchinfo;
3736 // Match Patterns
3737 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3738 return false;
3739 }
3740 // Apply Patterns
3741 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3742 return true;
3743 }
3744 case GICXXCustomAction_GICombiner153:{
3745 Register GIMatchData_matchinfo;
3746 // Match Patterns
3747 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3748 return false;
3749 }
3750 // Apply Patterns
3751 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3752 return true;
3753 }
3754 case GICXXCustomAction_GICombiner154:{
3755 LshrOfTruncOfLshr GIMatchData_matchinfo;
3756 // Match Patterns
3757 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3758 return false;
3759 }
3760 // Apply Patterns
3761 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3762 return true;
3763 }
3764 case GICXXCustomAction_GICombiner155:{
3765 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3766 // Match Patterns
3767 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3768 return false;
3769 }
3770 // Apply Patterns
3771 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3772 return true;
3773 }
3774 }
3775 llvm_unreachable("Unknown Apply Action");
3776}
3777#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3778#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
3779#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
3780#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)
3781#else
3782#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
3783#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3784#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)
3785#endif
3786const uint8_t *RISCVPreLegalizerCombinerImpl::getMatchTable() const {
3787 constexpr static uint8_t MatchTable0[] = {
3788 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(280), /*)*//*default:*//*Label 106*/ GIMT_Encode4(8178),
3789 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1050), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3790 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1062),
3791 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1795),
3792 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2203),
3793 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(2409),
3794 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2511),
3795 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(2624),
3796 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(2709), GIMT_Encode4(0), GIMT_Encode4(0),
3797 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(2816),
3798 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3097),
3799 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(3530), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3800 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(3631), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3801 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(3643), GIMT_Encode4(0),
3802 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(3710),
3803 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(3787),
3804 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(3852),
3805 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(3864),
3806 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(3876),
3807 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(3919),
3808 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(3952),
3809 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(3995), GIMT_Encode4(0), GIMT_Encode4(0),
3810 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(4059),
3811 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(4081), GIMT_Encode4(0), GIMT_Encode4(0),
3812 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(4103), GIMT_Encode4(0), GIMT_Encode4(0),
3813 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(4125),
3814 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(4137),
3815 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(4149), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3816 /* 350 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(4161), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3817 /* 486 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(4173),
3818 /* 490 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(4301), GIMT_Encode4(0), GIMT_Encode4(0),
3819 /* 502 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(4713), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3820 /* 522 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(4746),
3821 /* 526 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(4821),
3822 /* 530 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(4887),
3823 /* 534 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(5017),
3824 /* 538 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(5215),
3825 /* 542 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(5396),
3826 /* 546 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(5559),
3827 /* 550 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(5602),
3828 /* 554 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(5645),
3829 /* 558 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(5669),
3830 /* 562 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(5693),
3831 /* 566 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(5738), GIMT_Encode4(0), GIMT_Encode4(0),
3832 /* 578 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(5750),
3833 /* 582 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(5845),
3834 /* 586 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(5868),
3835 /* 590 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(5880),
3836 /* 594 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(5892),
3837 /* 598 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(5904),
3838 /* 602 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(5927),
3839 /* 606 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(5939),
3840 /* 610 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(5951),
3841 /* 614 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(5963),
3842 /* 618 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(5997),
3843 /* 622 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(6031),
3844 /* 626 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(6054),
3845 /* 630 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(6066),
3846 /* 634 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(6078), GIMT_Encode4(0), GIMT_Encode4(0),
3847 /* 646 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(6090),
3848 /* 650 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(6113),
3849 /* 654 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(6136),
3850 /* 658 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(6148),
3851 /* 662 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(6160),
3852 /* 666 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(6172), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3853 /* 686 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(6184),
3854 /* 690 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(6325),
3855 /* 694 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(6414),
3856 /* 698 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(6502),
3857 /* 702 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(6525),
3858 /* 706 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(6548),
3859 /* 710 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(6593), GIMT_Encode4(0), GIMT_Encode4(0),
3860 /* 722 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(6605), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3861 /* 742 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(6627), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3862 /* 758 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(6649),
3863 /* 762 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(6700),
3864 /* 766 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(6722),
3865 /* 770 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(6765),
3866 /* 774 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(6787),
3867 /* 778 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(6809),
3868 /* 782 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(6836), GIMT_Encode4(0), GIMT_Encode4(0),
3869 /* 794 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(6863), GIMT_Encode4(0), GIMT_Encode4(0),
3870 /* 806 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 81*/ GIMT_Encode4(6942),
3871 /* 810 */ /*TargetOpcode::G_FMINNUM*//*Label 82*/ GIMT_Encode4(6972),
3872 /* 814 */ /*TargetOpcode::G_FMAXNUM*//*Label 83*/ GIMT_Encode4(7006),
3873 /* 818 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 84*/ GIMT_Encode4(7040),
3874 /* 822 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 85*/ GIMT_Encode4(7052),
3875 /* 826 */ /*TargetOpcode::G_FMINIMUM*//*Label 86*/ GIMT_Encode4(7064),
3876 /* 830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 87*/ GIMT_Encode4(7098), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3877 /* 874 */ /*TargetOpcode::G_PTR_ADD*//*Label 88*/ GIMT_Encode4(7132), GIMT_Encode4(0),
3878 /* 882 */ /*TargetOpcode::G_SMIN*//*Label 89*/ GIMT_Encode4(7222),
3879 /* 886 */ /*TargetOpcode::G_SMAX*//*Label 90*/ GIMT_Encode4(7256),
3880 /* 890 */ /*TargetOpcode::G_UMIN*//*Label 91*/ GIMT_Encode4(7290),
3881 /* 894 */ /*TargetOpcode::G_UMAX*//*Label 92*/ GIMT_Encode4(7324),
3882 /* 898 */ /*TargetOpcode::G_ABS*//*Label 93*/ GIMT_Encode4(7358), GIMT_Encode4(0), GIMT_Encode4(0),
3883 /* 910 */ /*TargetOpcode::G_BR*//*Label 94*/ GIMT_Encode4(7370), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3884 /* 930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 95*/ GIMT_Encode4(7382),
3885 /* 934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(7512),
3886 /* 938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 97*/ GIMT_Encode4(7889), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3887 /* 962 */ /*TargetOpcode::G_CTLZ*//*Label 98*/ GIMT_Encode4(7955),
3888 /* 966 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 99*/ GIMT_Encode4(7967), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3889 /* 982 */ /*TargetOpcode::G_BITREVERSE*//*Label 100*/ GIMT_Encode4(7979),
3890 /* 986 */ /*TargetOpcode::G_FCEIL*//*Label 101*/ GIMT_Encode4(8068), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3891 /* 1034 */ /*TargetOpcode::G_FSQRT*//*Label 102*/ GIMT_Encode4(8090),
3892 /* 1038 */ /*TargetOpcode::G_FFLOOR*//*Label 103*/ GIMT_Encode4(8112),
3893 /* 1042 */ /*TargetOpcode::G_FRINT*//*Label 104*/ GIMT_Encode4(8134),
3894 /* 1046 */ /*TargetOpcode::G_FNEARBYINT*//*Label 105*/ GIMT_Encode4(8156),
3895 /* 1050 */ // Label 0: @1050
3896 /* 1050 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1061), // Rule ID 15 //
3897 /* 1055 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
3898 /* 1058 */ // MIs[0] d
3899 /* 1058 */ // No operand predicates
3900 /* 1058 */ // MIs[0] s
3901 /* 1058 */ // No operand predicates
3902 /* 1058 */ // Combiner Rule #15: copy_prop
3903 /* 1058 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
3904 /* 1061 */ // Label 107: @1061
3905 /* 1061 */ GIM_Reject,
3906 /* 1062 */ // Label 1: @1062
3907 /* 1062 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1073), // Rule ID 18 //
3908 /* 1067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
3909 /* 1070 */ // Combiner Rule #18: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
3910 /* 1070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3911 /* 1073 */ // Label 108: @1073
3912 /* 1073 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1084), // Rule ID 96 //
3913 /* 1078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
3914 /* 1081 */ // Combiner Rule #80: propagate_undef_any_op; wip_match_opcode 'G_ADD'
3915 /* 1081 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
3916 /* 1084 */ // Label 109: @1084
3917 /* 1084 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1095), // Rule ID 145 //
3918 /* 1089 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3919 /* 1092 */ // Combiner Rule #106: simplify_add_to_sub; wip_match_opcode 'G_ADD'
3920 /* 1092 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3921 /* 1095 */ // Label 110: @1095
3922 /* 1095 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1106), // Rule ID 247 //
3923 /* 1100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
3924 /* 1103 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_ADD'
3925 /* 1103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
3926 /* 1106 */ // Label 111: @1106
3927 /* 1106 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1117), // Rule ID 291 //
3928 /* 1111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
3929 /* 1114 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_ADD'
3930 /* 1114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
3931 /* 1117 */ // Label 112: @1117
3932 /* 1117 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1128), // Rule ID 327 //
3933 /* 1122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
3934 /* 1125 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
3935 /* 1125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
3936 /* 1128 */ // Label 113: @1128
3937 /* 1128 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1216), // Rule ID 389 //
3938 /* 1133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
3939 /* 1136 */ // MIs[0] dst
3940 /* 1136 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
3941 /* 1140 */ // MIs[0] __add_shift_match_0.shl_neg
3942 /* 1140 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3943 /* 1144 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
3944 /* 1148 */ // MIs[1] __add_shift_match_0.neg_y
3945 /* 1148 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
3946 /* 1152 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
3947 /* 1156 */ // MIs[2] __add_shift_match_0.zero
3948 /* 1156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
3949 /* 1160 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3950 /* 1164 */ // MIs[3] Operand 1
3951 /* 1164 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
3952 /* 1175 */ // MIs[2] y
3953 /* 1175 */ // No operand predicates
3954 /* 1175 */ // MIs[1] n
3955 /* 1175 */ // No operand predicates
3956 /* 1175 */ // MIs[0] x
3957 /* 1175 */ // No operand predicates
3958 /* 1175 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
3959 /* 1179 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
3960 /* 1181 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
3961 /* 1184 */ // Combiner Rule #238: add_shift @ [__add_shift_match_0[1]]
3962 /* 1184 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
3963 /* 1187 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
3964 /* 1192 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
3965 /* 1196 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
3966 /* 1200 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
3967 /* 1204 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
3968 /* 1208 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
3969 /* 1212 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
3970 /* 1215 */ GIR_EraseRootFromParent_Done,
3971 /* 1216 */ // Label 114: @1216
3972 /* 1216 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1304), // Rule ID 388 //
3973 /* 1221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
3974 /* 1224 */ // MIs[0] dst
3975 /* 1224 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
3976 /* 1228 */ // MIs[0] x
3977 /* 1228 */ // No operand predicates
3978 /* 1228 */ // MIs[0] __add_shift_match_0.shl_neg
3979 /* 1228 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3980 /* 1232 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
3981 /* 1236 */ // MIs[1] __add_shift_match_0.neg_y
3982 /* 1236 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
3983 /* 1240 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
3984 /* 1244 */ // MIs[2] __add_shift_match_0.zero
3985 /* 1244 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
3986 /* 1248 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3987 /* 1252 */ // MIs[3] Operand 1
3988 /* 1252 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
3989 /* 1263 */ // MIs[2] y
3990 /* 1263 */ // No operand predicates
3991 /* 1263 */ // MIs[1] n
3992 /* 1263 */ // No operand predicates
3993 /* 1263 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
3994 /* 1267 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
3995 /* 1269 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
3996 /* 1272 */ // Combiner Rule #238: add_shift @ [__add_shift_match_0[0]]
3997 /* 1272 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
3998 /* 1275 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
3999 /* 1280 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4000 /* 1284 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4001 /* 1288 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4002 /* 1292 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4003 /* 1296 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4004 /* 1300 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4005 /* 1303 */ GIR_EraseRootFromParent_Done,
4006 /* 1304 */ // Label 115: @1304
4007 /* 1304 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1338), // Rule ID 2 //
4008 /* 1309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4009 /* 1312 */ // MIs[0] root
4010 /* 1312 */ // No operand predicates
4011 /* 1312 */ // MIs[0] sub
4012 /* 1312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4013 /* 1316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4014 /* 1320 */ // MIs[1] Operand 1
4015 /* 1320 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4016 /* 1324 */ // MIs[1] A
4017 /* 1324 */ // No operand predicates
4018 /* 1324 */ // MIs[0] B
4019 /* 1324 */ // No operand predicates
4020 /* 1324 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4021 /* 1326 */ // Combiner Rule #2: ZeroMinusAPlusB
4022 /* 1326 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4023 /* 1329 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4024 /* 1331 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4025 /* 1333 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4026 /* 1337 */ GIR_EraseRootFromParent_Done,
4027 /* 1338 */ // Label 116: @1338
4028 /* 1338 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1375), // Rule ID 14 //
4029 /* 1343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4030 /* 1346 */ // MIs[0] root
4031 /* 1346 */ // No operand predicates
4032 /* 1346 */ // MIs[0] sub
4033 /* 1346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4034 /* 1350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4035 /* 1354 */ // MIs[1] A
4036 /* 1354 */ // No operand predicates
4037 /* 1354 */ // MIs[1] c1
4038 /* 1354 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4039 /* 1358 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4040 /* 1362 */ // MIs[2] imm1
4041 /* 1362 */ // No operand predicates
4042 /* 1362 */ // MIs[0] c2
4043 /* 1362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4044 /* 1366 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4045 /* 1370 */ // MIs[3] imm2
4046 /* 1370 */ // No operand predicates
4047 /* 1370 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4048 /* 1372 */ // Combiner Rule #14: AMinusC1PlusC2
4049 /* 1372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4050 /* 1375 */ // Label 117: @1375
4051 /* 1375 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1409), // Rule ID 5 //
4052 /* 1380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4053 /* 1383 */ // MIs[0] root
4054 /* 1383 */ // No operand predicates
4055 /* 1383 */ // MIs[0] sub
4056 /* 1383 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4057 /* 1387 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4058 /* 1391 */ // MIs[1] B
4059 /* 1391 */ // No operand predicates
4060 /* 1391 */ // MIs[1] A
4061 /* 1391 */ // No operand predicates
4062 /* 1391 */ // MIs[0] A
4063 /* 1391 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4064 /* 1396 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4065 /* 1401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4066 /* 1403 */ // Combiner Rule #5: BMinusAPlusA
4067 /* 1403 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4068 /* 1408 */ GIR_EraseRootFromParent_Done,
4069 /* 1409 */ // Label 118: @1409
4070 /* 1409 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1443), // Rule ID 134 //
4071 /* 1414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4072 /* 1417 */ // MIs[0] dst
4073 /* 1417 */ // No operand predicates
4074 /* 1417 */ // MIs[0] __add_sub_reg_match_0.tmp
4075 /* 1417 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4076 /* 1421 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4077 /* 1425 */ // MIs[1] src
4078 /* 1425 */ // No operand predicates
4079 /* 1425 */ // MIs[1] __add_sub_reg_match_0.x
4080 /* 1425 */ // No operand predicates
4081 /* 1425 */ // MIs[0] __add_sub_reg_match_0.x
4082 /* 1425 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4083 /* 1430 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4084 /* 1435 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4085 /* 1437 */ // Combiner Rule #96: add_sub_reg @ [__add_sub_reg_match_0[1]]
4086 /* 1437 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4087 /* 1442 */ GIR_EraseRootFromParent_Done,
4088 /* 1443 */ // Label 119: @1443
4089 /* 1443 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1488), // Rule ID 7 //
4090 /* 1448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4091 /* 1451 */ // MIs[0] root
4092 /* 1451 */ // No operand predicates
4093 /* 1451 */ // MIs[0] sub1
4094 /* 1451 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4095 /* 1455 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4096 /* 1459 */ // MIs[1] A
4097 /* 1459 */ // No operand predicates
4098 /* 1459 */ // MIs[1] B
4099 /* 1459 */ // No operand predicates
4100 /* 1459 */ // MIs[0] sub2
4101 /* 1459 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4102 /* 1463 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4103 /* 1467 */ // MIs[2] B
4104 /* 1467 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4105 /* 1472 */ // MIs[2] C
4106 /* 1472 */ // No operand predicates
4107 /* 1472 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4108 /* 1474 */ // Combiner Rule #7: AMinusBPlusBMinusC
4109 /* 1474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4110 /* 1477 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4111 /* 1479 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4112 /* 1483 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4113 /* 1487 */ GIR_EraseRootFromParent_Done,
4114 /* 1488 */ // Label 120: @1488
4115 /* 1488 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1533), // Rule ID 6 //
4116 /* 1493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4117 /* 1496 */ // MIs[0] root
4118 /* 1496 */ // No operand predicates
4119 /* 1496 */ // MIs[0] sub1
4120 /* 1496 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4121 /* 1500 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4122 /* 1504 */ // MIs[1] A
4123 /* 1504 */ // No operand predicates
4124 /* 1504 */ // MIs[1] B
4125 /* 1504 */ // No operand predicates
4126 /* 1504 */ // MIs[0] sub2
4127 /* 1504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4128 /* 1508 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4129 /* 1512 */ // MIs[2] C
4130 /* 1512 */ // No operand predicates
4131 /* 1512 */ // MIs[2] A
4132 /* 1512 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4133 /* 1517 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4134 /* 1519 */ // Combiner Rule #6: AMinusBPlusCMinusA
4135 /* 1519 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4136 /* 1522 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4137 /* 1524 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4138 /* 1528 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4139 /* 1532 */ GIR_EraseRootFromParent_Done,
4140 /* 1533 */ // Label 121: @1533
4141 /* 1533 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1568), // Rule ID 41 //
4142 /* 1538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
4143 /* 1541 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4144 /* 1547 */ // MIs[0] root
4145 /* 1547 */ // No operand predicates
4146 /* 1547 */ // MIs[0] left
4147 /* 1547 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4148 /* 1551 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4149 /* 1555 */ // MIs[1] imm1
4150 /* 1555 */ // No operand predicates
4151 /* 1555 */ // MIs[0] right
4152 /* 1555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4153 /* 1559 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4154 /* 1563 */ // MIs[2] imm2
4155 /* 1563 */ // No operand predicates
4156 /* 1563 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4157 /* 1565 */ // Combiner Rule #39: add_of_vscale
4158 /* 1565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4159 /* 1568 */ // Label 122: @1568
4160 /* 1568 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1602), // Rule ID 3 //
4161 /* 1573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4162 /* 1576 */ // MIs[0] root
4163 /* 1576 */ // No operand predicates
4164 /* 1576 */ // MIs[0] A
4165 /* 1576 */ // No operand predicates
4166 /* 1576 */ // MIs[0] sub
4167 /* 1576 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4168 /* 1580 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4169 /* 1584 */ // MIs[1] Operand 1
4170 /* 1584 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4171 /* 1588 */ // MIs[1] B
4172 /* 1588 */ // No operand predicates
4173 /* 1588 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4174 /* 1590 */ // Combiner Rule #3: APlusZeroMinusB
4175 /* 1590 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4176 /* 1593 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4177 /* 1595 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4178 /* 1597 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4179 /* 1601 */ GIR_EraseRootFromParent_Done,
4180 /* 1602 */ // Label 123: @1602
4181 /* 1602 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1636), // Rule ID 4 //
4182 /* 1607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4183 /* 1610 */ // MIs[0] root
4184 /* 1610 */ // No operand predicates
4185 /* 1610 */ // MIs[0] A
4186 /* 1610 */ // No operand predicates
4187 /* 1610 */ // MIs[0] sub
4188 /* 1610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4189 /* 1614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4190 /* 1618 */ // MIs[1] B
4191 /* 1618 */ // No operand predicates
4192 /* 1618 */ // MIs[1] A
4193 /* 1618 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4194 /* 1623 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4195 /* 1628 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4196 /* 1630 */ // Combiner Rule #4: APlusBMinusB
4197 /* 1630 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4198 /* 1635 */ GIR_EraseRootFromParent_Done,
4199 /* 1636 */ // Label 124: @1636
4200 /* 1636 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1670), // Rule ID 133 //
4201 /* 1641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4202 /* 1644 */ // MIs[0] dst
4203 /* 1644 */ // No operand predicates
4204 /* 1644 */ // MIs[0] __add_sub_reg_match_0.x
4205 /* 1644 */ // No operand predicates
4206 /* 1644 */ // MIs[0] __add_sub_reg_match_0.tmp
4207 /* 1644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4208 /* 1648 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4209 /* 1652 */ // MIs[1] src
4210 /* 1652 */ // No operand predicates
4211 /* 1652 */ // MIs[1] __add_sub_reg_match_0.x
4212 /* 1652 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4213 /* 1657 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4214 /* 1662 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4215 /* 1664 */ // Combiner Rule #96: add_sub_reg @ [__add_sub_reg_match_0[0]]
4216 /* 1664 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4217 /* 1669 */ GIR_EraseRootFromParent_Done,
4218 /* 1670 */ // Label 125: @1670
4219 /* 1670 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1715), // Rule ID 8 //
4220 /* 1675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4221 /* 1678 */ // MIs[0] root
4222 /* 1678 */ // No operand predicates
4223 /* 1678 */ // MIs[0] A
4224 /* 1678 */ // No operand predicates
4225 /* 1678 */ // MIs[0] sub1
4226 /* 1678 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4227 /* 1682 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4228 /* 1686 */ // MIs[1] B
4229 /* 1686 */ // No operand predicates
4230 /* 1686 */ // MIs[1] add1
4231 /* 1686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4232 /* 1690 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4233 /* 1694 */ // MIs[2] A
4234 /* 1694 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4235 /* 1699 */ // MIs[2] C
4236 /* 1699 */ // No operand predicates
4237 /* 1699 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4238 /* 1701 */ // Combiner Rule #8: APlusBMinusAplusC
4239 /* 1701 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4240 /* 1704 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4241 /* 1706 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4242 /* 1710 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4243 /* 1714 */ GIR_EraseRootFromParent_Done,
4244 /* 1715 */ // Label 126: @1715
4245 /* 1715 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1760), // Rule ID 9 //
4246 /* 1720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4247 /* 1723 */ // MIs[0] root
4248 /* 1723 */ // No operand predicates
4249 /* 1723 */ // MIs[0] A
4250 /* 1723 */ // No operand predicates
4251 /* 1723 */ // MIs[0] sub1
4252 /* 1723 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4253 /* 1727 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4254 /* 1731 */ // MIs[1] B
4255 /* 1731 */ // No operand predicates
4256 /* 1731 */ // MIs[1] add1
4257 /* 1731 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4258 /* 1735 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4259 /* 1739 */ // MIs[2] C
4260 /* 1739 */ // No operand predicates
4261 /* 1739 */ // MIs[2] A
4262 /* 1739 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4263 /* 1744 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4264 /* 1746 */ // Combiner Rule #9: APlusBMinusCPlusA
4265 /* 1746 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4266 /* 1749 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4267 /* 1751 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4268 /* 1755 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4269 /* 1759 */ GIR_EraseRootFromParent_Done,
4270 /* 1760 */ // Label 127: @1760
4271 /* 1760 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1783), // Rule ID 107 //
4272 /* 1765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4273 /* 1768 */ // MIs[0] dst
4274 /* 1768 */ // No operand predicates
4275 /* 1768 */ // MIs[0] lhs
4276 /* 1768 */ // No operand predicates
4277 /* 1768 */ // MIs[0] Operand 2
4278 /* 1768 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4279 /* 1772 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4280 /* 1777 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[1]]
4281 /* 1777 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4282 /* 1782 */ GIR_EraseRootFromParent_Done,
4283 /* 1783 */ // Label 128: @1783
4284 /* 1783 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1794), // Rule ID 153 //
4285 /* 1788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
4286 /* 1791 */ // MIs[0] root
4287 /* 1791 */ // No operand predicates
4288 /* 1791 */ // MIs[0] src1
4289 /* 1791 */ // No operand predicates
4290 /* 1791 */ // MIs[0] src2
4291 /* 1791 */ // No operand predicates
4292 /* 1791 */ // Combiner Rule #110: reassoc_comm_binops
4293 /* 1791 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4294 /* 1794 */ // Label 129: @1794
4295 /* 1794 */ GIM_Reject,
4296 /* 1795 */ // Label 2: @1795
4297 /* 1795 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1806), // Rule ID 97 //
4298 /* 1800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
4299 /* 1803 */ // Combiner Rule #80: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4300 /* 1803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4301 /* 1806 */ // Label 130: @1806
4302 /* 1806 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1817), // Rule ID 255 //
4303 /* 1811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4304 /* 1814 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SUB'
4305 /* 1814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4306 /* 1817 */ // Label 131: @1817
4307 /* 1817 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1828), // Rule ID 292 //
4308 /* 1822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4309 /* 1825 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SUB'
4310 /* 1825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4311 /* 1828 */ // Label 132: @1828
4312 /* 1828 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1839), // Rule ID 324 //
4313 /* 1833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
4314 /* 1836 */ // Combiner Rule #203: sub_add_reg; wip_match_opcode 'G_SUB'
4315 /* 1836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4316 /* 1839 */ // Label 133: @1839
4317 /* 1839 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1850), // Rule ID 358 //
4318 /* 1844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
4319 /* 1847 */ // Combiner Rule #210: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4320 /* 1847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4321 /* 1850 */ // Label 134: @1850
4322 /* 1850 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1895), // Rule ID 0 //
4323 /* 1855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4324 /* 1858 */ // MIs[0] root
4325 /* 1858 */ // No operand predicates
4326 /* 1858 */ // MIs[0] add1
4327 /* 1858 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4328 /* 1862 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4329 /* 1866 */ // MIs[1] A
4330 /* 1866 */ // No operand predicates
4331 /* 1866 */ // MIs[1] sub1
4332 /* 1866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4333 /* 1870 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4334 /* 1874 */ // MIs[2] B
4335 /* 1874 */ // No operand predicates
4336 /* 1874 */ // MIs[2] C
4337 /* 1874 */ // No operand predicates
4338 /* 1874 */ // MIs[0] B
4339 /* 1874 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4340 /* 1879 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4341 /* 1881 */ // Combiner Rule #0: APlusBMinusCMinusB
4342 /* 1881 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4343 /* 1884 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4344 /* 1886 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4345 /* 1890 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4346 /* 1894 */ GIR_EraseRootFromParent_Done,
4347 /* 1895 */ // Label 135: @1895
4348 /* 1895 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1932), // Rule ID 10 //
4349 /* 1900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4350 /* 1903 */ // MIs[0] root
4351 /* 1903 */ // No operand predicates
4352 /* 1903 */ // MIs[0] add
4353 /* 1903 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4354 /* 1907 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4355 /* 1911 */ // MIs[1] A
4356 /* 1911 */ // No operand predicates
4357 /* 1911 */ // MIs[1] c1
4358 /* 1911 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4359 /* 1915 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4360 /* 1919 */ // MIs[2] imm1
4361 /* 1919 */ // No operand predicates
4362 /* 1919 */ // MIs[0] c2
4363 /* 1919 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4364 /* 1923 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4365 /* 1927 */ // MIs[3] imm2
4366 /* 1927 */ // No operand predicates
4367 /* 1927 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4368 /* 1929 */ // Combiner Rule #10: APlusC1MinusC2
4369 /* 1929 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4370 /* 1932 */ // Label 136: @1932
4371 /* 1932 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1969), // Rule ID 13 //
4372 /* 1937 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
4373 /* 1940 */ // MIs[0] root
4374 /* 1940 */ // No operand predicates
4375 /* 1940 */ // MIs[0] sub1
4376 /* 1940 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4377 /* 1944 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4378 /* 1948 */ // MIs[1] c1
4379 /* 1948 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4380 /* 1952 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4381 /* 1956 */ // MIs[2] imm1
4382 /* 1956 */ // No operand predicates
4383 /* 1956 */ // MIs[1] A
4384 /* 1956 */ // No operand predicates
4385 /* 1956 */ // MIs[0] c2
4386 /* 1956 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4387 /* 1960 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4388 /* 1964 */ // MIs[3] imm2
4389 /* 1964 */ // No operand predicates
4390 /* 1964 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4391 /* 1966 */ // Combiner Rule #13: C1Minus2MinusC2
4392 /* 1966 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4393 /* 1969 */ // Label 137: @1969
4394 /* 1969 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2014), // Rule ID 1 //
4395 /* 1974 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4396 /* 1977 */ // MIs[0] root
4397 /* 1977 */ // No operand predicates
4398 /* 1977 */ // MIs[0] sub2
4399 /* 1977 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4400 /* 1981 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4401 /* 1985 */ // MIs[1] A
4402 /* 1985 */ // No operand predicates
4403 /* 1985 */ // MIs[1] sub1
4404 /* 1985 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4405 /* 1989 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4406 /* 1993 */ // MIs[2] B
4407 /* 1993 */ // No operand predicates
4408 /* 1993 */ // MIs[2] C
4409 /* 1993 */ // No operand predicates
4410 /* 1993 */ // MIs[0] C
4411 /* 1993 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4412 /* 1998 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4413 /* 2000 */ // Combiner Rule #1: AMinusBMinusCMinusC
4414 /* 2000 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4415 /* 2003 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4416 /* 2005 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4417 /* 2009 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4418 /* 2013 */ GIR_EraseRootFromParent_Done,
4419 /* 2014 */ // Label 138: @2014
4420 /* 2014 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2051), // Rule ID 12 //
4421 /* 2019 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4422 /* 2022 */ // MIs[0] root
4423 /* 2022 */ // No operand predicates
4424 /* 2022 */ // MIs[0] sub1
4425 /* 2022 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4426 /* 2026 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4427 /* 2030 */ // MIs[1] A
4428 /* 2030 */ // No operand predicates
4429 /* 2030 */ // MIs[1] c1
4430 /* 2030 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4431 /* 2034 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4432 /* 2038 */ // MIs[2] imm1
4433 /* 2038 */ // No operand predicates
4434 /* 2038 */ // MIs[0] c2
4435 /* 2038 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4436 /* 2042 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4437 /* 2046 */ // MIs[3] imm2
4438 /* 2046 */ // No operand predicates
4439 /* 2046 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4440 /* 2048 */ // Combiner Rule #12: AMinusC1MinusC2
4441 /* 2048 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4442 /* 2051 */ // Label 139: @2051
4443 /* 2051 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2094), // Rule ID 163 //
4444 /* 2056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4445 /* 2059 */ // MIs[0] dst
4446 /* 2059 */ // No operand predicates
4447 /* 2059 */ // MIs[0] Operand 1
4448 /* 2059 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4449 /* 2063 */ // MIs[0] and
4450 /* 2063 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4451 /* 2067 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4452 /* 2071 */ // MIs[1] x
4453 /* 2071 */ // No operand predicates
4454 /* 2071 */ // MIs[1] Operand 2
4455 /* 2071 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4456 /* 2075 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
4457 /* 2079 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4458 /* 2081 */ // Combiner Rule #120: neg_and_one_to_sext_inreg
4459 /* 2081 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4460 /* 2084 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4461 /* 2086 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4462 /* 2090 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4463 /* 2093 */ GIR_EraseRootFromParent_Done,
4464 /* 2094 */ // Label 140: @2094
4465 /* 2094 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2131), // Rule ID 11 //
4466 /* 2099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4467 /* 2102 */ // MIs[0] root
4468 /* 2102 */ // No operand predicates
4469 /* 2102 */ // MIs[0] c2
4470 /* 2102 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4471 /* 2106 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4472 /* 2110 */ // MIs[1] imm2
4473 /* 2110 */ // No operand predicates
4474 /* 2110 */ // MIs[0] add
4475 /* 2110 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4476 /* 2114 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4477 /* 2118 */ // MIs[2] A
4478 /* 2118 */ // No operand predicates
4479 /* 2118 */ // MIs[2] c1
4480 /* 2118 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4481 /* 2122 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4482 /* 2126 */ // MIs[3] imm1
4483 /* 2126 */ // No operand predicates
4484 /* 2126 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4485 /* 2128 */ // Combiner Rule #11: C2MinusAPlusC1
4486 /* 2128 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4487 /* 2131 */ // Label 141: @2131
4488 /* 2131 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2158), // Rule ID 44 //
4489 /* 2136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
4490 /* 2139 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4491 /* 2145 */ // MIs[0] root
4492 /* 2145 */ // No operand predicates
4493 /* 2145 */ // MIs[0] x
4494 /* 2145 */ // No operand predicates
4495 /* 2145 */ // MIs[0] right
4496 /* 2145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4497 /* 2149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4498 /* 2153 */ // MIs[1] imm
4499 /* 2153 */ // No operand predicates
4500 /* 2153 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4501 /* 2155 */ // Combiner Rule #42: sub_of_vscale
4502 /* 2155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4503 /* 2158 */ // Label 142: @2158
4504 /* 2158 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2181), // Rule ID 106 //
4505 /* 2163 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
4506 /* 2166 */ // MIs[0] dst
4507 /* 2166 */ // No operand predicates
4508 /* 2166 */ // MIs[0] lhs
4509 /* 2166 */ // No operand predicates
4510 /* 2166 */ // MIs[0] Operand 2
4511 /* 2166 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4512 /* 2170 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4513 /* 2175 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[0]]
4514 /* 2175 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4515 /* 2180 */ GIR_EraseRootFromParent_Done,
4516 /* 2181 */ // Label 143: @2181
4517 /* 2181 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2202), // Rule ID 17 //
4518 /* 2186 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4519 /* 2189 */ // MIs[0] d
4520 /* 2189 */ // No operand predicates
4521 /* 2189 */ // MIs[0] op1
4522 /* 2189 */ // No operand predicates
4523 /* 2189 */ // MIs[0] c
4524 /* 2189 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4525 /* 2193 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4526 /* 2197 */ // MIs[1] imm
4527 /* 2197 */ // No operand predicates
4528 /* 2197 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4529 /* 2199 */ // Combiner Rule #17: sub_to_add
4530 /* 2199 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4531 /* 2202 */ // Label 144: @2202
4532 /* 2202 */ GIM_Reject,
4533 /* 2203 */ // Label 3: @2203
4534 /* 2203 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2214), // Rule ID 80 //
4535 /* 2208 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4536 /* 2211 */ // Combiner Rule #74: undef_to_int_zero; wip_match_opcode 'G_MUL'
4537 /* 2211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4538 /* 2214 */ // Label 145: @2214
4539 /* 2214 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2225), // Rule ID 252 //
4540 /* 2219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4541 /* 2222 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_MUL'
4542 /* 2222 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4543 /* 2225 */ // Label 146: @2225
4544 /* 2225 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2236), // Rule ID 328 //
4545 /* 2230 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
4546 /* 2233 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4547 /* 2233 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4548 /* 2236 */ // Label 147: @2236
4549 /* 2236 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2276), // Rule ID 19 //
4550 /* 2241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4551 /* 2244 */ // MIs[0] dst
4552 /* 2244 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4553 /* 2248 */ // MIs[0] x
4554 /* 2248 */ // No operand predicates
4555 /* 2248 */ // MIs[0] Operand 2
4556 /* 2248 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
4557 /* 2252 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4558 /* 2255 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4559 /* 2265 */ // Combiner Rule #19: mul_by_neg_one
4560 /* 2265 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4561 /* 2268 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4562 /* 2270 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4563 /* 2273 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4564 /* 2275 */ GIR_EraseRootFromParent_Done,
4565 /* 2276 */ // Label 148: @2276
4566 /* 2276 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2311), // Rule ID 42 //
4567 /* 2281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
4568 /* 2284 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4569 /* 2290 */ // MIs[0] root
4570 /* 2290 */ // No operand predicates
4571 /* 2290 */ // MIs[0] left
4572 /* 2290 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4573 /* 2294 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4574 /* 2298 */ // MIs[1] scale
4575 /* 2298 */ // No operand predicates
4576 /* 2298 */ // MIs[0] x
4577 /* 2298 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4578 /* 2302 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4579 /* 2306 */ // MIs[2] imm1
4580 /* 2306 */ // No operand predicates
4581 /* 2306 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4582 /* 2308 */ // Combiner Rule #40: mul_of_vscale
4583 /* 2308 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4584 /* 2311 */ // Label 149: @2311
4585 /* 2311 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2351), // Rule ID 125 //
4586 /* 2316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4587 /* 2319 */ // MIs[0] dst
4588 /* 2319 */ // No operand predicates
4589 /* 2319 */ // MIs[0] zero
4590 /* 2319 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4591 /* 2323 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4592 /* 2327 */ // MIs[1] Operand 1
4593 /* 2327 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4594 /* 2338 */ // MIs[0] rhs
4595 /* 2338 */ // No operand predicates
4596 /* 2338 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4597 /* 2343 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4598 /* 2345 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
4599 /* 2345 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4600 /* 2350 */ GIR_EraseRootFromParent_Done,
4601 /* 2351 */ // Label 150: @2351
4602 /* 2351 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2374), // Rule ID 126 //
4603 /* 2356 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4604 /* 2359 */ // MIs[0] dst
4605 /* 2359 */ // No operand predicates
4606 /* 2359 */ // MIs[0] lhs
4607 /* 2359 */ // No operand predicates
4608 /* 2359 */ // MIs[0] zero
4609 /* 2359 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4610 /* 2363 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4611 /* 2368 */ // Combiner Rule #89: binop_right_to_zero
4612 /* 2368 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4613 /* 2373 */ GIR_EraseRootFromParent_Done,
4614 /* 2374 */ // Label 151: @2374
4615 /* 2374 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2397), // Rule ID 131 //
4616 /* 2379 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
4617 /* 2382 */ // MIs[0] dst
4618 /* 2382 */ // No operand predicates
4619 /* 2382 */ // MIs[0] x
4620 /* 2382 */ // No operand predicates
4621 /* 2382 */ // MIs[0] Operand 2
4622 /* 2382 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4623 /* 2386 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4624 /* 2391 */ // Combiner Rule #94: right_identity_one_int
4625 /* 2391 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4626 /* 2396 */ GIR_EraseRootFromParent_Done,
4627 /* 2397 */ // Label 152: @2397
4628 /* 2397 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2408), // Rule ID 16 //
4629 /* 2402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4630 /* 2405 */ // MIs[0] d
4631 /* 2405 */ // No operand predicates
4632 /* 2405 */ // MIs[0] op1
4633 /* 2405 */ // No operand predicates
4634 /* 2405 */ // MIs[0] op2
4635 /* 2405 */ // No operand predicates
4636 /* 2405 */ // Combiner Rule #16: mul_to_shl
4637 /* 2405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4638 /* 2408 */ // Label 153: @2408
4639 /* 2408 */ GIM_Reject,
4640 /* 2409 */ // Label 4: @2409
4641 /* 2409 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2420), // Rule ID 223 //
4642 /* 2414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
4643 /* 2417 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
4644 /* 2417 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4645 /* 2420 */ // Label 154: @2420
4646 /* 2420 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2431), // Rule ID 258 //
4647 /* 2425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4648 /* 2428 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SDIV'
4649 /* 2428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4650 /* 2431 */ // Label 155: @2431
4651 /* 2431 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2442), // Rule ID 297 //
4652 /* 2436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4653 /* 2439 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SDIV'
4654 /* 2439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4655 /* 2442 */ // Label 156: @2442
4656 /* 2442 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2482), // Rule ID 121 //
4657 /* 2447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4658 /* 2450 */ // MIs[0] dst
4659 /* 2450 */ // No operand predicates
4660 /* 2450 */ // MIs[0] zero
4661 /* 2450 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4662 /* 2454 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4663 /* 2458 */ // MIs[1] Operand 1
4664 /* 2458 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4665 /* 2469 */ // MIs[0] rhs
4666 /* 2469 */ // No operand predicates
4667 /* 2469 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4668 /* 2474 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4669 /* 2476 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
4670 /* 2476 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4671 /* 2481 */ GIR_EraseRootFromParent_Done,
4672 /* 2482 */ // Label 157: @2482
4673 /* 2482 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2499), // Rule ID 320 //
4674 /* 2487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
4675 /* 2490 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4676 /* 2496 */ // MIs[0] dst
4677 /* 2496 */ // No operand predicates
4678 /* 2496 */ // MIs[0] x
4679 /* 2496 */ // No operand predicates
4680 /* 2496 */ // MIs[0] y
4681 /* 2496 */ // No operand predicates
4682 /* 2496 */ // Combiner Rule #199: sdiv_by_pow2
4683 /* 2496 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
4684 /* 2499 */ // Label 158: @2499
4685 /* 2499 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2510), // Rule ID 322 //
4686 /* 2504 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
4687 /* 2507 */ // MIs[0] dst
4688 /* 2507 */ // No operand predicates
4689 /* 2507 */ // MIs[0] x
4690 /* 2507 */ // No operand predicates
4691 /* 2507 */ // MIs[0] y
4692 /* 2507 */ // No operand predicates
4693 /* 2507 */ // Combiner Rule #201: sdiv_by_const
4694 /* 2507 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4695 /* 2510 */ // Label 159: @2510
4696 /* 2510 */ GIM_Reject,
4697 /* 2511 */ // Label 5: @2511
4698 /* 2511 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2522), // Rule ID 83 //
4699 /* 2516 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
4700 /* 2519 */ // Combiner Rule #76: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
4701 /* 2519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4702 /* 2522 */ // Label 160: @2522
4703 /* 2522 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2533), // Rule ID 224 //
4704 /* 2527 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
4705 /* 2530 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
4706 /* 2530 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4707 /* 2533 */ // Label 161: @2533
4708 /* 2533 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2544), // Rule ID 257 //
4709 /* 2538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4710 /* 2541 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UDIV'
4711 /* 2541 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4712 /* 2544 */ // Label 162: @2544
4713 /* 2544 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2555), // Rule ID 299 //
4714 /* 2549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4715 /* 2552 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UDIV'
4716 /* 2552 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4717 /* 2555 */ // Label 163: @2555
4718 /* 2555 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2595), // Rule ID 122 //
4719 /* 2560 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4720 /* 2563 */ // MIs[0] dst
4721 /* 2563 */ // No operand predicates
4722 /* 2563 */ // MIs[0] zero
4723 /* 2563 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4724 /* 2567 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4725 /* 2571 */ // MIs[1] Operand 1
4726 /* 2571 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4727 /* 2582 */ // MIs[0] rhs
4728 /* 2582 */ // No operand predicates
4729 /* 2582 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4730 /* 2587 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4731 /* 2589 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
4732 /* 2589 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4733 /* 2594 */ GIR_EraseRootFromParent_Done,
4734 /* 2595 */ // Label 164: @2595
4735 /* 2595 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2612), // Rule ID 319 //
4736 /* 2600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
4737 /* 2603 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4738 /* 2609 */ // MIs[0] dst
4739 /* 2609 */ // No operand predicates
4740 /* 2609 */ // MIs[0] x
4741 /* 2609 */ // No operand predicates
4742 /* 2609 */ // MIs[0] y
4743 /* 2609 */ // No operand predicates
4744 /* 2609 */ // Combiner Rule #198: udiv_by_pow2
4745 /* 2609 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
4746 /* 2612 */ // Label 165: @2612
4747 /* 2612 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2623), // Rule ID 321 //
4748 /* 2617 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4749 /* 2620 */ // MIs[0] dst
4750 /* 2620 */ // No operand predicates
4751 /* 2620 */ // MIs[0] x
4752 /* 2620 */ // No operand predicates
4753 /* 2620 */ // MIs[0] y
4754 /* 2620 */ // No operand predicates
4755 /* 2620 */ // Combiner Rule #200: udiv_by_const
4756 /* 2620 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4757 /* 2623 */ // Label 166: @2623
4758 /* 2623 */ GIM_Reject,
4759 /* 2624 */ // Label 6: @2624
4760 /* 2624 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2635), // Rule ID 225 //
4761 /* 2629 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
4762 /* 2632 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_SREM'
4763 /* 2632 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4764 /* 2635 */ // Label 167: @2635
4765 /* 2635 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2646), // Rule ID 260 //
4766 /* 2640 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4767 /* 2643 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SREM'
4768 /* 2643 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4769 /* 2646 */ // Label 168: @2646
4770 /* 2646 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2657), // Rule ID 298 //
4771 /* 2651 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4772 /* 2654 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SREM'
4773 /* 2654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4774 /* 2657 */ // Label 169: @2657
4775 /* 2657 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2697), // Rule ID 123 //
4776 /* 2662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4777 /* 2665 */ // MIs[0] dst
4778 /* 2665 */ // No operand predicates
4779 /* 2665 */ // MIs[0] zero
4780 /* 2665 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4781 /* 2669 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4782 /* 2673 */ // MIs[1] Operand 1
4783 /* 2673 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4784 /* 2684 */ // MIs[0] rhs
4785 /* 2684 */ // No operand predicates
4786 /* 2684 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4787 /* 2689 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4788 /* 2691 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
4789 /* 2691 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4790 /* 2696 */ GIR_EraseRootFromParent_Done,
4791 /* 2697 */ // Label 170: @2697
4792 /* 2697 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2708), // Rule ID 318 //
4793 /* 2702 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4794 /* 2705 */ // MIs[0] dst
4795 /* 2705 */ // No operand predicates
4796 /* 2705 */ // MIs[0] x
4797 /* 2705 */ // No operand predicates
4798 /* 2705 */ // MIs[0] y
4799 /* 2705 */ // No operand predicates
4800 /* 2705 */ // Combiner Rule #197: srem_by_const
4801 /* 2705 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4802 /* 2708 */ // Label 171: @2708
4803 /* 2708 */ GIM_Reject,
4804 /* 2709 */ // Label 7: @2709
4805 /* 2709 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2720), // Rule ID 84 //
4806 /* 2714 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
4807 /* 2717 */ // Combiner Rule #76: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
4808 /* 2717 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4809 /* 2720 */ // Label 172: @2720
4810 /* 2720 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2731), // Rule ID 174 //
4811 /* 2725 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
4812 /* 2728 */ // Combiner Rule #131: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
4813 /* 2728 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
4814 /* 2731 */ // Label 173: @2731
4815 /* 2731 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2742), // Rule ID 226 //
4816 /* 2736 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
4817 /* 2739 */ // Combiner Rule #164: div_rem_to_divrem; wip_match_opcode 'G_UREM'
4818 /* 2739 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4819 /* 2742 */ // Label 174: @2742
4820 /* 2742 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2753), // Rule ID 259 //
4821 /* 2747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4822 /* 2750 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UREM'
4823 /* 2750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4824 /* 2753 */ // Label 175: @2753
4825 /* 2753 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2764), // Rule ID 300 //
4826 /* 2758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4827 /* 2761 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UREM'
4828 /* 2761 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4829 /* 2764 */ // Label 176: @2764
4830 /* 2764 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2804), // Rule ID 124 //
4831 /* 2769 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
4832 /* 2772 */ // MIs[0] dst
4833 /* 2772 */ // No operand predicates
4834 /* 2772 */ // MIs[0] zero
4835 /* 2772 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4836 /* 2776 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4837 /* 2780 */ // MIs[1] Operand 1
4838 /* 2780 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4839 /* 2791 */ // MIs[0] rhs
4840 /* 2791 */ // No operand predicates
4841 /* 2791 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4842 /* 2796 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4843 /* 2798 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
4844 /* 2798 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4845 /* 2803 */ GIR_EraseRootFromParent_Done,
4846 /* 2804 */ // Label 177: @2804
4847 /* 2804 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2815), // Rule ID 317 //
4848 /* 2809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
4849 /* 2812 */ // MIs[0] dst
4850 /* 2812 */ // No operand predicates
4851 /* 2812 */ // MIs[0] x
4852 /* 2812 */ // No operand predicates
4853 /* 2812 */ // MIs[0] y
4854 /* 2812 */ // No operand predicates
4855 /* 2812 */ // Combiner Rule #196: urem_by_const
4856 /* 2812 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4857 /* 2815 */ // Label 178: @2815
4858 /* 2815 */ GIM_Reject,
4859 /* 2816 */ // Label 8: @2816
4860 /* 2816 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2827), // Rule ID 75 //
4861 /* 2821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
4862 /* 2824 */ // Combiner Rule #71: load_and_mask; wip_match_opcode 'G_AND'
4863 /* 2824 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
4864 /* 2827 */ // Label 179: @2827
4865 /* 2827 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2838), // Rule ID 79 //
4866 /* 2832 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4867 /* 2835 */ // Combiner Rule #74: undef_to_int_zero; wip_match_opcode 'G_AND'
4868 /* 2835 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4869 /* 2838 */ // Label 180: @2838
4870 /* 2838 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2849), // Rule ID 146 //
4871 /* 2843 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4872 /* 2846 */ // Combiner Rule #107: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
4873 /* 2846 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
4874 /* 2849 */ // Label 181: @2849
4875 /* 2849 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2860), // Rule ID 166 //
4876 /* 2854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
4877 /* 2857 */ // Combiner Rule #123: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
4878 /* 2857 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
4879 /* 2860 */ // Label 182: @2860
4880 /* 2860 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2871), // Rule ID 171 //
4881 /* 2865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
4882 /* 2868 */ // Combiner Rule #128: redundant_and; wip_match_opcode 'G_AND'
4883 /* 2868 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
4884 /* 2871 */ // Label 183: @2871
4885 /* 2871 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2882), // Rule ID 196 //
4886 /* 2876 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
4887 /* 2879 */ // Combiner Rule #153: overlapping_and; wip_match_opcode 'G_AND'
4888 /* 2879 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4889 /* 2882 */ // Label 184: @2882
4890 /* 2882 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2893), // Rule ID 249 //
4891 /* 2887 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
4892 /* 2890 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_AND'
4893 /* 2890 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4894 /* 2893 */ // Label 185: @2893
4895 /* 2893 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2904), // Rule ID 282 //
4896 /* 2898 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
4897 /* 2901 */ // Combiner Rule #186: and_or_disjoint_mask; wip_match_opcode 'G_AND'
4898 /* 2901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
4899 /* 2904 */ // Label 186: @2904
4900 /* 2904 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2915), // Rule ID 294 //
4901 /* 2909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
4902 /* 2912 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_AND'
4903 /* 2912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4904 /* 2915 */ // Label 187: @2915
4905 /* 2915 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(2926), // Rule ID 329 //
4906 /* 2920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
4907 /* 2923 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
4908 /* 2923 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4909 /* 2926 */ // Label 188: @2926
4910 /* 2926 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(2937), // Rule ID 356 //
4911 /* 2931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4912 /* 2934 */ // Combiner Rule #208: match_ands; wip_match_opcode 'G_AND'
4913 /* 2934 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
4914 /* 2937 */ // Label 189: @2937
4915 /* 2937 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3035), // Rule ID 159 //
4916 /* 2942 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4917 /* 2945 */ // MIs[0] root
4918 /* 2945 */ // No operand predicates
4919 /* 2945 */ // MIs[0] d1
4920 /* 2945 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4921 /* 2949 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
4922 /* 2953 */ // MIs[1] p
4923 /* 2953 */ // No operand predicates
4924 /* 2953 */ // MIs[1] s1
4925 /* 2953 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
4926 /* 2957 */ // MIs[1] Operand 3
4927 /* 2957 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
4928 /* 2961 */ // MIs[0] d2
4929 /* 2961 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4930 /* 2965 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
4931 /* 2969 */ // MIs[2] p
4932 /* 2969 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
4933 /* 2974 */ // MIs[2] s2
4934 /* 2974 */ // No operand predicates
4935 /* 2974 */ // MIs[2] Operand 3
4936 /* 2974 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
4937 /* 2978 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
4938 /* 2982 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4939 /* 2984 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4940 /* 2987 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4941 /* 2997 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4942 /* 3000 */ // Combiner Rule #116: double_icmp_zero_and_combine
4943 /* 3000 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
4944 /* 3003 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4945 /* 3008 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
4946 /* 3012 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
4947 /* 3016 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
4948 /* 3020 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4949 /* 3024 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
4950 /* 3028 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4951 /* 3031 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
4952 /* 3034 */ GIR_EraseRootFromParent_Done,
4953 /* 3035 */ // Label 190: @3035
4954 /* 3035 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3072), // Rule ID 242 //
4955 /* 3040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
4956 /* 3043 */ // MIs[0] root
4957 /* 3043 */ // No operand predicates
4958 /* 3043 */ // MIs[0] shift
4959 /* 3043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4960 /* 3047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
4961 /* 3051 */ // MIs[1] x
4962 /* 3051 */ // No operand predicates
4963 /* 3051 */ // MIs[1] lsb
4964 /* 3051 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4965 /* 3055 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4966 /* 3059 */ // MIs[2] imm1
4967 /* 3059 */ // No operand predicates
4968 /* 3059 */ // MIs[0] mask
4969 /* 3059 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4970 /* 3063 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4971 /* 3067 */ // MIs[3] imm2
4972 /* 3067 */ // No operand predicates
4973 /* 3067 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4974 /* 3069 */ // Combiner Rule #176: bitfield_extract_from_and
4975 /* 3069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
4976 /* 3072 */ // Label 191: @3072
4977 /* 3072 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3096), // Rule ID 116 //
4978 /* 3077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4979 /* 3080 */ // MIs[0] dst
4980 /* 3080 */ // No operand predicates
4981 /* 3080 */ // MIs[0] src
4982 /* 3080 */ // No operand predicates
4983 /* 3080 */ // MIs[0] src
4984 /* 3080 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4985 /* 3085 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4986 /* 3090 */ // Combiner Rule #87: binop_same_val @ [__binop_same_val_match_0[0]]
4987 /* 3090 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4988 /* 3095 */ GIR_EraseRootFromParent_Done,
4989 /* 3096 */ // Label 192: @3096
4990 /* 3096 */ GIM_Reject,
4991 /* 3097 */ // Label 9: @3097
4992 /* 3097 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3108), // Rule ID 81 //
4993 /* 3102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4994 /* 3105 */ // Combiner Rule #75: undef_to_negative_one; wip_match_opcode 'G_OR'
4995 /* 3105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
4996 /* 3108 */ // Label 193: @3108
4997 /* 3108 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3119), // Rule ID 147 //
4998 /* 3113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4999 /* 3116 */ // Combiner Rule #107: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5000 /* 3116 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5001 /* 3119 */ // Label 194: @3119
5002 /* 3119 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3130), // Rule ID 173 //
5003 /* 3124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
5004 /* 3127 */ // Combiner Rule #130: redundant_or; wip_match_opcode 'G_OR'
5005 /* 3127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5006 /* 3130 */ // Label 195: @3130
5007 /* 3130 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3141), // Rule ID 222 //
5008 /* 3135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
5009 /* 3138 */ // Combiner Rule #163: load_or_combine; wip_match_opcode 'G_OR'
5010 /* 3138 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5011 /* 3141 */ // Label 196: @3141
5012 /* 3141 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3152), // Rule ID 227 //
5013 /* 3146 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5014 /* 3149 */ // Combiner Rule #165: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5015 /* 3149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5016 /* 3152 */ // Label 197: @3152
5017 /* 3152 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3163), // Rule ID 253 //
5018 /* 3157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5019 /* 3160 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_OR'
5020 /* 3160 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5021 /* 3163 */ // Label 198: @3163
5022 /* 3163 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3174), // Rule ID 295 //
5023 /* 3168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5024 /* 3171 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_OR'
5025 /* 3171 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5026 /* 3174 */ // Label 199: @3174
5027 /* 3174 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3185), // Rule ID 330 //
5028 /* 3179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5029 /* 3182 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5030 /* 3182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5031 /* 3185 */ // Label 200: @3185
5032 /* 3185 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3196), // Rule ID 357 //
5033 /* 3190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
5034 /* 3193 */ // Combiner Rule #209: match_ors; wip_match_opcode 'G_OR'
5035 /* 3193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5036 /* 3196 */ // Label 201: @3196
5037 /* 3196 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3243), // Rule ID 234 //
5038 /* 3201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5039 /* 3204 */ // MIs[0] root
5040 /* 3204 */ // No operand predicates
5041 /* 3204 */ // MIs[0] out1
5042 /* 3204 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5043 /* 3208 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5044 /* 3212 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5045 /* 3212 */ // No operand predicates
5046 /* 3212 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5047 /* 3212 */ // No operand predicates
5048 /* 3212 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5049 /* 3212 */ // No operand predicates
5050 /* 3212 */ // MIs[0] out2
5051 /* 3212 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5052 /* 3216 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5053 /* 3220 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5054 /* 3220 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5055 /* 3225 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5056 /* 3225 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5057 /* 3230 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5058 /* 3235 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5059 /* 3237 */ // Combiner Rule #170: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5060 /* 3237 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5061 /* 3242 */ GIR_EraseRootFromParent_Done,
5062 /* 3243 */ // Label 202: @3243
5063 /* 3243 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3290), // Rule ID 236 //
5064 /* 3248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
5065 /* 3251 */ // MIs[0] root
5066 /* 3251 */ // No operand predicates
5067 /* 3251 */ // MIs[0] out1
5068 /* 3251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5069 /* 3255 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5070 /* 3259 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5071 /* 3259 */ // No operand predicates
5072 /* 3259 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5073 /* 3259 */ // No operand predicates
5074 /* 3259 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5075 /* 3259 */ // No operand predicates
5076 /* 3259 */ // MIs[0] out2
5077 /* 3259 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5078 /* 3263 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5079 /* 3267 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5080 /* 3267 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5081 /* 3272 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5082 /* 3272 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5083 /* 3277 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5084 /* 3282 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5085 /* 3284 */ // Combiner Rule #171: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5086 /* 3284 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5087 /* 3289 */ GIR_EraseRootFromParent_Done,
5088 /* 3290 */ // Label 203: @3290
5089 /* 3290 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3388), // Rule ID 160 //
5090 /* 3295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
5091 /* 3298 */ // MIs[0] root
5092 /* 3298 */ // No operand predicates
5093 /* 3298 */ // MIs[0] d1
5094 /* 3298 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5095 /* 3302 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5096 /* 3306 */ // MIs[1] p
5097 /* 3306 */ // No operand predicates
5098 /* 3306 */ // MIs[1] s1
5099 /* 3306 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5100 /* 3310 */ // MIs[1] Operand 3
5101 /* 3310 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5102 /* 3314 */ // MIs[0] d2
5103 /* 3314 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5104 /* 3318 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5105 /* 3322 */ // MIs[2] p
5106 /* 3322 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5107 /* 3327 */ // MIs[2] s2
5108 /* 3327 */ // No operand predicates
5109 /* 3327 */ // MIs[2] Operand 3
5110 /* 3327 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5111 /* 3331 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
5112 /* 3335 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5113 /* 3337 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5114 /* 3340 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5115 /* 3350 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5116 /* 3353 */ // Combiner Rule #117: double_icmp_zero_or_combine
5117 /* 3353 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5118 /* 3356 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5119 /* 3361 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5120 /* 3365 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5121 /* 3369 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5122 /* 3373 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5123 /* 3377 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5124 /* 3381 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5125 /* 3384 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5126 /* 3387 */ GIR_EraseRootFromParent_Done,
5127 /* 3388 */ // Label 204: @3388
5128 /* 3388 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3435), // Rule ID 237 //
5129 /* 3393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
5130 /* 3396 */ // MIs[0] root
5131 /* 3396 */ // No operand predicates
5132 /* 3396 */ // MIs[0] out2
5133 /* 3396 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5134 /* 3400 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5135 /* 3404 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5136 /* 3404 */ // No operand predicates
5137 /* 3404 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5138 /* 3404 */ // No operand predicates
5139 /* 3404 */ // MIs[0] out1
5140 /* 3404 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5141 /* 3408 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5142 /* 3412 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5143 /* 3412 */ // No operand predicates
5144 /* 3412 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5145 /* 3412 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5146 /* 3417 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5147 /* 3417 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5148 /* 3422 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5149 /* 3427 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5150 /* 3429 */ // Combiner Rule #171: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5151 /* 3429 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5152 /* 3434 */ GIR_EraseRootFromParent_Done,
5153 /* 3435 */ // Label 205: @3435
5154 /* 3435 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3482), // Rule ID 235 //
5155 /* 3440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5156 /* 3443 */ // MIs[0] root
5157 /* 3443 */ // No operand predicates
5158 /* 3443 */ // MIs[0] out2
5159 /* 3443 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5160 /* 3447 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5161 /* 3451 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5162 /* 3451 */ // No operand predicates
5163 /* 3451 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5164 /* 3451 */ // No operand predicates
5165 /* 3451 */ // MIs[0] out1
5166 /* 3451 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5167 /* 3455 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5168 /* 3459 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5169 /* 3459 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5170 /* 3464 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5171 /* 3464 */ // No operand predicates
5172 /* 3464 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5173 /* 3464 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5174 /* 3469 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5175 /* 3474 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5176 /* 3476 */ // Combiner Rule #170: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5177 /* 3476 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5178 /* 3481 */ GIR_EraseRootFromParent_Done,
5179 /* 3482 */ // Label 206: @3482
5180 /* 3482 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3506), // Rule ID 117 //
5181 /* 3487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5182 /* 3490 */ // MIs[0] dst
5183 /* 3490 */ // No operand predicates
5184 /* 3490 */ // MIs[0] src
5185 /* 3490 */ // No operand predicates
5186 /* 3490 */ // MIs[0] src
5187 /* 3490 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5188 /* 3495 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5189 /* 3500 */ // Combiner Rule #87: binop_same_val @ [__binop_same_val_match_0[1]]
5190 /* 3500 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5191 /* 3505 */ GIR_EraseRootFromParent_Done,
5192 /* 3506 */ // Label 207: @3506
5193 /* 3506 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3529), // Rule ID 108 //
5194 /* 3511 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
5195 /* 3514 */ // MIs[0] dst
5196 /* 3514 */ // No operand predicates
5197 /* 3514 */ // MIs[0] lhs
5198 /* 3514 */ // No operand predicates
5199 /* 3514 */ // MIs[0] Operand 2
5200 /* 3514 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5201 /* 3518 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5202 /* 3523 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[2]]
5203 /* 3523 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5204 /* 3528 */ GIR_EraseRootFromParent_Done,
5205 /* 3529 */ // Label 208: @3529
5206 /* 3529 */ GIM_Reject,
5207 /* 3530 */ // Label 10: @3530
5208 /* 3530 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3541), // Rule ID 98 //
5209 /* 3535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5210 /* 3538 */ // Combiner Rule #80: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5211 /* 3538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5212 /* 3541 */ // Label 209: @3541
5213 /* 3541 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3552), // Rule ID 148 //
5214 /* 3546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5215 /* 3549 */ // Combiner Rule #107: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5216 /* 3549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5217 /* 3552 */ // Label 210: @3552
5218 /* 3552 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3563), // Rule ID 178 //
5219 /* 3557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
5220 /* 3560 */ // Combiner Rule #135: not_cmp_fold; wip_match_opcode 'G_XOR'
5221 /* 3560 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5222 /* 3563 */ // Label 211: @3563
5223 /* 3563 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3574), // Rule ID 210 //
5224 /* 3568 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
5225 /* 3571 */ // Combiner Rule #159: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5226 /* 3571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5227 /* 3574 */ // Label 212: @3574
5228 /* 3574 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3585), // Rule ID 256 //
5229 /* 3579 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5230 /* 3582 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_XOR'
5231 /* 3582 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5232 /* 3585 */ // Label 213: @3585
5233 /* 3585 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3596), // Rule ID 296 //
5234 /* 3590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5235 /* 3593 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_XOR'
5236 /* 3593 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5237 /* 3596 */ // Label 214: @3596
5238 /* 3596 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3607), // Rule ID 331 //
5239 /* 3601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5240 /* 3604 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5241 /* 3604 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5242 /* 3607 */ // Label 215: @3607
5243 /* 3607 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3630), // Rule ID 109 //
5244 /* 3612 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
5245 /* 3615 */ // MIs[0] dst
5246 /* 3615 */ // No operand predicates
5247 /* 3615 */ // MIs[0] lhs
5248 /* 3615 */ // No operand predicates
5249 /* 3615 */ // MIs[0] Operand 2
5250 /* 3615 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5251 /* 3619 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5252 /* 3624 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[3]]
5253 /* 3624 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5254 /* 3629 */ GIR_EraseRootFromParent_Done,
5255 /* 3630 */ // Label 216: @3630
5256 /* 3630 */ GIM_Reject,
5257 /* 3631 */ // Label 11: @3631
5258 /* 3631 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3642), // Rule ID 144 //
5259 /* 3636 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5260 /* 3639 */ // Combiner Rule #105: extend_through_phis; wip_match_opcode 'G_PHI'
5261 /* 3639 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5262 /* 3642 */ // Label 217: @3642
5263 /* 3642 */ GIM_Reject,
5264 /* 3643 */ // Label 12: @3643
5265 /* 3643 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3654), // Rule ID 367 //
5266 /* 3648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
5267 /* 3651 */ // Combiner Rule #219: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5268 /* 3651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5269 /* 3654 */ // Label 218: @3654
5270 /* 3654 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3665), // Rule ID 368 //
5271 /* 3659 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5272 /* 3662 */ // Combiner Rule #220: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5273 /* 3662 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5274 /* 3665 */ // Label 219: @3665
5275 /* 3665 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3676), // Rule ID 370 //
5276 /* 3670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5277 /* 3673 */ // Combiner Rule #222: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5278 /* 3673 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5279 /* 3676 */ // Label 220: @3676
5280 /* 3676 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3687), // Rule ID 371 //
5281 /* 3681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5282 /* 3684 */ // Combiner Rule #223: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5283 /* 3684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5284 /* 3687 */ // Label 221: @3687
5285 /* 3687 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3698), // Rule ID 372 //
5286 /* 3692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5287 /* 3695 */ // Combiner Rule #224: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5288 /* 3695 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5289 /* 3698 */ // Label 222: @3698
5290 /* 3698 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3709), // Rule ID 373 //
5291 /* 3703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5292 /* 3706 */ // Combiner Rule #225: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5293 /* 3706 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5294 /* 3709 */ // Label 223: @3709
5295 /* 3709 */ GIM_Reject,
5296 /* 3710 */ // Label 13: @3710
5297 /* 3710 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3724), // Rule ID 369 //
5298 /* 3715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5299 /* 3718 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5300 /* 3721 */ // MIs[0] dst
5301 /* 3721 */ // No operand predicates
5302 /* 3721 */ // MIs[0] merge_srcs
5303 /* 3721 */ // No operand predicates
5304 /* 3721 */ // Combiner Rule #221: merge_unmerge
5305 /* 3721 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5306 /* 3724 */ // Label 224: @3724
5307 /* 3724 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3786),
5308 /* 3729 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5309 /* 3732 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3753), // Rule ID 374 //
5310 /* 3737 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5311 /* 3740 */ // MIs[0] root
5312 /* 3740 */ // No operand predicates
5313 /* 3740 */ // MIs[0] x
5314 /* 3740 */ // No operand predicates
5315 /* 3740 */ // MIs[0] undef
5316 /* 3740 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5317 /* 3744 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5318 /* 3748 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5319 /* 3750 */ // Combiner Rule #226: merge_of_x_and_undef
5320 /* 3750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5321 /* 3753 */ // Label 226: @3753
5322 /* 3753 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3785), // Rule ID 375 //
5323 /* 3758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5324 /* 3761 */ // MIs[0] root
5325 /* 3761 */ // No operand predicates
5326 /* 3761 */ // MIs[0] x
5327 /* 3761 */ // No operand predicates
5328 /* 3761 */ // MIs[0] zero
5329 /* 3761 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5330 /* 3765 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5331 /* 3769 */ // MIs[1] Operand 1
5332 /* 3769 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5333 /* 3780 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5334 /* 3782 */ // Combiner Rule #227: merge_of_x_and_zero
5335 /* 3782 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5336 /* 3785 */ // Label 227: @3785
5337 /* 3785 */ GIM_Reject,
5338 /* 3786 */ // Label 225: @3786
5339 /* 3786 */ GIM_Reject,
5340 /* 3787 */ // Label 14: @3787
5341 /* 3787 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3798), // Rule ID 71 //
5342 /* 3792 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
5343 /* 3795 */ // Combiner Rule #69: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5344 /* 3795 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5345 /* 3798 */ // Label 228: @3798
5346 /* 3798 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3809), // Rule ID 100 //
5347 /* 3803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5348 /* 3806 */ // Combiner Rule #81: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5349 /* 3806 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5350 /* 3809 */ // Label 229: @3809
5351 /* 3809 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3820), // Rule ID 136 //
5352 /* 3814 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
5353 /* 3817 */ // Combiner Rule #97: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5354 /* 3817 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5355 /* 3820 */ // Label 230: @3820
5356 /* 3820 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3851),
5357 /* 3825 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5358 /* 3828 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3839), // Rule ID 366 //
5359 /* 3833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
5360 /* 3836 */ // MIs[0] dst
5361 /* 3836 */ // No operand predicates
5362 /* 3836 */ // MIs[0] unused
5363 /* 3836 */ // No operand predicates
5364 /* 3836 */ // Combiner Rule #218: combine_use_vector_truncate
5365 /* 3836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5366 /* 3839 */ // Label 232: @3839
5367 /* 3839 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3850), // Rule ID 376 //
5368 /* 3844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5369 /* 3847 */ // MIs[0] dst
5370 /* 3847 */ // No operand predicates
5371 /* 3847 */ // MIs[0] unused
5372 /* 3847 */ // No operand predicates
5373 /* 3847 */ // Combiner Rule #228: combine_build_unmerge
5374 /* 3847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5375 /* 3850 */ // Label 233: @3850
5376 /* 3850 */ GIM_Reject,
5377 /* 3851 */ // Label 231: @3851
5378 /* 3851 */ GIM_Reject,
5379 /* 3852 */ // Label 15: @3852
5380 /* 3852 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3863), // Rule ID 135 //
5381 /* 3857 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
5382 /* 3860 */ // Combiner Rule #97: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5383 /* 3860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5384 /* 3863 */ // Label 234: @3863
5385 /* 3863 */ GIM_Reject,
5386 /* 3864 */ // Label 16: @3864
5387 /* 3864 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3875), // Rule ID 359 //
5388 /* 3869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5389 /* 3872 */ // Combiner Rule #211: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5390 /* 3872 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5391 /* 3875 */ // Label 235: @3875
5392 /* 3875 */ GIM_Reject,
5393 /* 3876 */ // Label 17: @3876
5394 /* 3876 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(3897), // Rule ID 128 //
5395 /* 3881 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5396 /* 3884 */ // MIs[0] dst
5397 /* 3884 */ // No operand predicates
5398 /* 3884 */ // MIs[0] t
5399 /* 3884 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5400 /* 3888 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5401 /* 3892 */ // MIs[1] ptr
5402 /* 3892 */ // No operand predicates
5403 /* 3892 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5404 /* 3894 */ // Combiner Rule #91: i2p_to_p2i
5405 /* 3894 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5406 /* 3897 */ // Label 236: @3897
5407 /* 3897 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(3918), // Rule ID 92 //
5408 /* 3902 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5409 /* 3905 */ // MIs[0] dst
5410 /* 3905 */ // No operand predicates
5411 /* 3905 */ // MIs[0] __unary_undef_to_undef_match_0.x
5412 /* 3905 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5413 /* 3909 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5414 /* 3913 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5415 /* 3915 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5416 /* 3915 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5417 /* 3918 */ // Label 237: @3918
5418 /* 3918 */ GIM_Reject,
5419 /* 3919 */ // Label 18: @3919
5420 /* 3919 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(3930), // Rule ID 127 //
5421 /* 3924 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5422 /* 3927 */ // Combiner Rule #90: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5423 /* 3927 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5424 /* 3930 */ // Label 238: @3930
5425 /* 3930 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(3951), // Rule ID 93 //
5426 /* 3935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5427 /* 3938 */ // MIs[0] dst
5428 /* 3938 */ // No operand predicates
5429 /* 3938 */ // MIs[0] __unary_undef_to_undef_match_0.x
5430 /* 3938 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5431 /* 3942 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5432 /* 3946 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5433 /* 3948 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5434 /* 3948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5435 /* 3951 */ // Label 239: @3951
5436 /* 3951 */ GIM_Reject,
5437 /* 3952 */ // Label 19: @3952
5438 /* 3952 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(3973), // Rule ID 139 //
5439 /* 3957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
5440 /* 3960 */ // MIs[0] dst
5441 /* 3960 */ // No operand predicates
5442 /* 3960 */ // MIs[0] src1
5443 /* 3960 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5444 /* 3964 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5445 /* 3968 */ // MIs[1] src0
5446 /* 3968 */ // No operand predicates
5447 /* 3968 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5448 /* 3970 */ // Combiner Rule #100: bitcast_bitcast_fold
5449 /* 3970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5450 /* 3973 */ // Label 240: @3973
5451 /* 3973 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(3994), // Rule ID 90 //
5452 /* 3978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5453 /* 3981 */ // MIs[0] dst
5454 /* 3981 */ // No operand predicates
5455 /* 3981 */ // MIs[0] __unary_undef_to_undef_match_0.x
5456 /* 3981 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5457 /* 3985 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5458 /* 3989 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5459 /* 3991 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
5460 /* 3991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5461 /* 3994 */ // Label 241: @3994
5462 /* 3994 */ GIM_Reject,
5463 /* 3995 */ // Label 20: @3995
5464 /* 3995 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4024), // Rule ID 20 //
5465 /* 4000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5466 /* 4003 */ // MIs[0] dst
5467 /* 4003 */ // No operand predicates
5468 /* 4003 */ // MIs[0] src
5469 /* 4003 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5470 /* 4007 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
5471 /* 4011 */ // MIs[1] __idempotent_prop_match_0.x
5472 /* 4011 */ // No operand predicates
5473 /* 4011 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5474 /* 4016 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5475 /* 4018 */ // Combiner Rule #20: idempotent_prop @ [__idempotent_prop_match_0[0]]
5476 /* 4018 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5477 /* 4023 */ GIR_EraseRootFromParent_Done,
5478 /* 4024 */ // Label 242: @4024
5479 /* 4024 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4047), // Rule ID 45 //
5480 /* 4029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
5481 /* 4032 */ // MIs[0] root
5482 /* 4032 */ // No operand predicates
5483 /* 4032 */ // MIs[0] src
5484 /* 4032 */ // No operand predicates
5485 /* 4032 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5486 /* 4036 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5487 /* 4041 */ // Combiner Rule #43: freeze_of_non_undef_non_poison
5488 /* 4041 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5489 /* 4046 */ GIR_EraseRootFromParent_Done,
5490 /* 4047 */ // Label 243: @4047
5491 /* 4047 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4058), // Rule ID 46 //
5492 /* 4052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5493 /* 4055 */ // MIs[0] dst
5494 /* 4055 */ // No operand predicates
5495 /* 4055 */ // MIs[0] src
5496 /* 4055 */ // No operand predicates
5497 /* 4055 */ // Combiner Rule #44: push_freeze_to_prevent_poison_from_propagating
5498 /* 4055 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
5499 /* 4058 */ // Label 244: @4058
5500 /* 4058 */ GIM_Reject,
5501 /* 4059 */ // Label 21: @4059
5502 /* 4059 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4080), // Rule ID 188 //
5503 /* 4064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
5504 /* 4067 */ // MIs[0] dst
5505 /* 4067 */ // No operand predicates
5506 /* 4067 */ // MIs[0] src0
5507 /* 4067 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5508 /* 4071 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5509 /* 4075 */ // MIs[1] cst
5510 /* 4075 */ // No operand predicates
5511 /* 4075 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5512 /* 4077 */ // Combiner Rule #145: constant_fold_intrinsic_trunc
5513 /* 4077 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5514 /* 4080 */ // Label 245: @4080
5515 /* 4080 */ GIM_Reject,
5516 /* 4081 */ // Label 22: @4081
5517 /* 4081 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4102), // Rule ID 189 //
5518 /* 4086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
5519 /* 4089 */ // MIs[0] dst
5520 /* 4089 */ // No operand predicates
5521 /* 4089 */ // MIs[0] src0
5522 /* 4089 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5523 /* 4093 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5524 /* 4097 */ // MIs[1] cst
5525 /* 4097 */ // No operand predicates
5526 /* 4097 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5527 /* 4099 */ // Combiner Rule #146: constant_fold_intrinsic_round
5528 /* 4099 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5529 /* 4102 */ // Label 246: @4102
5530 /* 4102 */ GIM_Reject,
5531 /* 4103 */ // Label 23: @4103
5532 /* 4103 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4124), // Rule ID 190 //
5533 /* 4108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
5534 /* 4111 */ // MIs[0] dst
5535 /* 4111 */ // No operand predicates
5536 /* 4111 */ // MIs[0] src0
5537 /* 4111 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5538 /* 4115 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5539 /* 4119 */ // MIs[1] cst
5540 /* 4119 */ // No operand predicates
5541 /* 4119 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5542 /* 4121 */ // Combiner Rule #147: constant_fold_intrinsic_roundeven
5543 /* 4121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5544 /* 4124 */ // Label 247: @4124
5545 /* 4124 */ GIM_Reject,
5546 /* 4125 */ // Label 24: @4125
5547 /* 4125 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4136), // Rule ID 72 //
5548 /* 4130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5549 /* 4133 */ // Combiner Rule #70: extending_loads; wip_match_opcode 'G_LOAD'
5550 /* 4133 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5551 /* 4136 */ // Label 248: @4136
5552 /* 4136 */ GIM_Reject,
5553 /* 4137 */ // Label 25: @4137
5554 /* 4137 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4148), // Rule ID 73 //
5555 /* 4142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5556 /* 4145 */ // Combiner Rule #70: extending_loads; wip_match_opcode 'G_SEXTLOAD'
5557 /* 4145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5558 /* 4148 */ // Label 249: @4148
5559 /* 4148 */ GIM_Reject,
5560 /* 4149 */ // Label 26: @4149
5561 /* 4149 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4160), // Rule ID 74 //
5562 /* 4154 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5563 /* 4157 */ // Combiner Rule #70: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
5564 /* 4157 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5565 /* 4160 */ // Label 250: @4160
5566 /* 4160 */ GIM_Reject,
5567 /* 4161 */ // Label 27: @4161
5568 /* 4161 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4172), // Rule ID 102 //
5569 /* 4166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5570 /* 4169 */ // Combiner Rule #83: erase_undef_store; wip_match_opcode 'G_STORE'
5571 /* 4169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
5572 /* 4172 */ // Label 251: @4172
5573 /* 4172 */ GIM_Reject,
5574 /* 4173 */ // Label 28: @4173
5575 /* 4173 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4184), // Rule ID 129 //
5576 /* 4178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5577 /* 4181 */ // Combiner Rule #92: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
5578 /* 4181 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
5579 /* 4184 */ // Label 252: @4184
5580 /* 4184 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4195), // Rule ID 273 //
5581 /* 4189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
5582 /* 4192 */ // Combiner Rule #182: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
5583 /* 4192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5584 /* 4195 */ // Label 253: @4195
5585 /* 4195 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4216), // Rule ID 59 //
5586 /* 4200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
5587 /* 4203 */ // MIs[0] root
5588 /* 4203 */ // No operand predicates
5589 /* 4203 */ // MIs[0] select
5590 /* 4203 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5591 /* 4207 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5592 /* 4211 */ // MIs[1] cond
5593 /* 4211 */ // No operand predicates
5594 /* 4211 */ // MIs[1] true
5595 /* 4211 */ // No operand predicates
5596 /* 4211 */ // MIs[1] false
5597 /* 4211 */ // No operand predicates
5598 /* 4211 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5599 /* 4213 */ // Combiner Rule #57: select_of_anyext
5600 /* 4213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5601 /* 4216 */ // Label 254: @4216
5602 /* 4216 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4237), // Rule ID 54 //
5603 /* 4221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
5604 /* 4224 */ // MIs[0] root
5605 /* 4224 */ // No operand predicates
5606 /* 4224 */ // MIs[0] second
5607 /* 4224 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5608 /* 4228 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5609 /* 4232 */ // MIs[1] src
5610 /* 4232 */ // No operand predicates
5611 /* 4232 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5612 /* 4234 */ // Combiner Rule #52: anyext_of_anyext
5613 /* 4234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5614 /* 4237 */ // Label 255: @4237
5615 /* 4237 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4258), // Rule ID 56 //
5616 /* 4242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
5617 /* 4245 */ // MIs[0] root
5618 /* 4245 */ // No operand predicates
5619 /* 4245 */ // MIs[0] second
5620 /* 4245 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5621 /* 4249 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5622 /* 4253 */ // MIs[1] src
5623 /* 4253 */ // No operand predicates
5624 /* 4253 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5625 /* 4255 */ // Combiner Rule #54: anyext_of_sext
5626 /* 4255 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5627 /* 4258 */ // Label 256: @4258
5628 /* 4258 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4279), // Rule ID 55 //
5629 /* 4263 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
5630 /* 4266 */ // MIs[0] root
5631 /* 4266 */ // No operand predicates
5632 /* 4266 */ // MIs[0] second
5633 /* 4266 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5634 /* 4270 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5635 /* 4274 */ // MIs[1] src
5636 /* 4274 */ // No operand predicates
5637 /* 4274 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5638 /* 4276 */ // Combiner Rule #53: anyext_of_zext
5639 /* 4276 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5640 /* 4279 */ // Label 257: @4279
5641 /* 4279 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4300), // Rule ID 91 //
5642 /* 4284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5643 /* 4287 */ // MIs[0] dst
5644 /* 4287 */ // No operand predicates
5645 /* 4287 */ // MIs[0] __unary_undef_to_undef_match_0.x
5646 /* 4287 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5647 /* 4291 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5648 /* 4295 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5649 /* 4297 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
5650 /* 4297 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5651 /* 4300 */ // Label 258: @4300
5652 /* 4300 */ GIM_Reject,
5653 /* 4301 */ // Label 29: @4301
5654 /* 4301 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4312), // Rule ID 137 //
5655 /* 4306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
5656 /* 4309 */ // Combiner Rule #98: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
5657 /* 4309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
5658 /* 4312 */ // Label 259: @4312
5659 /* 4312 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4323), // Rule ID 138 //
5660 /* 4317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5661 /* 4320 */ // Combiner Rule #99: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
5662 /* 4320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
5663 /* 4323 */ // Label 260: @4323
5664 /* 4323 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4334), // Rule ID 177 //
5665 /* 4328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
5666 /* 4331 */ // Combiner Rule #134: trunc_shift; wip_match_opcode 'G_TRUNC'
5667 /* 4331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
5668 /* 4334 */ // Label 261: @4334
5669 /* 4334 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4355), // Rule ID 60 //
5670 /* 4339 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
5671 /* 4342 */ // MIs[0] root
5672 /* 4342 */ // No operand predicates
5673 /* 4342 */ // MIs[0] select
5674 /* 4342 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5675 /* 4346 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5676 /* 4350 */ // MIs[1] cond
5677 /* 4350 */ // No operand predicates
5678 /* 4350 */ // MIs[1] true
5679 /* 4350 */ // No operand predicates
5680 /* 4350 */ // MIs[1] false
5681 /* 4350 */ // No operand predicates
5682 /* 4350 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5683 /* 4352 */ // Combiner Rule #58: select_of_truncate
5684 /* 4352 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5685 /* 4355 */ // Label 262: @4355
5686 /* 4355 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4384), // Rule ID 62 //
5687 /* 4360 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
5688 /* 4363 */ // MIs[0] root
5689 /* 4363 */ // No operand predicates
5690 /* 4363 */ // MIs[0] binop
5691 /* 4363 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5692 /* 4367 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5693 /* 4371 */ // MIs[1] x
5694 /* 4371 */ // No operand predicates
5695 /* 4371 */ // MIs[1] const
5696 /* 4371 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5697 /* 4375 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5698 /* 4379 */ // MIs[2] imm
5699 /* 4379 */ // No operand predicates
5700 /* 4379 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5701 /* 4381 */ // Combiner Rule #60: narrow_binop_add
5702 /* 4381 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5703 /* 4384 */ // Label 263: @4384
5704 /* 4384 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4413), // Rule ID 65 //
5705 /* 4389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
5706 /* 4392 */ // MIs[0] root
5707 /* 4392 */ // No operand predicates
5708 /* 4392 */ // MIs[0] binop
5709 /* 4392 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5710 /* 4396 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5711 /* 4400 */ // MIs[1] x
5712 /* 4400 */ // No operand predicates
5713 /* 4400 */ // MIs[1] const
5714 /* 4400 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5715 /* 4404 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5716 /* 4408 */ // MIs[2] imm
5717 /* 4408 */ // No operand predicates
5718 /* 4408 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5719 /* 4410 */ // Combiner Rule #63: narrow_binop_and
5720 /* 4410 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5721 /* 4413 */ // Label 264: @4413
5722 /* 4413 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4442), // Rule ID 64 //
5723 /* 4418 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
5724 /* 4421 */ // MIs[0] root
5725 /* 4421 */ // No operand predicates
5726 /* 4421 */ // MIs[0] binop
5727 /* 4421 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5728 /* 4425 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5729 /* 4429 */ // MIs[1] x
5730 /* 4429 */ // No operand predicates
5731 /* 4429 */ // MIs[1] const
5732 /* 4429 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5733 /* 4433 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5734 /* 4437 */ // MIs[2] imm
5735 /* 4437 */ // No operand predicates
5736 /* 4437 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5737 /* 4439 */ // Combiner Rule #62: narrow_binop_mul
5738 /* 4439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5739 /* 4442 */ // Label 265: @4442
5740 /* 4442 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4471), // Rule ID 66 //
5741 /* 4447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
5742 /* 4450 */ // MIs[0] root
5743 /* 4450 */ // No operand predicates
5744 /* 4450 */ // MIs[0] binop
5745 /* 4450 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5746 /* 4454 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5747 /* 4458 */ // MIs[1] x
5748 /* 4458 */ // No operand predicates
5749 /* 4458 */ // MIs[1] const
5750 /* 4458 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5751 /* 4462 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5752 /* 4466 */ // MIs[2] imm
5753 /* 4466 */ // No operand predicates
5754 /* 4466 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5755 /* 4468 */ // Combiner Rule #64: narrow_binop_or
5756 /* 4468 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5757 /* 4471 */ // Label 266: @4471
5758 /* 4471 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4500), // Rule ID 63 //
5759 /* 4476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
5760 /* 4479 */ // MIs[0] root
5761 /* 4479 */ // No operand predicates
5762 /* 4479 */ // MIs[0] binop
5763 /* 4479 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5764 /* 4483 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5765 /* 4487 */ // MIs[1] x
5766 /* 4487 */ // No operand predicates
5767 /* 4487 */ // MIs[1] const
5768 /* 4487 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5769 /* 4491 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5770 /* 4495 */ // MIs[2] imm
5771 /* 4495 */ // No operand predicates
5772 /* 4495 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5773 /* 4497 */ // Combiner Rule #61: narrow_binop_sub
5774 /* 4497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5775 /* 4500 */ // Label 267: @4500
5776 /* 4500 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4532), // Rule ID 383 //
5777 /* 4505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
5778 /* 4508 */ // MIs[0] dst
5779 /* 4508 */ // No operand predicates
5780 /* 4508 */ // MIs[0] min
5781 /* 4508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5782 /* 4512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
5783 /* 4516 */ // MIs[1] x
5784 /* 4516 */ // No operand predicates
5785 /* 4516 */ // MIs[1] y
5786 /* 4516 */ // No operand predicates
5787 /* 4516 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
5788 /* 4520 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5789 /* 4522 */ // Combiner Rule #233: trunc_usatu
5790 /* 4522 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
5791 /* 4525 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5792 /* 4527 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5793 /* 4531 */ GIR_EraseRootFromParent_Done,
5794 /* 4532 */ // Label 268: @4532
5795 /* 4532 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4561), // Rule ID 67 //
5796 /* 4537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
5797 /* 4540 */ // MIs[0] root
5798 /* 4540 */ // No operand predicates
5799 /* 4540 */ // MIs[0] binop
5800 /* 4540 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5801 /* 4544 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
5802 /* 4548 */ // MIs[1] x
5803 /* 4548 */ // No operand predicates
5804 /* 4548 */ // MIs[1] const
5805 /* 4548 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5806 /* 4552 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5807 /* 4556 */ // MIs[2] imm
5808 /* 4556 */ // No operand predicates
5809 /* 4556 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5810 /* 4558 */ // Combiner Rule #65: narrow_binop_xor
5811 /* 4558 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5812 /* 4561 */ // Label 269: @4561
5813 /* 4561 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4582), // Rule ID 49 //
5814 /* 4566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
5815 /* 4569 */ // MIs[0] root
5816 /* 4569 */ // No operand predicates
5817 /* 4569 */ // MIs[0] ext
5818 /* 4569 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5819 /* 4573 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5820 /* 4577 */ // MIs[1] src
5821 /* 4577 */ // No operand predicates
5822 /* 4577 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5823 /* 4579 */ // Combiner Rule #47: truncate_of_anyext
5824 /* 4579 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5825 /* 4582 */ // Label 270: @4582
5826 /* 4582 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4606), // Rule ID 61 //
5827 /* 4587 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
5828 /* 4590 */ // MIs[0] root
5829 /* 4590 */ // No operand predicates
5830 /* 4590 */ // MIs[0] bv
5831 /* 4590 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5832 /* 4594 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5833 /* 4598 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
5834 /* 4601 */ // MIs[1] unused
5835 /* 4601 */ // No operand predicates
5836 /* 4601 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5837 /* 4603 */ // Combiner Rule #59: buildvector_of_truncate
5838 /* 4603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
5839 /* 4606 */ // Label 271: @4606
5840 /* 4606 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4627), // Rule ID 48 //
5841 /* 4611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
5842 /* 4614 */ // MIs[0] root
5843 /* 4614 */ // No operand predicates
5844 /* 4614 */ // MIs[0] ext
5845 /* 4614 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5846 /* 4618 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5847 /* 4622 */ // MIs[1] src
5848 /* 4622 */ // No operand predicates
5849 /* 4622 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5850 /* 4624 */ // Combiner Rule #46: truncate_of_sext
5851 /* 4624 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5852 /* 4627 */ // Label 272: @4627
5853 /* 4627 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4648), // Rule ID 47 //
5854 /* 4632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5855 /* 4635 */ // MIs[0] root
5856 /* 4635 */ // No operand predicates
5857 /* 4635 */ // MIs[0] ext
5858 /* 4635 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5859 /* 4639 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5860 /* 4643 */ // MIs[1] src
5861 /* 4643 */ // No operand predicates
5862 /* 4643 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5863 /* 4645 */ // Combiner Rule #45: truncate_of_zext
5864 /* 4645 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5865 /* 4648 */ // Label 273: @4648
5866 /* 4648 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4669), // Rule ID 89 //
5867 /* 4653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5868 /* 4656 */ // MIs[0] dst
5869 /* 4656 */ // No operand predicates
5870 /* 4656 */ // MIs[0] __unary_undef_to_undef_match_0.x
5871 /* 4656 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5872 /* 4660 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5873 /* 4664 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5874 /* 4666 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
5875 /* 4666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5876 /* 4669 */ // Label 274: @4669
5877 /* 4669 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4690), // Rule ID 68 //
5878 /* 4674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
5879 /* 4677 */ // MIs[0] root
5880 /* 4677 */ // No operand predicates
5881 /* 4677 */ // MIs[0] int
5882 /* 4677 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5883 /* 4681 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5884 /* 4685 */ // MIs[1] imm
5885 /* 4685 */ // No operand predicates
5886 /* 4685 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5887 /* 4687 */ // Combiner Rule #66: integer_of_truncate
5888 /* 4687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
5889 /* 4690 */ // Label 275: @4690
5890 /* 4690 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4701), // Rule ID 381 //
5891 /* 4695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
5892 /* 4698 */ // MIs[0] dst
5893 /* 4698 */ // No operand predicates
5894 /* 4698 */ // MIs[0] src
5895 /* 4698 */ // No operand predicates
5896 /* 4698 */ // Combiner Rule #231: trunc_ssats
5897 /* 4698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
5898 /* 4701 */ // Label 276: @4701
5899 /* 4701 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4712), // Rule ID 382 //
5900 /* 4706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
5901 /* 4709 */ // MIs[0] dst
5902 /* 4709 */ // No operand predicates
5903 /* 4709 */ // MIs[0] src
5904 /* 4709 */ // No operand predicates
5905 /* 4709 */ // Combiner Rule #232: trunc_ssatu
5906 /* 4709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
5907 /* 4712 */ // Label 277: @4712
5908 /* 4712 */ GIM_Reject,
5909 /* 4713 */ // Label 30: @4713
5910 /* 4713 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4745), // Rule ID 384 //
5911 /* 4718 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
5912 /* 4721 */ // MIs[0] dst
5913 /* 4721 */ // No operand predicates
5914 /* 4721 */ // MIs[0] src
5915 /* 4721 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5916 /* 4725 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
5917 /* 4729 */ // MIs[1] x
5918 /* 4729 */ // No operand predicates
5919 /* 4729 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
5920 /* 4733 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5921 /* 4735 */ // Combiner Rule #234: truncusatu_to_fptouisat
5922 /* 4735 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
5923 /* 4738 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5924 /* 4740 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5925 /* 4744 */ GIR_EraseRootFromParent_Done,
5926 /* 4745 */ // Label 278: @4745
5927 /* 4745 */ GIM_Reject,
5928 /* 4746 */ // Label 31: @4746
5929 /* 4746 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4757), // Rule ID 272 //
5930 /* 4751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
5931 /* 4754 */ // Combiner Rule #182: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
5932 /* 4754 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5933 /* 4757 */ // Label 279: @4757
5934 /* 4757 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4778), // Rule ID 53 //
5935 /* 4762 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
5936 /* 4765 */ // MIs[0] root
5937 /* 4765 */ // No operand predicates
5938 /* 4765 */ // MIs[0] second
5939 /* 4765 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5940 /* 4769 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5941 /* 4773 */ // MIs[1] src
5942 /* 4773 */ // No operand predicates
5943 /* 4773 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5944 /* 4775 */ // Combiner Rule #51: sext_of_anyext
5945 /* 4775 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5946 /* 4778 */ // Label 280: @4778
5947 /* 4778 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4799), // Rule ID 52 //
5948 /* 4783 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
5949 /* 4786 */ // MIs[0] root
5950 /* 4786 */ // No operand predicates
5951 /* 4786 */ // MIs[0] second
5952 /* 4786 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5953 /* 4790 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5954 /* 4794 */ // MIs[1] src
5955 /* 4794 */ // No operand predicates
5956 /* 4794 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5957 /* 4796 */ // Combiner Rule #50: sext_of_sext
5958 /* 4796 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5959 /* 4799 */ // Label 281: @4799
5960 /* 4799 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4820), // Rule ID 360 //
5961 /* 4804 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
5962 /* 4807 */ // MIs[0] root
5963 /* 4807 */ // No operand predicates
5964 /* 4807 */ // MIs[0] src
5965 /* 4807 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5966 /* 4811 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
5967 /* 4815 */ // MIs[1] x
5968 /* 4815 */ // No operand predicates
5969 /* 4815 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5970 /* 4817 */ // Combiner Rule #212: sext_trunc
5971 /* 4817 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
5972 /* 4820 */ // Label 282: @4820
5973 /* 4820 */ GIM_Reject,
5974 /* 4821 */ // Label 32: @4821
5975 /* 4821 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4832), // Rule ID 164 //
5976 /* 4826 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
5977 /* 4829 */ // Combiner Rule #121: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
5978 /* 4829 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
5979 /* 4832 */ // Label 283: @4832
5980 /* 4832 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4843), // Rule ID 172 //
5981 /* 4837 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
5982 /* 4840 */ // Combiner Rule #129: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
5983 /* 4840 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
5984 /* 4843 */ // Label 284: @4843
5985 /* 4843 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(4854), // Rule ID 241 //
5986 /* 4848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
5987 /* 4851 */ // Combiner Rule #175: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
5988 /* 4851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
5989 /* 4854 */ // Label 285: @4854
5990 /* 4854 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(4875), // Rule ID 57 //
5991 /* 4859 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
5992 /* 4862 */ // MIs[0] dst
5993 /* 4862 */ // No operand predicates
5994 /* 4862 */ // MIs[0] x
5995 /* 4862 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5996 /* 4866 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5997 /* 4870 */ // MIs[1] src
5998 /* 4870 */ // No operand predicates
5999 /* 4870 */ // MIs[1] a
6000 /* 4870 */ // No operand predicates
6001 /* 4870 */ // MIs[0] b
6002 /* 4870 */ // No operand predicates
6003 /* 4870 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6004 /* 4872 */ // Combiner Rule #55: sext_inreg_of_sext_inreg
6005 /* 4872 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6006 /* 4875 */ // Label 286: @4875
6007 /* 4875 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(4886), // Rule ID 176 //
6008 /* 4880 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
6009 /* 4883 */ // MIs[0] dst
6010 /* 4883 */ // No operand predicates
6011 /* 4883 */ // MIs[0] src
6012 /* 4883 */ // No operand predicates
6013 /* 4883 */ // MIs[0] imm
6014 /* 4883 */ // No operand predicates
6015 /* 4883 */ // Combiner Rule #133: sext_inreg_to_zext_inreg
6016 /* 4883 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6017 /* 4886 */ // Label 287: @4886
6018 /* 4886 */ GIM_Reject,
6019 /* 4887 */ // Label 33: @4887
6020 /* 4887 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(4898), // Rule ID 175 //
6021 /* 4892 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
6022 /* 4895 */ // Combiner Rule #132: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6023 /* 4895 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6024 /* 4898 */ // Label 288: @4898
6025 /* 4898 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(4909), // Rule ID 271 //
6026 /* 4903 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6027 /* 4906 */ // Combiner Rule #182: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6028 /* 4906 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6029 /* 4909 */ // Label 289: @4909
6030 /* 4909 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(4930), // Rule ID 58 //
6031 /* 4914 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6032 /* 4917 */ // MIs[0] root
6033 /* 4917 */ // No operand predicates
6034 /* 4917 */ // MIs[0] select
6035 /* 4917 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6036 /* 4921 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6037 /* 4925 */ // MIs[1] cond
6038 /* 4925 */ // No operand predicates
6039 /* 4925 */ // MIs[1] true
6040 /* 4925 */ // No operand predicates
6041 /* 4925 */ // MIs[1] false
6042 /* 4925 */ // No operand predicates
6043 /* 4925 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6044 /* 4927 */ // Combiner Rule #56: select_of_zext
6045 /* 4927 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6046 /* 4930 */ // Label 290: @4930
6047 /* 4930 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(4951), // Rule ID 51 //
6048 /* 4935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6049 /* 4938 */ // MIs[0] root
6050 /* 4938 */ // No operand predicates
6051 /* 4938 */ // MIs[0] second
6052 /* 4938 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6053 /* 4942 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6054 /* 4946 */ // MIs[1] src
6055 /* 4946 */ // No operand predicates
6056 /* 4946 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6057 /* 4948 */ // Combiner Rule #49: zext_of_anyext
6058 /* 4948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6059 /* 4951 */ // Label 291: @4951
6060 /* 4951 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(4978), // Rule ID 361 //
6061 /* 4956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
6062 /* 4959 */ // MIs[0] root
6063 /* 4959 */ // No operand predicates
6064 /* 4959 */ // MIs[0] src
6065 /* 4959 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6066 /* 4963 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6067 /* 4967 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6068 /* 4973 */ // MIs[1] x
6069 /* 4973 */ // No operand predicates
6070 /* 4973 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6071 /* 4975 */ // Combiner Rule #213: zext_trunc
6072 /* 4975 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6073 /* 4978 */ // Label 292: @4978
6074 /* 4978 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(4999), // Rule ID 50 //
6075 /* 4983 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6076 /* 4986 */ // MIs[0] root
6077 /* 4986 */ // No operand predicates
6078 /* 4986 */ // MIs[0] second
6079 /* 4986 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6080 /* 4990 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6081 /* 4994 */ // MIs[1] src
6082 /* 4994 */ // No operand predicates
6083 /* 4994 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6084 /* 4996 */ // Combiner Rule #48: zext_of_zext
6085 /* 4996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6086 /* 4999 */ // Label 293: @4999
6087 /* 4999 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5016), // Rule ID 362 //
6088 /* 5004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
6089 /* 5007 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6090 /* 5013 */ // MIs[0] root
6091 /* 5013 */ // No operand predicates
6092 /* 5013 */ // MIs[0] x
6093 /* 5013 */ // No operand predicates
6094 /* 5013 */ // Combiner Rule #214: nneg_zext
6095 /* 5013 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6096 /* 5016 */ // Label 294: @5016
6097 /* 5016 */ GIM_Reject,
6098 /* 5017 */ // Label 34: @5017
6099 /* 5017 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5028), // Rule ID 82 //
6100 /* 5022 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
6101 /* 5025 */ // Combiner Rule #76: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6102 /* 5025 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6103 /* 5028 */ // Label 295: @5028
6104 /* 5028 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5039), // Rule ID 85 //
6105 /* 5033 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6106 /* 5036 */ // Combiner Rule #77: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6107 /* 5036 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6108 /* 5039 */ // Label 296: @5039
6109 /* 5039 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5050), // Rule ID 212 //
6110 /* 5044 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6111 /* 5047 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_SHL'
6112 /* 5047 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6113 /* 5050 */ // Label 297: @5050
6114 /* 5050 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5061), // Rule ID 217 //
6115 /* 5055 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6116 /* 5058 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6117 /* 5058 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6118 /* 5061 */ // Label 298: @5061
6119 /* 5061 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5072), // Rule ID 240 //
6120 /* 5066 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
6121 /* 5069 */ // Combiner Rule #174: commute_shift; wip_match_opcode 'G_SHL'
6122 /* 5069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6123 /* 5072 */ // Label 299: @5072
6124 /* 5072 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5083), // Rule ID 254 //
6125 /* 5077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6126 /* 5080 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SHL'
6127 /* 5080 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6128 /* 5083 */ // Label 300: @5083
6129 /* 5083 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5094), // Rule ID 303 //
6130 /* 5088 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6131 /* 5091 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SHL'
6132 /* 5091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6133 /* 5094 */ // Label 301: @5094
6134 /* 5094 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5129), // Rule ID 43 //
6135 /* 5099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
6136 /* 5102 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6137 /* 5108 */ // MIs[0] root
6138 /* 5108 */ // No operand predicates
6139 /* 5108 */ // MIs[0] left
6140 /* 5108 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6141 /* 5112 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6142 /* 5116 */ // MIs[1] imm
6143 /* 5116 */ // No operand predicates
6144 /* 5116 */ // MIs[0] x
6145 /* 5116 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6146 /* 5120 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6147 /* 5124 */ // MIs[2] imm1
6148 /* 5124 */ // No operand predicates
6149 /* 5124 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6150 /* 5126 */ // Combiner Rule #41: shl_of_vscale
6151 /* 5126 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6152 /* 5129 */ // Label 302: @5129
6153 /* 5129 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5169), // Rule ID 118 //
6154 /* 5134 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
6155 /* 5137 */ // MIs[0] dst
6156 /* 5137 */ // No operand predicates
6157 /* 5137 */ // MIs[0] zero
6158 /* 5137 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6159 /* 5141 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6160 /* 5145 */ // MIs[1] Operand 1
6161 /* 5145 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6162 /* 5156 */ // MIs[0] rhs
6163 /* 5156 */ // No operand predicates
6164 /* 5156 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6165 /* 5161 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6166 /* 5163 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6167 /* 5163 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6168 /* 5168 */ GIR_EraseRootFromParent_Done,
6169 /* 5169 */ // Label 303: @5169
6170 /* 5169 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5192), // Rule ID 110 //
6171 /* 5174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6172 /* 5177 */ // MIs[0] dst
6173 /* 5177 */ // No operand predicates
6174 /* 5177 */ // MIs[0] lhs
6175 /* 5177 */ // No operand predicates
6176 /* 5177 */ // MIs[0] Operand 2
6177 /* 5177 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6178 /* 5181 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6179 /* 5186 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[4]]
6180 /* 5186 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6181 /* 5191 */ GIR_EraseRootFromParent_Done,
6182 /* 5192 */ // Label 304: @5192
6183 /* 5192 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5203), // Rule ID 149 //
6184 /* 5197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
6185 /* 5200 */ // MIs[0] root
6186 /* 5200 */ // No operand predicates
6187 /* 5200 */ // MIs[0] mi.shifted
6188 /* 5200 */ // No operand predicates
6189 /* 5200 */ // MIs[0] mi.amt
6190 /* 5200 */ // No operand predicates
6191 /* 5200 */ // Combiner Rule #108: shifts_too_big @ [mi[0]]
6192 /* 5200 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6193 /* 5203 */ // Label 305: @5203
6194 /* 5203 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5214), // Rule ID 165 //
6195 /* 5208 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6196 /* 5211 */ // MIs[0] dst
6197 /* 5211 */ // No operand predicates
6198 /* 5211 */ // MIs[0] src0
6199 /* 5211 */ // No operand predicates
6200 /* 5211 */ // MIs[0] src1
6201 /* 5211 */ // No operand predicates
6202 /* 5211 */ // Combiner Rule #122: reduce_shl_of_extend
6203 /* 5211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6204 /* 5214 */ // Label 306: @5214
6205 /* 5214 */ GIM_Reject,
6206 /* 5215 */ // Label 35: @5215
6207 /* 5215 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5226), // Rule ID 87 //
6208 /* 5220 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6209 /* 5223 */ // Combiner Rule #77: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6210 /* 5223 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6211 /* 5226 */ // Label 307: @5226
6212 /* 5226 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5237), // Rule ID 214 //
6213 /* 5231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6214 /* 5234 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_LSHR'
6215 /* 5234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6216 /* 5237 */ // Label 308: @5237
6217 /* 5237 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5248), // Rule ID 219 //
6218 /* 5242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6219 /* 5245 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6220 /* 5245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6221 /* 5248 */ // Label 309: @5248
6222 /* 5248 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5259), // Rule ID 244 //
6223 /* 5253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6224 /* 5256 */ // Combiner Rule #177: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6225 /* 5256 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6226 /* 5259 */ // Label 310: @5259
6227 /* 5259 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5270), // Rule ID 246 //
6228 /* 5264 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6229 /* 5267 */ // Combiner Rule #178: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6230 /* 5267 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6231 /* 5270 */ // Label 311: @5270
6232 /* 5270 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5281), // Rule ID 251 //
6233 /* 5275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6234 /* 5278 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_LSHR'
6235 /* 5278 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6236 /* 5281 */ // Label 312: @5281
6237 /* 5281 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5292), // Rule ID 301 //
6238 /* 5286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6239 /* 5289 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6240 /* 5289 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6241 /* 5292 */ // Label 313: @5292
6242 /* 5292 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5321), // Rule ID 385 //
6243 /* 5297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6244 /* 5300 */ // MIs[0] dst
6245 /* 5300 */ // No operand predicates
6246 /* 5300 */ // MIs[0] d2
6247 /* 5300 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6248 /* 5304 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6249 /* 5308 */ // MIs[1] d1
6250 /* 5308 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6251 /* 5312 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6252 /* 5316 */ // MIs[2] x
6253 /* 5316 */ // No operand predicates
6254 /* 5316 */ // MIs[2] y
6255 /* 5316 */ // No operand predicates
6256 /* 5316 */ // MIs[0] z
6257 /* 5316 */ // No operand predicates
6258 /* 5316 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6259 /* 5318 */ // Combiner Rule #235: lshr_of_trunc_of_lshr
6260 /* 5318 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6261 /* 5321 */ // Label 314: @5321
6262 /* 5321 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5361), // Rule ID 119 //
6263 /* 5326 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
6264 /* 5329 */ // MIs[0] dst
6265 /* 5329 */ // No operand predicates
6266 /* 5329 */ // MIs[0] zero
6267 /* 5329 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6268 /* 5333 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6269 /* 5337 */ // MIs[1] Operand 1
6270 /* 5337 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6271 /* 5348 */ // MIs[0] rhs
6272 /* 5348 */ // No operand predicates
6273 /* 5348 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6274 /* 5353 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6275 /* 5355 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6276 /* 5355 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6277 /* 5360 */ GIR_EraseRootFromParent_Done,
6278 /* 5361 */ // Label 315: @5361
6279 /* 5361 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5384), // Rule ID 112 //
6280 /* 5366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6281 /* 5369 */ // MIs[0] dst
6282 /* 5369 */ // No operand predicates
6283 /* 5369 */ // MIs[0] lhs
6284 /* 5369 */ // No operand predicates
6285 /* 5369 */ // MIs[0] Operand 2
6286 /* 5369 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6287 /* 5373 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6288 /* 5378 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[6]]
6289 /* 5378 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6290 /* 5383 */ GIR_EraseRootFromParent_Done,
6291 /* 5384 */ // Label 316: @5384
6292 /* 5384 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5395), // Rule ID 151 //
6293 /* 5389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
6294 /* 5392 */ // MIs[0] root
6295 /* 5392 */ // No operand predicates
6296 /* 5392 */ // MIs[0] mi.shifted
6297 /* 5392 */ // No operand predicates
6298 /* 5392 */ // MIs[0] mi.amt
6299 /* 5392 */ // No operand predicates
6300 /* 5392 */ // Combiner Rule #108: shifts_too_big @ [mi[2]]
6301 /* 5392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6302 /* 5395 */ // Label 317: @5395
6303 /* 5395 */ GIM_Reject,
6304 /* 5396 */ // Label 36: @5396
6305 /* 5396 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5407), // Rule ID 86 //
6306 /* 5401 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6307 /* 5404 */ // Combiner Rule #77: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6308 /* 5404 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6309 /* 5407 */ // Label 318: @5407
6310 /* 5407 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5418), // Rule ID 162 //
6311 /* 5412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
6312 /* 5415 */ // Combiner Rule #119: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6313 /* 5415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6314 /* 5418 */ // Label 319: @5418
6315 /* 5418 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5429), // Rule ID 213 //
6316 /* 5423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6317 /* 5426 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_ASHR'
6318 /* 5426 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6319 /* 5429 */ // Label 320: @5429
6320 /* 5429 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5440), // Rule ID 218 //
6321 /* 5434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6322 /* 5437 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6323 /* 5437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6324 /* 5440 */ // Label 321: @5440
6325 /* 5440 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5451), // Rule ID 243 //
6326 /* 5445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6327 /* 5448 */ // Combiner Rule #177: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6328 /* 5448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6329 /* 5451 */ // Label 322: @5451
6330 /* 5451 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5462), // Rule ID 245 //
6331 /* 5456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6332 /* 5459 */ // Combiner Rule #178: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6333 /* 5459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6334 /* 5462 */ // Label 323: @5462
6335 /* 5462 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5473), // Rule ID 250 //
6336 /* 5467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6337 /* 5470 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_ASHR'
6338 /* 5470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6339 /* 5473 */ // Label 324: @5473
6340 /* 5473 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5484), // Rule ID 302 //
6341 /* 5478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6342 /* 5481 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6343 /* 5481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6344 /* 5484 */ // Label 325: @5484
6345 /* 5484 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5524), // Rule ID 120 //
6346 /* 5489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
6347 /* 5492 */ // MIs[0] dst
6348 /* 5492 */ // No operand predicates
6349 /* 5492 */ // MIs[0] zero
6350 /* 5492 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6351 /* 5496 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6352 /* 5500 */ // MIs[1] Operand 1
6353 /* 5500 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6354 /* 5511 */ // MIs[0] rhs
6355 /* 5511 */ // No operand predicates
6356 /* 5511 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6357 /* 5516 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6358 /* 5518 */ // Combiner Rule #88: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6359 /* 5518 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6360 /* 5523 */ GIR_EraseRootFromParent_Done,
6361 /* 5524 */ // Label 326: @5524
6362 /* 5524 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5547), // Rule ID 111 //
6363 /* 5529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6364 /* 5532 */ // MIs[0] dst
6365 /* 5532 */ // No operand predicates
6366 /* 5532 */ // MIs[0] lhs
6367 /* 5532 */ // No operand predicates
6368 /* 5532 */ // MIs[0] Operand 2
6369 /* 5532 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6370 /* 5536 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6371 /* 5541 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[5]]
6372 /* 5541 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6373 /* 5546 */ GIR_EraseRootFromParent_Done,
6374 /* 5547 */ // Label 327: @5547
6375 /* 5547 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5558), // Rule ID 150 //
6376 /* 5552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
6377 /* 5555 */ // MIs[0] root
6378 /* 5555 */ // No operand predicates
6379 /* 5555 */ // MIs[0] mi.shifted
6380 /* 5555 */ // No operand predicates
6381 /* 5555 */ // MIs[0] mi.amt
6382 /* 5555 */ // No operand predicates
6383 /* 5555 */ // Combiner Rule #108: shifts_too_big @ [mi[1]]
6384 /* 5555 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6385 /* 5558 */ // Label 328: @5558
6386 /* 5558 */ GIM_Reject,
6387 /* 5559 */ // Label 37: @5559
6388 /* 5559 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(5570), // Rule ID 228 //
6389 /* 5564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6390 /* 5567 */ // Combiner Rule #166: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6391 /* 5567 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6392 /* 5570 */ // Label 329: @5570
6393 /* 5570 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(5581), // Rule ID 232 //
6394 /* 5575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6395 /* 5578 */ // Combiner Rule #169: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6396 /* 5578 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6397 /* 5581 */ // Label 330: @5581
6398 /* 5581 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(5601), // Rule ID 231 //
6399 /* 5586 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6400 /* 5589 */ // MIs[0] x
6401 /* 5589 */ // No operand predicates
6402 /* 5589 */ // MIs[0] y
6403 /* 5589 */ // No operand predicates
6404 /* 5589 */ // MIs[0] z
6405 /* 5589 */ // No operand predicates
6406 /* 5589 */ // MIs[0] Operand 3
6407 /* 5589 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6408 /* 5593 */ // Combiner Rule #168: funnel_shift_left_zero
6409 /* 5593 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6410 /* 5596 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6411 /* 5598 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6412 /* 5600 */ GIR_EraseRootFromParent_Done,
6413 /* 5601 */ // Label 331: @5601
6414 /* 5601 */ GIM_Reject,
6415 /* 5602 */ // Label 38: @5602
6416 /* 5602 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(5613), // Rule ID 229 //
6417 /* 5607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6418 /* 5610 */ // Combiner Rule #166: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6419 /* 5610 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6420 /* 5613 */ // Label 332: @5613
6421 /* 5613 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(5624), // Rule ID 233 //
6422 /* 5618 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6423 /* 5621 */ // Combiner Rule #169: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6424 /* 5621 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6425 /* 5624 */ // Label 333: @5624
6426 /* 5624 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(5644), // Rule ID 230 //
6427 /* 5629 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6428 /* 5632 */ // MIs[0] x
6429 /* 5632 */ // No operand predicates
6430 /* 5632 */ // MIs[0] y
6431 /* 5632 */ // No operand predicates
6432 /* 5632 */ // MIs[0] z
6433 /* 5632 */ // No operand predicates
6434 /* 5632 */ // MIs[0] Operand 3
6435 /* 5632 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6436 /* 5636 */ // Combiner Rule #167: funnel_shift_right_zero
6437 /* 5636 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6438 /* 5639 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6439 /* 5641 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6440 /* 5643 */ GIR_EraseRootFromParent_Done,
6441 /* 5644 */ // Label 334: @5644
6442 /* 5644 */ GIM_Reject,
6443 /* 5645 */ // Label 39: @5645
6444 /* 5645 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(5668), // Rule ID 115 //
6445 /* 5650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6446 /* 5653 */ // MIs[0] dst
6447 /* 5653 */ // No operand predicates
6448 /* 5653 */ // MIs[0] lhs
6449 /* 5653 */ // No operand predicates
6450 /* 5653 */ // MIs[0] Operand 2
6451 /* 5653 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6452 /* 5657 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6453 /* 5662 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[9]]
6454 /* 5662 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6455 /* 5667 */ GIR_EraseRootFromParent_Done,
6456 /* 5668 */ // Label 335: @5668
6457 /* 5668 */ GIM_Reject,
6458 /* 5669 */ // Label 40: @5669
6459 /* 5669 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(5692), // Rule ID 114 //
6460 /* 5674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6461 /* 5677 */ // MIs[0] dst
6462 /* 5677 */ // No operand predicates
6463 /* 5677 */ // MIs[0] lhs
6464 /* 5677 */ // No operand predicates
6465 /* 5677 */ // MIs[0] Operand 2
6466 /* 5677 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6467 /* 5681 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6468 /* 5686 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[8]]
6469 /* 5686 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6470 /* 5691 */ GIR_EraseRootFromParent_Done,
6471 /* 5692 */ // Label 336: @5692
6472 /* 5692 */ GIM_Reject,
6473 /* 5693 */ // Label 41: @5693
6474 /* 5693 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(5704), // Rule ID 157 //
6475 /* 5698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
6476 /* 5701 */ // Combiner Rule #114: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
6477 /* 5701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
6478 /* 5704 */ // Label 337: @5704
6479 /* 5704 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(5715), // Rule ID 158 //
6480 /* 5709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
6481 /* 5712 */ // Combiner Rule #115: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
6482 /* 5712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
6483 /* 5715 */ // Label 338: @5715
6484 /* 5715 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(5726), // Rule ID 161 //
6485 /* 5720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
6486 /* 5723 */ // Combiner Rule #118: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
6487 /* 5723 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
6488 /* 5726 */ // Label 339: @5726
6489 /* 5726 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(5737), // Rule ID 155 //
6490 /* 5731 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
6491 /* 5734 */ // MIs[0] root
6492 /* 5734 */ // No operand predicates
6493 /* 5734 */ // MIs[0] pred
6494 /* 5734 */ // No operand predicates
6495 /* 5734 */ // MIs[0] lhs
6496 /* 5734 */ // No operand predicates
6497 /* 5734 */ // MIs[0] rhs
6498 /* 5734 */ // No operand predicates
6499 /* 5734 */ // Combiner Rule #112: canonicalize_icmp
6500 /* 5734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6501 /* 5737 */ // Label 340: @5737
6502 /* 5737 */ GIM_Reject,
6503 /* 5738 */ // Label 42: @5738
6504 /* 5738 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(5749), // Rule ID 156 //
6505 /* 5743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6506 /* 5746 */ // MIs[0] root
6507 /* 5746 */ // No operand predicates
6508 /* 5746 */ // MIs[0] pred
6509 /* 5746 */ // No operand predicates
6510 /* 5746 */ // MIs[0] lhs
6511 /* 5746 */ // No operand predicates
6512 /* 5746 */ // MIs[0] rhs
6513 /* 5746 */ // No operand predicates
6514 /* 5746 */ // Combiner Rule #113: canonicalize_fcmp
6515 /* 5746 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
6516 /* 5749 */ // Label 341: @5749
6517 /* 5749 */ GIM_Reject,
6518 /* 5750 */ // Label 43: @5750
6519 /* 5750 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(5761), // Rule ID 105 //
6520 /* 5755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6521 /* 5758 */ // Combiner Rule #85: select_same_val; wip_match_opcode 'G_SELECT'
6522 /* 5758 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
6523 /* 5761 */ // Label 342: @5761
6524 /* 5761 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(5772), // Rule ID 168 //
6525 /* 5766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
6526 /* 5769 */ // Combiner Rule #125: select_constant_cmp; wip_match_opcode 'G_SELECT'
6527 /* 5769 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
6528 /* 5772 */ // Label 343: @5772
6529 /* 5772 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(5783), // Rule ID 170 //
6530 /* 5777 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6531 /* 5780 */ // Combiner Rule #127: match_selects; wip_match_opcode 'G_SELECT'
6532 /* 5780 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
6533 /* 5783 */ // Label 344: @5783
6534 /* 5783 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(5794), // Rule ID 325 //
6535 /* 5788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
6536 /* 5791 */ // Combiner Rule #204: select_to_minmax; wip_match_opcode 'G_SELECT'
6537 /* 5791 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
6538 /* 5794 */ // Label 345: @5794
6539 /* 5794 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(5815), // Rule ID 169 //
6540 /* 5799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6541 /* 5802 */ // MIs[0] root
6542 /* 5802 */ // No operand predicates
6543 /* 5802 */ // MIs[0] tst
6544 /* 5802 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6545 /* 5806 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6546 /* 5810 */ // MIs[1] tst1
6547 /* 5810 */ // No operand predicates
6548 /* 5810 */ // MIs[1] a
6549 /* 5810 */ // No operand predicates
6550 /* 5810 */ // MIs[1] b
6551 /* 5810 */ // No operand predicates
6552 /* 5810 */ // MIs[0] x
6553 /* 5810 */ // No operand predicates
6554 /* 5810 */ // MIs[0] y
6555 /* 5810 */ // No operand predicates
6556 /* 5810 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6557 /* 5812 */ // Combiner Rule #126: select_to_iminmax
6558 /* 5812 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
6559 /* 5815 */ // Label 346: @5815
6560 /* 5815 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(5844), // Rule ID 167 //
6561 /* 5820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6562 /* 5823 */ // MIs[0] dst
6563 /* 5823 */ // No operand predicates
6564 /* 5823 */ // MIs[0] undef
6565 /* 5823 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6566 /* 5827 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6567 /* 5831 */ // MIs[0] x
6568 /* 5831 */ // No operand predicates
6569 /* 5831 */ // MIs[0] y
6570 /* 5831 */ // No operand predicates
6571 /* 5831 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6572 /* 5836 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6573 /* 5838 */ // Combiner Rule #124: select_undef_cmp
6574 /* 5838 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6575 /* 5843 */ GIR_EraseRootFromParent_Done,
6576 /* 5844 */ // Label 347: @5844
6577 /* 5844 */ GIM_Reject,
6578 /* 5845 */ // Label 44: @5845
6579 /* 5845 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(5856), // Rule ID 336 //
6580 /* 5850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6581 /* 5853 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
6582 /* 5853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6583 /* 5856 */ // Label 348: @5856
6584 /* 5856 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(5867), // Rule ID 378 //
6585 /* 5861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6586 /* 5864 */ // Combiner Rule #229: match_addos; wip_match_opcode 'G_UADDO'
6587 /* 5864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6588 /* 5867 */ // Label 349: @5867
6589 /* 5867 */ GIM_Reject,
6590 /* 5868 */ // Label 45: @5868
6591 /* 5868 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(5879), // Rule ID 201 //
6592 /* 5873 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6593 /* 5876 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_UADDE'
6594 /* 5876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6595 /* 5879 */ // Label 350: @5879
6596 /* 5879 */ GIM_Reject,
6597 /* 5880 */ // Label 46: @5880
6598 /* 5880 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(5891), // Rule ID 380 //
6599 /* 5885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
6600 /* 5888 */ // Combiner Rule #230: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
6601 /* 5888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6602 /* 5891 */ // Label 351: @5891
6603 /* 5891 */ GIM_Reject,
6604 /* 5892 */ // Label 47: @5892
6605 /* 5892 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(5903), // Rule ID 203 //
6606 /* 5897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6607 /* 5900 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_USUBE'
6608 /* 5900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6609 /* 5903 */ // Label 352: @5903
6610 /* 5903 */ GIM_Reject,
6611 /* 5904 */ // Label 48: @5904
6612 /* 5904 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(5915), // Rule ID 337 //
6613 /* 5909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6614 /* 5912 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
6615 /* 5912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6616 /* 5915 */ // Label 353: @5915
6617 /* 5915 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(5926), // Rule ID 377 //
6618 /* 5920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6619 /* 5923 */ // Combiner Rule #229: match_addos; wip_match_opcode 'G_SADDO'
6620 /* 5923 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6621 /* 5926 */ // Label 354: @5926
6622 /* 5926 */ GIM_Reject,
6623 /* 5927 */ // Label 49: @5927
6624 /* 5927 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(5938), // Rule ID 202 //
6625 /* 5932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6626 /* 5935 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_SADDE'
6627 /* 5935 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6628 /* 5938 */ // Label 355: @5938
6629 /* 5938 */ GIM_Reject,
6630 /* 5939 */ // Label 50: @5939
6631 /* 5939 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(5950), // Rule ID 379 //
6632 /* 5944 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
6633 /* 5947 */ // Combiner Rule #230: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
6634 /* 5947 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6635 /* 5950 */ // Label 356: @5950
6636 /* 5950 */ GIM_Reject,
6637 /* 5951 */ // Label 51: @5951
6638 /* 5951 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(5962), // Rule ID 204 //
6639 /* 5956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6640 /* 5959 */ // Combiner Rule #156: adde_to_addo; wip_match_opcode 'G_SSUBE'
6641 /* 5959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6642 /* 5962 */ // Label 357: @5962
6643 /* 5962 */ GIM_Reject,
6644 /* 5963 */ // Label 52: @5963
6645 /* 5963 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(5974), // Rule ID 197 //
6646 /* 5968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
6647 /* 5971 */ // Combiner Rule #154: mulo_by_2; wip_match_opcode 'G_UMULO'
6648 /* 5971 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6649 /* 5974 */ // Label 358: @5974
6650 /* 5974 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(5985), // Rule ID 199 //
6651 /* 5979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
6652 /* 5982 */ // Combiner Rule #155: mulo_by_0; wip_match_opcode 'G_UMULO'
6653 /* 5982 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6654 /* 5985 */ // Label 359: @5985
6655 /* 5985 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(5996), // Rule ID 338 //
6656 /* 5990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6657 /* 5993 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
6658 /* 5993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6659 /* 5996 */ // Label 360: @5996
6660 /* 5996 */ GIM_Reject,
6661 /* 5997 */ // Label 53: @5997
6662 /* 5997 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6008), // Rule ID 198 //
6663 /* 6002 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
6664 /* 6005 */ // Combiner Rule #154: mulo_by_2; wip_match_opcode 'G_SMULO'
6665 /* 6005 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6666 /* 6008 */ // Label 361: @6008
6667 /* 6008 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6019), // Rule ID 200 //
6668 /* 6013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
6669 /* 6016 */ // Combiner Rule #155: mulo_by_0; wip_match_opcode 'G_SMULO'
6670 /* 6016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6671 /* 6019 */ // Label 362: @6019
6672 /* 6019 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6030), // Rule ID 339 //
6673 /* 6024 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6674 /* 6027 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
6675 /* 6027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6676 /* 6030 */ // Label 363: @6030
6677 /* 6030 */ GIM_Reject,
6678 /* 6031 */ // Label 54: @6031
6679 /* 6031 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6042), // Rule ID 275 //
6680 /* 6036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6681 /* 6039 */ // Combiner Rule #184: mulh_to_lshr; wip_match_opcode 'G_UMULH'
6682 /* 6039 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
6683 /* 6042 */ // Label 364: @6042
6684 /* 6042 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6053), // Rule ID 340 //
6685 /* 6047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6686 /* 6050 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
6687 /* 6050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6688 /* 6053 */ // Label 365: @6053
6689 /* 6053 */ GIM_Reject,
6690 /* 6054 */ // Label 55: @6054
6691 /* 6054 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6065), // Rule ID 341 //
6692 /* 6059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6693 /* 6062 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
6694 /* 6062 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6695 /* 6065 */ // Label 366: @6065
6696 /* 6065 */ GIM_Reject,
6697 /* 6066 */ // Label 56: @6066
6698 /* 6066 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6077), // Rule ID 342 //
6699 /* 6071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6700 /* 6074 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
6701 /* 6074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6702 /* 6077 */ // Label 367: @6077
6703 /* 6077 */ GIM_Reject,
6704 /* 6078 */ // Label 57: @6078
6705 /* 6078 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6089), // Rule ID 343 //
6706 /* 6083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6707 /* 6086 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
6708 /* 6086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6709 /* 6089 */ // Label 368: @6089
6710 /* 6089 */ GIM_Reject,
6711 /* 6090 */ // Label 58: @6090
6712 /* 6090 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6101), // Rule ID 216 //
6713 /* 6095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6714 /* 6098 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
6715 /* 6098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6716 /* 6101 */ // Label 369: @6101
6717 /* 6101 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6112), // Rule ID 220 //
6718 /* 6106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6719 /* 6109 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
6720 /* 6109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6721 /* 6112 */ // Label 370: @6112
6722 /* 6112 */ GIM_Reject,
6723 /* 6113 */ // Label 59: @6113
6724 /* 6113 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6124), // Rule ID 215 //
6725 /* 6118 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
6726 /* 6121 */ // Combiner Rule #161: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
6727 /* 6121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6728 /* 6124 */ // Label 371: @6124
6729 /* 6124 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6135), // Rule ID 221 //
6730 /* 6129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
6731 /* 6132 */ // Combiner Rule #162: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
6732 /* 6132 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6733 /* 6135 */ // Label 372: @6135
6734 /* 6135 */ GIM_Reject,
6735 /* 6136 */ // Label 60: @6136
6736 /* 6136 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6147), // Rule ID 344 //
6737 /* 6141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6738 /* 6144 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
6739 /* 6144 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6740 /* 6147 */ // Label 373: @6147
6741 /* 6147 */ GIM_Reject,
6742 /* 6148 */ // Label 61: @6148
6743 /* 6148 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6159), // Rule ID 345 //
6744 /* 6153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6745 /* 6156 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
6746 /* 6156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6747 /* 6159 */ // Label 374: @6159
6748 /* 6159 */ GIM_Reject,
6749 /* 6160 */ // Label 62: @6160
6750 /* 6160 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6171), // Rule ID 346 //
6751 /* 6165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6752 /* 6168 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
6753 /* 6168 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6754 /* 6171 */ // Label 375: @6171
6755 /* 6171 */ GIM_Reject,
6756 /* 6172 */ // Label 63: @6172
6757 /* 6172 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6183), // Rule ID 347 //
6758 /* 6177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6759 /* 6180 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
6760 /* 6180 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6761 /* 6183 */ // Label 376: @6183
6762 /* 6183 */ GIM_Reject,
6763 /* 6184 */ // Label 64: @6184
6764 /* 6184 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6195), // Rule ID 265 //
6765 /* 6189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6766 /* 6192 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
6767 /* 6192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6768 /* 6195 */ // Label 377: @6195
6769 /* 6195 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6206), // Rule ID 276 //
6770 /* 6200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6771 /* 6203 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FADD'
6772 /* 6203 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6773 /* 6206 */ // Label 378: @6206
6774 /* 6206 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6217), // Rule ID 283 //
6775 /* 6211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6776 /* 6214 */ // Combiner Rule #187: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6777 /* 6214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
6778 /* 6217 */ // Label 379: @6217
6779 /* 6217 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6228), // Rule ID 284 //
6780 /* 6222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
6781 /* 6225 */ // Combiner Rule #188: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6782 /* 6225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
6783 /* 6228 */ // Label 380: @6228
6784 /* 6228 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6239), // Rule ID 285 //
6785 /* 6233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
6786 /* 6236 */ // Combiner Rule #189: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6787 /* 6236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
6788 /* 6239 */ // Label 381: @6239
6789 /* 6239 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6250), // Rule ID 286 //
6790 /* 6244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
6791 /* 6247 */ // Combiner Rule #190: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6792 /* 6247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
6793 /* 6250 */ // Label 382: @6250
6794 /* 6250 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6261), // Rule ID 309 //
6795 /* 6255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6796 /* 6258 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FADD'
6797 /* 6258 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6798 /* 6261 */ // Label 383: @6261
6799 /* 6261 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6272), // Rule ID 348 //
6800 /* 6266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
6801 /* 6269 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
6802 /* 6269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
6803 /* 6272 */ // Label 384: @6272
6804 /* 6272 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6295), // Rule ID 141 //
6805 /* 6277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6806 /* 6280 */ // MIs[0] dst
6807 /* 6280 */ // No operand predicates
6808 /* 6280 */ // MIs[0] x
6809 /* 6280 */ // No operand predicates
6810 /* 6280 */ // MIs[0] y
6811 /* 6280 */ // No operand predicates
6812 /* 6280 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
6813 /* 6284 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6814 /* 6289 */ // Combiner Rule #102: right_identity_neg_zero_fp
6815 /* 6289 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6816 /* 6294 */ GIR_EraseRootFromParent_Done,
6817 /* 6295 */ // Label 385: @6295
6818 /* 6295 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6324), // Rule ID 142 //
6819 /* 6300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
6820 /* 6303 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
6821 /* 6309 */ // MIs[0] dst
6822 /* 6309 */ // No operand predicates
6823 /* 6309 */ // MIs[0] x
6824 /* 6309 */ // No operand predicates
6825 /* 6309 */ // MIs[0] y
6826 /* 6309 */ // No operand predicates
6827 /* 6309 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
6828 /* 6313 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6829 /* 6318 */ // Combiner Rule #103: right_identity_neg_zero_fp_nsz
6830 /* 6318 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6831 /* 6323 */ GIR_EraseRootFromParent_Done,
6832 /* 6324 */ // Label 386: @6324
6833 /* 6324 */ GIM_Reject,
6834 /* 6325 */ // Label 65: @6325
6835 /* 6325 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6336), // Rule ID 266 //
6836 /* 6330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6837 /* 6333 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
6838 /* 6333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6839 /* 6336 */ // Label 387: @6336
6840 /* 6336 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6347), // Rule ID 277 //
6841 /* 6341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6842 /* 6344 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FSUB'
6843 /* 6344 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6844 /* 6347 */ // Label 388: @6347
6845 /* 6347 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6358), // Rule ID 287 //
6846 /* 6352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6847 /* 6355 */ // Combiner Rule #191: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6848 /* 6355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
6849 /* 6358 */ // Label 389: @6358
6850 /* 6358 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6369), // Rule ID 288 //
6851 /* 6363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
6852 /* 6366 */ // Combiner Rule #192: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6853 /* 6366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
6854 /* 6369 */ // Label 390: @6369
6855 /* 6369 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6380), // Rule ID 289 //
6856 /* 6374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
6857 /* 6377 */ // Combiner Rule #193: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6858 /* 6377 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
6859 /* 6380 */ // Label 391: @6380
6860 /* 6380 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(6391), // Rule ID 290 //
6861 /* 6385 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6862 /* 6388 */ // Combiner Rule #194: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6863 /* 6388 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
6864 /* 6391 */ // Label 392: @6391
6865 /* 6391 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(6402), // Rule ID 310 //
6866 /* 6396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6867 /* 6399 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FSUB'
6868 /* 6399 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6869 /* 6402 */ // Label 393: @6402
6870 /* 6402 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(6413), // Rule ID 326 //
6871 /* 6407 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
6872 /* 6410 */ // Combiner Rule #205: fsub_to_fneg; wip_match_opcode 'G_FSUB'
6873 /* 6410 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
6874 /* 6413 */ // Label 394: @6413
6875 /* 6413 */ GIM_Reject,
6876 /* 6414 */ // Label 66: @6414
6877 /* 6414 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(6425), // Rule ID 267 //
6878 /* 6419 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6879 /* 6422 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
6880 /* 6422 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6881 /* 6425 */ // Label 395: @6425
6882 /* 6425 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(6436), // Rule ID 278 //
6883 /* 6430 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6884 /* 6433 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FMUL'
6885 /* 6433 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6886 /* 6436 */ // Label 396: @6436
6887 /* 6436 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(6447), // Rule ID 308 //
6888 /* 6441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6889 /* 6444 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMUL'
6890 /* 6444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6891 /* 6447 */ // Label 397: @6447
6892 /* 6447 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(6458), // Rule ID 349 //
6893 /* 6452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
6894 /* 6455 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
6895 /* 6455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
6896 /* 6458 */ // Label 398: @6458
6897 /* 6458 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(6481), // Rule ID 132 //
6898 /* 6463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6899 /* 6466 */ // MIs[0] dst
6900 /* 6466 */ // No operand predicates
6901 /* 6466 */ // MIs[0] x
6902 /* 6466 */ // No operand predicates
6903 /* 6466 */ // MIs[0] y
6904 /* 6466 */ // No operand predicates
6905 /* 6466 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
6906 /* 6470 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6907 /* 6475 */ // Combiner Rule #95: right_identity_one_fp
6908 /* 6475 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6909 /* 6480 */ GIR_EraseRootFromParent_Done,
6910 /* 6481 */ // Label 399: @6481
6911 /* 6481 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(6501), // Rule ID 143 //
6912 /* 6486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
6913 /* 6489 */ // MIs[0] dst
6914 /* 6489 */ // No operand predicates
6915 /* 6489 */ // MIs[0] x
6916 /* 6489 */ // No operand predicates
6917 /* 6489 */ // MIs[0] y
6918 /* 6489 */ // No operand predicates
6919 /* 6489 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6920 /* 6493 */ // Combiner Rule #104: right_identity_neg_one_fp
6921 /* 6493 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
6922 /* 6496 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6923 /* 6498 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6924 /* 6500 */ GIR_EraseRootFromParent_Done,
6925 /* 6501 */ // Label 400: @6501
6926 /* 6501 */ GIM_Reject,
6927 /* 6502 */ // Label 67: @6502
6928 /* 6502 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(6513), // Rule ID 270 //
6929 /* 6507 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6930 /* 6510 */ // Combiner Rule #181: constant_fold_fma; wip_match_opcode 'G_FMA'
6931 /* 6510 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
6932 /* 6513 */ // Label 401: @6513
6933 /* 6513 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(6524), // Rule ID 281 //
6934 /* 6518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6935 /* 6521 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FMA'
6936 /* 6521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6937 /* 6524 */ // Label 402: @6524
6938 /* 6524 */ GIM_Reject,
6939 /* 6525 */ // Label 68: @6525
6940 /* 6525 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(6536), // Rule ID 269 //
6941 /* 6530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6942 /* 6533 */ // Combiner Rule #181: constant_fold_fma; wip_match_opcode 'G_FMAD'
6943 /* 6533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
6944 /* 6536 */ // Label 403: @6536
6945 /* 6536 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(6547), // Rule ID 280 //
6946 /* 6541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6947 /* 6544 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FMAD'
6948 /* 6544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6949 /* 6547 */ // Label 404: @6547
6950 /* 6547 */ GIM_Reject,
6951 /* 6548 */ // Label 69: @6548
6952 /* 6548 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(6559), // Rule ID 268 //
6953 /* 6553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6954 /* 6556 */ // Combiner Rule #180: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
6955 /* 6556 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6956 /* 6559 */ // Label 405: @6559
6957 /* 6559 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(6570), // Rule ID 279 //
6958 /* 6564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6959 /* 6567 */ // Combiner Rule #185: redundant_neg_operands; wip_match_opcode 'G_FDIV'
6960 /* 6567 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6961 /* 6570 */ // Label 406: @6570
6962 /* 6570 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(6581), // Rule ID 311 //
6963 /* 6575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6964 /* 6578 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FDIV'
6965 /* 6578 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6966 /* 6581 */ // Label 407: @6581
6967 /* 6581 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(6592), // Rule ID 323 //
6968 /* 6586 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
6969 /* 6589 */ // MIs[0] dst
6970 /* 6589 */ // No operand predicates
6971 /* 6589 */ // MIs[0] src1
6972 /* 6589 */ // No operand predicates
6973 /* 6589 */ // MIs[0] src2
6974 /* 6589 */ // No operand predicates
6975 /* 6589 */ // Combiner Rule #202: fdiv_repeated_divison
6976 /* 6589 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
6977 /* 6592 */ // Label 408: @6592
6978 /* 6592 */ GIM_Reject,
6979 /* 6593 */ // Label 70: @6593
6980 /* 6593 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(6604), // Rule ID 312 //
6981 /* 6598 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6982 /* 6601 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FREM'
6983 /* 6601 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6984 /* 6604 */ // Label 409: @6604
6985 /* 6604 */ GIM_Reject,
6986 /* 6605 */ // Label 71: @6605
6987 /* 6605 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(6626), // Rule ID 209 //
6988 /* 6610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6989 /* 6613 */ // MIs[0] dst
6990 /* 6613 */ // No operand predicates
6991 /* 6613 */ // MIs[0] float
6992 /* 6613 */ // No operand predicates
6993 /* 6613 */ // MIs[0] int
6994 /* 6613 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6995 /* 6617 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6996 /* 6621 */ // MIs[1] imm
6997 /* 6621 */ // No operand predicates
6998 /* 6621 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6999 /* 6623 */ // Combiner Rule #158: expand_const_fpowi
7000 /* 6623 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7001 /* 6626 */ // Label 410: @6626
7002 /* 6626 */ GIM_Reject,
7003 /* 6627 */ // Label 72: @6627
7004 /* 6627 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(6648), // Rule ID 183 //
7005 /* 6632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7006 /* 6635 */ // MIs[0] dst
7007 /* 6635 */ // No operand predicates
7008 /* 6635 */ // MIs[0] src0
7009 /* 6635 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7010 /* 6639 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7011 /* 6643 */ // MIs[1] cst
7012 /* 6643 */ // No operand predicates
7013 /* 6643 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7014 /* 6645 */ // Combiner Rule #140: constant_fold_flog2
7015 /* 6645 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7016 /* 6648 */ // Label 411: @6648
7017 /* 6648 */ GIM_Reject,
7018 /* 6649 */ // Label 73: @6649
7019 /* 6649 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(6670), // Rule ID 180 //
7020 /* 6654 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
7021 /* 6657 */ // MIs[0] dst
7022 /* 6657 */ // No operand predicates
7023 /* 6657 */ // MIs[0] src0
7024 /* 6657 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7025 /* 6661 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7026 /* 6665 */ // MIs[1] cst
7027 /* 6665 */ // No operand predicates
7028 /* 6665 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7029 /* 6667 */ // Combiner Rule #137: constant_fold_fneg
7030 /* 6667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7031 /* 6670 */ // Label 412: @6670
7032 /* 6670 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(6699), // Rule ID 130 //
7033 /* 6675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7034 /* 6678 */ // MIs[0] dst
7035 /* 6678 */ // No operand predicates
7036 /* 6678 */ // MIs[0] t
7037 /* 6678 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7038 /* 6682 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7039 /* 6686 */ // MIs[1] src
7040 /* 6686 */ // No operand predicates
7041 /* 6686 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7042 /* 6691 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7043 /* 6693 */ // Combiner Rule #93: fneg_fneg_fold
7044 /* 6693 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7045 /* 6698 */ GIR_EraseRootFromParent_Done,
7046 /* 6699 */ // Label 413: @6699
7047 /* 6699 */ GIM_Reject,
7048 /* 6700 */ // Label 74: @6700
7049 /* 6700 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(6721), // Rule ID 185 //
7050 /* 6705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7051 /* 6708 */ // MIs[0] dst
7052 /* 6708 */ // No operand predicates
7053 /* 6708 */ // MIs[0] src0
7054 /* 6708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7055 /* 6712 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7056 /* 6716 */ // MIs[1] cst
7057 /* 6716 */ // No operand predicates
7058 /* 6716 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7059 /* 6718 */ // Combiner Rule #142: constant_fold_fpext
7060 /* 6718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7061 /* 6721 */ // Label 414: @6721
7062 /* 6721 */ GIM_Reject,
7063 /* 6722 */ // Label 75: @6722
7064 /* 6722 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(6743), // Rule ID 184 //
7065 /* 6727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
7066 /* 6730 */ // MIs[0] dst
7067 /* 6730 */ // No operand predicates
7068 /* 6730 */ // MIs[0] src0
7069 /* 6730 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7070 /* 6734 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7071 /* 6738 */ // MIs[1] cst
7072 /* 6738 */ // No operand predicates
7073 /* 6738 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7074 /* 6740 */ // Combiner Rule #141: constant_fold_fptrunc
7075 /* 6740 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7076 /* 6743 */ // Label 415: @6743
7077 /* 6743 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(6764), // Rule ID 140 //
7078 /* 6748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
7079 /* 6751 */ // MIs[0] dst
7080 /* 6751 */ // No operand predicates
7081 /* 6751 */ // MIs[0] src1
7082 /* 6751 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7083 /* 6755 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7084 /* 6759 */ // MIs[1] src0
7085 /* 6759 */ // No operand predicates
7086 /* 6759 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7087 /* 6761 */ // Combiner Rule #101: fptrunc_fpext_fold
7088 /* 6761 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7089 /* 6764 */ // Label 416: @6764
7090 /* 6764 */ GIM_Reject,
7091 /* 6765 */ // Label 76: @6765
7092 /* 6765 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(6786), // Rule ID 94 //
7093 /* 6770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7094 /* 6773 */ // MIs[0] dst
7095 /* 6773 */ // No operand predicates
7096 /* 6773 */ // MIs[0] __unary_undef_to_undef_match_0.x
7097 /* 6773 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7098 /* 6777 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7099 /* 6781 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7100 /* 6783 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7101 /* 6783 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7102 /* 6786 */ // Label 417: @6786
7103 /* 6786 */ GIM_Reject,
7104 /* 6787 */ // Label 77: @6787
7105 /* 6787 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(6808), // Rule ID 95 //
7106 /* 6792 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7107 /* 6795 */ // MIs[0] dst
7108 /* 6795 */ // No operand predicates
7109 /* 6795 */ // MIs[0] __unary_undef_to_undef_match_0.x
7110 /* 6795 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7111 /* 6799 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7112 /* 6803 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7113 /* 6805 */ // Combiner Rule #79: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7114 /* 6805 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7115 /* 6808 */ // Label 418: @6808
7116 /* 6808 */ GIM_Reject,
7117 /* 6809 */ // Label 78: @6809
7118 /* 6809 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(6820), // Rule ID 78 //
7119 /* 6814 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7120 /* 6817 */ // Combiner Rule #73: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7121 /* 6817 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7122 /* 6820 */ // Label 419: @6820
7123 /* 6820 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(6835), // Rule ID 193 //
7124 /* 6825 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
7125 /* 6828 */ // MIs[0] dst
7126 /* 6828 */ // No operand predicates
7127 /* 6828 */ // MIs[0] Operand 1
7128 /* 6828 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7129 /* 6832 */ // Combiner Rule #150: itof_const_zero_fold_si
7130 /* 6832 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7131 /* 6835 */ // Label 420: @6835
7132 /* 6835 */ GIM_Reject,
7133 /* 6836 */ // Label 79: @6836
7134 /* 6836 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(6847), // Rule ID 77 //
7135 /* 6841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7136 /* 6844 */ // Combiner Rule #73: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7137 /* 6844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7138 /* 6847 */ // Label 421: @6847
7139 /* 6847 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(6862), // Rule ID 194 //
7140 /* 6852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
7141 /* 6855 */ // MIs[0] dst
7142 /* 6855 */ // No operand predicates
7143 /* 6855 */ // MIs[0] Operand 1
7144 /* 6855 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7145 /* 6859 */ // Combiner Rule #151: itof_const_zero_fold_ui
7146 /* 6859 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7147 /* 6862 */ // Label 422: @6862
7148 /* 6862 */ GIM_Reject,
7149 /* 6863 */ // Label 80: @6863
7150 /* 6863 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(6892), // Rule ID 21 //
7151 /* 6868 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
7152 /* 6871 */ // MIs[0] dst
7153 /* 6871 */ // No operand predicates
7154 /* 6871 */ // MIs[0] src
7155 /* 6871 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7156 /* 6875 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7157 /* 6879 */ // MIs[1] __idempotent_prop_match_0.x
7158 /* 6879 */ // No operand predicates
7159 /* 6879 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7160 /* 6884 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7161 /* 6886 */ // Combiner Rule #20: idempotent_prop @ [__idempotent_prop_match_0[1]]
7162 /* 6886 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7163 /* 6891 */ GIR_EraseRootFromParent_Done,
7164 /* 6892 */ // Label 423: @6892
7165 /* 6892 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(6913), // Rule ID 181 //
7166 /* 6897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7167 /* 6900 */ // MIs[0] dst
7168 /* 6900 */ // No operand predicates
7169 /* 6900 */ // MIs[0] src0
7170 /* 6900 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7171 /* 6904 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7172 /* 6908 */ // MIs[1] cst
7173 /* 6908 */ // No operand predicates
7174 /* 6908 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7175 /* 6910 */ // Combiner Rule #138: constant_fold_fabs
7176 /* 6910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7177 /* 6913 */ // Label 424: @6913
7178 /* 6913 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(6941), // Rule ID 274 //
7179 /* 6918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7180 /* 6921 */ // MIs[0] dst
7181 /* 6921 */ // No operand predicates
7182 /* 6921 */ // MIs[0] tmp
7183 /* 6921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7184 /* 6925 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7185 /* 6929 */ // MIs[1] x
7186 /* 6929 */ // No operand predicates
7187 /* 6929 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7188 /* 6931 */ // Combiner Rule #183: fabs_fneg_fold
7189 /* 6931 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7190 /* 6934 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7191 /* 6936 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7192 /* 6940 */ GIR_EraseRootFromParent_Done,
7193 /* 6941 */ // Label 425: @6941
7194 /* 6941 */ GIM_Reject,
7195 /* 6942 */ // Label 81: @6942
7196 /* 6942 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(6971), // Rule ID 22 //
7197 /* 6947 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
7198 /* 6950 */ // MIs[0] dst
7199 /* 6950 */ // No operand predicates
7200 /* 6950 */ // MIs[0] src
7201 /* 6950 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7202 /* 6954 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7203 /* 6958 */ // MIs[1] __idempotent_prop_match_0.x
7204 /* 6958 */ // No operand predicates
7205 /* 6958 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7206 /* 6963 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7207 /* 6965 */ // Combiner Rule #20: idempotent_prop @ [__idempotent_prop_match_0[2]]
7208 /* 6965 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7209 /* 6970 */ GIR_EraseRootFromParent_Done,
7210 /* 6971 */ // Label 426: @6971
7211 /* 6971 */ GIM_Reject,
7212 /* 6972 */ // Label 82: @6972
7213 /* 6972 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(6983), // Rule ID 205 //
7214 /* 6977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7215 /* 6980 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7216 /* 6980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7217 /* 6983 */ // Label 427: @6983
7218 /* 6983 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(6994), // Rule ID 313 //
7219 /* 6988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7220 /* 6991 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7221 /* 6991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7222 /* 6994 */ // Label 428: @6994
7223 /* 6994 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7005), // Rule ID 350 //
7224 /* 6999 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7225 /* 7002 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7226 /* 7002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7227 /* 7005 */ // Label 429: @7005
7228 /* 7005 */ GIM_Reject,
7229 /* 7006 */ // Label 83: @7006
7230 /* 7006 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7017), // Rule ID 206 //
7231 /* 7011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7232 /* 7014 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7233 /* 7014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7234 /* 7017 */ // Label 430: @7017
7235 /* 7017 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7028), // Rule ID 314 //
7236 /* 7022 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7237 /* 7025 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7238 /* 7025 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7239 /* 7028 */ // Label 431: @7028
7240 /* 7028 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7039), // Rule ID 351 //
7241 /* 7033 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7242 /* 7036 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7243 /* 7036 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7244 /* 7039 */ // Label 432: @7039
7245 /* 7039 */ GIM_Reject,
7246 /* 7040 */ // Label 84: @7040
7247 /* 7040 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7051), // Rule ID 352 //
7248 /* 7045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7249 /* 7048 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7250 /* 7048 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7251 /* 7051 */ // Label 433: @7051
7252 /* 7051 */ GIM_Reject,
7253 /* 7052 */ // Label 85: @7052
7254 /* 7052 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7063), // Rule ID 353 //
7255 /* 7057 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7256 /* 7060 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7257 /* 7060 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7258 /* 7063 */ // Label 434: @7063
7259 /* 7063 */ GIM_Reject,
7260 /* 7064 */ // Label 86: @7064
7261 /* 7064 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7075), // Rule ID 207 //
7262 /* 7069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7263 /* 7072 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7264 /* 7072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7265 /* 7075 */ // Label 435: @7075
7266 /* 7075 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7086), // Rule ID 315 //
7267 /* 7080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7268 /* 7083 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7269 /* 7083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7270 /* 7086 */ // Label 436: @7086
7271 /* 7086 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7097), // Rule ID 354 //
7272 /* 7091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7273 /* 7094 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7274 /* 7094 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7275 /* 7097 */ // Label 437: @7097
7276 /* 7097 */ GIM_Reject,
7277 /* 7098 */ // Label 87: @7098
7278 /* 7098 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7109), // Rule ID 208 //
7279 /* 7103 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7280 /* 7106 */ // Combiner Rule #157: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7281 /* 7106 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7282 /* 7109 */ // Label 438: @7109
7283 /* 7109 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7120), // Rule ID 316 //
7284 /* 7114 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7285 /* 7117 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7286 /* 7117 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7287 /* 7120 */ // Label 439: @7120
7288 /* 7120 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7131), // Rule ID 355 //
7289 /* 7125 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7290 /* 7128 */ // Combiner Rule #207: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7291 /* 7128 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7292 /* 7131 */ // Label 440: @7131
7293 /* 7131 */ GIM_Reject,
7294 /* 7132 */ // Label 88: @7132
7295 /* 7132 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7143), // Rule ID 152 //
7296 /* 7137 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
7297 /* 7140 */ // Combiner Rule #109: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7298 /* 7140 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7299 /* 7143 */ // Label 441: @7143
7300 /* 7143 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7154), // Rule ID 154 //
7301 /* 7148 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7302 /* 7151 */ // Combiner Rule #111: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7303 /* 7151 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7304 /* 7154 */ // Label 442: @7154
7305 /* 7154 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7165), // Rule ID 195 //
7306 /* 7159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
7307 /* 7162 */ // Combiner Rule #152: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7308 /* 7162 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7309 /* 7165 */ // Label 443: @7165
7310 /* 7165 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7176), // Rule ID 211 //
7311 /* 7170 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7312 /* 7173 */ // Combiner Rule #160: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7313 /* 7173 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7314 /* 7176 */ // Label 444: @7176
7315 /* 7176 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7187), // Rule ID 248 //
7316 /* 7181 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7317 /* 7184 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7318 /* 7184 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7319 /* 7187 */ // Label 445: @7187
7320 /* 7187 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7198), // Rule ID 293 //
7321 /* 7192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7322 /* 7195 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7323 /* 7195 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7324 /* 7198 */ // Label 446: @7198
7325 /* 7198 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7221), // Rule ID 113 //
7326 /* 7203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
7327 /* 7206 */ // MIs[0] dst
7328 /* 7206 */ // No operand predicates
7329 /* 7206 */ // MIs[0] lhs
7330 /* 7206 */ // No operand predicates
7331 /* 7206 */ // MIs[0] Operand 2
7332 /* 7206 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7333 /* 7210 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7334 /* 7215 */ // Combiner Rule #86: right_identity_zero @ [__right_identity_zero_match_0[7]]
7335 /* 7215 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7336 /* 7220 */ GIR_EraseRootFromParent_Done,
7337 /* 7221 */ // Label 447: @7221
7338 /* 7221 */ GIM_Reject,
7339 /* 7222 */ // Label 89: @7222
7340 /* 7222 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7233), // Rule ID 261 //
7341 /* 7227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7342 /* 7230 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SMIN'
7343 /* 7230 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7344 /* 7233 */ // Label 448: @7233
7345 /* 7233 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7244), // Rule ID 304 //
7346 /* 7238 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7347 /* 7241 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7348 /* 7241 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7349 /* 7244 */ // Label 449: @7244
7350 /* 7244 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7255), // Rule ID 332 //
7351 /* 7249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7352 /* 7252 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7353 /* 7252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7354 /* 7255 */ // Label 450: @7255
7355 /* 7255 */ GIM_Reject,
7356 /* 7256 */ // Label 90: @7256
7357 /* 7256 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7267), // Rule ID 262 //
7358 /* 7261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7359 /* 7264 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_SMAX'
7360 /* 7264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7361 /* 7267 */ // Label 451: @7267
7362 /* 7267 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7278), // Rule ID 305 //
7363 /* 7272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7364 /* 7275 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7365 /* 7275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7366 /* 7278 */ // Label 452: @7278
7367 /* 7278 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7289), // Rule ID 333 //
7368 /* 7283 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7369 /* 7286 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7370 /* 7286 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7371 /* 7289 */ // Label 453: @7289
7372 /* 7289 */ GIM_Reject,
7373 /* 7290 */ // Label 91: @7290
7374 /* 7290 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7301), // Rule ID 263 //
7375 /* 7295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7376 /* 7298 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UMIN'
7377 /* 7298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7378 /* 7301 */ // Label 454: @7301
7379 /* 7301 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7312), // Rule ID 306 //
7380 /* 7306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7381 /* 7309 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7382 /* 7309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7383 /* 7312 */ // Label 455: @7312
7384 /* 7312 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7323), // Rule ID 334 //
7385 /* 7317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7386 /* 7320 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7387 /* 7320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7388 /* 7323 */ // Label 456: @7323
7389 /* 7323 */ GIM_Reject,
7390 /* 7324 */ // Label 92: @7324
7391 /* 7324 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7335), // Rule ID 264 //
7392 /* 7329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7393 /* 7332 */ // Combiner Rule #179: constant_fold_binop; wip_match_opcode 'G_UMAX'
7394 /* 7332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7395 /* 7335 */ // Label 457: @7335
7396 /* 7335 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7346), // Rule ID 307 //
7397 /* 7340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7398 /* 7343 */ // Combiner Rule #195: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7399 /* 7343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7400 /* 7346 */ // Label 458: @7346
7401 /* 7346 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(7357), // Rule ID 335 //
7402 /* 7351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
7403 /* 7354 */ // Combiner Rule #206: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7404 /* 7354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7405 /* 7357 */ // Label 459: @7357
7406 /* 7357 */ GIM_Reject,
7407 /* 7358 */ // Label 93: @7358
7408 /* 7358 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(7369), // Rule ID 88 //
7409 /* 7363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
7410 /* 7366 */ // Combiner Rule #78: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7411 /* 7366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7412 /* 7369 */ // Label 460: @7369
7413 /* 7369 */ GIM_Reject,
7414 /* 7370 */ // Label 94: @7370
7415 /* 7370 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(7381), // Rule ID 179 //
7416 /* 7375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
7417 /* 7378 */ // Combiner Rule #136: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7418 /* 7378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7419 /* 7381 */ // Label 461: @7381
7420 /* 7381 */ GIM_Reject,
7421 /* 7382 */ // Label 95: @7382
7422 /* 7382 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(7393), // Rule ID 28 //
7423 /* 7387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
7424 /* 7390 */ // Combiner Rule #26: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7425 /* 7390 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7426 /* 7393 */ // Label 462: @7393
7427 /* 7393 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(7404), // Rule ID 69 //
7428 /* 7398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
7429 /* 7401 */ // Combiner Rule #67: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7430 /* 7401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7431 /* 7404 */ // Label 463: @7404
7432 /* 7404 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(7415), // Rule ID 103 //
7433 /* 7409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
7434 /* 7412 */ // Combiner Rule #84: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7435 /* 7412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7436 /* 7415 */ // Label 464: @7415
7437 /* 7415 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(7454), // Rule ID 40 //
7438 /* 7420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
7439 /* 7423 */ // MIs[0] root
7440 /* 7423 */ // No operand predicates
7441 /* 7423 */ // MIs[0] src
7442 /* 7423 */ // No operand predicates
7443 /* 7423 */ // MIs[0] elt
7444 /* 7423 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7445 /* 7427 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
7446 /* 7431 */ // MIs[1] src
7447 /* 7431 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7448 /* 7436 */ // MIs[1] idx
7449 /* 7436 */ // No operand predicates
7450 /* 7436 */ // MIs[0] idx
7451 /* 7436 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
7452 /* 7441 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7453 /* 7446 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7454 /* 7448 */ // Combiner Rule #38: insert_vector_element_extract_vector_element
7455 /* 7448 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7456 /* 7453 */ GIR_EraseRootFromParent_Done,
7457 /* 7454 */ // Label 465: @7454
7458 /* 7454 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(7487), // Rule ID 26 //
7459 /* 7459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7460 /* 7462 */ // MIs[0] root
7461 /* 7462 */ // No operand predicates
7462 /* 7462 */ // MIs[0] src
7463 /* 7462 */ // No operand predicates
7464 /* 7462 */ // MIs[0] elt
7465 /* 7462 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7466 /* 7466 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7467 /* 7470 */ // MIs[0] idx
7468 /* 7470 */ // No operand predicates
7469 /* 7470 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
7470 /* 7474 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7471 /* 7479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7472 /* 7481 */ // Combiner Rule #24: insert_vector_element_elt_undef
7473 /* 7481 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7474 /* 7486 */ GIR_EraseRootFromParent_Done,
7475 /* 7487 */ // Label 466: @7487
7476 /* 7487 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(7511), // Rule ID 25 //
7477 /* 7492 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
7478 /* 7495 */ // MIs[0] root
7479 /* 7495 */ // No operand predicates
7480 /* 7495 */ // MIs[0] src
7481 /* 7495 */ // No operand predicates
7482 /* 7495 */ // MIs[0] elt
7483 /* 7495 */ // No operand predicates
7484 /* 7495 */ // MIs[0] idx
7485 /* 7495 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
7486 /* 7499 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7487 /* 7503 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7488 /* 7505 */ // Combiner Rule #23: insert_vector_element_idx_undef
7489 /* 7505 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7490 /* 7508 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7491 /* 7510 */ GIR_EraseRootFromParent_Done,
7492 /* 7511 */ // Label 467: @7511
7493 /* 7511 */ GIM_Reject,
7494 /* 7512 */ // Label 96: @7512
7495 /* 7512 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(7523), // Rule ID 27 //
7496 /* 7517 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
7497 /* 7520 */ // Combiner Rule #25: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7498 /* 7520 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
7499 /* 7523 */ // Label 468: @7523
7500 /* 7523 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(7534), // Rule ID 70 //
7501 /* 7528 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7502 /* 7531 */ // Combiner Rule #68: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7503 /* 7531 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7504 /* 7534 */ // Label 469: @7534
7505 /* 7534 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(7545), // Rule ID 76 //
7506 /* 7539 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
7507 /* 7542 */ // Combiner Rule #72: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7508 /* 7542 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7509 /* 7545 */ // Label 470: @7545
7510 /* 7545 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(7556), // Rule ID 104 //
7511 /* 7550 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
7512 /* 7553 */ // Combiner Rule #84: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7513 /* 7553 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7514 /* 7556 */ // Label 471: @7556
7515 /* 7556 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(7580), // Rule ID 38 //
7516 /* 7561 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
7517 /* 7564 */ // MIs[0] root
7518 /* 7564 */ // No operand predicates
7519 /* 7564 */ // MIs[0] src
7520 /* 7564 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7521 /* 7568 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7522 /* 7572 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
7523 /* 7575 */ // MIs[1] x
7524 /* 7575 */ // No operand predicates
7525 /* 7575 */ // MIs[1] y
7526 /* 7575 */ // No operand predicates
7527 /* 7575 */ // MIs[1] z
7528 /* 7575 */ // No operand predicates
7529 /* 7575 */ // MIs[1] a
7530 /* 7575 */ // No operand predicates
7531 /* 7575 */ // MIs[1] b
7532 /* 7575 */ // No operand predicates
7533 /* 7575 */ // MIs[1] c
7534 /* 7575 */ // No operand predicates
7535 /* 7575 */ // MIs[1] d
7536 /* 7575 */ // No operand predicates
7537 /* 7575 */ // MIs[1] e
7538 /* 7575 */ // No operand predicates
7539 /* 7575 */ // MIs[0] idx
7540 /* 7575 */ // No operand predicates
7541 /* 7575 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7542 /* 7577 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc8
7543 /* 7577 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7544 /* 7580 */ // Label 472: @7580
7545 /* 7580 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(7604), // Rule ID 37 //
7546 /* 7585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
7547 /* 7588 */ // MIs[0] root
7548 /* 7588 */ // No operand predicates
7549 /* 7588 */ // MIs[0] src
7550 /* 7588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7551 /* 7592 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7552 /* 7596 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
7553 /* 7599 */ // MIs[1] x
7554 /* 7599 */ // No operand predicates
7555 /* 7599 */ // MIs[1] y
7556 /* 7599 */ // No operand predicates
7557 /* 7599 */ // MIs[1] z
7558 /* 7599 */ // No operand predicates
7559 /* 7599 */ // MIs[1] a
7560 /* 7599 */ // No operand predicates
7561 /* 7599 */ // MIs[1] b
7562 /* 7599 */ // No operand predicates
7563 /* 7599 */ // MIs[1] c
7564 /* 7599 */ // No operand predicates
7565 /* 7599 */ // MIs[1] d
7566 /* 7599 */ // No operand predicates
7567 /* 7599 */ // MIs[0] idx
7568 /* 7599 */ // No operand predicates
7569 /* 7599 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7570 /* 7601 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc7
7571 /* 7601 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7572 /* 7604 */ // Label 473: @7604
7573 /* 7604 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(7628), // Rule ID 36 //
7574 /* 7609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
7575 /* 7612 */ // MIs[0] root
7576 /* 7612 */ // No operand predicates
7577 /* 7612 */ // MIs[0] src
7578 /* 7612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7579 /* 7616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7580 /* 7620 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
7581 /* 7623 */ // MIs[1] x
7582 /* 7623 */ // No operand predicates
7583 /* 7623 */ // MIs[1] y
7584 /* 7623 */ // No operand predicates
7585 /* 7623 */ // MIs[1] z
7586 /* 7623 */ // No operand predicates
7587 /* 7623 */ // MIs[1] a
7588 /* 7623 */ // No operand predicates
7589 /* 7623 */ // MIs[1] b
7590 /* 7623 */ // No operand predicates
7591 /* 7623 */ // MIs[1] c
7592 /* 7623 */ // No operand predicates
7593 /* 7623 */ // MIs[0] idx
7594 /* 7623 */ // No operand predicates
7595 /* 7623 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7596 /* 7625 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc6
7597 /* 7625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7598 /* 7628 */ // Label 474: @7628
7599 /* 7628 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(7652), // Rule ID 35 //
7600 /* 7633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
7601 /* 7636 */ // MIs[0] root
7602 /* 7636 */ // No operand predicates
7603 /* 7636 */ // MIs[0] src
7604 /* 7636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7605 /* 7640 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7606 /* 7644 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
7607 /* 7647 */ // MIs[1] x
7608 /* 7647 */ // No operand predicates
7609 /* 7647 */ // MIs[1] y
7610 /* 7647 */ // No operand predicates
7611 /* 7647 */ // MIs[1] z
7612 /* 7647 */ // No operand predicates
7613 /* 7647 */ // MIs[1] a
7614 /* 7647 */ // No operand predicates
7615 /* 7647 */ // MIs[1] b
7616 /* 7647 */ // No operand predicates
7617 /* 7647 */ // MIs[0] idx
7618 /* 7647 */ // No operand predicates
7619 /* 7647 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7620 /* 7649 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc5
7621 /* 7649 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7622 /* 7652 */ // Label 475: @7652
7623 /* 7652 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(7676), // Rule ID 34 //
7624 /* 7657 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
7625 /* 7660 */ // MIs[0] root
7626 /* 7660 */ // No operand predicates
7627 /* 7660 */ // MIs[0] src
7628 /* 7660 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7629 /* 7664 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7630 /* 7668 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
7631 /* 7671 */ // MIs[1] x
7632 /* 7671 */ // No operand predicates
7633 /* 7671 */ // MIs[1] y
7634 /* 7671 */ // No operand predicates
7635 /* 7671 */ // MIs[1] z
7636 /* 7671 */ // No operand predicates
7637 /* 7671 */ // MIs[1] a
7638 /* 7671 */ // No operand predicates
7639 /* 7671 */ // MIs[0] idx
7640 /* 7671 */ // No operand predicates
7641 /* 7671 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7642 /* 7673 */ // Combiner Rule #32: extract_vector_element_build_vector_trunc4
7643 /* 7673 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7644 /* 7676 */ // Label 476: @7676
7645 /* 7676 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(7700), // Rule ID 33 //
7646 /* 7681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
7647 /* 7684 */ // MIs[0] root
7648 /* 7684 */ // No operand predicates
7649 /* 7684 */ // MIs[0] src
7650 /* 7684 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7651 /* 7688 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7652 /* 7692 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
7653 /* 7695 */ // MIs[1] x
7654 /* 7695 */ // No operand predicates
7655 /* 7695 */ // MIs[1] y
7656 /* 7695 */ // No operand predicates
7657 /* 7695 */ // MIs[1] z
7658 /* 7695 */ // No operand predicates
7659 /* 7695 */ // MIs[0] idx
7660 /* 7695 */ // No operand predicates
7661 /* 7695 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7662 /* 7697 */ // Combiner Rule #31: extract_vector_element_build_vector_trunc3
7663 /* 7697 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7664 /* 7700 */ // Label 477: @7700
7665 /* 7700 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(7734), // Rule ID 29 //
7666 /* 7705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
7667 /* 7708 */ // MIs[0] root
7668 /* 7708 */ // No operand predicates
7669 /* 7708 */ // MIs[0] src
7670 /* 7708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7671 /* 7712 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
7672 /* 7716 */ // MIs[1] x
7673 /* 7716 */ // No operand predicates
7674 /* 7716 */ // MIs[1] value
7675 /* 7716 */ // No operand predicates
7676 /* 7716 */ // MIs[1] idx
7677 /* 7716 */ // No operand predicates
7678 /* 7716 */ // MIs[0] idx
7679 /* 7716 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
7680 /* 7721 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
7681 /* 7726 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7682 /* 7728 */ // Combiner Rule #27: extract_vector_element_not_const
7683 /* 7728 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
7684 /* 7733 */ GIR_EraseRootFromParent_Done,
7685 /* 7734 */ // Label 478: @7734
7686 /* 7734 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(7755), // Rule ID 30 //
7687 /* 7739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
7688 /* 7742 */ // MIs[0] root
7689 /* 7742 */ // No operand predicates
7690 /* 7742 */ // MIs[0] src
7691 /* 7742 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7692 /* 7746 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
7693 /* 7750 */ // MIs[1] x
7694 /* 7750 */ // No operand predicates
7695 /* 7750 */ // MIs[1] value
7696 /* 7750 */ // No operand predicates
7697 /* 7750 */ // MIs[1] idx2
7698 /* 7750 */ // No operand predicates
7699 /* 7750 */ // MIs[0] idx1
7700 /* 7750 */ // No operand predicates
7701 /* 7750 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7702 /* 7752 */ // Combiner Rule #28: extract_vector_element_different_indices
7703 /* 7752 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
7704 /* 7755 */ // Label 479: @7755
7705 /* 7755 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(7784), // Rule ID 39 //
7706 /* 7760 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
7707 /* 7763 */ // MIs[0] root
7708 /* 7763 */ // No operand predicates
7709 /* 7763 */ // MIs[0] src
7710 /* 7763 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7711 /* 7767 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
7712 /* 7771 */ // MIs[1] src1
7713 /* 7771 */ // No operand predicates
7714 /* 7771 */ // MIs[1] src2
7715 /* 7771 */ // No operand predicates
7716 /* 7771 */ // MIs[1] mask
7717 /* 7771 */ // No operand predicates
7718 /* 7771 */ // MIs[0] idx
7719 /* 7771 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7720 /* 7775 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7721 /* 7779 */ // MIs[2] imm
7722 /* 7779 */ // No operand predicates
7723 /* 7779 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7724 /* 7781 */ // Combiner Rule #37: extract_vector_element_shuffle_vector
7725 /* 7781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
7726 /* 7784 */ // Label 480: @7784
7727 /* 7784 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(7808), // Rule ID 32 //
7728 /* 7789 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
7729 /* 7792 */ // MIs[0] root
7730 /* 7792 */ // No operand predicates
7731 /* 7792 */ // MIs[0] src
7732 /* 7792 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7733 /* 7796 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7734 /* 7800 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
7735 /* 7803 */ // MIs[1] x
7736 /* 7803 */ // No operand predicates
7737 /* 7803 */ // MIs[1] y
7738 /* 7803 */ // No operand predicates
7739 /* 7803 */ // MIs[0] idx
7740 /* 7803 */ // No operand predicates
7741 /* 7803 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7742 /* 7805 */ // Combiner Rule #30: extract_vector_element_build_vector_trunc2
7743 /* 7805 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7744 /* 7808 */ // Label 481: @7808
7745 /* 7808 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(7840), // Rule ID 31 //
7746 /* 7813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
7747 /* 7816 */ // MIs[0] root
7748 /* 7816 */ // No operand predicates
7749 /* 7816 */ // MIs[0] src
7750 /* 7816 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7751 /* 7820 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
7752 /* 7824 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
7753 /* 7827 */ // MIs[1] unused
7754 /* 7827 */ // No operand predicates
7755 /* 7827 */ // MIs[0] idx
7756 /* 7827 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7757 /* 7831 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7758 /* 7835 */ // MIs[2] imm
7759 /* 7835 */ // No operand predicates
7760 /* 7835 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7761 /* 7837 */ // Combiner Rule #29: extract_vector_element_build_vector
7762 /* 7837 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
7763 /* 7840 */ // Label 482: @7840
7764 /* 7840 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(7864), // Rule ID 23 //
7765 /* 7845 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7766 /* 7848 */ // MIs[0] root
7767 /* 7848 */ // No operand predicates
7768 /* 7848 */ // MIs[0] vector
7769 /* 7848 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7770 /* 7852 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7771 /* 7856 */ // MIs[0] idx
7772 /* 7856 */ // No operand predicates
7773 /* 7856 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7774 /* 7858 */ // Combiner Rule #21: match_extract_of_element_undef_vector
7775 /* 7858 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7776 /* 7861 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7777 /* 7863 */ GIR_EraseRootFromParent_Done,
7778 /* 7864 */ // Label 483: @7864
7779 /* 7864 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(7888), // Rule ID 24 //
7780 /* 7869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
7781 /* 7872 */ // MIs[0] root
7782 /* 7872 */ // No operand predicates
7783 /* 7872 */ // MIs[0] vector
7784 /* 7872 */ // No operand predicates
7785 /* 7872 */ // MIs[0] idx
7786 /* 7872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7787 /* 7876 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7788 /* 7880 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7789 /* 7882 */ // Combiner Rule #22: match_extract_of_element_undef_index
7790 /* 7882 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7791 /* 7885 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7792 /* 7887 */ GIR_EraseRootFromParent_Done,
7793 /* 7888 */ // Label 484: @7888
7794 /* 7888 */ GIM_Reject,
7795 /* 7889 */ // Label 97: @7889
7796 /* 7889 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(7900), // Rule ID 99 //
7797 /* 7894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7798 /* 7897 */ // Combiner Rule #81: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
7799 /* 7897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
7800 /* 7900 */ // Label 485: @7900
7801 /* 7900 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(7911), // Rule ID 101 //
7802 /* 7905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7803 /* 7908 */ // Combiner Rule #82: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
7804 /* 7908 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
7805 /* 7911 */ // Label 486: @7911
7806 /* 7911 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(7922), // Rule ID 363 //
7807 /* 7916 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
7808 /* 7919 */ // Combiner Rule #215: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
7809 /* 7919 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7810 /* 7922 */ // Label 487: @7922
7811 /* 7922 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(7933), // Rule ID 365 //
7812 /* 7927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
7813 /* 7930 */ // Combiner Rule #217: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
7814 /* 7930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7815 /* 7933 */ // Label 488: @7933
7816 /* 7933 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(7954), // Rule ID 364 //
7817 /* 7938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7818 /* 7941 */ // MIs[0] root
7819 /* 7941 */ // No operand predicates
7820 /* 7941 */ // MIs[0] src1
7821 /* 7941 */ // No operand predicates
7822 /* 7941 */ // MIs[0] undef
7823 /* 7941 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7824 /* 7945 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7825 /* 7949 */ // MIs[0] mask
7826 /* 7949 */ // No operand predicates
7827 /* 7949 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7828 /* 7951 */ // Combiner Rule #216: combine_shuffle_undef_rhs
7829 /* 7951 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7830 /* 7954 */ // Label 489: @7954
7831 /* 7954 */ GIM_Reject,
7832 /* 7955 */ // Label 98: @7955
7833 /* 7955 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(7966), // Rule ID 386 //
7834 /* 7960 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
7835 /* 7963 */ // MIs[0] dst
7836 /* 7963 */ // No operand predicates
7837 /* 7963 */ // MIs[0] src
7838 /* 7963 */ // No operand predicates
7839 /* 7963 */ // Combiner Rule #236: ctlz_to_ctls
7840 /* 7963 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7841 /* 7966 */ // Label 490: @7966
7842 /* 7966 */ GIM_Reject,
7843 /* 7967 */ // Label 99: @7967
7844 /* 7967 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(7978), // Rule ID 387 //
7845 /* 7972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
7846 /* 7975 */ // MIs[0] dst
7847 /* 7975 */ // No operand predicates
7848 /* 7975 */ // MIs[0] src
7849 /* 7975 */ // No operand predicates
7850 /* 7975 */ // Combiner Rule #237: ctlz_zero_undef_to_ctls
7851 /* 7975 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7852 /* 7978 */ // Label 491: @7978
7853 /* 7978 */ GIM_Reject,
7854 /* 7979 */ // Label 100: @7979
7855 /* 7979 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8023), // Rule ID 239 //
7856 /* 7984 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7857 /* 7987 */ // MIs[0] d
7858 /* 7987 */ // No operand predicates
7859 /* 7987 */ // MIs[0] src
7860 /* 7987 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7861 /* 7991 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
7862 /* 7995 */ // MIs[1] rev
7863 /* 7995 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7864 /* 7999 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
7865 /* 8003 */ // MIs[2] val
7866 /* 8003 */ // No operand predicates
7867 /* 8003 */ // MIs[1] amt
7868 /* 8003 */ // No operand predicates
7869 /* 8003 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
7870 /* 8007 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7871 /* 8009 */ // Combiner Rule #173: bitreverse_lshr
7872 /* 8009 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
7873 /* 8012 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
7874 /* 8014 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
7875 /* 8018 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
7876 /* 8022 */ GIR_EraseRootFromParent_Done,
7877 /* 8023 */ // Label 492: @8023
7878 /* 8023 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8067), // Rule ID 238 //
7879 /* 8028 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
7880 /* 8031 */ // MIs[0] d
7881 /* 8031 */ // No operand predicates
7882 /* 8031 */ // MIs[0] src
7883 /* 8031 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7884 /* 8035 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
7885 /* 8039 */ // MIs[1] rev
7886 /* 8039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7887 /* 8043 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
7888 /* 8047 */ // MIs[2] val
7889 /* 8047 */ // No operand predicates
7890 /* 8047 */ // MIs[1] amt
7891 /* 8047 */ // No operand predicates
7892 /* 8047 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
7893 /* 8051 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7894 /* 8053 */ // Combiner Rule #172: bitreverse_shl
7895 /* 8053 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
7896 /* 8056 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
7897 /* 8058 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
7898 /* 8062 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
7899 /* 8066 */ GIR_EraseRootFromParent_Done,
7900 /* 8067 */ // Label 493: @8067
7901 /* 8067 */ GIM_Reject,
7902 /* 8068 */ // Label 101: @8068
7903 /* 8068 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8089), // Rule ID 186 //
7904 /* 8073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
7905 /* 8076 */ // MIs[0] dst
7906 /* 8076 */ // No operand predicates
7907 /* 8076 */ // MIs[0] src0
7908 /* 8076 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7909 /* 8080 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7910 /* 8084 */ // MIs[1] cst
7911 /* 8084 */ // No operand predicates
7912 /* 8084 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7913 /* 8086 */ // Combiner Rule #143: constant_fold_fceil
7914 /* 8086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7915 /* 8089 */ // Label 494: @8089
7916 /* 8089 */ GIM_Reject,
7917 /* 8090 */ // Label 102: @8090
7918 /* 8090 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8111), // Rule ID 182 //
7919 /* 8095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7920 /* 8098 */ // MIs[0] dst
7921 /* 8098 */ // No operand predicates
7922 /* 8098 */ // MIs[0] src0
7923 /* 8098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7924 /* 8102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7925 /* 8106 */ // MIs[1] cst
7926 /* 8106 */ // No operand predicates
7927 /* 8106 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7928 /* 8108 */ // Combiner Rule #139: constant_fold_fsqrt
7929 /* 8108 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7930 /* 8111 */ // Label 495: @8111
7931 /* 8111 */ GIM_Reject,
7932 /* 8112 */ // Label 103: @8112
7933 /* 8112 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8133), // Rule ID 187 //
7934 /* 8117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7935 /* 8120 */ // MIs[0] dst
7936 /* 8120 */ // No operand predicates
7937 /* 8120 */ // MIs[0] src0
7938 /* 8120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7939 /* 8124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7940 /* 8128 */ // MIs[1] cst
7941 /* 8128 */ // No operand predicates
7942 /* 8128 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7943 /* 8130 */ // Combiner Rule #144: constant_fold_ffloor
7944 /* 8130 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7945 /* 8133 */ // Label 496: @8133
7946 /* 8133 */ GIM_Reject,
7947 /* 8134 */ // Label 104: @8134
7948 /* 8134 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8155), // Rule ID 191 //
7949 /* 8139 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
7950 /* 8142 */ // MIs[0] dst
7951 /* 8142 */ // No operand predicates
7952 /* 8142 */ // MIs[0] src0
7953 /* 8142 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7954 /* 8146 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7955 /* 8150 */ // MIs[1] cst
7956 /* 8150 */ // No operand predicates
7957 /* 8150 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7958 /* 8152 */ // Combiner Rule #148: constant_fold_frint
7959 /* 8152 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7960 /* 8155 */ // Label 497: @8155
7961 /* 8155 */ GIM_Reject,
7962 /* 8156 */ // Label 105: @8156
7963 /* 8156 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8177), // Rule ID 192 //
7964 /* 8161 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
7965 /* 8164 */ // MIs[0] dst
7966 /* 8164 */ // No operand predicates
7967 /* 8164 */ // MIs[0] src0
7968 /* 8164 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7969 /* 8168 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7970 /* 8172 */ // MIs[1] cst
7971 /* 8172 */ // No operand predicates
7972 /* 8172 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7973 /* 8174 */ // Combiner Rule #149: constant_fold_fnearbyint
7974 /* 8174 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7975 /* 8177 */ // Label 498: @8177
7976 /* 8177 */ GIM_Reject,
7977 /* 8178 */ // Label 106: @8178
7978 /* 8178 */ GIM_Reject,
7979 /* 8179 */ }; // Size: 8179 bytes
7980 return MatchTable0;
7981}
7982#undef GIMT_Encode2
7983#undef GIMT_Encode4
7984#undef GIMT_Encode8
7985
7986#endif // ifdef GET_GICOMBINER_IMPL
7987
7988#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
7989AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
7990AvailableFunctionFeatures()
7991#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
7992#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
7993, State(0),
7994ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
7995#endif // ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
7996
7997