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
11#include "llvm/ADT/SparseBitVector.h"
12namespace llvm {
13
14extern cl::OptionCategory GICombinerOptionCategory;
15
16} // namespace llvm
17
18#endif // GET_GICOMBINER_DEPS
19
20#ifdef GET_GICOMBINER_TYPES
21
22struct RISCVPreLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 9: // 7 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'a': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "dd_shift", 8) != 0)
46 break;
47 return 260; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 19; // "copy_prop"
52 case 'm': // 3 strings to match.
53 switch (RuleIdentifier[1]) {
54 default: break;
55 case 'a': // 1 string to match.
56 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
57 break;
58 return 223; // "match_ors"
59 case 'u': // 2 strings to match.
60 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
61 break;
62 switch (RuleIdentifier[8]) {
63 default: break;
64 case '0': // 1 string to match.
65 return 167; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 166; // "mulo_by_2"
68 }
69 break;
70 }
71 break;
72 case 'n': // 1 string to match.
73 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
74 break;
75 return 234; // "nneg_zext"
76 case 'o': // 1 string to match.
77 if (memcmp(RuleIdentifier.data()+1, "r_xor_or", 8) != 0)
78 break;
79 return 228; // "or_xor_or"
80 }
81 break;
82 case 10: // 11 strings to match.
83 switch (RuleIdentifier[0]) {
84 default: break;
85 case 'S': // 2 strings to match.
86 if (memcmp(RuleIdentifier.data()+1, "ub", 2) != 0)
87 break;
88 switch (RuleIdentifier[3]) {
89 default: break;
90 case 'S': // 1 string to match.
91 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
92 break;
93 return 265; // "SubSmaxSub"
94 case 'U': // 1 string to match.
95 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
96 break;
97 return 266; // "SubUmaxSub"
98 }
99 break;
100 case 'i': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
102 break;
103 return 96; // "i2p_to_p2i"
104 case 'm': // 2 strings to match.
105 switch (RuleIdentifier[1]) {
106 default: break;
107 case 'a': // 1 string to match.
108 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
109 break;
110 return 222; // "match_ands"
111 case 'u': // 1 string to match.
112 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
113 break;
114 return 20; // "mul_to_shl"
115 }
116 break;
117 case 'o': // 1 string to match.
118 if (memcmp(RuleIdentifier.data()+1, "r_xor_and", 9) != 0)
119 break;
120 return 229; // "or_xor_and"
121 case 'p': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
123 break;
124 return 95; // "p2i_to_i2p"
125 case 's': // 3 strings to match.
126 switch (RuleIdentifier[1]) {
127 default: break;
128 case 'e': // 2 strings to match.
129 switch (RuleIdentifier[2]) {
130 default: break;
131 case 'l': // 1 string to match.
132 if (memcmp(RuleIdentifier.data()+3, "ect_not", 7) != 0)
133 break;
134 return 135; // "select_not"
135 case 'x': // 1 string to match.
136 if (memcmp(RuleIdentifier.data()+3, "t_trunc", 7) != 0)
137 break;
138 return 232; // "sext_trunc"
139 }
140 break;
141 case 'u': // 1 string to match.
142 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
143 break;
144 return 21; // "sub_to_add"
145 }
146 break;
147 case 'z': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
149 break;
150 return 233; // "zext_trunc"
151 }
152 break;
153 case 11: // 8 strings to match.
154 switch (RuleIdentifier[0]) {
155 default: break;
156 case 'a': // 1 string to match.
157 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
158 break;
159 return 101; // "add_sub_reg"
160 case 'm': // 1 string to match.
161 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
162 break;
163 return 249; // "match_addos"
164 case 's': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
166 break;
167 return 217; // "sub_add_reg"
168 case 't': // 4 strings to match.
169 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
170 break;
171 switch (RuleIdentifier[6]) {
172 default: break;
173 case 's': // 3 strings to match.
174 switch (RuleIdentifier[7]) {
175 default: break;
176 case 'h': // 1 string to match.
177 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
178 break;
179 return 146; // "trunc_shift"
180 case 's': // 2 strings to match.
181 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
182 break;
183 switch (RuleIdentifier[10]) {
184 default: break;
185 case 's': // 1 string to match.
186 return 251; // "trunc_ssats"
187 case 'u': // 1 string to match.
188 return 252; // "trunc_ssatu"
189 }
190 break;
191 }
192 break;
193 case 'u': // 1 string to match.
194 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
195 break;
196 return 253; // "trunc_usatu"
197 }
198 break;
199 case 'u': // 1 string to match.
200 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
201 break;
202 return 242; // "unmerge_cst"
203 }
204 break;
205 case 12: // 12 strings to match.
206 switch (RuleIdentifier[0]) {
207 default: break;
208 case 'A': // 1 string to match.
209 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
210 break;
211 return 4; // "APlusBMinusB"
212 case 'B': // 1 string to match.
213 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
214 break;
215 return 5; // "BMinusAPlusA"
216 case 'a': // 1 string to match.
217 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
218 break;
219 return 168; // "adde_to_addo"
220 case 'c': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
222 break;
223 return 256; // "ctlz_to_ctls"
224 case 'f': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
226 break;
227 return 219; // "fsub_to_fneg"
228 case 'm': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
230 break;
231 return 197; // "mulh_to_lshr"
232 case 'n': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
234 break;
235 return 147; // "not_cmp_fold"
236 case 'r': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
238 break;
239 return 142; // "redundant_or"
240 case 's': // 2 strings to match.
241 switch (RuleIdentifier[1]) {
242 default: break;
243 case 'd': // 1 string to match.
244 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
245 break;
246 return 213; // "sdiv_by_pow2"
247 case 'e': // 1 string to match.
248 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
249 break;
250 return 54; // "sext_of_sext"
251 }
252 break;
253 case 'u': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
255 break;
256 return 212; // "udiv_by_pow2"
257 case 'z': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
259 break;
260 return 52; // "zext_of_zext"
261 }
262 break;
263 case 13: // 19 strings to match.
264 switch (RuleIdentifier[0]) {
265 default: break;
266 case 'A': // 2 strings to match.
267 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
268 break;
269 switch (RuleIdentifier[12]) {
270 default: break;
271 case 'A': // 1 string to match.
272 return 12; // "AMinusBMinusA"
273 case 'C': // 1 string to match.
274 return 9; // "AMinusBMinusC"
275 }
276 break;
277 case 'a': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
279 break;
280 return 43; // "add_of_vscale"
281 case 'c': // 1 string to match.
282 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
283 break;
284 return 186; // "commute_shift"
285 case 'l': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
287 break;
288 return 75; // "load_and_mask"
289 case 'm': // 3 strings to match.
290 switch (RuleIdentifier[1]) {
291 default: break;
292 case 'a': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
294 break;
295 return 133; // "match_selects"
296 case 'e': // 1 string to match.
297 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
298 break;
299 return 241; // "merge_unmerge"
300 case 'u': // 1 string to match.
301 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
302 break;
303 return 44; // "mul_of_vscale"
304 }
305 break;
306 case 'r': // 1 string to match.
307 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
308 break;
309 return 141; // "redundant_and"
310 case 's': // 6 strings to match.
311 switch (RuleIdentifier[1]) {
312 default: break;
313 case 'a': // 1 string to match.
314 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
315 break;
316 return 92; // "same_val_zero"
317 case 'd': // 1 string to match.
318 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
319 break;
320 return 215; // "sdiv_by_const"
321 case 'h': // 1 string to match.
322 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
323 break;
324 return 45; // "shl_of_vscale"
325 case 'r': // 1 string to match.
326 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
327 break;
328 return 211; // "srem_by_const"
329 case 'u': // 2 strings to match.
330 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
331 break;
332 switch (RuleIdentifier[4]) {
333 default: break;
334 case 'm': // 1 string to match.
335 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
336 break;
337 return 263; // "sub_minus_one"
338 case 'o': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
340 break;
341 return 46; // "sub_of_vscale"
342 }
343 break;
344 }
345 break;
346 case 'u': // 4 strings to match.
347 switch (RuleIdentifier[1]) {
348 default: break;
349 case 'd': // 1 string to match.
350 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
351 break;
352 return 214; // "udiv_by_const"
353 case 'n': // 2 strings to match.
354 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
355 break;
356 switch (RuleIdentifier[8]) {
357 default: break;
358 case 'm': // 1 string to match.
359 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
360 break;
361 return 240; // "unmerge_merge"
362 case 'u': // 1 string to match.
363 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
364 break;
365 return 243; // "unmerge_undef"
366 }
367 break;
368 case 'r': // 1 string to match.
369 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
370 break;
371 return 210; // "urem_by_const"
372 }
373 break;
374 }
375 break;
376 case 14: // 17 strings to match.
377 switch (RuleIdentifier[0]) {
378 default: break;
379 case 'A': // 2 strings to match.
380 switch (RuleIdentifier[1]) {
381 default: break;
382 case 'M': // 1 string to match.
383 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
384 break;
385 return 18; // "AMinusC1PlusC2"
386 case 'P': // 1 string to match.
387 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
388 break;
389 return 14; // "APlusC1MinusC2"
390 }
391 break;
392 case 'C': // 1 string to match.
393 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
394 break;
395 return 15; // "C2MinusAPlusC1"
396 case 'N': // 1 string to match.
397 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
398 break;
399 return 13; // "NotAPlusNegOne"
400 case 'a': // 2 strings to match.
401 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
402 break;
403 switch (RuleIdentifier[10]) {
404 default: break;
405 case 's': // 1 string to match.
406 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
407 break;
408 return 58; // "anyext_of_sext"
409 case 'z': // 1 string to match.
410 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
411 break;
412 return 57; // "anyext_of_zext"
413 }
414 break;
415 case 'b': // 3 strings to match.
416 if (RuleIdentifier[1] != 'i')
417 break;
418 switch (RuleIdentifier[2]) {
419 default: break;
420 case 'n': // 2 strings to match.
421 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
422 break;
423 switch (RuleIdentifier[6]) {
424 default: break;
425 case 's': // 1 string to match.
426 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
427 break;
428 return 91; // "binop_same_val"
429 case 'w': // 1 string to match.
430 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
431 break;
432 return 262; // "binop_with_neg"
433 }
434 break;
435 case 't': // 1 string to match.
436 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
437 break;
438 return 184; // "bitreverse_shl"
439 }
440 break;
441 case 'f': // 2 strings to match.
442 switch (RuleIdentifier[1]) {
443 default: break;
444 case 'a': // 1 string to match.
445 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
446 break;
447 return 196; // "fabs_fneg_fold"
448 case 'n': // 1 string to match.
449 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
450 break;
451 return 98; // "fneg_fneg_fold"
452 }
453 break;
454 case 'm': // 1 string to match.
455 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
456 break;
457 return 23; // "mul_by_neg_one"
458 case 'r': // 1 string to match.
459 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
460 break;
461 return 115; // "reassoc_ptradd"
462 case 's': // 3 strings to match.
463 switch (RuleIdentifier[1]) {
464 default: break;
465 case 'e': // 2 strings to match.
466 switch (RuleIdentifier[2]) {
467 default: break;
468 case 'l': // 1 string to match.
469 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
470 break;
471 return 60; // "select_of_zext"
472 case 'x': // 1 string to match.
473 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
474 break;
475 return 55; // "sext_of_anyext"
476 }
477 break;
478 case 'h': // 1 string to match.
479 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
480 break;
481 return 114; // "shifts_too_big"
482 }
483 break;
484 case 'z': // 1 string to match.
485 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
486 break;
487 return 53; // "zext_of_anyext"
488 }
489 break;
490 case 15: // 14 strings to match.
491 switch (RuleIdentifier[0]) {
492 default: break;
493 case 'A': // 2 strings to match.
494 switch (RuleIdentifier[1]) {
495 default: break;
496 case 'M': // 1 string to match.
497 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
498 break;
499 return 16; // "AMinusC1MinusC2"
500 case 'P': // 1 string to match.
501 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
502 break;
503 return 3; // "APlusZeroMinusB"
504 }
505 break;
506 case 'C': // 1 string to match.
507 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
508 break;
509 return 17; // "C1Minus2MinusC2"
510 case 'Z': // 1 string to match.
511 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
512 break;
513 return 2; // "ZeroMinusAPlusB"
514 case 'a': // 2 strings to match.
515 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
516 break;
517 switch (RuleIdentifier[8]) {
518 default: break;
519 case 's': // 1 string to match.
520 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
521 break;
522 return 270; // "avgceil_s_match"
523 case 'u': // 1 string to match.
524 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
525 break;
526 return 269; // "avgceil_u_match"
527 }
528 break;
529 case 'b': // 1 string to match.
530 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
531 break;
532 return 185; // "bitreverse_lshr"
533 case 'e': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
535 break;
536 return 74; // "extending_loads"
537 case 'i': // 1 string to match.
538 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
539 break;
540 return 24; // "idempotent_prop"
541 case 'l': // 1 string to match.
542 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
543 break;
544 return 175; // "load_or_combine"
545 case 'n': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
547 break;
548 return 68; // "narrow_binop_or"
549 case 'o': // 1 string to match.
550 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
551 break;
552 return 165; // "overlapping_and"
553 case 's': // 1 string to match.
554 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
555 break;
556 return 89; // "select_same_val"
557 case 'z': // 1 string to match.
558 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
559 break;
560 return 144; // "zext_trunc_fold"
561 }
562 break;
563 case 16: // 18 strings to match.
564 switch (RuleIdentifier[0]) {
565 default: break;
566 case 'A': // 1 string to match.
567 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
568 break;
569 return 11; // "AMinusZeroMinusB"
570 case 'a': // 3 strings to match.
571 switch (RuleIdentifier[1]) {
572 default: break;
573 case 'n': // 1 string to match.
574 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
575 break;
576 return 56; // "anyext_of_anyext"
577 case 'v': // 2 strings to match.
578 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
579 break;
580 switch (RuleIdentifier[9]) {
581 default: break;
582 case 's': // 1 string to match.
583 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
584 break;
585 return 268; // "avgfloor_s_match"
586 case 'u': // 1 string to match.
587 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
588 break;
589 return 267; // "avgfloor_u_match"
590 }
591 break;
592 }
593 break;
594 case 'n': // 5 strings to match.
595 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
596 break;
597 switch (RuleIdentifier[13]) {
598 default: break;
599 case 'a': // 2 strings to match.
600 switch (RuleIdentifier[14]) {
601 default: break;
602 case 'd': // 1 string to match.
603 if (RuleIdentifier[15] != 'd')
604 break;
605 return 64; // "narrow_binop_add"
606 case 'n': // 1 string to match.
607 if (RuleIdentifier[15] != 'd')
608 break;
609 return 67; // "narrow_binop_and"
610 }
611 break;
612 case 'm': // 1 string to match.
613 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
614 break;
615 return 66; // "narrow_binop_mul"
616 case 's': // 1 string to match.
617 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
618 break;
619 return 65; // "narrow_binop_sub"
620 case 'x': // 1 string to match.
621 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
622 break;
623 return 69; // "narrow_binop_xor"
624 }
625 break;
626 case 'o': // 1 string to match.
627 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
628 break;
629 return 224; // "or_and_xor_to_or"
630 case 's': // 5 strings to match.
631 switch (RuleIdentifier[1]) {
632 default: break;
633 case 'e': // 3 strings to match.
634 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
635 break;
636 switch (RuleIdentifier[7]) {
637 default: break;
638 case 'o': // 1 string to match.
639 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
640 break;
641 return 61; // "select_of_anyext"
642 case 't': // 1 string to match.
643 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
644 break;
645 return 218; // "select_to_minmax"
646 case 'u': // 1 string to match.
647 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
648 break;
649 return 130; // "select_undef_cmp"
650 }
651 break;
652 case 'u': // 2 strings to match.
653 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
654 break;
655 switch (RuleIdentifier[5]) {
656 default: break;
657 case 'f': // 1 string to match.
658 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
659 break;
660 return 264; // "sub_of_mul_const"
661 case 'n': // 1 string to match.
662 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
663 break;
664 return 261; // "sub_one_from_sub"
665 }
666 break;
667 }
668 break;
669 case 't': // 2 strings to match.
670 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
671 break;
672 switch (RuleIdentifier[12]) {
673 default: break;
674 case 's': // 1 string to match.
675 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
676 break;
677 return 50; // "truncate_of_sext"
678 case 'z': // 1 string to match.
679 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
680 break;
681 return 49; // "truncate_of_zext"
682 }
683 break;
684 case 'u': // 1 string to match.
685 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
686 break;
687 return 77; // "undef_to_fp_zero"
688 }
689 break;
690 case 17: // 18 strings to match.
691 switch (RuleIdentifier[0]) {
692 default: break;
693 case 'A': // 2 strings to match.
694 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
695 break;
696 switch (RuleIdentifier[11]) {
697 default: break;
698 case 'A': // 1 string to match.
699 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
700 break;
701 return 8; // "APlusBMinusAplusC"
702 case 'C': // 1 string to match.
703 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
704 break;
705 return 10; // "APlusBMinusCPlusA"
706 }
707 break;
708 case 'a': // 3 strings to match.
709 switch (RuleIdentifier[1]) {
710 default: break;
711 case 'd': // 1 string to match.
712 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
713 break;
714 return 22; // "add_p2i_to_ptradd"
715 case 'n': // 2 strings to match.
716 switch (RuleIdentifier[2]) {
717 default: break;
718 case 'd': // 1 string to match.
719 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
720 break;
721 return 226; // "and_xor_or_to_and"
722 case 'y': // 1 string to match.
723 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
724 break;
725 return 97; // "anyext_trunc_fold"
726 }
727 break;
728 }
729 break;
730 case 'c': // 4 strings to match.
731 switch (RuleIdentifier[1]) {
732 default: break;
733 case 'a': // 2 strings to match.
734 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
735 break;
736 switch (RuleIdentifier[13]) {
737 default: break;
738 case 'f': // 1 string to match.
739 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
740 break;
741 return 119; // "canonicalize_fcmp"
742 case 'i': // 1 string to match.
743 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
744 break;
745 return 118; // "canonicalize_icmp"
746 }
747 break;
748 case 'o': // 2 strings to match.
749 switch (RuleIdentifier[2]) {
750 default: break;
751 case 'm': // 1 string to match.
752 if (memcmp(RuleIdentifier.data()+3, "bine_or_of_and", 14) != 0)
753 break;
754 return 271; // "combine_or_of_and"
755 case 'n': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
757 break;
758 return 193; // "constant_fold_fma"
759 }
760 break;
761 }
762 break;
763 case 'd': // 1 string to match.
764 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
765 break;
766 return 176; // "div_rem_to_divrem"
767 case 'e': // 1 string to match.
768 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
769 break;
770 return 87; // "erase_undef_store"
771 case 'p': // 1 string to match.
772 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
773 break;
774 return 172; // "ptr_add_with_zero"
775 case 's': // 4 strings to match.
776 switch (RuleIdentifier[1]) {
777 default: break;
778 case 'e': // 2 strings to match.
779 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
780 break;
781 switch (RuleIdentifier[7]) {
782 default: break;
783 case 't': // 1 string to match.
784 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
785 break;
786 return 132; // "select_to_iminmax"
787 case 'z': // 1 string to match.
788 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
789 break;
790 return 134; // "select_zero_false"
791 }
792 break;
793 case 'h': // 1 string to match.
794 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
795 break;
796 return 173; // "shift_immed_chain"
797 case 'r': // 1 string to match.
798 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
799 break;
800 return 209; // "srem_pow2_to_mask"
801 }
802 break;
803 case 'u': // 2 strings to match.
804 switch (RuleIdentifier[1]) {
805 default: break;
806 case 'n': // 1 string to match.
807 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
808 break;
809 return 78; // "undef_to_int_zero"
810 case 'r': // 1 string to match.
811 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
812 break;
813 return 143; // "urem_pow2_to_mask"
814 }
815 break;
816 }
817 break;
818 case 18: // 12 strings to match.
819 switch (RuleIdentifier[0]) {
820 default: break;
821 case 'A': // 3 strings to match.
822 switch (RuleIdentifier[1]) {
823 default: break;
824 case 'M': // 2 strings to match.
825 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
826 break;
827 switch (RuleIdentifier[11]) {
828 default: break;
829 case 'B': // 1 string to match.
830 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
831 break;
832 return 7; // "AMinusBPlusBMinusC"
833 case 'C': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
835 break;
836 return 6; // "AMinusBPlusCMinusA"
837 }
838 break;
839 case 'P': // 1 string to match.
840 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
841 break;
842 return 0; // "APlusBMinusCMinusB"
843 }
844 break;
845 case 'b': // 1 string to match.
846 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
847 break;
848 return 93; // "binop_left_to_zero"
849 case 'c': // 3 strings to match.
850 if (RuleIdentifier[1] != 'o')
851 break;
852 switch (RuleIdentifier[2]) {
853 default: break;
854 case 'm': // 1 string to match.
855 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
856 break;
857 return 169; // "combine_minmax_nan"
858 case 'n': // 2 strings to match.
859 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
860 break;
861 switch (RuleIdentifier[15]) {
862 default: break;
863 case 'a': // 1 string to match.
864 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
865 break;
866 return 150; // "constant_fold_fabs"
867 case 'n': // 1 string to match.
868 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
869 break;
870 return 149; // "constant_fold_fneg"
871 }
872 break;
873 }
874 break;
875 case 'e': // 1 string to match.
876 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
877 break;
878 return 170; // "expand_const_fpowi"
879 case 'f': // 1 string to match.
880 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
881 break;
882 return 107; // "fptrunc_fpext_fold"
883 case 's': // 2 strings to match.
884 if (RuleIdentifier[1] != 'e')
885 break;
886 switch (RuleIdentifier[2]) {
887 default: break;
888 case 'l': // 1 string to match.
889 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
890 break;
891 return 62; // "select_of_truncate"
892 case 'x': // 1 string to match.
893 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
894 break;
895 return 127; // "sext_inreg_of_load"
896 }
897 break;
898 case 't': // 1 string to match.
899 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
900 break;
901 return 51; // "truncate_of_anyext"
902 }
903 break;
904 case 19: // 19 strings to match.
905 switch (RuleIdentifier[0]) {
906 default: break;
907 case 'A': // 1 string to match.
908 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
909 break;
910 return 1; // "AMinusBMinusCMinusC"
911 case 'b': // 1 string to match.
912 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
913 break;
914 return 94; // "binop_right_to_zero"
915 case 'c': // 7 strings to match.
916 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
917 break;
918 switch (RuleIdentifier[5]) {
919 default: break;
920 case '_': // 1 string to match.
921 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
922 break;
923 return 164; // "const_ptradd_to_i2p"
924 case 'a': // 6 strings to match.
925 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
926 break;
927 switch (RuleIdentifier[14]) {
928 default: break;
929 case 'b': // 1 string to match.
930 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
931 break;
932 return 191; // "constant_fold_binop"
933 case 'f': // 5 strings to match.
934 switch (RuleIdentifier[15]) {
935 default: break;
936 case 'c': // 1 string to match.
937 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
938 break;
939 return 155; // "constant_fold_fceil"
940 case 'l': // 1 string to match.
941 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
942 break;
943 return 152; // "constant_fold_flog2"
944 case 'p': // 1 string to match.
945 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
946 break;
947 return 154; // "constant_fold_fpext"
948 case 'r': // 1 string to match.
949 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
950 break;
951 return 160; // "constant_fold_frint"
952 case 's': // 1 string to match.
953 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
954 break;
955 return 151; // "constant_fold_fsqrt"
956 }
957 break;
958 }
959 break;
960 }
961 break;
962 case 'e': // 1 string to match.
963 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
964 break;
965 return 111; // "extend_through_phis"
966 case 'i': // 1 string to match.
967 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
968 break;
969 return 70; // "integer_of_truncate"
970 case 'm': // 1 string to match.
971 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
972 break;
973 return 247; // "merge_of_x_and_zero"
974 case 'p': // 1 string to match.
975 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
976 break;
977 return 117; // "ptr_add_immed_chain"
978 case 'r': // 2 strings to match.
979 switch (RuleIdentifier[1]) {
980 default: break;
981 case 'e': // 1 string to match.
982 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
983 break;
984 return 116; // "reassoc_comm_binops"
985 case 'i': // 1 string to match.
986 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
987 break;
988 return 90; // "right_identity_zero"
989 }
990 break;
991 case 's': // 3 strings to match.
992 switch (RuleIdentifier[1]) {
993 default: break;
994 case 'e': // 1 string to match.
995 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
996 break;
997 return 131; // "select_constant_cmp"
998 case 'i': // 2 strings to match.
999 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
1000 break;
1001 switch (RuleIdentifier[9]) {
1002 default: break;
1003 case 'a': // 1 string to match.
1004 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
1005 break;
1006 return 112; // "simplify_add_to_sub"
1007 case 'n': // 1 string to match.
1008 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1009 break;
1010 return 230; // "simplify_neg_minmax"
1011 }
1012 break;
1013 }
1014 break;
1015 case 'u': // 1 string to match.
1016 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1017 break;
1018 return 82; // "unary_undef_to_zero"
1019 }
1020 break;
1021 case 20: // 9 strings to match.
1022 switch (RuleIdentifier[0]) {
1023 default: break;
1024 case 'a': // 1 string to match.
1025 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1026 break;
1027 return 199; // "and_or_disjoint_mask"
1028 case 'b': // 1 string to match.
1029 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1030 break;
1031 return 105; // "bitcast_bitcast_fold"
1032 case 'c': // 1 string to match.
1033 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1034 break;
1035 return 156; // "constant_fold_ffloor"
1036 case 'm': // 1 string to match.
1037 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1038 break;
1039 return 246; // "merge_of_x_and_undef"
1040 case 'o': // 1 string to match.
1041 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1042 break;
1043 return 225; // "or_and_xor_to_xor_or"
1044 case 'r': // 2 strings to match.
1045 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1046 break;
1047 switch (RuleIdentifier[4]) {
1048 default: break;
1049 case 'c': // 1 string to match.
1050 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1051 break;
1052 return 128; // "reduce_shl_of_extend"
1053 case 'n': // 1 string to match.
1054 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1055 break;
1056 return 136; // "redundant_sext_inreg"
1057 }
1058 break;
1059 case 'u': // 2 strings to match.
1060 if (RuleIdentifier[1] != 'n')
1061 break;
1062 switch (RuleIdentifier[2]) {
1063 default: break;
1064 case 'a': // 1 string to match.
1065 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1066 break;
1067 return 83; // "unary_undef_to_undef"
1068 case 'm': // 1 string to match.
1069 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1070 break;
1071 return 245; // "unmerge_zext_to_zext"
1072 }
1073 break;
1074 }
1075 break;
1076 case 21: // 11 strings to match.
1077 switch (RuleIdentifier[0]) {
1078 default: break;
1079 case 'a': // 1 string to match.
1080 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1081 break;
1082 return 227; // "and_xor_or_to_xor_and"
1083 case 'c': // 4 strings to match.
1084 if (RuleIdentifier[1] != 'o')
1085 break;
1086 switch (RuleIdentifier[2]) {
1087 default: break;
1088 case 'm': // 2 strings to match.
1089 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1090 break;
1091 switch (RuleIdentifier[8]) {
1092 default: break;
1093 case 'b': // 1 string to match.
1094 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1095 break;
1096 return 248; // "combine_build_unmerge"
1097 case 'c': // 1 string to match.
1098 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1099 break;
1100 return 231; // "combine_concat_vector"
1101 }
1102 break;
1103 case 'n': // 2 strings to match.
1104 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1105 break;
1106 switch (RuleIdentifier[14]) {
1107 default: break;
1108 case 'c': // 1 string to match.
1109 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1110 break;
1111 return 194; // "constant_fold_cast_op"
1112 case 'f': // 1 string to match.
1113 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1114 break;
1115 return 153; // "constant_fold_fptrunc"
1116 }
1117 break;
1118 }
1119 break;
1120 case 'f': // 1 string to match.
1121 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1122 break;
1123 return 216; // "fdiv_repeated_divison"
1124 case 'i': // 1 string to match.
1125 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1126 break;
1127 return 30; // "insert_vector_elt_oob"
1128 case 'l': // 1 string to match.
1129 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1130 break;
1131 return 255; // "lshr_of_trunc_of_lshr"
1132 case 'r': // 1 string to match.
1133 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1134 break;
1135 return 100; // "right_identity_one_fp"
1136 case 'u': // 2 strings to match.
1137 if (RuleIdentifier[1] != 'n')
1138 break;
1139 switch (RuleIdentifier[2]) {
1140 default: break;
1141 case 'd': // 1 string to match.
1142 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1143 break;
1144 return 79; // "undef_to_negative_one"
1145 case 'm': // 1 string to match.
1146 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1147 break;
1148 return 244; // "unmerge_dead_to_trunc"
1149 }
1150 break;
1151 }
1152 break;
1153 case 22: // 13 strings to match.
1154 switch (RuleIdentifier[0]) {
1155 default: break;
1156 case 'c': // 2 strings to match.
1157 if (RuleIdentifier[1] != 'o')
1158 break;
1159 switch (RuleIdentifier[2]) {
1160 default: break;
1161 case 'm': // 1 string to match.
1162 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1163 break;
1164 return 235; // "combine_shuffle_concat"
1165 case 'n': // 1 string to match.
1166 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1167 break;
1168 return 192; // "constant_fold_fp_binop"
1169 }
1170 break;
1171 case 'f': // 4 strings to match.
1172 switch (RuleIdentifier[1]) {
1173 default: break;
1174 case 'o': // 1 string to match.
1175 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1176 break;
1177 return 208; // "fold_binop_into_select"
1178 case 'u': // 3 strings to match.
1179 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1180 break;
1181 switch (RuleIdentifier[13]) {
1182 default: break;
1183 case 'l': // 1 string to match.
1184 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1185 break;
1186 return 180; // "funnel_shift_left_zero"
1187 case 'o': // 1 string to match.
1188 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1189 break;
1190 return 181; // "funnel_shift_overshift"
1191 case 't': // 1 string to match.
1192 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1193 break;
1194 return 178; // "funnel_shift_to_rotate"
1195 }
1196 break;
1197 }
1198 break;
1199 case 'i': // 1 string to match.
1200 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1201 break;
1202 return 121; // "icmp_to_lhs_known_bits"
1203 case 'm': // 1 string to match.
1204 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1205 break;
1206 return 250; // "match_subo_no_overflow"
1207 case 'p': // 1 string to match.
1208 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1209 break;
1210 return 84; // "propagate_undef_any_op"
1211 case 'r': // 2 strings to match.
1212 switch (RuleIdentifier[1]) {
1213 default: break;
1214 case 'e': // 1 string to match.
1215 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1216 break;
1217 return 198; // "redundant_neg_operands"
1218 case 'i': // 1 string to match.
1219 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1220 break;
1221 return 99; // "right_identity_one_int"
1222 }
1223 break;
1224 case 's': // 1 string to match.
1225 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1226 break;
1227 return 125; // "shl_ashr_to_sext_inreg"
1228 case 't': // 1 string to match.
1229 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1230 break;
1231 return 103; // "trunc_buildvector_fold"
1232 }
1233 break;
1234 case 23: // 6 strings to match.
1235 switch (RuleIdentifier[0]) {
1236 default: break;
1237 case 'b': // 1 string to match.
1238 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1239 break;
1240 return 63; // "buildvector_of_truncate"
1241 case 'f': // 1 string to match.
1242 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1243 break;
1244 return 179; // "funnel_shift_right_zero"
1245 case 'i': // 2 strings to match.
1246 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1247 break;
1248 switch (RuleIdentifier[21]) {
1249 default: break;
1250 case 's': // 1 string to match.
1251 if (RuleIdentifier[22] != 'i')
1252 break;
1253 return 162; // "itof_const_zero_fold_si"
1254 case 'u': // 1 string to match.
1255 if (RuleIdentifier[22] != 'i')
1256 break;
1257 return 163; // "itof_const_zero_fold_ui"
1258 }
1259 break;
1260 case 'p': // 1 string to match.
1261 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1262 break;
1263 return 85; // "propagate_undef_all_ops"
1264 case 't': // 1 string to match.
1265 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1266 break;
1267 return 254; // "truncusatu_to_fptouisat"
1268 }
1269 break;
1270 case 24: // 10 strings to match.
1271 switch (RuleIdentifier[0]) {
1272 default: break;
1273 case 'b': // 1 string to match.
1274 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1275 break;
1276 return 80; // "binop_left_undef_to_zero"
1277 case 'c': // 4 strings to match.
1278 switch (RuleIdentifier[1]) {
1279 default: break;
1280 case 'o': // 1 string to match.
1281 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1282 break;
1283 return 161; // "constant_fold_fnearbyint"
1284 case 't': // 3 strings to match.
1285 switch (RuleIdentifier[2]) {
1286 default: break;
1287 case 'l': // 2 strings to match.
1288 if (memcmp(RuleIdentifier.data()+3, "z_", 2) != 0)
1289 break;
1290 switch (RuleIdentifier[5]) {
1291 default: break;
1292 case 't': // 1 string to match.
1293 if (memcmp(RuleIdentifier.data()+6, "o_ctlz_zero_poison", 18) != 0)
1294 break;
1295 return 258; // "ctlz_to_ctlz_zero_poison"
1296 case 'z': // 1 string to match.
1297 if (memcmp(RuleIdentifier.data()+6, "ero_poison_to_ctls", 18) != 0)
1298 break;
1299 return 257; // "ctlz_zero_poison_to_ctls"
1300 }
1301 break;
1302 case 't': // 1 string to match.
1303 if (memcmp(RuleIdentifier.data()+3, "z_to_cttz_zero_poison", 21) != 0)
1304 break;
1305 return 259; // "cttz_to_cttz_zero_poison"
1306 }
1307 break;
1308 }
1309 break;
1310 case 'm': // 1 string to match.
1311 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1312 break;
1313 return 29; // "match_extract_of_element"
1314 case 'n': // 1 string to match.
1315 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1316 break;
1317 return 129; // "narrow_binop_feeding_and"
1318 case 's': // 2 strings to match.
1319 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1320 break;
1321 switch (RuleIdentifier[11]) {
1322 default: break;
1323 case 'o': // 1 string to match.
1324 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1325 break;
1326 return 59; // "sext_inreg_of_sext_inreg"
1327 case 't': // 1 string to match.
1328 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1329 break;
1330 return 145; // "sext_inreg_to_zext_inreg"
1331 }
1332 break;
1333 case 'x': // 1 string to match.
1334 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1335 break;
1336 return 171; // "xor_of_and_with_same_reg"
1337 }
1338 break;
1339 case 25: // 9 strings to match.
1340 switch (RuleIdentifier[0]) {
1341 default: break;
1342 case 'b': // 3 strings to match.
1343 switch (RuleIdentifier[1]) {
1344 default: break;
1345 case 'i': // 2 strings to match.
1346 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1347 break;
1348 switch (RuleIdentifier[22]) {
1349 default: break;
1350 case 'a': // 1 string to match.
1351 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1352 break;
1353 return 188; // "bitfield_extract_from_and"
1354 case 's': // 1 string to match.
1355 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1356 break;
1357 return 189; // "bitfield_extract_from_shr"
1358 }
1359 break;
1360 case 'u': // 1 string to match.
1361 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1362 break;
1363 return 102; // "buildvector_identity_fold"
1364 }
1365 break;
1366 case 'c': // 1 string to match.
1367 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1368 break;
1369 return 236; // "combine_shuffle_undef_rhs"
1370 case 'e': // 1 string to match.
1371 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1372 break;
1373 return 72; // "extract_vec_elt_build_vec"
1374 case 'n': // 1 string to match.
1375 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1376 break;
1377 return 126; // "neg_and_one_to_sext_inreg"
1378 case 'r': // 3 strings to match.
1379 switch (RuleIdentifier[1]) {
1380 default: break;
1381 case 'e': // 2 strings to match.
1382 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
1383 break;
1384 switch (RuleIdentifier[10]) {
1385 default: break;
1386 case 'a': // 1 string to match.
1387 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1388 break;
1389 return 138; // "redundant_aext_sext_inreg"
1390 case 'z': // 1 string to match.
1391 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1392 break;
1393 return 137; // "redundant_zext_sext_inreg"
1394 }
1395 break;
1396 case 'i': // 1 string to match.
1397 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
1398 break;
1399 return 110; // "right_identity_neg_one_fp"
1400 }
1401 break;
1402 }
1403 break;
1404 case 26: // 6 strings to match.
1405 switch (RuleIdentifier[0]) {
1406 default: break;
1407 case 'b': // 2 strings to match.
1408 if (RuleIdentifier[1] != 'i')
1409 break;
1410 switch (RuleIdentifier[2]) {
1411 default: break;
1412 case 'n': // 1 string to match.
1413 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1414 break;
1415 return 81; // "binop_right_undef_to_undef"
1416 case 't': // 1 string to match.
1417 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1418 break;
1419 return 106; // "bitcast_bitcast_to_bitcast"
1420 }
1421 break;
1422 case 'c': // 2 strings to match.
1423 if (RuleIdentifier[1] != 'o')
1424 break;
1425 switch (RuleIdentifier[2]) {
1426 default: break;
1427 case 'm': // 1 string to match.
1428 if (memcmp(RuleIdentifier.data()+3, "mute_fp_constant_to_rhs", 23) != 0)
1429 break;
1430 return 221; // "commute_fp_constant_to_rhs"
1431 case 'n': // 1 string to match.
1432 if (memcmp(RuleIdentifier.data()+3, "stant_fold_unary_int_op", 23) != 0)
1433 break;
1434 return 195; // "constant_fold_unary_int_op"
1435 }
1436 break;
1437 case 'f': // 1 string to match.
1438 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1439 break;
1440 return 177; // "funnel_shift_from_or_shift"
1441 case 'r': // 1 string to match.
1442 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1443 break;
1444 return 108; // "right_identity_neg_zero_fp"
1445 }
1446 break;
1447 case 27: // 6 strings to match.
1448 switch (RuleIdentifier[0]) {
1449 default: break;
1450 case 'c': // 2 strings to match.
1451 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1452 break;
1453 switch (RuleIdentifier[3]) {
1454 default: break;
1455 case 'b': // 1 string to match.
1456 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1457 break;
1458 return 238; // "combine_use_vector_truncate"
1459 case 'm': // 1 string to match.
1460 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1461 break;
1462 return 220; // "commute_int_constant_to_rhs"
1463 }
1464 break;
1465 case 'd': // 1 string to match.
1466 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1467 break;
1468 return 123; // "double_icmp_zero_or_combine"
1469 case 'r': // 1 string to match.
1470 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1471 break;
1472 return 124; // "redundant_binop_in_equality"
1473 case 't': // 1 string to match.
1474 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1475 break;
1476 return 104; // "trunc_lshr_buildvector_fold"
1477 case 'u': // 1 string to match.
1478 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1479 break;
1480 return 239; // "unmerge_anyext_build_vector"
1481 }
1482 break;
1483 case 28: // 4 strings to match.
1484 switch (RuleIdentifier[0]) {
1485 default: break;
1486 case 'd': // 1 string to match.
1487 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1488 break;
1489 return 122; // "double_icmp_zero_and_combine"
1490 case 'o': // 1 string to match.
1491 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1492 break;
1493 return 148; // "opt_brcond_by_inverting_cond"
1494 case 'p': // 1 string to match.
1495 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1496 break;
1497 return 86; // "propagate_undef_shuffle_mask"
1498 case 's': // 1 string to match.
1499 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1500 break;
1501 return 174; // "shift_of_shifted_logic_chain"
1502 }
1503 break;
1504 case 29: // 6 strings to match.
1505 switch (RuleIdentifier[0]) {
1506 default: break;
1507 case 'b': // 1 string to match.
1508 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1509 break;
1510 return 190; // "bitfield_extract_from_shr_and"
1511 case 'c': // 4 strings to match.
1512 if (RuleIdentifier[1] != 'o')
1513 break;
1514 switch (RuleIdentifier[2]) {
1515 default: break;
1516 case 'm': // 2 strings to match.
1517 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1518 break;
1519 switch (RuleIdentifier[8]) {
1520 default: break;
1521 case 'e': // 1 string to match.
1522 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1523 break;
1524 return 76; // "combine_extracted_vector_load"
1525 case 's': // 1 string to match.
1526 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1527 break;
1528 return 237; // "combine_shuffle_disjoint_mask"
1529 }
1530 break;
1531 case 'n': // 2 strings to match.
1532 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1533 break;
1534 switch (RuleIdentifier[24]) {
1535 default: break;
1536 case 'r': // 1 string to match.
1537 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1538 break;
1539 return 158; // "constant_fold_intrinsic_round"
1540 case 't': // 1 string to match.
1541 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1542 break;
1543 return 157; // "constant_fold_intrinsic_trunc"
1544 }
1545 break;
1546 }
1547 break;
1548 case 'i': // 1 string to match.
1549 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1550 break;
1551 return 120; // "icmp_to_true_false_known_bits"
1552 }
1553 break;
1554 case 30: // 2 strings to match.
1555 switch (RuleIdentifier[0]) {
1556 default: break;
1557 case 'f': // 1 string to match.
1558 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1559 break;
1560 return 47; // "freeze_of_non_undef_non_poison"
1561 case 'r': // 1 string to match.
1562 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1563 break;
1564 return 109; // "right_identity_neg_zero_fp_nsz"
1565 }
1566 break;
1567 case 31: // 2 strings to match.
1568 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1569 break;
1570 switch (RuleIdentifier[22]) {
1571 default: break;
1572 case 'e': // 1 string to match.
1573 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1574 break;
1575 return 28; // "insert_vector_element_elt_undef"
1576 case 'i': // 1 string to match.
1577 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1578 break;
1579 return 27; // "insert_vector_element_idx_undef"
1580 }
1581 break;
1582 case 32: // 4 strings to match.
1583 switch (RuleIdentifier[0]) {
1584 default: break;
1585 case 'b': // 1 string to match.
1586 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1587 break;
1588 return 187; // "bitfield_extract_from_sext_inreg"
1589 case 'c': // 2 strings to match.
1590 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1591 break;
1592 switch (RuleIdentifier[9]) {
1593 default: break;
1594 case 'a': // 1 string to match.
1595 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1596 break;
1597 return 200; // "combine_fadd_fmul_to_fmad_or_fma"
1598 case 's': // 1 string to match.
1599 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1600 break;
1601 return 204; // "combine_fsub_fmul_to_fmad_or_fma"
1602 }
1603 break;
1604 case 'e': // 1 string to match.
1605 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1606 break;
1607 return 31; // "extract_vector_element_not_const"
1608 }
1609 break;
1610 case 33: // 3 strings to match.
1611 switch (RuleIdentifier[0]) {
1612 default: break;
1613 case 'c': // 1 string to match.
1614 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
1615 break;
1616 return 159; // "constant_fold_intrinsic_roundeven"
1617 case 'r': // 2 strings to match.
1618 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1619 break;
1620 switch (RuleIdentifier[10]) {
1621 default: break;
1622 case 'a': // 1 string to match.
1623 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1624 break;
1625 return 140; // "redundant_aext_unmerge_sext_inreg"
1626 case 'z': // 1 string to match.
1627 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1628 break;
1629 return 139; // "redundant_zext_unmerge_sext_inreg"
1630 }
1631 break;
1632 }
1633 break;
1634 case 34: // 1 string to match.
1635 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1636 break;
1637 return 73; // "extract_all_elts_from_build_vector"
1638 case 35: // 1 string to match.
1639 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1640 break;
1641 return 33; // "extract_vector_element_build_vector"
1642 case 36: // 4 strings to match.
1643 switch (RuleIdentifier[0]) {
1644 default: break;
1645 case 'c': // 2 strings to match.
1646 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1647 break;
1648 switch (RuleIdentifier[8]) {
1649 default: break;
1650 case 'f': // 1 string to match.
1651 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1652 break;
1653 return 202; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1654 case 'i': // 1 string to match.
1655 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1656 break;
1657 return 71; // "combine_insert_vec_elts_build_vector"
1658 }
1659 break;
1660 case 'i': // 1 string to match.
1661 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1662 break;
1663 return 88; // "insert_extract_vec_elt_out_of_bounds"
1664 case 'm': // 1 string to match.
1665 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1666 break;
1667 return 26; // "match_extract_of_element_undef_index"
1668 }
1669 break;
1670 case 37: // 4 strings to match.
1671 switch (RuleIdentifier[0]) {
1672 default: break;
1673 case 'c': // 1 string to match.
1674 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1675 break;
1676 return 205; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1677 case 'e': // 1 string to match.
1678 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1679 break;
1680 return 41; // "extract_vector_element_shuffle_vector"
1681 case 'h': // 1 string to match.
1682 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1683 break;
1684 return 113; // "hoist_logic_op_with_same_opcode_hands"
1685 case 'm': // 1 string to match.
1686 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1687 break;
1688 return 25; // "match_extract_of_element_undef_vector"
1689 }
1690 break;
1691 case 38: // 2 strings to match.
1692 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1693 break;
1694 switch (RuleIdentifier[9]) {
1695 default: break;
1696 case 'a': // 1 string to match.
1697 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1698 break;
1699 return 201; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1700 case 's': // 1 string to match.
1701 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1702 break;
1703 return 206; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1704 }
1705 break;
1706 case 40: // 1 string to match.
1707 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1708 break;
1709 return 32; // "extract_vector_element_different_indices"
1710 case 42: // 9 strings to match.
1711 switch (RuleIdentifier[0]) {
1712 default: break;
1713 case 'c': // 1 string to match.
1714 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1715 break;
1716 return 203; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1717 case 'e': // 7 strings to match.
1718 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1719 break;
1720 switch (RuleIdentifier[41]) {
1721 default: break;
1722 case '2': // 1 string to match.
1723 return 34; // "extract_vector_element_build_vector_trunc2"
1724 case '3': // 1 string to match.
1725 return 35; // "extract_vector_element_build_vector_trunc3"
1726 case '4': // 1 string to match.
1727 return 36; // "extract_vector_element_build_vector_trunc4"
1728 case '5': // 1 string to match.
1729 return 37; // "extract_vector_element_build_vector_trunc5"
1730 case '6': // 1 string to match.
1731 return 38; // "extract_vector_element_build_vector_trunc6"
1732 case '7': // 1 string to match.
1733 return 39; // "extract_vector_element_build_vector_trunc7"
1734 case '8': // 1 string to match.
1735 return 40; // "extract_vector_element_build_vector_trunc8"
1736 }
1737 break;
1738 case 'f': // 1 string to match.
1739 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1740 break;
1741 return 182; // "funnel_shift_or_shift_to_funnel_shift_left"
1742 }
1743 break;
1744 case 43: // 2 strings to match.
1745 switch (RuleIdentifier[0]) {
1746 default: break;
1747 case 'c': // 1 string to match.
1748 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1749 break;
1750 return 207; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1751 case 'f': // 1 string to match.
1752 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1753 break;
1754 return 183; // "funnel_shift_or_shift_to_funnel_shift_right"
1755 }
1756 break;
1757 case 44: // 1 string to match.
1758 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1759 break;
1760 return 42; // "insert_vector_element_extract_vector_element"
1761 case 46: // 1 string to match.
1762 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1763 break;
1764 return 48; // "push_freeze_to_prevent_poison_from_propagating"
1765 }
1766#endif // ifndef NDEBUG
1767
1768 return std::nullopt;
1769}
1770static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1771 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1772 if (!RangePair.second.empty()) {
1773 const auto First = getRuleIdxForIdentifier(RangePair.first);
1774 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1775 if (!First || !Last)
1776 return std::nullopt;
1777 if (First >= Last)
1778 report_fatal_error("Beginning of range should be before end of range");
1779 return {{*First, *Last + 1}};
1780 }
1781 if (RangePair.first == "*") {
1782 return {{0, 272}};
1783 }
1784 const auto I = getRuleIdxForIdentifier(RangePair.first);
1785 if (!I)
1786 return std::nullopt;
1787 return {{*I, *I + 1}};
1788}
1789
1790bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1791 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1792 if (!MaybeRange)
1793 return false;
1794 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1795 DisabledRules.reset(I);
1796 return true;
1797}
1798
1799bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1800 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1801 if (!MaybeRange)
1802 return false;
1803 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1804 DisabledRules.set(I);
1805 return true;
1806}
1807
1808static std::vector<std::string> RISCVPreLegalizerCombinerOption;
1809static cl::list<std::string> RISCVPreLegalizerCombinerDisableOption(
1810 "riscvprelegalizercombiner-disable-rule",
1811 cl::desc("Disable one or more combiner rules temporarily in the RISCVPreLegalizerCombiner pass"),
1812 cl::CommaSeparated,
1813 cl::Hidden,
1814 cl::cat(GICombinerOptionCategory),
1815 cl::callback([](const std::string &Str) {
1816 RISCVPreLegalizerCombinerOption.push_back(Str);
1817 }));
1818static cl::list<std::string> RISCVPreLegalizerCombinerOnlyEnableOption(
1819 "riscvprelegalizercombiner-only-enable-rule",
1820 cl::desc("Disable all rules in the RISCVPreLegalizerCombiner pass then re-enable the specified ones"),
1821 cl::Hidden,
1822 cl::cat(GICombinerOptionCategory),
1823 cl::callback([](const std::string &CommaSeparatedArg) {
1824 StringRef Str = CommaSeparatedArg;
1825 RISCVPreLegalizerCombinerOption.push_back("*");
1826 do {
1827 auto X = Str.split(",");
1828 RISCVPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1829 Str = X.second;
1830 } while (!Str.empty());
1831 }));
1832
1833
1834bool RISCVPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1835 return !DisabledRules.test(RuleID);
1836}
1837bool RISCVPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1838 for (StringRef Identifier : RISCVPreLegalizerCombinerOption) {
1839 bool Enabled = Identifier.consume_front("!");
1840 if (Enabled && !setRuleEnabled(Identifier))
1841 return false;
1842 if (!Enabled && !setRuleDisabled(Identifier))
1843 return false;
1844 }
1845 return true;
1846}
1847
1848
1849#endif // GET_GICOMBINER_TYPES
1850
1851#ifdef GET_GICOMBINER_TYPES
1852
1853const unsigned MAX_SUBTARGET_PREDICATES = 0;
1854using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1855
1856#endif // GET_GICOMBINER_TYPES
1857
1858#ifdef GET_GICOMBINER_CLASS_MEMBERS
1859
1860 bool canMatchOpcode(unsigned Opc) const override;
1861
1862#endif // GET_GICOMBINER_CLASS_MEMBERS
1863
1864#ifdef GET_GICOMBINER_CLASS_MEMBERS
1865
1866PredicateBitset AvailableModuleFeatures;
1867mutable PredicateBitset AvailableFunctionFeatures;
1868PredicateBitset getAvailableFeatures() const {
1869 return AvailableModuleFeatures | AvailableFunctionFeatures;
1870}
1871PredicateBitset
1872computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
1873PredicateBitset
1874computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
1875 const MachineFunction *MF) const;
1876void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1877
1878#endif // GET_GICOMBINER_CLASS_MEMBERS
1879
1880#ifdef GET_GICOMBINER_CLASS_MEMBERS
1881
1882 mutable MatcherState State;
1883 typedef ComplexRendererFns(RISCVPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1884 typedef void(RISCVPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1885 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1886 static RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1887 static RISCVPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1888 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1889 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1890 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1891 const uint8_t *getMatchTable() const override;
1892 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1893 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1894 bool testSimplePredicate(unsigned PredicateID) const override;
1895 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1896
1897#endif // GET_GICOMBINER_CLASS_MEMBERS
1898
1899#ifdef GET_GICOMBINER_IMPL
1900
1901// LLT Objects.
1902enum {
1903 GILLT_s1,
1904};
1905const static size_t NumTypeObjects = 1;
1906const static LLT TypeObjects[] = {
1907 LLT::scalar(1),
1908};
1909
1910// Bits for subtarget features that participate in instruction matching.
1911enum SubtargetFeatureBits : uint8_t {
1912};
1913
1914PredicateBitset RISCVPreLegalizerCombinerImpl::
1915computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
1916 PredicateBitset Features{};
1917 return Features;
1918}
1919
1920void RISCVPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1921 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
1922}
1923PredicateBitset RISCVPreLegalizerCombinerImpl::
1924computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
1925 PredicateBitset Features{};
1926 return Features;
1927}
1928
1929// Feature bitsets.
1930enum {
1931 GIFBS_Invalid,
1932};
1933constexpr static PredicateBitset FeatureBitsets[] {
1934 {}, // GIFBS_Invalid
1935};
1936
1937// ComplexPattern predicates.
1938enum {
1939 GICP_Invalid,
1940};
1941// See constructor for table contents
1942
1943RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn
1944RISCVPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1945 nullptr, // GICP_Invalid
1946};
1947
1948enum {
1949 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1950 GICXXPred_MI_Predicate_GICombiner1,
1951 GICXXPred_MI_Predicate_GICombiner2,
1952 GICXXPred_MI_Predicate_GICombiner3,
1953 GICXXPred_MI_Predicate_GICombiner4,
1954 GICXXPred_MI_Predicate_GICombiner5,
1955 GICXXPred_MI_Predicate_GICombiner6,
1956 GICXXPred_MI_Predicate_GICombiner7,
1957 GICXXPred_MI_Predicate_GICombiner8,
1958 GICXXPred_MI_Predicate_GICombiner9,
1959 GICXXPred_MI_Predicate_GICombiner10,
1960 GICXXPred_MI_Predicate_GICombiner11,
1961 GICXXPred_MI_Predicate_GICombiner12,
1962 GICXXPred_MI_Predicate_GICombiner13,
1963 GICXXPred_MI_Predicate_GICombiner14,
1964 GICXXPred_MI_Predicate_GICombiner15,
1965 GICXXPred_MI_Predicate_GICombiner16,
1966 GICXXPred_MI_Predicate_GICombiner17,
1967 GICXXPred_MI_Predicate_GICombiner18,
1968 GICXXPred_MI_Predicate_GICombiner19,
1969 GICXXPred_MI_Predicate_GICombiner20,
1970 GICXXPred_MI_Predicate_GICombiner21,
1971 GICXXPred_MI_Predicate_GICombiner22,
1972 GICXXPred_MI_Predicate_GICombiner23,
1973 GICXXPred_MI_Predicate_GICombiner24,
1974};
1975bool RISCVPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1976 switch (PredicateID) {
1977 case GICXXPred_MI_Predicate_GICombiner0: {
1978 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
1979 }
1980 case GICXXPred_MI_Predicate_GICombiner1: {
1981 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1982 }
1983 case GICXXPred_MI_Predicate_GICombiner2: {
1984 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1985 }
1986 case GICXXPred_MI_Predicate_GICombiner3: {
1987 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1988 }
1989 case GICXXPred_MI_Predicate_GICombiner4: {
1990 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1991 }
1992 case GICXXPred_MI_Predicate_GICombiner5: {
1993 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
1994 }
1995 case GICXXPred_MI_Predicate_GICombiner6: {
1996 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1997 }
1998 case GICXXPred_MI_Predicate_GICombiner7: {
1999 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
2000 }
2001 case GICXXPred_MI_Predicate_GICombiner8: {
2002 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
2003 }
2004 case GICXXPred_MI_Predicate_GICombiner9: {
2005 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
2006 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2007 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2008 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2009 }
2010 case GICXXPred_MI_Predicate_GICombiner10: {
2011 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
2012 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2013 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2014 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2015 }
2016 case GICXXPred_MI_Predicate_GICombiner11: {
2017 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2018 Helper.isLegalOrBeforeLegalizer({
2019 TargetOpcode::G_SEXT_INREG,
2020 {MRI.getType(State.MIs[1]->getOperand(1).getReg())},
2021 {},
2022 {1}
2023 });
2024 }
2025 case GICXXPred_MI_Predicate_GICombiner12: {
2026 return MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
2027 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2028 }
2029 case GICXXPred_MI_Predicate_GICombiner13: {
2030 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
2031 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2032 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
2033 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
2034 llvm_unreachable("GICombiner13 should have returned");
2035 }
2036 case GICXXPred_MI_Predicate_GICombiner14: {
2037 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
2038 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2039 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2040 }
2041 case GICXXPred_MI_Predicate_GICombiner15: {
2042 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
2043 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2044 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2045 }
2046 case GICXXPred_MI_Predicate_GICombiner16: {
2047 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
2048 }
2049 case GICXXPred_MI_Predicate_GICombiner17: {
2050 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
2051 }
2052 case GICXXPred_MI_Predicate_GICombiner18: {
2053 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2054 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2055 }
2056 case GICXXPred_MI_Predicate_GICombiner19: {
2057 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2058 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2059 }
2060 case GICXXPred_MI_Predicate_GICombiner20: {
2061 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
2062 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2063 }
2064 case GICXXPred_MI_Predicate_GICombiner21: {
2065 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_UAVGFLOOR);
2066 }
2067 case GICXXPred_MI_Predicate_GICombiner22: {
2068 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_SAVGFLOOR);
2069 }
2070 case GICXXPred_MI_Predicate_GICombiner23: {
2071 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_UAVGCEIL);
2072 }
2073 case GICXXPred_MI_Predicate_GICombiner24: {
2074 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_SAVGCEIL);
2075 }
2076 }
2077 llvm_unreachable("Unknown predicate");
2078 return false;
2079}
2080bool RISCVPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
2081 llvm_unreachable("Unknown predicate");
2082 return false;
2083}
2084bool RISCVPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
2085 llvm_unreachable("Unknown predicate");
2086 return false;
2087}
2088bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2089 llvm_unreachable("Unknown predicate");
2090 return false;
2091}
2092bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2093 llvm_unreachable("Unknown predicate");
2094 return false;
2095}
2096enum {
2097 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2098 GICXXPred_Simple_IsRule1Enabled,
2099 GICXXPred_Simple_IsRule2Enabled,
2100 GICXXPred_Simple_IsRule3Enabled,
2101 GICXXPred_Simple_IsRule4Enabled,
2102 GICXXPred_Simple_IsRule5Enabled,
2103 GICXXPred_Simple_IsRule6Enabled,
2104 GICXXPred_Simple_IsRule7Enabled,
2105 GICXXPred_Simple_IsRule8Enabled,
2106 GICXXPred_Simple_IsRule9Enabled,
2107 GICXXPred_Simple_IsRule10Enabled,
2108 GICXXPred_Simple_IsRule11Enabled,
2109 GICXXPred_Simple_IsRule12Enabled,
2110 GICXXPred_Simple_IsRule13Enabled,
2111 GICXXPred_Simple_IsRule14Enabled,
2112 GICXXPred_Simple_IsRule15Enabled,
2113 GICXXPred_Simple_IsRule16Enabled,
2114 GICXXPred_Simple_IsRule17Enabled,
2115 GICXXPred_Simple_IsRule18Enabled,
2116 GICXXPred_Simple_IsRule19Enabled,
2117 GICXXPred_Simple_IsRule20Enabled,
2118 GICXXPred_Simple_IsRule21Enabled,
2119 GICXXPred_Simple_IsRule22Enabled,
2120 GICXXPred_Simple_IsRule23Enabled,
2121 GICXXPred_Simple_IsRule24Enabled,
2122 GICXXPred_Simple_IsRule25Enabled,
2123 GICXXPred_Simple_IsRule26Enabled,
2124 GICXXPred_Simple_IsRule27Enabled,
2125 GICXXPred_Simple_IsRule28Enabled,
2126 GICXXPred_Simple_IsRule29Enabled,
2127 GICXXPred_Simple_IsRule30Enabled,
2128 GICXXPred_Simple_IsRule31Enabled,
2129 GICXXPred_Simple_IsRule32Enabled,
2130 GICXXPred_Simple_IsRule33Enabled,
2131 GICXXPred_Simple_IsRule34Enabled,
2132 GICXXPred_Simple_IsRule35Enabled,
2133 GICXXPred_Simple_IsRule36Enabled,
2134 GICXXPred_Simple_IsRule37Enabled,
2135 GICXXPred_Simple_IsRule38Enabled,
2136 GICXXPred_Simple_IsRule39Enabled,
2137 GICXXPred_Simple_IsRule40Enabled,
2138 GICXXPred_Simple_IsRule41Enabled,
2139 GICXXPred_Simple_IsRule42Enabled,
2140 GICXXPred_Simple_IsRule43Enabled,
2141 GICXXPred_Simple_IsRule44Enabled,
2142 GICXXPred_Simple_IsRule45Enabled,
2143 GICXXPred_Simple_IsRule46Enabled,
2144 GICXXPred_Simple_IsRule47Enabled,
2145 GICXXPred_Simple_IsRule48Enabled,
2146 GICXXPred_Simple_IsRule49Enabled,
2147 GICXXPred_Simple_IsRule50Enabled,
2148 GICXXPred_Simple_IsRule51Enabled,
2149 GICXXPred_Simple_IsRule52Enabled,
2150 GICXXPred_Simple_IsRule53Enabled,
2151 GICXXPred_Simple_IsRule54Enabled,
2152 GICXXPred_Simple_IsRule55Enabled,
2153 GICXXPred_Simple_IsRule56Enabled,
2154 GICXXPred_Simple_IsRule57Enabled,
2155 GICXXPred_Simple_IsRule58Enabled,
2156 GICXXPred_Simple_IsRule59Enabled,
2157 GICXXPred_Simple_IsRule60Enabled,
2158 GICXXPred_Simple_IsRule61Enabled,
2159 GICXXPred_Simple_IsRule62Enabled,
2160 GICXXPred_Simple_IsRule63Enabled,
2161 GICXXPred_Simple_IsRule64Enabled,
2162 GICXXPred_Simple_IsRule65Enabled,
2163 GICXXPred_Simple_IsRule66Enabled,
2164 GICXXPred_Simple_IsRule67Enabled,
2165 GICXXPred_Simple_IsRule68Enabled,
2166 GICXXPred_Simple_IsRule69Enabled,
2167 GICXXPred_Simple_IsRule70Enabled,
2168 GICXXPred_Simple_IsRule71Enabled,
2169 GICXXPred_Simple_IsRule72Enabled,
2170 GICXXPred_Simple_IsRule73Enabled,
2171 GICXXPred_Simple_IsRule74Enabled,
2172 GICXXPred_Simple_IsRule75Enabled,
2173 GICXXPred_Simple_IsRule76Enabled,
2174 GICXXPred_Simple_IsRule77Enabled,
2175 GICXXPred_Simple_IsRule78Enabled,
2176 GICXXPred_Simple_IsRule79Enabled,
2177 GICXXPred_Simple_IsRule80Enabled,
2178 GICXXPred_Simple_IsRule81Enabled,
2179 GICXXPred_Simple_IsRule82Enabled,
2180 GICXXPred_Simple_IsRule83Enabled,
2181 GICXXPred_Simple_IsRule84Enabled,
2182 GICXXPred_Simple_IsRule85Enabled,
2183 GICXXPred_Simple_IsRule86Enabled,
2184 GICXXPred_Simple_IsRule87Enabled,
2185 GICXXPred_Simple_IsRule88Enabled,
2186 GICXXPred_Simple_IsRule89Enabled,
2187 GICXXPred_Simple_IsRule90Enabled,
2188 GICXXPred_Simple_IsRule91Enabled,
2189 GICXXPred_Simple_IsRule92Enabled,
2190 GICXXPred_Simple_IsRule93Enabled,
2191 GICXXPred_Simple_IsRule94Enabled,
2192 GICXXPred_Simple_IsRule95Enabled,
2193 GICXXPred_Simple_IsRule96Enabled,
2194 GICXXPred_Simple_IsRule97Enabled,
2195 GICXXPred_Simple_IsRule98Enabled,
2196 GICXXPred_Simple_IsRule99Enabled,
2197 GICXXPred_Simple_IsRule100Enabled,
2198 GICXXPred_Simple_IsRule101Enabled,
2199 GICXXPred_Simple_IsRule102Enabled,
2200 GICXXPred_Simple_IsRule103Enabled,
2201 GICXXPred_Simple_IsRule104Enabled,
2202 GICXXPred_Simple_IsRule105Enabled,
2203 GICXXPred_Simple_IsRule106Enabled,
2204 GICXXPred_Simple_IsRule107Enabled,
2205 GICXXPred_Simple_IsRule108Enabled,
2206 GICXXPred_Simple_IsRule109Enabled,
2207 GICXXPred_Simple_IsRule110Enabled,
2208 GICXXPred_Simple_IsRule111Enabled,
2209 GICXXPred_Simple_IsRule112Enabled,
2210 GICXXPred_Simple_IsRule113Enabled,
2211 GICXXPred_Simple_IsRule114Enabled,
2212 GICXXPred_Simple_IsRule115Enabled,
2213 GICXXPred_Simple_IsRule116Enabled,
2214 GICXXPred_Simple_IsRule117Enabled,
2215 GICXXPred_Simple_IsRule118Enabled,
2216 GICXXPred_Simple_IsRule119Enabled,
2217 GICXXPred_Simple_IsRule120Enabled,
2218 GICXXPred_Simple_IsRule121Enabled,
2219 GICXXPred_Simple_IsRule122Enabled,
2220 GICXXPred_Simple_IsRule123Enabled,
2221 GICXXPred_Simple_IsRule124Enabled,
2222 GICXXPred_Simple_IsRule125Enabled,
2223 GICXXPred_Simple_IsRule126Enabled,
2224 GICXXPred_Simple_IsRule127Enabled,
2225 GICXXPred_Simple_IsRule128Enabled,
2226 GICXXPred_Simple_IsRule129Enabled,
2227 GICXXPred_Simple_IsRule130Enabled,
2228 GICXXPred_Simple_IsRule131Enabled,
2229 GICXXPred_Simple_IsRule132Enabled,
2230 GICXXPred_Simple_IsRule133Enabled,
2231 GICXXPred_Simple_IsRule134Enabled,
2232 GICXXPred_Simple_IsRule135Enabled,
2233 GICXXPred_Simple_IsRule136Enabled,
2234 GICXXPred_Simple_IsRule137Enabled,
2235 GICXXPred_Simple_IsRule138Enabled,
2236 GICXXPred_Simple_IsRule139Enabled,
2237 GICXXPred_Simple_IsRule140Enabled,
2238 GICXXPred_Simple_IsRule141Enabled,
2239 GICXXPred_Simple_IsRule142Enabled,
2240 GICXXPred_Simple_IsRule143Enabled,
2241 GICXXPred_Simple_IsRule144Enabled,
2242 GICXXPred_Simple_IsRule145Enabled,
2243 GICXXPred_Simple_IsRule146Enabled,
2244 GICXXPred_Simple_IsRule147Enabled,
2245 GICXXPred_Simple_IsRule148Enabled,
2246 GICXXPred_Simple_IsRule149Enabled,
2247 GICXXPred_Simple_IsRule150Enabled,
2248 GICXXPred_Simple_IsRule151Enabled,
2249 GICXXPred_Simple_IsRule152Enabled,
2250 GICXXPred_Simple_IsRule153Enabled,
2251 GICXXPred_Simple_IsRule154Enabled,
2252 GICXXPred_Simple_IsRule155Enabled,
2253 GICXXPred_Simple_IsRule156Enabled,
2254 GICXXPred_Simple_IsRule157Enabled,
2255 GICXXPred_Simple_IsRule158Enabled,
2256 GICXXPred_Simple_IsRule159Enabled,
2257 GICXXPred_Simple_IsRule160Enabled,
2258 GICXXPred_Simple_IsRule161Enabled,
2259 GICXXPred_Simple_IsRule162Enabled,
2260 GICXXPred_Simple_IsRule163Enabled,
2261 GICXXPred_Simple_IsRule164Enabled,
2262 GICXXPred_Simple_IsRule165Enabled,
2263 GICXXPred_Simple_IsRule166Enabled,
2264 GICXXPred_Simple_IsRule167Enabled,
2265 GICXXPred_Simple_IsRule168Enabled,
2266 GICXXPred_Simple_IsRule169Enabled,
2267 GICXXPred_Simple_IsRule170Enabled,
2268 GICXXPred_Simple_IsRule171Enabled,
2269 GICXXPred_Simple_IsRule172Enabled,
2270 GICXXPred_Simple_IsRule173Enabled,
2271 GICXXPred_Simple_IsRule174Enabled,
2272 GICXXPred_Simple_IsRule175Enabled,
2273 GICXXPred_Simple_IsRule176Enabled,
2274 GICXXPred_Simple_IsRule177Enabled,
2275 GICXXPred_Simple_IsRule178Enabled,
2276 GICXXPred_Simple_IsRule179Enabled,
2277 GICXXPred_Simple_IsRule180Enabled,
2278 GICXXPred_Simple_IsRule181Enabled,
2279 GICXXPred_Simple_IsRule182Enabled,
2280 GICXXPred_Simple_IsRule183Enabled,
2281 GICXXPred_Simple_IsRule184Enabled,
2282 GICXXPred_Simple_IsRule185Enabled,
2283 GICXXPred_Simple_IsRule186Enabled,
2284 GICXXPred_Simple_IsRule187Enabled,
2285 GICXXPred_Simple_IsRule188Enabled,
2286 GICXXPred_Simple_IsRule189Enabled,
2287 GICXXPred_Simple_IsRule190Enabled,
2288 GICXXPred_Simple_IsRule191Enabled,
2289 GICXXPred_Simple_IsRule192Enabled,
2290 GICXXPred_Simple_IsRule193Enabled,
2291 GICXXPred_Simple_IsRule194Enabled,
2292 GICXXPred_Simple_IsRule195Enabled,
2293 GICXXPred_Simple_IsRule196Enabled,
2294 GICXXPred_Simple_IsRule197Enabled,
2295 GICXXPred_Simple_IsRule198Enabled,
2296 GICXXPred_Simple_IsRule199Enabled,
2297 GICXXPred_Simple_IsRule200Enabled,
2298 GICXXPred_Simple_IsRule201Enabled,
2299 GICXXPred_Simple_IsRule202Enabled,
2300 GICXXPred_Simple_IsRule203Enabled,
2301 GICXXPred_Simple_IsRule204Enabled,
2302 GICXXPred_Simple_IsRule205Enabled,
2303 GICXXPred_Simple_IsRule206Enabled,
2304 GICXXPred_Simple_IsRule207Enabled,
2305 GICXXPred_Simple_IsRule208Enabled,
2306 GICXXPred_Simple_IsRule209Enabled,
2307 GICXXPred_Simple_IsRule210Enabled,
2308 GICXXPred_Simple_IsRule211Enabled,
2309 GICXXPred_Simple_IsRule212Enabled,
2310 GICXXPred_Simple_IsRule213Enabled,
2311 GICXXPred_Simple_IsRule214Enabled,
2312 GICXXPred_Simple_IsRule215Enabled,
2313 GICXXPred_Simple_IsRule216Enabled,
2314 GICXXPred_Simple_IsRule217Enabled,
2315 GICXXPred_Simple_IsRule218Enabled,
2316 GICXXPred_Simple_IsRule219Enabled,
2317 GICXXPred_Simple_IsRule220Enabled,
2318 GICXXPred_Simple_IsRule221Enabled,
2319 GICXXPred_Simple_IsRule222Enabled,
2320 GICXXPred_Simple_IsRule223Enabled,
2321 GICXXPred_Simple_IsRule224Enabled,
2322 GICXXPred_Simple_IsRule225Enabled,
2323 GICXXPred_Simple_IsRule226Enabled,
2324 GICXXPred_Simple_IsRule227Enabled,
2325 GICXXPred_Simple_IsRule228Enabled,
2326 GICXXPred_Simple_IsRule229Enabled,
2327 GICXXPred_Simple_IsRule230Enabled,
2328 GICXXPred_Simple_IsRule231Enabled,
2329 GICXXPred_Simple_IsRule232Enabled,
2330 GICXXPred_Simple_IsRule233Enabled,
2331 GICXXPred_Simple_IsRule234Enabled,
2332 GICXXPred_Simple_IsRule235Enabled,
2333 GICXXPred_Simple_IsRule236Enabled,
2334 GICXXPred_Simple_IsRule237Enabled,
2335 GICXXPred_Simple_IsRule238Enabled,
2336 GICXXPred_Simple_IsRule239Enabled,
2337 GICXXPred_Simple_IsRule240Enabled,
2338 GICXXPred_Simple_IsRule241Enabled,
2339 GICXXPred_Simple_IsRule242Enabled,
2340 GICXXPred_Simple_IsRule243Enabled,
2341 GICXXPred_Simple_IsRule244Enabled,
2342 GICXXPred_Simple_IsRule245Enabled,
2343 GICXXPred_Simple_IsRule246Enabled,
2344 GICXXPred_Simple_IsRule247Enabled,
2345 GICXXPred_Simple_IsRule248Enabled,
2346 GICXXPred_Simple_IsRule249Enabled,
2347 GICXXPred_Simple_IsRule250Enabled,
2348 GICXXPred_Simple_IsRule251Enabled,
2349 GICXXPred_Simple_IsRule252Enabled,
2350 GICXXPred_Simple_IsRule253Enabled,
2351 GICXXPred_Simple_IsRule254Enabled,
2352 GICXXPred_Simple_IsRule255Enabled,
2353 GICXXPred_Simple_IsRule256Enabled,
2354 GICXXPred_Simple_IsRule257Enabled,
2355 GICXXPred_Simple_IsRule258Enabled,
2356 GICXXPred_Simple_IsRule259Enabled,
2357 GICXXPred_Simple_IsRule260Enabled,
2358 GICXXPred_Simple_IsRule261Enabled,
2359 GICXXPred_Simple_IsRule262Enabled,
2360 GICXXPred_Simple_IsRule263Enabled,
2361 GICXXPred_Simple_IsRule264Enabled,
2362 GICXXPred_Simple_IsRule265Enabled,
2363 GICXXPred_Simple_IsRule266Enabled,
2364 GICXXPred_Simple_IsRule267Enabled,
2365 GICXXPred_Simple_IsRule268Enabled,
2366 GICXXPred_Simple_IsRule269Enabled,
2367 GICXXPred_Simple_IsRule270Enabled,
2368 GICXXPred_Simple_IsRule271Enabled,
2369};
2370
2371bool RISCVPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2372 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2373}
2374// Custom renderers.
2375enum {
2376 GICR_Invalid,
2377};
2378RISCVPreLegalizerCombinerImpl::CustomRendererFn
2379RISCVPreLegalizerCombinerImpl::CustomRenderers[] = {
2380 nullptr, // GICR_Invalid
2381};
2382
2383bool RISCVPreLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
2384 switch (Opc) {
2385 case TargetOpcode::G_FCMP:
2386 case TargetOpcode::G_FSHL:
2387 case TargetOpcode::G_FSHR:
2388 case TargetOpcode::G_ICMP:
2389 case TargetOpcode::G_INSERT_VECTOR_ELT:
2390 case TargetOpcode::G_SELECT:
2391 case TargetOpcode::G_SHUFFLE_VECTOR:
2392 case TargetOpcode::G_ADD:
2393 case TargetOpcode::G_AND:
2394 case TargetOpcode::G_ASHR:
2395 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
2396 case TargetOpcode::G_FADD:
2397 case TargetOpcode::G_FCOPYSIGN:
2398 case TargetOpcode::G_FDIV:
2399 case TargetOpcode::G_FMAXIMUM:
2400 case TargetOpcode::G_FMAXIMUMNUM:
2401 case TargetOpcode::G_FMAXNUM:
2402 case TargetOpcode::G_FMINIMUM:
2403 case TargetOpcode::G_FMINIMUMNUM:
2404 case TargetOpcode::G_FMINNUM:
2405 case TargetOpcode::G_FMUL:
2406 case TargetOpcode::G_FPOWI:
2407 case TargetOpcode::G_FREM:
2408 case TargetOpcode::G_FSUB:
2409 case TargetOpcode::G_LSHR:
2410 case TargetOpcode::G_MERGE_VALUES:
2411 case TargetOpcode::G_MUL:
2412 case TargetOpcode::G_OR:
2413 case TargetOpcode::G_PTR_ADD:
2414 case TargetOpcode::G_ROTL:
2415 case TargetOpcode::G_ROTR:
2416 case TargetOpcode::G_SDIV:
2417 case TargetOpcode::G_SEXT_INREG:
2418 case TargetOpcode::G_SHL:
2419 case TargetOpcode::G_SREM:
2420 case TargetOpcode::G_SUB:
2421 case TargetOpcode::G_UDIV:
2422 case TargetOpcode::G_UREM:
2423 case TargetOpcode::G_XOR:
2424 case TargetOpcode::COPY:
2425 case TargetOpcode::G_ABS:
2426 case TargetOpcode::G_ANYEXT:
2427 case TargetOpcode::G_BITCAST:
2428 case TargetOpcode::G_BITREVERSE:
2429 case TargetOpcode::G_BSWAP:
2430 case TargetOpcode::G_BUILD_VECTOR:
2431 case TargetOpcode::G_CTLZ:
2432 case TargetOpcode::G_CTLZ_ZERO_POISON:
2433 case TargetOpcode::G_CTPOP:
2434 case TargetOpcode::G_CTTZ:
2435 case TargetOpcode::G_CTTZ_ZERO_POISON:
2436 case TargetOpcode::G_FABS:
2437 case TargetOpcode::G_FCANONICALIZE:
2438 case TargetOpcode::G_FCEIL:
2439 case TargetOpcode::G_FFLOOR:
2440 case TargetOpcode::G_FLOG2:
2441 case TargetOpcode::G_FNEARBYINT:
2442 case TargetOpcode::G_FNEG:
2443 case TargetOpcode::G_FPEXT:
2444 case TargetOpcode::G_FPTOSI:
2445 case TargetOpcode::G_FPTOUI:
2446 case TargetOpcode::G_FPTRUNC:
2447 case TargetOpcode::G_FREEZE:
2448 case TargetOpcode::G_FRINT:
2449 case TargetOpcode::G_FSQRT:
2450 case TargetOpcode::G_INTRINSIC_ROUND:
2451 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
2452 case TargetOpcode::G_INTRINSIC_TRUNC:
2453 case TargetOpcode::G_INTTOPTR:
2454 case TargetOpcode::G_PTRTOINT:
2455 case TargetOpcode::G_SEXT:
2456 case TargetOpcode::G_SITOFP:
2457 case TargetOpcode::G_TRUNC:
2458 case TargetOpcode::G_TRUNC_USAT_U:
2459 case TargetOpcode::G_UITOFP:
2460 case TargetOpcode::G_ZEXT:
2461 case TargetOpcode::G_BR:
2462 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
2463 case TargetOpcode::G_CONCAT_VECTORS:
2464 case TargetOpcode::G_FMA:
2465 case TargetOpcode::G_FMAD:
2466 case TargetOpcode::G_FMAXNUM_IEEE:
2467 case TargetOpcode::G_FMINNUM_IEEE:
2468 case TargetOpcode::G_LOAD:
2469 case TargetOpcode::G_PHI:
2470 case TargetOpcode::G_SADDE:
2471 case TargetOpcode::G_SADDO:
2472 case TargetOpcode::G_SADDSAT:
2473 case TargetOpcode::G_SEXTLOAD:
2474 case TargetOpcode::G_SMAX:
2475 case TargetOpcode::G_SMIN:
2476 case TargetOpcode::G_SMULFIX:
2477 case TargetOpcode::G_SMULFIXSAT:
2478 case TargetOpcode::G_SMULH:
2479 case TargetOpcode::G_SMULO:
2480 case TargetOpcode::G_SSHLSAT:
2481 case TargetOpcode::G_SSUBE:
2482 case TargetOpcode::G_SSUBO:
2483 case TargetOpcode::G_STORE:
2484 case TargetOpcode::G_UADDE:
2485 case TargetOpcode::G_UADDO:
2486 case TargetOpcode::G_UADDSAT:
2487 case TargetOpcode::G_UMAX:
2488 case TargetOpcode::G_UMIN:
2489 case TargetOpcode::G_UMULFIX:
2490 case TargetOpcode::G_UMULFIXSAT:
2491 case TargetOpcode::G_UMULH:
2492 case TargetOpcode::G_UMULO:
2493 case TargetOpcode::G_UNMERGE_VALUES:
2494 case TargetOpcode::G_USHLSAT:
2495 case TargetOpcode::G_USUBE:
2496 case TargetOpcode::G_USUBO:
2497 case TargetOpcode::G_ZEXTLOAD:
2498 return true;
2499 default:
2500 return false;
2501 }
2502}
2503
2504bool RISCVPreLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
2505 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2506 State.MIs.clear();
2507 State.MIs.push_back(&I);
2508 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2509 return true;
2510 }
2511
2512 return false;
2513}
2514
2515enum {
2516 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2517 GICXXCustomAction_GICombiner1,
2518 GICXXCustomAction_GICombiner2,
2519 GICXXCustomAction_GICombiner3,
2520 GICXXCustomAction_GICombiner4,
2521 GICXXCustomAction_GICombiner5,
2522 GICXXCustomAction_GICombiner6,
2523 GICXXCustomAction_GICombiner7,
2524 GICXXCustomAction_GICombiner8,
2525 GICXXCustomAction_GICombiner9,
2526 GICXXCustomAction_GICombiner10,
2527 GICXXCustomAction_GICombiner11,
2528 GICXXCustomAction_GICombiner12,
2529 GICXXCustomAction_GICombiner13,
2530 GICXXCustomAction_GICombiner14,
2531 GICXXCustomAction_GICombiner15,
2532 GICXXCustomAction_GICombiner16,
2533 GICXXCustomAction_GICombiner17,
2534 GICXXCustomAction_GICombiner18,
2535 GICXXCustomAction_GICombiner19,
2536 GICXXCustomAction_GICombiner20,
2537 GICXXCustomAction_GICombiner21,
2538 GICXXCustomAction_GICombiner22,
2539 GICXXCustomAction_GICombiner23,
2540 GICXXCustomAction_GICombiner24,
2541 GICXXCustomAction_GICombiner25,
2542 GICXXCustomAction_GICombiner26,
2543 GICXXCustomAction_GICombiner27,
2544 GICXXCustomAction_GICombiner28,
2545 GICXXCustomAction_GICombiner29,
2546 GICXXCustomAction_GICombiner30,
2547 GICXXCustomAction_GICombiner31,
2548 GICXXCustomAction_GICombiner32,
2549 GICXXCustomAction_GICombiner33,
2550 GICXXCustomAction_GICombiner34,
2551 GICXXCustomAction_GICombiner35,
2552 GICXXCustomAction_GICombiner36,
2553 GICXXCustomAction_GICombiner37,
2554 GICXXCustomAction_GICombiner38,
2555 GICXXCustomAction_GICombiner39,
2556 GICXXCustomAction_GICombiner40,
2557 GICXXCustomAction_GICombiner41,
2558 GICXXCustomAction_GICombiner42,
2559 GICXXCustomAction_GICombiner43,
2560 GICXXCustomAction_GICombiner44,
2561 GICXXCustomAction_GICombiner45,
2562 GICXXCustomAction_GICombiner46,
2563 GICXXCustomAction_GICombiner47,
2564 GICXXCustomAction_GICombiner48,
2565 GICXXCustomAction_GICombiner49,
2566 GICXXCustomAction_GICombiner50,
2567 GICXXCustomAction_GICombiner51,
2568 GICXXCustomAction_GICombiner52,
2569 GICXXCustomAction_GICombiner53,
2570 GICXXCustomAction_GICombiner54,
2571 GICXXCustomAction_GICombiner55,
2572 GICXXCustomAction_GICombiner56,
2573 GICXXCustomAction_GICombiner57,
2574 GICXXCustomAction_GICombiner58,
2575 GICXXCustomAction_GICombiner59,
2576 GICXXCustomAction_GICombiner60,
2577 GICXXCustomAction_GICombiner61,
2578 GICXXCustomAction_GICombiner62,
2579 GICXXCustomAction_GICombiner63,
2580 GICXXCustomAction_GICombiner64,
2581 GICXXCustomAction_GICombiner65,
2582 GICXXCustomAction_GICombiner66,
2583 GICXXCustomAction_GICombiner67,
2584 GICXXCustomAction_GICombiner68,
2585 GICXXCustomAction_GICombiner69,
2586 GICXXCustomAction_GICombiner70,
2587 GICXXCustomAction_GICombiner71,
2588 GICXXCustomAction_GICombiner72,
2589 GICXXCustomAction_GICombiner73,
2590 GICXXCustomAction_GICombiner74,
2591 GICXXCustomAction_GICombiner75,
2592 GICXXCustomAction_GICombiner76,
2593 GICXXCustomAction_GICombiner77,
2594 GICXXCustomAction_GICombiner78,
2595 GICXXCustomAction_GICombiner79,
2596 GICXXCustomAction_GICombiner80,
2597 GICXXCustomAction_GICombiner81,
2598 GICXXCustomAction_GICombiner82,
2599 GICXXCustomAction_GICombiner83,
2600 GICXXCustomAction_GICombiner84,
2601 GICXXCustomAction_GICombiner85,
2602 GICXXCustomAction_GICombiner86,
2603 GICXXCustomAction_GICombiner87,
2604 GICXXCustomAction_GICombiner88,
2605 GICXXCustomAction_GICombiner89,
2606 GICXXCustomAction_GICombiner90,
2607 GICXXCustomAction_GICombiner91,
2608 GICXXCustomAction_GICombiner92,
2609 GICXXCustomAction_GICombiner93,
2610 GICXXCustomAction_GICombiner94,
2611 GICXXCustomAction_GICombiner95,
2612 GICXXCustomAction_GICombiner96,
2613 GICXXCustomAction_GICombiner97,
2614 GICXXCustomAction_GICombiner98,
2615 GICXXCustomAction_GICombiner99,
2616 GICXXCustomAction_GICombiner100,
2617 GICXXCustomAction_GICombiner101,
2618 GICXXCustomAction_GICombiner102,
2619 GICXXCustomAction_GICombiner103,
2620 GICXXCustomAction_GICombiner104,
2621 GICXXCustomAction_GICombiner105,
2622 GICXXCustomAction_GICombiner106,
2623 GICXXCustomAction_GICombiner107,
2624 GICXXCustomAction_GICombiner108,
2625 GICXXCustomAction_GICombiner109,
2626 GICXXCustomAction_GICombiner110,
2627 GICXXCustomAction_GICombiner111,
2628 GICXXCustomAction_GICombiner112,
2629 GICXXCustomAction_GICombiner113,
2630 GICXXCustomAction_GICombiner114,
2631 GICXXCustomAction_GICombiner115,
2632 GICXXCustomAction_GICombiner116,
2633 GICXXCustomAction_GICombiner117,
2634 GICXXCustomAction_GICombiner118,
2635 GICXXCustomAction_GICombiner119,
2636 GICXXCustomAction_GICombiner120,
2637 GICXXCustomAction_GICombiner121,
2638 GICXXCustomAction_GICombiner122,
2639 GICXXCustomAction_GICombiner123,
2640 GICXXCustomAction_GICombiner124,
2641 GICXXCustomAction_GICombiner125,
2642 GICXXCustomAction_GICombiner126,
2643 GICXXCustomAction_GICombiner127,
2644 GICXXCustomAction_GICombiner128,
2645 GICXXCustomAction_GICombiner129,
2646 GICXXCustomAction_GICombiner130,
2647 GICXXCustomAction_GICombiner131,
2648 GICXXCustomAction_GICombiner132,
2649 GICXXCustomAction_GICombiner133,
2650 GICXXCustomAction_GICombiner134,
2651 GICXXCustomAction_GICombiner135,
2652 GICXXCustomAction_GICombiner136,
2653 GICXXCustomAction_GICombiner137,
2654 GICXXCustomAction_GICombiner138,
2655 GICXXCustomAction_GICombiner139,
2656 GICXXCustomAction_GICombiner140,
2657 GICXXCustomAction_GICombiner141,
2658 GICXXCustomAction_GICombiner142,
2659 GICXXCustomAction_GICombiner143,
2660 GICXXCustomAction_GICombiner144,
2661 GICXXCustomAction_GICombiner145,
2662 GICXXCustomAction_GICombiner146,
2663 GICXXCustomAction_GICombiner147,
2664 GICXXCustomAction_GICombiner148,
2665 GICXXCustomAction_GICombiner149,
2666 GICXXCustomAction_GICombiner150,
2667 GICXXCustomAction_GICombiner151,
2668 GICXXCustomAction_GICombiner152,
2669 GICXXCustomAction_GICombiner153,
2670 GICXXCustomAction_GICombiner154,
2671 GICXXCustomAction_GICombiner155,
2672 GICXXCustomAction_GICombiner156,
2673 GICXXCustomAction_GICombiner157,
2674 GICXXCustomAction_GICombiner158,
2675 GICXXCustomAction_GICombiner159,
2676 GICXXCustomAction_GICombiner160,
2677};
2678bool RISCVPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2679 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2680 switch(ApplyID) {
2681 case GICXXCustomAction_GICombiner0:{
2682 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2683 // Match Patterns
2684 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2685 return false;
2686 }
2687 // Apply Patterns
2688 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2689 return true;
2690 }
2691 case GICXXCustomAction_GICombiner1:{
2692 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2693 // Match Patterns
2694 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2695 return false;
2696 }
2697 // Apply Patterns
2698 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2699 return true;
2700 }
2701 case GICXXCustomAction_GICombiner2:{
2702 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2703 // Match Patterns
2704 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2705 return false;
2706 }
2707 // Apply Patterns
2708 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2709 return true;
2710 }
2711 case GICXXCustomAction_GICombiner3:{
2712 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2713 // Match Patterns
2714 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2715 return false;
2716 }
2717 // Apply Patterns
2718 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2719 return true;
2720 }
2721 case GICXXCustomAction_GICombiner4:{
2722 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2723 // Match Patterns
2724 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2725 return false;
2726 }
2727 // Apply Patterns
2728 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2729 return true;
2730 }
2731 case GICXXCustomAction_GICombiner5:{
2732 // Match Patterns
2733 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2734 return false;
2735 }
2736 // Apply Patterns
2737 Helper.applyCombineCopy(*State.MIs[0]);
2738 return true;
2739 }
2740 case GICXXCustomAction_GICombiner6:{
2741 unsigned GIMatchData_matchinfo;
2742 // Match Patterns
2743 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2744 return false;
2745 }
2746 // Apply Patterns
2747 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2748 return true;
2749 }
2750 case GICXXCustomAction_GICombiner7:{
2751 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2752 // Match Patterns
2753 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2754 return false;
2755 }
2756 // Apply Patterns
2757 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2758 return true;
2759 }
2760 case GICXXCustomAction_GICombiner8:{
2761 std::pair<Register, bool> GIMatchData_info;
2762 // Match Patterns
2763 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2764 return false;
2765 }
2766 // Apply Patterns
2767 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2768 return true;
2769 }
2770 case GICXXCustomAction_GICombiner9:{
2771 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2772 // Match Patterns
2773 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2774 return false;
2775 }
2776 // Apply Patterns
2777 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2778 return true;
2779 }
2780 case GICXXCustomAction_GICombiner10:{
2781 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2782 // Match Patterns
2783 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2784 return false;
2785 }
2786 // Apply Patterns
2787 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2788 return true;
2789 }
2790 case GICXXCustomAction_GICombiner11:{
2791 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2792 // Match Patterns
2793 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2794 return false;
2795 }
2796 // Apply Patterns
2797 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2798 return true;
2799 }
2800 case GICXXCustomAction_GICombiner12:{
2801 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2802 // Match Patterns
2803 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2804 GIMatchData_matchinfo);}()) {
2805 return false;
2806 }
2807 // Apply Patterns
2808 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2809 return true;
2810 }
2811 case GICXXCustomAction_GICombiner13:{
2812 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2813 // Match Patterns
2814 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2815 return false;
2816 }
2817 // Apply Patterns
2818 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2819 return true;
2820 }
2821 case GICXXCustomAction_GICombiner14:{
2822 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2823 // Match Patterns
2824 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2825 GIMatchData_matchinfo);}()) {
2826 return false;
2827 }
2828 // Apply Patterns
2829 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2830 return true;
2831 }
2832 case GICXXCustomAction_GICombiner15:{
2833 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2834 // Match Patterns
2835 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2836 return false;
2837 }
2838 // Apply Patterns
2839 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2840 return true;
2841 }
2842 case GICXXCustomAction_GICombiner16:{
2843 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2844 // Match Patterns
2845 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2846 return false;
2847 }
2848 // Apply Patterns
2849 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2850 return true;
2851 }
2852 case GICXXCustomAction_GICombiner17:{
2853 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2854 // Match Patterns
2855 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2856 return false;
2857 }
2858 // Apply Patterns
2859 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2860 return true;
2861 }
2862 case GICXXCustomAction_GICombiner18:{
2863 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2864 // Match Patterns
2865 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2866 return false;
2867 }
2868 // Apply Patterns
2869 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2870 return true;
2871 }
2872 case GICXXCustomAction_GICombiner19:{
2873 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2874 // Match Patterns
2875 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2876 return false;
2877 }
2878 // Apply Patterns
2879 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2880 return true;
2881 }
2882 case GICXXCustomAction_GICombiner20:{
2883 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2884 // Match Patterns
2885 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2886 return false;
2887 }
2888 // Apply Patterns
2889 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2890 return true;
2891 }
2892 case GICXXCustomAction_GICombiner21:{
2893 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2894 // Match Patterns
2895 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2896 return false;
2897 }
2898 // Apply Patterns
2899 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2900 return true;
2901 }
2902 case GICXXCustomAction_GICombiner22:{
2903 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2904 // Match Patterns
2905 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2906 return false;
2907 }
2908 // Apply Patterns
2909 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2910 return true;
2911 }
2912 case GICXXCustomAction_GICombiner23:{
2913 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2914 // Match Patterns
2915 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2916 return false;
2917 }
2918 // Apply Patterns
2919 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2920 return true;
2921 }
2922 case GICXXCustomAction_GICombiner24:{
2923 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2924 // Match Patterns
2925 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2926 return false;
2927 }
2928 // Apply Patterns
2929 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2930 return true;
2931 }
2932 case GICXXCustomAction_GICombiner25:{
2933 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2934 // Match Patterns
2935 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2936 return false;
2937 }
2938 // Apply Patterns
2939 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2940 return true;
2941 }
2942 case GICXXCustomAction_GICombiner26:{
2943 APInt GIMatchData_matchinfo;
2944 // Match Patterns
2945 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2946 return false;
2947 }
2948 // Apply Patterns
2949 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2950 return true;
2951 }
2952 case GICXXCustomAction_GICombiner27:{
2953 SmallVector<Register> GIMatchData_info;
2954 // Match Patterns
2955 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2956 return false;
2957 }
2958 // Apply Patterns
2959 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2960 return true;
2961 }
2962 case GICXXCustomAction_GICombiner28:{
2963 Register GIMatchData_matchinfo;
2964 // Match Patterns
2965 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2966 return false;
2967 }
2968 // Apply Patterns
2969 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2970 return true;
2971 }
2972 case GICXXCustomAction_GICombiner29:{
2973 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2974 // Match Patterns
2975 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2976 return false;
2977 }
2978 // Apply Patterns
2979 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2980 return true;
2981 }
2982 case GICXXCustomAction_GICombiner30:{
2983 PreferredTuple GIMatchData_matchinfo;
2984 // Match Patterns
2985 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2986 return false;
2987 }
2988 // Apply Patterns
2989 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2990 return true;
2991 }
2992 case GICXXCustomAction_GICombiner31:{
2993 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2994 // Match Patterns
2995 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2996 return false;
2997 }
2998 // Apply Patterns
2999 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3000 return true;
3001 }
3002 case GICXXCustomAction_GICombiner32:{
3003 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3004 // Match Patterns
3005 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3006 return false;
3007 }
3008 // Apply Patterns
3009 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3010 return true;
3011 }
3012 case GICXXCustomAction_GICombiner33:{
3013 // Match Patterns
3014 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3015 return false;
3016 }
3017 // Apply Patterns
3018 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
3019 return true;
3020 }
3021 case GICXXCustomAction_GICombiner34:{
3022 // Match Patterns
3023 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3024 return false;
3025 }
3026 // Apply Patterns
3027 Helper.replaceInstWithConstant(*State.MIs[0], 0);
3028 return true;
3029 }
3030 case GICXXCustomAction_GICombiner35:{
3031 // Match Patterns
3032 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3033 return false;
3034 }
3035 // Apply Patterns
3036 Helper.replaceInstWithConstant(*State.MIs[0], -1);
3037 return true;
3038 }
3039 case GICXXCustomAction_GICombiner36:{
3040 // Match Patterns
3041 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
3042 return false;
3043 }
3044 // Apply Patterns
3045 Helper.replaceInstWithConstant(*State.MIs[0], 0);
3046 return true;
3047 }
3048 case GICXXCustomAction_GICombiner37:{
3049 // Match Patterns
3050 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
3051 return false;
3052 }
3053 // Apply Patterns
3054 Helper.replaceInstWithUndef(*State.MIs[0]);
3055 return true;
3056 }
3057 case GICXXCustomAction_GICombiner38:{
3058 // Apply Patterns
3059 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
3060 return true;
3061 }
3062 case GICXXCustomAction_GICombiner39:{
3063 // Match Patterns
3064 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3065 return false;
3066 }
3067 // Apply Patterns
3068 Helper.replaceInstWithUndef(*State.MIs[0]);
3069 return true;
3070 }
3071 case GICXXCustomAction_GICombiner40:{
3072 // Match Patterns
3073 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
3074 return false;
3075 }
3076 // Apply Patterns
3077 Helper.replaceInstWithUndef(*State.MIs[0]);
3078 return true;
3079 }
3080 case GICXXCustomAction_GICombiner41:{
3081 // Match Patterns
3082 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
3083 return false;
3084 }
3085 // Apply Patterns
3086 Helper.replaceInstWithUndef(*State.MIs[0]);
3087 return true;
3088 }
3089 case GICXXCustomAction_GICombiner42:{
3090 // Match Patterns
3091 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
3092 return false;
3093 }
3094 // Apply Patterns
3095 Helper.eraseInst(*State.MIs[0]);
3096 return true;
3097 }
3098 case GICXXCustomAction_GICombiner43:{
3099 // Match Patterns
3100 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
3101 return false;
3102 }
3103 // Apply Patterns
3104 Helper.replaceInstWithUndef(*State.MIs[0]);
3105 return true;
3106 }
3107 case GICXXCustomAction_GICombiner44:{
3108 // Match Patterns
3109 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
3110 return false;
3111 }
3112 // Apply Patterns
3113 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
3114 return true;
3115 }
3116 case GICXXCustomAction_GICombiner45:{
3117 Register GIMatchData_info;
3118 // Match Patterns
3119 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
3120 return false;
3121 }
3122 // Apply Patterns
3123 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
3124 return true;
3125 }
3126 case GICXXCustomAction_GICombiner46:{
3127 Register GIMatchData_info;
3128 // Match Patterns
3129 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
3130 return false;
3131 }
3132 // Apply Patterns
3133 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
3134 return true;
3135 }
3136 case GICXXCustomAction_GICombiner47:{
3137 Register GIMatchData_matchinfo;
3138 // Match Patterns
3139 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3140 return false;
3141 }
3142 // Apply Patterns
3143 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3144 return true;
3145 }
3146 case GICXXCustomAction_GICombiner48:{
3147 Register GIMatchData_matchinfo;
3148 // Match Patterns
3149 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3150 return false;
3151 }
3152 // Apply Patterns
3153 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3154 return true;
3155 }
3156 case GICXXCustomAction_GICombiner49:{
3157 Register GIMatchData_matchinfo;
3158 // Match Patterns
3159 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3160 return false;
3161 }
3162 // Apply Patterns
3163 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3164 return true;
3165 }
3166 case GICXXCustomAction_GICombiner50:{
3167 Register GIMatchData_matchinfo;
3168 // Match Patterns
3169 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3170 return false;
3171 }
3172 // Apply Patterns
3173 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3174 return true;
3175 }
3176 case GICXXCustomAction_GICombiner51:{
3177 // Match Patterns
3178 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
3179 return false;
3180 }
3181 // Apply Patterns
3182 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3183 return true;
3184 }
3185 case GICXXCustomAction_GICombiner52:{
3186 MachineInstr* GIMatchData_matchinfo;
3187 // Match Patterns
3188 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3189 return false;
3190 }
3191 // Apply Patterns
3192 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3193 return true;
3194 }
3195 case GICXXCustomAction_GICombiner53:{
3196 std::tuple<Register, Register> GIMatchData_info;
3197 // Match Patterns
3198 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
3199 return false;
3200 }
3201 // Apply Patterns
3202 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
3203 return true;
3204 }
3205 case GICXXCustomAction_GICombiner54:{
3206 InstructionStepsMatchInfo GIMatchData_info;
3207 // Match Patterns
3208 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3209 return false;
3210 }
3211 // Apply Patterns
3212 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3213 return true;
3214 }
3215 case GICXXCustomAction_GICombiner55:{
3216 std::optional<int64_t> GIMatchData_matchinfo;
3217 // Match Patterns
3218 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3219 return false;
3220 }
3221 // Apply Patterns
3222 if (GIMatchData_matchinfo) {
3223 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3224 } else {
3225 Helper.replaceInstWithUndef(*State.MIs[0]);
3226 }
3227 return true;
3228 }
3229 case GICXXCustomAction_GICombiner56:{
3230 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3231 // Match Patterns
3232 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3233 return false;
3234 }
3235 // Apply Patterns
3236 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3237 return true;
3238 }
3239 case GICXXCustomAction_GICombiner57:{
3240 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3241 // Match Patterns
3242 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3243 return false;
3244 }
3245 // Apply Patterns
3246 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3247 return true;
3248 }
3249 case GICXXCustomAction_GICombiner58:{
3250 PtrAddChain GIMatchData_matchinfo;
3251 // Match Patterns
3252 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3253 return false;
3254 }
3255 // Apply Patterns
3256 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3257 return true;
3258 }
3259 case GICXXCustomAction_GICombiner59:{
3260 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3261 // Match Patterns
3262 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3263 return false;
3264 }
3265 // Apply Patterns
3266 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3267 return true;
3268 }
3269 case GICXXCustomAction_GICombiner60:{
3270 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3271 // Match Patterns
3272 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3273 return false;
3274 }
3275 // Apply Patterns
3276 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3277 return true;
3278 }
3279 case GICXXCustomAction_GICombiner61:{
3280 int64_t GIMatchData_matchinfo;
3281 // Match Patterns
3282 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3283 return false;
3284 }
3285 // Apply Patterns
3286 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3287 return true;
3288 }
3289 case GICXXCustomAction_GICombiner62:{
3290 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3291 // Match Patterns
3292 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
3293 return false;
3294 }
3295 // Apply Patterns
3296 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3297 return true;
3298 }
3299 case GICXXCustomAction_GICombiner63:{
3300 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3301 // Match Patterns
3302 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3303 return false;
3304 }
3305 // Apply Patterns
3306 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3307 return true;
3308 }
3309 case GICXXCustomAction_GICombiner64:{
3310 std::tuple<Register, int64_t> GIMatchData_info;
3311 // Match Patterns
3312 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3313 return false;
3314 }
3315 // Apply Patterns
3316 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3317 return true;
3318 }
3319 case GICXXCustomAction_GICombiner65:{
3320 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3321 // Match Patterns
3322 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3323 return false;
3324 }
3325 // Apply Patterns
3326 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3327 return true;
3328 }
3329 case GICXXCustomAction_GICombiner66:{
3330 RegisterImmPair GIMatchData_matchinfo;
3331 // Match Patterns
3332 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3333 return false;
3334 }
3335 // Apply Patterns
3336 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3337 return true;
3338 }
3339 case GICXXCustomAction_GICombiner67:{
3340 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3341 // Match Patterns
3342 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3343 return false;
3344 }
3345 // Apply Patterns
3346 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3347 return true;
3348 }
3349 case GICXXCustomAction_GICombiner68:{
3350 unsigned GIMatchData_matchinfo;
3351 // Match Patterns
3352 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3353 return false;
3354 }
3355 // Apply Patterns
3356 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3357 return true;
3358 }
3359 case GICXXCustomAction_GICombiner69:{
3360 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3361 // Match Patterns
3362 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3363 return false;
3364 }
3365 // Apply Patterns
3366 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3367 return true;
3368 }
3369 case GICXXCustomAction_GICombiner70:{
3370 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3371 // Match Patterns
3372 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3373 return false;
3374 }
3375 // Apply Patterns
3376 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3377 return true;
3378 }
3379 case GICXXCustomAction_GICombiner71:{
3380 // Match Patterns
3381 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3382 return false;
3383 }
3384 // Apply Patterns
3385 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3386 return true;
3387 }
3388 case GICXXCustomAction_GICombiner72:{
3389 // Match Patterns
3390 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
3391 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
3392 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
3393 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
3394 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
3395 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
3396 return false;
3397 }
3398 // Apply Patterns
3399 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
3400 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
3401 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
3402 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
3403 State.MIs[0]->eraseFromParent();
3404 return true;
3405 }
3406 case GICXXCustomAction_GICombiner73:{
3407 Register GIMatchData_matchinfo;
3408 // Match Patterns
3409 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3410 return false;
3411 }
3412 // Apply Patterns
3413 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3414 return true;
3415 }
3416 case GICXXCustomAction_GICombiner74:{
3417 Register GIMatchData_matchinfo;
3418 // Match Patterns
3419 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3420 return false;
3421 }
3422 // Apply Patterns
3423 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3424 return true;
3425 }
3426 case GICXXCustomAction_GICombiner75:{
3427 // Match Patterns
3428 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3429 return false;
3430 }
3431 // Apply Patterns
3432 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3433 return true;
3434 }
3435 case GICXXCustomAction_GICombiner76:{
3436 Register GIMatchData_matchinfo;
3437 // Match Patterns
3438 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3439 return false;
3440 }
3441 // Apply Patterns
3442 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3443 return true;
3444 }
3445 case GICXXCustomAction_GICombiner77:{
3446 // Match Patterns
3447 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3448 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3449 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3450 return false;
3451 }
3452 // Apply Patterns
3453 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3454 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3455 State.MIs[0]->eraseFromParent();
3456 return true;
3457 }
3458 case GICXXCustomAction_GICombiner78:{
3459 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3460 // Match Patterns
3461 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3462 return false;
3463 }
3464 // Apply Patterns
3465 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3466 return true;
3467 }
3468 case GICXXCustomAction_GICombiner79:{
3469 SmallVector<Register> GIMatchData_info;
3470 // Match Patterns
3471 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3472 return false;
3473 }
3474 // Apply Patterns
3475 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3476 return true;
3477 }
3478 case GICXXCustomAction_GICombiner80:{
3479 MachineInstr * GIMatchData_matchinfo;
3480 // Match Patterns
3481 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3482 return false;
3483 }
3484 // Apply Patterns
3485 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3486 return true;
3487 }
3488 case GICXXCustomAction_GICombiner81:{
3489 // Apply Patterns
3490 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3491 return true;
3492 }
3493 case GICXXCustomAction_GICombiner82:{
3494 // Apply Patterns
3495 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3496 return true;
3497 }
3498 case GICXXCustomAction_GICombiner83:{
3499 APInt GIMatchData_info;
3500 // Match Patterns
3501 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3502 return false;
3503 }
3504 // Apply Patterns
3505 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3506 return true;
3507 }
3508 case GICXXCustomAction_GICombiner84:{
3509 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3510 // Match Patterns
3511 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3512 return false;
3513 }
3514 // Apply Patterns
3515 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3516 return true;
3517 }
3518 case GICXXCustomAction_GICombiner85:{
3519 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3520 // Match Patterns
3521 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3522 return false;
3523 }
3524 // Apply Patterns
3525 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3526 return true;
3527 }
3528 case GICXXCustomAction_GICombiner86:{
3529 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3530 // Match Patterns
3531 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3532 return false;
3533 }
3534 // Apply Patterns
3535 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3536 return true;
3537 }
3538 case GICXXCustomAction_GICombiner87:{
3539 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3540 // Match Patterns
3541 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3542 return false;
3543 }
3544 // Apply Patterns
3545 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3546 return true;
3547 }
3548 case GICXXCustomAction_GICombiner88:{
3549 unsigned GIMatchData_info;
3550 // Match Patterns
3551 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3552 return false;
3553 }
3554 // Apply Patterns
3555 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3556 return true;
3557 }
3558 case GICXXCustomAction_GICombiner89:{
3559 // Match Patterns
3560 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3561 return false;
3562 }
3563 // Apply Patterns
3564 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3565 return true;
3566 }
3567 case GICXXCustomAction_GICombiner90:{
3568 std::pair<Register, Register> GIMatchData_matchinfo;
3569 // Match Patterns
3570 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3571 return false;
3572 }
3573 // Apply Patterns
3574 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3575 return true;
3576 }
3577 case GICXXCustomAction_GICombiner91:{
3578 // Match Patterns
3579 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3580 return false;
3581 }
3582 // Apply Patterns
3583 Helper.applyPtrAddZero(*State.MIs[0]);
3584 return true;
3585 }
3586 case GICXXCustomAction_GICombiner92:{
3587 RegisterImmPair GIMatchData_matchinfo;
3588 // Match Patterns
3589 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3590 return false;
3591 }
3592 // Apply Patterns
3593 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3594 return true;
3595 }
3596 case GICXXCustomAction_GICombiner93:{
3597 ShiftOfShiftedLogic GIMatchData_matchinfo;
3598 // Match Patterns
3599 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3600 return false;
3601 }
3602 // Apply Patterns
3603 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3604 return true;
3605 }
3606 case GICXXCustomAction_GICombiner94:{
3607 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3608 // Match Patterns
3609 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3610 return false;
3611 }
3612 // Apply Patterns
3613 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3614 return true;
3615 }
3616 case GICXXCustomAction_GICombiner95:{
3617 MachineInstr * GIMatchData_matchinfo;
3618 // Match Patterns
3619 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3620 return false;
3621 }
3622 // Apply Patterns
3623 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3624 return true;
3625 }
3626 case GICXXCustomAction_GICombiner96:{
3627 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3628 // Match Patterns
3629 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3630 return false;
3631 }
3632 // Apply Patterns
3633 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3634 return true;
3635 }
3636 case GICXXCustomAction_GICombiner97:{
3637 // Match Patterns
3638 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3639 return false;
3640 }
3641 // Apply Patterns
3642 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3643 return true;
3644 }
3645 case GICXXCustomAction_GICombiner98:{
3646 // Match Patterns
3647 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3648 return false;
3649 }
3650 // Apply Patterns
3651 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3652 return true;
3653 }
3654 case GICXXCustomAction_GICombiner99:{
3655 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3656 // Match Patterns
3657 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3658 return false;
3659 }
3660 // Apply Patterns
3661 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3662 return true;
3663 }
3664 case GICXXCustomAction_GICombiner100:{
3665 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3666 // Match Patterns
3667 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3668 return false;
3669 }
3670 // Apply Patterns
3671 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3672 return true;
3673 }
3674 case GICXXCustomAction_GICombiner101:{
3675 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3676 // Match Patterns
3677 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3678 return false;
3679 }
3680 // Apply Patterns
3681 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3682 return true;
3683 }
3684 case GICXXCustomAction_GICombiner102:{
3685 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3686 // Match Patterns
3687 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3688 return false;
3689 }
3690 // Apply Patterns
3691 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3692 return true;
3693 }
3694 case GICXXCustomAction_GICombiner103:{
3695 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3696 // Match Patterns
3697 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3698 return false;
3699 }
3700 // Apply Patterns
3701 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3702 return true;
3703 }
3704 case GICXXCustomAction_GICombiner104:{
3705 APInt GIMatchData_matchinfo;
3706 // Match Patterns
3707 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3708 return false;
3709 }
3710 // Apply Patterns
3711 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3712 return true;
3713 }
3714 case GICXXCustomAction_GICombiner105:{
3715 ConstantFP* GIMatchData_matchinfo;
3716 // Match Patterns
3717 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3718 return false;
3719 }
3720 // Apply Patterns
3721 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3722 return true;
3723 }
3724 case GICXXCustomAction_GICombiner106:{
3725 ConstantFP* GIMatchData_matchinfo;
3726 // Match Patterns
3727 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3728 return false;
3729 }
3730 // Apply Patterns
3731 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3732 return true;
3733 }
3734 case GICXXCustomAction_GICombiner107:{
3735 APInt GIMatchData_matchinfo;
3736 // Match Patterns
3737 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3738 return false;
3739 }
3740 // Apply Patterns
3741 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3742 return true;
3743 }
3744 case GICXXCustomAction_GICombiner108:{
3745 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3746 // Match Patterns
3747 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3748 return false;
3749 }
3750 // Apply Patterns
3751 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3752 return true;
3753 }
3754 case GICXXCustomAction_GICombiner109:{
3755 // Match Patterns
3756 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3757 return false;
3758 }
3759 // Apply Patterns
3760 Helper.applyUMulHToLShr(*State.MIs[0]);
3761 return true;
3762 }
3763 case GICXXCustomAction_GICombiner110:{
3764 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3765 // Match Patterns
3766 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3767 return false;
3768 }
3769 // Apply Patterns
3770 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3771 return true;
3772 }
3773 case GICXXCustomAction_GICombiner111:{
3774 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3775 // Match Patterns
3776 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3777 return false;
3778 }
3779 // Apply Patterns
3780 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3781 return true;
3782 }
3783 case GICXXCustomAction_GICombiner112:{
3784 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3785 // Match Patterns
3786 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3787 GIMatchData_info);}()) {
3788 return false;
3789 }
3790 // Apply Patterns
3791 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3792 return true;
3793 }
3794 case GICXXCustomAction_GICombiner113:{
3795 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3796 // Match Patterns
3797 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3798 GIMatchData_info);}()) {
3799 return false;
3800 }
3801 // Apply Patterns
3802 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3803 return true;
3804 }
3805 case GICXXCustomAction_GICombiner114:{
3806 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3807 // Match Patterns
3808 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3809 GIMatchData_info);}()) {
3810 return false;
3811 }
3812 // Apply Patterns
3813 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3814 return true;
3815 }
3816 case GICXXCustomAction_GICombiner115:{
3817 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3818 // Match Patterns
3819 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3820 *State.MIs[0], GIMatchData_info);}()) {
3821 return false;
3822 }
3823 // Apply Patterns
3824 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3825 return true;
3826 }
3827 case GICXXCustomAction_GICombiner116:{
3828 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3829 // Match Patterns
3830 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3831 GIMatchData_info);}()) {
3832 return false;
3833 }
3834 // Apply Patterns
3835 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3836 return true;
3837 }
3838 case GICXXCustomAction_GICombiner117:{
3839 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3840 // Match Patterns
3841 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3842 GIMatchData_info);}()) {
3843 return false;
3844 }
3845 // Apply Patterns
3846 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3847 return true;
3848 }
3849 case GICXXCustomAction_GICombiner118:{
3850 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3851 // Match Patterns
3852 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3853 GIMatchData_info);}()) {
3854 return false;
3855 }
3856 // Apply Patterns
3857 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3858 return true;
3859 }
3860 case GICXXCustomAction_GICombiner119:{
3861 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3862 // Match Patterns
3863 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3864 *State.MIs[0], GIMatchData_info);}()) {
3865 return false;
3866 }
3867 // Apply Patterns
3868 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3869 return true;
3870 }
3871 case GICXXCustomAction_GICombiner120:{
3872 unsigned GIMatchData_select_op_no;
3873 // Match Patterns
3874 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3875 return false;
3876 }
3877 // Apply Patterns
3878 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3879 return true;
3880 }
3881 case GICXXCustomAction_GICombiner121:{
3882 // Match Patterns
3883 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
3884 /*OrNegative=*/true);}()) {
3885 return false;
3886 }
3887 // Apply Patterns
3888 Helper.applySimplifySRemByPow2(*State.MIs[0]);
3889 return true;
3890 }
3891 case GICXXCustomAction_GICombiner122:{
3892 // Match Patterns
3893 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3894 return false;
3895 }
3896 // Apply Patterns
3897 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3898 return true;
3899 }
3900 case GICXXCustomAction_GICombiner123:{
3901 // Match Patterns
3902 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3903 return false;
3904 }
3905 // Apply Patterns
3906 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3907 return true;
3908 }
3909 case GICXXCustomAction_GICombiner124:{
3910 // Match Patterns
3911 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3912 return false;
3913 }
3914 // Apply Patterns
3915 Helper.applyUDivByPow2(*State.MIs[0]);
3916 return true;
3917 }
3918 case GICXXCustomAction_GICombiner125:{
3919 // Match Patterns
3920 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3921 return false;
3922 }
3923 // Apply Patterns
3924 Helper.applySDivByPow2(*State.MIs[0]);
3925 return true;
3926 }
3927 case GICXXCustomAction_GICombiner126:{
3928 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3929 // Match Patterns
3930 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3931 return false;
3932 }
3933 // Apply Patterns
3934 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3935 return true;
3936 }
3937 case GICXXCustomAction_GICombiner127:{
3938 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3939 // Match Patterns
3940 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3941 return false;
3942 }
3943 // Apply Patterns
3944 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3945 return true;
3946 }
3947 case GICXXCustomAction_GICombiner128:{
3948 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3949 // Match Patterns
3950 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3951 return false;
3952 }
3953 // Apply Patterns
3954 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3955 return true;
3956 }
3957 case GICXXCustomAction_GICombiner129:{
3958 Register GIMatchData_matchinfo;
3959 // Match Patterns
3960 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3961 return false;
3962 }
3963 // Apply Patterns
3964 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3965 return true;
3966 }
3967 case GICXXCustomAction_GICombiner130:{
3968 // Match Patterns
3969 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3970 return false;
3971 }
3972 // Apply Patterns
3973 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3974 return true;
3975 }
3976 case GICXXCustomAction_GICombiner131:{
3977 // Match Patterns
3978 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3979 return false;
3980 }
3981 // Apply Patterns
3982 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3983 return true;
3984 }
3985 case GICXXCustomAction_GICombiner132:{
3986 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3987 // Match Patterns
3988 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3989 return false;
3990 }
3991 // Apply Patterns
3992 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3993 return true;
3994 }
3995 case GICXXCustomAction_GICombiner133:{
3996 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3997 // Match Patterns
3998 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3999 return false;
4000 }
4001 // Apply Patterns
4002 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4003 return true;
4004 }
4005 case GICXXCustomAction_GICombiner134:{
4006 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4007 // Match Patterns
4008 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
4009 return false;
4010 }
4011 // Apply Patterns
4012 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4013 return true;
4014 }
4015 case GICXXCustomAction_GICombiner135:{
4016 SmallVector<Register> GIMatchData_matchinfo;
4017 // Match Patterns
4018 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
4019 return false;
4020 }
4021 // Apply Patterns
4022 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
4023 return true;
4024 }
4025 case GICXXCustomAction_GICombiner136:{
4026 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4027 // Match Patterns
4028 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4029 return false;
4030 }
4031 // Apply Patterns
4032 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4033 return true;
4034 }
4035 case GICXXCustomAction_GICombiner137:{
4036 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4037 // Match Patterns
4038 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4039 return false;
4040 }
4041 // Apply Patterns
4042 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4043 return true;
4044 }
4045 case GICXXCustomAction_GICombiner138:{
4046 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4047 // Match Patterns
4048 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4049 return false;
4050 }
4051 // Apply Patterns
4052 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4053 return true;
4054 }
4055 case GICXXCustomAction_GICombiner139:{
4056 SmallVector<Register> GIMatchData_matchinfo;
4057 // Match Patterns
4058 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
4059 return false;
4060 }
4061 // Apply Patterns
4062 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
4063 return true;
4064 }
4065 case GICXXCustomAction_GICombiner140:{
4066 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4067 // Match Patterns
4068 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4069 return false;
4070 }
4071 // Apply Patterns
4072 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4073 return true;
4074 }
4075 case GICXXCustomAction_GICombiner141:{
4076 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4077 // Match Patterns
4078 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
4079 return false;
4080 }
4081 // Apply Patterns
4082 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4083 return true;
4084 }
4085 case GICXXCustomAction_GICombiner142:{
4086 Register GIMatchData_matchinfo;
4087 // Match Patterns
4088 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
4089 return false;
4090 }
4091 // Apply Patterns
4092 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
4093 return true;
4094 }
4095 case GICXXCustomAction_GICombiner143:{
4096 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4097 // Match Patterns
4098 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4099 return false;
4100 }
4101 // Apply Patterns
4102 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4103 return true;
4104 }
4105 case GICXXCustomAction_GICombiner144:{
4106 SmallVector<Register> GIMatchData_info;
4107 // Match Patterns
4108 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
4109 return false;
4110 }
4111 // Apply Patterns
4112 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4113 return true;
4114 }
4115 case GICXXCustomAction_GICombiner145:{
4116 Register GIMatchData_src;
4117 // Match Patterns
4118 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4119 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4120 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4121 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4122 return false;
4123
4124 // Check counts match.
4125 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4126 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4127 if (NumMergeSrcs != NumUnmergeDefs)
4128 return false;
4129
4130 // Verify all merge sources match unmerge defs in order.
4131 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4132 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4133 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4134
4135 if (MergeSrc != UnmergeDef)
4136 return false;
4137
4138 if (!MRI.hasOneNonDBGUse(MergeSrc))
4139 return false;
4140 }
4141
4142 // Check size compatibility.
4143 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4144 LLT SrcTy = MRI.getType(GIMatchData_src);
4145 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4146 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4147 return false;
4148
4149 // Check bitcast legality.
4150 if (SrcTy != DstTy) {
4151 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4152 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4153 if (!Helper.isLegalOrBeforeLegalizer(Query))
4154 return false;
4155 }
4156
4157 return true;}()) {
4158 return false;
4159 }
4160 // Apply Patterns
4161 LLT SrcTy = MRI.getType(GIMatchData_src);
4162 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4163
4164 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4165
4166 if (SrcTy == DstTy) {
4167 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4168 } else {
4169 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4170 }
4171
4172 State.MIs[0]->eraseFromParent();
4173 return true;
4174 }
4175 case GICXXCustomAction_GICombiner146:{
4176 SmallVector<APInt, 8> GIMatchData_info;
4177 // Match Patterns
4178 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4179 return false;
4180 }
4181 // Apply Patterns
4182 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4183 return true;
4184 }
4185 case GICXXCustomAction_GICombiner147:{
4186 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4187 // Match Patterns
4188 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4189 return false;
4190 }
4191 // Apply Patterns
4192 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4193 return true;
4194 }
4195 case GICXXCustomAction_GICombiner148:{
4196 // Match Patterns
4197 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4198 return false;
4199 }
4200 // Apply Patterns
4201 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4202 return true;
4203 }
4204 case GICXXCustomAction_GICombiner149:{
4205 // Match Patterns
4206 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4207 return false;
4208 }
4209 // Apply Patterns
4210 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4211 return true;
4212 }
4213 case GICXXCustomAction_GICombiner150:{
4214 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4215 // Match Patterns
4216 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
4217 return false;
4218 }
4219 // Apply Patterns
4220 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4221 return true;
4222 }
4223 case GICXXCustomAction_GICombiner151:{
4224 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4225 // Match Patterns
4226 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
4227 return false;
4228 }
4229 // Apply Patterns
4230 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4231 return true;
4232 }
4233 case GICXXCustomAction_GICombiner152:{
4234 Register GIMatchData_unmergeSrc;
4235 // Match Patterns
4236 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4237 return false;
4238 }
4239 // Apply Patterns
4240 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4241 return true;
4242 }
4243 case GICXXCustomAction_GICombiner153:{
4244 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4245 // Match Patterns
4246 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4247 return false;
4248 }
4249 // Apply Patterns
4250 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4251 return true;
4252 }
4253 case GICXXCustomAction_GICombiner154:{
4254 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4255 // Match Patterns
4256 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4257 return false;
4258 }
4259 // Apply Patterns
4260 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4261 return true;
4262 }
4263 case GICXXCustomAction_GICombiner155:{
4264 Register GIMatchData_matchinfo;
4265 // Match Patterns
4266 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4267 return false;
4268 }
4269 // Apply Patterns
4270 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4271 return true;
4272 }
4273 case GICXXCustomAction_GICombiner156:{
4274 Register GIMatchData_matchinfo;
4275 // Match Patterns
4276 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4277 return false;
4278 }
4279 // Apply Patterns
4280 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4281 return true;
4282 }
4283 case GICXXCustomAction_GICombiner157:{
4284 LshrOfTruncOfLshr GIMatchData_matchinfo;
4285 // Match Patterns
4286 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4287 return false;
4288 }
4289 // Apply Patterns
4290 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4291 return true;
4292 }
4293 case GICXXCustomAction_GICombiner158:{
4294 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4295 // Match Patterns
4296 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4297 return false;
4298 }
4299 // Apply Patterns
4300 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4301 return true;
4302 }
4303 case GICXXCustomAction_GICombiner159:{
4304 // Match Patterns
4305 if(![&](){return Helper.matchCountZeroToZeroPoison(*State.MIs[0]);}()) {
4306 return false;
4307 }
4308 // Apply Patterns
4309 Helper.applyCountZeroToZeroPoison(*State.MIs[0]);
4310 return true;
4311 }
4312 case GICXXCustomAction_GICombiner160:{
4313 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4314 // Match Patterns
4315 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4316 return false;
4317 }
4318 // Apply Patterns
4319 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4320 return true;
4321 }
4322 }
4323 llvm_unreachable("Unknown Apply Action");
4324}
4325#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4326#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4327#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4328#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)
4329#else
4330#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4331#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4332#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)
4333#endif
4334const uint8_t *RISCVPreLegalizerCombinerImpl::getMatchTable() const {
4335 constexpr static uint8_t MatchTable0[] = {
4336 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(285), /*)*//*default:*//*Label 113*/ GIMT_Encode4(10218),
4337 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1070), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4338 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1082),
4339 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1815),
4340 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2796),
4341 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3002),
4342 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3104),
4343 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3217),
4344 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3313), GIMT_Encode4(0), GIMT_Encode4(0),
4345 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3420),
4346 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3847),
4347 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(4662), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4348 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(4873), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4349 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(4885), GIMT_Encode4(0),
4350 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(4952),
4351 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(5029),
4352 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(5094),
4353 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(5106),
4354 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(5118),
4355 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(5161),
4356 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(5194),
4357 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(5269), GIMT_Encode4(0), GIMT_Encode4(0),
4358 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(5333),
4359 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(5355), GIMT_Encode4(0), GIMT_Encode4(0),
4360 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(5377), GIMT_Encode4(0), GIMT_Encode4(0),
4361 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(5399),
4362 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(5411),
4363 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(5423), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4364 /* 354 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(5435), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4365 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(5447),
4366 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(5575), GIMT_Encode4(0), GIMT_Encode4(0),
4367 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(5987), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4368 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(6020),
4369 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(6095),
4370 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(6305),
4371 /* 550 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(6435),
4372 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(6633),
4373 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(6980),
4374 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(7309),
4375 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(7352),
4376 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(7395),
4377 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(7419),
4378 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(7443),
4379 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(7488), GIMT_Encode4(0), GIMT_Encode4(0),
4380 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(7500),
4381 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(7680),
4382 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(7703),
4383 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(7715),
4384 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(7727),
4385 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(7739),
4386 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(7762),
4387 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(7774),
4388 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(7786),
4389 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(7798),
4390 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(7832),
4391 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(7866),
4392 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(7889),
4393 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(7901),
4394 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(7913), GIMT_Encode4(0), GIMT_Encode4(0),
4395 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(7925),
4396 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(7948),
4397 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(7971),
4398 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(7983),
4399 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(7995),
4400 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(8007), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4401 /* 702 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(8019),
4402 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(8160),
4403 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(8249),
4404 /* 714 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(8337),
4405 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(8360),
4406 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(8383),
4407 /* 726 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(8428), GIMT_Encode4(0), GIMT_Encode4(0),
4408 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(8451), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4409 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(8473), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4410 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(8495),
4411 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(8546),
4412 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(8568),
4413 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(8611),
4414 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(8633),
4415 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(8655),
4416 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(8682), GIMT_Encode4(0), GIMT_Encode4(0),
4417 /* 810 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(8709),
4418 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 81*/ GIMT_Encode4(8788), GIMT_Encode4(0),
4419 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(8800),
4420 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(8830),
4421 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(8875),
4422 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(8920),
4423 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(8932),
4424 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(8944),
4425 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(8989),
4426 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 89*/ GIMT_Encode4(9034),
4427 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 90*/ GIMT_Encode4(9046), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4428 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 91*/ GIMT_Encode4(9058), GIMT_Encode4(0),
4429 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 92*/ GIMT_Encode4(9148),
4430 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 93*/ GIMT_Encode4(9182),
4431 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 94*/ GIMT_Encode4(9216),
4432 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 95*/ GIMT_Encode4(9250),
4433 /* 914 */ /*TargetOpcode::G_ABS*//*Label 96*/ GIMT_Encode4(9284), GIMT_Encode4(0), GIMT_Encode4(0),
4434 /* 926 */ /*TargetOpcode::G_BR*//*Label 97*/ GIMT_Encode4(9307), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4435 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 98*/ GIMT_Encode4(9319),
4436 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(9449),
4437 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 100*/ GIMT_Encode4(9826), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4438 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 101*/ GIMT_Encode4(9892),
4439 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 102*/ GIMT_Encode4(9915),
4440 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 103*/ GIMT_Encode4(9927),
4441 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 104*/ GIMT_Encode4(9961), GIMT_Encode4(0),
4442 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 105*/ GIMT_Encode4(9984),
4443 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 106*/ GIMT_Encode4(9996),
4444 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 107*/ GIMT_Encode4(10008), GIMT_Encode4(0),
4445 /* 1006 */ /*TargetOpcode::G_FCEIL*//*Label 108*/ GIMT_Encode4(10108), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4446 /* 1054 */ /*TargetOpcode::G_FSQRT*//*Label 109*/ GIMT_Encode4(10130),
4447 /* 1058 */ /*TargetOpcode::G_FFLOOR*//*Label 110*/ GIMT_Encode4(10152),
4448 /* 1062 */ /*TargetOpcode::G_FRINT*//*Label 111*/ GIMT_Encode4(10174),
4449 /* 1066 */ /*TargetOpcode::G_FNEARBYINT*//*Label 112*/ GIMT_Encode4(10196),
4450 /* 1070 */ // Label 0: @1070
4451 /* 1070 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1081), // Rule ID 19 //
4452 /* 1075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4453 /* 1078 */ // MIs[0] d
4454 /* 1078 */ // No operand predicates
4455 /* 1078 */ // MIs[0] s
4456 /* 1078 */ // No operand predicates
4457 /* 1078 */ // Combiner Rule #19: copy_prop
4458 /* 1078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4459 /* 1081 */ // Label 114: @1081
4460 /* 1081 */ GIM_Reject,
4461 /* 1082 */ // Label 1: @1082
4462 /* 1082 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1093), // Rule ID 22 //
4463 /* 1087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4464 /* 1090 */ // Combiner Rule #22: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4465 /* 1090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4466 /* 1093 */ // Label 115: @1093
4467 /* 1093 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1104), // Rule ID 100 //
4468 /* 1098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4469 /* 1101 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4470 /* 1101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4471 /* 1104 */ // Label 116: @1104
4472 /* 1104 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1115), // Rule ID 152 //
4473 /* 1109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4474 /* 1112 */ // Combiner Rule #112: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4475 /* 1112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4476 /* 1115 */ // Label 117: @1115
4477 /* 1115 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1126), // Rule ID 260 //
4478 /* 1120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
4479 /* 1123 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_ADD'
4480 /* 1123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
4481 /* 1126 */ // Label 118: @1126
4482 /* 1126 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1137), // Rule ID 320 //
4483 /* 1131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4484 /* 1134 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_ADD'
4485 /* 1134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4486 /* 1137 */ // Label 119: @1137
4487 /* 1137 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1148), // Rule ID 357 //
4488 /* 1142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
4489 /* 1145 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4490 /* 1145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
4491 /* 1148 */ // Label 120: @1148
4492 /* 1148 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1236), // Rule ID 427 //
4493 /* 1153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
4494 /* 1156 */ // MIs[0] dst
4495 /* 1156 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4496 /* 1160 */ // MIs[0] __add_shift_match_0.shl_neg
4497 /* 1160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4498 /* 1164 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4499 /* 1168 */ // MIs[1] __add_shift_match_0.neg_y
4500 /* 1168 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4501 /* 1172 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4502 /* 1176 */ // MIs[2] __add_shift_match_0.zero
4503 /* 1176 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4504 /* 1180 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4505 /* 1184 */ // MIs[3] Operand 1
4506 /* 1184 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4507 /* 1195 */ // MIs[2] y
4508 /* 1195 */ // No operand predicates
4509 /* 1195 */ // MIs[1] n
4510 /* 1195 */ // No operand predicates
4511 /* 1195 */ // MIs[0] x
4512 /* 1195 */ // No operand predicates
4513 /* 1195 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
4514 /* 1199 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4515 /* 1201 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4516 /* 1204 */ // Combiner Rule #260: add_shift @ [__add_shift_match_0[1]]
4517 /* 1204 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4518 /* 1207 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4519 /* 1212 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4520 /* 1216 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4521 /* 1220 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4522 /* 1224 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4523 /* 1228 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4524 /* 1232 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4525 /* 1235 */ GIR_EraseRootFromParent_Done,
4526 /* 1236 */ // Label 121: @1236
4527 /* 1236 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1324), // Rule ID 426 //
4528 /* 1241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
4529 /* 1244 */ // MIs[0] dst
4530 /* 1244 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4531 /* 1248 */ // MIs[0] x
4532 /* 1248 */ // No operand predicates
4533 /* 1248 */ // MIs[0] __add_shift_match_0.shl_neg
4534 /* 1248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4535 /* 1252 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4536 /* 1256 */ // MIs[1] __add_shift_match_0.neg_y
4537 /* 1256 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4538 /* 1260 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4539 /* 1264 */ // MIs[2] __add_shift_match_0.zero
4540 /* 1264 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4541 /* 1268 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4542 /* 1272 */ // MIs[3] Operand 1
4543 /* 1272 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4544 /* 1283 */ // MIs[2] y
4545 /* 1283 */ // No operand predicates
4546 /* 1283 */ // MIs[1] n
4547 /* 1283 */ // No operand predicates
4548 /* 1283 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
4549 /* 1287 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4550 /* 1289 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4551 /* 1292 */ // Combiner Rule #260: add_shift @ [__add_shift_match_0[0]]
4552 /* 1292 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4553 /* 1295 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4554 /* 1300 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4555 /* 1304 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4556 /* 1308 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4557 /* 1312 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4558 /* 1316 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4559 /* 1320 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4560 /* 1323 */ GIR_EraseRootFromParent_Done,
4561 /* 1324 */ // Label 122: @1324
4562 /* 1324 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1358), // Rule ID 2 //
4563 /* 1329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4564 /* 1332 */ // MIs[0] root
4565 /* 1332 */ // No operand predicates
4566 /* 1332 */ // MIs[0] sub
4567 /* 1332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4568 /* 1336 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4569 /* 1340 */ // MIs[1] Operand 1
4570 /* 1340 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4571 /* 1344 */ // MIs[1] A
4572 /* 1344 */ // No operand predicates
4573 /* 1344 */ // MIs[0] B
4574 /* 1344 */ // No operand predicates
4575 /* 1344 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4576 /* 1346 */ // Combiner Rule #2: ZeroMinusAPlusB
4577 /* 1346 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4578 /* 1349 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4579 /* 1351 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4580 /* 1353 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4581 /* 1357 */ GIR_EraseRootFromParent_Done,
4582 /* 1358 */ // Label 123: @1358
4583 /* 1358 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1395), // Rule ID 18 //
4584 /* 1363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4585 /* 1366 */ // MIs[0] root
4586 /* 1366 */ // No operand predicates
4587 /* 1366 */ // MIs[0] sub
4588 /* 1366 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4589 /* 1370 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4590 /* 1374 */ // MIs[1] A
4591 /* 1374 */ // No operand predicates
4592 /* 1374 */ // MIs[1] c1
4593 /* 1374 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4594 /* 1378 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4595 /* 1382 */ // MIs[2] imm1
4596 /* 1382 */ // No operand predicates
4597 /* 1382 */ // MIs[0] c2
4598 /* 1382 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4599 /* 1386 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4600 /* 1390 */ // MIs[3] imm2
4601 /* 1390 */ // No operand predicates
4602 /* 1390 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4603 /* 1392 */ // Combiner Rule #18: AMinusC1PlusC2
4604 /* 1392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4605 /* 1395 */ // Label 124: @1395
4606 /* 1395 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1429), // Rule ID 5 //
4607 /* 1400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4608 /* 1403 */ // MIs[0] root
4609 /* 1403 */ // No operand predicates
4610 /* 1403 */ // MIs[0] sub
4611 /* 1403 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4612 /* 1407 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4613 /* 1411 */ // MIs[1] B
4614 /* 1411 */ // No operand predicates
4615 /* 1411 */ // MIs[1] A
4616 /* 1411 */ // No operand predicates
4617 /* 1411 */ // MIs[0] A
4618 /* 1411 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4619 /* 1416 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4620 /* 1421 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4621 /* 1423 */ // Combiner Rule #5: BMinusAPlusA
4622 /* 1423 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4623 /* 1428 */ GIR_EraseRootFromParent_Done,
4624 /* 1429 */ // Label 125: @1429
4625 /* 1429 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1463), // Rule ID 140 //
4626 /* 1434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4627 /* 1437 */ // MIs[0] dst
4628 /* 1437 */ // No operand predicates
4629 /* 1437 */ // MIs[0] __add_sub_reg_match_0.tmp
4630 /* 1437 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4631 /* 1441 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4632 /* 1445 */ // MIs[1] src
4633 /* 1445 */ // No operand predicates
4634 /* 1445 */ // MIs[1] __add_sub_reg_match_0.x
4635 /* 1445 */ // No operand predicates
4636 /* 1445 */ // MIs[0] __add_sub_reg_match_0.x
4637 /* 1445 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4638 /* 1450 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4639 /* 1455 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4640 /* 1457 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4641 /* 1457 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4642 /* 1462 */ GIR_EraseRootFromParent_Done,
4643 /* 1463 */ // Label 126: @1463
4644 /* 1463 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1508), // Rule ID 7 //
4645 /* 1468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4646 /* 1471 */ // MIs[0] root
4647 /* 1471 */ // No operand predicates
4648 /* 1471 */ // MIs[0] sub1
4649 /* 1471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4650 /* 1475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4651 /* 1479 */ // MIs[1] A
4652 /* 1479 */ // No operand predicates
4653 /* 1479 */ // MIs[1] B
4654 /* 1479 */ // No operand predicates
4655 /* 1479 */ // MIs[0] sub2
4656 /* 1479 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4657 /* 1483 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4658 /* 1487 */ // MIs[2] B
4659 /* 1487 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4660 /* 1492 */ // MIs[2] C
4661 /* 1492 */ // No operand predicates
4662 /* 1492 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4663 /* 1494 */ // Combiner Rule #7: AMinusBPlusBMinusC
4664 /* 1494 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4665 /* 1497 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4666 /* 1499 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4667 /* 1503 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4668 /* 1507 */ GIR_EraseRootFromParent_Done,
4669 /* 1508 */ // Label 127: @1508
4670 /* 1508 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1553), // Rule ID 6 //
4671 /* 1513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4672 /* 1516 */ // MIs[0] root
4673 /* 1516 */ // No operand predicates
4674 /* 1516 */ // MIs[0] sub1
4675 /* 1516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4676 /* 1520 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4677 /* 1524 */ // MIs[1] A
4678 /* 1524 */ // No operand predicates
4679 /* 1524 */ // MIs[1] B
4680 /* 1524 */ // No operand predicates
4681 /* 1524 */ // MIs[0] sub2
4682 /* 1524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4683 /* 1528 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4684 /* 1532 */ // MIs[2] C
4685 /* 1532 */ // No operand predicates
4686 /* 1532 */ // MIs[2] A
4687 /* 1532 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4688 /* 1537 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4689 /* 1539 */ // Combiner Rule #6: AMinusBPlusCMinusA
4690 /* 1539 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4691 /* 1542 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4692 /* 1544 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4693 /* 1548 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4694 /* 1552 */ GIR_EraseRootFromParent_Done,
4695 /* 1553 */ // Label 128: @1553
4696 /* 1553 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1588), // Rule ID 45 //
4697 /* 1558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4698 /* 1561 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4699 /* 1567 */ // MIs[0] root
4700 /* 1567 */ // No operand predicates
4701 /* 1567 */ // MIs[0] left
4702 /* 1567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4703 /* 1571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4704 /* 1575 */ // MIs[1] imm1
4705 /* 1575 */ // No operand predicates
4706 /* 1575 */ // MIs[0] right
4707 /* 1575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4708 /* 1579 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4709 /* 1583 */ // MIs[2] imm2
4710 /* 1583 */ // No operand predicates
4711 /* 1583 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4712 /* 1585 */ // Combiner Rule #43: add_of_vscale
4713 /* 1585 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4714 /* 1588 */ // Label 129: @1588
4715 /* 1588 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1622), // Rule ID 3 //
4716 /* 1593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4717 /* 1596 */ // MIs[0] root
4718 /* 1596 */ // No operand predicates
4719 /* 1596 */ // MIs[0] A
4720 /* 1596 */ // No operand predicates
4721 /* 1596 */ // MIs[0] sub
4722 /* 1596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4723 /* 1600 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4724 /* 1604 */ // MIs[1] Operand 1
4725 /* 1604 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4726 /* 1608 */ // MIs[1] B
4727 /* 1608 */ // No operand predicates
4728 /* 1608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4729 /* 1610 */ // Combiner Rule #3: APlusZeroMinusB
4730 /* 1610 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4731 /* 1613 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4732 /* 1615 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4733 /* 1617 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4734 /* 1621 */ GIR_EraseRootFromParent_Done,
4735 /* 1622 */ // Label 130: @1622
4736 /* 1622 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1656), // Rule ID 4 //
4737 /* 1627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4738 /* 1630 */ // MIs[0] root
4739 /* 1630 */ // No operand predicates
4740 /* 1630 */ // MIs[0] A
4741 /* 1630 */ // No operand predicates
4742 /* 1630 */ // MIs[0] sub
4743 /* 1630 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4744 /* 1634 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4745 /* 1638 */ // MIs[1] B
4746 /* 1638 */ // No operand predicates
4747 /* 1638 */ // MIs[1] A
4748 /* 1638 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4749 /* 1643 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4750 /* 1648 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4751 /* 1650 */ // Combiner Rule #4: APlusBMinusB
4752 /* 1650 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4753 /* 1655 */ GIR_EraseRootFromParent_Done,
4754 /* 1656 */ // Label 131: @1656
4755 /* 1656 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1690), // Rule ID 139 //
4756 /* 1661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4757 /* 1664 */ // MIs[0] dst
4758 /* 1664 */ // No operand predicates
4759 /* 1664 */ // MIs[0] __add_sub_reg_match_0.x
4760 /* 1664 */ // No operand predicates
4761 /* 1664 */ // MIs[0] __add_sub_reg_match_0.tmp
4762 /* 1664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4763 /* 1668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4764 /* 1672 */ // MIs[1] src
4765 /* 1672 */ // No operand predicates
4766 /* 1672 */ // MIs[1] __add_sub_reg_match_0.x
4767 /* 1672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4768 /* 1677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4769 /* 1682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4770 /* 1684 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
4771 /* 1684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4772 /* 1689 */ GIR_EraseRootFromParent_Done,
4773 /* 1690 */ // Label 132: @1690
4774 /* 1690 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1735), // Rule ID 8 //
4775 /* 1695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4776 /* 1698 */ // MIs[0] root
4777 /* 1698 */ // No operand predicates
4778 /* 1698 */ // MIs[0] A
4779 /* 1698 */ // No operand predicates
4780 /* 1698 */ // MIs[0] sub1
4781 /* 1698 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4782 /* 1702 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4783 /* 1706 */ // MIs[1] B
4784 /* 1706 */ // No operand predicates
4785 /* 1706 */ // MIs[1] add1
4786 /* 1706 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4787 /* 1710 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4788 /* 1714 */ // MIs[2] A
4789 /* 1714 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4790 /* 1719 */ // MIs[2] C
4791 /* 1719 */ // No operand predicates
4792 /* 1719 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4793 /* 1721 */ // Combiner Rule #8: APlusBMinusAplusC
4794 /* 1721 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4795 /* 1724 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4796 /* 1726 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4797 /* 1730 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4798 /* 1734 */ GIR_EraseRootFromParent_Done,
4799 /* 1735 */ // Label 133: @1735
4800 /* 1735 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1780), // Rule ID 10 //
4801 /* 1740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4802 /* 1743 */ // MIs[0] root
4803 /* 1743 */ // No operand predicates
4804 /* 1743 */ // MIs[0] A
4805 /* 1743 */ // No operand predicates
4806 /* 1743 */ // MIs[0] sub1
4807 /* 1743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4808 /* 1747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4809 /* 1751 */ // MIs[1] B
4810 /* 1751 */ // No operand predicates
4811 /* 1751 */ // MIs[1] add1
4812 /* 1751 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4813 /* 1755 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4814 /* 1759 */ // MIs[2] C
4815 /* 1759 */ // No operand predicates
4816 /* 1759 */ // MIs[2] A
4817 /* 1759 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4818 /* 1764 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4819 /* 1766 */ // Combiner Rule #10: APlusBMinusCPlusA
4820 /* 1766 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4821 /* 1769 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4822 /* 1771 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4823 /* 1775 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4824 /* 1779 */ GIR_EraseRootFromParent_Done,
4825 /* 1780 */ // Label 134: @1780
4826 /* 1780 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1803), // Rule ID 111 //
4827 /* 1785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4828 /* 1788 */ // MIs[0] dst
4829 /* 1788 */ // No operand predicates
4830 /* 1788 */ // MIs[0] lhs
4831 /* 1788 */ // No operand predicates
4832 /* 1788 */ // MIs[0] Operand 2
4833 /* 1788 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4834 /* 1792 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4835 /* 1797 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
4836 /* 1797 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4837 /* 1802 */ GIR_EraseRootFromParent_Done,
4838 /* 1803 */ // Label 135: @1803
4839 /* 1803 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1814), // Rule ID 160 //
4840 /* 1808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4841 /* 1811 */ // MIs[0] root
4842 /* 1811 */ // No operand predicates
4843 /* 1811 */ // MIs[0] src1
4844 /* 1811 */ // No operand predicates
4845 /* 1811 */ // MIs[0] src2
4846 /* 1811 */ // No operand predicates
4847 /* 1811 */ // Combiner Rule #116: reassoc_comm_binops
4848 /* 1811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4849 /* 1814 */ // Label 136: @1814
4850 /* 1814 */ GIM_Reject,
4851 /* 1815 */ // Label 2: @1815
4852 /* 1815 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1826), // Rule ID 101 //
4853 /* 1820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4854 /* 1823 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4855 /* 1823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4856 /* 1826 */ // Label 137: @1826
4857 /* 1826 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1837), // Rule ID 268 //
4858 /* 1831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
4859 /* 1834 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SUB'
4860 /* 1834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
4861 /* 1837 */ // Label 138: @1837
4862 /* 1837 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1848), // Rule ID 321 //
4863 /* 1842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4864 /* 1845 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SUB'
4865 /* 1845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4866 /* 1848 */ // Label 139: @1848
4867 /* 1848 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1859), // Rule ID 354 //
4868 /* 1853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
4869 /* 1856 */ // Combiner Rule #217: sub_add_reg; wip_match_opcode 'G_SUB'
4870 /* 1856 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4871 /* 1859 */ // Label 140: @1859
4872 /* 1859 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(1870), // Rule ID 394 //
4873 /* 1864 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
4874 /* 1867 */ // Combiner Rule #230: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4875 /* 1867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
4876 /* 1870 */ // Label 141: @1870
4877 /* 1870 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(1947), // Rule ID 428 //
4878 /* 1875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
4879 /* 1878 */ // MIs[0] dst
4880 /* 1878 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4881 /* 1882 */ // MIs[0] sub1
4882 /* 1882 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4883 /* 1886 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4884 /* 1890 */ // MIs[1] a
4885 /* 1890 */ // No operand predicates
4886 /* 1890 */ // MIs[1] b
4887 /* 1890 */ // No operand predicates
4888 /* 1890 */ // MIs[0] Operand 2
4889 /* 1890 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4890 /* 1894 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
4891 /* 1898 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4892 /* 1900 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4893 /* 1903 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4894 /* 1913 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4895 /* 1916 */ // Combiner Rule #261: sub_one_from_sub
4896 /* 1916 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4897 /* 1919 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4898 /* 1924 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4899 /* 1928 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4900 /* 1931 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4901 /* 1935 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4902 /* 1939 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4903 /* 1942 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4904 /* 1946 */ GIR_EraseRootFromParent_Done,
4905 /* 1947 */ // Label 142: @1947
4906 /* 1947 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2041), // Rule ID 434 //
4907 /* 1952 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule265Enabled),
4908 /* 1955 */ // MIs[0] root
4909 /* 1955 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4910 /* 1959 */ // MIs[0] Operand 1
4911 /* 1959 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4912 /* 1963 */ // MIs[0] max
4913 /* 1963 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4914 /* 1967 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
4915 /* 1971 */ // MIs[1] A
4916 /* 1971 */ // No operand predicates
4917 /* 1971 */ // MIs[1] sub
4918 /* 1971 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4919 /* 1975 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4920 /* 1979 */ // MIs[2] Operand 1
4921 /* 1979 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
4922 /* 1983 */ // MIs[2] A
4923 /* 1983 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4924 /* 1988 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
4925 /* 1992 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4926 /* 1994 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4927 /* 1997 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4928 /* 2007 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4929 /* 2010 */ // Combiner Rule #265: SubSmaxSub
4930 /* 2010 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4931 /* 2013 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4932 /* 2018 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4933 /* 2021 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4934 /* 2025 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
4935 /* 2029 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4936 /* 2033 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
4937 /* 2037 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4938 /* 2040 */ GIR_EraseRootFromParent_Done,
4939 /* 2041 */ // Label 143: @2041
4940 /* 2041 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2135), // Rule ID 435 //
4941 /* 2046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule266Enabled),
4942 /* 2049 */ // MIs[0] root
4943 /* 2049 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4944 /* 2053 */ // MIs[0] Operand 1
4945 /* 2053 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4946 /* 2057 */ // MIs[0] max
4947 /* 2057 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4948 /* 2061 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
4949 /* 2065 */ // MIs[1] A
4950 /* 2065 */ // No operand predicates
4951 /* 2065 */ // MIs[1] sub
4952 /* 2065 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4953 /* 2069 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4954 /* 2073 */ // MIs[2] Operand 1
4955 /* 2073 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
4956 /* 2077 */ // MIs[2] A
4957 /* 2077 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4958 /* 2082 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
4959 /* 2086 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4960 /* 2088 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4961 /* 2091 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4962 /* 2101 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4963 /* 2104 */ // Combiner Rule #266: SubUmaxSub
4964 /* 2104 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4965 /* 2107 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4966 /* 2112 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4967 /* 2115 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4968 /* 2119 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
4969 /* 2123 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4970 /* 2127 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
4971 /* 2131 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4972 /* 2134 */ GIR_EraseRootFromParent_Done,
4973 /* 2135 */ // Label 144: @2135
4974 /* 2135 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2175), // Rule ID 432 //
4975 /* 2140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
4976 /* 2143 */ // MIs[0] root
4977 /* 2143 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4978 /* 2147 */ // MIs[0] Operand 1
4979 /* 2147 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
4980 /* 2151 */ // MIs[0] op1
4981 /* 2151 */ // No operand predicates
4982 /* 2151 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4983 /* 2154 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
4984 /* 2164 */ // Combiner Rule #263: sub_minus_one
4985 /* 2164 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4986 /* 2167 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4987 /* 2169 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
4988 /* 2171 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4989 /* 2174 */ GIR_EraseRootFromParent_Done,
4990 /* 2175 */ // Label 145: @2175
4991 /* 2175 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2275), // Rule ID 433 //
4992 /* 2180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule264Enabled),
4993 /* 2183 */ // MIs[0] d
4994 /* 2183 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4995 /* 2187 */ // MIs[0] a
4996 /* 2187 */ // No operand predicates
4997 /* 2187 */ // MIs[0] mul
4998 /* 2187 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4999 /* 2191 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5000 /* 2195 */ // MIs[1] x
5001 /* 2195 */ // No operand predicates
5002 /* 2195 */ // MIs[1] c
5003 /* 2195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5004 /* 2199 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5005 /* 2203 */ // MIs[2] imm
5006 /* 2203 */ // No operand predicates
5007 /* 2203 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5008 /* 2207 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5009 /* 2209 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5010 /* 2212 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5011 /* 2215 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5012 /* 2225 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5013 /* 2228 */ // Combiner Rule #264: sub_of_mul_const
5014 /* 2228 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5015 /* 2231 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5016 /* 2236 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5017 /* 2239 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
5018 /* 2243 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
5019 /* 2247 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5020 /* 2252 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5021 /* 2256 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5022 /* 2259 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5023 /* 2263 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
5024 /* 2267 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
5025 /* 2271 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5026 /* 2274 */ GIR_EraseRootFromParent_Done,
5027 /* 2275 */ // Label 146: @2275
5028 /* 2275 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2336), // Rule ID 9 //
5029 /* 2280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
5030 /* 2283 */ // MIs[0] root
5031 /* 2283 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5032 /* 2287 */ // MIs[0] A
5033 /* 2287 */ // No operand predicates
5034 /* 2287 */ // MIs[0] sub1
5035 /* 2287 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5036 /* 2291 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5037 /* 2295 */ // MIs[1] B
5038 /* 2295 */ // No operand predicates
5039 /* 2295 */ // MIs[1] C
5040 /* 2295 */ // No operand predicates
5041 /* 2295 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5042 /* 2299 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5043 /* 2301 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5044 /* 2304 */ // Combiner Rule #9: AMinusBMinusC
5045 /* 2304 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5046 /* 2307 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5047 /* 2312 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
5048 /* 2316 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5049 /* 2320 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5050 /* 2324 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5051 /* 2328 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
5052 /* 2332 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5053 /* 2335 */ GIR_EraseRootFromParent_Done,
5054 /* 2336 */ // Label 147: @2336
5055 /* 2336 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2381), // Rule ID 0 //
5056 /* 2341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
5057 /* 2344 */ // MIs[0] root
5058 /* 2344 */ // No operand predicates
5059 /* 2344 */ // MIs[0] add1
5060 /* 2344 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5061 /* 2348 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5062 /* 2352 */ // MIs[1] A
5063 /* 2352 */ // No operand predicates
5064 /* 2352 */ // MIs[1] sub1
5065 /* 2352 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5066 /* 2356 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5067 /* 2360 */ // MIs[2] B
5068 /* 2360 */ // No operand predicates
5069 /* 2360 */ // MIs[2] C
5070 /* 2360 */ // No operand predicates
5071 /* 2360 */ // MIs[0] B
5072 /* 2360 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5073 /* 2365 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5074 /* 2367 */ // Combiner Rule #0: APlusBMinusCMinusB
5075 /* 2367 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5076 /* 2370 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5077 /* 2372 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5078 /* 2376 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5079 /* 2380 */ GIR_EraseRootFromParent_Done,
5080 /* 2381 */ // Label 148: @2381
5081 /* 2381 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2418), // Rule ID 14 //
5082 /* 2386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5083 /* 2389 */ // MIs[0] root
5084 /* 2389 */ // No operand predicates
5085 /* 2389 */ // MIs[0] add
5086 /* 2389 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5087 /* 2393 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5088 /* 2397 */ // MIs[1] A
5089 /* 2397 */ // No operand predicates
5090 /* 2397 */ // MIs[1] c1
5091 /* 2397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5092 /* 2401 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5093 /* 2405 */ // MIs[2] imm1
5094 /* 2405 */ // No operand predicates
5095 /* 2405 */ // MIs[0] c2
5096 /* 2405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5097 /* 2409 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5098 /* 2413 */ // MIs[3] imm2
5099 /* 2413 */ // No operand predicates
5100 /* 2413 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5101 /* 2415 */ // Combiner Rule #14: APlusC1MinusC2
5102 /* 2415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
5103 /* 2418 */ // Label 149: @2418
5104 /* 2418 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2455), // Rule ID 17 //
5105 /* 2423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5106 /* 2426 */ // MIs[0] root
5107 /* 2426 */ // No operand predicates
5108 /* 2426 */ // MIs[0] sub1
5109 /* 2426 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5110 /* 2430 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5111 /* 2434 */ // MIs[1] c1
5112 /* 2434 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5113 /* 2438 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5114 /* 2442 */ // MIs[2] imm1
5115 /* 2442 */ // No operand predicates
5116 /* 2442 */ // MIs[1] A
5117 /* 2442 */ // No operand predicates
5118 /* 2442 */ // MIs[0] c2
5119 /* 2442 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5120 /* 2446 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5121 /* 2450 */ // MIs[3] imm2
5122 /* 2450 */ // No operand predicates
5123 /* 2450 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5124 /* 2452 */ // Combiner Rule #17: C1Minus2MinusC2
5125 /* 2452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5126 /* 2455 */ // Label 150: @2455
5127 /* 2455 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2500), // Rule ID 1 //
5128 /* 2460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5129 /* 2463 */ // MIs[0] root
5130 /* 2463 */ // No operand predicates
5131 /* 2463 */ // MIs[0] sub2
5132 /* 2463 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5133 /* 2467 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5134 /* 2471 */ // MIs[1] A
5135 /* 2471 */ // No operand predicates
5136 /* 2471 */ // MIs[1] sub1
5137 /* 2471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5138 /* 2475 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5139 /* 2479 */ // MIs[2] B
5140 /* 2479 */ // No operand predicates
5141 /* 2479 */ // MIs[2] C
5142 /* 2479 */ // No operand predicates
5143 /* 2479 */ // MIs[0] C
5144 /* 2479 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5145 /* 2484 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5146 /* 2486 */ // Combiner Rule #1: AMinusBMinusCMinusC
5147 /* 2486 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5148 /* 2489 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5149 /* 2491 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5150 /* 2495 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5151 /* 2499 */ GIR_EraseRootFromParent_Done,
5152 /* 2500 */ // Label 151: @2500
5153 /* 2500 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2537), // Rule ID 16 //
5154 /* 2505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5155 /* 2508 */ // MIs[0] root
5156 /* 2508 */ // No operand predicates
5157 /* 2508 */ // MIs[0] sub1
5158 /* 2508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5159 /* 2512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5160 /* 2516 */ // MIs[1] A
5161 /* 2516 */ // No operand predicates
5162 /* 2516 */ // MIs[1] c1
5163 /* 2516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5164 /* 2520 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5165 /* 2524 */ // MIs[2] imm1
5166 /* 2524 */ // No operand predicates
5167 /* 2524 */ // MIs[0] c2
5168 /* 2524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5169 /* 2528 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5170 /* 2532 */ // MIs[3] imm2
5171 /* 2532 */ // No operand predicates
5172 /* 2532 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5173 /* 2534 */ // Combiner Rule #16: AMinusC1MinusC2
5174 /* 2534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5175 /* 2537 */ // Label 152: @2537
5176 /* 2537 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2580), // Rule ID 170 //
5177 /* 2542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5178 /* 2545 */ // MIs[0] dst
5179 /* 2545 */ // No operand predicates
5180 /* 2545 */ // MIs[0] Operand 1
5181 /* 2545 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5182 /* 2549 */ // MIs[0] and
5183 /* 2549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5184 /* 2553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5185 /* 2557 */ // MIs[1] x
5186 /* 2557 */ // No operand predicates
5187 /* 2557 */ // MIs[1] Operand 2
5188 /* 2557 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5189 /* 2561 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
5190 /* 2565 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5191 /* 2567 */ // Combiner Rule #126: neg_and_one_to_sext_inreg
5192 /* 2567 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5193 /* 2570 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5194 /* 2572 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5195 /* 2576 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5196 /* 2579 */ GIR_EraseRootFromParent_Done,
5197 /* 2580 */ // Label 153: @2580
5198 /* 2580 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2617), // Rule ID 15 //
5199 /* 2585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5200 /* 2588 */ // MIs[0] root
5201 /* 2588 */ // No operand predicates
5202 /* 2588 */ // MIs[0] c2
5203 /* 2588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5204 /* 2592 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5205 /* 2596 */ // MIs[1] imm2
5206 /* 2596 */ // No operand predicates
5207 /* 2596 */ // MIs[0] add
5208 /* 2596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5209 /* 2600 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5210 /* 2604 */ // MIs[2] A
5211 /* 2604 */ // No operand predicates
5212 /* 2604 */ // MIs[2] c1
5213 /* 2604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5214 /* 2608 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5215 /* 2612 */ // MIs[3] imm1
5216 /* 2612 */ // No operand predicates
5217 /* 2612 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5218 /* 2614 */ // Combiner Rule #15: C2MinusAPlusC1
5219 /* 2614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5220 /* 2617 */ // Label 154: @2617
5221 /* 2617 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2656), // Rule ID 122 //
5222 /* 2622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5223 /* 2625 */ // MIs[0] dst
5224 /* 2625 */ // No operand predicates
5225 /* 2625 */ // MIs[0] x
5226 /* 2625 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5227 /* 2629 */ // MIs[0] x
5228 /* 2629 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5229 /* 2634 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5230 /* 2637 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5231 /* 2647 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
5232 /* 2647 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5233 /* 2650 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5234 /* 2652 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5235 /* 2655 */ GIR_EraseRootFromParent_Done,
5236 /* 2656 */ // Label 155: @2656
5237 /* 2656 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2690), // Rule ID 12 //
5238 /* 2661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5239 /* 2664 */ // MIs[0] root
5240 /* 2664 */ // No operand predicates
5241 /* 2664 */ // MIs[0] A
5242 /* 2664 */ // No operand predicates
5243 /* 2664 */ // MIs[0] add
5244 /* 2664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5245 /* 2668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5246 /* 2672 */ // MIs[1] A
5247 /* 2672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5248 /* 2677 */ // MIs[1] B
5249 /* 2677 */ // No operand predicates
5250 /* 2677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5251 /* 2682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5252 /* 2684 */ // Combiner Rule #12: AMinusBMinusA
5253 /* 2684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5254 /* 2689 */ GIR_EraseRootFromParent_Done,
5255 /* 2690 */ // Label 156: @2690
5256 /* 2690 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2724), // Rule ID 11 //
5257 /* 2695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5258 /* 2698 */ // MIs[0] root
5259 /* 2698 */ // No operand predicates
5260 /* 2698 */ // MIs[0] A
5261 /* 2698 */ // No operand predicates
5262 /* 2698 */ // MIs[0] sub1
5263 /* 2698 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5264 /* 2702 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5265 /* 2706 */ // MIs[1] Operand 1
5266 /* 2706 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5267 /* 2710 */ // MIs[1] B
5268 /* 2710 */ // No operand predicates
5269 /* 2710 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5270 /* 2712 */ // Combiner Rule #11: AMinusZeroMinusB
5271 /* 2712 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5272 /* 2715 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5273 /* 2717 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5274 /* 2719 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5275 /* 2723 */ GIR_EraseRootFromParent_Done,
5276 /* 2724 */ // Label 157: @2724
5277 /* 2724 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2751), // Rule ID 48 //
5278 /* 2729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
5279 /* 2732 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5280 /* 2738 */ // MIs[0] root
5281 /* 2738 */ // No operand predicates
5282 /* 2738 */ // MIs[0] x
5283 /* 2738 */ // No operand predicates
5284 /* 2738 */ // MIs[0] right
5285 /* 2738 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5286 /* 2742 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5287 /* 2746 */ // MIs[1] imm
5288 /* 2746 */ // No operand predicates
5289 /* 2746 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5290 /* 2748 */ // Combiner Rule #46: sub_of_vscale
5291 /* 2748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
5292 /* 2751 */ // Label 158: @2751
5293 /* 2751 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2774), // Rule ID 110 //
5294 /* 2756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5295 /* 2759 */ // MIs[0] dst
5296 /* 2759 */ // No operand predicates
5297 /* 2759 */ // MIs[0] lhs
5298 /* 2759 */ // No operand predicates
5299 /* 2759 */ // MIs[0] Operand 2
5300 /* 2759 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5301 /* 2763 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5302 /* 2768 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
5303 /* 2768 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5304 /* 2773 */ GIR_EraseRootFromParent_Done,
5305 /* 2774 */ // Label 159: @2774
5306 /* 2774 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2795), // Rule ID 21 //
5307 /* 2779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5308 /* 2782 */ // MIs[0] d
5309 /* 2782 */ // No operand predicates
5310 /* 2782 */ // MIs[0] op1
5311 /* 2782 */ // No operand predicates
5312 /* 2782 */ // MIs[0] c
5313 /* 2782 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5314 /* 2786 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5315 /* 2790 */ // MIs[1] imm
5316 /* 2790 */ // No operand predicates
5317 /* 2790 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5318 /* 2792 */ // Combiner Rule #21: sub_to_add
5319 /* 2792 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5320 /* 2795 */ // Label 160: @2795
5321 /* 2795 */ GIM_Reject,
5322 /* 2796 */ // Label 3: @2796
5323 /* 2796 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2807), // Rule ID 84 //
5324 /* 2801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5325 /* 2804 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_MUL'
5326 /* 2804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5327 /* 2807 */ // Label 161: @2807
5328 /* 2807 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2818), // Rule ID 265 //
5329 /* 2812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5330 /* 2815 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_MUL'
5331 /* 2815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5332 /* 2818 */ // Label 162: @2818
5333 /* 2818 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2829), // Rule ID 358 //
5334 /* 2823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5335 /* 2826 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
5336 /* 2826 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5337 /* 2829 */ // Label 163: @2829
5338 /* 2829 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2869), // Rule ID 23 //
5339 /* 2834 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5340 /* 2837 */ // MIs[0] dst
5341 /* 2837 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5342 /* 2841 */ // MIs[0] x
5343 /* 2841 */ // No operand predicates
5344 /* 2841 */ // MIs[0] Operand 2
5345 /* 2841 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5346 /* 2845 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5347 /* 2848 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5348 /* 2858 */ // Combiner Rule #23: mul_by_neg_one
5349 /* 2858 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5350 /* 2861 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5351 /* 2863 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5352 /* 2866 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5353 /* 2868 */ GIR_EraseRootFromParent_Done,
5354 /* 2869 */ // Label 164: @2869
5355 /* 2869 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2904), // Rule ID 46 //
5356 /* 2874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5357 /* 2877 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5358 /* 2883 */ // MIs[0] root
5359 /* 2883 */ // No operand predicates
5360 /* 2883 */ // MIs[0] left
5361 /* 2883 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5362 /* 2887 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5363 /* 2891 */ // MIs[1] scale
5364 /* 2891 */ // No operand predicates
5365 /* 2891 */ // MIs[0] x
5366 /* 2891 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5367 /* 2895 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5368 /* 2899 */ // MIs[2] imm1
5369 /* 2899 */ // No operand predicates
5370 /* 2899 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5371 /* 2901 */ // Combiner Rule #44: mul_of_vscale
5372 /* 2901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
5373 /* 2904 */ // Label 165: @2904
5374 /* 2904 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2944), // Rule ID 131 //
5375 /* 2909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5376 /* 2912 */ // MIs[0] dst
5377 /* 2912 */ // No operand predicates
5378 /* 2912 */ // MIs[0] zero
5379 /* 2912 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5380 /* 2916 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5381 /* 2920 */ // MIs[1] Operand 1
5382 /* 2920 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5383 /* 2931 */ // MIs[0] rhs
5384 /* 2931 */ // No operand predicates
5385 /* 2931 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5386 /* 2936 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5387 /* 2938 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5388 /* 2938 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5389 /* 2943 */ GIR_EraseRootFromParent_Done,
5390 /* 2944 */ // Label 166: @2944
5391 /* 2944 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2967), // Rule ID 132 //
5392 /* 2949 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5393 /* 2952 */ // MIs[0] dst
5394 /* 2952 */ // No operand predicates
5395 /* 2952 */ // MIs[0] lhs
5396 /* 2952 */ // No operand predicates
5397 /* 2952 */ // MIs[0] zero
5398 /* 2952 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5399 /* 2956 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5400 /* 2961 */ // Combiner Rule #94: binop_right_to_zero
5401 /* 2961 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5402 /* 2966 */ GIR_EraseRootFromParent_Done,
5403 /* 2967 */ // Label 167: @2967
5404 /* 2967 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2990), // Rule ID 137 //
5405 /* 2972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5406 /* 2975 */ // MIs[0] dst
5407 /* 2975 */ // No operand predicates
5408 /* 2975 */ // MIs[0] x
5409 /* 2975 */ // No operand predicates
5410 /* 2975 */ // MIs[0] Operand 2
5411 /* 2975 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5412 /* 2979 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5413 /* 2984 */ // Combiner Rule #99: right_identity_one_int
5414 /* 2984 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5415 /* 2989 */ GIR_EraseRootFromParent_Done,
5416 /* 2990 */ // Label 168: @2990
5417 /* 2990 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3001), // Rule ID 20 //
5418 /* 2995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5419 /* 2998 */ // MIs[0] d
5420 /* 2998 */ // No operand predicates
5421 /* 2998 */ // MIs[0] op1
5422 /* 2998 */ // No operand predicates
5423 /* 2998 */ // MIs[0] op2
5424 /* 2998 */ // No operand predicates
5425 /* 2998 */ // Combiner Rule #20: mul_to_shl
5426 /* 2998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5427 /* 3001 */ // Label 169: @3001
5428 /* 3001 */ GIM_Reject,
5429 /* 3002 */ // Label 4: @3002
5430 /* 3002 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3013), // Rule ID 236 //
5431 /* 3007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5432 /* 3010 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5433 /* 3010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5434 /* 3013 */ // Label 170: @3013
5435 /* 3013 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3024), // Rule ID 271 //
5436 /* 3018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5437 /* 3021 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SDIV'
5438 /* 3021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5439 /* 3024 */ // Label 171: @3024
5440 /* 3024 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3035), // Rule ID 326 //
5441 /* 3029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5442 /* 3032 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5443 /* 3032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5444 /* 3035 */ // Label 172: @3035
5445 /* 3035 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3075), // Rule ID 127 //
5446 /* 3040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5447 /* 3043 */ // MIs[0] dst
5448 /* 3043 */ // No operand predicates
5449 /* 3043 */ // MIs[0] zero
5450 /* 3043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5451 /* 3047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5452 /* 3051 */ // MIs[1] Operand 1
5453 /* 3051 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5454 /* 3062 */ // MIs[0] rhs
5455 /* 3062 */ // No operand predicates
5456 /* 3062 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5457 /* 3067 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5458 /* 3069 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5459 /* 3069 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5460 /* 3074 */ GIR_EraseRootFromParent_Done,
5461 /* 3075 */ // Label 173: @3075
5462 /* 3075 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3092), // Rule ID 350 //
5463 /* 3080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5464 /* 3083 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5465 /* 3089 */ // MIs[0] dst
5466 /* 3089 */ // No operand predicates
5467 /* 3089 */ // MIs[0] x
5468 /* 3089 */ // No operand predicates
5469 /* 3089 */ // MIs[0] y
5470 /* 3089 */ // No operand predicates
5471 /* 3089 */ // Combiner Rule #213: sdiv_by_pow2
5472 /* 3089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
5473 /* 3092 */ // Label 174: @3092
5474 /* 3092 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3103), // Rule ID 352 //
5475 /* 3097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5476 /* 3100 */ // MIs[0] dst
5477 /* 3100 */ // No operand predicates
5478 /* 3100 */ // MIs[0] x
5479 /* 3100 */ // No operand predicates
5480 /* 3100 */ // MIs[0] y
5481 /* 3100 */ // No operand predicates
5482 /* 3100 */ // Combiner Rule #215: sdiv_by_const
5483 /* 3100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5484 /* 3103 */ // Label 175: @3103
5485 /* 3103 */ GIM_Reject,
5486 /* 3104 */ // Label 5: @3104
5487 /* 3104 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3115), // Rule ID 87 //
5488 /* 3109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5489 /* 3112 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5490 /* 3112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5491 /* 3115 */ // Label 176: @3115
5492 /* 3115 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3126), // Rule ID 237 //
5493 /* 3120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5494 /* 3123 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5495 /* 3123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5496 /* 3126 */ // Label 177: @3126
5497 /* 3126 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3137), // Rule ID 270 //
5498 /* 3131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5499 /* 3134 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UDIV'
5500 /* 3134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5501 /* 3137 */ // Label 178: @3137
5502 /* 3137 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3148), // Rule ID 328 //
5503 /* 3142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5504 /* 3145 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5505 /* 3145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5506 /* 3148 */ // Label 179: @3148
5507 /* 3148 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3188), // Rule ID 128 //
5508 /* 3153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5509 /* 3156 */ // MIs[0] dst
5510 /* 3156 */ // No operand predicates
5511 /* 3156 */ // MIs[0] zero
5512 /* 3156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5513 /* 3160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5514 /* 3164 */ // MIs[1] Operand 1
5515 /* 3164 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5516 /* 3175 */ // MIs[0] rhs
5517 /* 3175 */ // No operand predicates
5518 /* 3175 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5519 /* 3180 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5520 /* 3182 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5521 /* 3182 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5522 /* 3187 */ GIR_EraseRootFromParent_Done,
5523 /* 3188 */ // Label 180: @3188
5524 /* 3188 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3205), // Rule ID 349 //
5525 /* 3193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
5526 /* 3196 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5527 /* 3202 */ // MIs[0] dst
5528 /* 3202 */ // No operand predicates
5529 /* 3202 */ // MIs[0] x
5530 /* 3202 */ // No operand predicates
5531 /* 3202 */ // MIs[0] y
5532 /* 3202 */ // No operand predicates
5533 /* 3202 */ // Combiner Rule #212: udiv_by_pow2
5534 /* 3202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
5535 /* 3205 */ // Label 181: @3205
5536 /* 3205 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3216), // Rule ID 351 //
5537 /* 3210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
5538 /* 3213 */ // MIs[0] dst
5539 /* 3213 */ // No operand predicates
5540 /* 3213 */ // MIs[0] x
5541 /* 3213 */ // No operand predicates
5542 /* 3213 */ // MIs[0] y
5543 /* 3213 */ // No operand predicates
5544 /* 3213 */ // Combiner Rule #214: udiv_by_const
5545 /* 3213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5546 /* 3216 */ // Label 182: @3216
5547 /* 3216 */ GIM_Reject,
5548 /* 3217 */ // Label 6: @3217
5549 /* 3217 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3228), // Rule ID 238 //
5550 /* 3222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5551 /* 3225 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5552 /* 3225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5553 /* 3228 */ // Label 183: @3228
5554 /* 3228 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3239), // Rule ID 273 //
5555 /* 3233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5556 /* 3236 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SREM'
5557 /* 3236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5558 /* 3239 */ // Label 184: @3239
5559 /* 3239 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3250), // Rule ID 327 //
5560 /* 3244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5561 /* 3247 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SREM'
5562 /* 3247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5563 /* 3250 */ // Label 185: @3250
5564 /* 3250 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3290), // Rule ID 129 //
5565 /* 3255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5566 /* 3258 */ // MIs[0] dst
5567 /* 3258 */ // No operand predicates
5568 /* 3258 */ // MIs[0] zero
5569 /* 3258 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5570 /* 3262 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5571 /* 3266 */ // MIs[1] Operand 1
5572 /* 3266 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5573 /* 3277 */ // MIs[0] rhs
5574 /* 3277 */ // No operand predicates
5575 /* 3277 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5576 /* 3282 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5577 /* 3284 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5578 /* 3284 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5579 /* 3289 */ GIR_EraseRootFromParent_Done,
5580 /* 3290 */ // Label 186: @3290
5581 /* 3290 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3301), // Rule ID 346 //
5582 /* 3295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
5583 /* 3298 */ // MIs[0] dst
5584 /* 3298 */ // No operand predicates
5585 /* 3298 */ // MIs[0] x
5586 /* 3298 */ // No operand predicates
5587 /* 3298 */ // MIs[0] y
5588 /* 3298 */ // No operand predicates
5589 /* 3298 */ // Combiner Rule #209: srem_pow2_to_mask
5590 /* 3298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5591 /* 3301 */ // Label 187: @3301
5592 /* 3301 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3312), // Rule ID 348 //
5593 /* 3306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5594 /* 3309 */ // MIs[0] dst
5595 /* 3309 */ // No operand predicates
5596 /* 3309 */ // MIs[0] x
5597 /* 3309 */ // No operand predicates
5598 /* 3309 */ // MIs[0] y
5599 /* 3309 */ // No operand predicates
5600 /* 3309 */ // Combiner Rule #211: srem_by_const
5601 /* 3309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5602 /* 3312 */ // Label 188: @3312
5603 /* 3312 */ GIM_Reject,
5604 /* 3313 */ // Label 7: @3313
5605 /* 3313 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3324), // Rule ID 88 //
5606 /* 3318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5607 /* 3321 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5608 /* 3321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5609 /* 3324 */ // Label 189: @3324
5610 /* 3324 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3335), // Rule ID 239 //
5611 /* 3329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5612 /* 3332 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5613 /* 3332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5614 /* 3335 */ // Label 190: @3335
5615 /* 3335 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3346), // Rule ID 272 //
5616 /* 3340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5617 /* 3343 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UREM'
5618 /* 3343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5619 /* 3346 */ // Label 191: @3346
5620 /* 3346 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3357), // Rule ID 329 //
5621 /* 3351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5622 /* 3354 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UREM'
5623 /* 3354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5624 /* 3357 */ // Label 192: @3357
5625 /* 3357 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3397), // Rule ID 130 //
5626 /* 3362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5627 /* 3365 */ // MIs[0] dst
5628 /* 3365 */ // No operand predicates
5629 /* 3365 */ // MIs[0] zero
5630 /* 3365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5631 /* 3369 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5632 /* 3373 */ // MIs[1] Operand 1
5633 /* 3373 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5634 /* 3384 */ // MIs[0] rhs
5635 /* 3384 */ // No operand predicates
5636 /* 3384 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5637 /* 3389 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5638 /* 3391 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5639 /* 3391 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5640 /* 3396 */ GIR_EraseRootFromParent_Done,
5641 /* 3397 */ // Label 193: @3397
5642 /* 3397 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3408), // Rule ID 187 //
5643 /* 3402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
5644 /* 3405 */ // MIs[0] dst
5645 /* 3405 */ // No operand predicates
5646 /* 3405 */ // MIs[0] x
5647 /* 3405 */ // No operand predicates
5648 /* 3405 */ // MIs[0] y
5649 /* 3405 */ // No operand predicates
5650 /* 3405 */ // Combiner Rule #143: urem_pow2_to_mask
5651 /* 3405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
5652 /* 3408 */ // Label 194: @3408
5653 /* 3408 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3419), // Rule ID 347 //
5654 /* 3413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5655 /* 3416 */ // MIs[0] dst
5656 /* 3416 */ // No operand predicates
5657 /* 3416 */ // MIs[0] x
5658 /* 3416 */ // No operand predicates
5659 /* 3416 */ // MIs[0] y
5660 /* 3416 */ // No operand predicates
5661 /* 3416 */ // Combiner Rule #210: urem_by_const
5662 /* 3416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5663 /* 3419 */ // Label 195: @3419
5664 /* 3419 */ GIM_Reject,
5665 /* 3420 */ // Label 8: @3420
5666 /* 3420 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3431), // Rule ID 79 //
5667 /* 3425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5668 /* 3428 */ // Combiner Rule #75: load_and_mask; wip_match_opcode 'G_AND'
5669 /* 3428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5670 /* 3431 */ // Label 196: @3431
5671 /* 3431 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3442), // Rule ID 83 //
5672 /* 3436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5673 /* 3439 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_AND'
5674 /* 3439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5675 /* 3442 */ // Label 197: @3442
5676 /* 3442 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3453), // Rule ID 153 //
5677 /* 3447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
5678 /* 3450 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5679 /* 3450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5680 /* 3453 */ // Label 198: @3453
5681 /* 3453 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3464), // Rule ID 173 //
5682 /* 3458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
5683 /* 3461 */ // Combiner Rule #129: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5684 /* 3461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5685 /* 3464 */ // Label 199: @3464
5686 /* 3464 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3475), // Rule ID 185 //
5687 /* 3469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
5688 /* 3472 */ // Combiner Rule #141: redundant_and; wip_match_opcode 'G_AND'
5689 /* 3472 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5690 /* 3475 */ // Label 200: @3475
5691 /* 3475 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3486), // Rule ID 209 //
5692 /* 3480 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5693 /* 3483 */ // Combiner Rule #165: overlapping_and; wip_match_opcode 'G_AND'
5694 /* 3483 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5695 /* 3486 */ // Label 201: @3486
5696 /* 3486 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3497), // Rule ID 262 //
5697 /* 3491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5698 /* 3494 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_AND'
5699 /* 3494 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5700 /* 3497 */ // Label 202: @3497
5701 /* 3497 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3508), // Rule ID 311 //
5702 /* 3502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
5703 /* 3505 */ // Combiner Rule #199: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5704 /* 3505 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
5705 /* 3508 */ // Label 203: @3508
5706 /* 3508 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3519), // Rule ID 323 //
5707 /* 3513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5708 /* 3516 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_AND'
5709 /* 3516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5710 /* 3519 */ // Label 204: @3519
5711 /* 3519 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3530), // Rule ID 359 //
5712 /* 3524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5713 /* 3527 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5714 /* 3527 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5715 /* 3530 */ // Label 205: @3530
5716 /* 3530 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3541), // Rule ID 386 //
5717 /* 3535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5718 /* 3538 */ // Combiner Rule #222: match_ands; wip_match_opcode 'G_AND'
5719 /* 3538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5720 /* 3541 */ // Label 206: @3541
5721 /* 3541 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3552), // Rule ID 429 //
5722 /* 3546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
5723 /* 3549 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_AND'
5724 /* 3549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
5725 /* 3552 */ // Label 207: @3552
5726 /* 3552 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3638), // Rule ID 391 //
5727 /* 3557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5728 /* 3560 */ // MIs[0] root
5729 /* 3560 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5730 /* 3564 */ // MIs[0] or
5731 /* 3564 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5732 /* 3568 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5733 /* 3572 */ // MIs[1] x
5734 /* 3572 */ // No operand predicates
5735 /* 3572 */ // MIs[1] y
5736 /* 3572 */ // No operand predicates
5737 /* 3572 */ // MIs[0] not
5738 /* 3572 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5739 /* 3576 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5740 /* 3580 */ // MIs[2] y
5741 /* 3580 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5742 /* 3585 */ // MIs[2] Operand 2
5743 /* 3585 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5744 /* 3589 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5745 /* 3591 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5746 /* 3594 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5747 /* 3604 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5748 /* 3607 */ // Combiner Rule #227: and_xor_or_to_xor_and
5749 /* 3607 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5750 /* 3610 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5751 /* 3615 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
5752 /* 3619 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5753 /* 3622 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5754 /* 3626 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5755 /* 3630 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5756 /* 3634 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5757 /* 3637 */ GIR_EraseRootFromParent_Done,
5758 /* 3638 */ // Label 208: @3638
5759 /* 3638 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3736), // Rule ID 166 //
5760 /* 3643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
5761 /* 3646 */ // MIs[0] root
5762 /* 3646 */ // No operand predicates
5763 /* 3646 */ // MIs[0] d1
5764 /* 3646 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5765 /* 3650 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5766 /* 3654 */ // MIs[1] p
5767 /* 3654 */ // No operand predicates
5768 /* 3654 */ // MIs[1] s1
5769 /* 3654 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5770 /* 3658 */ // MIs[1] Operand 3
5771 /* 3658 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5772 /* 3662 */ // MIs[0] d2
5773 /* 3662 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5774 /* 3666 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5775 /* 3670 */ // MIs[2] p
5776 /* 3670 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5777 /* 3675 */ // MIs[2] s2
5778 /* 3675 */ // No operand predicates
5779 /* 3675 */ // MIs[2] Operand 3
5780 /* 3675 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5781 /* 3679 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
5782 /* 3683 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5783 /* 3685 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5784 /* 3688 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5785 /* 3698 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5786 /* 3701 */ // Combiner Rule #122: double_icmp_zero_and_combine
5787 /* 3701 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5788 /* 3704 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5789 /* 3709 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5790 /* 3713 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5791 /* 3717 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5792 /* 3721 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5793 /* 3725 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5794 /* 3729 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5795 /* 3732 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5796 /* 3735 */ GIR_EraseRootFromParent_Done,
5797 /* 3736 */ // Label 209: @3736
5798 /* 3736 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3773), // Rule ID 255 //
5799 /* 3741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
5800 /* 3744 */ // MIs[0] root
5801 /* 3744 */ // No operand predicates
5802 /* 3744 */ // MIs[0] shift
5803 /* 3744 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5804 /* 3748 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5805 /* 3752 */ // MIs[1] x
5806 /* 3752 */ // No operand predicates
5807 /* 3752 */ // MIs[1] lsb
5808 /* 3752 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5809 /* 3756 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5810 /* 3760 */ // MIs[2] imm1
5811 /* 3760 */ // No operand predicates
5812 /* 3760 */ // MIs[0] mask
5813 /* 3760 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5814 /* 3764 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5815 /* 3768 */ // MIs[3] imm2
5816 /* 3768 */ // No operand predicates
5817 /* 3768 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5818 /* 3770 */ // Combiner Rule #188: bitfield_extract_from_and
5819 /* 3770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
5820 /* 3773 */ // Label 210: @3773
5821 /* 3773 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3822), // Rule ID 390 //
5822 /* 3778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5823 /* 3781 */ // MIs[0] root
5824 /* 3781 */ // No operand predicates
5825 /* 3781 */ // MIs[0] or
5826 /* 3781 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5827 /* 3785 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5828 /* 3789 */ // MIs[1] x
5829 /* 3789 */ // No operand predicates
5830 /* 3789 */ // MIs[1] not
5831 /* 3789 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5832 /* 3793 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5833 /* 3797 */ // MIs[2] y
5834 /* 3797 */ // No operand predicates
5835 /* 3797 */ // MIs[2] Operand 2
5836 /* 3797 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5837 /* 3801 */ // MIs[0] y
5838 /* 3801 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5839 /* 3806 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5840 /* 3808 */ // Combiner Rule #226: and_xor_or_to_and
5841 /* 3808 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5842 /* 3811 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5843 /* 3813 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5844 /* 3817 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
5845 /* 3821 */ GIR_EraseRootFromParent_Done,
5846 /* 3822 */ // Label 211: @3822
5847 /* 3822 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3846), // Rule ID 120 //
5848 /* 3827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5849 /* 3830 */ // MIs[0] dst
5850 /* 3830 */ // No operand predicates
5851 /* 3830 */ // MIs[0] src
5852 /* 3830 */ // No operand predicates
5853 /* 3830 */ // MIs[0] src
5854 /* 3830 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5855 /* 3835 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5856 /* 3840 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
5857 /* 3840 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5858 /* 3845 */ GIR_EraseRootFromParent_Done,
5859 /* 3846 */ // Label 212: @3846
5860 /* 3846 */ GIM_Reject,
5861 /* 3847 */ // Label 9: @3847
5862 /* 3847 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3858), // Rule ID 85 //
5863 /* 3852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5864 /* 3855 */ // Combiner Rule #79: undef_to_negative_one; wip_match_opcode 'G_OR'
5865 /* 3855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5866 /* 3858 */ // Label 213: @3858
5867 /* 3858 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3869), // Rule ID 154 //
5868 /* 3863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
5869 /* 3866 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5870 /* 3866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5871 /* 3869 */ // Label 214: @3869
5872 /* 3869 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3880), // Rule ID 186 //
5873 /* 3874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
5874 /* 3877 */ // Combiner Rule #142: redundant_or; wip_match_opcode 'G_OR'
5875 /* 3877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5876 /* 3880 */ // Label 215: @3880
5877 /* 3880 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3891), // Rule ID 235 //
5878 /* 3885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
5879 /* 3888 */ // Combiner Rule #175: load_or_combine; wip_match_opcode 'G_OR'
5880 /* 3888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5881 /* 3891 */ // Label 216: @3891
5882 /* 3891 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3902), // Rule ID 240 //
5883 /* 3896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
5884 /* 3899 */ // Combiner Rule #177: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5885 /* 3899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
5886 /* 3902 */ // Label 217: @3902
5887 /* 3902 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3913), // Rule ID 266 //
5888 /* 3907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5889 /* 3910 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_OR'
5890 /* 3910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5891 /* 3913 */ // Label 218: @3913
5892 /* 3913 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3924), // Rule ID 324 //
5893 /* 3918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5894 /* 3921 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_OR'
5895 /* 3921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5896 /* 3924 */ // Label 219: @3924
5897 /* 3924 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3935), // Rule ID 360 //
5898 /* 3929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5899 /* 3932 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5900 /* 3932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5901 /* 3935 */ // Label 220: @3935
5902 /* 3935 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3946), // Rule ID 387 //
5903 /* 3940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5904 /* 3943 */ // Combiner Rule #223: match_ors; wip_match_opcode 'G_OR'
5905 /* 3943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
5906 /* 3946 */ // Label 221: @3946
5907 /* 3946 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3957), // Rule ID 430 //
5908 /* 3951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
5909 /* 3954 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_OR'
5910 /* 3954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
5911 /* 3957 */ // Label 222: @3957
5912 /* 3957 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4043), // Rule ID 389 //
5913 /* 3962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5914 /* 3965 */ // MIs[0] root
5915 /* 3965 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5916 /* 3969 */ // MIs[0] and
5917 /* 3969 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5918 /* 3973 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5919 /* 3977 */ // MIs[1] x
5920 /* 3977 */ // No operand predicates
5921 /* 3977 */ // MIs[1] y
5922 /* 3977 */ // No operand predicates
5923 /* 3977 */ // MIs[0] not
5924 /* 3977 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5925 /* 3981 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5926 /* 3985 */ // MIs[2] y
5927 /* 3985 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5928 /* 3990 */ // MIs[2] Operand 2
5929 /* 3990 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5930 /* 3994 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5931 /* 3996 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5932 /* 3999 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5933 /* 4009 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5934 /* 4012 */ // Combiner Rule #225: or_and_xor_to_xor_or
5935 /* 4012 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5936 /* 4015 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5937 /* 4020 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
5938 /* 4024 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5939 /* 4027 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5940 /* 4031 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5941 /* 4035 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5942 /* 4039 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5943 /* 4042 */ GIR_EraseRootFromParent_Done,
5944 /* 4043 */ // Label 223: @4043
5945 /* 4043 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4090), // Rule ID 247 //
5946 /* 4048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
5947 /* 4051 */ // MIs[0] root
5948 /* 4051 */ // No operand predicates
5949 /* 4051 */ // MIs[0] out1
5950 /* 4051 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5951 /* 4055 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5952 /* 4059 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5953 /* 4059 */ // No operand predicates
5954 /* 4059 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5955 /* 4059 */ // No operand predicates
5956 /* 4059 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5957 /* 4059 */ // No operand predicates
5958 /* 4059 */ // MIs[0] out2
5959 /* 4059 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5960 /* 4063 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5961 /* 4067 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5962 /* 4067 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5963 /* 4072 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5964 /* 4072 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5965 /* 4077 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5966 /* 4082 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5967 /* 4084 */ // Combiner Rule #182: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5968 /* 4084 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5969 /* 4089 */ GIR_EraseRootFromParent_Done,
5970 /* 4090 */ // Label 224: @4090
5971 /* 4090 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4137), // Rule ID 249 //
5972 /* 4095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
5973 /* 4098 */ // MIs[0] root
5974 /* 4098 */ // No operand predicates
5975 /* 4098 */ // MIs[0] out1
5976 /* 4098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5977 /* 4102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5978 /* 4106 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5979 /* 4106 */ // No operand predicates
5980 /* 4106 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5981 /* 4106 */ // No operand predicates
5982 /* 4106 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5983 /* 4106 */ // No operand predicates
5984 /* 4106 */ // MIs[0] out2
5985 /* 4106 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5986 /* 4110 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5987 /* 4114 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5988 /* 4114 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5989 /* 4119 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5990 /* 4119 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5991 /* 4124 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5992 /* 4129 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5993 /* 4131 */ // Combiner Rule #183: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5994 /* 4131 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5995 /* 4136 */ GIR_EraseRootFromParent_Done,
5996 /* 4137 */ // Label 225: @4137
5997 /* 4137 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4235), // Rule ID 167 //
5998 /* 4142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
5999 /* 4145 */ // MIs[0] root
6000 /* 4145 */ // No operand predicates
6001 /* 4145 */ // MIs[0] d1
6002 /* 4145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6003 /* 4149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6004 /* 4153 */ // MIs[1] p
6005 /* 4153 */ // No operand predicates
6006 /* 4153 */ // MIs[1] s1
6007 /* 4153 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6008 /* 4157 */ // MIs[1] Operand 3
6009 /* 4157 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6010 /* 4161 */ // MIs[0] d2
6011 /* 4161 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6012 /* 4165 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6013 /* 4169 */ // MIs[2] p
6014 /* 4169 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6015 /* 4174 */ // MIs[2] s2
6016 /* 4174 */ // No operand predicates
6017 /* 4174 */ // MIs[2] Operand 3
6018 /* 4174 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6019 /* 4178 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
6020 /* 4182 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6021 /* 4184 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6022 /* 4187 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6023 /* 4197 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6024 /* 4200 */ // Combiner Rule #123: double_icmp_zero_or_combine
6025 /* 4200 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6026 /* 4203 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6027 /* 4208 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6028 /* 4212 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6029 /* 4216 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6030 /* 4220 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6031 /* 4224 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6032 /* 4228 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6033 /* 4231 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6034 /* 4234 */ GIR_EraseRootFromParent_Done,
6035 /* 4235 */ // Label 226: @4235
6036 /* 4235 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4284), // Rule ID 388 //
6037 /* 4240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
6038 /* 4243 */ // MIs[0] root
6039 /* 4243 */ // No operand predicates
6040 /* 4243 */ // MIs[0] and
6041 /* 4243 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6042 /* 4247 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6043 /* 4251 */ // MIs[1] x
6044 /* 4251 */ // No operand predicates
6045 /* 4251 */ // MIs[1] not
6046 /* 4251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6047 /* 4255 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6048 /* 4259 */ // MIs[2] y
6049 /* 4259 */ // No operand predicates
6050 /* 4259 */ // MIs[2] Operand 2
6051 /* 4259 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6052 /* 4263 */ // MIs[0] y
6053 /* 4263 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6054 /* 4268 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6055 /* 4270 */ // Combiner Rule #224: or_and_xor_to_or
6056 /* 4270 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6057 /* 4273 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6058 /* 4275 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6059 /* 4279 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6060 /* 4283 */ GIR_EraseRootFromParent_Done,
6061 /* 4284 */ // Label 227: @4284
6062 /* 4284 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4318), // Rule ID 440 //
6063 /* 4289 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6064 /* 4292 */ // MIs[0] dst
6065 /* 4292 */ // No operand predicates
6066 /* 4292 */ // MIs[0] __combine_or_of_and_match_0.and
6067 /* 4292 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6068 /* 4296 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6069 /* 4300 */ // MIs[1] x
6070 /* 4300 */ // No operand predicates
6071 /* 4300 */ // MIs[1] y
6072 /* 4300 */ // No operand predicates
6073 /* 4300 */ // MIs[0] x
6074 /* 4300 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6075 /* 4305 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6076 /* 4310 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6077 /* 4312 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
6078 /* 4312 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6079 /* 4317 */ GIR_EraseRootFromParent_Done,
6080 /* 4318 */ // Label 228: @4318
6081 /* 4318 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4352), // Rule ID 441 //
6082 /* 4323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6083 /* 4326 */ // MIs[0] dst
6084 /* 4326 */ // No operand predicates
6085 /* 4326 */ // MIs[0] __combine_or_of_and_match_0.and
6086 /* 4326 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6087 /* 4330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6088 /* 4334 */ // MIs[1] y
6089 /* 4334 */ // No operand predicates
6090 /* 4334 */ // MIs[1] x
6091 /* 4334 */ // No operand predicates
6092 /* 4334 */ // MIs[0] x
6093 /* 4334 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6094 /* 4339 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6095 /* 4344 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6096 /* 4346 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
6097 /* 4346 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6098 /* 4351 */ GIR_EraseRootFromParent_Done,
6099 /* 4352 */ // Label 229: @4352
6100 /* 4352 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4399), // Rule ID 250 //
6101 /* 4357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6102 /* 4360 */ // MIs[0] root
6103 /* 4360 */ // No operand predicates
6104 /* 4360 */ // MIs[0] out2
6105 /* 4360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6106 /* 4364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6107 /* 4368 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6108 /* 4368 */ // No operand predicates
6109 /* 4368 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6110 /* 4368 */ // No operand predicates
6111 /* 4368 */ // MIs[0] out1
6112 /* 4368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6113 /* 4372 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
6114 /* 4376 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6115 /* 4376 */ // No operand predicates
6116 /* 4376 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6117 /* 4376 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6118 /* 4381 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6119 /* 4381 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6120 /* 4386 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6121 /* 4391 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6122 /* 4393 */ // Combiner Rule #183: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6123 /* 4393 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6124 /* 4398 */ GIR_EraseRootFromParent_Done,
6125 /* 4399 */ // Label 230: @4399
6126 /* 4399 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4446), // Rule ID 248 //
6127 /* 4404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6128 /* 4407 */ // MIs[0] root
6129 /* 4407 */ // No operand predicates
6130 /* 4407 */ // MIs[0] out2
6131 /* 4407 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6132 /* 4411 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6133 /* 4415 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6134 /* 4415 */ // No operand predicates
6135 /* 4415 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6136 /* 4415 */ // No operand predicates
6137 /* 4415 */ // MIs[0] out1
6138 /* 4415 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6139 /* 4419 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6140 /* 4423 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6141 /* 4423 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6142 /* 4428 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6143 /* 4428 */ // No operand predicates
6144 /* 4428 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6145 /* 4428 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6146 /* 4433 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6147 /* 4438 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6148 /* 4440 */ // Combiner Rule #182: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6149 /* 4440 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6150 /* 4445 */ GIR_EraseRootFromParent_Done,
6151 /* 4446 */ // Label 231: @4446
6152 /* 4446 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4496), // Rule ID 393 //
6153 /* 4451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6154 /* 4454 */ // MIs[0] root
6155 /* 4454 */ // No operand predicates
6156 /* 4454 */ // MIs[0] xor
6157 /* 4454 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6158 /* 4458 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6159 /* 4462 */ // MIs[1] x
6160 /* 4462 */ // No operand predicates
6161 /* 4462 */ // MIs[1] y
6162 /* 4462 */ // No operand predicates
6163 /* 4462 */ // MIs[0] and
6164 /* 4462 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6165 /* 4466 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_AND),
6166 /* 4470 */ // MIs[2] x
6167 /* 4470 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6168 /* 4475 */ // MIs[2] y
6169 /* 4475 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6170 /* 4480 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6171 /* 4482 */ // Combiner Rule #229: or_xor_and
6172 /* 4482 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6173 /* 4485 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6174 /* 4487 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6175 /* 4491 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6176 /* 4495 */ GIR_EraseRootFromParent_Done,
6177 /* 4496 */ // Label 232: @4496
6178 /* 4496 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4546), // Rule ID 392 //
6179 /* 4501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
6180 /* 4504 */ // MIs[0] root
6181 /* 4504 */ // No operand predicates
6182 /* 4504 */ // MIs[0] xor
6183 /* 4504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6184 /* 4508 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6185 /* 4512 */ // MIs[1] x
6186 /* 4512 */ // No operand predicates
6187 /* 4512 */ // MIs[1] y
6188 /* 4512 */ // No operand predicates
6189 /* 4512 */ // MIs[0] or
6190 /* 4512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6191 /* 4516 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_OR),
6192 /* 4520 */ // MIs[2] x
6193 /* 4520 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6194 /* 4525 */ // MIs[2] y
6195 /* 4525 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6196 /* 4530 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6197 /* 4532 */ // Combiner Rule #228: or_xor_or
6198 /* 4532 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6199 /* 4535 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6200 /* 4537 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6201 /* 4541 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6202 /* 4545 */ GIR_EraseRootFromParent_Done,
6203 /* 4546 */ // Label 233: @4546
6204 /* 4546 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4570), // Rule ID 121 //
6205 /* 4551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6206 /* 4554 */ // MIs[0] dst
6207 /* 4554 */ // No operand predicates
6208 /* 4554 */ // MIs[0] src
6209 /* 4554 */ // No operand predicates
6210 /* 4554 */ // MIs[0] src
6211 /* 4554 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6212 /* 4559 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6213 /* 4564 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
6214 /* 4564 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6215 /* 4569 */ GIR_EraseRootFromParent_Done,
6216 /* 4570 */ // Label 234: @4570
6217 /* 4570 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4604), // Rule ID 442 //
6218 /* 4575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6219 /* 4578 */ // MIs[0] dst
6220 /* 4578 */ // No operand predicates
6221 /* 4578 */ // MIs[0] x
6222 /* 4578 */ // No operand predicates
6223 /* 4578 */ // MIs[0] __combine_or_of_and_match_0.and
6224 /* 4578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6225 /* 4582 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6226 /* 4586 */ // MIs[1] x
6227 /* 4586 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
6228 /* 4591 */ // MIs[1] y
6229 /* 4591 */ // No operand predicates
6230 /* 4591 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6231 /* 4596 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6232 /* 4598 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
6233 /* 4598 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6234 /* 4603 */ GIR_EraseRootFromParent_Done,
6235 /* 4604 */ // Label 235: @4604
6236 /* 4604 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4638), // Rule ID 443 //
6237 /* 4609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6238 /* 4612 */ // MIs[0] dst
6239 /* 4612 */ // No operand predicates
6240 /* 4612 */ // MIs[0] x
6241 /* 4612 */ // No operand predicates
6242 /* 4612 */ // MIs[0] __combine_or_of_and_match_0.and
6243 /* 4612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6244 /* 4616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6245 /* 4620 */ // MIs[1] y
6246 /* 4620 */ // No operand predicates
6247 /* 4620 */ // MIs[1] x
6248 /* 4620 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6249 /* 4625 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6250 /* 4630 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6251 /* 4632 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
6252 /* 4632 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6253 /* 4637 */ GIR_EraseRootFromParent_Done,
6254 /* 4638 */ // Label 236: @4638
6255 /* 4638 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4661), // Rule ID 112 //
6256 /* 4643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6257 /* 4646 */ // MIs[0] dst
6258 /* 4646 */ // No operand predicates
6259 /* 4646 */ // MIs[0] lhs
6260 /* 4646 */ // No operand predicates
6261 /* 4646 */ // MIs[0] Operand 2
6262 /* 4646 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6263 /* 4650 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6264 /* 4655 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
6265 /* 4655 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6266 /* 4660 */ GIR_EraseRootFromParent_Done,
6267 /* 4661 */ // Label 237: @4661
6268 /* 4661 */ GIM_Reject,
6269 /* 4662 */ // Label 10: @4662
6270 /* 4662 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4673), // Rule ID 102 //
6271 /* 4667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
6272 /* 4670 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_XOR'
6273 /* 4670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
6274 /* 4673 */ // Label 238: @4673
6275 /* 4673 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4684), // Rule ID 155 //
6276 /* 4678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6277 /* 4681 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
6278 /* 4681 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6279 /* 4684 */ // Label 239: @4684
6280 /* 4684 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4695), // Rule ID 191 //
6281 /* 4689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
6282 /* 4692 */ // Combiner Rule #147: not_cmp_fold; wip_match_opcode 'G_XOR'
6283 /* 4692 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6284 /* 4695 */ // Label 240: @4695
6285 /* 4695 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4706), // Rule ID 223 //
6286 /* 4700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6287 /* 4703 */ // Combiner Rule #171: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
6288 /* 4703 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
6289 /* 4706 */ // Label 241: @4706
6290 /* 4706 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4717), // Rule ID 269 //
6291 /* 4711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6292 /* 4714 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_XOR'
6293 /* 4714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6294 /* 4717 */ // Label 242: @4717
6295 /* 4717 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4728), // Rule ID 325 //
6296 /* 4722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6297 /* 4725 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_XOR'
6298 /* 4725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6299 /* 4728 */ // Label 243: @4728
6300 /* 4728 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4739), // Rule ID 361 //
6301 /* 4733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
6302 /* 4736 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
6303 /* 4736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
6304 /* 4739 */ // Label 244: @4739
6305 /* 4739 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4750), // Rule ID 431 //
6306 /* 4744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
6307 /* 4747 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_XOR'
6308 /* 4747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
6309 /* 4750 */ // Label 245: @4750
6310 /* 4750 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4810), // Rule ID 13 //
6311 /* 4755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6312 /* 4758 */ // MIs[0] root
6313 /* 4758 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6314 /* 4762 */ // MIs[0] add
6315 /* 4762 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6316 /* 4766 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6317 /* 4770 */ // MIs[1] A
6318 /* 4770 */ // No operand predicates
6319 /* 4770 */ // MIs[1] Operand 2
6320 /* 4770 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
6321 /* 4774 */ // MIs[0] Operand 2
6322 /* 4774 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6323 /* 4778 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
6324 /* 4782 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6325 /* 4784 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6326 /* 4787 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6327 /* 4797 */ // Combiner Rule #13: NotAPlusNegOne
6328 /* 4797 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6329 /* 4800 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6330 /* 4802 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6331 /* 4805 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
6332 /* 4809 */ GIR_EraseRootFromParent_Done,
6333 /* 4810 */ // Label 246: @4810
6334 /* 4810 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4849), // Rule ID 123 //
6335 /* 4815 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
6336 /* 4818 */ // MIs[0] dst
6337 /* 4818 */ // No operand predicates
6338 /* 4818 */ // MIs[0] x
6339 /* 4818 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
6340 /* 4822 */ // MIs[0] x
6341 /* 4822 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6342 /* 4827 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6343 /* 4830 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6344 /* 4840 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
6345 /* 4840 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6346 /* 4843 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6347 /* 4845 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6348 /* 4848 */ GIR_EraseRootFromParent_Done,
6349 /* 4849 */ // Label 247: @4849
6350 /* 4849 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4872), // Rule ID 113 //
6351 /* 4854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6352 /* 4857 */ // MIs[0] dst
6353 /* 4857 */ // No operand predicates
6354 /* 4857 */ // MIs[0] lhs
6355 /* 4857 */ // No operand predicates
6356 /* 4857 */ // MIs[0] Operand 2
6357 /* 4857 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6358 /* 4861 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6359 /* 4866 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
6360 /* 4866 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6361 /* 4871 */ GIR_EraseRootFromParent_Done,
6362 /* 4872 */ // Label 248: @4872
6363 /* 4872 */ GIM_Reject,
6364 /* 4873 */ // Label 11: @4873
6365 /* 4873 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4884), // Rule ID 151 //
6366 /* 4878 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
6367 /* 4881 */ // Combiner Rule #111: extend_through_phis; wip_match_opcode 'G_PHI'
6368 /* 4881 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
6369 /* 4884 */ // Label 249: @4884
6370 /* 4884 */ GIM_Reject,
6371 /* 4885 */ // Label 12: @4885
6372 /* 4885 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4896), // Rule ID 403 //
6373 /* 4890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6374 /* 4893 */ // Combiner Rule #239: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
6375 /* 4893 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
6376 /* 4896 */ // Label 250: @4896
6377 /* 4896 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4907), // Rule ID 404 //
6378 /* 4901 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6379 /* 4904 */ // Combiner Rule #240: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
6380 /* 4904 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
6381 /* 4907 */ // Label 251: @4907
6382 /* 4907 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4918), // Rule ID 406 //
6383 /* 4912 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
6384 /* 4915 */ // Combiner Rule #242: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
6385 /* 4915 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
6386 /* 4918 */ // Label 252: @4918
6387 /* 4918 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4929), // Rule ID 407 //
6388 /* 4923 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
6389 /* 4926 */ // Combiner Rule #243: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
6390 /* 4926 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
6391 /* 4929 */ // Label 253: @4929
6392 /* 4929 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4940), // Rule ID 408 //
6393 /* 4934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
6394 /* 4937 */ // Combiner Rule #244: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
6395 /* 4937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6396 /* 4940 */ // Label 254: @4940
6397 /* 4940 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4951), // Rule ID 409 //
6398 /* 4945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
6399 /* 4948 */ // Combiner Rule #245: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
6400 /* 4948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
6401 /* 4951 */ // Label 255: @4951
6402 /* 4951 */ GIM_Reject,
6403 /* 4952 */ // Label 13: @4952
6404 /* 4952 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4966), // Rule ID 405 //
6405 /* 4957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
6406 /* 4960 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6407 /* 4963 */ // MIs[0] dst
6408 /* 4963 */ // No operand predicates
6409 /* 4963 */ // MIs[0] merge_srcs
6410 /* 4963 */ // No operand predicates
6411 /* 4963 */ // Combiner Rule #241: merge_unmerge
6412 /* 4963 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
6413 /* 4966 */ // Label 256: @4966
6414 /* 4966 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(5028),
6415 /* 4971 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
6416 /* 4974 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4995), // Rule ID 410 //
6417 /* 4979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
6418 /* 4982 */ // MIs[0] root
6419 /* 4982 */ // No operand predicates
6420 /* 4982 */ // MIs[0] x
6421 /* 4982 */ // No operand predicates
6422 /* 4982 */ // MIs[0] undef
6423 /* 4982 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6424 /* 4986 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6425 /* 4990 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6426 /* 4992 */ // Combiner Rule #246: merge_of_x_and_undef
6427 /* 4992 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6428 /* 4995 */ // Label 258: @4995
6429 /* 4995 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(5027), // Rule ID 411 //
6430 /* 5000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
6431 /* 5003 */ // MIs[0] root
6432 /* 5003 */ // No operand predicates
6433 /* 5003 */ // MIs[0] x
6434 /* 5003 */ // No operand predicates
6435 /* 5003 */ // MIs[0] zero
6436 /* 5003 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6437 /* 5007 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6438 /* 5011 */ // MIs[1] Operand 1
6439 /* 5011 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6440 /* 5022 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6441 /* 5024 */ // Combiner Rule #247: merge_of_x_and_zero
6442 /* 5024 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6443 /* 5027 */ // Label 259: @5027
6444 /* 5027 */ GIM_Reject,
6445 /* 5028 */ // Label 257: @5028
6446 /* 5028 */ GIM_Reject,
6447 /* 5029 */ // Label 14: @5029
6448 /* 5029 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(5040), // Rule ID 75 //
6449 /* 5034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
6450 /* 5037 */ // Combiner Rule #73: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
6451 /* 5037 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
6452 /* 5040 */ // Label 260: @5040
6453 /* 5040 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(5051), // Rule ID 104 //
6454 /* 5045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6455 /* 5048 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
6456 /* 5048 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
6457 /* 5051 */ // Label 261: @5051
6458 /* 5051 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(5062), // Rule ID 142 //
6459 /* 5056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6460 /* 5059 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
6461 /* 5059 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6462 /* 5062 */ // Label 262: @5062
6463 /* 5062 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(5093),
6464 /* 5067 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6465 /* 5070 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5081), // Rule ID 402 //
6466 /* 5075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6467 /* 5078 */ // MIs[0] dst
6468 /* 5078 */ // No operand predicates
6469 /* 5078 */ // MIs[0] unused
6470 /* 5078 */ // No operand predicates
6471 /* 5078 */ // Combiner Rule #238: combine_use_vector_truncate
6472 /* 5078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
6473 /* 5081 */ // Label 264: @5081
6474 /* 5081 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5092), // Rule ID 412 //
6475 /* 5086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
6476 /* 5089 */ // MIs[0] dst
6477 /* 5089 */ // No operand predicates
6478 /* 5089 */ // MIs[0] unused
6479 /* 5089 */ // No operand predicates
6480 /* 5089 */ // Combiner Rule #248: combine_build_unmerge
6481 /* 5089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6482 /* 5092 */ // Label 265: @5092
6483 /* 5092 */ GIM_Reject,
6484 /* 5093 */ // Label 263: @5093
6485 /* 5093 */ GIM_Reject,
6486 /* 5094 */ // Label 15: @5094
6487 /* 5094 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5105), // Rule ID 141 //
6488 /* 5099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6489 /* 5102 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
6490 /* 5102 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6491 /* 5105 */ // Label 266: @5105
6492 /* 5105 */ GIM_Reject,
6493 /* 5106 */ // Label 16: @5106
6494 /* 5106 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5117), // Rule ID 395 //
6495 /* 5111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6496 /* 5114 */ // Combiner Rule #231: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
6497 /* 5114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6498 /* 5117 */ // Label 267: @5117
6499 /* 5117 */ GIM_Reject,
6500 /* 5118 */ // Label 17: @5118
6501 /* 5118 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5139), // Rule ID 134 //
6502 /* 5123 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
6503 /* 5126 */ // MIs[0] dst
6504 /* 5126 */ // No operand predicates
6505 /* 5126 */ // MIs[0] t
6506 /* 5126 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6507 /* 5130 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
6508 /* 5134 */ // MIs[1] ptr
6509 /* 5134 */ // No operand predicates
6510 /* 5134 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6511 /* 5136 */ // Combiner Rule #96: i2p_to_p2i
6512 /* 5136 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6513 /* 5139 */ // Label 268: @5139
6514 /* 5139 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5160), // Rule ID 96 //
6515 /* 5144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6516 /* 5147 */ // MIs[0] dst
6517 /* 5147 */ // No operand predicates
6518 /* 5147 */ // MIs[0] __unary_undef_to_undef_match_0.x
6519 /* 5147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6520 /* 5151 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6521 /* 5155 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6522 /* 5157 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
6523 /* 5157 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6524 /* 5160 */ // Label 269: @5160
6525 /* 5160 */ GIM_Reject,
6526 /* 5161 */ // Label 18: @5161
6527 /* 5161 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5172), // Rule ID 133 //
6528 /* 5166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6529 /* 5169 */ // Combiner Rule #95: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
6530 /* 5169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
6531 /* 5172 */ // Label 270: @5172
6532 /* 5172 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5193), // Rule ID 97 //
6533 /* 5177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6534 /* 5180 */ // MIs[0] dst
6535 /* 5180 */ // No operand predicates
6536 /* 5180 */ // MIs[0] __unary_undef_to_undef_match_0.x
6537 /* 5180 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6538 /* 5184 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6539 /* 5188 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6540 /* 5190 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
6541 /* 5190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6542 /* 5193 */ // Label 271: @5193
6543 /* 5193 */ GIM_Reject,
6544 /* 5194 */ // Label 19: @5194
6545 /* 5194 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5226), // Rule ID 146 //
6546 /* 5199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
6547 /* 5202 */ // MIs[0] dst
6548 /* 5202 */ // No operand predicates
6549 /* 5202 */ // MIs[0] src1
6550 /* 5202 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6551 /* 5206 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6552 /* 5210 */ // MIs[1] src0
6553 /* 5210 */ // No operand predicates
6554 /* 5210 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6555 /* 5214 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6556 /* 5216 */ // Combiner Rule #106: bitcast_bitcast_to_bitcast
6557 /* 5216 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
6558 /* 5219 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6559 /* 5221 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
6560 /* 5225 */ GIR_EraseRootFromParent_Done,
6561 /* 5226 */ // Label 272: @5226
6562 /* 5226 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5247), // Rule ID 145 //
6563 /* 5231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
6564 /* 5234 */ // MIs[0] dst
6565 /* 5234 */ // No operand predicates
6566 /* 5234 */ // MIs[0] src1
6567 /* 5234 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6568 /* 5238 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6569 /* 5242 */ // MIs[1] src0
6570 /* 5242 */ // No operand predicates
6571 /* 5242 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6572 /* 5244 */ // Combiner Rule #105: bitcast_bitcast_fold
6573 /* 5244 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
6574 /* 5247 */ // Label 273: @5247
6575 /* 5247 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5268), // Rule ID 94 //
6576 /* 5252 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6577 /* 5255 */ // MIs[0] dst
6578 /* 5255 */ // No operand predicates
6579 /* 5255 */ // MIs[0] __unary_undef_to_undef_match_0.x
6580 /* 5255 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6581 /* 5259 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6582 /* 5263 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6583 /* 5265 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
6584 /* 5265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6585 /* 5268 */ // Label 274: @5268
6586 /* 5268 */ GIM_Reject,
6587 /* 5269 */ // Label 20: @5269
6588 /* 5269 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5298), // Rule ID 24 //
6589 /* 5274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6590 /* 5277 */ // MIs[0] dst
6591 /* 5277 */ // No operand predicates
6592 /* 5277 */ // MIs[0] src
6593 /* 5277 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6594 /* 5281 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
6595 /* 5285 */ // MIs[1] __idempotent_prop_match_0.x
6596 /* 5285 */ // No operand predicates
6597 /* 5285 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6598 /* 5290 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6599 /* 5292 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
6600 /* 5292 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6601 /* 5297 */ GIR_EraseRootFromParent_Done,
6602 /* 5298 */ // Label 275: @5298
6603 /* 5298 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5321), // Rule ID 49 //
6604 /* 5303 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6605 /* 5306 */ // MIs[0] root
6606 /* 5306 */ // No operand predicates
6607 /* 5306 */ // MIs[0] src
6608 /* 5306 */ // No operand predicates
6609 /* 5306 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
6610 /* 5310 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6611 /* 5315 */ // Combiner Rule #47: freeze_of_non_undef_non_poison
6612 /* 5315 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6613 /* 5320 */ GIR_EraseRootFromParent_Done,
6614 /* 5321 */ // Label 276: @5321
6615 /* 5321 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5332), // Rule ID 50 //
6616 /* 5326 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6617 /* 5329 */ // MIs[0] dst
6618 /* 5329 */ // No operand predicates
6619 /* 5329 */ // MIs[0] src
6620 /* 5329 */ // No operand predicates
6621 /* 5329 */ // Combiner Rule #48: push_freeze_to_prevent_poison_from_propagating
6622 /* 5329 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
6623 /* 5332 */ // Label 277: @5332
6624 /* 5332 */ GIM_Reject,
6625 /* 5333 */ // Label 21: @5333
6626 /* 5333 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5354), // Rule ID 201 //
6627 /* 5338 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
6628 /* 5341 */ // MIs[0] dst
6629 /* 5341 */ // No operand predicates
6630 /* 5341 */ // MIs[0] src0
6631 /* 5341 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6632 /* 5345 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6633 /* 5349 */ // MIs[1] cst
6634 /* 5349 */ // No operand predicates
6635 /* 5349 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6636 /* 5351 */ // Combiner Rule #157: constant_fold_intrinsic_trunc
6637 /* 5351 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
6638 /* 5354 */ // Label 278: @5354
6639 /* 5354 */ GIM_Reject,
6640 /* 5355 */ // Label 22: @5355
6641 /* 5355 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5376), // Rule ID 202 //
6642 /* 5360 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6643 /* 5363 */ // MIs[0] dst
6644 /* 5363 */ // No operand predicates
6645 /* 5363 */ // MIs[0] src0
6646 /* 5363 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6647 /* 5367 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6648 /* 5371 */ // MIs[1] cst
6649 /* 5371 */ // No operand predicates
6650 /* 5371 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6651 /* 5373 */ // Combiner Rule #158: constant_fold_intrinsic_round
6652 /* 5373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
6653 /* 5376 */ // Label 279: @5376
6654 /* 5376 */ GIM_Reject,
6655 /* 5377 */ // Label 23: @5377
6656 /* 5377 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5398), // Rule ID 203 //
6657 /* 5382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
6658 /* 5385 */ // MIs[0] dst
6659 /* 5385 */ // No operand predicates
6660 /* 5385 */ // MIs[0] src0
6661 /* 5385 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6662 /* 5389 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6663 /* 5393 */ // MIs[1] cst
6664 /* 5393 */ // No operand predicates
6665 /* 5393 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6666 /* 5395 */ // Combiner Rule #159: constant_fold_intrinsic_roundeven
6667 /* 5395 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
6668 /* 5398 */ // Label 280: @5398
6669 /* 5398 */ GIM_Reject,
6670 /* 5399 */ // Label 24: @5399
6671 /* 5399 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5410), // Rule ID 76 //
6672 /* 5404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6673 /* 5407 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_LOAD'
6674 /* 5407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6675 /* 5410 */ // Label 281: @5410
6676 /* 5410 */ GIM_Reject,
6677 /* 5411 */ // Label 25: @5411
6678 /* 5411 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5422), // Rule ID 77 //
6679 /* 5416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6680 /* 5419 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_SEXTLOAD'
6681 /* 5419 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6682 /* 5422 */ // Label 282: @5422
6683 /* 5422 */ GIM_Reject,
6684 /* 5423 */ // Label 26: @5423
6685 /* 5423 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5434), // Rule ID 78 //
6686 /* 5428 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6687 /* 5431 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
6688 /* 5431 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6689 /* 5434 */ // Label 283: @5434
6690 /* 5434 */ GIM_Reject,
6691 /* 5435 */ // Label 27: @5435
6692 /* 5435 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5446), // Rule ID 106 //
6693 /* 5440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6694 /* 5443 */ // Combiner Rule #87: erase_undef_store; wip_match_opcode 'G_STORE'
6695 /* 5443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
6696 /* 5446 */ // Label 284: @5446
6697 /* 5446 */ GIM_Reject,
6698 /* 5447 */ // Label 28: @5447
6699 /* 5447 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5458), // Rule ID 135 //
6700 /* 5452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
6701 /* 5455 */ // Combiner Rule #97: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
6702 /* 5455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
6703 /* 5458 */ // Label 285: @5458
6704 /* 5458 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5469), // Rule ID 294 //
6705 /* 5463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6706 /* 5466 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
6707 /* 5466 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
6708 /* 5469 */ // Label 286: @5469
6709 /* 5469 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5490), // Rule ID 63 //
6710 /* 5474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6711 /* 5477 */ // MIs[0] root
6712 /* 5477 */ // No operand predicates
6713 /* 5477 */ // MIs[0] select
6714 /* 5477 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6715 /* 5481 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6716 /* 5485 */ // MIs[1] cond
6717 /* 5485 */ // No operand predicates
6718 /* 5485 */ // MIs[1] true
6719 /* 5485 */ // No operand predicates
6720 /* 5485 */ // MIs[1] false
6721 /* 5485 */ // No operand predicates
6722 /* 5485 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6723 /* 5487 */ // Combiner Rule #61: select_of_anyext
6724 /* 5487 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6725 /* 5490 */ // Label 287: @5490
6726 /* 5490 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5511), // Rule ID 58 //
6727 /* 5495 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6728 /* 5498 */ // MIs[0] root
6729 /* 5498 */ // No operand predicates
6730 /* 5498 */ // MIs[0] second
6731 /* 5498 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6732 /* 5502 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6733 /* 5506 */ // MIs[1] src
6734 /* 5506 */ // No operand predicates
6735 /* 5506 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6736 /* 5508 */ // Combiner Rule #56: anyext_of_anyext
6737 /* 5508 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6738 /* 5511 */ // Label 288: @5511
6739 /* 5511 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5532), // Rule ID 60 //
6740 /* 5516 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
6741 /* 5519 */ // MIs[0] root
6742 /* 5519 */ // No operand predicates
6743 /* 5519 */ // MIs[0] second
6744 /* 5519 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6745 /* 5523 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6746 /* 5527 */ // MIs[1] src
6747 /* 5527 */ // No operand predicates
6748 /* 5527 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6749 /* 5529 */ // Combiner Rule #58: anyext_of_sext
6750 /* 5529 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6751 /* 5532 */ // Label 289: @5532
6752 /* 5532 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5553), // Rule ID 59 //
6753 /* 5537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6754 /* 5540 */ // MIs[0] root
6755 /* 5540 */ // No operand predicates
6756 /* 5540 */ // MIs[0] second
6757 /* 5540 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6758 /* 5544 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6759 /* 5548 */ // MIs[1] src
6760 /* 5548 */ // No operand predicates
6761 /* 5548 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6762 /* 5550 */ // Combiner Rule #57: anyext_of_zext
6763 /* 5550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6764 /* 5553 */ // Label 290: @5553
6765 /* 5553 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5574), // Rule ID 95 //
6766 /* 5558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6767 /* 5561 */ // MIs[0] dst
6768 /* 5561 */ // No operand predicates
6769 /* 5561 */ // MIs[0] __unary_undef_to_undef_match_0.x
6770 /* 5561 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6771 /* 5565 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6772 /* 5569 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6773 /* 5571 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
6774 /* 5571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6775 /* 5574 */ // Label 291: @5574
6776 /* 5574 */ GIM_Reject,
6777 /* 5575 */ // Label 29: @5575
6778 /* 5575 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5586), // Rule ID 143 //
6779 /* 5580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
6780 /* 5583 */ // Combiner Rule #103: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
6781 /* 5583 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
6782 /* 5586 */ // Label 292: @5586
6783 /* 5586 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5597), // Rule ID 144 //
6784 /* 5591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
6785 /* 5594 */ // Combiner Rule #104: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
6786 /* 5594 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
6787 /* 5597 */ // Label 293: @5597
6788 /* 5597 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5608), // Rule ID 190 //
6789 /* 5602 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
6790 /* 5605 */ // Combiner Rule #146: trunc_shift; wip_match_opcode 'G_TRUNC'
6791 /* 5605 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
6792 /* 5608 */ // Label 294: @5608
6793 /* 5608 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5629), // Rule ID 64 //
6794 /* 5613 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
6795 /* 5616 */ // MIs[0] root
6796 /* 5616 */ // No operand predicates
6797 /* 5616 */ // MIs[0] select
6798 /* 5616 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6799 /* 5620 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6800 /* 5624 */ // MIs[1] cond
6801 /* 5624 */ // No operand predicates
6802 /* 5624 */ // MIs[1] true
6803 /* 5624 */ // No operand predicates
6804 /* 5624 */ // MIs[1] false
6805 /* 5624 */ // No operand predicates
6806 /* 5624 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6807 /* 5626 */ // Combiner Rule #62: select_of_truncate
6808 /* 5626 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6809 /* 5629 */ // Label 295: @5629
6810 /* 5629 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5658), // Rule ID 66 //
6811 /* 5634 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6812 /* 5637 */ // MIs[0] root
6813 /* 5637 */ // No operand predicates
6814 /* 5637 */ // MIs[0] binop
6815 /* 5637 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6816 /* 5641 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6817 /* 5645 */ // MIs[1] x
6818 /* 5645 */ // No operand predicates
6819 /* 5645 */ // MIs[1] const
6820 /* 5645 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6821 /* 5649 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6822 /* 5653 */ // MIs[2] imm
6823 /* 5653 */ // No operand predicates
6824 /* 5653 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6825 /* 5655 */ // Combiner Rule #64: narrow_binop_add
6826 /* 5655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6827 /* 5658 */ // Label 296: @5658
6828 /* 5658 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5687), // Rule ID 69 //
6829 /* 5663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6830 /* 5666 */ // MIs[0] root
6831 /* 5666 */ // No operand predicates
6832 /* 5666 */ // MIs[0] binop
6833 /* 5666 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6834 /* 5670 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6835 /* 5674 */ // MIs[1] x
6836 /* 5674 */ // No operand predicates
6837 /* 5674 */ // MIs[1] const
6838 /* 5674 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6839 /* 5678 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6840 /* 5682 */ // MIs[2] imm
6841 /* 5682 */ // No operand predicates
6842 /* 5682 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6843 /* 5684 */ // Combiner Rule #67: narrow_binop_and
6844 /* 5684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6845 /* 5687 */ // Label 297: @5687
6846 /* 5687 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5716), // Rule ID 68 //
6847 /* 5692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6848 /* 5695 */ // MIs[0] root
6849 /* 5695 */ // No operand predicates
6850 /* 5695 */ // MIs[0] binop
6851 /* 5695 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6852 /* 5699 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
6853 /* 5703 */ // MIs[1] x
6854 /* 5703 */ // No operand predicates
6855 /* 5703 */ // MIs[1] const
6856 /* 5703 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6857 /* 5707 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6858 /* 5711 */ // MIs[2] imm
6859 /* 5711 */ // No operand predicates
6860 /* 5711 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6861 /* 5713 */ // Combiner Rule #66: narrow_binop_mul
6862 /* 5713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6863 /* 5716 */ // Label 298: @5716
6864 /* 5716 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5745), // Rule ID 70 //
6865 /* 5721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
6866 /* 5724 */ // MIs[0] root
6867 /* 5724 */ // No operand predicates
6868 /* 5724 */ // MIs[0] binop
6869 /* 5724 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6870 /* 5728 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6871 /* 5732 */ // MIs[1] x
6872 /* 5732 */ // No operand predicates
6873 /* 5732 */ // MIs[1] const
6874 /* 5732 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6875 /* 5736 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6876 /* 5740 */ // MIs[2] imm
6877 /* 5740 */ // No operand predicates
6878 /* 5740 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6879 /* 5742 */ // Combiner Rule #68: narrow_binop_or
6880 /* 5742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6881 /* 5745 */ // Label 299: @5745
6882 /* 5745 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5774), // Rule ID 67 //
6883 /* 5750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6884 /* 5753 */ // MIs[0] root
6885 /* 5753 */ // No operand predicates
6886 /* 5753 */ // MIs[0] binop
6887 /* 5753 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6888 /* 5757 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6889 /* 5761 */ // MIs[1] x
6890 /* 5761 */ // No operand predicates
6891 /* 5761 */ // MIs[1] const
6892 /* 5761 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6893 /* 5765 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6894 /* 5769 */ // MIs[2] imm
6895 /* 5769 */ // No operand predicates
6896 /* 5769 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6897 /* 5771 */ // Combiner Rule #65: narrow_binop_sub
6898 /* 5771 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6899 /* 5774 */ // Label 300: @5774
6900 /* 5774 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5806), // Rule ID 419 //
6901 /* 5779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
6902 /* 5782 */ // MIs[0] dst
6903 /* 5782 */ // No operand predicates
6904 /* 5782 */ // MIs[0] min
6905 /* 5782 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6906 /* 5786 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6907 /* 5790 */ // MIs[1] x
6908 /* 5790 */ // No operand predicates
6909 /* 5790 */ // MIs[1] y
6910 /* 5790 */ // No operand predicates
6911 /* 5790 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
6912 /* 5794 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6913 /* 5796 */ // Combiner Rule #253: trunc_usatu
6914 /* 5796 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6915 /* 5799 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6916 /* 5801 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6917 /* 5805 */ GIR_EraseRootFromParent_Done,
6918 /* 5806 */ // Label 301: @5806
6919 /* 5806 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5835), // Rule ID 71 //
6920 /* 5811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
6921 /* 5814 */ // MIs[0] root
6922 /* 5814 */ // No operand predicates
6923 /* 5814 */ // MIs[0] binop
6924 /* 5814 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6925 /* 5818 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6926 /* 5822 */ // MIs[1] x
6927 /* 5822 */ // No operand predicates
6928 /* 5822 */ // MIs[1] const
6929 /* 5822 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6930 /* 5826 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6931 /* 5830 */ // MIs[2] imm
6932 /* 5830 */ // No operand predicates
6933 /* 5830 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6934 /* 5832 */ // Combiner Rule #69: narrow_binop_xor
6935 /* 5832 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6936 /* 5835 */ // Label 302: @5835
6937 /* 5835 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5856), // Rule ID 53 //
6938 /* 5840 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6939 /* 5843 */ // MIs[0] root
6940 /* 5843 */ // No operand predicates
6941 /* 5843 */ // MIs[0] ext
6942 /* 5843 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6943 /* 5847 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6944 /* 5851 */ // MIs[1] src
6945 /* 5851 */ // No operand predicates
6946 /* 5851 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6947 /* 5853 */ // Combiner Rule #51: truncate_of_anyext
6948 /* 5853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6949 /* 5856 */ // Label 303: @5856
6950 /* 5856 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5880), // Rule ID 65 //
6951 /* 5861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6952 /* 5864 */ // MIs[0] root
6953 /* 5864 */ // No operand predicates
6954 /* 5864 */ // MIs[0] bv
6955 /* 5864 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6956 /* 5868 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6957 /* 5872 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6958 /* 5875 */ // MIs[1] unused
6959 /* 5875 */ // No operand predicates
6960 /* 5875 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6961 /* 5877 */ // Combiner Rule #63: buildvector_of_truncate
6962 /* 5877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6963 /* 5880 */ // Label 304: @5880
6964 /* 5880 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5901), // Rule ID 52 //
6965 /* 5885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6966 /* 5888 */ // MIs[0] root
6967 /* 5888 */ // No operand predicates
6968 /* 5888 */ // MIs[0] ext
6969 /* 5888 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6970 /* 5892 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6971 /* 5896 */ // MIs[1] src
6972 /* 5896 */ // No operand predicates
6973 /* 5896 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6974 /* 5898 */ // Combiner Rule #50: truncate_of_sext
6975 /* 5898 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6976 /* 5901 */ // Label 305: @5901
6977 /* 5901 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5922), // Rule ID 51 //
6978 /* 5906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6979 /* 5909 */ // MIs[0] root
6980 /* 5909 */ // No operand predicates
6981 /* 5909 */ // MIs[0] ext
6982 /* 5909 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6983 /* 5913 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6984 /* 5917 */ // MIs[1] src
6985 /* 5917 */ // No operand predicates
6986 /* 5917 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6987 /* 5919 */ // Combiner Rule #49: truncate_of_zext
6988 /* 5919 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6989 /* 5922 */ // Label 306: @5922
6990 /* 5922 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5943), // Rule ID 93 //
6991 /* 5927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6992 /* 5930 */ // MIs[0] dst
6993 /* 5930 */ // No operand predicates
6994 /* 5930 */ // MIs[0] __unary_undef_to_undef_match_0.x
6995 /* 5930 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6996 /* 5934 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6997 /* 5938 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6998 /* 5940 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6999 /* 5940 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7000 /* 5943 */ // Label 307: @5943
7001 /* 5943 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5964), // Rule ID 72 //
7002 /* 5948 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
7003 /* 5951 */ // MIs[0] root
7004 /* 5951 */ // No operand predicates
7005 /* 5951 */ // MIs[0] int
7006 /* 5951 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7007 /* 5955 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7008 /* 5959 */ // MIs[1] imm
7009 /* 5959 */ // No operand predicates
7010 /* 5959 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7011 /* 5961 */ // Combiner Rule #70: integer_of_truncate
7012 /* 5961 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
7013 /* 5964 */ // Label 308: @5964
7014 /* 5964 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5975), // Rule ID 417 //
7015 /* 5969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
7016 /* 5972 */ // MIs[0] dst
7017 /* 5972 */ // No operand predicates
7018 /* 5972 */ // MIs[0] src
7019 /* 5972 */ // No operand predicates
7020 /* 5972 */ // Combiner Rule #251: trunc_ssats
7021 /* 5972 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7022 /* 5975 */ // Label 309: @5975
7023 /* 5975 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5986), // Rule ID 418 //
7024 /* 5980 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
7025 /* 5983 */ // MIs[0] dst
7026 /* 5983 */ // No operand predicates
7027 /* 5983 */ // MIs[0] src
7028 /* 5983 */ // No operand predicates
7029 /* 5983 */ // Combiner Rule #252: trunc_ssatu
7030 /* 5983 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
7031 /* 5986 */ // Label 310: @5986
7032 /* 5986 */ GIM_Reject,
7033 /* 5987 */ // Label 30: @5987
7034 /* 5987 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(6019), // Rule ID 420 //
7035 /* 5992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
7036 /* 5995 */ // MIs[0] dst
7037 /* 5995 */ // No operand predicates
7038 /* 5995 */ // MIs[0] src
7039 /* 5995 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7040 /* 5999 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
7041 /* 6003 */ // MIs[1] x
7042 /* 6003 */ // No operand predicates
7043 /* 6003 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
7044 /* 6007 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7045 /* 6009 */ // Combiner Rule #254: truncusatu_to_fptouisat
7046 /* 6009 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
7047 /* 6012 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7048 /* 6014 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7049 /* 6018 */ GIR_EraseRootFromParent_Done,
7050 /* 6019 */ // Label 311: @6019
7051 /* 6019 */ GIM_Reject,
7052 /* 6020 */ // Label 31: @6020
7053 /* 6020 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(6031), // Rule ID 293 //
7054 /* 6025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7055 /* 6028 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
7056 /* 6028 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7057 /* 6031 */ // Label 312: @6031
7058 /* 6031 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(6052), // Rule ID 57 //
7059 /* 6036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
7060 /* 6039 */ // MIs[0] root
7061 /* 6039 */ // No operand predicates
7062 /* 6039 */ // MIs[0] second
7063 /* 6039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7064 /* 6043 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7065 /* 6047 */ // MIs[1] src
7066 /* 6047 */ // No operand predicates
7067 /* 6047 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7068 /* 6049 */ // Combiner Rule #55: sext_of_anyext
7069 /* 6049 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7070 /* 6052 */ // Label 313: @6052
7071 /* 6052 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6073), // Rule ID 56 //
7072 /* 6057 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
7073 /* 6060 */ // MIs[0] root
7074 /* 6060 */ // No operand predicates
7075 /* 6060 */ // MIs[0] second
7076 /* 6060 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7077 /* 6064 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7078 /* 6068 */ // MIs[1] src
7079 /* 6068 */ // No operand predicates
7080 /* 6068 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7081 /* 6070 */ // Combiner Rule #54: sext_of_sext
7082 /* 6070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7083 /* 6073 */ // Label 314: @6073
7084 /* 6073 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6094), // Rule ID 396 //
7085 /* 6078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
7086 /* 6081 */ // MIs[0] root
7087 /* 6081 */ // No operand predicates
7088 /* 6081 */ // MIs[0] src
7089 /* 6081 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7090 /* 6085 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7091 /* 6089 */ // MIs[1] x
7092 /* 6089 */ // No operand predicates
7093 /* 6089 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7094 /* 6091 */ // Combiner Rule #232: sext_trunc
7095 /* 6091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7096 /* 6094 */ // Label 315: @6094
7097 /* 6094 */ GIM_Reject,
7098 /* 6095 */ // Label 32: @6095
7099 /* 6095 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6106), // Rule ID 171 //
7100 /* 6100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
7101 /* 6103 */ // Combiner Rule #127: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
7102 /* 6103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
7103 /* 6106 */ // Label 316: @6106
7104 /* 6106 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6117), // Rule ID 180 //
7105 /* 6111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
7106 /* 6114 */ // Combiner Rule #136: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
7107 /* 6114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
7108 /* 6117 */ // Label 317: @6117
7109 /* 6117 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6128), // Rule ID 254 //
7110 /* 6122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7111 /* 6125 */ // Combiner Rule #187: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
7112 /* 6125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
7113 /* 6128 */ // Label 318: @6128
7114 /* 6128 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6149), // Rule ID 61 //
7115 /* 6133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
7116 /* 6136 */ // MIs[0] dst
7117 /* 6136 */ // No operand predicates
7118 /* 6136 */ // MIs[0] x
7119 /* 6136 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7120 /* 6140 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
7121 /* 6144 */ // MIs[1] src
7122 /* 6144 */ // No operand predicates
7123 /* 6144 */ // MIs[1] a
7124 /* 6144 */ // No operand predicates
7125 /* 6144 */ // MIs[0] b
7126 /* 6144 */ // No operand predicates
7127 /* 6144 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7128 /* 6146 */ // Combiner Rule #59: sext_inreg_of_sext_inreg
7129 /* 6146 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7130 /* 6149 */ // Label 319: @6149
7131 /* 6149 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6189), // Rule ID 184 //
7132 /* 6154 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7133 /* 6157 */ // MIs[0] dst
7134 /* 6157 */ // No operand predicates
7135 /* 6157 */ // MIs[0] tmp4
7136 /* 6157 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7137 /* 6161 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7138 /* 6165 */ // MIs[1] tmp2
7139 /* 6165 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7140 /* 6169 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7141 /* 6173 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7142 /* 6176 */ // MIs[2] tmp3
7143 /* 6176 */ // No operand predicates
7144 /* 6176 */ // MIs[2] tmp1
7145 /* 6176 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7146 /* 6180 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7147 /* 6184 */ // MIs[3] src
7148 /* 6184 */ // No operand predicates
7149 /* 6184 */ // MIs[0] amt
7150 /* 6184 */ // No operand predicates
7151 /* 6184 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7152 /* 6186 */ // Combiner Rule #140: redundant_aext_unmerge_sext_inreg
7153 /* 6186 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7154 /* 6189 */ // Label 320: @6189
7155 /* 6189 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6221), // Rule ID 182 //
7156 /* 6194 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7157 /* 6197 */ // MIs[0] dst
7158 /* 6197 */ // No operand predicates
7159 /* 6197 */ // MIs[0] tmp
7160 /* 6197 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7161 /* 6201 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7162 /* 6205 */ // MIs[1] src
7163 /* 6205 */ // No operand predicates
7164 /* 6205 */ // MIs[0] amt
7165 /* 6205 */ // No operand predicates
7166 /* 6205 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7167 /* 6209 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7168 /* 6211 */ // Combiner Rule #138: redundant_aext_sext_inreg
7169 /* 6211 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7170 /* 6214 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7171 /* 6216 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7172 /* 6220 */ GIR_EraseRootFromParent_Done,
7173 /* 6221 */ // Label 321: @6221
7174 /* 6221 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6261), // Rule ID 183 //
7175 /* 6226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7176 /* 6229 */ // MIs[0] dst
7177 /* 6229 */ // No operand predicates
7178 /* 6229 */ // MIs[0] tmp4
7179 /* 6229 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7180 /* 6233 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7181 /* 6237 */ // MIs[1] tmp2
7182 /* 6237 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7183 /* 6241 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7184 /* 6245 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7185 /* 6248 */ // MIs[2] tmp3
7186 /* 6248 */ // No operand predicates
7187 /* 6248 */ // MIs[2] tmp1
7188 /* 6248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7189 /* 6252 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7190 /* 6256 */ // MIs[3] src
7191 /* 6256 */ // No operand predicates
7192 /* 6256 */ // MIs[0] amt
7193 /* 6256 */ // No operand predicates
7194 /* 6256 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7195 /* 6258 */ // Combiner Rule #139: redundant_zext_unmerge_sext_inreg
7196 /* 6258 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7197 /* 6261 */ // Label 322: @6261
7198 /* 6261 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6293), // Rule ID 181 //
7199 /* 6266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
7200 /* 6269 */ // MIs[0] dst
7201 /* 6269 */ // No operand predicates
7202 /* 6269 */ // MIs[0] tmp
7203 /* 6269 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7204 /* 6273 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7205 /* 6277 */ // MIs[1] src
7206 /* 6277 */ // No operand predicates
7207 /* 6277 */ // MIs[0] amt
7208 /* 6277 */ // No operand predicates
7209 /* 6277 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7210 /* 6281 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7211 /* 6283 */ // Combiner Rule #137: redundant_zext_sext_inreg
7212 /* 6283 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7213 /* 6286 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7214 /* 6288 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7215 /* 6292 */ GIR_EraseRootFromParent_Done,
7216 /* 6293 */ // Label 323: @6293
7217 /* 6293 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6304), // Rule ID 189 //
7218 /* 6298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
7219 /* 6301 */ // MIs[0] dst
7220 /* 6301 */ // No operand predicates
7221 /* 6301 */ // MIs[0] src
7222 /* 6301 */ // No operand predicates
7223 /* 6301 */ // MIs[0] imm
7224 /* 6301 */ // No operand predicates
7225 /* 6301 */ // Combiner Rule #145: sext_inreg_to_zext_inreg
7226 /* 6301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
7227 /* 6304 */ // Label 324: @6304
7228 /* 6304 */ GIM_Reject,
7229 /* 6305 */ // Label 33: @6305
7230 /* 6305 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6316), // Rule ID 188 //
7231 /* 6310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7232 /* 6313 */ // Combiner Rule #144: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
7233 /* 6313 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
7234 /* 6316 */ // Label 325: @6316
7235 /* 6316 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6327), // Rule ID 292 //
7236 /* 6321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7237 /* 6324 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
7238 /* 6324 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7239 /* 6327 */ // Label 326: @6327
7240 /* 6327 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6348), // Rule ID 62 //
7241 /* 6332 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
7242 /* 6335 */ // MIs[0] root
7243 /* 6335 */ // No operand predicates
7244 /* 6335 */ // MIs[0] select
7245 /* 6335 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7246 /* 6339 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7247 /* 6343 */ // MIs[1] cond
7248 /* 6343 */ // No operand predicates
7249 /* 6343 */ // MIs[1] true
7250 /* 6343 */ // No operand predicates
7251 /* 6343 */ // MIs[1] false
7252 /* 6343 */ // No operand predicates
7253 /* 6343 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7254 /* 6345 */ // Combiner Rule #60: select_of_zext
7255 /* 6345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7256 /* 6348 */ // Label 327: @6348
7257 /* 6348 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6369), // Rule ID 55 //
7258 /* 6353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
7259 /* 6356 */ // MIs[0] root
7260 /* 6356 */ // No operand predicates
7261 /* 6356 */ // MIs[0] second
7262 /* 6356 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7263 /* 6360 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7264 /* 6364 */ // MIs[1] src
7265 /* 6364 */ // No operand predicates
7266 /* 6364 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7267 /* 6366 */ // Combiner Rule #53: zext_of_anyext
7268 /* 6366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7269 /* 6369 */ // Label 328: @6369
7270 /* 6369 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6396), // Rule ID 397 //
7271 /* 6374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
7272 /* 6377 */ // MIs[0] root
7273 /* 6377 */ // No operand predicates
7274 /* 6377 */ // MIs[0] src
7275 /* 6377 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7276 /* 6381 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7277 /* 6385 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
7278 /* 6391 */ // MIs[1] x
7279 /* 6391 */ // No operand predicates
7280 /* 6391 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7281 /* 6393 */ // Combiner Rule #233: zext_trunc
7282 /* 6393 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7283 /* 6396 */ // Label 329: @6396
7284 /* 6396 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6417), // Rule ID 54 //
7285 /* 6401 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
7286 /* 6404 */ // MIs[0] root
7287 /* 6404 */ // No operand predicates
7288 /* 6404 */ // MIs[0] second
7289 /* 6404 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7290 /* 6408 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7291 /* 6412 */ // MIs[1] src
7292 /* 6412 */ // No operand predicates
7293 /* 6412 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7294 /* 6414 */ // Combiner Rule #52: zext_of_zext
7295 /* 6414 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7296 /* 6417 */ // Label 330: @6417
7297 /* 6417 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6434), // Rule ID 398 //
7298 /* 6422 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7299 /* 6425 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
7300 /* 6431 */ // MIs[0] root
7301 /* 6431 */ // No operand predicates
7302 /* 6431 */ // MIs[0] x
7303 /* 6431 */ // No operand predicates
7304 /* 6431 */ // Combiner Rule #234: nneg_zext
7305 /* 6431 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7306 /* 6434 */ // Label 331: @6434
7307 /* 6434 */ GIM_Reject,
7308 /* 6435 */ // Label 34: @6435
7309 /* 6435 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6446), // Rule ID 86 //
7310 /* 6440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7311 /* 6443 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
7312 /* 6443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7313 /* 6446 */ // Label 332: @6446
7314 /* 6446 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6457), // Rule ID 89 //
7315 /* 6451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7316 /* 6454 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
7317 /* 6454 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7318 /* 6457 */ // Label 333: @6457
7319 /* 6457 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6468), // Rule ID 225 //
7320 /* 6462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7321 /* 6465 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_SHL'
7322 /* 6465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7323 /* 6468 */ // Label 334: @6468
7324 /* 6468 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6479), // Rule ID 230 //
7325 /* 6473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7326 /* 6476 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
7327 /* 6476 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7328 /* 6479 */ // Label 335: @6479
7329 /* 6479 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6490), // Rule ID 253 //
7330 /* 6484 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7331 /* 6487 */ // Combiner Rule #186: commute_shift; wip_match_opcode 'G_SHL'
7332 /* 6487 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
7333 /* 6490 */ // Label 336: @6490
7334 /* 6490 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6501), // Rule ID 267 //
7335 /* 6495 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7336 /* 6498 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SHL'
7337 /* 6498 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7338 /* 6501 */ // Label 337: @6501
7339 /* 6501 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6512), // Rule ID 332 //
7340 /* 6506 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7341 /* 6509 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SHL'
7342 /* 6509 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7343 /* 6512 */ // Label 338: @6512
7344 /* 6512 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6547), // Rule ID 47 //
7345 /* 6517 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
7346 /* 6520 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
7347 /* 6526 */ // MIs[0] root
7348 /* 6526 */ // No operand predicates
7349 /* 6526 */ // MIs[0] left
7350 /* 6526 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7351 /* 6530 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
7352 /* 6534 */ // MIs[1] imm
7353 /* 6534 */ // No operand predicates
7354 /* 6534 */ // MIs[0] x
7355 /* 6534 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7356 /* 6538 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7357 /* 6542 */ // MIs[2] imm1
7358 /* 6542 */ // No operand predicates
7359 /* 6542 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7360 /* 6544 */ // Combiner Rule #45: shl_of_vscale
7361 /* 6544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
7362 /* 6547 */ // Label 339: @6547
7363 /* 6547 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6587), // Rule ID 124 //
7364 /* 6552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7365 /* 6555 */ // MIs[0] dst
7366 /* 6555 */ // No operand predicates
7367 /* 6555 */ // MIs[0] zero
7368 /* 6555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7369 /* 6559 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7370 /* 6563 */ // MIs[1] Operand 1
7371 /* 6563 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7372 /* 6574 */ // MIs[0] rhs
7373 /* 6574 */ // No operand predicates
7374 /* 6574 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7375 /* 6579 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7376 /* 6581 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
7377 /* 6581 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7378 /* 6586 */ GIR_EraseRootFromParent_Done,
7379 /* 6587 */ // Label 340: @6587
7380 /* 6587 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6610), // Rule ID 114 //
7381 /* 6592 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7382 /* 6595 */ // MIs[0] dst
7383 /* 6595 */ // No operand predicates
7384 /* 6595 */ // MIs[0] lhs
7385 /* 6595 */ // No operand predicates
7386 /* 6595 */ // MIs[0] Operand 2
7387 /* 6595 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7388 /* 6599 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7389 /* 6604 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
7390 /* 6604 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7391 /* 6609 */ GIR_EraseRootFromParent_Done,
7392 /* 6610 */ // Label 341: @6610
7393 /* 6610 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6621), // Rule ID 156 //
7394 /* 6615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7395 /* 6618 */ // MIs[0] root
7396 /* 6618 */ // No operand predicates
7397 /* 6618 */ // MIs[0] mi.shifted
7398 /* 6618 */ // No operand predicates
7399 /* 6618 */ // MIs[0] mi.amt
7400 /* 6618 */ // No operand predicates
7401 /* 6618 */ // Combiner Rule #114: shifts_too_big @ [mi[0]]
7402 /* 6618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7403 /* 6621 */ // Label 342: @6621
7404 /* 6621 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6632), // Rule ID 172 //
7405 /* 6626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
7406 /* 6629 */ // MIs[0] dst
7407 /* 6629 */ // No operand predicates
7408 /* 6629 */ // MIs[0] src0
7409 /* 6629 */ // No operand predicates
7410 /* 6629 */ // MIs[0] src1
7411 /* 6629 */ // No operand predicates
7412 /* 6629 */ // Combiner Rule #128: reduce_shl_of_extend
7413 /* 6629 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
7414 /* 6632 */ // Label 343: @6632
7415 /* 6632 */ GIM_Reject,
7416 /* 6633 */ // Label 35: @6633
7417 /* 6633 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6644), // Rule ID 91 //
7418 /* 6638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7419 /* 6641 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
7420 /* 6641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7421 /* 6644 */ // Label 344: @6644
7422 /* 6644 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6655), // Rule ID 227 //
7423 /* 6649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7424 /* 6652 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_LSHR'
7425 /* 6652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7426 /* 6655 */ // Label 345: @6655
7427 /* 6655 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6666), // Rule ID 232 //
7428 /* 6660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7429 /* 6663 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
7430 /* 6663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7431 /* 6666 */ // Label 346: @6666
7432 /* 6666 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6677), // Rule ID 257 //
7433 /* 6671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7434 /* 6674 */ // Combiner Rule #189: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
7435 /* 6674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7436 /* 6677 */ // Label 347: @6677
7437 /* 6677 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6688), // Rule ID 259 //
7438 /* 6682 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7439 /* 6685 */ // Combiner Rule #190: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
7440 /* 6685 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7441 /* 6688 */ // Label 348: @6688
7442 /* 6688 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6699), // Rule ID 264 //
7443 /* 6693 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7444 /* 6696 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_LSHR'
7445 /* 6696 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7446 /* 6699 */ // Label 349: @6699
7447 /* 6699 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6710), // Rule ID 330 //
7448 /* 6704 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7449 /* 6707 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_LSHR'
7450 /* 6707 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7451 /* 6710 */ // Label 350: @6710
7452 /* 6710 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6799), // Rule ID 438 //
7453 /* 6715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
7454 /* 6718 */ // MIs[0] dst
7455 /* 6718 */ // No operand predicates
7456 /* 6718 */ // MIs[0] sum
7457 /* 6718 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7458 /* 6722 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7459 /* 6726 */ // MIs[1] inner
7460 /* 6726 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7461 /* 6730 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7462 /* 6734 */ // MIs[2] ext1
7463 /* 6734 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7464 /* 6738 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7465 /* 6742 */ // MIs[3] x
7466 /* 6742 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7467 /* 6746 */ // MIs[2] ext2
7468 /* 6746 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7469 /* 6750 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
7470 /* 6754 */ // MIs[4] y
7471 /* 6754 */ // No operand predicates
7472 /* 6754 */ // MIs[1] Operand 2
7473 /* 6754 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7474 /* 6758 */ // MIs[0] Operand 2
7475 /* 6758 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7476 /* 6762 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
7477 /* 6766 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7478 /* 6768 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7479 /* 6771 */ // Combiner Rule #269: avgceil_u_match
7480 /* 6771 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
7481 /* 6774 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7482 /* 6779 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7483 /* 6783 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7484 /* 6787 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7485 /* 6791 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7486 /* 6795 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7487 /* 6798 */ GIR_EraseRootFromParent_Done,
7488 /* 6799 */ // Label 351: @6799
7489 /* 6799 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6876), // Rule ID 436 //
7490 /* 6804 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
7491 /* 6807 */ // MIs[0] dst
7492 /* 6807 */ // No operand predicates
7493 /* 6807 */ // MIs[0] sum
7494 /* 6807 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7495 /* 6811 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7496 /* 6815 */ // MIs[1] ext1
7497 /* 6815 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7498 /* 6819 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
7499 /* 6823 */ // MIs[2] x
7500 /* 6823 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7501 /* 6827 */ // MIs[1] ext2
7502 /* 6827 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7503 /* 6831 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7504 /* 6835 */ // MIs[3] y
7505 /* 6835 */ // No operand predicates
7506 /* 6835 */ // MIs[0] Operand 2
7507 /* 6835 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7508 /* 6839 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
7509 /* 6843 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7510 /* 6845 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7511 /* 6848 */ // Combiner Rule #267: avgfloor_u_match
7512 /* 6848 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
7513 /* 6851 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7514 /* 6856 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7515 /* 6860 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7516 /* 6864 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7517 /* 6868 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7518 /* 6872 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7519 /* 6875 */ GIR_EraseRootFromParent_Done,
7520 /* 6876 */ // Label 352: @6876
7521 /* 6876 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6905), // Rule ID 421 //
7522 /* 6881 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
7523 /* 6884 */ // MIs[0] dst
7524 /* 6884 */ // No operand predicates
7525 /* 6884 */ // MIs[0] d2
7526 /* 6884 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7527 /* 6888 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7528 /* 6892 */ // MIs[1] d1
7529 /* 6892 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7530 /* 6896 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
7531 /* 6900 */ // MIs[2] x
7532 /* 6900 */ // No operand predicates
7533 /* 6900 */ // MIs[2] y
7534 /* 6900 */ // No operand predicates
7535 /* 6900 */ // MIs[0] z
7536 /* 6900 */ // No operand predicates
7537 /* 6900 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7538 /* 6902 */ // Combiner Rule #255: lshr_of_trunc_of_lshr
7539 /* 6902 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
7540 /* 6905 */ // Label 353: @6905
7541 /* 6905 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6945), // Rule ID 125 //
7542 /* 6910 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7543 /* 6913 */ // MIs[0] dst
7544 /* 6913 */ // No operand predicates
7545 /* 6913 */ // MIs[0] zero
7546 /* 6913 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7547 /* 6917 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7548 /* 6921 */ // MIs[1] Operand 1
7549 /* 6921 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7550 /* 6932 */ // MIs[0] rhs
7551 /* 6932 */ // No operand predicates
7552 /* 6932 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7553 /* 6937 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7554 /* 6939 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
7555 /* 6939 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7556 /* 6944 */ GIR_EraseRootFromParent_Done,
7557 /* 6945 */ // Label 354: @6945
7558 /* 6945 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6968), // Rule ID 116 //
7559 /* 6950 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7560 /* 6953 */ // MIs[0] dst
7561 /* 6953 */ // No operand predicates
7562 /* 6953 */ // MIs[0] lhs
7563 /* 6953 */ // No operand predicates
7564 /* 6953 */ // MIs[0] Operand 2
7565 /* 6953 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7566 /* 6957 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7567 /* 6962 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
7568 /* 6962 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7569 /* 6967 */ GIR_EraseRootFromParent_Done,
7570 /* 6968 */ // Label 355: @6968
7571 /* 6968 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6979), // Rule ID 158 //
7572 /* 6973 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7573 /* 6976 */ // MIs[0] root
7574 /* 6976 */ // No operand predicates
7575 /* 6976 */ // MIs[0] mi.shifted
7576 /* 6976 */ // No operand predicates
7577 /* 6976 */ // MIs[0] mi.amt
7578 /* 6976 */ // No operand predicates
7579 /* 6976 */ // Combiner Rule #114: shifts_too_big @ [mi[2]]
7580 /* 6976 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7581 /* 6979 */ // Label 356: @6979
7582 /* 6979 */ GIM_Reject,
7583 /* 6980 */ // Label 36: @6980
7584 /* 6980 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6991), // Rule ID 90 //
7585 /* 6985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7586 /* 6988 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
7587 /* 6988 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7588 /* 6991 */ // Label 357: @6991
7589 /* 6991 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(7002), // Rule ID 169 //
7590 /* 6996 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
7591 /* 6999 */ // Combiner Rule #125: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
7592 /* 6999 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
7593 /* 7002 */ // Label 358: @7002
7594 /* 7002 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(7013), // Rule ID 226 //
7595 /* 7007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7596 /* 7010 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_ASHR'
7597 /* 7010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7598 /* 7013 */ // Label 359: @7013
7599 /* 7013 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(7024), // Rule ID 231 //
7600 /* 7018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7601 /* 7021 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
7602 /* 7021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7603 /* 7024 */ // Label 360: @7024
7604 /* 7024 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7035), // Rule ID 256 //
7605 /* 7029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7606 /* 7032 */ // Combiner Rule #189: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
7607 /* 7032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7608 /* 7035 */ // Label 361: @7035
7609 /* 7035 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7046), // Rule ID 258 //
7610 /* 7040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7611 /* 7043 */ // Combiner Rule #190: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
7612 /* 7043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7613 /* 7046 */ // Label 362: @7046
7614 /* 7046 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7057), // Rule ID 263 //
7615 /* 7051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7616 /* 7054 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_ASHR'
7617 /* 7054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7618 /* 7057 */ // Label 363: @7057
7619 /* 7057 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7068), // Rule ID 331 //
7620 /* 7062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7621 /* 7065 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_ASHR'
7622 /* 7065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7623 /* 7068 */ // Label 364: @7068
7624 /* 7068 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7157), // Rule ID 439 //
7625 /* 7073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule270Enabled),
7626 /* 7076 */ // MIs[0] dst
7627 /* 7076 */ // No operand predicates
7628 /* 7076 */ // MIs[0] sum
7629 /* 7076 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7630 /* 7080 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7631 /* 7084 */ // MIs[1] inner
7632 /* 7084 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7633 /* 7088 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7634 /* 7092 */ // MIs[2] ext1
7635 /* 7092 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7636 /* 7096 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
7637 /* 7100 */ // MIs[3] x
7638 /* 7100 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7639 /* 7104 */ // MIs[2] ext2
7640 /* 7104 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7641 /* 7108 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
7642 /* 7112 */ // MIs[4] y
7643 /* 7112 */ // No operand predicates
7644 /* 7112 */ // MIs[1] Operand 2
7645 /* 7112 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7646 /* 7116 */ // MIs[0] Operand 2
7647 /* 7116 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7648 /* 7120 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
7649 /* 7124 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7650 /* 7126 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7651 /* 7129 */ // Combiner Rule #270: avgceil_s_match
7652 /* 7129 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
7653 /* 7132 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7654 /* 7137 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7655 /* 7141 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7656 /* 7145 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7657 /* 7149 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7658 /* 7153 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7659 /* 7156 */ GIR_EraseRootFromParent_Done,
7660 /* 7157 */ // Label 365: @7157
7661 /* 7157 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7234), // Rule ID 437 //
7662 /* 7162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule268Enabled),
7663 /* 7165 */ // MIs[0] dst
7664 /* 7165 */ // No operand predicates
7665 /* 7165 */ // MIs[0] sum
7666 /* 7165 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7667 /* 7169 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7668 /* 7173 */ // MIs[1] ext1
7669 /* 7173 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7670 /* 7177 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
7671 /* 7181 */ // MIs[2] x
7672 /* 7181 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7673 /* 7185 */ // MIs[1] ext2
7674 /* 7185 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7675 /* 7189 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
7676 /* 7193 */ // MIs[3] y
7677 /* 7193 */ // No operand predicates
7678 /* 7193 */ // MIs[0] Operand 2
7679 /* 7193 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7680 /* 7197 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
7681 /* 7201 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7682 /* 7203 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7683 /* 7206 */ // Combiner Rule #268: avgfloor_s_match
7684 /* 7206 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
7685 /* 7209 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7686 /* 7214 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7687 /* 7218 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7688 /* 7222 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7689 /* 7226 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7690 /* 7230 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7691 /* 7233 */ GIR_EraseRootFromParent_Done,
7692 /* 7234 */ // Label 366: @7234
7693 /* 7234 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7274), // Rule ID 126 //
7694 /* 7239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7695 /* 7242 */ // MIs[0] dst
7696 /* 7242 */ // No operand predicates
7697 /* 7242 */ // MIs[0] zero
7698 /* 7242 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7699 /* 7246 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7700 /* 7250 */ // MIs[1] Operand 1
7701 /* 7250 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7702 /* 7261 */ // MIs[0] rhs
7703 /* 7261 */ // No operand predicates
7704 /* 7261 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7705 /* 7266 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7706 /* 7268 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
7707 /* 7268 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7708 /* 7273 */ GIR_EraseRootFromParent_Done,
7709 /* 7274 */ // Label 367: @7274
7710 /* 7274 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7297), // Rule ID 115 //
7711 /* 7279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7712 /* 7282 */ // MIs[0] dst
7713 /* 7282 */ // No operand predicates
7714 /* 7282 */ // MIs[0] lhs
7715 /* 7282 */ // No operand predicates
7716 /* 7282 */ // MIs[0] Operand 2
7717 /* 7282 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7718 /* 7286 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7719 /* 7291 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
7720 /* 7291 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7721 /* 7296 */ GIR_EraseRootFromParent_Done,
7722 /* 7297 */ // Label 368: @7297
7723 /* 7297 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7308), // Rule ID 157 //
7724 /* 7302 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7725 /* 7305 */ // MIs[0] root
7726 /* 7305 */ // No operand predicates
7727 /* 7305 */ // MIs[0] mi.shifted
7728 /* 7305 */ // No operand predicates
7729 /* 7305 */ // MIs[0] mi.amt
7730 /* 7305 */ // No operand predicates
7731 /* 7305 */ // Combiner Rule #114: shifts_too_big @ [mi[1]]
7732 /* 7305 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7733 /* 7308 */ // Label 369: @7308
7734 /* 7308 */ GIM_Reject,
7735 /* 7309 */ // Label 37: @7309
7736 /* 7309 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(7320), // Rule ID 241 //
7737 /* 7314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
7738 /* 7317 */ // Combiner Rule #178: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
7739 /* 7317 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
7740 /* 7320 */ // Label 370: @7320
7741 /* 7320 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(7331), // Rule ID 245 //
7742 /* 7325 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7743 /* 7328 */ // Combiner Rule #181: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
7744 /* 7328 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
7745 /* 7331 */ // Label 371: @7331
7746 /* 7331 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(7351), // Rule ID 244 //
7747 /* 7336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
7748 /* 7339 */ // MIs[0] x
7749 /* 7339 */ // No operand predicates
7750 /* 7339 */ // MIs[0] y
7751 /* 7339 */ // No operand predicates
7752 /* 7339 */ // MIs[0] z
7753 /* 7339 */ // No operand predicates
7754 /* 7339 */ // MIs[0] Operand 3
7755 /* 7339 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
7756 /* 7343 */ // Combiner Rule #180: funnel_shift_left_zero
7757 /* 7343 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
7758 /* 7346 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
7759 /* 7348 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
7760 /* 7350 */ GIR_EraseRootFromParent_Done,
7761 /* 7351 */ // Label 372: @7351
7762 /* 7351 */ GIM_Reject,
7763 /* 7352 */ // Label 38: @7352
7764 /* 7352 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(7363), // Rule ID 242 //
7765 /* 7357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
7766 /* 7360 */ // Combiner Rule #178: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
7767 /* 7360 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
7768 /* 7363 */ // Label 373: @7363
7769 /* 7363 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(7374), // Rule ID 246 //
7770 /* 7368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7771 /* 7371 */ // Combiner Rule #181: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
7772 /* 7371 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
7773 /* 7374 */ // Label 374: @7374
7774 /* 7374 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(7394), // Rule ID 243 //
7775 /* 7379 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
7776 /* 7382 */ // MIs[0] x
7777 /* 7382 */ // No operand predicates
7778 /* 7382 */ // MIs[0] y
7779 /* 7382 */ // No operand predicates
7780 /* 7382 */ // MIs[0] z
7781 /* 7382 */ // No operand predicates
7782 /* 7382 */ // MIs[0] Operand 3
7783 /* 7382 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
7784 /* 7386 */ // Combiner Rule #179: funnel_shift_right_zero
7785 /* 7386 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
7786 /* 7389 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
7787 /* 7391 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
7788 /* 7393 */ GIR_EraseRootFromParent_Done,
7789 /* 7394 */ // Label 375: @7394
7790 /* 7394 */ GIM_Reject,
7791 /* 7395 */ // Label 39: @7395
7792 /* 7395 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(7418), // Rule ID 119 //
7793 /* 7400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7794 /* 7403 */ // MIs[0] dst
7795 /* 7403 */ // No operand predicates
7796 /* 7403 */ // MIs[0] lhs
7797 /* 7403 */ // No operand predicates
7798 /* 7403 */ // MIs[0] Operand 2
7799 /* 7403 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7800 /* 7407 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7801 /* 7412 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
7802 /* 7412 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7803 /* 7417 */ GIR_EraseRootFromParent_Done,
7804 /* 7418 */ // Label 376: @7418
7805 /* 7418 */ GIM_Reject,
7806 /* 7419 */ // Label 40: @7419
7807 /* 7419 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(7442), // Rule ID 118 //
7808 /* 7424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7809 /* 7427 */ // MIs[0] dst
7810 /* 7427 */ // No operand predicates
7811 /* 7427 */ // MIs[0] lhs
7812 /* 7427 */ // No operand predicates
7813 /* 7427 */ // MIs[0] Operand 2
7814 /* 7427 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7815 /* 7431 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7816 /* 7436 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
7817 /* 7436 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7818 /* 7441 */ GIR_EraseRootFromParent_Done,
7819 /* 7442 */ // Label 377: @7442
7820 /* 7442 */ GIM_Reject,
7821 /* 7443 */ // Label 41: @7443
7822 /* 7443 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(7454), // Rule ID 164 //
7823 /* 7448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
7824 /* 7451 */ // Combiner Rule #120: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
7825 /* 7451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
7826 /* 7454 */ // Label 378: @7454
7827 /* 7454 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(7465), // Rule ID 165 //
7828 /* 7459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
7829 /* 7462 */ // Combiner Rule #121: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
7830 /* 7462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
7831 /* 7465 */ // Label 379: @7465
7832 /* 7465 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(7476), // Rule ID 168 //
7833 /* 7470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
7834 /* 7473 */ // Combiner Rule #124: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
7835 /* 7473 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7836 /* 7476 */ // Label 380: @7476
7837 /* 7476 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(7487), // Rule ID 162 //
7838 /* 7481 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
7839 /* 7484 */ // MIs[0] root
7840 /* 7484 */ // No operand predicates
7841 /* 7484 */ // MIs[0] pred
7842 /* 7484 */ // No operand predicates
7843 /* 7484 */ // MIs[0] lhs
7844 /* 7484 */ // No operand predicates
7845 /* 7484 */ // MIs[0] rhs
7846 /* 7484 */ // No operand predicates
7847 /* 7484 */ // Combiner Rule #118: canonicalize_icmp
7848 /* 7484 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
7849 /* 7487 */ // Label 381: @7487
7850 /* 7487 */ GIM_Reject,
7851 /* 7488 */ // Label 42: @7488
7852 /* 7488 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(7499), // Rule ID 163 //
7853 /* 7493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
7854 /* 7496 */ // MIs[0] root
7855 /* 7496 */ // No operand predicates
7856 /* 7496 */ // MIs[0] pred
7857 /* 7496 */ // No operand predicates
7858 /* 7496 */ // MIs[0] lhs
7859 /* 7496 */ // No operand predicates
7860 /* 7496 */ // MIs[0] rhs
7861 /* 7496 */ // No operand predicates
7862 /* 7496 */ // Combiner Rule #119: canonicalize_fcmp
7863 /* 7496 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
7864 /* 7499 */ // Label 382: @7499
7865 /* 7499 */ GIM_Reject,
7866 /* 7500 */ // Label 43: @7500
7867 /* 7500 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(7511), // Rule ID 109 //
7868 /* 7505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
7869 /* 7508 */ // Combiner Rule #89: select_same_val; wip_match_opcode 'G_SELECT'
7870 /* 7508 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
7871 /* 7511 */ // Label 383: @7511
7872 /* 7511 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(7522), // Rule ID 175 //
7873 /* 7516 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
7874 /* 7519 */ // Combiner Rule #131: select_constant_cmp; wip_match_opcode 'G_SELECT'
7875 /* 7519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7876 /* 7522 */ // Label 384: @7522
7877 /* 7522 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(7533), // Rule ID 177 //
7878 /* 7527 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
7879 /* 7530 */ // Combiner Rule #133: match_selects; wip_match_opcode 'G_SELECT'
7880 /* 7530 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
7881 /* 7533 */ // Label 385: @7533
7882 /* 7533 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(7544), // Rule ID 355 //
7883 /* 7538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
7884 /* 7541 */ // Combiner Rule #218: select_to_minmax; wip_match_opcode 'G_SELECT'
7885 /* 7541 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7886 /* 7544 */ // Label 386: @7544
7887 /* 7544 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(7593), // Rule ID 178 //
7888 /* 7549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
7889 /* 7552 */ // MIs[0] dst
7890 /* 7552 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
7891 /* 7556 */ // MIs[0] c
7892 /* 7556 */ // No operand predicates
7893 /* 7556 */ // MIs[0] x
7894 /* 7556 */ // No operand predicates
7895 /* 7556 */ // MIs[0] Operand 3
7896 /* 7556 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
7897 /* 7560 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
7898 /* 7564 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7899 /* 7567 */ // Combiner Rule #134: select_zero_false
7900 /* 7567 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
7901 /* 7570 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7902 /* 7575 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
7903 /* 7577 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
7904 /* 7581 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7905 /* 7585 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
7906 /* 7589 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7907 /* 7592 */ GIR_EraseRootFromParent_Done,
7908 /* 7593 */ // Label 387: @7593
7909 /* 7593 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(7614), // Rule ID 176 //
7910 /* 7598 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
7911 /* 7601 */ // MIs[0] root
7912 /* 7601 */ // No operand predicates
7913 /* 7601 */ // MIs[0] tst
7914 /* 7601 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7915 /* 7605 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
7916 /* 7609 */ // MIs[1] tst1
7917 /* 7609 */ // No operand predicates
7918 /* 7609 */ // MIs[1] a
7919 /* 7609 */ // No operand predicates
7920 /* 7609 */ // MIs[1] b
7921 /* 7609 */ // No operand predicates
7922 /* 7609 */ // MIs[0] x
7923 /* 7609 */ // No operand predicates
7924 /* 7609 */ // MIs[0] y
7925 /* 7609 */ // No operand predicates
7926 /* 7609 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7927 /* 7611 */ // Combiner Rule #132: select_to_iminmax
7928 /* 7611 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
7929 /* 7614 */ // Label 388: @7614
7930 /* 7614 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(7650), // Rule ID 179 //
7931 /* 7619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
7932 /* 7622 */ // MIs[0] dst
7933 /* 7622 */ // No operand predicates
7934 /* 7622 */ // MIs[0] c
7935 /* 7622 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7936 /* 7626 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7937 /* 7630 */ // MIs[1] src
7938 /* 7630 */ // No operand predicates
7939 /* 7630 */ // MIs[1] Operand 2
7940 /* 7630 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
7941 /* 7634 */ // MIs[0] x
7942 /* 7634 */ // No operand predicates
7943 /* 7634 */ // MIs[0] y
7944 /* 7634 */ // No operand predicates
7945 /* 7634 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7946 /* 7636 */ // Combiner Rule #135: select_not
7947 /* 7636 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
7948 /* 7639 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7949 /* 7641 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7950 /* 7645 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
7951 /* 7647 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
7952 /* 7649 */ GIR_EraseRootFromParent_Done,
7953 /* 7650 */ // Label 389: @7650
7954 /* 7650 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(7679), // Rule ID 174 //
7955 /* 7655 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
7956 /* 7658 */ // MIs[0] dst
7957 /* 7658 */ // No operand predicates
7958 /* 7658 */ // MIs[0] undef
7959 /* 7658 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7960 /* 7662 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7961 /* 7666 */ // MIs[0] x
7962 /* 7666 */ // No operand predicates
7963 /* 7666 */ // MIs[0] y
7964 /* 7666 */ // No operand predicates
7965 /* 7666 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7966 /* 7671 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7967 /* 7673 */ // Combiner Rule #130: select_undef_cmp
7968 /* 7673 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7969 /* 7678 */ GIR_EraseRootFromParent_Done,
7970 /* 7679 */ // Label 390: @7679
7971 /* 7679 */ GIM_Reject,
7972 /* 7680 */ // Label 44: @7680
7973 /* 7680 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(7691), // Rule ID 366 //
7974 /* 7685 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
7975 /* 7688 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
7976 /* 7688 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
7977 /* 7691 */ // Label 391: @7691
7978 /* 7691 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(7702), // Rule ID 414 //
7979 /* 7696 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
7980 /* 7699 */ // Combiner Rule #249: match_addos; wip_match_opcode 'G_UADDO'
7981 /* 7699 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
7982 /* 7702 */ // Label 392: @7702
7983 /* 7702 */ GIM_Reject,
7984 /* 7703 */ // Label 45: @7703
7985 /* 7703 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(7714), // Rule ID 214 //
7986 /* 7708 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
7987 /* 7711 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_UADDE'
7988 /* 7711 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7989 /* 7714 */ // Label 393: @7714
7990 /* 7714 */ GIM_Reject,
7991 /* 7715 */ // Label 46: @7715
7992 /* 7715 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(7726), // Rule ID 416 //
7993 /* 7720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
7994 /* 7723 */ // Combiner Rule #250: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
7995 /* 7723 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
7996 /* 7726 */ // Label 394: @7726
7997 /* 7726 */ GIM_Reject,
7998 /* 7727 */ // Label 47: @7727
7999 /* 7727 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(7738), // Rule ID 216 //
8000 /* 7732 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8001 /* 7735 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_USUBE'
8002 /* 7735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8003 /* 7738 */ // Label 395: @7738
8004 /* 7738 */ GIM_Reject,
8005 /* 7739 */ // Label 48: @7739
8006 /* 7739 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(7750), // Rule ID 367 //
8007 /* 7744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8008 /* 7747 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
8009 /* 7747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8010 /* 7750 */ // Label 396: @7750
8011 /* 7750 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(7761), // Rule ID 413 //
8012 /* 7755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
8013 /* 7758 */ // Combiner Rule #249: match_addos; wip_match_opcode 'G_SADDO'
8014 /* 7758 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
8015 /* 7761 */ // Label 397: @7761
8016 /* 7761 */ GIM_Reject,
8017 /* 7762 */ // Label 49: @7762
8018 /* 7762 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(7773), // Rule ID 215 //
8019 /* 7767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8020 /* 7770 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_SADDE'
8021 /* 7770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8022 /* 7773 */ // Label 398: @7773
8023 /* 7773 */ GIM_Reject,
8024 /* 7774 */ // Label 50: @7774
8025 /* 7774 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(7785), // Rule ID 415 //
8026 /* 7779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8027 /* 7782 */ // Combiner Rule #250: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
8028 /* 7782 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
8029 /* 7785 */ // Label 399: @7785
8030 /* 7785 */ GIM_Reject,
8031 /* 7786 */ // Label 51: @7786
8032 /* 7786 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(7797), // Rule ID 217 //
8033 /* 7791 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8034 /* 7794 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_SSUBE'
8035 /* 7794 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8036 /* 7797 */ // Label 400: @7797
8037 /* 7797 */ GIM_Reject,
8038 /* 7798 */ // Label 52: @7798
8039 /* 7798 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(7809), // Rule ID 210 //
8040 /* 7803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8041 /* 7806 */ // Combiner Rule #166: mulo_by_2; wip_match_opcode 'G_UMULO'
8042 /* 7806 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
8043 /* 7809 */ // Label 401: @7809
8044 /* 7809 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(7820), // Rule ID 212 //
8045 /* 7814 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
8046 /* 7817 */ // Combiner Rule #167: mulo_by_0; wip_match_opcode 'G_UMULO'
8047 /* 7817 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8048 /* 7820 */ // Label 402: @7820
8049 /* 7820 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(7831), // Rule ID 368 //
8050 /* 7825 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8051 /* 7828 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
8052 /* 7828 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8053 /* 7831 */ // Label 403: @7831
8054 /* 7831 */ GIM_Reject,
8055 /* 7832 */ // Label 53: @7832
8056 /* 7832 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(7843), // Rule ID 211 //
8057 /* 7837 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8058 /* 7840 */ // Combiner Rule #166: mulo_by_2; wip_match_opcode 'G_SMULO'
8059 /* 7840 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
8060 /* 7843 */ // Label 404: @7843
8061 /* 7843 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(7854), // Rule ID 213 //
8062 /* 7848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
8063 /* 7851 */ // Combiner Rule #167: mulo_by_0; wip_match_opcode 'G_SMULO'
8064 /* 7851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8065 /* 7854 */ // Label 405: @7854
8066 /* 7854 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(7865), // Rule ID 369 //
8067 /* 7859 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8068 /* 7862 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
8069 /* 7862 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8070 /* 7865 */ // Label 406: @7865
8071 /* 7865 */ GIM_Reject,
8072 /* 7866 */ // Label 54: @7866
8073 /* 7866 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(7877), // Rule ID 304 //
8074 /* 7871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
8075 /* 7874 */ // Combiner Rule #197: mulh_to_lshr; wip_match_opcode 'G_UMULH'
8076 /* 7874 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8077 /* 7877 */ // Label 407: @7877
8078 /* 7877 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(7888), // Rule ID 370 //
8079 /* 7882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8080 /* 7885 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
8081 /* 7885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8082 /* 7888 */ // Label 408: @7888
8083 /* 7888 */ GIM_Reject,
8084 /* 7889 */ // Label 55: @7889
8085 /* 7889 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(7900), // Rule ID 371 //
8086 /* 7894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8087 /* 7897 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
8088 /* 7897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8089 /* 7900 */ // Label 409: @7900
8090 /* 7900 */ GIM_Reject,
8091 /* 7901 */ // Label 56: @7901
8092 /* 7901 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(7912), // Rule ID 372 //
8093 /* 7906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8094 /* 7909 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
8095 /* 7909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8096 /* 7912 */ // Label 410: @7912
8097 /* 7912 */ GIM_Reject,
8098 /* 7913 */ // Label 57: @7913
8099 /* 7913 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(7924), // Rule ID 373 //
8100 /* 7918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8101 /* 7921 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
8102 /* 7921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8103 /* 7924 */ // Label 411: @7924
8104 /* 7924 */ GIM_Reject,
8105 /* 7925 */ // Label 58: @7925
8106 /* 7925 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(7936), // Rule ID 229 //
8107 /* 7930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8108 /* 7933 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
8109 /* 7933 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8110 /* 7936 */ // Label 412: @7936
8111 /* 7936 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(7947), // Rule ID 233 //
8112 /* 7941 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8113 /* 7944 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
8114 /* 7944 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8115 /* 7947 */ // Label 413: @7947
8116 /* 7947 */ GIM_Reject,
8117 /* 7948 */ // Label 59: @7948
8118 /* 7948 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(7959), // Rule ID 228 //
8119 /* 7953 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8120 /* 7956 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
8121 /* 7956 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8122 /* 7959 */ // Label 414: @7959
8123 /* 7959 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(7970), // Rule ID 234 //
8124 /* 7964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8125 /* 7967 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
8126 /* 7967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8127 /* 7970 */ // Label 415: @7970
8128 /* 7970 */ GIM_Reject,
8129 /* 7971 */ // Label 60: @7971
8130 /* 7971 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(7982), // Rule ID 374 //
8131 /* 7976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8132 /* 7979 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
8133 /* 7979 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8134 /* 7982 */ // Label 416: @7982
8135 /* 7982 */ GIM_Reject,
8136 /* 7983 */ // Label 61: @7983
8137 /* 7983 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(7994), // Rule ID 375 //
8138 /* 7988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8139 /* 7991 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
8140 /* 7991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8141 /* 7994 */ // Label 417: @7994
8142 /* 7994 */ GIM_Reject,
8143 /* 7995 */ // Label 62: @7995
8144 /* 7995 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(8006), // Rule ID 376 //
8145 /* 8000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8146 /* 8003 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
8147 /* 8003 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8148 /* 8006 */ // Label 418: @8006
8149 /* 8006 */ GIM_Reject,
8150 /* 8007 */ // Label 63: @8007
8151 /* 8007 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(8018), // Rule ID 377 //
8152 /* 8012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8153 /* 8015 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
8154 /* 8015 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8155 /* 8018 */ // Label 419: @8018
8156 /* 8018 */ GIM_Reject,
8157 /* 8019 */ // Label 64: @8019
8158 /* 8019 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(8030), // Rule ID 305 //
8159 /* 8024 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8160 /* 8027 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FADD'
8161 /* 8027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8162 /* 8030 */ // Label 420: @8030
8163 /* 8030 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(8041), // Rule ID 312 //
8164 /* 8035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
8165 /* 8038 */ // Combiner Rule #200: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8166 /* 8038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
8167 /* 8041 */ // Label 421: @8041
8168 /* 8041 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(8052), // Rule ID 313 //
8169 /* 8046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
8170 /* 8049 */ // Combiner Rule #201: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8171 /* 8049 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
8172 /* 8052 */ // Label 422: @8052
8173 /* 8052 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(8063), // Rule ID 314 //
8174 /* 8057 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
8175 /* 8060 */ // Combiner Rule #202: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8176 /* 8060 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
8177 /* 8063 */ // Label 423: @8063
8178 /* 8063 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(8074), // Rule ID 315 //
8179 /* 8068 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
8180 /* 8071 */ // Combiner Rule #203: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8181 /* 8071 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
8182 /* 8074 */ // Label 424: @8074
8183 /* 8074 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(8085), // Rule ID 338 //
8184 /* 8079 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8185 /* 8082 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FADD'
8186 /* 8082 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8187 /* 8085 */ // Label 425: @8085
8188 /* 8085 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(8096), // Rule ID 378 //
8189 /* 8090 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8190 /* 8093 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
8191 /* 8093 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8192 /* 8096 */ // Label 426: @8096
8193 /* 8096 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(8119), // Rule ID 148 //
8194 /* 8101 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
8195 /* 8104 */ // MIs[0] dst
8196 /* 8104 */ // No operand predicates
8197 /* 8104 */ // MIs[0] x
8198 /* 8104 */ // No operand predicates
8199 /* 8104 */ // MIs[0] y
8200 /* 8104 */ // No operand predicates
8201 /* 8104 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
8202 /* 8108 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8203 /* 8113 */ // Combiner Rule #108: right_identity_neg_zero_fp
8204 /* 8113 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8205 /* 8118 */ GIR_EraseRootFromParent_Done,
8206 /* 8119 */ // Label 427: @8119
8207 /* 8119 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(8148), // Rule ID 149 //
8208 /* 8124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
8209 /* 8127 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
8210 /* 8133 */ // MIs[0] dst
8211 /* 8133 */ // No operand predicates
8212 /* 8133 */ // MIs[0] x
8213 /* 8133 */ // No operand predicates
8214 /* 8133 */ // MIs[0] y
8215 /* 8133 */ // No operand predicates
8216 /* 8133 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
8217 /* 8137 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8218 /* 8142 */ // Combiner Rule #109: right_identity_neg_zero_fp_nsz
8219 /* 8142 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8220 /* 8147 */ GIR_EraseRootFromParent_Done,
8221 /* 8148 */ // Label 428: @8148
8222 /* 8148 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(8159), // Rule ID 278 //
8223 /* 8153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8224 /* 8156 */ // MIs[0] d
8225 /* 8156 */ // No operand predicates
8226 /* 8156 */ // MIs[0] mi.src0
8227 /* 8156 */ // No operand predicates
8228 /* 8156 */ // MIs[0] mi.src1
8229 /* 8156 */ // No operand predicates
8230 /* 8156 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[0]]
8231 /* 8156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8232 /* 8159 */ // Label 429: @8159
8233 /* 8159 */ GIM_Reject,
8234 /* 8160 */ // Label 65: @8160
8235 /* 8160 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(8171), // Rule ID 306 //
8236 /* 8165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8237 /* 8168 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FSUB'
8238 /* 8168 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8239 /* 8171 */ // Label 430: @8171
8240 /* 8171 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(8182), // Rule ID 316 //
8241 /* 8176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8242 /* 8179 */ // Combiner Rule #204: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8243 /* 8179 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
8244 /* 8182 */ // Label 431: @8182
8245 /* 8182 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(8193), // Rule ID 317 //
8246 /* 8187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
8247 /* 8190 */ // Combiner Rule #205: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8248 /* 8190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
8249 /* 8193 */ // Label 432: @8193
8250 /* 8193 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(8204), // Rule ID 318 //
8251 /* 8198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
8252 /* 8201 */ // Combiner Rule #206: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8253 /* 8201 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
8254 /* 8204 */ // Label 433: @8204
8255 /* 8204 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(8215), // Rule ID 319 //
8256 /* 8209 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
8257 /* 8212 */ // Combiner Rule #207: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8258 /* 8212 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8259 /* 8215 */ // Label 434: @8215
8260 /* 8215 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(8226), // Rule ID 339 //
8261 /* 8220 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8262 /* 8223 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FSUB'
8263 /* 8223 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8264 /* 8226 */ // Label 435: @8226
8265 /* 8226 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(8237), // Rule ID 356 //
8266 /* 8231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
8267 /* 8234 */ // Combiner Rule #219: fsub_to_fneg; wip_match_opcode 'G_FSUB'
8268 /* 8234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8269 /* 8237 */ // Label 436: @8237
8270 /* 8237 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(8248), // Rule ID 279 //
8271 /* 8242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8272 /* 8245 */ // MIs[0] d
8273 /* 8245 */ // No operand predicates
8274 /* 8245 */ // MIs[0] mi.src0
8275 /* 8245 */ // No operand predicates
8276 /* 8245 */ // MIs[0] mi.src1
8277 /* 8245 */ // No operand predicates
8278 /* 8245 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[1]]
8279 /* 8245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8280 /* 8248 */ // Label 437: @8248
8281 /* 8248 */ GIM_Reject,
8282 /* 8249 */ // Label 66: @8249
8283 /* 8249 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(8260), // Rule ID 307 //
8284 /* 8254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8285 /* 8257 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMUL'
8286 /* 8257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8287 /* 8260 */ // Label 438: @8260
8288 /* 8260 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(8271), // Rule ID 337 //
8289 /* 8265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8290 /* 8268 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMUL'
8291 /* 8268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8292 /* 8271 */ // Label 439: @8271
8293 /* 8271 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(8282), // Rule ID 379 //
8294 /* 8276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8295 /* 8279 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
8296 /* 8279 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8297 /* 8282 */ // Label 440: @8282
8298 /* 8282 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(8305), // Rule ID 138 //
8299 /* 8287 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
8300 /* 8290 */ // MIs[0] dst
8301 /* 8290 */ // No operand predicates
8302 /* 8290 */ // MIs[0] x
8303 /* 8290 */ // No operand predicates
8304 /* 8290 */ // MIs[0] y
8305 /* 8290 */ // No operand predicates
8306 /* 8290 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
8307 /* 8294 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8308 /* 8299 */ // Combiner Rule #100: right_identity_one_fp
8309 /* 8299 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8310 /* 8304 */ GIR_EraseRootFromParent_Done,
8311 /* 8305 */ // Label 441: @8305
8312 /* 8305 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(8325), // Rule ID 150 //
8313 /* 8310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
8314 /* 8313 */ // MIs[0] dst
8315 /* 8313 */ // No operand predicates
8316 /* 8313 */ // MIs[0] x
8317 /* 8313 */ // No operand predicates
8318 /* 8313 */ // MIs[0] y
8319 /* 8313 */ // No operand predicates
8320 /* 8313 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
8321 /* 8317 */ // Combiner Rule #110: right_identity_neg_one_fp
8322 /* 8317 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
8323 /* 8320 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8324 /* 8322 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
8325 /* 8324 */ GIR_EraseRootFromParent_Done,
8326 /* 8325 */ // Label 442: @8325
8327 /* 8325 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(8336), // Rule ID 280 //
8328 /* 8330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8329 /* 8333 */ // MIs[0] d
8330 /* 8333 */ // No operand predicates
8331 /* 8333 */ // MIs[0] mi.src0
8332 /* 8333 */ // No operand predicates
8333 /* 8333 */ // MIs[0] mi.src1
8334 /* 8333 */ // No operand predicates
8335 /* 8333 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[2]]
8336 /* 8333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8337 /* 8336 */ // Label 443: @8336
8338 /* 8336 */ GIM_Reject,
8339 /* 8337 */ // Label 67: @8337
8340 /* 8337 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(8348), // Rule ID 291 //
8341 /* 8342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8342 /* 8345 */ // Combiner Rule #193: constant_fold_fma; wip_match_opcode 'G_FMA'
8343 /* 8345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8344 /* 8348 */ // Label 444: @8348
8345 /* 8348 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(8359), // Rule ID 310 //
8346 /* 8353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8347 /* 8356 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMA'
8348 /* 8356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8349 /* 8359 */ // Label 445: @8359
8350 /* 8359 */ GIM_Reject,
8351 /* 8360 */ // Label 68: @8360
8352 /* 8360 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(8371), // Rule ID 290 //
8353 /* 8365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8354 /* 8368 */ // Combiner Rule #193: constant_fold_fma; wip_match_opcode 'G_FMAD'
8355 /* 8368 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8356 /* 8371 */ // Label 446: @8371
8357 /* 8371 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(8382), // Rule ID 309 //
8358 /* 8376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8359 /* 8379 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMAD'
8360 /* 8379 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8361 /* 8382 */ // Label 447: @8382
8362 /* 8382 */ GIM_Reject,
8363 /* 8383 */ // Label 69: @8383
8364 /* 8383 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(8394), // Rule ID 308 //
8365 /* 8388 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8366 /* 8391 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FDIV'
8367 /* 8391 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8368 /* 8394 */ // Label 448: @8394
8369 /* 8394 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(8405), // Rule ID 340 //
8370 /* 8399 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8371 /* 8402 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FDIV'
8372 /* 8402 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8373 /* 8405 */ // Label 449: @8405
8374 /* 8405 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(8416), // Rule ID 281 //
8375 /* 8410 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8376 /* 8413 */ // MIs[0] d
8377 /* 8413 */ // No operand predicates
8378 /* 8413 */ // MIs[0] mi.src0
8379 /* 8413 */ // No operand predicates
8380 /* 8413 */ // MIs[0] mi.src1
8381 /* 8413 */ // No operand predicates
8382 /* 8413 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[3]]
8383 /* 8413 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8384 /* 8416 */ // Label 450: @8416
8385 /* 8416 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(8427), // Rule ID 353 //
8386 /* 8421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8387 /* 8424 */ // MIs[0] dst
8388 /* 8424 */ // No operand predicates
8389 /* 8424 */ // MIs[0] src1
8390 /* 8424 */ // No operand predicates
8391 /* 8424 */ // MIs[0] src2
8392 /* 8424 */ // No operand predicates
8393 /* 8424 */ // Combiner Rule #216: fdiv_repeated_divison
8394 /* 8424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
8395 /* 8427 */ // Label 451: @8427
8396 /* 8427 */ GIM_Reject,
8397 /* 8428 */ // Label 70: @8428
8398 /* 8428 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(8439), // Rule ID 341 //
8399 /* 8433 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8400 /* 8436 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FREM'
8401 /* 8436 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8402 /* 8439 */ // Label 452: @8439
8403 /* 8439 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(8450), // Rule ID 282 //
8404 /* 8444 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8405 /* 8447 */ // MIs[0] d
8406 /* 8447 */ // No operand predicates
8407 /* 8447 */ // MIs[0] mi.src0
8408 /* 8447 */ // No operand predicates
8409 /* 8447 */ // MIs[0] mi.src1
8410 /* 8447 */ // No operand predicates
8411 /* 8447 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[4]]
8412 /* 8447 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8413 /* 8450 */ // Label 453: @8450
8414 /* 8450 */ GIM_Reject,
8415 /* 8451 */ // Label 71: @8451
8416 /* 8451 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(8472), // Rule ID 222 //
8417 /* 8456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
8418 /* 8459 */ // MIs[0] dst
8419 /* 8459 */ // No operand predicates
8420 /* 8459 */ // MIs[0] float
8421 /* 8459 */ // No operand predicates
8422 /* 8459 */ // MIs[0] int
8423 /* 8459 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8424 /* 8463 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8425 /* 8467 */ // MIs[1] imm
8426 /* 8467 */ // No operand predicates
8427 /* 8467 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8428 /* 8469 */ // Combiner Rule #170: expand_const_fpowi
8429 /* 8469 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
8430 /* 8472 */ // Label 454: @8472
8431 /* 8472 */ GIM_Reject,
8432 /* 8473 */ // Label 72: @8473
8433 /* 8473 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(8494), // Rule ID 196 //
8434 /* 8478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
8435 /* 8481 */ // MIs[0] dst
8436 /* 8481 */ // No operand predicates
8437 /* 8481 */ // MIs[0] src0
8438 /* 8481 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8439 /* 8485 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8440 /* 8489 */ // MIs[1] cst
8441 /* 8489 */ // No operand predicates
8442 /* 8489 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8443 /* 8491 */ // Combiner Rule #152: constant_fold_flog2
8444 /* 8491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8445 /* 8494 */ // Label 455: @8494
8446 /* 8494 */ GIM_Reject,
8447 /* 8495 */ // Label 73: @8495
8448 /* 8495 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(8516), // Rule ID 193 //
8449 /* 8500 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8450 /* 8503 */ // MIs[0] dst
8451 /* 8503 */ // No operand predicates
8452 /* 8503 */ // MIs[0] src0
8453 /* 8503 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8454 /* 8507 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8455 /* 8511 */ // MIs[1] cst
8456 /* 8511 */ // No operand predicates
8457 /* 8511 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8458 /* 8513 */ // Combiner Rule #149: constant_fold_fneg
8459 /* 8513 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8460 /* 8516 */ // Label 456: @8516
8461 /* 8516 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(8545), // Rule ID 136 //
8462 /* 8521 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
8463 /* 8524 */ // MIs[0] dst
8464 /* 8524 */ // No operand predicates
8465 /* 8524 */ // MIs[0] t
8466 /* 8524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8467 /* 8528 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8468 /* 8532 */ // MIs[1] src
8469 /* 8532 */ // No operand predicates
8470 /* 8532 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8471 /* 8537 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8472 /* 8539 */ // Combiner Rule #98: fneg_fneg_fold
8473 /* 8539 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8474 /* 8544 */ GIR_EraseRootFromParent_Done,
8475 /* 8545 */ // Label 457: @8545
8476 /* 8545 */ GIM_Reject,
8477 /* 8546 */ // Label 74: @8546
8478 /* 8546 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(8567), // Rule ID 198 //
8479 /* 8551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
8480 /* 8554 */ // MIs[0] dst
8481 /* 8554 */ // No operand predicates
8482 /* 8554 */ // MIs[0] src0
8483 /* 8554 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8484 /* 8558 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8485 /* 8562 */ // MIs[1] cst
8486 /* 8562 */ // No operand predicates
8487 /* 8562 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8488 /* 8564 */ // Combiner Rule #154: constant_fold_fpext
8489 /* 8564 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8490 /* 8567 */ // Label 458: @8567
8491 /* 8567 */ GIM_Reject,
8492 /* 8568 */ // Label 75: @8568
8493 /* 8568 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(8589), // Rule ID 197 //
8494 /* 8573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
8495 /* 8576 */ // MIs[0] dst
8496 /* 8576 */ // No operand predicates
8497 /* 8576 */ // MIs[0] src0
8498 /* 8576 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8499 /* 8580 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8500 /* 8584 */ // MIs[1] cst
8501 /* 8584 */ // No operand predicates
8502 /* 8584 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8503 /* 8586 */ // Combiner Rule #153: constant_fold_fptrunc
8504 /* 8586 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8505 /* 8589 */ // Label 459: @8589
8506 /* 8589 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(8610), // Rule ID 147 //
8507 /* 8594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
8508 /* 8597 */ // MIs[0] dst
8509 /* 8597 */ // No operand predicates
8510 /* 8597 */ // MIs[0] src1
8511 /* 8597 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8512 /* 8601 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
8513 /* 8605 */ // MIs[1] src0
8514 /* 8605 */ // No operand predicates
8515 /* 8605 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8516 /* 8607 */ // Combiner Rule #107: fptrunc_fpext_fold
8517 /* 8607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
8518 /* 8610 */ // Label 460: @8610
8519 /* 8610 */ GIM_Reject,
8520 /* 8611 */ // Label 76: @8611
8521 /* 8611 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(8632), // Rule ID 98 //
8522 /* 8616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8523 /* 8619 */ // MIs[0] dst
8524 /* 8619 */ // No operand predicates
8525 /* 8619 */ // MIs[0] __unary_undef_to_undef_match_0.x
8526 /* 8619 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8527 /* 8623 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8528 /* 8627 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8529 /* 8629 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
8530 /* 8629 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8531 /* 8632 */ // Label 461: @8632
8532 /* 8632 */ GIM_Reject,
8533 /* 8633 */ // Label 77: @8633
8534 /* 8633 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(8654), // Rule ID 99 //
8535 /* 8638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8536 /* 8641 */ // MIs[0] dst
8537 /* 8641 */ // No operand predicates
8538 /* 8641 */ // MIs[0] __unary_undef_to_undef_match_0.x
8539 /* 8641 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8540 /* 8645 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8541 /* 8649 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8542 /* 8651 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
8543 /* 8651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8544 /* 8654 */ // Label 462: @8654
8545 /* 8654 */ GIM_Reject,
8546 /* 8655 */ // Label 78: @8655
8547 /* 8655 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(8666), // Rule ID 82 //
8548 /* 8660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
8549 /* 8663 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
8550 /* 8663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8551 /* 8666 */ // Label 463: @8666
8552 /* 8666 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(8681), // Rule ID 206 //
8553 /* 8671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
8554 /* 8674 */ // MIs[0] dst
8555 /* 8674 */ // No operand predicates
8556 /* 8674 */ // MIs[0] Operand 1
8557 /* 8674 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
8558 /* 8678 */ // Combiner Rule #162: itof_const_zero_fold_si
8559 /* 8678 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8560 /* 8681 */ // Label 464: @8681
8561 /* 8681 */ GIM_Reject,
8562 /* 8682 */ // Label 79: @8682
8563 /* 8682 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(8693), // Rule ID 81 //
8564 /* 8687 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
8565 /* 8690 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
8566 /* 8690 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8567 /* 8693 */ // Label 465: @8693
8568 /* 8693 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(8708), // Rule ID 207 //
8569 /* 8698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
8570 /* 8701 */ // MIs[0] dst
8571 /* 8701 */ // No operand predicates
8572 /* 8701 */ // MIs[0] Operand 1
8573 /* 8701 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
8574 /* 8705 */ // Combiner Rule #163: itof_const_zero_fold_ui
8575 /* 8705 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8576 /* 8708 */ // Label 466: @8708
8577 /* 8708 */ GIM_Reject,
8578 /* 8709 */ // Label 80: @8709
8579 /* 8709 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(8738), // Rule ID 25 //
8580 /* 8714 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
8581 /* 8717 */ // MIs[0] dst
8582 /* 8717 */ // No operand predicates
8583 /* 8717 */ // MIs[0] src
8584 /* 8717 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8585 /* 8721 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
8586 /* 8725 */ // MIs[1] __idempotent_prop_match_0.x
8587 /* 8725 */ // No operand predicates
8588 /* 8725 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8589 /* 8730 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8590 /* 8732 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
8591 /* 8732 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8592 /* 8737 */ GIR_EraseRootFromParent_Done,
8593 /* 8738 */ // Label 467: @8738
8594 /* 8738 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(8759), // Rule ID 194 //
8595 /* 8743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
8596 /* 8746 */ // MIs[0] dst
8597 /* 8746 */ // No operand predicates
8598 /* 8746 */ // MIs[0] src0
8599 /* 8746 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8600 /* 8750 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8601 /* 8754 */ // MIs[1] cst
8602 /* 8754 */ // No operand predicates
8603 /* 8754 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8604 /* 8756 */ // Combiner Rule #150: constant_fold_fabs
8605 /* 8756 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8606 /* 8759 */ // Label 468: @8759
8607 /* 8759 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(8787), // Rule ID 303 //
8608 /* 8764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
8609 /* 8767 */ // MIs[0] dst
8610 /* 8767 */ // No operand predicates
8611 /* 8767 */ // MIs[0] tmp
8612 /* 8767 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8613 /* 8771 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8614 /* 8775 */ // MIs[1] x
8615 /* 8775 */ // No operand predicates
8616 /* 8775 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8617 /* 8777 */ // Combiner Rule #196: fabs_fneg_fold
8618 /* 8777 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
8619 /* 8780 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8620 /* 8782 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8621 /* 8786 */ GIR_EraseRootFromParent_Done,
8622 /* 8787 */ // Label 469: @8787
8623 /* 8787 */ GIM_Reject,
8624 /* 8788 */ // Label 81: @8788
8625 /* 8788 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(8799), // Rule ID 283 //
8626 /* 8793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8627 /* 8796 */ // MIs[0] d
8628 /* 8796 */ // No operand predicates
8629 /* 8796 */ // MIs[0] mi.src0
8630 /* 8796 */ // No operand predicates
8631 /* 8796 */ // MIs[0] mi.src1
8632 /* 8796 */ // No operand predicates
8633 /* 8796 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[5]]
8634 /* 8796 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8635 /* 8799 */ // Label 470: @8799
8636 /* 8799 */ GIM_Reject,
8637 /* 8800 */ // Label 82: @8800
8638 /* 8800 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(8829), // Rule ID 26 //
8639 /* 8805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
8640 /* 8808 */ // MIs[0] dst
8641 /* 8808 */ // No operand predicates
8642 /* 8808 */ // MIs[0] src
8643 /* 8808 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8644 /* 8812 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
8645 /* 8816 */ // MIs[1] __idempotent_prop_match_0.x
8646 /* 8816 */ // No operand predicates
8647 /* 8816 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8648 /* 8821 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8649 /* 8823 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
8650 /* 8823 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8651 /* 8828 */ GIR_EraseRootFromParent_Done,
8652 /* 8829 */ // Label 471: @8829
8653 /* 8829 */ GIM_Reject,
8654 /* 8830 */ // Label 83: @8830
8655 /* 8830 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(8841), // Rule ID 218 //
8656 /* 8835 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
8657 /* 8838 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
8658 /* 8838 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8659 /* 8841 */ // Label 472: @8841
8660 /* 8841 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(8852), // Rule ID 342 //
8661 /* 8846 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8662 /* 8849 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
8663 /* 8849 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8664 /* 8852 */ // Label 473: @8852
8665 /* 8852 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(8863), // Rule ID 380 //
8666 /* 8857 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8667 /* 8860 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
8668 /* 8860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8669 /* 8863 */ // Label 474: @8863
8670 /* 8863 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(8874), // Rule ID 284 //
8671 /* 8868 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8672 /* 8871 */ // MIs[0] d
8673 /* 8871 */ // No operand predicates
8674 /* 8871 */ // MIs[0] mi.src0
8675 /* 8871 */ // No operand predicates
8676 /* 8871 */ // MIs[0] mi.src1
8677 /* 8871 */ // No operand predicates
8678 /* 8871 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[6]]
8679 /* 8871 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8680 /* 8874 */ // Label 475: @8874
8681 /* 8874 */ GIM_Reject,
8682 /* 8875 */ // Label 84: @8875
8683 /* 8875 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(8886), // Rule ID 219 //
8684 /* 8880 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
8685 /* 8883 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
8686 /* 8883 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8687 /* 8886 */ // Label 476: @8886
8688 /* 8886 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(8897), // Rule ID 343 //
8689 /* 8891 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8690 /* 8894 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
8691 /* 8894 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8692 /* 8897 */ // Label 477: @8897
8693 /* 8897 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(8908), // Rule ID 381 //
8694 /* 8902 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8695 /* 8905 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
8696 /* 8905 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8697 /* 8908 */ // Label 478: @8908
8698 /* 8908 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(8919), // Rule ID 285 //
8699 /* 8913 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8700 /* 8916 */ // MIs[0] d
8701 /* 8916 */ // No operand predicates
8702 /* 8916 */ // MIs[0] mi.src0
8703 /* 8916 */ // No operand predicates
8704 /* 8916 */ // MIs[0] mi.src1
8705 /* 8916 */ // No operand predicates
8706 /* 8916 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[7]]
8707 /* 8916 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8708 /* 8919 */ // Label 479: @8919
8709 /* 8919 */ GIM_Reject,
8710 /* 8920 */ // Label 85: @8920
8711 /* 8920 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(8931), // Rule ID 382 //
8712 /* 8925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8713 /* 8928 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
8714 /* 8928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8715 /* 8931 */ // Label 480: @8931
8716 /* 8931 */ GIM_Reject,
8717 /* 8932 */ // Label 86: @8932
8718 /* 8932 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(8943), // Rule ID 383 //
8719 /* 8937 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8720 /* 8940 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
8721 /* 8940 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8722 /* 8943 */ // Label 481: @8943
8723 /* 8943 */ GIM_Reject,
8724 /* 8944 */ // Label 87: @8944
8725 /* 8944 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(8955), // Rule ID 220 //
8726 /* 8949 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
8727 /* 8952 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
8728 /* 8952 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8729 /* 8955 */ // Label 482: @8955
8730 /* 8955 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(8966), // Rule ID 344 //
8731 /* 8960 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8732 /* 8963 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
8733 /* 8963 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8734 /* 8966 */ // Label 483: @8966
8735 /* 8966 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(8977), // Rule ID 384 //
8736 /* 8971 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8737 /* 8974 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
8738 /* 8974 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8739 /* 8977 */ // Label 484: @8977
8740 /* 8977 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8988), // Rule ID 286 //
8741 /* 8982 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8742 /* 8985 */ // MIs[0] d
8743 /* 8985 */ // No operand predicates
8744 /* 8985 */ // MIs[0] mi.src0
8745 /* 8985 */ // No operand predicates
8746 /* 8985 */ // MIs[0] mi.src1
8747 /* 8985 */ // No operand predicates
8748 /* 8985 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[8]]
8749 /* 8985 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8750 /* 8988 */ // Label 485: @8988
8751 /* 8988 */ GIM_Reject,
8752 /* 8989 */ // Label 88: @8989
8753 /* 8989 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(9000), // Rule ID 221 //
8754 /* 8994 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
8755 /* 8997 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
8756 /* 8997 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8757 /* 9000 */ // Label 486: @9000
8758 /* 9000 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(9011), // Rule ID 345 //
8759 /* 9005 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8760 /* 9008 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
8761 /* 9008 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8762 /* 9011 */ // Label 487: @9011
8763 /* 9011 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(9022), // Rule ID 385 //
8764 /* 9016 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8765 /* 9019 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
8766 /* 9019 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8767 /* 9022 */ // Label 488: @9022
8768 /* 9022 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(9033), // Rule ID 287 //
8769 /* 9027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8770 /* 9030 */ // MIs[0] d
8771 /* 9030 */ // No operand predicates
8772 /* 9030 */ // MIs[0] mi.src0
8773 /* 9030 */ // No operand predicates
8774 /* 9030 */ // MIs[0] mi.src1
8775 /* 9030 */ // No operand predicates
8776 /* 9030 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[9]]
8777 /* 9030 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8778 /* 9033 */ // Label 489: @9033
8779 /* 9033 */ GIM_Reject,
8780 /* 9034 */ // Label 89: @9034
8781 /* 9034 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(9045), // Rule ID 288 //
8782 /* 9039 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8783 /* 9042 */ // MIs[0] d
8784 /* 9042 */ // No operand predicates
8785 /* 9042 */ // MIs[0] mi.src0
8786 /* 9042 */ // No operand predicates
8787 /* 9042 */ // MIs[0] mi.src1
8788 /* 9042 */ // No operand predicates
8789 /* 9042 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[10]]
8790 /* 9042 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8791 /* 9045 */ // Label 490: @9045
8792 /* 9045 */ GIM_Reject,
8793 /* 9046 */ // Label 90: @9046
8794 /* 9046 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(9057), // Rule ID 289 //
8795 /* 9051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8796 /* 9054 */ // MIs[0] d
8797 /* 9054 */ // No operand predicates
8798 /* 9054 */ // MIs[0] mi.src0
8799 /* 9054 */ // No operand predicates
8800 /* 9054 */ // MIs[0] mi.src1
8801 /* 9054 */ // No operand predicates
8802 /* 9054 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[11]]
8803 /* 9054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8804 /* 9057 */ // Label 491: @9057
8805 /* 9057 */ GIM_Reject,
8806 /* 9058 */ // Label 91: @9058
8807 /* 9058 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(9069), // Rule ID 159 //
8808 /* 9063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
8809 /* 9066 */ // Combiner Rule #115: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
8810 /* 9066 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
8811 /* 9069 */ // Label 492: @9069
8812 /* 9069 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(9080), // Rule ID 161 //
8813 /* 9074 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
8814 /* 9077 */ // Combiner Rule #117: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
8815 /* 9077 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
8816 /* 9080 */ // Label 493: @9080
8817 /* 9080 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(9091), // Rule ID 208 //
8818 /* 9085 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
8819 /* 9088 */ // Combiner Rule #164: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
8820 /* 9088 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
8821 /* 9091 */ // Label 494: @9091
8822 /* 9091 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(9102), // Rule ID 224 //
8823 /* 9096 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
8824 /* 9099 */ // Combiner Rule #172: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
8825 /* 9099 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
8826 /* 9102 */ // Label 495: @9102
8827 /* 9102 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(9113), // Rule ID 261 //
8828 /* 9107 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8829 /* 9110 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
8830 /* 9110 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8831 /* 9113 */ // Label 496: @9113
8832 /* 9113 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(9124), // Rule ID 322 //
8833 /* 9118 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8834 /* 9121 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
8835 /* 9121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8836 /* 9124 */ // Label 497: @9124
8837 /* 9124 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(9147), // Rule ID 117 //
8838 /* 9129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8839 /* 9132 */ // MIs[0] dst
8840 /* 9132 */ // No operand predicates
8841 /* 9132 */ // MIs[0] lhs
8842 /* 9132 */ // No operand predicates
8843 /* 9132 */ // MIs[0] Operand 2
8844 /* 9132 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8845 /* 9136 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8846 /* 9141 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
8847 /* 9141 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8848 /* 9146 */ GIR_EraseRootFromParent_Done,
8849 /* 9147 */ // Label 498: @9147
8850 /* 9147 */ GIM_Reject,
8851 /* 9148 */ // Label 92: @9148
8852 /* 9148 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(9159), // Rule ID 274 //
8853 /* 9153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8854 /* 9156 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SMIN'
8855 /* 9156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8856 /* 9159 */ // Label 499: @9159
8857 /* 9159 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(9170), // Rule ID 333 //
8858 /* 9164 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8859 /* 9167 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SMIN'
8860 /* 9167 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8861 /* 9170 */ // Label 500: @9170
8862 /* 9170 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(9181), // Rule ID 362 //
8863 /* 9175 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8864 /* 9178 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
8865 /* 9178 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8866 /* 9181 */ // Label 501: @9181
8867 /* 9181 */ GIM_Reject,
8868 /* 9182 */ // Label 93: @9182
8869 /* 9182 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(9193), // Rule ID 275 //
8870 /* 9187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8871 /* 9190 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SMAX'
8872 /* 9190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8873 /* 9193 */ // Label 502: @9193
8874 /* 9193 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(9204), // Rule ID 334 //
8875 /* 9198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8876 /* 9201 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SMAX'
8877 /* 9201 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8878 /* 9204 */ // Label 503: @9204
8879 /* 9204 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(9215), // Rule ID 363 //
8880 /* 9209 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8881 /* 9212 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
8882 /* 9212 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8883 /* 9215 */ // Label 504: @9215
8884 /* 9215 */ GIM_Reject,
8885 /* 9216 */ // Label 94: @9216
8886 /* 9216 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(9227), // Rule ID 276 //
8887 /* 9221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8888 /* 9224 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UMIN'
8889 /* 9224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8890 /* 9227 */ // Label 505: @9227
8891 /* 9227 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(9238), // Rule ID 335 //
8892 /* 9232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8893 /* 9235 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UMIN'
8894 /* 9235 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8895 /* 9238 */ // Label 506: @9238
8896 /* 9238 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(9249), // Rule ID 364 //
8897 /* 9243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8898 /* 9246 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
8899 /* 9246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8900 /* 9249 */ // Label 507: @9249
8901 /* 9249 */ GIM_Reject,
8902 /* 9250 */ // Label 95: @9250
8903 /* 9250 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(9261), // Rule ID 277 //
8904 /* 9255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8905 /* 9258 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UMAX'
8906 /* 9258 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8907 /* 9261 */ // Label 508: @9261
8908 /* 9261 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(9272), // Rule ID 336 //
8909 /* 9266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8910 /* 9269 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UMAX'
8911 /* 9269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8912 /* 9272 */ // Label 509: @9272
8913 /* 9272 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(9283), // Rule ID 365 //
8914 /* 9277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8915 /* 9280 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
8916 /* 9280 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8917 /* 9283 */ // Label 510: @9283
8918 /* 9283 */ GIM_Reject,
8919 /* 9284 */ // Label 96: @9284
8920 /* 9284 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(9295), // Rule ID 92 //
8921 /* 9289 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
8922 /* 9292 */ // Combiner Rule #82: unary_undef_to_zero; wip_match_opcode 'G_ABS'
8923 /* 9292 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
8924 /* 9295 */ // Label 511: @9295
8925 /* 9295 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(9306), // Rule ID 300 //
8926 /* 9300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
8927 /* 9303 */ // MIs[0] dst
8928 /* 9303 */ // No operand predicates
8929 /* 9303 */ // MIs[0] mi.src
8930 /* 9303 */ // No operand predicates
8931 /* 9303 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[5]]
8932 /* 9303 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8933 /* 9306 */ // Label 512: @9306
8934 /* 9306 */ GIM_Reject,
8935 /* 9307 */ // Label 97: @9307
8936 /* 9307 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(9318), // Rule ID 192 //
8937 /* 9312 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
8938 /* 9315 */ // Combiner Rule #148: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
8939 /* 9315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8940 /* 9318 */ // Label 513: @9318
8941 /* 9318 */ GIM_Reject,
8942 /* 9319 */ // Label 98: @9319
8943 /* 9319 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(9330), // Rule ID 32 //
8944 /* 9324 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
8945 /* 9327 */ // Combiner Rule #30: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
8946 /* 9327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
8947 /* 9330 */ // Label 514: @9330
8948 /* 9330 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(9341), // Rule ID 73 //
8949 /* 9335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
8950 /* 9338 */ // Combiner Rule #71: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
8951 /* 9338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
8952 /* 9341 */ // Label 515: @9341
8953 /* 9341 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(9352), // Rule ID 107 //
8954 /* 9346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8955 /* 9349 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
8956 /* 9349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
8957 /* 9352 */ // Label 516: @9352
8958 /* 9352 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(9391), // Rule ID 44 //
8959 /* 9357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
8960 /* 9360 */ // MIs[0] root
8961 /* 9360 */ // No operand predicates
8962 /* 9360 */ // MIs[0] src
8963 /* 9360 */ // No operand predicates
8964 /* 9360 */ // MIs[0] elt
8965 /* 9360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8966 /* 9364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
8967 /* 9368 */ // MIs[1] src
8968 /* 9368 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
8969 /* 9373 */ // MIs[1] idx
8970 /* 9373 */ // No operand predicates
8971 /* 9373 */ // MIs[0] idx
8972 /* 9373 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
8973 /* 9378 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8974 /* 9383 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8975 /* 9385 */ // Combiner Rule #42: insert_vector_element_extract_vector_element
8976 /* 9385 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8977 /* 9390 */ GIR_EraseRootFromParent_Done,
8978 /* 9391 */ // Label 517: @9391
8979 /* 9391 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(9424), // Rule ID 30 //
8980 /* 9396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
8981 /* 9399 */ // MIs[0] root
8982 /* 9399 */ // No operand predicates
8983 /* 9399 */ // MIs[0] src
8984 /* 9399 */ // No operand predicates
8985 /* 9399 */ // MIs[0] elt
8986 /* 9399 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8987 /* 9403 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8988 /* 9407 */ // MIs[0] idx
8989 /* 9407 */ // No operand predicates
8990 /* 9407 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
8991 /* 9411 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8992 /* 9416 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8993 /* 9418 */ // Combiner Rule #28: insert_vector_element_elt_undef
8994 /* 9418 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8995 /* 9423 */ GIR_EraseRootFromParent_Done,
8996 /* 9424 */ // Label 518: @9424
8997 /* 9424 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(9448), // Rule ID 29 //
8998 /* 9429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
8999 /* 9432 */ // MIs[0] root
9000 /* 9432 */ // No operand predicates
9001 /* 9432 */ // MIs[0] src
9002 /* 9432 */ // No operand predicates
9003 /* 9432 */ // MIs[0] elt
9004 /* 9432 */ // No operand predicates
9005 /* 9432 */ // MIs[0] idx
9006 /* 9432 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
9007 /* 9436 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9008 /* 9440 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9009 /* 9442 */ // Combiner Rule #27: insert_vector_element_idx_undef
9010 /* 9442 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9011 /* 9445 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9012 /* 9447 */ GIR_EraseRootFromParent_Done,
9013 /* 9448 */ // Label 519: @9448
9014 /* 9448 */ GIM_Reject,
9015 /* 9449 */ // Label 99: @9449
9016 /* 9449 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(9460), // Rule ID 31 //
9017 /* 9454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
9018 /* 9457 */ // Combiner Rule #29: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9019 /* 9457 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
9020 /* 9460 */ // Label 520: @9460
9021 /* 9460 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(9471), // Rule ID 74 //
9022 /* 9465 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
9023 /* 9468 */ // Combiner Rule #72: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9024 /* 9468 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
9025 /* 9471 */ // Label 521: @9471
9026 /* 9471 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(9482), // Rule ID 80 //
9027 /* 9476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9028 /* 9479 */ // Combiner Rule #76: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9029 /* 9479 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9030 /* 9482 */ // Label 522: @9482
9031 /* 9482 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(9493), // Rule ID 108 //
9032 /* 9487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
9033 /* 9490 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9034 /* 9490 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
9035 /* 9493 */ // Label 523: @9493
9036 /* 9493 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(9517), // Rule ID 42 //
9037 /* 9498 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
9038 /* 9501 */ // MIs[0] root
9039 /* 9501 */ // No operand predicates
9040 /* 9501 */ // MIs[0] src
9041 /* 9501 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9042 /* 9505 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9043 /* 9509 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
9044 /* 9512 */ // MIs[1] x
9045 /* 9512 */ // No operand predicates
9046 /* 9512 */ // MIs[1] y
9047 /* 9512 */ // No operand predicates
9048 /* 9512 */ // MIs[1] z
9049 /* 9512 */ // No operand predicates
9050 /* 9512 */ // MIs[1] a
9051 /* 9512 */ // No operand predicates
9052 /* 9512 */ // MIs[1] b
9053 /* 9512 */ // No operand predicates
9054 /* 9512 */ // MIs[1] c
9055 /* 9512 */ // No operand predicates
9056 /* 9512 */ // MIs[1] d
9057 /* 9512 */ // No operand predicates
9058 /* 9512 */ // MIs[1] e
9059 /* 9512 */ // No operand predicates
9060 /* 9512 */ // MIs[0] idx
9061 /* 9512 */ // No operand predicates
9062 /* 9512 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9063 /* 9514 */ // Combiner Rule #40: extract_vector_element_build_vector_trunc8
9064 /* 9514 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9065 /* 9517 */ // Label 524: @9517
9066 /* 9517 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(9541), // Rule ID 41 //
9067 /* 9522 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
9068 /* 9525 */ // MIs[0] root
9069 /* 9525 */ // No operand predicates
9070 /* 9525 */ // MIs[0] src
9071 /* 9525 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9072 /* 9529 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9073 /* 9533 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
9074 /* 9536 */ // MIs[1] x
9075 /* 9536 */ // No operand predicates
9076 /* 9536 */ // MIs[1] y
9077 /* 9536 */ // No operand predicates
9078 /* 9536 */ // MIs[1] z
9079 /* 9536 */ // No operand predicates
9080 /* 9536 */ // MIs[1] a
9081 /* 9536 */ // No operand predicates
9082 /* 9536 */ // MIs[1] b
9083 /* 9536 */ // No operand predicates
9084 /* 9536 */ // MIs[1] c
9085 /* 9536 */ // No operand predicates
9086 /* 9536 */ // MIs[1] d
9087 /* 9536 */ // No operand predicates
9088 /* 9536 */ // MIs[0] idx
9089 /* 9536 */ // No operand predicates
9090 /* 9536 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9091 /* 9538 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc7
9092 /* 9538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9093 /* 9541 */ // Label 525: @9541
9094 /* 9541 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(9565), // Rule ID 40 //
9095 /* 9546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
9096 /* 9549 */ // MIs[0] root
9097 /* 9549 */ // No operand predicates
9098 /* 9549 */ // MIs[0] src
9099 /* 9549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9100 /* 9553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9101 /* 9557 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
9102 /* 9560 */ // MIs[1] x
9103 /* 9560 */ // No operand predicates
9104 /* 9560 */ // MIs[1] y
9105 /* 9560 */ // No operand predicates
9106 /* 9560 */ // MIs[1] z
9107 /* 9560 */ // No operand predicates
9108 /* 9560 */ // MIs[1] a
9109 /* 9560 */ // No operand predicates
9110 /* 9560 */ // MIs[1] b
9111 /* 9560 */ // No operand predicates
9112 /* 9560 */ // MIs[1] c
9113 /* 9560 */ // No operand predicates
9114 /* 9560 */ // MIs[0] idx
9115 /* 9560 */ // No operand predicates
9116 /* 9560 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9117 /* 9562 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc6
9118 /* 9562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9119 /* 9565 */ // Label 526: @9565
9120 /* 9565 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(9589), // Rule ID 39 //
9121 /* 9570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
9122 /* 9573 */ // MIs[0] root
9123 /* 9573 */ // No operand predicates
9124 /* 9573 */ // MIs[0] src
9125 /* 9573 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9126 /* 9577 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9127 /* 9581 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
9128 /* 9584 */ // MIs[1] x
9129 /* 9584 */ // No operand predicates
9130 /* 9584 */ // MIs[1] y
9131 /* 9584 */ // No operand predicates
9132 /* 9584 */ // MIs[1] z
9133 /* 9584 */ // No operand predicates
9134 /* 9584 */ // MIs[1] a
9135 /* 9584 */ // No operand predicates
9136 /* 9584 */ // MIs[1] b
9137 /* 9584 */ // No operand predicates
9138 /* 9584 */ // MIs[0] idx
9139 /* 9584 */ // No operand predicates
9140 /* 9584 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9141 /* 9586 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc5
9142 /* 9586 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9143 /* 9589 */ // Label 527: @9589
9144 /* 9589 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(9613), // Rule ID 38 //
9145 /* 9594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
9146 /* 9597 */ // MIs[0] root
9147 /* 9597 */ // No operand predicates
9148 /* 9597 */ // MIs[0] src
9149 /* 9597 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9150 /* 9601 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9151 /* 9605 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
9152 /* 9608 */ // MIs[1] x
9153 /* 9608 */ // No operand predicates
9154 /* 9608 */ // MIs[1] y
9155 /* 9608 */ // No operand predicates
9156 /* 9608 */ // MIs[1] z
9157 /* 9608 */ // No operand predicates
9158 /* 9608 */ // MIs[1] a
9159 /* 9608 */ // No operand predicates
9160 /* 9608 */ // MIs[0] idx
9161 /* 9608 */ // No operand predicates
9162 /* 9608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9163 /* 9610 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc4
9164 /* 9610 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9165 /* 9613 */ // Label 528: @9613
9166 /* 9613 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(9637), // Rule ID 37 //
9167 /* 9618 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
9168 /* 9621 */ // MIs[0] root
9169 /* 9621 */ // No operand predicates
9170 /* 9621 */ // MIs[0] src
9171 /* 9621 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9172 /* 9625 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9173 /* 9629 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
9174 /* 9632 */ // MIs[1] x
9175 /* 9632 */ // No operand predicates
9176 /* 9632 */ // MIs[1] y
9177 /* 9632 */ // No operand predicates
9178 /* 9632 */ // MIs[1] z
9179 /* 9632 */ // No operand predicates
9180 /* 9632 */ // MIs[0] idx
9181 /* 9632 */ // No operand predicates
9182 /* 9632 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9183 /* 9634 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc3
9184 /* 9634 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9185 /* 9637 */ // Label 529: @9637
9186 /* 9637 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(9671), // Rule ID 33 //
9187 /* 9642 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
9188 /* 9645 */ // MIs[0] root
9189 /* 9645 */ // No operand predicates
9190 /* 9645 */ // MIs[0] src
9191 /* 9645 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9192 /* 9649 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
9193 /* 9653 */ // MIs[1] x
9194 /* 9653 */ // No operand predicates
9195 /* 9653 */ // MIs[1] value
9196 /* 9653 */ // No operand predicates
9197 /* 9653 */ // MIs[1] idx
9198 /* 9653 */ // No operand predicates
9199 /* 9653 */ // MIs[0] idx
9200 /* 9653 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
9201 /* 9658 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
9202 /* 9663 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9203 /* 9665 */ // Combiner Rule #31: extract_vector_element_not_const
9204 /* 9665 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
9205 /* 9670 */ GIR_EraseRootFromParent_Done,
9206 /* 9671 */ // Label 530: @9671
9207 /* 9671 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(9692), // Rule ID 34 //
9208 /* 9676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
9209 /* 9679 */ // MIs[0] root
9210 /* 9679 */ // No operand predicates
9211 /* 9679 */ // MIs[0] src
9212 /* 9679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9213 /* 9683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
9214 /* 9687 */ // MIs[1] x
9215 /* 9687 */ // No operand predicates
9216 /* 9687 */ // MIs[1] value
9217 /* 9687 */ // No operand predicates
9218 /* 9687 */ // MIs[1] idx2
9219 /* 9687 */ // No operand predicates
9220 /* 9687 */ // MIs[0] idx1
9221 /* 9687 */ // No operand predicates
9222 /* 9687 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9223 /* 9689 */ // Combiner Rule #32: extract_vector_element_different_indices
9224 /* 9689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
9225 /* 9692 */ // Label 531: @9692
9226 /* 9692 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(9721), // Rule ID 43 //
9227 /* 9697 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
9228 /* 9700 */ // MIs[0] root
9229 /* 9700 */ // No operand predicates
9230 /* 9700 */ // MIs[0] src
9231 /* 9700 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9232 /* 9704 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
9233 /* 9708 */ // MIs[1] src1
9234 /* 9708 */ // No operand predicates
9235 /* 9708 */ // MIs[1] src2
9236 /* 9708 */ // No operand predicates
9237 /* 9708 */ // MIs[1] mask
9238 /* 9708 */ // No operand predicates
9239 /* 9708 */ // MIs[0] idx
9240 /* 9708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9241 /* 9712 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9242 /* 9716 */ // MIs[2] imm
9243 /* 9716 */ // No operand predicates
9244 /* 9716 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9245 /* 9718 */ // Combiner Rule #41: extract_vector_element_shuffle_vector
9246 /* 9718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
9247 /* 9721 */ // Label 532: @9721
9248 /* 9721 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(9745), // Rule ID 36 //
9249 /* 9726 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
9250 /* 9729 */ // MIs[0] root
9251 /* 9729 */ // No operand predicates
9252 /* 9729 */ // MIs[0] src
9253 /* 9729 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9254 /* 9733 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9255 /* 9737 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
9256 /* 9740 */ // MIs[1] x
9257 /* 9740 */ // No operand predicates
9258 /* 9740 */ // MIs[1] y
9259 /* 9740 */ // No operand predicates
9260 /* 9740 */ // MIs[0] idx
9261 /* 9740 */ // No operand predicates
9262 /* 9740 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9263 /* 9742 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc2
9264 /* 9742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9265 /* 9745 */ // Label 533: @9745
9266 /* 9745 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(9777), // Rule ID 35 //
9267 /* 9750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
9268 /* 9753 */ // MIs[0] root
9269 /* 9753 */ // No operand predicates
9270 /* 9753 */ // MIs[0] src
9271 /* 9753 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9272 /* 9757 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
9273 /* 9761 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
9274 /* 9764 */ // MIs[1] unused
9275 /* 9764 */ // No operand predicates
9276 /* 9764 */ // MIs[0] idx
9277 /* 9764 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9278 /* 9768 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9279 /* 9772 */ // MIs[2] imm
9280 /* 9772 */ // No operand predicates
9281 /* 9772 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9282 /* 9774 */ // Combiner Rule #33: extract_vector_element_build_vector
9283 /* 9774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
9284 /* 9777 */ // Label 534: @9777
9285 /* 9777 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(9801), // Rule ID 27 //
9286 /* 9782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
9287 /* 9785 */ // MIs[0] root
9288 /* 9785 */ // No operand predicates
9289 /* 9785 */ // MIs[0] vector
9290 /* 9785 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9291 /* 9789 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9292 /* 9793 */ // MIs[0] idx
9293 /* 9793 */ // No operand predicates
9294 /* 9793 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9295 /* 9795 */ // Combiner Rule #25: match_extract_of_element_undef_vector
9296 /* 9795 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9297 /* 9798 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9298 /* 9800 */ GIR_EraseRootFromParent_Done,
9299 /* 9801 */ // Label 535: @9801
9300 /* 9801 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(9825), // Rule ID 28 //
9301 /* 9806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
9302 /* 9809 */ // MIs[0] root
9303 /* 9809 */ // No operand predicates
9304 /* 9809 */ // MIs[0] vector
9305 /* 9809 */ // No operand predicates
9306 /* 9809 */ // MIs[0] idx
9307 /* 9809 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9308 /* 9813 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9309 /* 9817 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9310 /* 9819 */ // Combiner Rule #26: match_extract_of_element_undef_index
9311 /* 9819 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9312 /* 9822 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9313 /* 9824 */ GIR_EraseRootFromParent_Done,
9314 /* 9825 */ // Label 536: @9825
9315 /* 9825 */ GIM_Reject,
9316 /* 9826 */ // Label 100: @9826
9317 /* 9826 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(9837), // Rule ID 103 //
9318 /* 9831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
9319 /* 9834 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
9320 /* 9834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
9321 /* 9837 */ // Label 537: @9837
9322 /* 9837 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(9848), // Rule ID 105 //
9323 /* 9842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
9324 /* 9845 */ // Combiner Rule #86: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9325 /* 9845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
9326 /* 9848 */ // Label 538: @9848
9327 /* 9848 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(9859), // Rule ID 399 //
9328 /* 9853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
9329 /* 9856 */ // Combiner Rule #235: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
9330 /* 9856 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
9331 /* 9859 */ // Label 539: @9859
9332 /* 9859 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(9870), // Rule ID 401 //
9333 /* 9864 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
9334 /* 9867 */ // Combiner Rule #237: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9335 /* 9867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
9336 /* 9870 */ // Label 540: @9870
9337 /* 9870 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(9891), // Rule ID 400 //
9338 /* 9875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
9339 /* 9878 */ // MIs[0] root
9340 /* 9878 */ // No operand predicates
9341 /* 9878 */ // MIs[0] src1
9342 /* 9878 */ // No operand predicates
9343 /* 9878 */ // MIs[0] undef
9344 /* 9878 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9345 /* 9882 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9346 /* 9886 */ // MIs[0] mask
9347 /* 9886 */ // No operand predicates
9348 /* 9886 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9349 /* 9888 */ // Combiner Rule #236: combine_shuffle_undef_rhs
9350 /* 9888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
9351 /* 9891 */ // Label 541: @9891
9352 /* 9891 */ GIM_Reject,
9353 /* 9892 */ // Label 101: @9892
9354 /* 9892 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(9903), // Rule ID 297 //
9355 /* 9897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9356 /* 9900 */ // MIs[0] dst
9357 /* 9900 */ // No operand predicates
9358 /* 9900 */ // MIs[0] mi.src
9359 /* 9900 */ // No operand predicates
9360 /* 9900 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[2]]
9361 /* 9900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9362 /* 9903 */ // Label 542: @9903
9363 /* 9903 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(9914), // Rule ID 425 //
9364 /* 9908 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
9365 /* 9911 */ // MIs[0] dst
9366 /* 9911 */ // No operand predicates
9367 /* 9911 */ // MIs[0] src
9368 /* 9911 */ // No operand predicates
9369 /* 9911 */ // Combiner Rule #259: cttz_to_cttz_zero_poison
9370 /* 9911 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
9371 /* 9914 */ // Label 543: @9914
9372 /* 9914 */ GIM_Reject,
9373 /* 9915 */ // Label 102: @9915
9374 /* 9915 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(9926), // Rule ID 298 //
9375 /* 9920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9376 /* 9923 */ // MIs[0] dst
9377 /* 9923 */ // No operand predicates
9378 /* 9923 */ // MIs[0] mi.src
9379 /* 9923 */ // No operand predicates
9380 /* 9923 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[3]]
9381 /* 9923 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9382 /* 9926 */ // Label 544: @9926
9383 /* 9926 */ GIM_Reject,
9384 /* 9927 */ // Label 103: @9927
9385 /* 9927 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(9938), // Rule ID 295 //
9386 /* 9932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9387 /* 9935 */ // MIs[0] dst
9388 /* 9935 */ // No operand predicates
9389 /* 9935 */ // MIs[0] mi.src
9390 /* 9935 */ // No operand predicates
9391 /* 9935 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[0]]
9392 /* 9935 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9393 /* 9938 */ // Label 545: @9938
9394 /* 9938 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(9949), // Rule ID 422 //
9395 /* 9943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
9396 /* 9946 */ // MIs[0] dst
9397 /* 9946 */ // No operand predicates
9398 /* 9946 */ // MIs[0] src
9399 /* 9946 */ // No operand predicates
9400 /* 9946 */ // Combiner Rule #256: ctlz_to_ctls
9401 /* 9946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
9402 /* 9949 */ // Label 546: @9949
9403 /* 9949 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(9960), // Rule ID 424 //
9404 /* 9954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
9405 /* 9957 */ // MIs[0] dst
9406 /* 9957 */ // No operand predicates
9407 /* 9957 */ // MIs[0] src
9408 /* 9957 */ // No operand predicates
9409 /* 9957 */ // Combiner Rule #258: ctlz_to_ctlz_zero_poison
9410 /* 9957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
9411 /* 9960 */ // Label 547: @9960
9412 /* 9960 */ GIM_Reject,
9413 /* 9961 */ // Label 104: @9961
9414 /* 9961 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(9972), // Rule ID 296 //
9415 /* 9966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9416 /* 9969 */ // MIs[0] dst
9417 /* 9969 */ // No operand predicates
9418 /* 9969 */ // MIs[0] mi.src
9419 /* 9969 */ // No operand predicates
9420 /* 9969 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[1]]
9421 /* 9969 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9422 /* 9972 */ // Label 548: @9972
9423 /* 9972 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(9983), // Rule ID 423 //
9424 /* 9977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9425 /* 9980 */ // MIs[0] dst
9426 /* 9980 */ // No operand predicates
9427 /* 9980 */ // MIs[0] src
9428 /* 9980 */ // No operand predicates
9429 /* 9980 */ // Combiner Rule #257: ctlz_zero_poison_to_ctls
9430 /* 9980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
9431 /* 9983 */ // Label 549: @9983
9432 /* 9983 */ GIM_Reject,
9433 /* 9984 */ // Label 105: @9984
9434 /* 9984 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(9995), // Rule ID 299 //
9435 /* 9989 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9436 /* 9992 */ // MIs[0] dst
9437 /* 9992 */ // No operand predicates
9438 /* 9992 */ // MIs[0] mi.src
9439 /* 9992 */ // No operand predicates
9440 /* 9992 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[4]]
9441 /* 9992 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9442 /* 9995 */ // Label 550: @9995
9443 /* 9995 */ GIM_Reject,
9444 /* 9996 */ // Label 106: @9996
9445 /* 9996 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(10007), // Rule ID 301 //
9446 /* 10001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9447 /* 10004 */ // MIs[0] dst
9448 /* 10004 */ // No operand predicates
9449 /* 10004 */ // MIs[0] mi.src
9450 /* 10004 */ // No operand predicates
9451 /* 10004 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[6]]
9452 /* 10004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9453 /* 10007 */ // Label 551: @10007
9454 /* 10007 */ GIM_Reject,
9455 /* 10008 */ // Label 107: @10008
9456 /* 10008 */ GIM_Try, /*On fail goto*//*Label 552*/ GIMT_Encode4(10052), // Rule ID 252 //
9457 /* 10013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
9458 /* 10016 */ // MIs[0] d
9459 /* 10016 */ // No operand predicates
9460 /* 10016 */ // MIs[0] src
9461 /* 10016 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9462 /* 10020 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
9463 /* 10024 */ // MIs[1] rev
9464 /* 10024 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9465 /* 10028 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9466 /* 10032 */ // MIs[2] val
9467 /* 10032 */ // No operand predicates
9468 /* 10032 */ // MIs[1] amt
9469 /* 10032 */ // No operand predicates
9470 /* 10032 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
9471 /* 10036 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9472 /* 10038 */ // Combiner Rule #185: bitreverse_lshr
9473 /* 10038 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
9474 /* 10041 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9475 /* 10043 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9476 /* 10047 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9477 /* 10051 */ GIR_EraseRootFromParent_Done,
9478 /* 10052 */ // Label 552: @10052
9479 /* 10052 */ GIM_Try, /*On fail goto*//*Label 553*/ GIMT_Encode4(10096), // Rule ID 251 //
9480 /* 10057 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
9481 /* 10060 */ // MIs[0] d
9482 /* 10060 */ // No operand predicates
9483 /* 10060 */ // MIs[0] src
9484 /* 10060 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9485 /* 10064 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
9486 /* 10068 */ // MIs[1] rev
9487 /* 10068 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9488 /* 10072 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9489 /* 10076 */ // MIs[2] val
9490 /* 10076 */ // No operand predicates
9491 /* 10076 */ // MIs[1] amt
9492 /* 10076 */ // No operand predicates
9493 /* 10076 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
9494 /* 10080 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9495 /* 10082 */ // Combiner Rule #184: bitreverse_shl
9496 /* 10082 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
9497 /* 10085 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9498 /* 10087 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9499 /* 10091 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9500 /* 10095 */ GIR_EraseRootFromParent_Done,
9501 /* 10096 */ // Label 553: @10096
9502 /* 10096 */ GIM_Try, /*On fail goto*//*Label 554*/ GIMT_Encode4(10107), // Rule ID 302 //
9503 /* 10101 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9504 /* 10104 */ // MIs[0] dst
9505 /* 10104 */ // No operand predicates
9506 /* 10104 */ // MIs[0] mi.src
9507 /* 10104 */ // No operand predicates
9508 /* 10104 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[7]]
9509 /* 10104 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9510 /* 10107 */ // Label 554: @10107
9511 /* 10107 */ GIM_Reject,
9512 /* 10108 */ // Label 108: @10108
9513 /* 10108 */ GIM_Try, /*On fail goto*//*Label 555*/ GIMT_Encode4(10129), // Rule ID 199 //
9514 /* 10113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
9515 /* 10116 */ // MIs[0] dst
9516 /* 10116 */ // No operand predicates
9517 /* 10116 */ // MIs[0] src0
9518 /* 10116 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9519 /* 10120 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9520 /* 10124 */ // MIs[1] cst
9521 /* 10124 */ // No operand predicates
9522 /* 10124 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9523 /* 10126 */ // Combiner Rule #155: constant_fold_fceil
9524 /* 10126 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9525 /* 10129 */ // Label 555: @10129
9526 /* 10129 */ GIM_Reject,
9527 /* 10130 */ // Label 109: @10130
9528 /* 10130 */ GIM_Try, /*On fail goto*//*Label 556*/ GIMT_Encode4(10151), // Rule ID 195 //
9529 /* 10135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
9530 /* 10138 */ // MIs[0] dst
9531 /* 10138 */ // No operand predicates
9532 /* 10138 */ // MIs[0] src0
9533 /* 10138 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9534 /* 10142 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9535 /* 10146 */ // MIs[1] cst
9536 /* 10146 */ // No operand predicates
9537 /* 10146 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9538 /* 10148 */ // Combiner Rule #151: constant_fold_fsqrt
9539 /* 10148 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9540 /* 10151 */ // Label 556: @10151
9541 /* 10151 */ GIM_Reject,
9542 /* 10152 */ // Label 110: @10152
9543 /* 10152 */ GIM_Try, /*On fail goto*//*Label 557*/ GIMT_Encode4(10173), // Rule ID 200 //
9544 /* 10157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
9545 /* 10160 */ // MIs[0] dst
9546 /* 10160 */ // No operand predicates
9547 /* 10160 */ // MIs[0] src0
9548 /* 10160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9549 /* 10164 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9550 /* 10168 */ // MIs[1] cst
9551 /* 10168 */ // No operand predicates
9552 /* 10168 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9553 /* 10170 */ // Combiner Rule #156: constant_fold_ffloor
9554 /* 10170 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9555 /* 10173 */ // Label 557: @10173
9556 /* 10173 */ GIM_Reject,
9557 /* 10174 */ // Label 111: @10174
9558 /* 10174 */ GIM_Try, /*On fail goto*//*Label 558*/ GIMT_Encode4(10195), // Rule ID 204 //
9559 /* 10179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
9560 /* 10182 */ // MIs[0] dst
9561 /* 10182 */ // No operand predicates
9562 /* 10182 */ // MIs[0] src0
9563 /* 10182 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9564 /* 10186 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9565 /* 10190 */ // MIs[1] cst
9566 /* 10190 */ // No operand predicates
9567 /* 10190 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9568 /* 10192 */ // Combiner Rule #160: constant_fold_frint
9569 /* 10192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9570 /* 10195 */ // Label 558: @10195
9571 /* 10195 */ GIM_Reject,
9572 /* 10196 */ // Label 112: @10196
9573 /* 10196 */ GIM_Try, /*On fail goto*//*Label 559*/ GIMT_Encode4(10217), // Rule ID 205 //
9574 /* 10201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
9575 /* 10204 */ // MIs[0] dst
9576 /* 10204 */ // No operand predicates
9577 /* 10204 */ // MIs[0] src0
9578 /* 10204 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9579 /* 10208 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9580 /* 10212 */ // MIs[1] cst
9581 /* 10212 */ // No operand predicates
9582 /* 10212 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9583 /* 10214 */ // Combiner Rule #161: constant_fold_fnearbyint
9584 /* 10214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9585 /* 10217 */ // Label 559: @10217
9586 /* 10217 */ GIM_Reject,
9587 /* 10218 */ // Label 113: @10218
9588 /* 10218 */ GIM_Reject,
9589 /* 10219 */ }; // Size: 10219 bytes
9590 return MatchTable0;
9591}
9592#undef GIMT_Encode2
9593#undef GIMT_Encode4
9594#undef GIMT_Encode8
9595
9596
9597#endif // GET_GICOMBINER_IMPL
9598
9599#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
9600
9601AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
9602AvailableFunctionFeatures()
9603
9604#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
9605
9606#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
9607
9608, State(0),
9609ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
9610
9611#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
9612
9613