1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AMDGPUPreLegalizerCombinerImpl 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 AMDGPUPreLegalizerCombinerImplRuleConfig {
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: // 20 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 'f': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+1, "oldable_fneg", 12) != 0)
287 break;
288 return 274; // "foldable_fneg"
289 case 'l': // 1 string to match.
290 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
291 break;
292 return 75; // "load_and_mask"
293 case 'm': // 3 strings to match.
294 switch (RuleIdentifier[1]) {
295 default: break;
296 case 'a': // 1 string to match.
297 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
298 break;
299 return 133; // "match_selects"
300 case 'e': // 1 string to match.
301 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
302 break;
303 return 241; // "merge_unmerge"
304 case 'u': // 1 string to match.
305 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
306 break;
307 return 44; // "mul_of_vscale"
308 }
309 break;
310 case 'r': // 1 string to match.
311 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
312 break;
313 return 141; // "redundant_and"
314 case 's': // 6 strings to match.
315 switch (RuleIdentifier[1]) {
316 default: break;
317 case 'a': // 1 string to match.
318 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
319 break;
320 return 92; // "same_val_zero"
321 case 'd': // 1 string to match.
322 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
323 break;
324 return 215; // "sdiv_by_const"
325 case 'h': // 1 string to match.
326 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
327 break;
328 return 45; // "shl_of_vscale"
329 case 'r': // 1 string to match.
330 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
331 break;
332 return 211; // "srem_by_const"
333 case 'u': // 2 strings to match.
334 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
335 break;
336 switch (RuleIdentifier[4]) {
337 default: break;
338 case 'm': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
340 break;
341 return 263; // "sub_minus_one"
342 case 'o': // 1 string to match.
343 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
344 break;
345 return 46; // "sub_of_vscale"
346 }
347 break;
348 }
349 break;
350 case 'u': // 4 strings to match.
351 switch (RuleIdentifier[1]) {
352 default: break;
353 case 'd': // 1 string to match.
354 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
355 break;
356 return 214; // "udiv_by_const"
357 case 'n': // 2 strings to match.
358 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
359 break;
360 switch (RuleIdentifier[8]) {
361 default: break;
362 case 'm': // 1 string to match.
363 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
364 break;
365 return 240; // "unmerge_merge"
366 case 'u': // 1 string to match.
367 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
368 break;
369 return 243; // "unmerge_undef"
370 }
371 break;
372 case 'r': // 1 string to match.
373 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
374 break;
375 return 210; // "urem_by_const"
376 }
377 break;
378 }
379 break;
380 case 14: // 17 strings to match.
381 switch (RuleIdentifier[0]) {
382 default: break;
383 case 'A': // 2 strings to match.
384 switch (RuleIdentifier[1]) {
385 default: break;
386 case 'M': // 1 string to match.
387 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
388 break;
389 return 18; // "AMinusC1PlusC2"
390 case 'P': // 1 string to match.
391 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
392 break;
393 return 14; // "APlusC1MinusC2"
394 }
395 break;
396 case 'C': // 1 string to match.
397 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
398 break;
399 return 15; // "C2MinusAPlusC1"
400 case 'N': // 1 string to match.
401 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
402 break;
403 return 13; // "NotAPlusNegOne"
404 case 'a': // 2 strings to match.
405 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
406 break;
407 switch (RuleIdentifier[10]) {
408 default: break;
409 case 's': // 1 string to match.
410 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
411 break;
412 return 58; // "anyext_of_sext"
413 case 'z': // 1 string to match.
414 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
415 break;
416 return 57; // "anyext_of_zext"
417 }
418 break;
419 case 'b': // 3 strings to match.
420 if (RuleIdentifier[1] != 'i')
421 break;
422 switch (RuleIdentifier[2]) {
423 default: break;
424 case 'n': // 2 strings to match.
425 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
426 break;
427 switch (RuleIdentifier[6]) {
428 default: break;
429 case 's': // 1 string to match.
430 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
431 break;
432 return 91; // "binop_same_val"
433 case 'w': // 1 string to match.
434 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
435 break;
436 return 262; // "binop_with_neg"
437 }
438 break;
439 case 't': // 1 string to match.
440 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
441 break;
442 return 184; // "bitreverse_shl"
443 }
444 break;
445 case 'f': // 2 strings to match.
446 switch (RuleIdentifier[1]) {
447 default: break;
448 case 'a': // 1 string to match.
449 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
450 break;
451 return 196; // "fabs_fneg_fold"
452 case 'n': // 1 string to match.
453 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
454 break;
455 return 98; // "fneg_fneg_fold"
456 }
457 break;
458 case 'm': // 1 string to match.
459 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
460 break;
461 return 23; // "mul_by_neg_one"
462 case 'r': // 1 string to match.
463 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
464 break;
465 return 115; // "reassoc_ptradd"
466 case 's': // 3 strings to match.
467 switch (RuleIdentifier[1]) {
468 default: break;
469 case 'e': // 2 strings to match.
470 switch (RuleIdentifier[2]) {
471 default: break;
472 case 'l': // 1 string to match.
473 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
474 break;
475 return 60; // "select_of_zext"
476 case 'x': // 1 string to match.
477 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
478 break;
479 return 55; // "sext_of_anyext"
480 }
481 break;
482 case 'h': // 1 string to match.
483 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
484 break;
485 return 114; // "shifts_too_big"
486 }
487 break;
488 case 'z': // 1 string to match.
489 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
490 break;
491 return 53; // "zext_of_anyext"
492 }
493 break;
494 case 15: // 14 strings to match.
495 switch (RuleIdentifier[0]) {
496 default: break;
497 case 'A': // 2 strings to match.
498 switch (RuleIdentifier[1]) {
499 default: break;
500 case 'M': // 1 string to match.
501 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
502 break;
503 return 16; // "AMinusC1MinusC2"
504 case 'P': // 1 string to match.
505 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
506 break;
507 return 3; // "APlusZeroMinusB"
508 }
509 break;
510 case 'C': // 1 string to match.
511 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
512 break;
513 return 17; // "C1Minus2MinusC2"
514 case 'Z': // 1 string to match.
515 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
516 break;
517 return 2; // "ZeroMinusAPlusB"
518 case 'a': // 2 strings to match.
519 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
520 break;
521 switch (RuleIdentifier[8]) {
522 default: break;
523 case 's': // 1 string to match.
524 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
525 break;
526 return 270; // "avgceil_s_match"
527 case 'u': // 1 string to match.
528 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
529 break;
530 return 269; // "avgceil_u_match"
531 }
532 break;
533 case 'b': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
535 break;
536 return 185; // "bitreverse_lshr"
537 case 'e': // 1 string to match.
538 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
539 break;
540 return 74; // "extending_loads"
541 case 'i': // 1 string to match.
542 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
543 break;
544 return 24; // "idempotent_prop"
545 case 'l': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
547 break;
548 return 175; // "load_or_combine"
549 case 'n': // 1 string to match.
550 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
551 break;
552 return 68; // "narrow_binop_or"
553 case 'o': // 1 string to match.
554 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
555 break;
556 return 165; // "overlapping_and"
557 case 's': // 1 string to match.
558 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
559 break;
560 return 89; // "select_same_val"
561 case 'z': // 1 string to match.
562 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
563 break;
564 return 144; // "zext_trunc_fold"
565 }
566 break;
567 case 16: // 19 strings to match.
568 switch (RuleIdentifier[0]) {
569 default: break;
570 case 'A': // 1 string to match.
571 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
572 break;
573 return 11; // "AMinusZeroMinusB"
574 case 'a': // 3 strings to match.
575 switch (RuleIdentifier[1]) {
576 default: break;
577 case 'n': // 1 string to match.
578 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
579 break;
580 return 56; // "anyext_of_anyext"
581 case 'v': // 2 strings to match.
582 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
583 break;
584 switch (RuleIdentifier[9]) {
585 default: break;
586 case 's': // 1 string to match.
587 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
588 break;
589 return 268; // "avgfloor_s_match"
590 case 'u': // 1 string to match.
591 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
592 break;
593 return 267; // "avgfloor_u_match"
594 }
595 break;
596 }
597 break;
598 case 'c': // 1 string to match.
599 if (memcmp(RuleIdentifier.data()+1, "lamp_i64_to_i16", 15) != 0)
600 break;
601 return 273; // "clamp_i64_to_i16"
602 case 'n': // 5 strings to match.
603 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
604 break;
605 switch (RuleIdentifier[13]) {
606 default: break;
607 case 'a': // 2 strings to match.
608 switch (RuleIdentifier[14]) {
609 default: break;
610 case 'd': // 1 string to match.
611 if (RuleIdentifier[15] != 'd')
612 break;
613 return 64; // "narrow_binop_add"
614 case 'n': // 1 string to match.
615 if (RuleIdentifier[15] != 'd')
616 break;
617 return 67; // "narrow_binop_and"
618 }
619 break;
620 case 'm': // 1 string to match.
621 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
622 break;
623 return 66; // "narrow_binop_mul"
624 case 's': // 1 string to match.
625 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
626 break;
627 return 65; // "narrow_binop_sub"
628 case 'x': // 1 string to match.
629 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
630 break;
631 return 69; // "narrow_binop_xor"
632 }
633 break;
634 case 'o': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
636 break;
637 return 224; // "or_and_xor_to_or"
638 case 's': // 5 strings to match.
639 switch (RuleIdentifier[1]) {
640 default: break;
641 case 'e': // 3 strings to match.
642 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
643 break;
644 switch (RuleIdentifier[7]) {
645 default: break;
646 case 'o': // 1 string to match.
647 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
648 break;
649 return 61; // "select_of_anyext"
650 case 't': // 1 string to match.
651 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
652 break;
653 return 218; // "select_to_minmax"
654 case 'u': // 1 string to match.
655 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
656 break;
657 return 130; // "select_undef_cmp"
658 }
659 break;
660 case 'u': // 2 strings to match.
661 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
662 break;
663 switch (RuleIdentifier[5]) {
664 default: break;
665 case 'f': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
667 break;
668 return 264; // "sub_of_mul_const"
669 case 'n': // 1 string to match.
670 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
671 break;
672 return 261; // "sub_one_from_sub"
673 }
674 break;
675 }
676 break;
677 case 't': // 2 strings to match.
678 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
679 break;
680 switch (RuleIdentifier[12]) {
681 default: break;
682 case 's': // 1 string to match.
683 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
684 break;
685 return 50; // "truncate_of_sext"
686 case 'z': // 1 string to match.
687 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
688 break;
689 return 49; // "truncate_of_zext"
690 }
691 break;
692 case 'u': // 1 string to match.
693 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
694 break;
695 return 77; // "undef_to_fp_zero"
696 }
697 break;
698 case 17: // 19 strings to match.
699 switch (RuleIdentifier[0]) {
700 default: break;
701 case 'A': // 2 strings to match.
702 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
703 break;
704 switch (RuleIdentifier[11]) {
705 default: break;
706 case 'A': // 1 string to match.
707 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
708 break;
709 return 8; // "APlusBMinusAplusC"
710 case 'C': // 1 string to match.
711 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
712 break;
713 return 10; // "APlusBMinusCPlusA"
714 }
715 break;
716 case 'a': // 3 strings to match.
717 switch (RuleIdentifier[1]) {
718 default: break;
719 case 'd': // 1 string to match.
720 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
721 break;
722 return 22; // "add_p2i_to_ptradd"
723 case 'n': // 2 strings to match.
724 switch (RuleIdentifier[2]) {
725 default: break;
726 case 'd': // 1 string to match.
727 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
728 break;
729 return 226; // "and_xor_or_to_and"
730 case 'y': // 1 string to match.
731 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
732 break;
733 return 97; // "anyext_trunc_fold"
734 }
735 break;
736 }
737 break;
738 case 'c': // 4 strings to match.
739 switch (RuleIdentifier[1]) {
740 default: break;
741 case 'a': // 2 strings to match.
742 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
743 break;
744 switch (RuleIdentifier[13]) {
745 default: break;
746 case 'f': // 1 string to match.
747 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
748 break;
749 return 119; // "canonicalize_fcmp"
750 case 'i': // 1 string to match.
751 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
752 break;
753 return 118; // "canonicalize_icmp"
754 }
755 break;
756 case 'o': // 2 strings to match.
757 switch (RuleIdentifier[2]) {
758 default: break;
759 case 'm': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+3, "bine_or_of_and", 14) != 0)
761 break;
762 return 271; // "combine_or_of_and"
763 case 'n': // 1 string to match.
764 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
765 break;
766 return 193; // "constant_fold_fma"
767 }
768 break;
769 }
770 break;
771 case 'd': // 1 string to match.
772 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
773 break;
774 return 176; // "div_rem_to_divrem"
775 case 'e': // 1 string to match.
776 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
777 break;
778 return 87; // "erase_undef_store"
779 case 'f': // 1 string to match.
780 if (memcmp(RuleIdentifier.data()+1, "old_fabs_fptrunc", 16) != 0)
781 break;
782 return 275; // "fold_fabs_fptrunc"
783 case 'p': // 1 string to match.
784 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
785 break;
786 return 172; // "ptr_add_with_zero"
787 case 's': // 4 strings to match.
788 switch (RuleIdentifier[1]) {
789 default: break;
790 case 'e': // 2 strings to match.
791 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
792 break;
793 switch (RuleIdentifier[7]) {
794 default: break;
795 case 't': // 1 string to match.
796 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
797 break;
798 return 132; // "select_to_iminmax"
799 case 'z': // 1 string to match.
800 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
801 break;
802 return 134; // "select_zero_false"
803 }
804 break;
805 case 'h': // 1 string to match.
806 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
807 break;
808 return 173; // "shift_immed_chain"
809 case 'r': // 1 string to match.
810 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
811 break;
812 return 209; // "srem_pow2_to_mask"
813 }
814 break;
815 case 'u': // 2 strings to match.
816 switch (RuleIdentifier[1]) {
817 default: break;
818 case 'n': // 1 string to match.
819 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
820 break;
821 return 78; // "undef_to_int_zero"
822 case 'r': // 1 string to match.
823 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
824 break;
825 return 143; // "urem_pow2_to_mask"
826 }
827 break;
828 }
829 break;
830 case 18: // 13 strings to match.
831 switch (RuleIdentifier[0]) {
832 default: break;
833 case 'A': // 3 strings to match.
834 switch (RuleIdentifier[1]) {
835 default: break;
836 case 'M': // 2 strings to match.
837 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
838 break;
839 switch (RuleIdentifier[11]) {
840 default: break;
841 case 'B': // 1 string to match.
842 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
843 break;
844 return 7; // "AMinusBPlusBMinusC"
845 case 'C': // 1 string to match.
846 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
847 break;
848 return 6; // "AMinusBPlusCMinusA"
849 }
850 break;
851 case 'P': // 1 string to match.
852 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
853 break;
854 return 0; // "APlusBMinusCMinusB"
855 }
856 break;
857 case 'b': // 1 string to match.
858 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
859 break;
860 return 93; // "binop_left_to_zero"
861 case 'c': // 4 strings to match.
862 if (RuleIdentifier[1] != 'o')
863 break;
864 switch (RuleIdentifier[2]) {
865 default: break;
866 case 'm': // 2 strings to match.
867 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
868 break;
869 switch (RuleIdentifier[8]) {
870 default: break;
871 case 'm': // 1 string to match.
872 if (memcmp(RuleIdentifier.data()+9, "inmax_nan", 9) != 0)
873 break;
874 return 169; // "combine_minmax_nan"
875 case 'o': // 1 string to match.
876 if (memcmp(RuleIdentifier.data()+9, "r_s64_s32", 9) != 0)
877 break;
878 return 280; // "combine_or_s64_s32"
879 }
880 break;
881 case 'n': // 2 strings to match.
882 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
883 break;
884 switch (RuleIdentifier[15]) {
885 default: break;
886 case 'a': // 1 string to match.
887 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
888 break;
889 return 150; // "constant_fold_fabs"
890 case 'n': // 1 string to match.
891 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
892 break;
893 return 149; // "constant_fold_fneg"
894 }
895 break;
896 }
897 break;
898 case 'e': // 1 string to match.
899 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
900 break;
901 return 170; // "expand_const_fpowi"
902 case 'f': // 1 string to match.
903 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
904 break;
905 return 107; // "fptrunc_fpext_fold"
906 case 's': // 2 strings to match.
907 if (RuleIdentifier[1] != 'e')
908 break;
909 switch (RuleIdentifier[2]) {
910 default: break;
911 case 'l': // 1 string to match.
912 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
913 break;
914 return 62; // "select_of_truncate"
915 case 'x': // 1 string to match.
916 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
917 break;
918 return 127; // "sext_inreg_of_load"
919 }
920 break;
921 case 't': // 1 string to match.
922 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
923 break;
924 return 51; // "truncate_of_anyext"
925 }
926 break;
927 case 19: // 19 strings to match.
928 switch (RuleIdentifier[0]) {
929 default: break;
930 case 'A': // 1 string to match.
931 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
932 break;
933 return 1; // "AMinusBMinusCMinusC"
934 case 'b': // 1 string to match.
935 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
936 break;
937 return 94; // "binop_right_to_zero"
938 case 'c': // 7 strings to match.
939 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
940 break;
941 switch (RuleIdentifier[5]) {
942 default: break;
943 case '_': // 1 string to match.
944 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
945 break;
946 return 164; // "const_ptradd_to_i2p"
947 case 'a': // 6 strings to match.
948 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
949 break;
950 switch (RuleIdentifier[14]) {
951 default: break;
952 case 'b': // 1 string to match.
953 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
954 break;
955 return 191; // "constant_fold_binop"
956 case 'f': // 5 strings to match.
957 switch (RuleIdentifier[15]) {
958 default: break;
959 case 'c': // 1 string to match.
960 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
961 break;
962 return 155; // "constant_fold_fceil"
963 case 'l': // 1 string to match.
964 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
965 break;
966 return 152; // "constant_fold_flog2"
967 case 'p': // 1 string to match.
968 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
969 break;
970 return 154; // "constant_fold_fpext"
971 case 'r': // 1 string to match.
972 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
973 break;
974 return 160; // "constant_fold_frint"
975 case 's': // 1 string to match.
976 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
977 break;
978 return 151; // "constant_fold_fsqrt"
979 }
980 break;
981 }
982 break;
983 }
984 break;
985 case 'e': // 1 string to match.
986 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
987 break;
988 return 111; // "extend_through_phis"
989 case 'i': // 1 string to match.
990 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
991 break;
992 return 70; // "integer_of_truncate"
993 case 'm': // 1 string to match.
994 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
995 break;
996 return 247; // "merge_of_x_and_zero"
997 case 'p': // 1 string to match.
998 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
999 break;
1000 return 117; // "ptr_add_immed_chain"
1001 case 'r': // 2 strings to match.
1002 switch (RuleIdentifier[1]) {
1003 default: break;
1004 case 'e': // 1 string to match.
1005 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
1006 break;
1007 return 116; // "reassoc_comm_binops"
1008 case 'i': // 1 string to match.
1009 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
1010 break;
1011 return 90; // "right_identity_zero"
1012 }
1013 break;
1014 case 's': // 3 strings to match.
1015 switch (RuleIdentifier[1]) {
1016 default: break;
1017 case 'e': // 1 string to match.
1018 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
1019 break;
1020 return 131; // "select_constant_cmp"
1021 case 'i': // 2 strings to match.
1022 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
1023 break;
1024 switch (RuleIdentifier[9]) {
1025 default: break;
1026 case 'a': // 1 string to match.
1027 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
1028 break;
1029 return 112; // "simplify_add_to_sub"
1030 case 'n': // 1 string to match.
1031 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1032 break;
1033 return 230; // "simplify_neg_minmax"
1034 }
1035 break;
1036 }
1037 break;
1038 case 'u': // 1 string to match.
1039 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1040 break;
1041 return 82; // "unary_undef_to_zero"
1042 }
1043 break;
1044 case 20: // 9 strings to match.
1045 switch (RuleIdentifier[0]) {
1046 default: break;
1047 case 'a': // 1 string to match.
1048 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1049 break;
1050 return 199; // "and_or_disjoint_mask"
1051 case 'b': // 1 string to match.
1052 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1053 break;
1054 return 105; // "bitcast_bitcast_fold"
1055 case 'c': // 1 string to match.
1056 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1057 break;
1058 return 156; // "constant_fold_ffloor"
1059 case 'm': // 1 string to match.
1060 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1061 break;
1062 return 246; // "merge_of_x_and_undef"
1063 case 'o': // 1 string to match.
1064 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1065 break;
1066 return 225; // "or_and_xor_to_xor_or"
1067 case 'r': // 2 strings to match.
1068 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1069 break;
1070 switch (RuleIdentifier[4]) {
1071 default: break;
1072 case 'c': // 1 string to match.
1073 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1074 break;
1075 return 128; // "reduce_shl_of_extend"
1076 case 'n': // 1 string to match.
1077 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1078 break;
1079 return 136; // "redundant_sext_inreg"
1080 }
1081 break;
1082 case 'u': // 2 strings to match.
1083 if (RuleIdentifier[1] != 'n')
1084 break;
1085 switch (RuleIdentifier[2]) {
1086 default: break;
1087 case 'a': // 1 string to match.
1088 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1089 break;
1090 return 83; // "unary_undef_to_undef"
1091 case 'm': // 1 string to match.
1092 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1093 break;
1094 return 245; // "unmerge_zext_to_zext"
1095 }
1096 break;
1097 }
1098 break;
1099 case 21: // 11 strings to match.
1100 switch (RuleIdentifier[0]) {
1101 default: break;
1102 case 'a': // 1 string to match.
1103 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1104 break;
1105 return 227; // "and_xor_or_to_xor_and"
1106 case 'c': // 4 strings to match.
1107 if (RuleIdentifier[1] != 'o')
1108 break;
1109 switch (RuleIdentifier[2]) {
1110 default: break;
1111 case 'm': // 2 strings to match.
1112 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1113 break;
1114 switch (RuleIdentifier[8]) {
1115 default: break;
1116 case 'b': // 1 string to match.
1117 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1118 break;
1119 return 248; // "combine_build_unmerge"
1120 case 'c': // 1 string to match.
1121 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1122 break;
1123 return 231; // "combine_concat_vector"
1124 }
1125 break;
1126 case 'n': // 2 strings to match.
1127 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1128 break;
1129 switch (RuleIdentifier[14]) {
1130 default: break;
1131 case 'c': // 1 string to match.
1132 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1133 break;
1134 return 194; // "constant_fold_cast_op"
1135 case 'f': // 1 string to match.
1136 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1137 break;
1138 return 153; // "constant_fold_fptrunc"
1139 }
1140 break;
1141 }
1142 break;
1143 case 'f': // 1 string to match.
1144 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1145 break;
1146 return 216; // "fdiv_repeated_divison"
1147 case 'i': // 1 string to match.
1148 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1149 break;
1150 return 30; // "insert_vector_elt_oob"
1151 case 'l': // 1 string to match.
1152 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1153 break;
1154 return 255; // "lshr_of_trunc_of_lshr"
1155 case 'r': // 1 string to match.
1156 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1157 break;
1158 return 100; // "right_identity_one_fp"
1159 case 'u': // 2 strings to match.
1160 if (RuleIdentifier[1] != 'n')
1161 break;
1162 switch (RuleIdentifier[2]) {
1163 default: break;
1164 case 'd': // 1 string to match.
1165 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1166 break;
1167 return 79; // "undef_to_negative_one"
1168 case 'm': // 1 string to match.
1169 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1170 break;
1171 return 244; // "unmerge_dead_to_trunc"
1172 }
1173 break;
1174 }
1175 break;
1176 case 22: // 14 strings to match.
1177 switch (RuleIdentifier[0]) {
1178 default: break;
1179 case 'c': // 3 strings to match.
1180 if (RuleIdentifier[1] != 'o')
1181 break;
1182 switch (RuleIdentifier[2]) {
1183 default: break;
1184 case 'm': // 2 strings to match.
1185 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_", 13) != 0)
1186 break;
1187 switch (RuleIdentifier[16]) {
1188 default: break;
1189 case 'c': // 1 string to match.
1190 if (memcmp(RuleIdentifier.data()+17, "oncat", 5) != 0)
1191 break;
1192 return 235; // "combine_shuffle_concat"
1193 case 'v': // 1 string to match.
1194 if (memcmp(RuleIdentifier.data()+17, "ector", 5) != 0)
1195 break;
1196 return 276; // "combine_shuffle_vector"
1197 }
1198 break;
1199 case 'n': // 1 string to match.
1200 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1201 break;
1202 return 192; // "constant_fold_fp_binop"
1203 }
1204 break;
1205 case 'f': // 4 strings to match.
1206 switch (RuleIdentifier[1]) {
1207 default: break;
1208 case 'o': // 1 string to match.
1209 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1210 break;
1211 return 208; // "fold_binop_into_select"
1212 case 'u': // 3 strings to match.
1213 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1214 break;
1215 switch (RuleIdentifier[13]) {
1216 default: break;
1217 case 'l': // 1 string to match.
1218 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1219 break;
1220 return 180; // "funnel_shift_left_zero"
1221 case 'o': // 1 string to match.
1222 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1223 break;
1224 return 181; // "funnel_shift_overshift"
1225 case 't': // 1 string to match.
1226 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1227 break;
1228 return 178; // "funnel_shift_to_rotate"
1229 }
1230 break;
1231 }
1232 break;
1233 case 'i': // 1 string to match.
1234 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1235 break;
1236 return 121; // "icmp_to_lhs_known_bits"
1237 case 'm': // 1 string to match.
1238 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1239 break;
1240 return 250; // "match_subo_no_overflow"
1241 case 'p': // 1 string to match.
1242 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1243 break;
1244 return 84; // "propagate_undef_any_op"
1245 case 'r': // 2 strings to match.
1246 switch (RuleIdentifier[1]) {
1247 default: break;
1248 case 'e': // 1 string to match.
1249 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1250 break;
1251 return 198; // "redundant_neg_operands"
1252 case 'i': // 1 string to match.
1253 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1254 break;
1255 return 99; // "right_identity_one_int"
1256 }
1257 break;
1258 case 's': // 1 string to match.
1259 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1260 break;
1261 return 125; // "shl_ashr_to_sext_inreg"
1262 case 't': // 1 string to match.
1263 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1264 break;
1265 return 103; // "trunc_buildvector_fold"
1266 }
1267 break;
1268 case 23: // 6 strings to match.
1269 switch (RuleIdentifier[0]) {
1270 default: break;
1271 case 'b': // 1 string to match.
1272 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1273 break;
1274 return 63; // "buildvector_of_truncate"
1275 case 'f': // 1 string to match.
1276 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1277 break;
1278 return 179; // "funnel_shift_right_zero"
1279 case 'i': // 2 strings to match.
1280 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1281 break;
1282 switch (RuleIdentifier[21]) {
1283 default: break;
1284 case 's': // 1 string to match.
1285 if (RuleIdentifier[22] != 'i')
1286 break;
1287 return 162; // "itof_const_zero_fold_si"
1288 case 'u': // 1 string to match.
1289 if (RuleIdentifier[22] != 'i')
1290 break;
1291 return 163; // "itof_const_zero_fold_ui"
1292 }
1293 break;
1294 case 'p': // 1 string to match.
1295 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1296 break;
1297 return 85; // "propagate_undef_all_ops"
1298 case 't': // 1 string to match.
1299 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1300 break;
1301 return 254; // "truncusatu_to_fptouisat"
1302 }
1303 break;
1304 case 24: // 10 strings to match.
1305 switch (RuleIdentifier[0]) {
1306 default: break;
1307 case 'b': // 1 string to match.
1308 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1309 break;
1310 return 80; // "binop_left_undef_to_zero"
1311 case 'c': // 4 strings to match.
1312 switch (RuleIdentifier[1]) {
1313 default: break;
1314 case 'o': // 1 string to match.
1315 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1316 break;
1317 return 161; // "constant_fold_fnearbyint"
1318 case 't': // 3 strings to match.
1319 switch (RuleIdentifier[2]) {
1320 default: break;
1321 case 'l': // 2 strings to match.
1322 if (memcmp(RuleIdentifier.data()+3, "z_", 2) != 0)
1323 break;
1324 switch (RuleIdentifier[5]) {
1325 default: break;
1326 case 't': // 1 string to match.
1327 if (memcmp(RuleIdentifier.data()+6, "o_ctlz_zero_poison", 18) != 0)
1328 break;
1329 return 258; // "ctlz_to_ctlz_zero_poison"
1330 case 'z': // 1 string to match.
1331 if (memcmp(RuleIdentifier.data()+6, "ero_poison_to_ctls", 18) != 0)
1332 break;
1333 return 257; // "ctlz_zero_poison_to_ctls"
1334 }
1335 break;
1336 case 't': // 1 string to match.
1337 if (memcmp(RuleIdentifier.data()+3, "z_to_cttz_zero_poison", 21) != 0)
1338 break;
1339 return 259; // "cttz_to_cttz_zero_poison"
1340 }
1341 break;
1342 }
1343 break;
1344 case 'm': // 1 string to match.
1345 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1346 break;
1347 return 29; // "match_extract_of_element"
1348 case 'n': // 1 string to match.
1349 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1350 break;
1351 return 129; // "narrow_binop_feeding_and"
1352 case 's': // 2 strings to match.
1353 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1354 break;
1355 switch (RuleIdentifier[11]) {
1356 default: break;
1357 case 'o': // 1 string to match.
1358 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1359 break;
1360 return 59; // "sext_inreg_of_sext_inreg"
1361 case 't': // 1 string to match.
1362 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1363 break;
1364 return 145; // "sext_inreg_to_zext_inreg"
1365 }
1366 break;
1367 case 'x': // 1 string to match.
1368 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1369 break;
1370 return 171; // "xor_of_and_with_same_reg"
1371 }
1372 break;
1373 case 25: // 9 strings to match.
1374 switch (RuleIdentifier[0]) {
1375 default: break;
1376 case 'b': // 3 strings to match.
1377 switch (RuleIdentifier[1]) {
1378 default: break;
1379 case 'i': // 2 strings to match.
1380 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1381 break;
1382 switch (RuleIdentifier[22]) {
1383 default: break;
1384 case 'a': // 1 string to match.
1385 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1386 break;
1387 return 188; // "bitfield_extract_from_and"
1388 case 's': // 1 string to match.
1389 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1390 break;
1391 return 189; // "bitfield_extract_from_shr"
1392 }
1393 break;
1394 case 'u': // 1 string to match.
1395 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1396 break;
1397 return 102; // "buildvector_identity_fold"
1398 }
1399 break;
1400 case 'c': // 1 string to match.
1401 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1402 break;
1403 return 236; // "combine_shuffle_undef_rhs"
1404 case 'e': // 1 string to match.
1405 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1406 break;
1407 return 72; // "extract_vec_elt_build_vec"
1408 case 'n': // 1 string to match.
1409 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1410 break;
1411 return 126; // "neg_and_one_to_sext_inreg"
1412 case 'r': // 3 strings to match.
1413 switch (RuleIdentifier[1]) {
1414 default: break;
1415 case 'e': // 2 strings to match.
1416 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
1417 break;
1418 switch (RuleIdentifier[10]) {
1419 default: break;
1420 case 'a': // 1 string to match.
1421 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1422 break;
1423 return 138; // "redundant_aext_sext_inreg"
1424 case 'z': // 1 string to match.
1425 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1426 break;
1427 return 137; // "redundant_zext_sext_inreg"
1428 }
1429 break;
1430 case 'i': // 1 string to match.
1431 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
1432 break;
1433 return 110; // "right_identity_neg_one_fp"
1434 }
1435 break;
1436 }
1437 break;
1438 case 26: // 6 strings to match.
1439 switch (RuleIdentifier[0]) {
1440 default: break;
1441 case 'b': // 2 strings to match.
1442 if (RuleIdentifier[1] != 'i')
1443 break;
1444 switch (RuleIdentifier[2]) {
1445 default: break;
1446 case 'n': // 1 string to match.
1447 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1448 break;
1449 return 81; // "binop_right_undef_to_undef"
1450 case 't': // 1 string to match.
1451 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1452 break;
1453 return 106; // "bitcast_bitcast_to_bitcast"
1454 }
1455 break;
1456 case 'c': // 2 strings to match.
1457 if (RuleIdentifier[1] != 'o')
1458 break;
1459 switch (RuleIdentifier[2]) {
1460 default: break;
1461 case 'm': // 1 string to match.
1462 if (memcmp(RuleIdentifier.data()+3, "mute_fp_constant_to_rhs", 23) != 0)
1463 break;
1464 return 221; // "commute_fp_constant_to_rhs"
1465 case 'n': // 1 string to match.
1466 if (memcmp(RuleIdentifier.data()+3, "stant_fold_unary_int_op", 23) != 0)
1467 break;
1468 return 195; // "constant_fold_unary_int_op"
1469 }
1470 break;
1471 case 'f': // 1 string to match.
1472 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1473 break;
1474 return 177; // "funnel_shift_from_or_shift"
1475 case 'r': // 1 string to match.
1476 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1477 break;
1478 return 108; // "right_identity_neg_zero_fp"
1479 }
1480 break;
1481 case 27: // 6 strings to match.
1482 switch (RuleIdentifier[0]) {
1483 default: break;
1484 case 'c': // 2 strings to match.
1485 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1486 break;
1487 switch (RuleIdentifier[3]) {
1488 default: break;
1489 case 'b': // 1 string to match.
1490 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1491 break;
1492 return 238; // "combine_use_vector_truncate"
1493 case 'm': // 1 string to match.
1494 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1495 break;
1496 return 220; // "commute_int_constant_to_rhs"
1497 }
1498 break;
1499 case 'd': // 1 string to match.
1500 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1501 break;
1502 return 123; // "double_icmp_zero_or_combine"
1503 case 'r': // 1 string to match.
1504 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1505 break;
1506 return 124; // "redundant_binop_in_equality"
1507 case 't': // 1 string to match.
1508 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1509 break;
1510 return 104; // "trunc_lshr_buildvector_fold"
1511 case 'u': // 1 string to match.
1512 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1513 break;
1514 return 239; // "unmerge_anyext_build_vector"
1515 }
1516 break;
1517 case 28: // 5 strings to match.
1518 switch (RuleIdentifier[0]) {
1519 default: break;
1520 case 'c': // 1 string to match.
1521 if (memcmp(RuleIdentifier.data()+1, "ombine_or_s64_with_s32_mask", 27) != 0)
1522 break;
1523 return 278; // "combine_or_s64_with_s32_mask"
1524 case 'd': // 1 string to match.
1525 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1526 break;
1527 return 122; // "double_icmp_zero_and_combine"
1528 case 'o': // 1 string to match.
1529 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1530 break;
1531 return 148; // "opt_brcond_by_inverting_cond"
1532 case 'p': // 1 string to match.
1533 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1534 break;
1535 return 86; // "propagate_undef_shuffle_mask"
1536 case 's': // 1 string to match.
1537 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1538 break;
1539 return 174; // "shift_of_shifted_logic_chain"
1540 }
1541 break;
1542 case 29: // 7 strings to match.
1543 switch (RuleIdentifier[0]) {
1544 default: break;
1545 case 'b': // 1 string to match.
1546 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1547 break;
1548 return 190; // "bitfield_extract_from_shr_and"
1549 case 'c': // 5 strings to match.
1550 if (RuleIdentifier[1] != 'o')
1551 break;
1552 switch (RuleIdentifier[2]) {
1553 default: break;
1554 case 'm': // 3 strings to match.
1555 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1556 break;
1557 switch (RuleIdentifier[8]) {
1558 default: break;
1559 case 'a': // 1 string to match.
1560 if (memcmp(RuleIdentifier.data()+9, "nd_s64_with_s32_mask", 20) != 0)
1561 break;
1562 return 279; // "combine_and_s64_with_s32_mask"
1563 case 'e': // 1 string to match.
1564 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1565 break;
1566 return 76; // "combine_extracted_vector_load"
1567 case 's': // 1 string to match.
1568 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1569 break;
1570 return 237; // "combine_shuffle_disjoint_mask"
1571 }
1572 break;
1573 case 'n': // 2 strings to match.
1574 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1575 break;
1576 switch (RuleIdentifier[24]) {
1577 default: break;
1578 case 'r': // 1 string to match.
1579 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1580 break;
1581 return 158; // "constant_fold_intrinsic_round"
1582 case 't': // 1 string to match.
1583 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1584 break;
1585 return 157; // "constant_fold_intrinsic_trunc"
1586 }
1587 break;
1588 }
1589 break;
1590 case 'i': // 1 string to match.
1591 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1592 break;
1593 return 120; // "icmp_to_true_false_known_bits"
1594 }
1595 break;
1596 case 30: // 2 strings to match.
1597 switch (RuleIdentifier[0]) {
1598 default: break;
1599 case 'f': // 1 string to match.
1600 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1601 break;
1602 return 47; // "freeze_of_non_undef_non_poison"
1603 case 'r': // 1 string to match.
1604 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1605 break;
1606 return 109; // "right_identity_neg_zero_fp_nsz"
1607 }
1608 break;
1609 case 31: // 2 strings to match.
1610 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1611 break;
1612 switch (RuleIdentifier[22]) {
1613 default: break;
1614 case 'e': // 1 string to match.
1615 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1616 break;
1617 return 28; // "insert_vector_element_elt_undef"
1618 case 'i': // 1 string to match.
1619 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1620 break;
1621 return 27; // "insert_vector_element_idx_undef"
1622 }
1623 break;
1624 case 32: // 4 strings to match.
1625 switch (RuleIdentifier[0]) {
1626 default: break;
1627 case 'b': // 1 string to match.
1628 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1629 break;
1630 return 187; // "bitfield_extract_from_sext_inreg"
1631 case 'c': // 2 strings to match.
1632 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1633 break;
1634 switch (RuleIdentifier[9]) {
1635 default: break;
1636 case 'a': // 1 string to match.
1637 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1638 break;
1639 return 200; // "combine_fadd_fmul_to_fmad_or_fma"
1640 case 's': // 1 string to match.
1641 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1642 break;
1643 return 204; // "combine_fsub_fmul_to_fmad_or_fma"
1644 }
1645 break;
1646 case 'e': // 1 string to match.
1647 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1648 break;
1649 return 31; // "extract_vector_element_not_const"
1650 }
1651 break;
1652 case 33: // 3 strings to match.
1653 switch (RuleIdentifier[0]) {
1654 default: break;
1655 case 'c': // 1 string to match.
1656 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
1657 break;
1658 return 159; // "constant_fold_intrinsic_roundeven"
1659 case 'r': // 2 strings to match.
1660 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1661 break;
1662 switch (RuleIdentifier[10]) {
1663 default: break;
1664 case 'a': // 1 string to match.
1665 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1666 break;
1667 return 140; // "redundant_aext_unmerge_sext_inreg"
1668 case 'z': // 1 string to match.
1669 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1670 break;
1671 return 139; // "redundant_zext_unmerge_sext_inreg"
1672 }
1673 break;
1674 }
1675 break;
1676 case 34: // 2 strings to match.
1677 switch (RuleIdentifier[0]) {
1678 default: break;
1679 case 'c': // 1 string to match.
1680 if (memcmp(RuleIdentifier.data()+1, "ombine_fmul_with_select_to_fldexp", 33) != 0)
1681 break;
1682 return 272; // "combine_fmul_with_select_to_fldexp"
1683 case 'e': // 1 string to match.
1684 if (memcmp(RuleIdentifier.data()+1, "xtract_all_elts_from_build_vector", 33) != 0)
1685 break;
1686 return 73; // "extract_all_elts_from_build_vector"
1687 }
1688 break;
1689 case 35: // 1 string to match.
1690 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1691 break;
1692 return 33; // "extract_vector_element_build_vector"
1693 case 36: // 4 strings to match.
1694 switch (RuleIdentifier[0]) {
1695 default: break;
1696 case 'c': // 2 strings to match.
1697 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1698 break;
1699 switch (RuleIdentifier[8]) {
1700 default: break;
1701 case 'f': // 1 string to match.
1702 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1703 break;
1704 return 202; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1705 case 'i': // 1 string to match.
1706 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1707 break;
1708 return 71; // "combine_insert_vec_elts_build_vector"
1709 }
1710 break;
1711 case 'i': // 1 string to match.
1712 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1713 break;
1714 return 88; // "insert_extract_vec_elt_out_of_bounds"
1715 case 'm': // 1 string to match.
1716 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1717 break;
1718 return 26; // "match_extract_of_element_undef_index"
1719 }
1720 break;
1721 case 37: // 4 strings to match.
1722 switch (RuleIdentifier[0]) {
1723 default: break;
1724 case 'c': // 1 string to match.
1725 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1726 break;
1727 return 205; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1728 case 'e': // 1 string to match.
1729 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1730 break;
1731 return 41; // "extract_vector_element_shuffle_vector"
1732 case 'h': // 1 string to match.
1733 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1734 break;
1735 return 113; // "hoist_logic_op_with_same_opcode_hands"
1736 case 'm': // 1 string to match.
1737 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1738 break;
1739 return 25; // "match_extract_of_element_undef_vector"
1740 }
1741 break;
1742 case 38: // 3 strings to match.
1743 if (memcmp(RuleIdentifier.data()+0, "combine_", 8) != 0)
1744 break;
1745 switch (RuleIdentifier[8]) {
1746 default: break;
1747 case 'f': // 2 strings to match.
1748 switch (RuleIdentifier[9]) {
1749 default: break;
1750 case 'a': // 1 string to match.
1751 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1752 break;
1753 return 201; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1754 case 's': // 1 string to match.
1755 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1756 break;
1757 return 206; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1758 }
1759 break;
1760 case 's': // 1 string to match.
1761 if (memcmp(RuleIdentifier.data()+9, "huffle_vector_to_build_vector", 29) != 0)
1762 break;
1763 return 277; // "combine_shuffle_vector_to_build_vector"
1764 }
1765 break;
1766 case 40: // 1 string to match.
1767 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1768 break;
1769 return 32; // "extract_vector_element_different_indices"
1770 case 42: // 9 strings to match.
1771 switch (RuleIdentifier[0]) {
1772 default: break;
1773 case 'c': // 1 string to match.
1774 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1775 break;
1776 return 203; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1777 case 'e': // 7 strings to match.
1778 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1779 break;
1780 switch (RuleIdentifier[41]) {
1781 default: break;
1782 case '2': // 1 string to match.
1783 return 34; // "extract_vector_element_build_vector_trunc2"
1784 case '3': // 1 string to match.
1785 return 35; // "extract_vector_element_build_vector_trunc3"
1786 case '4': // 1 string to match.
1787 return 36; // "extract_vector_element_build_vector_trunc4"
1788 case '5': // 1 string to match.
1789 return 37; // "extract_vector_element_build_vector_trunc5"
1790 case '6': // 1 string to match.
1791 return 38; // "extract_vector_element_build_vector_trunc6"
1792 case '7': // 1 string to match.
1793 return 39; // "extract_vector_element_build_vector_trunc7"
1794 case '8': // 1 string to match.
1795 return 40; // "extract_vector_element_build_vector_trunc8"
1796 }
1797 break;
1798 case 'f': // 1 string to match.
1799 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1800 break;
1801 return 182; // "funnel_shift_or_shift_to_funnel_shift_left"
1802 }
1803 break;
1804 case 43: // 2 strings to match.
1805 switch (RuleIdentifier[0]) {
1806 default: break;
1807 case 'c': // 1 string to match.
1808 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1809 break;
1810 return 207; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1811 case 'f': // 1 string to match.
1812 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1813 break;
1814 return 183; // "funnel_shift_or_shift_to_funnel_shift_right"
1815 }
1816 break;
1817 case 44: // 1 string to match.
1818 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1819 break;
1820 return 42; // "insert_vector_element_extract_vector_element"
1821 case 46: // 1 string to match.
1822 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1823 break;
1824 return 48; // "push_freeze_to_prevent_poison_from_propagating"
1825 }
1826#endif // ifndef NDEBUG
1827
1828 return std::nullopt;
1829}
1830static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1831 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1832 if (!RangePair.second.empty()) {
1833 const auto First = getRuleIdxForIdentifier(RangePair.first);
1834 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1835 if (!First || !Last)
1836 return std::nullopt;
1837 if (First >= Last)
1838 report_fatal_error("Beginning of range should be before end of range");
1839 return {{*First, *Last + 1}};
1840 }
1841 if (RangePair.first == "*") {
1842 return {{0, 281}};
1843 }
1844 const auto I = getRuleIdxForIdentifier(RangePair.first);
1845 if (!I)
1846 return std::nullopt;
1847 return {{*I, *I + 1}};
1848}
1849
1850bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1851 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1852 if (!MaybeRange)
1853 return false;
1854 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1855 DisabledRules.reset(I);
1856 return true;
1857}
1858
1859bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1860 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1861 if (!MaybeRange)
1862 return false;
1863 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1864 DisabledRules.set(I);
1865 return true;
1866}
1867
1868static std::vector<std::string> AMDGPUPreLegalizerCombinerOption;
1869static cl::list<std::string> AMDGPUPreLegalizerCombinerDisableOption(
1870 "amdgpuprelegalizercombiner-disable-rule",
1871 cl::desc("Disable one or more combiner rules temporarily in the AMDGPUPreLegalizerCombiner pass"),
1872 cl::CommaSeparated,
1873 cl::Hidden,
1874 cl::cat(GICombinerOptionCategory),
1875 cl::callback([](const std::string &Str) {
1876 AMDGPUPreLegalizerCombinerOption.push_back(Str);
1877 }));
1878static cl::list<std::string> AMDGPUPreLegalizerCombinerOnlyEnableOption(
1879 "amdgpuprelegalizercombiner-only-enable-rule",
1880 cl::desc("Disable all rules in the AMDGPUPreLegalizerCombiner pass then re-enable the specified ones"),
1881 cl::Hidden,
1882 cl::cat(GICombinerOptionCategory),
1883 cl::callback([](const std::string &CommaSeparatedArg) {
1884 StringRef Str = CommaSeparatedArg;
1885 AMDGPUPreLegalizerCombinerOption.push_back("*");
1886 do {
1887 auto X = Str.split(",");
1888 AMDGPUPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1889 Str = X.second;
1890 } while (!Str.empty());
1891 }));
1892
1893
1894bool AMDGPUPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1895 return !DisabledRules.test(RuleID);
1896}
1897bool AMDGPUPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1898 for (StringRef Identifier : AMDGPUPreLegalizerCombinerOption) {
1899 bool Enabled = Identifier.consume_front("!");
1900 if (Enabled && !setRuleEnabled(Identifier))
1901 return false;
1902 if (!Enabled && !setRuleDisabled(Identifier))
1903 return false;
1904 }
1905 return true;
1906}
1907
1908
1909#endif // GET_GICOMBINER_TYPES
1910
1911#ifdef GET_GICOMBINER_TYPES
1912
1913const unsigned MAX_SUBTARGET_PREDICATES = 0;
1914using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1915
1916#endif // GET_GICOMBINER_TYPES
1917
1918#ifdef GET_GICOMBINER_CLASS_MEMBERS
1919
1920 bool canMatchOpcode(unsigned Opc) const override;
1921
1922#endif // GET_GICOMBINER_CLASS_MEMBERS
1923
1924#ifdef GET_GICOMBINER_CLASS_MEMBERS
1925
1926PredicateBitset AvailableModuleFeatures;
1927mutable PredicateBitset AvailableFunctionFeatures;
1928PredicateBitset getAvailableFeatures() const {
1929 return AvailableModuleFeatures | AvailableFunctionFeatures;
1930}
1931PredicateBitset
1932computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const;
1933PredicateBitset
1934computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget,
1935 const MachineFunction *MF) const;
1936void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1937
1938#endif // GET_GICOMBINER_CLASS_MEMBERS
1939
1940#ifdef GET_GICOMBINER_CLASS_MEMBERS
1941
1942 mutable MatcherState State;
1943 typedef ComplexRendererFns(AMDGPUPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1944 typedef void(AMDGPUPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1945 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1946 static AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1947 static AMDGPUPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1948 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1949 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1950 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1951 const uint8_t *getMatchTable() const override;
1952 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1953 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1954 bool testSimplePredicate(unsigned PredicateID) const override;
1955 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1956
1957#endif // GET_GICOMBINER_CLASS_MEMBERS
1958
1959#ifdef GET_GICOMBINER_IMPL
1960
1961// LLT Objects.
1962enum {
1963 GILLT_i32,
1964 GILLT_i64,
1965};
1966const static size_t NumTypeObjects = 2;
1967const static LLT TypeObjects[] = {
1968 LLT(LLT::Kind::INTEGER, ElementCount::getFixed(0), 32),
1969 LLT(LLT::Kind::INTEGER, ElementCount::getFixed(0), 64),
1970};
1971
1972// Bits for subtarget features that participate in instruction matching.
1973enum SubtargetFeatureBits : uint8_t {
1974};
1975
1976PredicateBitset AMDGPUPreLegalizerCombinerImpl::
1977computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const {
1978 PredicateBitset Features{};
1979 return Features;
1980}
1981
1982void AMDGPUPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1983 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AMDGPUSubtarget *)&MF.getSubtarget(), &MF);
1984}
1985PredicateBitset AMDGPUPreLegalizerCombinerImpl::
1986computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget, const MachineFunction *MF) const {
1987 PredicateBitset Features{};
1988 return Features;
1989}
1990
1991// Feature bitsets.
1992enum {
1993 GIFBS_Invalid,
1994};
1995constexpr static PredicateBitset FeatureBitsets[] {
1996 {}, // GIFBS_Invalid
1997};
1998
1999// ComplexPattern predicates.
2000enum {
2001 GICP_Invalid,
2002};
2003// See constructor for table contents
2004
2005AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn
2006AMDGPUPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
2007 nullptr, // GICP_Invalid
2008};
2009
2010enum {
2011 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
2012 GICXXPred_MI_Predicate_GICombiner1,
2013 GICXXPred_MI_Predicate_GICombiner2,
2014 GICXXPred_MI_Predicate_GICombiner3,
2015 GICXXPred_MI_Predicate_GICombiner4,
2016 GICXXPred_MI_Predicate_GICombiner5,
2017 GICXXPred_MI_Predicate_GICombiner6,
2018 GICXXPred_MI_Predicate_GICombiner7,
2019 GICXXPred_MI_Predicate_GICombiner8,
2020 GICXXPred_MI_Predicate_GICombiner9,
2021 GICXXPred_MI_Predicate_GICombiner10,
2022 GICXXPred_MI_Predicate_GICombiner11,
2023 GICXXPred_MI_Predicate_GICombiner12,
2024 GICXXPred_MI_Predicate_GICombiner13,
2025 GICXXPred_MI_Predicate_GICombiner14,
2026 GICXXPred_MI_Predicate_GICombiner15,
2027 GICXXPred_MI_Predicate_GICombiner16,
2028 GICXXPred_MI_Predicate_GICombiner17,
2029 GICXXPred_MI_Predicate_GICombiner18,
2030 GICXXPred_MI_Predicate_GICombiner19,
2031 GICXXPred_MI_Predicate_GICombiner20,
2032 GICXXPred_MI_Predicate_GICombiner21,
2033 GICXXPred_MI_Predicate_GICombiner22,
2034 GICXXPred_MI_Predicate_GICombiner23,
2035 GICXXPred_MI_Predicate_GICombiner24,
2036 GICXXPred_MI_Predicate_GICombiner25,
2037};
2038bool AMDGPUPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
2039 switch (PredicateID) {
2040 case GICXXPred_MI_Predicate_GICombiner0: {
2041 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2042 }
2043 case GICXXPred_MI_Predicate_GICombiner1: {
2044 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
2045 }
2046 case GICXXPred_MI_Predicate_GICombiner2: {
2047 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2048 }
2049 case GICXXPred_MI_Predicate_GICombiner3: {
2050 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2051 }
2052 case GICXXPred_MI_Predicate_GICombiner4: {
2053 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
2054 }
2055 case GICXXPred_MI_Predicate_GICombiner5: {
2056 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
2057 }
2058 case GICXXPred_MI_Predicate_GICombiner6: {
2059 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
2060 }
2061 case GICXXPred_MI_Predicate_GICombiner7: {
2062 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
2063 }
2064 case GICXXPred_MI_Predicate_GICombiner8: {
2065 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
2066 }
2067 case GICXXPred_MI_Predicate_GICombiner9: {
2068 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
2069 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2070 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2071 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2072 }
2073 case GICXXPred_MI_Predicate_GICombiner10: {
2074 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
2075 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2076 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2077 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2078 }
2079 case GICXXPred_MI_Predicate_GICombiner11: {
2080 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2081 Helper.isLegalOrBeforeLegalizer({
2082 TargetOpcode::G_SEXT_INREG,
2083 {MRI.getType(State.MIs[1]->getOperand(1).getReg())},
2084 {},
2085 {1}
2086 });
2087 }
2088 case GICXXPred_MI_Predicate_GICombiner12: {
2089 return MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
2090 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2091 }
2092 case GICXXPred_MI_Predicate_GICombiner13: {
2093 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
2094 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2095 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
2096 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
2097 llvm_unreachable("GICombiner13 should have returned");
2098 }
2099 case GICXXPred_MI_Predicate_GICombiner14: {
2100 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
2101 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2102 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2103 }
2104 case GICXXPred_MI_Predicate_GICombiner15: {
2105 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
2106 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2107 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2108 }
2109 case GICXXPred_MI_Predicate_GICombiner16: {
2110 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
2111 }
2112 case GICXXPred_MI_Predicate_GICombiner17: {
2113 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
2114 }
2115 case GICXXPred_MI_Predicate_GICombiner18: {
2116 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2117 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2118 }
2119 case GICXXPred_MI_Predicate_GICombiner19: {
2120 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2121 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2122 }
2123 case GICXXPred_MI_Predicate_GICombiner20: {
2124 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
2125 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2126 }
2127 case GICXXPred_MI_Predicate_GICombiner21: {
2128 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_UAVGFLOOR);
2129 }
2130 case GICXXPred_MI_Predicate_GICombiner22: {
2131 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_SAVGFLOOR);
2132 }
2133 case GICXXPred_MI_Predicate_GICombiner23: {
2134 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_UAVGCEIL);
2135 }
2136 case GICXXPred_MI_Predicate_GICombiner24: {
2137 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_SAVGCEIL);
2138 }
2139 case GICXXPred_MI_Predicate_GICombiner25: {
2140 return Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(1).getReg()) ||
2141 Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(2).getReg());
2142 }
2143 }
2144 llvm_unreachable("Unknown predicate");
2145 return false;
2146}
2147bool AMDGPUPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
2148 llvm_unreachable("Unknown predicate");
2149 return false;
2150}
2151bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
2152 llvm_unreachable("Unknown predicate");
2153 return false;
2154}
2155bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2156 llvm_unreachable("Unknown predicate");
2157 return false;
2158}
2159bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2160 llvm_unreachable("Unknown predicate");
2161 return false;
2162}
2163enum {
2164 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2165 GICXXPred_Simple_IsRule1Enabled,
2166 GICXXPred_Simple_IsRule2Enabled,
2167 GICXXPred_Simple_IsRule3Enabled,
2168 GICXXPred_Simple_IsRule4Enabled,
2169 GICXXPred_Simple_IsRule5Enabled,
2170 GICXXPred_Simple_IsRule6Enabled,
2171 GICXXPred_Simple_IsRule7Enabled,
2172 GICXXPred_Simple_IsRule8Enabled,
2173 GICXXPred_Simple_IsRule9Enabled,
2174 GICXXPred_Simple_IsRule10Enabled,
2175 GICXXPred_Simple_IsRule11Enabled,
2176 GICXXPred_Simple_IsRule12Enabled,
2177 GICXXPred_Simple_IsRule13Enabled,
2178 GICXXPred_Simple_IsRule14Enabled,
2179 GICXXPred_Simple_IsRule15Enabled,
2180 GICXXPred_Simple_IsRule16Enabled,
2181 GICXXPred_Simple_IsRule17Enabled,
2182 GICXXPred_Simple_IsRule18Enabled,
2183 GICXXPred_Simple_IsRule19Enabled,
2184 GICXXPred_Simple_IsRule20Enabled,
2185 GICXXPred_Simple_IsRule21Enabled,
2186 GICXXPred_Simple_IsRule22Enabled,
2187 GICXXPred_Simple_IsRule23Enabled,
2188 GICXXPred_Simple_IsRule24Enabled,
2189 GICXXPred_Simple_IsRule25Enabled,
2190 GICXXPred_Simple_IsRule26Enabled,
2191 GICXXPred_Simple_IsRule27Enabled,
2192 GICXXPred_Simple_IsRule28Enabled,
2193 GICXXPred_Simple_IsRule29Enabled,
2194 GICXXPred_Simple_IsRule30Enabled,
2195 GICXXPred_Simple_IsRule31Enabled,
2196 GICXXPred_Simple_IsRule32Enabled,
2197 GICXXPred_Simple_IsRule33Enabled,
2198 GICXXPred_Simple_IsRule34Enabled,
2199 GICXXPred_Simple_IsRule35Enabled,
2200 GICXXPred_Simple_IsRule36Enabled,
2201 GICXXPred_Simple_IsRule37Enabled,
2202 GICXXPred_Simple_IsRule38Enabled,
2203 GICXXPred_Simple_IsRule39Enabled,
2204 GICXXPred_Simple_IsRule40Enabled,
2205 GICXXPred_Simple_IsRule41Enabled,
2206 GICXXPred_Simple_IsRule42Enabled,
2207 GICXXPred_Simple_IsRule43Enabled,
2208 GICXXPred_Simple_IsRule44Enabled,
2209 GICXXPred_Simple_IsRule45Enabled,
2210 GICXXPred_Simple_IsRule46Enabled,
2211 GICXXPred_Simple_IsRule47Enabled,
2212 GICXXPred_Simple_IsRule48Enabled,
2213 GICXXPred_Simple_IsRule49Enabled,
2214 GICXXPred_Simple_IsRule50Enabled,
2215 GICXXPred_Simple_IsRule51Enabled,
2216 GICXXPred_Simple_IsRule52Enabled,
2217 GICXXPred_Simple_IsRule53Enabled,
2218 GICXXPred_Simple_IsRule54Enabled,
2219 GICXXPred_Simple_IsRule55Enabled,
2220 GICXXPred_Simple_IsRule56Enabled,
2221 GICXXPred_Simple_IsRule57Enabled,
2222 GICXXPred_Simple_IsRule58Enabled,
2223 GICXXPred_Simple_IsRule59Enabled,
2224 GICXXPred_Simple_IsRule60Enabled,
2225 GICXXPred_Simple_IsRule61Enabled,
2226 GICXXPred_Simple_IsRule62Enabled,
2227 GICXXPred_Simple_IsRule63Enabled,
2228 GICXXPred_Simple_IsRule64Enabled,
2229 GICXXPred_Simple_IsRule65Enabled,
2230 GICXXPred_Simple_IsRule66Enabled,
2231 GICXXPred_Simple_IsRule67Enabled,
2232 GICXXPred_Simple_IsRule68Enabled,
2233 GICXXPred_Simple_IsRule69Enabled,
2234 GICXXPred_Simple_IsRule70Enabled,
2235 GICXXPred_Simple_IsRule71Enabled,
2236 GICXXPred_Simple_IsRule72Enabled,
2237 GICXXPred_Simple_IsRule73Enabled,
2238 GICXXPred_Simple_IsRule74Enabled,
2239 GICXXPred_Simple_IsRule75Enabled,
2240 GICXXPred_Simple_IsRule76Enabled,
2241 GICXXPred_Simple_IsRule77Enabled,
2242 GICXXPred_Simple_IsRule78Enabled,
2243 GICXXPred_Simple_IsRule79Enabled,
2244 GICXXPred_Simple_IsRule80Enabled,
2245 GICXXPred_Simple_IsRule81Enabled,
2246 GICXXPred_Simple_IsRule82Enabled,
2247 GICXXPred_Simple_IsRule83Enabled,
2248 GICXXPred_Simple_IsRule84Enabled,
2249 GICXXPred_Simple_IsRule85Enabled,
2250 GICXXPred_Simple_IsRule86Enabled,
2251 GICXXPred_Simple_IsRule87Enabled,
2252 GICXXPred_Simple_IsRule88Enabled,
2253 GICXXPred_Simple_IsRule89Enabled,
2254 GICXXPred_Simple_IsRule90Enabled,
2255 GICXXPred_Simple_IsRule91Enabled,
2256 GICXXPred_Simple_IsRule92Enabled,
2257 GICXXPred_Simple_IsRule93Enabled,
2258 GICXXPred_Simple_IsRule94Enabled,
2259 GICXXPred_Simple_IsRule95Enabled,
2260 GICXXPred_Simple_IsRule96Enabled,
2261 GICXXPred_Simple_IsRule97Enabled,
2262 GICXXPred_Simple_IsRule98Enabled,
2263 GICXXPred_Simple_IsRule99Enabled,
2264 GICXXPred_Simple_IsRule100Enabled,
2265 GICXXPred_Simple_IsRule101Enabled,
2266 GICXXPred_Simple_IsRule102Enabled,
2267 GICXXPred_Simple_IsRule103Enabled,
2268 GICXXPred_Simple_IsRule104Enabled,
2269 GICXXPred_Simple_IsRule105Enabled,
2270 GICXXPred_Simple_IsRule106Enabled,
2271 GICXXPred_Simple_IsRule107Enabled,
2272 GICXXPred_Simple_IsRule108Enabled,
2273 GICXXPred_Simple_IsRule109Enabled,
2274 GICXXPred_Simple_IsRule110Enabled,
2275 GICXXPred_Simple_IsRule111Enabled,
2276 GICXXPred_Simple_IsRule112Enabled,
2277 GICXXPred_Simple_IsRule113Enabled,
2278 GICXXPred_Simple_IsRule114Enabled,
2279 GICXXPred_Simple_IsRule115Enabled,
2280 GICXXPred_Simple_IsRule116Enabled,
2281 GICXXPred_Simple_IsRule117Enabled,
2282 GICXXPred_Simple_IsRule118Enabled,
2283 GICXXPred_Simple_IsRule119Enabled,
2284 GICXXPred_Simple_IsRule120Enabled,
2285 GICXXPred_Simple_IsRule121Enabled,
2286 GICXXPred_Simple_IsRule122Enabled,
2287 GICXXPred_Simple_IsRule123Enabled,
2288 GICXXPred_Simple_IsRule124Enabled,
2289 GICXXPred_Simple_IsRule125Enabled,
2290 GICXXPred_Simple_IsRule126Enabled,
2291 GICXXPred_Simple_IsRule127Enabled,
2292 GICXXPred_Simple_IsRule128Enabled,
2293 GICXXPred_Simple_IsRule129Enabled,
2294 GICXXPred_Simple_IsRule130Enabled,
2295 GICXXPred_Simple_IsRule131Enabled,
2296 GICXXPred_Simple_IsRule132Enabled,
2297 GICXXPred_Simple_IsRule133Enabled,
2298 GICXXPred_Simple_IsRule134Enabled,
2299 GICXXPred_Simple_IsRule135Enabled,
2300 GICXXPred_Simple_IsRule136Enabled,
2301 GICXXPred_Simple_IsRule137Enabled,
2302 GICXXPred_Simple_IsRule138Enabled,
2303 GICXXPred_Simple_IsRule139Enabled,
2304 GICXXPred_Simple_IsRule140Enabled,
2305 GICXXPred_Simple_IsRule141Enabled,
2306 GICXXPred_Simple_IsRule142Enabled,
2307 GICXXPred_Simple_IsRule143Enabled,
2308 GICXXPred_Simple_IsRule144Enabled,
2309 GICXXPred_Simple_IsRule145Enabled,
2310 GICXXPred_Simple_IsRule146Enabled,
2311 GICXXPred_Simple_IsRule147Enabled,
2312 GICXXPred_Simple_IsRule148Enabled,
2313 GICXXPred_Simple_IsRule149Enabled,
2314 GICXXPred_Simple_IsRule150Enabled,
2315 GICXXPred_Simple_IsRule151Enabled,
2316 GICXXPred_Simple_IsRule152Enabled,
2317 GICXXPred_Simple_IsRule153Enabled,
2318 GICXXPred_Simple_IsRule154Enabled,
2319 GICXXPred_Simple_IsRule155Enabled,
2320 GICXXPred_Simple_IsRule156Enabled,
2321 GICXXPred_Simple_IsRule157Enabled,
2322 GICXXPred_Simple_IsRule158Enabled,
2323 GICXXPred_Simple_IsRule159Enabled,
2324 GICXXPred_Simple_IsRule160Enabled,
2325 GICXXPred_Simple_IsRule161Enabled,
2326 GICXXPred_Simple_IsRule162Enabled,
2327 GICXXPred_Simple_IsRule163Enabled,
2328 GICXXPred_Simple_IsRule164Enabled,
2329 GICXXPred_Simple_IsRule165Enabled,
2330 GICXXPred_Simple_IsRule166Enabled,
2331 GICXXPred_Simple_IsRule167Enabled,
2332 GICXXPred_Simple_IsRule168Enabled,
2333 GICXXPred_Simple_IsRule169Enabled,
2334 GICXXPred_Simple_IsRule170Enabled,
2335 GICXXPred_Simple_IsRule171Enabled,
2336 GICXXPred_Simple_IsRule172Enabled,
2337 GICXXPred_Simple_IsRule173Enabled,
2338 GICXXPred_Simple_IsRule174Enabled,
2339 GICXXPred_Simple_IsRule175Enabled,
2340 GICXXPred_Simple_IsRule176Enabled,
2341 GICXXPred_Simple_IsRule177Enabled,
2342 GICXXPred_Simple_IsRule178Enabled,
2343 GICXXPred_Simple_IsRule179Enabled,
2344 GICXXPred_Simple_IsRule180Enabled,
2345 GICXXPred_Simple_IsRule181Enabled,
2346 GICXXPred_Simple_IsRule182Enabled,
2347 GICXXPred_Simple_IsRule183Enabled,
2348 GICXXPred_Simple_IsRule184Enabled,
2349 GICXXPred_Simple_IsRule185Enabled,
2350 GICXXPred_Simple_IsRule186Enabled,
2351 GICXXPred_Simple_IsRule187Enabled,
2352 GICXXPred_Simple_IsRule188Enabled,
2353 GICXXPred_Simple_IsRule189Enabled,
2354 GICXXPred_Simple_IsRule190Enabled,
2355 GICXXPred_Simple_IsRule191Enabled,
2356 GICXXPred_Simple_IsRule192Enabled,
2357 GICXXPred_Simple_IsRule193Enabled,
2358 GICXXPred_Simple_IsRule194Enabled,
2359 GICXXPred_Simple_IsRule195Enabled,
2360 GICXXPred_Simple_IsRule196Enabled,
2361 GICXXPred_Simple_IsRule197Enabled,
2362 GICXXPred_Simple_IsRule198Enabled,
2363 GICXXPred_Simple_IsRule199Enabled,
2364 GICXXPred_Simple_IsRule200Enabled,
2365 GICXXPred_Simple_IsRule201Enabled,
2366 GICXXPred_Simple_IsRule202Enabled,
2367 GICXXPred_Simple_IsRule203Enabled,
2368 GICXXPred_Simple_IsRule204Enabled,
2369 GICXXPred_Simple_IsRule205Enabled,
2370 GICXXPred_Simple_IsRule206Enabled,
2371 GICXXPred_Simple_IsRule207Enabled,
2372 GICXXPred_Simple_IsRule208Enabled,
2373 GICXXPred_Simple_IsRule209Enabled,
2374 GICXXPred_Simple_IsRule210Enabled,
2375 GICXXPred_Simple_IsRule211Enabled,
2376 GICXXPred_Simple_IsRule212Enabled,
2377 GICXXPred_Simple_IsRule213Enabled,
2378 GICXXPred_Simple_IsRule214Enabled,
2379 GICXXPred_Simple_IsRule215Enabled,
2380 GICXXPred_Simple_IsRule216Enabled,
2381 GICXXPred_Simple_IsRule217Enabled,
2382 GICXXPred_Simple_IsRule218Enabled,
2383 GICXXPred_Simple_IsRule219Enabled,
2384 GICXXPred_Simple_IsRule220Enabled,
2385 GICXXPred_Simple_IsRule221Enabled,
2386 GICXXPred_Simple_IsRule222Enabled,
2387 GICXXPred_Simple_IsRule223Enabled,
2388 GICXXPred_Simple_IsRule224Enabled,
2389 GICXXPred_Simple_IsRule225Enabled,
2390 GICXXPred_Simple_IsRule226Enabled,
2391 GICXXPred_Simple_IsRule227Enabled,
2392 GICXXPred_Simple_IsRule228Enabled,
2393 GICXXPred_Simple_IsRule229Enabled,
2394 GICXXPred_Simple_IsRule230Enabled,
2395 GICXXPred_Simple_IsRule231Enabled,
2396 GICXXPred_Simple_IsRule232Enabled,
2397 GICXXPred_Simple_IsRule233Enabled,
2398 GICXXPred_Simple_IsRule234Enabled,
2399 GICXXPred_Simple_IsRule235Enabled,
2400 GICXXPred_Simple_IsRule236Enabled,
2401 GICXXPred_Simple_IsRule237Enabled,
2402 GICXXPred_Simple_IsRule238Enabled,
2403 GICXXPred_Simple_IsRule239Enabled,
2404 GICXXPred_Simple_IsRule240Enabled,
2405 GICXXPred_Simple_IsRule241Enabled,
2406 GICXXPred_Simple_IsRule242Enabled,
2407 GICXXPred_Simple_IsRule243Enabled,
2408 GICXXPred_Simple_IsRule244Enabled,
2409 GICXXPred_Simple_IsRule245Enabled,
2410 GICXXPred_Simple_IsRule246Enabled,
2411 GICXXPred_Simple_IsRule247Enabled,
2412 GICXXPred_Simple_IsRule248Enabled,
2413 GICXXPred_Simple_IsRule249Enabled,
2414 GICXXPred_Simple_IsRule250Enabled,
2415 GICXXPred_Simple_IsRule251Enabled,
2416 GICXXPred_Simple_IsRule252Enabled,
2417 GICXXPred_Simple_IsRule253Enabled,
2418 GICXXPred_Simple_IsRule254Enabled,
2419 GICXXPred_Simple_IsRule255Enabled,
2420 GICXXPred_Simple_IsRule256Enabled,
2421 GICXXPred_Simple_IsRule257Enabled,
2422 GICXXPred_Simple_IsRule258Enabled,
2423 GICXXPred_Simple_IsRule259Enabled,
2424 GICXXPred_Simple_IsRule260Enabled,
2425 GICXXPred_Simple_IsRule261Enabled,
2426 GICXXPred_Simple_IsRule262Enabled,
2427 GICXXPred_Simple_IsRule263Enabled,
2428 GICXXPred_Simple_IsRule264Enabled,
2429 GICXXPred_Simple_IsRule265Enabled,
2430 GICXXPred_Simple_IsRule266Enabled,
2431 GICXXPred_Simple_IsRule267Enabled,
2432 GICXXPred_Simple_IsRule268Enabled,
2433 GICXXPred_Simple_IsRule269Enabled,
2434 GICXXPred_Simple_IsRule270Enabled,
2435 GICXXPred_Simple_IsRule271Enabled,
2436 GICXXPred_Simple_IsRule272Enabled,
2437 GICXXPred_Simple_IsRule273Enabled,
2438 GICXXPred_Simple_IsRule274Enabled,
2439 GICXXPred_Simple_IsRule275Enabled,
2440 GICXXPred_Simple_IsRule276Enabled,
2441 GICXXPred_Simple_IsRule277Enabled,
2442 GICXXPred_Simple_IsRule278Enabled,
2443 GICXXPred_Simple_IsRule279Enabled,
2444 GICXXPred_Simple_IsRule280Enabled,
2445};
2446
2447bool AMDGPUPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2448 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2449}
2450// Custom renderers.
2451enum {
2452 GICR_Invalid,
2453};
2454AMDGPUPreLegalizerCombinerImpl::CustomRendererFn
2455AMDGPUPreLegalizerCombinerImpl::CustomRenderers[] = {
2456 nullptr, // GICR_Invalid
2457};
2458
2459bool AMDGPUPreLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
2460 switch (Opc) {
2461 case TargetOpcode::G_FCMP:
2462 case TargetOpcode::G_FSHL:
2463 case TargetOpcode::G_FSHR:
2464 case TargetOpcode::G_ICMP:
2465 case TargetOpcode::G_INSERT_VECTOR_ELT:
2466 case TargetOpcode::G_SELECT:
2467 case TargetOpcode::G_SHUFFLE_VECTOR:
2468 case TargetOpcode::G_ADD:
2469 case TargetOpcode::G_AND:
2470 case TargetOpcode::G_ASHR:
2471 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
2472 case TargetOpcode::G_FADD:
2473 case TargetOpcode::G_FCOPYSIGN:
2474 case TargetOpcode::G_FDIV:
2475 case TargetOpcode::G_FMAXIMUM:
2476 case TargetOpcode::G_FMAXIMUMNUM:
2477 case TargetOpcode::G_FMAXNUM:
2478 case TargetOpcode::G_FMINIMUM:
2479 case TargetOpcode::G_FMINIMUMNUM:
2480 case TargetOpcode::G_FMINNUM:
2481 case TargetOpcode::G_FMUL:
2482 case TargetOpcode::G_FPOWI:
2483 case TargetOpcode::G_FREM:
2484 case TargetOpcode::G_FSUB:
2485 case TargetOpcode::G_LSHR:
2486 case TargetOpcode::G_MERGE_VALUES:
2487 case TargetOpcode::G_MUL:
2488 case TargetOpcode::G_OR:
2489 case TargetOpcode::G_PTR_ADD:
2490 case TargetOpcode::G_ROTL:
2491 case TargetOpcode::G_ROTR:
2492 case TargetOpcode::G_SDIV:
2493 case TargetOpcode::G_SEXT_INREG:
2494 case TargetOpcode::G_SHL:
2495 case TargetOpcode::G_SREM:
2496 case TargetOpcode::G_SUB:
2497 case TargetOpcode::G_UDIV:
2498 case TargetOpcode::G_UREM:
2499 case TargetOpcode::G_XOR:
2500 case TargetOpcode::COPY:
2501 case TargetOpcode::G_ABS:
2502 case TargetOpcode::G_ANYEXT:
2503 case TargetOpcode::G_BITCAST:
2504 case TargetOpcode::G_BITREVERSE:
2505 case TargetOpcode::G_BSWAP:
2506 case TargetOpcode::G_BUILD_VECTOR:
2507 case TargetOpcode::G_CTLZ:
2508 case TargetOpcode::G_CTLZ_ZERO_POISON:
2509 case TargetOpcode::G_CTPOP:
2510 case TargetOpcode::G_CTTZ:
2511 case TargetOpcode::G_CTTZ_ZERO_POISON:
2512 case TargetOpcode::G_FABS:
2513 case TargetOpcode::G_FCANONICALIZE:
2514 case TargetOpcode::G_FCEIL:
2515 case TargetOpcode::G_FFLOOR:
2516 case TargetOpcode::G_FLOG2:
2517 case TargetOpcode::G_FNEARBYINT:
2518 case TargetOpcode::G_FNEG:
2519 case TargetOpcode::G_FPEXT:
2520 case TargetOpcode::G_FPTOSI:
2521 case TargetOpcode::G_FPTOUI:
2522 case TargetOpcode::G_FPTRUNC:
2523 case TargetOpcode::G_FREEZE:
2524 case TargetOpcode::G_FRINT:
2525 case TargetOpcode::G_FSQRT:
2526 case TargetOpcode::G_INTRINSIC_ROUND:
2527 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
2528 case TargetOpcode::G_INTRINSIC_TRUNC:
2529 case TargetOpcode::G_INTTOPTR:
2530 case TargetOpcode::G_PTRTOINT:
2531 case TargetOpcode::G_SEXT:
2532 case TargetOpcode::G_SITOFP:
2533 case TargetOpcode::G_TRUNC:
2534 case TargetOpcode::G_TRUNC_USAT_U:
2535 case TargetOpcode::G_UITOFP:
2536 case TargetOpcode::G_ZEXT:
2537 case TargetOpcode::G_BR:
2538 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
2539 case TargetOpcode::G_CONCAT_VECTORS:
2540 case TargetOpcode::G_FMA:
2541 case TargetOpcode::G_FMAD:
2542 case TargetOpcode::G_FMAXNUM_IEEE:
2543 case TargetOpcode::G_FMINNUM_IEEE:
2544 case TargetOpcode::G_LOAD:
2545 case TargetOpcode::G_PHI:
2546 case TargetOpcode::G_SADDE:
2547 case TargetOpcode::G_SADDO:
2548 case TargetOpcode::G_SADDSAT:
2549 case TargetOpcode::G_SEXTLOAD:
2550 case TargetOpcode::G_SMAX:
2551 case TargetOpcode::G_SMIN:
2552 case TargetOpcode::G_SMULFIX:
2553 case TargetOpcode::G_SMULFIXSAT:
2554 case TargetOpcode::G_SMULH:
2555 case TargetOpcode::G_SMULO:
2556 case TargetOpcode::G_SSHLSAT:
2557 case TargetOpcode::G_SSUBE:
2558 case TargetOpcode::G_SSUBO:
2559 case TargetOpcode::G_STORE:
2560 case TargetOpcode::G_UADDE:
2561 case TargetOpcode::G_UADDO:
2562 case TargetOpcode::G_UADDSAT:
2563 case TargetOpcode::G_UMAX:
2564 case TargetOpcode::G_UMIN:
2565 case TargetOpcode::G_UMULFIX:
2566 case TargetOpcode::G_UMULFIXSAT:
2567 case TargetOpcode::G_UMULH:
2568 case TargetOpcode::G_UMULO:
2569 case TargetOpcode::G_UNMERGE_VALUES:
2570 case TargetOpcode::G_USHLSAT:
2571 case TargetOpcode::G_USUBE:
2572 case TargetOpcode::G_USUBO:
2573 case TargetOpcode::G_ZEXTLOAD:
2574 return true;
2575 default:
2576 return false;
2577 }
2578}
2579
2580bool AMDGPUPreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2581 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2582 State.MIs.clear();
2583 State.MIs.push_back(&I);
2584 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2585 return true;
2586 }
2587
2588 return false;
2589}
2590
2591enum {
2592 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2593 GICXXCustomAction_GICombiner1,
2594 GICXXCustomAction_GICombiner2,
2595 GICXXCustomAction_GICombiner3,
2596 GICXXCustomAction_GICombiner4,
2597 GICXXCustomAction_GICombiner5,
2598 GICXXCustomAction_GICombiner6,
2599 GICXXCustomAction_GICombiner7,
2600 GICXXCustomAction_GICombiner8,
2601 GICXXCustomAction_GICombiner9,
2602 GICXXCustomAction_GICombiner10,
2603 GICXXCustomAction_GICombiner11,
2604 GICXXCustomAction_GICombiner12,
2605 GICXXCustomAction_GICombiner13,
2606 GICXXCustomAction_GICombiner14,
2607 GICXXCustomAction_GICombiner15,
2608 GICXXCustomAction_GICombiner16,
2609 GICXXCustomAction_GICombiner17,
2610 GICXXCustomAction_GICombiner18,
2611 GICXXCustomAction_GICombiner19,
2612 GICXXCustomAction_GICombiner20,
2613 GICXXCustomAction_GICombiner21,
2614 GICXXCustomAction_GICombiner22,
2615 GICXXCustomAction_GICombiner23,
2616 GICXXCustomAction_GICombiner24,
2617 GICXXCustomAction_GICombiner25,
2618 GICXXCustomAction_GICombiner26,
2619 GICXXCustomAction_GICombiner27,
2620 GICXXCustomAction_GICombiner28,
2621 GICXXCustomAction_GICombiner29,
2622 GICXXCustomAction_GICombiner30,
2623 GICXXCustomAction_GICombiner31,
2624 GICXXCustomAction_GICombiner32,
2625 GICXXCustomAction_GICombiner33,
2626 GICXXCustomAction_GICombiner34,
2627 GICXXCustomAction_GICombiner35,
2628 GICXXCustomAction_GICombiner36,
2629 GICXXCustomAction_GICombiner37,
2630 GICXXCustomAction_GICombiner38,
2631 GICXXCustomAction_GICombiner39,
2632 GICXXCustomAction_GICombiner40,
2633 GICXXCustomAction_GICombiner41,
2634 GICXXCustomAction_GICombiner42,
2635 GICXXCustomAction_GICombiner43,
2636 GICXXCustomAction_GICombiner44,
2637 GICXXCustomAction_GICombiner45,
2638 GICXXCustomAction_GICombiner46,
2639 GICXXCustomAction_GICombiner47,
2640 GICXXCustomAction_GICombiner48,
2641 GICXXCustomAction_GICombiner49,
2642 GICXXCustomAction_GICombiner50,
2643 GICXXCustomAction_GICombiner51,
2644 GICXXCustomAction_GICombiner52,
2645 GICXXCustomAction_GICombiner53,
2646 GICXXCustomAction_GICombiner54,
2647 GICXXCustomAction_GICombiner55,
2648 GICXXCustomAction_GICombiner56,
2649 GICXXCustomAction_GICombiner57,
2650 GICXXCustomAction_GICombiner58,
2651 GICXXCustomAction_GICombiner59,
2652 GICXXCustomAction_GICombiner60,
2653 GICXXCustomAction_GICombiner61,
2654 GICXXCustomAction_GICombiner62,
2655 GICXXCustomAction_GICombiner63,
2656 GICXXCustomAction_GICombiner64,
2657 GICXXCustomAction_GICombiner65,
2658 GICXXCustomAction_GICombiner66,
2659 GICXXCustomAction_GICombiner67,
2660 GICXXCustomAction_GICombiner68,
2661 GICXXCustomAction_GICombiner69,
2662 GICXXCustomAction_GICombiner70,
2663 GICXXCustomAction_GICombiner71,
2664 GICXXCustomAction_GICombiner72,
2665 GICXXCustomAction_GICombiner73,
2666 GICXXCustomAction_GICombiner74,
2667 GICXXCustomAction_GICombiner75,
2668 GICXXCustomAction_GICombiner76,
2669 GICXXCustomAction_GICombiner77,
2670 GICXXCustomAction_GICombiner78,
2671 GICXXCustomAction_GICombiner79,
2672 GICXXCustomAction_GICombiner80,
2673 GICXXCustomAction_GICombiner81,
2674 GICXXCustomAction_GICombiner82,
2675 GICXXCustomAction_GICombiner83,
2676 GICXXCustomAction_GICombiner84,
2677 GICXXCustomAction_GICombiner85,
2678 GICXXCustomAction_GICombiner86,
2679 GICXXCustomAction_GICombiner87,
2680 GICXXCustomAction_GICombiner88,
2681 GICXXCustomAction_GICombiner89,
2682 GICXXCustomAction_GICombiner90,
2683 GICXXCustomAction_GICombiner91,
2684 GICXXCustomAction_GICombiner92,
2685 GICXXCustomAction_GICombiner93,
2686 GICXXCustomAction_GICombiner94,
2687 GICXXCustomAction_GICombiner95,
2688 GICXXCustomAction_GICombiner96,
2689 GICXXCustomAction_GICombiner97,
2690 GICXXCustomAction_GICombiner98,
2691 GICXXCustomAction_GICombiner99,
2692 GICXXCustomAction_GICombiner100,
2693 GICXXCustomAction_GICombiner101,
2694 GICXXCustomAction_GICombiner102,
2695 GICXXCustomAction_GICombiner103,
2696 GICXXCustomAction_GICombiner104,
2697 GICXXCustomAction_GICombiner105,
2698 GICXXCustomAction_GICombiner106,
2699 GICXXCustomAction_GICombiner107,
2700 GICXXCustomAction_GICombiner108,
2701 GICXXCustomAction_GICombiner109,
2702 GICXXCustomAction_GICombiner110,
2703 GICXXCustomAction_GICombiner111,
2704 GICXXCustomAction_GICombiner112,
2705 GICXXCustomAction_GICombiner113,
2706 GICXXCustomAction_GICombiner114,
2707 GICXXCustomAction_GICombiner115,
2708 GICXXCustomAction_GICombiner116,
2709 GICXXCustomAction_GICombiner117,
2710 GICXXCustomAction_GICombiner118,
2711 GICXXCustomAction_GICombiner119,
2712 GICXXCustomAction_GICombiner120,
2713 GICXXCustomAction_GICombiner121,
2714 GICXXCustomAction_GICombiner122,
2715 GICXXCustomAction_GICombiner123,
2716 GICXXCustomAction_GICombiner124,
2717 GICXXCustomAction_GICombiner125,
2718 GICXXCustomAction_GICombiner126,
2719 GICXXCustomAction_GICombiner127,
2720 GICXXCustomAction_GICombiner128,
2721 GICXXCustomAction_GICombiner129,
2722 GICXXCustomAction_GICombiner130,
2723 GICXXCustomAction_GICombiner131,
2724 GICXXCustomAction_GICombiner132,
2725 GICXXCustomAction_GICombiner133,
2726 GICXXCustomAction_GICombiner134,
2727 GICXXCustomAction_GICombiner135,
2728 GICXXCustomAction_GICombiner136,
2729 GICXXCustomAction_GICombiner137,
2730 GICXXCustomAction_GICombiner138,
2731 GICXXCustomAction_GICombiner139,
2732 GICXXCustomAction_GICombiner140,
2733 GICXXCustomAction_GICombiner141,
2734 GICXXCustomAction_GICombiner142,
2735 GICXXCustomAction_GICombiner143,
2736 GICXXCustomAction_GICombiner144,
2737 GICXXCustomAction_GICombiner145,
2738 GICXXCustomAction_GICombiner146,
2739 GICXXCustomAction_GICombiner147,
2740 GICXXCustomAction_GICombiner148,
2741 GICXXCustomAction_GICombiner149,
2742 GICXXCustomAction_GICombiner150,
2743 GICXXCustomAction_GICombiner151,
2744 GICXXCustomAction_GICombiner152,
2745 GICXXCustomAction_GICombiner153,
2746 GICXXCustomAction_GICombiner154,
2747 GICXXCustomAction_GICombiner155,
2748 GICXXCustomAction_GICombiner156,
2749 GICXXCustomAction_GICombiner157,
2750 GICXXCustomAction_GICombiner158,
2751 GICXXCustomAction_GICombiner159,
2752 GICXXCustomAction_GICombiner160,
2753 GICXXCustomAction_GICombiner161,
2754 GICXXCustomAction_GICombiner162,
2755 GICXXCustomAction_GICombiner163,
2756 GICXXCustomAction_GICombiner164,
2757 GICXXCustomAction_GICombiner165,
2758 GICXXCustomAction_GICombiner166,
2759};
2760bool AMDGPUPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2761 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2762 switch(ApplyID) {
2763 case GICXXCustomAction_GICombiner0:{
2764 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2765 // Match Patterns
2766 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2767 return false;
2768 }
2769 // Apply Patterns
2770 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2771 return true;
2772 }
2773 case GICXXCustomAction_GICombiner1:{
2774 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2775 // Match Patterns
2776 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2777 return false;
2778 }
2779 // Apply Patterns
2780 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2781 return true;
2782 }
2783 case GICXXCustomAction_GICombiner2:{
2784 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2785 // Match Patterns
2786 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2787 return false;
2788 }
2789 // Apply Patterns
2790 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2791 return true;
2792 }
2793 case GICXXCustomAction_GICombiner3:{
2794 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2795 // Match Patterns
2796 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2797 return false;
2798 }
2799 // Apply Patterns
2800 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2801 return true;
2802 }
2803 case GICXXCustomAction_GICombiner4:{
2804 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2805 // Match Patterns
2806 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2807 return false;
2808 }
2809 // Apply Patterns
2810 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2811 return true;
2812 }
2813 case GICXXCustomAction_GICombiner5:{
2814 // Match Patterns
2815 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2816 return false;
2817 }
2818 // Apply Patterns
2819 Helper.applyCombineCopy(*State.MIs[0]);
2820 return true;
2821 }
2822 case GICXXCustomAction_GICombiner6:{
2823 unsigned GIMatchData_matchinfo;
2824 // Match Patterns
2825 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2826 return false;
2827 }
2828 // Apply Patterns
2829 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2830 return true;
2831 }
2832 case GICXXCustomAction_GICombiner7:{
2833 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2834 // Match Patterns
2835 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2836 return false;
2837 }
2838 // Apply Patterns
2839 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2840 return true;
2841 }
2842 case GICXXCustomAction_GICombiner8:{
2843 std::pair<Register, bool> GIMatchData_info;
2844 // Match Patterns
2845 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2846 return false;
2847 }
2848 // Apply Patterns
2849 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2850 return true;
2851 }
2852 case GICXXCustomAction_GICombiner9:{
2853 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2854 // Match Patterns
2855 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2856 return false;
2857 }
2858 // Apply Patterns
2859 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2860 return true;
2861 }
2862 case GICXXCustomAction_GICombiner10:{
2863 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2864 // Match Patterns
2865 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2866 return false;
2867 }
2868 // Apply Patterns
2869 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2870 return true;
2871 }
2872 case GICXXCustomAction_GICombiner11:{
2873 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2874 // Match Patterns
2875 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2876 return false;
2877 }
2878 // Apply Patterns
2879 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2880 return true;
2881 }
2882 case GICXXCustomAction_GICombiner12:{
2883 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2884 // Match Patterns
2885 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2886 GIMatchData_matchinfo);}()) {
2887 return false;
2888 }
2889 // Apply Patterns
2890 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2891 return true;
2892 }
2893 case GICXXCustomAction_GICombiner13:{
2894 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2895 // Match Patterns
2896 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2897 return false;
2898 }
2899 // Apply Patterns
2900 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2901 return true;
2902 }
2903 case GICXXCustomAction_GICombiner14:{
2904 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2905 // Match Patterns
2906 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2907 GIMatchData_matchinfo);}()) {
2908 return false;
2909 }
2910 // Apply Patterns
2911 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2912 return true;
2913 }
2914 case GICXXCustomAction_GICombiner15:{
2915 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2916 // Match Patterns
2917 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2918 return false;
2919 }
2920 // Apply Patterns
2921 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2922 return true;
2923 }
2924 case GICXXCustomAction_GICombiner16:{
2925 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2926 // Match Patterns
2927 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2928 return false;
2929 }
2930 // Apply Patterns
2931 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2932 return true;
2933 }
2934 case GICXXCustomAction_GICombiner17:{
2935 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2936 // Match Patterns
2937 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2938 return false;
2939 }
2940 // Apply Patterns
2941 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2942 return true;
2943 }
2944 case GICXXCustomAction_GICombiner18:{
2945 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2946 // Match Patterns
2947 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2948 return false;
2949 }
2950 // Apply Patterns
2951 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2952 return true;
2953 }
2954 case GICXXCustomAction_GICombiner19:{
2955 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2956 // Match Patterns
2957 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2958 return false;
2959 }
2960 // Apply Patterns
2961 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2962 return true;
2963 }
2964 case GICXXCustomAction_GICombiner20:{
2965 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2966 // Match Patterns
2967 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2968 return false;
2969 }
2970 // Apply Patterns
2971 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2972 return true;
2973 }
2974 case GICXXCustomAction_GICombiner21:{
2975 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2976 // Match Patterns
2977 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2978 return false;
2979 }
2980 // Apply Patterns
2981 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2982 return true;
2983 }
2984 case GICXXCustomAction_GICombiner22:{
2985 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2986 // Match Patterns
2987 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2988 return false;
2989 }
2990 // Apply Patterns
2991 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2992 return true;
2993 }
2994 case GICXXCustomAction_GICombiner23:{
2995 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2996 // Match Patterns
2997 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2998 return false;
2999 }
3000 // Apply Patterns
3001 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3002 return true;
3003 }
3004 case GICXXCustomAction_GICombiner24:{
3005 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3006 // Match Patterns
3007 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3008 return false;
3009 }
3010 // Apply Patterns
3011 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3012 return true;
3013 }
3014 case GICXXCustomAction_GICombiner25:{
3015 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3016 // Match Patterns
3017 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3018 return false;
3019 }
3020 // Apply Patterns
3021 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3022 return true;
3023 }
3024 case GICXXCustomAction_GICombiner26:{
3025 APInt GIMatchData_matchinfo;
3026 // Match Patterns
3027 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
3028 return false;
3029 }
3030 // Apply Patterns
3031 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3032 return true;
3033 }
3034 case GICXXCustomAction_GICombiner27:{
3035 SmallVector<Register> GIMatchData_info;
3036 // Match Patterns
3037 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
3038 return false;
3039 }
3040 // Apply Patterns
3041 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
3042 return true;
3043 }
3044 case GICXXCustomAction_GICombiner28:{
3045 Register GIMatchData_matchinfo;
3046 // Match Patterns
3047 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
3048 return false;
3049 }
3050 // Apply Patterns
3051 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
3052 return true;
3053 }
3054 case GICXXCustomAction_GICombiner29:{
3055 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
3056 // Match Patterns
3057 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3058 return false;
3059 }
3060 // Apply Patterns
3061 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
3062 return true;
3063 }
3064 case GICXXCustomAction_GICombiner30:{
3065 PreferredTuple GIMatchData_matchinfo;
3066 // Match Patterns
3067 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
3068 return false;
3069 }
3070 // Apply Patterns
3071 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
3072 return true;
3073 }
3074 case GICXXCustomAction_GICombiner31:{
3075 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3076 // Match Patterns
3077 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3078 return false;
3079 }
3080 // Apply Patterns
3081 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3082 return true;
3083 }
3084 case GICXXCustomAction_GICombiner32:{
3085 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3086 // Match Patterns
3087 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3088 return false;
3089 }
3090 // Apply Patterns
3091 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3092 return true;
3093 }
3094 case GICXXCustomAction_GICombiner33:{
3095 // Match Patterns
3096 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3097 return false;
3098 }
3099 // Apply Patterns
3100 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
3101 return true;
3102 }
3103 case GICXXCustomAction_GICombiner34:{
3104 // Match Patterns
3105 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3106 return false;
3107 }
3108 // Apply Patterns
3109 Helper.replaceInstWithConstant(*State.MIs[0], 0);
3110 return true;
3111 }
3112 case GICXXCustomAction_GICombiner35:{
3113 // Match Patterns
3114 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3115 return false;
3116 }
3117 // Apply Patterns
3118 Helper.replaceInstWithConstant(*State.MIs[0], -1);
3119 return true;
3120 }
3121 case GICXXCustomAction_GICombiner36:{
3122 // Match Patterns
3123 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
3124 return false;
3125 }
3126 // Apply Patterns
3127 Helper.replaceInstWithConstant(*State.MIs[0], 0);
3128 return true;
3129 }
3130 case GICXXCustomAction_GICombiner37:{
3131 // Match Patterns
3132 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
3133 return false;
3134 }
3135 // Apply Patterns
3136 Helper.replaceInstWithUndef(*State.MIs[0]);
3137 return true;
3138 }
3139 case GICXXCustomAction_GICombiner38:{
3140 // Apply Patterns
3141 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
3142 return true;
3143 }
3144 case GICXXCustomAction_GICombiner39:{
3145 // Match Patterns
3146 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3147 return false;
3148 }
3149 // Apply Patterns
3150 Helper.replaceInstWithUndef(*State.MIs[0]);
3151 return true;
3152 }
3153 case GICXXCustomAction_GICombiner40:{
3154 // Match Patterns
3155 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
3156 return false;
3157 }
3158 // Apply Patterns
3159 Helper.replaceInstWithUndef(*State.MIs[0]);
3160 return true;
3161 }
3162 case GICXXCustomAction_GICombiner41:{
3163 // Match Patterns
3164 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
3165 return false;
3166 }
3167 // Apply Patterns
3168 Helper.replaceInstWithUndef(*State.MIs[0]);
3169 return true;
3170 }
3171 case GICXXCustomAction_GICombiner42:{
3172 // Match Patterns
3173 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
3174 return false;
3175 }
3176 // Apply Patterns
3177 Helper.eraseInst(*State.MIs[0]);
3178 return true;
3179 }
3180 case GICXXCustomAction_GICombiner43:{
3181 // Match Patterns
3182 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
3183 return false;
3184 }
3185 // Apply Patterns
3186 Helper.replaceInstWithUndef(*State.MIs[0]);
3187 return true;
3188 }
3189 case GICXXCustomAction_GICombiner44:{
3190 // Match Patterns
3191 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
3192 return false;
3193 }
3194 // Apply Patterns
3195 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
3196 return true;
3197 }
3198 case GICXXCustomAction_GICombiner45:{
3199 Register GIMatchData_info;
3200 // Match Patterns
3201 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
3202 return false;
3203 }
3204 // Apply Patterns
3205 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
3206 return true;
3207 }
3208 case GICXXCustomAction_GICombiner46:{
3209 Register GIMatchData_info;
3210 // Match Patterns
3211 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
3212 return false;
3213 }
3214 // Apply Patterns
3215 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
3216 return true;
3217 }
3218 case GICXXCustomAction_GICombiner47:{
3219 Register GIMatchData_matchinfo;
3220 // Match Patterns
3221 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3222 return false;
3223 }
3224 // Apply Patterns
3225 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3226 return true;
3227 }
3228 case GICXXCustomAction_GICombiner48:{
3229 Register GIMatchData_matchinfo;
3230 // Match Patterns
3231 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3232 return false;
3233 }
3234 // Apply Patterns
3235 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3236 return true;
3237 }
3238 case GICXXCustomAction_GICombiner49:{
3239 Register GIMatchData_matchinfo;
3240 // Match Patterns
3241 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3242 return false;
3243 }
3244 // Apply Patterns
3245 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3246 return true;
3247 }
3248 case GICXXCustomAction_GICombiner50:{
3249 Register GIMatchData_matchinfo;
3250 // Match Patterns
3251 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3252 return false;
3253 }
3254 // Apply Patterns
3255 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3256 return true;
3257 }
3258 case GICXXCustomAction_GICombiner51:{
3259 // Match Patterns
3260 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
3261 return false;
3262 }
3263 // Apply Patterns
3264 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3265 return true;
3266 }
3267 case GICXXCustomAction_GICombiner52:{
3268 MachineInstr* GIMatchData_matchinfo;
3269 // Match Patterns
3270 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3271 return false;
3272 }
3273 // Apply Patterns
3274 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3275 return true;
3276 }
3277 case GICXXCustomAction_GICombiner53:{
3278 std::tuple<Register, Register> GIMatchData_info;
3279 // Match Patterns
3280 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
3281 return false;
3282 }
3283 // Apply Patterns
3284 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
3285 return true;
3286 }
3287 case GICXXCustomAction_GICombiner54:{
3288 InstructionStepsMatchInfo GIMatchData_info;
3289 // Match Patterns
3290 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3291 return false;
3292 }
3293 // Apply Patterns
3294 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3295 return true;
3296 }
3297 case GICXXCustomAction_GICombiner55:{
3298 std::optional<int64_t> GIMatchData_matchinfo;
3299 // Match Patterns
3300 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3301 return false;
3302 }
3303 // Apply Patterns
3304 if (GIMatchData_matchinfo) {
3305 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3306 } else {
3307 Helper.replaceInstWithUndef(*State.MIs[0]);
3308 }
3309 return true;
3310 }
3311 case GICXXCustomAction_GICombiner56:{
3312 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3313 // Match Patterns
3314 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3315 return false;
3316 }
3317 // Apply Patterns
3318 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3319 return true;
3320 }
3321 case GICXXCustomAction_GICombiner57:{
3322 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3323 // Match Patterns
3324 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3325 return false;
3326 }
3327 // Apply Patterns
3328 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3329 return true;
3330 }
3331 case GICXXCustomAction_GICombiner58:{
3332 PtrAddChain GIMatchData_matchinfo;
3333 // Match Patterns
3334 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3335 return false;
3336 }
3337 // Apply Patterns
3338 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3339 return true;
3340 }
3341 case GICXXCustomAction_GICombiner59:{
3342 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3343 // Match Patterns
3344 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3345 return false;
3346 }
3347 // Apply Patterns
3348 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3349 return true;
3350 }
3351 case GICXXCustomAction_GICombiner60:{
3352 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3353 // Match Patterns
3354 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3355 return false;
3356 }
3357 // Apply Patterns
3358 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3359 return true;
3360 }
3361 case GICXXCustomAction_GICombiner61:{
3362 int64_t GIMatchData_matchinfo;
3363 // Match Patterns
3364 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3365 return false;
3366 }
3367 // Apply Patterns
3368 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3369 return true;
3370 }
3371 case GICXXCustomAction_GICombiner62:{
3372 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3373 // Match Patterns
3374 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
3375 return false;
3376 }
3377 // Apply Patterns
3378 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3379 return true;
3380 }
3381 case GICXXCustomAction_GICombiner63:{
3382 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3383 // Match Patterns
3384 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3385 return false;
3386 }
3387 // Apply Patterns
3388 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3389 return true;
3390 }
3391 case GICXXCustomAction_GICombiner64:{
3392 std::tuple<Register, int64_t> GIMatchData_info;
3393 // Match Patterns
3394 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3395 return false;
3396 }
3397 // Apply Patterns
3398 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3399 return true;
3400 }
3401 case GICXXCustomAction_GICombiner65:{
3402 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3403 // Match Patterns
3404 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3405 return false;
3406 }
3407 // Apply Patterns
3408 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3409 return true;
3410 }
3411 case GICXXCustomAction_GICombiner66:{
3412 RegisterImmPair GIMatchData_matchinfo;
3413 // Match Patterns
3414 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3415 return false;
3416 }
3417 // Apply Patterns
3418 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3419 return true;
3420 }
3421 case GICXXCustomAction_GICombiner67:{
3422 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3423 // Match Patterns
3424 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3425 return false;
3426 }
3427 // Apply Patterns
3428 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3429 return true;
3430 }
3431 case GICXXCustomAction_GICombiner68:{
3432 unsigned GIMatchData_matchinfo;
3433 // Match Patterns
3434 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3435 return false;
3436 }
3437 // Apply Patterns
3438 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3439 return true;
3440 }
3441 case GICXXCustomAction_GICombiner69:{
3442 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3443 // Match Patterns
3444 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3445 return false;
3446 }
3447 // Apply Patterns
3448 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3449 return true;
3450 }
3451 case GICXXCustomAction_GICombiner70:{
3452 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3453 // Match Patterns
3454 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3455 return false;
3456 }
3457 // Apply Patterns
3458 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3459 return true;
3460 }
3461 case GICXXCustomAction_GICombiner71:{
3462 // Match Patterns
3463 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3464 return false;
3465 }
3466 // Apply Patterns
3467 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3468 return true;
3469 }
3470 case GICXXCustomAction_GICombiner72:{
3471 // Match Patterns
3472 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
3473 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
3474 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
3475 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
3476 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
3477 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
3478 return false;
3479 }
3480 // Apply Patterns
3481 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
3482 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
3483 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
3484 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
3485 State.MIs[0]->eraseFromParent();
3486 return true;
3487 }
3488 case GICXXCustomAction_GICombiner73:{
3489 Register GIMatchData_matchinfo;
3490 // Match Patterns
3491 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3492 return false;
3493 }
3494 // Apply Patterns
3495 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3496 return true;
3497 }
3498 case GICXXCustomAction_GICombiner74:{
3499 Register GIMatchData_matchinfo;
3500 // Match Patterns
3501 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3502 return false;
3503 }
3504 // Apply Patterns
3505 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3506 return true;
3507 }
3508 case GICXXCustomAction_GICombiner75:{
3509 // Match Patterns
3510 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3511 return false;
3512 }
3513 // Apply Patterns
3514 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3515 return true;
3516 }
3517 case GICXXCustomAction_GICombiner76:{
3518 Register GIMatchData_matchinfo;
3519 // Match Patterns
3520 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3521 return false;
3522 }
3523 // Apply Patterns
3524 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3525 return true;
3526 }
3527 case GICXXCustomAction_GICombiner77:{
3528 // Match Patterns
3529 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3530 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3531 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3532 return false;
3533 }
3534 // Apply Patterns
3535 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3536 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3537 State.MIs[0]->eraseFromParent();
3538 return true;
3539 }
3540 case GICXXCustomAction_GICombiner78:{
3541 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3542 // Match Patterns
3543 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3544 return false;
3545 }
3546 // Apply Patterns
3547 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3548 return true;
3549 }
3550 case GICXXCustomAction_GICombiner79:{
3551 SmallVector<Register> GIMatchData_info;
3552 // Match Patterns
3553 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3554 return false;
3555 }
3556 // Apply Patterns
3557 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3558 return true;
3559 }
3560 case GICXXCustomAction_GICombiner80:{
3561 MachineInstr * GIMatchData_matchinfo;
3562 // Match Patterns
3563 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3564 return false;
3565 }
3566 // Apply Patterns
3567 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3568 return true;
3569 }
3570 case GICXXCustomAction_GICombiner81:{
3571 // Apply Patterns
3572 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3573 return true;
3574 }
3575 case GICXXCustomAction_GICombiner82:{
3576 // Apply Patterns
3577 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3578 return true;
3579 }
3580 case GICXXCustomAction_GICombiner83:{
3581 APInt GIMatchData_info;
3582 // Match Patterns
3583 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3584 return false;
3585 }
3586 // Apply Patterns
3587 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3588 return true;
3589 }
3590 case GICXXCustomAction_GICombiner84:{
3591 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3592 // Match Patterns
3593 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3594 return false;
3595 }
3596 // Apply Patterns
3597 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3598 return true;
3599 }
3600 case GICXXCustomAction_GICombiner85:{
3601 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3602 // Match Patterns
3603 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3604 return false;
3605 }
3606 // Apply Patterns
3607 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3608 return true;
3609 }
3610 case GICXXCustomAction_GICombiner86:{
3611 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3612 // Match Patterns
3613 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3614 return false;
3615 }
3616 // Apply Patterns
3617 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3618 return true;
3619 }
3620 case GICXXCustomAction_GICombiner87:{
3621 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3622 // Match Patterns
3623 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3624 return false;
3625 }
3626 // Apply Patterns
3627 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3628 return true;
3629 }
3630 case GICXXCustomAction_GICombiner88:{
3631 unsigned GIMatchData_info;
3632 // Match Patterns
3633 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3634 return false;
3635 }
3636 // Apply Patterns
3637 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3638 return true;
3639 }
3640 case GICXXCustomAction_GICombiner89:{
3641 // Match Patterns
3642 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3643 return false;
3644 }
3645 // Apply Patterns
3646 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3647 return true;
3648 }
3649 case GICXXCustomAction_GICombiner90:{
3650 std::pair<Register, Register> GIMatchData_matchinfo;
3651 // Match Patterns
3652 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3653 return false;
3654 }
3655 // Apply Patterns
3656 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3657 return true;
3658 }
3659 case GICXXCustomAction_GICombiner91:{
3660 // Match Patterns
3661 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3662 return false;
3663 }
3664 // Apply Patterns
3665 Helper.applyPtrAddZero(*State.MIs[0]);
3666 return true;
3667 }
3668 case GICXXCustomAction_GICombiner92:{
3669 RegisterImmPair GIMatchData_matchinfo;
3670 // Match Patterns
3671 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3672 return false;
3673 }
3674 // Apply Patterns
3675 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3676 return true;
3677 }
3678 case GICXXCustomAction_GICombiner93:{
3679 ShiftOfShiftedLogic GIMatchData_matchinfo;
3680 // Match Patterns
3681 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3682 return false;
3683 }
3684 // Apply Patterns
3685 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3686 return true;
3687 }
3688 case GICXXCustomAction_GICombiner94:{
3689 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3690 // Match Patterns
3691 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3692 return false;
3693 }
3694 // Apply Patterns
3695 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3696 return true;
3697 }
3698 case GICXXCustomAction_GICombiner95:{
3699 MachineInstr * GIMatchData_matchinfo;
3700 // Match Patterns
3701 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3702 return false;
3703 }
3704 // Apply Patterns
3705 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3706 return true;
3707 }
3708 case GICXXCustomAction_GICombiner96:{
3709 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3710 // Match Patterns
3711 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3712 return false;
3713 }
3714 // Apply Patterns
3715 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3716 return true;
3717 }
3718 case GICXXCustomAction_GICombiner97:{
3719 // Match Patterns
3720 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3721 return false;
3722 }
3723 // Apply Patterns
3724 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3725 return true;
3726 }
3727 case GICXXCustomAction_GICombiner98:{
3728 // Match Patterns
3729 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3730 return false;
3731 }
3732 // Apply Patterns
3733 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3734 return true;
3735 }
3736 case GICXXCustomAction_GICombiner99:{
3737 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3738 // Match Patterns
3739 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3740 return false;
3741 }
3742 // Apply Patterns
3743 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3744 return true;
3745 }
3746 case GICXXCustomAction_GICombiner100:{
3747 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3748 // Match Patterns
3749 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3750 return false;
3751 }
3752 // Apply Patterns
3753 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3754 return true;
3755 }
3756 case GICXXCustomAction_GICombiner101:{
3757 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3758 // Match Patterns
3759 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3760 return false;
3761 }
3762 // Apply Patterns
3763 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3764 return true;
3765 }
3766 case GICXXCustomAction_GICombiner102:{
3767 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3768 // Match Patterns
3769 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3770 return false;
3771 }
3772 // Apply Patterns
3773 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3774 return true;
3775 }
3776 case GICXXCustomAction_GICombiner103:{
3777 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3778 // Match Patterns
3779 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3780 return false;
3781 }
3782 // Apply Patterns
3783 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3784 return true;
3785 }
3786 case GICXXCustomAction_GICombiner104:{
3787 APInt GIMatchData_matchinfo;
3788 // Match Patterns
3789 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3790 return false;
3791 }
3792 // Apply Patterns
3793 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3794 return true;
3795 }
3796 case GICXXCustomAction_GICombiner105:{
3797 ConstantFP* GIMatchData_matchinfo;
3798 // Match Patterns
3799 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3800 return false;
3801 }
3802 // Apply Patterns
3803 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3804 return true;
3805 }
3806 case GICXXCustomAction_GICombiner106:{
3807 ConstantFP* GIMatchData_matchinfo;
3808 // Match Patterns
3809 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3810 return false;
3811 }
3812 // Apply Patterns
3813 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3814 return true;
3815 }
3816 case GICXXCustomAction_GICombiner107:{
3817 APInt GIMatchData_matchinfo;
3818 // Match Patterns
3819 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3820 return false;
3821 }
3822 // Apply Patterns
3823 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3824 return true;
3825 }
3826 case GICXXCustomAction_GICombiner108:{
3827 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3828 // Match Patterns
3829 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3830 return false;
3831 }
3832 // Apply Patterns
3833 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3834 return true;
3835 }
3836 case GICXXCustomAction_GICombiner109:{
3837 // Match Patterns
3838 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3839 return false;
3840 }
3841 // Apply Patterns
3842 Helper.applyUMulHToLShr(*State.MIs[0]);
3843 return true;
3844 }
3845 case GICXXCustomAction_GICombiner110:{
3846 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3847 // Match Patterns
3848 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3849 return false;
3850 }
3851 // Apply Patterns
3852 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3853 return true;
3854 }
3855 case GICXXCustomAction_GICombiner111:{
3856 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3857 // Match Patterns
3858 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3859 return false;
3860 }
3861 // Apply Patterns
3862 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3863 return true;
3864 }
3865 case GICXXCustomAction_GICombiner112:{
3866 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3867 // Match Patterns
3868 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3869 GIMatchData_info);}()) {
3870 return false;
3871 }
3872 // Apply Patterns
3873 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3874 return true;
3875 }
3876 case GICXXCustomAction_GICombiner113:{
3877 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3878 // Match Patterns
3879 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3880 GIMatchData_info);}()) {
3881 return false;
3882 }
3883 // Apply Patterns
3884 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3885 return true;
3886 }
3887 case GICXXCustomAction_GICombiner114:{
3888 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3889 // Match Patterns
3890 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3891 GIMatchData_info);}()) {
3892 return false;
3893 }
3894 // Apply Patterns
3895 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3896 return true;
3897 }
3898 case GICXXCustomAction_GICombiner115:{
3899 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3900 // Match Patterns
3901 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3902 *State.MIs[0], GIMatchData_info);}()) {
3903 return false;
3904 }
3905 // Apply Patterns
3906 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3907 return true;
3908 }
3909 case GICXXCustomAction_GICombiner116:{
3910 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3911 // Match Patterns
3912 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3913 GIMatchData_info);}()) {
3914 return false;
3915 }
3916 // Apply Patterns
3917 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3918 return true;
3919 }
3920 case GICXXCustomAction_GICombiner117:{
3921 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3922 // Match Patterns
3923 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3924 GIMatchData_info);}()) {
3925 return false;
3926 }
3927 // Apply Patterns
3928 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3929 return true;
3930 }
3931 case GICXXCustomAction_GICombiner118:{
3932 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3933 // Match Patterns
3934 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3935 GIMatchData_info);}()) {
3936 return false;
3937 }
3938 // Apply Patterns
3939 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3940 return true;
3941 }
3942 case GICXXCustomAction_GICombiner119:{
3943 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3944 // Match Patterns
3945 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3946 *State.MIs[0], GIMatchData_info);}()) {
3947 return false;
3948 }
3949 // Apply Patterns
3950 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3951 return true;
3952 }
3953 case GICXXCustomAction_GICombiner120:{
3954 unsigned GIMatchData_select_op_no;
3955 // Match Patterns
3956 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3957 return false;
3958 }
3959 // Apply Patterns
3960 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3961 return true;
3962 }
3963 case GICXXCustomAction_GICombiner121:{
3964 // Match Patterns
3965 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
3966 /*OrNegative=*/true);}()) {
3967 return false;
3968 }
3969 // Apply Patterns
3970 Helper.applySimplifySRemByPow2(*State.MIs[0]);
3971 return true;
3972 }
3973 case GICXXCustomAction_GICombiner122:{
3974 // Match Patterns
3975 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3976 return false;
3977 }
3978 // Apply Patterns
3979 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3980 return true;
3981 }
3982 case GICXXCustomAction_GICombiner123:{
3983 // Match Patterns
3984 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3985 return false;
3986 }
3987 // Apply Patterns
3988 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3989 return true;
3990 }
3991 case GICXXCustomAction_GICombiner124:{
3992 // Match Patterns
3993 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3994 return false;
3995 }
3996 // Apply Patterns
3997 Helper.applyUDivByPow2(*State.MIs[0]);
3998 return true;
3999 }
4000 case GICXXCustomAction_GICombiner125:{
4001 // Match Patterns
4002 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
4003 return false;
4004 }
4005 // Apply Patterns
4006 Helper.applySDivByPow2(*State.MIs[0]);
4007 return true;
4008 }
4009 case GICXXCustomAction_GICombiner126:{
4010 SmallVector<MachineInstr *> GIMatchData_matchinfo;
4011 // Match Patterns
4012 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
4013 return false;
4014 }
4015 // Apply Patterns
4016 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
4017 return true;
4018 }
4019 case GICXXCustomAction_GICombiner127:{
4020 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4021 // Match Patterns
4022 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4023 return false;
4024 }
4025 // Apply Patterns
4026 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4027 return true;
4028 }
4029 case GICXXCustomAction_GICombiner128:{
4030 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4031 // Match Patterns
4032 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
4033 return false;
4034 }
4035 // Apply Patterns
4036 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4037 return true;
4038 }
4039 case GICXXCustomAction_GICombiner129:{
4040 Register GIMatchData_matchinfo;
4041 // Match Patterns
4042 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4043 return false;
4044 }
4045 // Apply Patterns
4046 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
4047 return true;
4048 }
4049 case GICXXCustomAction_GICombiner130:{
4050 // Match Patterns
4051 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
4052 return false;
4053 }
4054 // Apply Patterns
4055 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4056 return true;
4057 }
4058 case GICXXCustomAction_GICombiner131:{
4059 // Match Patterns
4060 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
4061 return false;
4062 }
4063 // Apply Patterns
4064 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4065 return true;
4066 }
4067 case GICXXCustomAction_GICombiner132:{
4068 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4069 // Match Patterns
4070 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
4071 return false;
4072 }
4073 // Apply Patterns
4074 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4075 return true;
4076 }
4077 case GICXXCustomAction_GICombiner133:{
4078 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4079 // Match Patterns
4080 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
4081 return false;
4082 }
4083 // Apply Patterns
4084 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4085 return true;
4086 }
4087 case GICXXCustomAction_GICombiner134:{
4088 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4089 // Match Patterns
4090 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
4091 return false;
4092 }
4093 // Apply Patterns
4094 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4095 return true;
4096 }
4097 case GICXXCustomAction_GICombiner135:{
4098 SmallVector<Register> GIMatchData_matchinfo;
4099 // Match Patterns
4100 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
4101 return false;
4102 }
4103 // Apply Patterns
4104 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
4105 return true;
4106 }
4107 case GICXXCustomAction_GICombiner136:{
4108 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4109 // Match Patterns
4110 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4111 return false;
4112 }
4113 // Apply Patterns
4114 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4115 return true;
4116 }
4117 case GICXXCustomAction_GICombiner137:{
4118 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4119 // Match Patterns
4120 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4121 return false;
4122 }
4123 // Apply Patterns
4124 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4125 return true;
4126 }
4127 case GICXXCustomAction_GICombiner138:{
4128 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4129 // Match Patterns
4130 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4131 return false;
4132 }
4133 // Apply Patterns
4134 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4135 return true;
4136 }
4137 case GICXXCustomAction_GICombiner139:{
4138 SmallVector<Register> GIMatchData_matchinfo;
4139 // Match Patterns
4140 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
4141 return false;
4142 }
4143 // Apply Patterns
4144 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
4145 return true;
4146 }
4147 case GICXXCustomAction_GICombiner140:{
4148 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4149 // Match Patterns
4150 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4151 return false;
4152 }
4153 // Apply Patterns
4154 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4155 return true;
4156 }
4157 case GICXXCustomAction_GICombiner141:{
4158 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4159 // Match Patterns
4160 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
4161 return false;
4162 }
4163 // Apply Patterns
4164 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4165 return true;
4166 }
4167 case GICXXCustomAction_GICombiner142:{
4168 Register GIMatchData_matchinfo;
4169 // Match Patterns
4170 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
4171 return false;
4172 }
4173 // Apply Patterns
4174 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
4175 return true;
4176 }
4177 case GICXXCustomAction_GICombiner143:{
4178 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4179 // Match Patterns
4180 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4181 return false;
4182 }
4183 // Apply Patterns
4184 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4185 return true;
4186 }
4187 case GICXXCustomAction_GICombiner144:{
4188 SmallVector<Register> GIMatchData_info;
4189 // Match Patterns
4190 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
4191 return false;
4192 }
4193 // Apply Patterns
4194 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4195 return true;
4196 }
4197 case GICXXCustomAction_GICombiner145:{
4198 Register GIMatchData_src;
4199 // Match Patterns
4200 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4201 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4202 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4203 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4204 return false;
4205
4206 // Check counts match.
4207 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4208 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4209 if (NumMergeSrcs != NumUnmergeDefs)
4210 return false;
4211
4212 // Verify all merge sources match unmerge defs in order.
4213 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4214 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4215 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4216
4217 if (MergeSrc != UnmergeDef)
4218 return false;
4219
4220 if (!MRI.hasOneNonDBGUse(MergeSrc))
4221 return false;
4222 }
4223
4224 // Check size compatibility.
4225 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4226 LLT SrcTy = MRI.getType(GIMatchData_src);
4227 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4228 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4229 return false;
4230
4231 // Check bitcast legality.
4232 if (SrcTy != DstTy) {
4233 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4234 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4235 if (!Helper.isLegalOrBeforeLegalizer(Query))
4236 return false;
4237 }
4238
4239 return true;}()) {
4240 return false;
4241 }
4242 // Apply Patterns
4243 LLT SrcTy = MRI.getType(GIMatchData_src);
4244 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4245
4246 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4247
4248 if (SrcTy == DstTy) {
4249 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4250 } else {
4251 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4252 }
4253
4254 State.MIs[0]->eraseFromParent();
4255 return true;
4256 }
4257 case GICXXCustomAction_GICombiner146:{
4258 SmallVector<APInt, 8> GIMatchData_info;
4259 // Match Patterns
4260 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4261 return false;
4262 }
4263 // Apply Patterns
4264 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4265 return true;
4266 }
4267 case GICXXCustomAction_GICombiner147:{
4268 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4269 // Match Patterns
4270 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4271 return false;
4272 }
4273 // Apply Patterns
4274 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4275 return true;
4276 }
4277 case GICXXCustomAction_GICombiner148:{
4278 // Match Patterns
4279 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4280 return false;
4281 }
4282 // Apply Patterns
4283 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4284 return true;
4285 }
4286 case GICXXCustomAction_GICombiner149:{
4287 // Match Patterns
4288 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4289 return false;
4290 }
4291 // Apply Patterns
4292 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4293 return true;
4294 }
4295 case GICXXCustomAction_GICombiner150:{
4296 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4297 // Match Patterns
4298 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
4299 return false;
4300 }
4301 // Apply Patterns
4302 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4303 return true;
4304 }
4305 case GICXXCustomAction_GICombiner151:{
4306 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4307 // Match Patterns
4308 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
4309 return false;
4310 }
4311 // Apply Patterns
4312 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4313 return true;
4314 }
4315 case GICXXCustomAction_GICombiner152:{
4316 Register GIMatchData_unmergeSrc;
4317 // Match Patterns
4318 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4319 return false;
4320 }
4321 // Apply Patterns
4322 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4323 return true;
4324 }
4325 case GICXXCustomAction_GICombiner153:{
4326 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4327 // Match Patterns
4328 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4329 return false;
4330 }
4331 // Apply Patterns
4332 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4333 return true;
4334 }
4335 case GICXXCustomAction_GICombiner154:{
4336 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4337 // Match Patterns
4338 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4339 return false;
4340 }
4341 // Apply Patterns
4342 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4343 return true;
4344 }
4345 case GICXXCustomAction_GICombiner155:{
4346 Register GIMatchData_matchinfo;
4347 // Match Patterns
4348 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4349 return false;
4350 }
4351 // Apply Patterns
4352 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4353 return true;
4354 }
4355 case GICXXCustomAction_GICombiner156:{
4356 Register GIMatchData_matchinfo;
4357 // Match Patterns
4358 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4359 return false;
4360 }
4361 // Apply Patterns
4362 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4363 return true;
4364 }
4365 case GICXXCustomAction_GICombiner157:{
4366 LshrOfTruncOfLshr GIMatchData_matchinfo;
4367 // Match Patterns
4368 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4369 return false;
4370 }
4371 // Apply Patterns
4372 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4373 return true;
4374 }
4375 case GICXXCustomAction_GICombiner158:{
4376 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4377 // Match Patterns
4378 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4379 return false;
4380 }
4381 // Apply Patterns
4382 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4383 return true;
4384 }
4385 case GICXXCustomAction_GICombiner159:{
4386 // Match Patterns
4387 if(![&](){return Helper.matchCountZeroToZeroPoison(*State.MIs[0]);}()) {
4388 return false;
4389 }
4390 // Apply Patterns
4391 Helper.applyCountZeroToZeroPoison(*State.MIs[0]);
4392 return true;
4393 }
4394 case GICXXCustomAction_GICombiner160:{
4395 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4396 // Match Patterns
4397 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4398 return false;
4399 }
4400 // Apply Patterns
4401 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4402 return true;
4403 }
4404 case GICXXCustomAction_GICombiner161:{
4405 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4406 // Match Patterns
4407 if(![&](){return Helper.matchCombineFmulWithSelectToFldexp(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
4408 return false;
4409 }
4410 // Apply Patterns
4411 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4412 return true;
4413 }
4414 case GICXXCustomAction_GICombiner162:{
4415 ClampI64ToI16MatchInfo GIMatchData_matchinfo;
4416 // Match Patterns
4417 if(![&](){return matchClampI64ToI16(*State.MIs[0], MRI, MF, GIMatchData_matchinfo);}()) {
4418 return false;
4419 }
4420 // Apply Patterns
4421 applyClampI64ToI16(*State.MIs[0], GIMatchData_matchinfo);
4422 return true;
4423 }
4424 case GICXXCustomAction_GICombiner163:{
4425 MachineInstr * GIMatchData_matchinfo;
4426 // Match Patterns
4427 if(![&](){return Helper.matchFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4428 return false;
4429 }
4430 // Apply Patterns
4431 Helper.applyFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);
4432 return true;
4433 }
4434 case GICXXCustomAction_GICombiner164:{
4435 // Match Patterns
4436 if(![&](){return Helper.matchFoldFAbsFptrunc(*State.MIs[0], *State.MIs[1]);}()) {
4437 return false;
4438 }
4439 // Apply Patterns
4440 Helper.applyFoldFAbsFptrunc(*State.MIs[0], *State.MIs[1]);
4441 return true;
4442 }
4443 case GICXXCustomAction_GICombiner165:{
4444 SmallVector<Register> GIMatchData_matchinfo;
4445 // Match Patterns
4446 if(![&](){return Helper.matchCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4447 return false;
4448 }
4449 // Apply Patterns
4450 Helper.applyCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);
4451 return true;
4452 }
4453 case GICXXCustomAction_GICombiner166:{
4454 // Apply Patterns
4455 Helper.applyCombineShuffleToBuildVector(*State.MIs[0]);
4456 return true;
4457 }
4458 }
4459 llvm_unreachable("Unknown Apply Action");
4460}
4461#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4462#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4463#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4464#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)
4465#else
4466#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4467#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4468#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)
4469#endif
4470const uint8_t *AMDGPUPreLegalizerCombinerImpl::getMatchTable() const {
4471 constexpr static uint8_t MatchTable0[] = {
4472 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(285), /*)*//*default:*//*Label 113*/ GIMT_Encode4(10706),
4473 /* 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),
4474 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1082),
4475 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1815),
4476 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2796),
4477 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3002),
4478 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3104),
4479 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3217),
4480 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3313), GIMT_Encode4(0), GIMT_Encode4(0),
4481 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3420),
4482 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3961),
4483 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(5064), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4484 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(5275), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4485 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(5287), GIMT_Encode4(0),
4486 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(5354),
4487 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(5431),
4488 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(5496),
4489 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(5508),
4490 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(5520),
4491 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(5563),
4492 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(5596),
4493 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(5671), GIMT_Encode4(0), GIMT_Encode4(0),
4494 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(5735),
4495 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(5757), GIMT_Encode4(0), GIMT_Encode4(0),
4496 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(5779), GIMT_Encode4(0), GIMT_Encode4(0),
4497 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(5801),
4498 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(5813),
4499 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(5825), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4500 /* 354 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(5837), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4501 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(5849),
4502 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(5977), GIMT_Encode4(0), GIMT_Encode4(0),
4503 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(6400), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4504 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(6433),
4505 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(6508),
4506 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(6718),
4507 /* 550 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(6848),
4508 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(7046),
4509 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(7393),
4510 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(7722),
4511 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(7765),
4512 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(7808),
4513 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(7832),
4514 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(7856),
4515 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(7901), GIMT_Encode4(0), GIMT_Encode4(0),
4516 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(7913),
4517 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(8093),
4518 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(8116),
4519 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(8128),
4520 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(8140),
4521 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(8152),
4522 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(8175),
4523 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(8187),
4524 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(8199),
4525 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(8211),
4526 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(8245),
4527 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(8279),
4528 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(8302),
4529 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(8314),
4530 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(8326), GIMT_Encode4(0), GIMT_Encode4(0),
4531 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(8338),
4532 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(8361),
4533 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(8384),
4534 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(8396),
4535 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(8408),
4536 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(8420), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4537 /* 702 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(8432),
4538 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(8573),
4539 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(8662),
4540 /* 714 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(8771),
4541 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(8794),
4542 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(8817),
4543 /* 726 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(8862), GIMT_Encode4(0), GIMT_Encode4(0),
4544 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(8885), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4545 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(8907), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4546 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(8929),
4547 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(8991),
4548 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(9013),
4549 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(9056),
4550 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(9078),
4551 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(9100),
4552 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(9127), GIMT_Encode4(0), GIMT_Encode4(0),
4553 /* 810 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(9154),
4554 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 81*/ GIMT_Encode4(9254), GIMT_Encode4(0),
4555 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(9266),
4556 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(9296),
4557 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(9341),
4558 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(9386),
4559 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(9398),
4560 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(9410),
4561 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(9455),
4562 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 89*/ GIMT_Encode4(9500),
4563 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 90*/ GIMT_Encode4(9512), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4564 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 91*/ GIMT_Encode4(9524), GIMT_Encode4(0),
4565 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 92*/ GIMT_Encode4(9614),
4566 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 93*/ GIMT_Encode4(9648),
4567 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 94*/ GIMT_Encode4(9682),
4568 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 95*/ GIMT_Encode4(9716),
4569 /* 914 */ /*TargetOpcode::G_ABS*//*Label 96*/ GIMT_Encode4(9750), GIMT_Encode4(0), GIMT_Encode4(0),
4570 /* 926 */ /*TargetOpcode::G_BR*//*Label 97*/ GIMT_Encode4(9773), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4571 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 98*/ GIMT_Encode4(9785),
4572 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(9915),
4573 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 100*/ GIMT_Encode4(10292), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4574 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 101*/ GIMT_Encode4(10380),
4575 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 102*/ GIMT_Encode4(10403),
4576 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 103*/ GIMT_Encode4(10415),
4577 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 104*/ GIMT_Encode4(10449), GIMT_Encode4(0),
4578 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 105*/ GIMT_Encode4(10472),
4579 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 106*/ GIMT_Encode4(10484),
4580 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 107*/ GIMT_Encode4(10496), GIMT_Encode4(0),
4581 /* 1006 */ /*TargetOpcode::G_FCEIL*//*Label 108*/ GIMT_Encode4(10596), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4582 /* 1054 */ /*TargetOpcode::G_FSQRT*//*Label 109*/ GIMT_Encode4(10618),
4583 /* 1058 */ /*TargetOpcode::G_FFLOOR*//*Label 110*/ GIMT_Encode4(10640),
4584 /* 1062 */ /*TargetOpcode::G_FRINT*//*Label 111*/ GIMT_Encode4(10662),
4585 /* 1066 */ /*TargetOpcode::G_FNEARBYINT*//*Label 112*/ GIMT_Encode4(10684),
4586 /* 1070 */ // Label 0: @1070
4587 /* 1070 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1081), // Rule ID 19 //
4588 /* 1075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4589 /* 1078 */ // MIs[0] d
4590 /* 1078 */ // No operand predicates
4591 /* 1078 */ // MIs[0] s
4592 /* 1078 */ // No operand predicates
4593 /* 1078 */ // Combiner Rule #19: copy_prop
4594 /* 1078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4595 /* 1081 */ // Label 114: @1081
4596 /* 1081 */ GIM_Reject,
4597 /* 1082 */ // Label 1: @1082
4598 /* 1082 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1093), // Rule ID 22 //
4599 /* 1087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4600 /* 1090 */ // Combiner Rule #22: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4601 /* 1090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4602 /* 1093 */ // Label 115: @1093
4603 /* 1093 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1104), // Rule ID 100 //
4604 /* 1098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4605 /* 1101 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4606 /* 1101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4607 /* 1104 */ // Label 116: @1104
4608 /* 1104 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1115), // Rule ID 152 //
4609 /* 1109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4610 /* 1112 */ // Combiner Rule #112: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4611 /* 1112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4612 /* 1115 */ // Label 117: @1115
4613 /* 1115 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1126), // Rule ID 260 //
4614 /* 1120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
4615 /* 1123 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_ADD'
4616 /* 1123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
4617 /* 1126 */ // Label 118: @1126
4618 /* 1126 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1137), // Rule ID 320 //
4619 /* 1131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4620 /* 1134 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_ADD'
4621 /* 1134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4622 /* 1137 */ // Label 119: @1137
4623 /* 1137 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1148), // Rule ID 357 //
4624 /* 1142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
4625 /* 1145 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4626 /* 1145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
4627 /* 1148 */ // Label 120: @1148
4628 /* 1148 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1236), // Rule ID 427 //
4629 /* 1153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
4630 /* 1156 */ // MIs[0] dst
4631 /* 1156 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4632 /* 1160 */ // MIs[0] __add_shift_match_0.shl_neg
4633 /* 1160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4634 /* 1164 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4635 /* 1168 */ // MIs[1] __add_shift_match_0.neg_y
4636 /* 1168 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4637 /* 1172 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4638 /* 1176 */ // MIs[2] __add_shift_match_0.zero
4639 /* 1176 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4640 /* 1180 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4641 /* 1184 */ // MIs[3] Operand 1
4642 /* 1184 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4643 /* 1195 */ // MIs[2] y
4644 /* 1195 */ // No operand predicates
4645 /* 1195 */ // MIs[1] n
4646 /* 1195 */ // No operand predicates
4647 /* 1195 */ // MIs[0] x
4648 /* 1195 */ // No operand predicates
4649 /* 1195 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
4650 /* 1199 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4651 /* 1201 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4652 /* 1204 */ // Combiner Rule #260: add_shift @ [__add_shift_match_0[1]]
4653 /* 1204 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4654 /* 1207 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4655 /* 1212 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4656 /* 1216 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4657 /* 1220 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4658 /* 1224 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4659 /* 1228 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4660 /* 1232 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4661 /* 1235 */ GIR_EraseRootFromParent_Done,
4662 /* 1236 */ // Label 121: @1236
4663 /* 1236 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1324), // Rule ID 426 //
4664 /* 1241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
4665 /* 1244 */ // MIs[0] dst
4666 /* 1244 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4667 /* 1248 */ // MIs[0] x
4668 /* 1248 */ // No operand predicates
4669 /* 1248 */ // MIs[0] __add_shift_match_0.shl_neg
4670 /* 1248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4671 /* 1252 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4672 /* 1256 */ // MIs[1] __add_shift_match_0.neg_y
4673 /* 1256 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4674 /* 1260 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4675 /* 1264 */ // MIs[2] __add_shift_match_0.zero
4676 /* 1264 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4677 /* 1268 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4678 /* 1272 */ // MIs[3] Operand 1
4679 /* 1272 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4680 /* 1283 */ // MIs[2] y
4681 /* 1283 */ // No operand predicates
4682 /* 1283 */ // MIs[1] n
4683 /* 1283 */ // No operand predicates
4684 /* 1283 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
4685 /* 1287 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4686 /* 1289 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4687 /* 1292 */ // Combiner Rule #260: add_shift @ [__add_shift_match_0[0]]
4688 /* 1292 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4689 /* 1295 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4690 /* 1300 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4691 /* 1304 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4692 /* 1308 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4693 /* 1312 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4694 /* 1316 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4695 /* 1320 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4696 /* 1323 */ GIR_EraseRootFromParent_Done,
4697 /* 1324 */ // Label 122: @1324
4698 /* 1324 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1358), // Rule ID 2 //
4699 /* 1329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4700 /* 1332 */ // MIs[0] root
4701 /* 1332 */ // No operand predicates
4702 /* 1332 */ // MIs[0] sub
4703 /* 1332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4704 /* 1336 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4705 /* 1340 */ // MIs[1] Operand 1
4706 /* 1340 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4707 /* 1344 */ // MIs[1] A
4708 /* 1344 */ // No operand predicates
4709 /* 1344 */ // MIs[0] B
4710 /* 1344 */ // No operand predicates
4711 /* 1344 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4712 /* 1346 */ // Combiner Rule #2: ZeroMinusAPlusB
4713 /* 1346 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4714 /* 1349 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4715 /* 1351 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4716 /* 1353 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4717 /* 1357 */ GIR_EraseRootFromParent_Done,
4718 /* 1358 */ // Label 123: @1358
4719 /* 1358 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1395), // Rule ID 18 //
4720 /* 1363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4721 /* 1366 */ // MIs[0] root
4722 /* 1366 */ // No operand predicates
4723 /* 1366 */ // MIs[0] sub
4724 /* 1366 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4725 /* 1370 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4726 /* 1374 */ // MIs[1] A
4727 /* 1374 */ // No operand predicates
4728 /* 1374 */ // MIs[1] c1
4729 /* 1374 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4730 /* 1378 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4731 /* 1382 */ // MIs[2] imm1
4732 /* 1382 */ // No operand predicates
4733 /* 1382 */ // MIs[0] c2
4734 /* 1382 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4735 /* 1386 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4736 /* 1390 */ // MIs[3] imm2
4737 /* 1390 */ // No operand predicates
4738 /* 1390 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4739 /* 1392 */ // Combiner Rule #18: AMinusC1PlusC2
4740 /* 1392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4741 /* 1395 */ // Label 124: @1395
4742 /* 1395 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1429), // Rule ID 5 //
4743 /* 1400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4744 /* 1403 */ // MIs[0] root
4745 /* 1403 */ // No operand predicates
4746 /* 1403 */ // MIs[0] sub
4747 /* 1403 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4748 /* 1407 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4749 /* 1411 */ // MIs[1] B
4750 /* 1411 */ // No operand predicates
4751 /* 1411 */ // MIs[1] A
4752 /* 1411 */ // No operand predicates
4753 /* 1411 */ // MIs[0] A
4754 /* 1411 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4755 /* 1416 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4756 /* 1421 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4757 /* 1423 */ // Combiner Rule #5: BMinusAPlusA
4758 /* 1423 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4759 /* 1428 */ GIR_EraseRootFromParent_Done,
4760 /* 1429 */ // Label 125: @1429
4761 /* 1429 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1463), // Rule ID 140 //
4762 /* 1434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4763 /* 1437 */ // MIs[0] dst
4764 /* 1437 */ // No operand predicates
4765 /* 1437 */ // MIs[0] __add_sub_reg_match_0.tmp
4766 /* 1437 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4767 /* 1441 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4768 /* 1445 */ // MIs[1] src
4769 /* 1445 */ // No operand predicates
4770 /* 1445 */ // MIs[1] __add_sub_reg_match_0.x
4771 /* 1445 */ // No operand predicates
4772 /* 1445 */ // MIs[0] __add_sub_reg_match_0.x
4773 /* 1445 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4774 /* 1450 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4775 /* 1455 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4776 /* 1457 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4777 /* 1457 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4778 /* 1462 */ GIR_EraseRootFromParent_Done,
4779 /* 1463 */ // Label 126: @1463
4780 /* 1463 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1508), // Rule ID 7 //
4781 /* 1468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4782 /* 1471 */ // MIs[0] root
4783 /* 1471 */ // No operand predicates
4784 /* 1471 */ // MIs[0] sub1
4785 /* 1471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4786 /* 1475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4787 /* 1479 */ // MIs[1] A
4788 /* 1479 */ // No operand predicates
4789 /* 1479 */ // MIs[1] B
4790 /* 1479 */ // No operand predicates
4791 /* 1479 */ // MIs[0] sub2
4792 /* 1479 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4793 /* 1483 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4794 /* 1487 */ // MIs[2] B
4795 /* 1487 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4796 /* 1492 */ // MIs[2] C
4797 /* 1492 */ // No operand predicates
4798 /* 1492 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4799 /* 1494 */ // Combiner Rule #7: AMinusBPlusBMinusC
4800 /* 1494 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4801 /* 1497 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4802 /* 1499 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4803 /* 1503 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4804 /* 1507 */ GIR_EraseRootFromParent_Done,
4805 /* 1508 */ // Label 127: @1508
4806 /* 1508 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1553), // Rule ID 6 //
4807 /* 1513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4808 /* 1516 */ // MIs[0] root
4809 /* 1516 */ // No operand predicates
4810 /* 1516 */ // MIs[0] sub1
4811 /* 1516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4812 /* 1520 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4813 /* 1524 */ // MIs[1] A
4814 /* 1524 */ // No operand predicates
4815 /* 1524 */ // MIs[1] B
4816 /* 1524 */ // No operand predicates
4817 /* 1524 */ // MIs[0] sub2
4818 /* 1524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4819 /* 1528 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4820 /* 1532 */ // MIs[2] C
4821 /* 1532 */ // No operand predicates
4822 /* 1532 */ // MIs[2] A
4823 /* 1532 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4824 /* 1537 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4825 /* 1539 */ // Combiner Rule #6: AMinusBPlusCMinusA
4826 /* 1539 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4827 /* 1542 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4828 /* 1544 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4829 /* 1548 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4830 /* 1552 */ GIR_EraseRootFromParent_Done,
4831 /* 1553 */ // Label 128: @1553
4832 /* 1553 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1588), // Rule ID 45 //
4833 /* 1558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4834 /* 1561 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4835 /* 1567 */ // MIs[0] root
4836 /* 1567 */ // No operand predicates
4837 /* 1567 */ // MIs[0] left
4838 /* 1567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4839 /* 1571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4840 /* 1575 */ // MIs[1] imm1
4841 /* 1575 */ // No operand predicates
4842 /* 1575 */ // MIs[0] right
4843 /* 1575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4844 /* 1579 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4845 /* 1583 */ // MIs[2] imm2
4846 /* 1583 */ // No operand predicates
4847 /* 1583 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4848 /* 1585 */ // Combiner Rule #43: add_of_vscale
4849 /* 1585 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4850 /* 1588 */ // Label 129: @1588
4851 /* 1588 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1622), // Rule ID 3 //
4852 /* 1593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4853 /* 1596 */ // MIs[0] root
4854 /* 1596 */ // No operand predicates
4855 /* 1596 */ // MIs[0] A
4856 /* 1596 */ // No operand predicates
4857 /* 1596 */ // MIs[0] sub
4858 /* 1596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4859 /* 1600 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4860 /* 1604 */ // MIs[1] Operand 1
4861 /* 1604 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4862 /* 1608 */ // MIs[1] B
4863 /* 1608 */ // No operand predicates
4864 /* 1608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4865 /* 1610 */ // Combiner Rule #3: APlusZeroMinusB
4866 /* 1610 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4867 /* 1613 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4868 /* 1615 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4869 /* 1617 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4870 /* 1621 */ GIR_EraseRootFromParent_Done,
4871 /* 1622 */ // Label 130: @1622
4872 /* 1622 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1656), // Rule ID 4 //
4873 /* 1627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4874 /* 1630 */ // MIs[0] root
4875 /* 1630 */ // No operand predicates
4876 /* 1630 */ // MIs[0] A
4877 /* 1630 */ // No operand predicates
4878 /* 1630 */ // MIs[0] sub
4879 /* 1630 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4880 /* 1634 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4881 /* 1638 */ // MIs[1] B
4882 /* 1638 */ // No operand predicates
4883 /* 1638 */ // MIs[1] A
4884 /* 1638 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4885 /* 1643 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4886 /* 1648 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4887 /* 1650 */ // Combiner Rule #4: APlusBMinusB
4888 /* 1650 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4889 /* 1655 */ GIR_EraseRootFromParent_Done,
4890 /* 1656 */ // Label 131: @1656
4891 /* 1656 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1690), // Rule ID 139 //
4892 /* 1661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4893 /* 1664 */ // MIs[0] dst
4894 /* 1664 */ // No operand predicates
4895 /* 1664 */ // MIs[0] __add_sub_reg_match_0.x
4896 /* 1664 */ // No operand predicates
4897 /* 1664 */ // MIs[0] __add_sub_reg_match_0.tmp
4898 /* 1664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4899 /* 1668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4900 /* 1672 */ // MIs[1] src
4901 /* 1672 */ // No operand predicates
4902 /* 1672 */ // MIs[1] __add_sub_reg_match_0.x
4903 /* 1672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4904 /* 1677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4905 /* 1682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4906 /* 1684 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
4907 /* 1684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4908 /* 1689 */ GIR_EraseRootFromParent_Done,
4909 /* 1690 */ // Label 132: @1690
4910 /* 1690 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1735), // Rule ID 8 //
4911 /* 1695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4912 /* 1698 */ // MIs[0] root
4913 /* 1698 */ // No operand predicates
4914 /* 1698 */ // MIs[0] A
4915 /* 1698 */ // No operand predicates
4916 /* 1698 */ // MIs[0] sub1
4917 /* 1698 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4918 /* 1702 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4919 /* 1706 */ // MIs[1] B
4920 /* 1706 */ // No operand predicates
4921 /* 1706 */ // MIs[1] add1
4922 /* 1706 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4923 /* 1710 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4924 /* 1714 */ // MIs[2] A
4925 /* 1714 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4926 /* 1719 */ // MIs[2] C
4927 /* 1719 */ // No operand predicates
4928 /* 1719 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4929 /* 1721 */ // Combiner Rule #8: APlusBMinusAplusC
4930 /* 1721 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4931 /* 1724 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4932 /* 1726 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4933 /* 1730 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4934 /* 1734 */ GIR_EraseRootFromParent_Done,
4935 /* 1735 */ // Label 133: @1735
4936 /* 1735 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1780), // Rule ID 10 //
4937 /* 1740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4938 /* 1743 */ // MIs[0] root
4939 /* 1743 */ // No operand predicates
4940 /* 1743 */ // MIs[0] A
4941 /* 1743 */ // No operand predicates
4942 /* 1743 */ // MIs[0] sub1
4943 /* 1743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4944 /* 1747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4945 /* 1751 */ // MIs[1] B
4946 /* 1751 */ // No operand predicates
4947 /* 1751 */ // MIs[1] add1
4948 /* 1751 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4949 /* 1755 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4950 /* 1759 */ // MIs[2] C
4951 /* 1759 */ // No operand predicates
4952 /* 1759 */ // MIs[2] A
4953 /* 1759 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4954 /* 1764 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4955 /* 1766 */ // Combiner Rule #10: APlusBMinusCPlusA
4956 /* 1766 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4957 /* 1769 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4958 /* 1771 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4959 /* 1775 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4960 /* 1779 */ GIR_EraseRootFromParent_Done,
4961 /* 1780 */ // Label 134: @1780
4962 /* 1780 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1803), // Rule ID 111 //
4963 /* 1785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4964 /* 1788 */ // MIs[0] dst
4965 /* 1788 */ // No operand predicates
4966 /* 1788 */ // MIs[0] lhs
4967 /* 1788 */ // No operand predicates
4968 /* 1788 */ // MIs[0] Operand 2
4969 /* 1788 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4970 /* 1792 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4971 /* 1797 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
4972 /* 1797 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4973 /* 1802 */ GIR_EraseRootFromParent_Done,
4974 /* 1803 */ // Label 135: @1803
4975 /* 1803 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1814), // Rule ID 160 //
4976 /* 1808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4977 /* 1811 */ // MIs[0] root
4978 /* 1811 */ // No operand predicates
4979 /* 1811 */ // MIs[0] src1
4980 /* 1811 */ // No operand predicates
4981 /* 1811 */ // MIs[0] src2
4982 /* 1811 */ // No operand predicates
4983 /* 1811 */ // Combiner Rule #116: reassoc_comm_binops
4984 /* 1811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4985 /* 1814 */ // Label 136: @1814
4986 /* 1814 */ GIM_Reject,
4987 /* 1815 */ // Label 2: @1815
4988 /* 1815 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1826), // Rule ID 101 //
4989 /* 1820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4990 /* 1823 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4991 /* 1823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4992 /* 1826 */ // Label 137: @1826
4993 /* 1826 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1837), // Rule ID 268 //
4994 /* 1831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
4995 /* 1834 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SUB'
4996 /* 1834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
4997 /* 1837 */ // Label 138: @1837
4998 /* 1837 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1848), // Rule ID 321 //
4999 /* 1842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5000 /* 1845 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SUB'
5001 /* 1845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5002 /* 1848 */ // Label 139: @1848
5003 /* 1848 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1859), // Rule ID 354 //
5004 /* 1853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
5005 /* 1856 */ // Combiner Rule #217: sub_add_reg; wip_match_opcode 'G_SUB'
5006 /* 1856 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5007 /* 1859 */ // Label 140: @1859
5008 /* 1859 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(1870), // Rule ID 394 //
5009 /* 1864 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5010 /* 1867 */ // Combiner Rule #230: simplify_neg_minmax; wip_match_opcode 'G_SUB'
5011 /* 1867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
5012 /* 1870 */ // Label 141: @1870
5013 /* 1870 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(1947), // Rule ID 428 //
5014 /* 1875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
5015 /* 1878 */ // MIs[0] dst
5016 /* 1878 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5017 /* 1882 */ // MIs[0] sub1
5018 /* 1882 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5019 /* 1886 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5020 /* 1890 */ // MIs[1] a
5021 /* 1890 */ // No operand predicates
5022 /* 1890 */ // MIs[1] b
5023 /* 1890 */ // No operand predicates
5024 /* 1890 */ // MIs[0] Operand 2
5025 /* 1890 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5026 /* 1894 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5027 /* 1898 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5028 /* 1900 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5029 /* 1903 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5030 /* 1913 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5031 /* 1916 */ // Combiner Rule #261: sub_one_from_sub
5032 /* 1916 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5033 /* 1919 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5034 /* 1924 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
5035 /* 1928 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5036 /* 1931 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5037 /* 1935 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5038 /* 1939 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5039 /* 1942 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
5040 /* 1946 */ GIR_EraseRootFromParent_Done,
5041 /* 1947 */ // Label 142: @1947
5042 /* 1947 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2041), // Rule ID 434 //
5043 /* 1952 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule265Enabled),
5044 /* 1955 */ // MIs[0] root
5045 /* 1955 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5046 /* 1959 */ // MIs[0] Operand 1
5047 /* 1959 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5048 /* 1963 */ // MIs[0] max
5049 /* 1963 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5050 /* 1967 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
5051 /* 1971 */ // MIs[1] A
5052 /* 1971 */ // No operand predicates
5053 /* 1971 */ // MIs[1] sub
5054 /* 1971 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5055 /* 1975 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5056 /* 1979 */ // MIs[2] Operand 1
5057 /* 1979 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5058 /* 1983 */ // MIs[2] A
5059 /* 1983 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5060 /* 1988 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
5061 /* 1992 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5062 /* 1994 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5063 /* 1997 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5064 /* 2007 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5065 /* 2010 */ // Combiner Rule #265: SubSmaxSub
5066 /* 2010 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5067 /* 2013 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5068 /* 2018 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5069 /* 2021 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5070 /* 2025 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
5071 /* 2029 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5072 /* 2033 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5073 /* 2037 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5074 /* 2040 */ GIR_EraseRootFromParent_Done,
5075 /* 2041 */ // Label 143: @2041
5076 /* 2041 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2135), // Rule ID 435 //
5077 /* 2046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule266Enabled),
5078 /* 2049 */ // MIs[0] root
5079 /* 2049 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5080 /* 2053 */ // MIs[0] Operand 1
5081 /* 2053 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5082 /* 2057 */ // MIs[0] max
5083 /* 2057 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5084 /* 2061 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
5085 /* 2065 */ // MIs[1] A
5086 /* 2065 */ // No operand predicates
5087 /* 2065 */ // MIs[1] sub
5088 /* 2065 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5089 /* 2069 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5090 /* 2073 */ // MIs[2] Operand 1
5091 /* 2073 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5092 /* 2077 */ // MIs[2] A
5093 /* 2077 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5094 /* 2082 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
5095 /* 2086 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5096 /* 2088 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5097 /* 2091 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5098 /* 2101 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5099 /* 2104 */ // Combiner Rule #266: SubUmaxSub
5100 /* 2104 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5101 /* 2107 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5102 /* 2112 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5103 /* 2115 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5104 /* 2119 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
5105 /* 2123 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5106 /* 2127 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5107 /* 2131 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5108 /* 2134 */ GIR_EraseRootFromParent_Done,
5109 /* 2135 */ // Label 144: @2135
5110 /* 2135 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2175), // Rule ID 432 //
5111 /* 2140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
5112 /* 2143 */ // MIs[0] root
5113 /* 2143 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5114 /* 2147 */ // MIs[0] Operand 1
5115 /* 2147 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
5116 /* 2151 */ // MIs[0] op1
5117 /* 2151 */ // No operand predicates
5118 /* 2151 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5119 /* 2154 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
5120 /* 2164 */ // Combiner Rule #263: sub_minus_one
5121 /* 2164 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5122 /* 2167 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5123 /* 2169 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
5124 /* 2171 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5125 /* 2174 */ GIR_EraseRootFromParent_Done,
5126 /* 2175 */ // Label 145: @2175
5127 /* 2175 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2275), // Rule ID 433 //
5128 /* 2180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule264Enabled),
5129 /* 2183 */ // MIs[0] d
5130 /* 2183 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5131 /* 2187 */ // MIs[0] a
5132 /* 2187 */ // No operand predicates
5133 /* 2187 */ // MIs[0] mul
5134 /* 2187 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5135 /* 2191 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5136 /* 2195 */ // MIs[1] x
5137 /* 2195 */ // No operand predicates
5138 /* 2195 */ // MIs[1] c
5139 /* 2195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5140 /* 2199 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5141 /* 2203 */ // MIs[2] imm
5142 /* 2203 */ // No operand predicates
5143 /* 2203 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5144 /* 2207 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5145 /* 2209 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5146 /* 2212 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5147 /* 2215 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5148 /* 2225 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5149 /* 2228 */ // Combiner Rule #264: sub_of_mul_const
5150 /* 2228 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5151 /* 2231 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5152 /* 2236 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5153 /* 2239 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
5154 /* 2243 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
5155 /* 2247 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5156 /* 2252 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5157 /* 2256 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5158 /* 2259 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5159 /* 2263 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
5160 /* 2267 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
5161 /* 2271 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5162 /* 2274 */ GIR_EraseRootFromParent_Done,
5163 /* 2275 */ // Label 146: @2275
5164 /* 2275 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2336), // Rule ID 9 //
5165 /* 2280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
5166 /* 2283 */ // MIs[0] root
5167 /* 2283 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5168 /* 2287 */ // MIs[0] A
5169 /* 2287 */ // No operand predicates
5170 /* 2287 */ // MIs[0] sub1
5171 /* 2287 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5172 /* 2291 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5173 /* 2295 */ // MIs[1] B
5174 /* 2295 */ // No operand predicates
5175 /* 2295 */ // MIs[1] C
5176 /* 2295 */ // No operand predicates
5177 /* 2295 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5178 /* 2299 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5179 /* 2301 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5180 /* 2304 */ // Combiner Rule #9: AMinusBMinusC
5181 /* 2304 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5182 /* 2307 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5183 /* 2312 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
5184 /* 2316 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5185 /* 2320 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5186 /* 2324 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5187 /* 2328 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
5188 /* 2332 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5189 /* 2335 */ GIR_EraseRootFromParent_Done,
5190 /* 2336 */ // Label 147: @2336
5191 /* 2336 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2381), // Rule ID 0 //
5192 /* 2341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
5193 /* 2344 */ // MIs[0] root
5194 /* 2344 */ // No operand predicates
5195 /* 2344 */ // MIs[0] add1
5196 /* 2344 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5197 /* 2348 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5198 /* 2352 */ // MIs[1] A
5199 /* 2352 */ // No operand predicates
5200 /* 2352 */ // MIs[1] sub1
5201 /* 2352 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5202 /* 2356 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5203 /* 2360 */ // MIs[2] B
5204 /* 2360 */ // No operand predicates
5205 /* 2360 */ // MIs[2] C
5206 /* 2360 */ // No operand predicates
5207 /* 2360 */ // MIs[0] B
5208 /* 2360 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5209 /* 2365 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5210 /* 2367 */ // Combiner Rule #0: APlusBMinusCMinusB
5211 /* 2367 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5212 /* 2370 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5213 /* 2372 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5214 /* 2376 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5215 /* 2380 */ GIR_EraseRootFromParent_Done,
5216 /* 2381 */ // Label 148: @2381
5217 /* 2381 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2418), // Rule ID 14 //
5218 /* 2386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5219 /* 2389 */ // MIs[0] root
5220 /* 2389 */ // No operand predicates
5221 /* 2389 */ // MIs[0] add
5222 /* 2389 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5223 /* 2393 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5224 /* 2397 */ // MIs[1] A
5225 /* 2397 */ // No operand predicates
5226 /* 2397 */ // MIs[1] c1
5227 /* 2397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5228 /* 2401 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5229 /* 2405 */ // MIs[2] imm1
5230 /* 2405 */ // No operand predicates
5231 /* 2405 */ // MIs[0] c2
5232 /* 2405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5233 /* 2409 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5234 /* 2413 */ // MIs[3] imm2
5235 /* 2413 */ // No operand predicates
5236 /* 2413 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5237 /* 2415 */ // Combiner Rule #14: APlusC1MinusC2
5238 /* 2415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
5239 /* 2418 */ // Label 149: @2418
5240 /* 2418 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2455), // Rule ID 17 //
5241 /* 2423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5242 /* 2426 */ // MIs[0] root
5243 /* 2426 */ // No operand predicates
5244 /* 2426 */ // MIs[0] sub1
5245 /* 2426 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5246 /* 2430 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5247 /* 2434 */ // MIs[1] c1
5248 /* 2434 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5249 /* 2438 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5250 /* 2442 */ // MIs[2] imm1
5251 /* 2442 */ // No operand predicates
5252 /* 2442 */ // MIs[1] A
5253 /* 2442 */ // No operand predicates
5254 /* 2442 */ // MIs[0] c2
5255 /* 2442 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5256 /* 2446 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5257 /* 2450 */ // MIs[3] imm2
5258 /* 2450 */ // No operand predicates
5259 /* 2450 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5260 /* 2452 */ // Combiner Rule #17: C1Minus2MinusC2
5261 /* 2452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5262 /* 2455 */ // Label 150: @2455
5263 /* 2455 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2500), // Rule ID 1 //
5264 /* 2460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5265 /* 2463 */ // MIs[0] root
5266 /* 2463 */ // No operand predicates
5267 /* 2463 */ // MIs[0] sub2
5268 /* 2463 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5269 /* 2467 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5270 /* 2471 */ // MIs[1] A
5271 /* 2471 */ // No operand predicates
5272 /* 2471 */ // MIs[1] sub1
5273 /* 2471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5274 /* 2475 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5275 /* 2479 */ // MIs[2] B
5276 /* 2479 */ // No operand predicates
5277 /* 2479 */ // MIs[2] C
5278 /* 2479 */ // No operand predicates
5279 /* 2479 */ // MIs[0] C
5280 /* 2479 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5281 /* 2484 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5282 /* 2486 */ // Combiner Rule #1: AMinusBMinusCMinusC
5283 /* 2486 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5284 /* 2489 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5285 /* 2491 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5286 /* 2495 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5287 /* 2499 */ GIR_EraseRootFromParent_Done,
5288 /* 2500 */ // Label 151: @2500
5289 /* 2500 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2537), // Rule ID 16 //
5290 /* 2505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5291 /* 2508 */ // MIs[0] root
5292 /* 2508 */ // No operand predicates
5293 /* 2508 */ // MIs[0] sub1
5294 /* 2508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5295 /* 2512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5296 /* 2516 */ // MIs[1] A
5297 /* 2516 */ // No operand predicates
5298 /* 2516 */ // MIs[1] c1
5299 /* 2516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5300 /* 2520 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5301 /* 2524 */ // MIs[2] imm1
5302 /* 2524 */ // No operand predicates
5303 /* 2524 */ // MIs[0] c2
5304 /* 2524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5305 /* 2528 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5306 /* 2532 */ // MIs[3] imm2
5307 /* 2532 */ // No operand predicates
5308 /* 2532 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5309 /* 2534 */ // Combiner Rule #16: AMinusC1MinusC2
5310 /* 2534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5311 /* 2537 */ // Label 152: @2537
5312 /* 2537 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2580), // Rule ID 170 //
5313 /* 2542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5314 /* 2545 */ // MIs[0] dst
5315 /* 2545 */ // No operand predicates
5316 /* 2545 */ // MIs[0] Operand 1
5317 /* 2545 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5318 /* 2549 */ // MIs[0] and
5319 /* 2549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5320 /* 2553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5321 /* 2557 */ // MIs[1] x
5322 /* 2557 */ // No operand predicates
5323 /* 2557 */ // MIs[1] Operand 2
5324 /* 2557 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5325 /* 2561 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
5326 /* 2565 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5327 /* 2567 */ // Combiner Rule #126: neg_and_one_to_sext_inreg
5328 /* 2567 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5329 /* 2570 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5330 /* 2572 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5331 /* 2576 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5332 /* 2579 */ GIR_EraseRootFromParent_Done,
5333 /* 2580 */ // Label 153: @2580
5334 /* 2580 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2617), // Rule ID 15 //
5335 /* 2585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5336 /* 2588 */ // MIs[0] root
5337 /* 2588 */ // No operand predicates
5338 /* 2588 */ // MIs[0] c2
5339 /* 2588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5340 /* 2592 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5341 /* 2596 */ // MIs[1] imm2
5342 /* 2596 */ // No operand predicates
5343 /* 2596 */ // MIs[0] add
5344 /* 2596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5345 /* 2600 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5346 /* 2604 */ // MIs[2] A
5347 /* 2604 */ // No operand predicates
5348 /* 2604 */ // MIs[2] c1
5349 /* 2604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5350 /* 2608 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5351 /* 2612 */ // MIs[3] imm1
5352 /* 2612 */ // No operand predicates
5353 /* 2612 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5354 /* 2614 */ // Combiner Rule #15: C2MinusAPlusC1
5355 /* 2614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5356 /* 2617 */ // Label 154: @2617
5357 /* 2617 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2656), // Rule ID 122 //
5358 /* 2622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5359 /* 2625 */ // MIs[0] dst
5360 /* 2625 */ // No operand predicates
5361 /* 2625 */ // MIs[0] x
5362 /* 2625 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5363 /* 2629 */ // MIs[0] x
5364 /* 2629 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5365 /* 2634 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5366 /* 2637 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5367 /* 2647 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
5368 /* 2647 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5369 /* 2650 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5370 /* 2652 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5371 /* 2655 */ GIR_EraseRootFromParent_Done,
5372 /* 2656 */ // Label 155: @2656
5373 /* 2656 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2690), // Rule ID 12 //
5374 /* 2661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5375 /* 2664 */ // MIs[0] root
5376 /* 2664 */ // No operand predicates
5377 /* 2664 */ // MIs[0] A
5378 /* 2664 */ // No operand predicates
5379 /* 2664 */ // MIs[0] add
5380 /* 2664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5381 /* 2668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5382 /* 2672 */ // MIs[1] A
5383 /* 2672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5384 /* 2677 */ // MIs[1] B
5385 /* 2677 */ // No operand predicates
5386 /* 2677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5387 /* 2682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5388 /* 2684 */ // Combiner Rule #12: AMinusBMinusA
5389 /* 2684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5390 /* 2689 */ GIR_EraseRootFromParent_Done,
5391 /* 2690 */ // Label 156: @2690
5392 /* 2690 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2724), // Rule ID 11 //
5393 /* 2695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5394 /* 2698 */ // MIs[0] root
5395 /* 2698 */ // No operand predicates
5396 /* 2698 */ // MIs[0] A
5397 /* 2698 */ // No operand predicates
5398 /* 2698 */ // MIs[0] sub1
5399 /* 2698 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5400 /* 2702 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5401 /* 2706 */ // MIs[1] Operand 1
5402 /* 2706 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5403 /* 2710 */ // MIs[1] B
5404 /* 2710 */ // No operand predicates
5405 /* 2710 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5406 /* 2712 */ // Combiner Rule #11: AMinusZeroMinusB
5407 /* 2712 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5408 /* 2715 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5409 /* 2717 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5410 /* 2719 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5411 /* 2723 */ GIR_EraseRootFromParent_Done,
5412 /* 2724 */ // Label 157: @2724
5413 /* 2724 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2751), // Rule ID 48 //
5414 /* 2729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
5415 /* 2732 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5416 /* 2738 */ // MIs[0] root
5417 /* 2738 */ // No operand predicates
5418 /* 2738 */ // MIs[0] x
5419 /* 2738 */ // No operand predicates
5420 /* 2738 */ // MIs[0] right
5421 /* 2738 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5422 /* 2742 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5423 /* 2746 */ // MIs[1] imm
5424 /* 2746 */ // No operand predicates
5425 /* 2746 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5426 /* 2748 */ // Combiner Rule #46: sub_of_vscale
5427 /* 2748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
5428 /* 2751 */ // Label 158: @2751
5429 /* 2751 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2774), // Rule ID 110 //
5430 /* 2756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5431 /* 2759 */ // MIs[0] dst
5432 /* 2759 */ // No operand predicates
5433 /* 2759 */ // MIs[0] lhs
5434 /* 2759 */ // No operand predicates
5435 /* 2759 */ // MIs[0] Operand 2
5436 /* 2759 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5437 /* 2763 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5438 /* 2768 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
5439 /* 2768 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5440 /* 2773 */ GIR_EraseRootFromParent_Done,
5441 /* 2774 */ // Label 159: @2774
5442 /* 2774 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2795), // Rule ID 21 //
5443 /* 2779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5444 /* 2782 */ // MIs[0] d
5445 /* 2782 */ // No operand predicates
5446 /* 2782 */ // MIs[0] op1
5447 /* 2782 */ // No operand predicates
5448 /* 2782 */ // MIs[0] c
5449 /* 2782 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5450 /* 2786 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5451 /* 2790 */ // MIs[1] imm
5452 /* 2790 */ // No operand predicates
5453 /* 2790 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5454 /* 2792 */ // Combiner Rule #21: sub_to_add
5455 /* 2792 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5456 /* 2795 */ // Label 160: @2795
5457 /* 2795 */ GIM_Reject,
5458 /* 2796 */ // Label 3: @2796
5459 /* 2796 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2807), // Rule ID 84 //
5460 /* 2801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5461 /* 2804 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_MUL'
5462 /* 2804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5463 /* 2807 */ // Label 161: @2807
5464 /* 2807 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2818), // Rule ID 265 //
5465 /* 2812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5466 /* 2815 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_MUL'
5467 /* 2815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5468 /* 2818 */ // Label 162: @2818
5469 /* 2818 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2829), // Rule ID 358 //
5470 /* 2823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5471 /* 2826 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
5472 /* 2826 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5473 /* 2829 */ // Label 163: @2829
5474 /* 2829 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2869), // Rule ID 23 //
5475 /* 2834 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5476 /* 2837 */ // MIs[0] dst
5477 /* 2837 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5478 /* 2841 */ // MIs[0] x
5479 /* 2841 */ // No operand predicates
5480 /* 2841 */ // MIs[0] Operand 2
5481 /* 2841 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5482 /* 2845 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5483 /* 2848 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5484 /* 2858 */ // Combiner Rule #23: mul_by_neg_one
5485 /* 2858 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5486 /* 2861 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5487 /* 2863 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5488 /* 2866 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5489 /* 2868 */ GIR_EraseRootFromParent_Done,
5490 /* 2869 */ // Label 164: @2869
5491 /* 2869 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2904), // Rule ID 46 //
5492 /* 2874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5493 /* 2877 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5494 /* 2883 */ // MIs[0] root
5495 /* 2883 */ // No operand predicates
5496 /* 2883 */ // MIs[0] left
5497 /* 2883 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5498 /* 2887 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5499 /* 2891 */ // MIs[1] scale
5500 /* 2891 */ // No operand predicates
5501 /* 2891 */ // MIs[0] x
5502 /* 2891 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5503 /* 2895 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5504 /* 2899 */ // MIs[2] imm1
5505 /* 2899 */ // No operand predicates
5506 /* 2899 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5507 /* 2901 */ // Combiner Rule #44: mul_of_vscale
5508 /* 2901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
5509 /* 2904 */ // Label 165: @2904
5510 /* 2904 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2944), // Rule ID 131 //
5511 /* 2909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5512 /* 2912 */ // MIs[0] dst
5513 /* 2912 */ // No operand predicates
5514 /* 2912 */ // MIs[0] zero
5515 /* 2912 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5516 /* 2916 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5517 /* 2920 */ // MIs[1] Operand 1
5518 /* 2920 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5519 /* 2931 */ // MIs[0] rhs
5520 /* 2931 */ // No operand predicates
5521 /* 2931 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5522 /* 2936 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5523 /* 2938 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5524 /* 2938 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5525 /* 2943 */ GIR_EraseRootFromParent_Done,
5526 /* 2944 */ // Label 166: @2944
5527 /* 2944 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2967), // Rule ID 132 //
5528 /* 2949 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5529 /* 2952 */ // MIs[0] dst
5530 /* 2952 */ // No operand predicates
5531 /* 2952 */ // MIs[0] lhs
5532 /* 2952 */ // No operand predicates
5533 /* 2952 */ // MIs[0] zero
5534 /* 2952 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5535 /* 2956 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5536 /* 2961 */ // Combiner Rule #94: binop_right_to_zero
5537 /* 2961 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5538 /* 2966 */ GIR_EraseRootFromParent_Done,
5539 /* 2967 */ // Label 167: @2967
5540 /* 2967 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2990), // Rule ID 137 //
5541 /* 2972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5542 /* 2975 */ // MIs[0] dst
5543 /* 2975 */ // No operand predicates
5544 /* 2975 */ // MIs[0] x
5545 /* 2975 */ // No operand predicates
5546 /* 2975 */ // MIs[0] Operand 2
5547 /* 2975 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5548 /* 2979 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5549 /* 2984 */ // Combiner Rule #99: right_identity_one_int
5550 /* 2984 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5551 /* 2989 */ GIR_EraseRootFromParent_Done,
5552 /* 2990 */ // Label 168: @2990
5553 /* 2990 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3001), // Rule ID 20 //
5554 /* 2995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5555 /* 2998 */ // MIs[0] d
5556 /* 2998 */ // No operand predicates
5557 /* 2998 */ // MIs[0] op1
5558 /* 2998 */ // No operand predicates
5559 /* 2998 */ // MIs[0] op2
5560 /* 2998 */ // No operand predicates
5561 /* 2998 */ // Combiner Rule #20: mul_to_shl
5562 /* 2998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5563 /* 3001 */ // Label 169: @3001
5564 /* 3001 */ GIM_Reject,
5565 /* 3002 */ // Label 4: @3002
5566 /* 3002 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3013), // Rule ID 236 //
5567 /* 3007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5568 /* 3010 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5569 /* 3010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5570 /* 3013 */ // Label 170: @3013
5571 /* 3013 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3024), // Rule ID 271 //
5572 /* 3018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5573 /* 3021 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SDIV'
5574 /* 3021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5575 /* 3024 */ // Label 171: @3024
5576 /* 3024 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3035), // Rule ID 326 //
5577 /* 3029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5578 /* 3032 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5579 /* 3032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5580 /* 3035 */ // Label 172: @3035
5581 /* 3035 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3075), // Rule ID 127 //
5582 /* 3040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5583 /* 3043 */ // MIs[0] dst
5584 /* 3043 */ // No operand predicates
5585 /* 3043 */ // MIs[0] zero
5586 /* 3043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5587 /* 3047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5588 /* 3051 */ // MIs[1] Operand 1
5589 /* 3051 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5590 /* 3062 */ // MIs[0] rhs
5591 /* 3062 */ // No operand predicates
5592 /* 3062 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5593 /* 3067 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5594 /* 3069 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5595 /* 3069 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5596 /* 3074 */ GIR_EraseRootFromParent_Done,
5597 /* 3075 */ // Label 173: @3075
5598 /* 3075 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3092), // Rule ID 350 //
5599 /* 3080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5600 /* 3083 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5601 /* 3089 */ // MIs[0] dst
5602 /* 3089 */ // No operand predicates
5603 /* 3089 */ // MIs[0] x
5604 /* 3089 */ // No operand predicates
5605 /* 3089 */ // MIs[0] y
5606 /* 3089 */ // No operand predicates
5607 /* 3089 */ // Combiner Rule #213: sdiv_by_pow2
5608 /* 3089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
5609 /* 3092 */ // Label 174: @3092
5610 /* 3092 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3103), // Rule ID 352 //
5611 /* 3097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5612 /* 3100 */ // MIs[0] dst
5613 /* 3100 */ // No operand predicates
5614 /* 3100 */ // MIs[0] x
5615 /* 3100 */ // No operand predicates
5616 /* 3100 */ // MIs[0] y
5617 /* 3100 */ // No operand predicates
5618 /* 3100 */ // Combiner Rule #215: sdiv_by_const
5619 /* 3100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5620 /* 3103 */ // Label 175: @3103
5621 /* 3103 */ GIM_Reject,
5622 /* 3104 */ // Label 5: @3104
5623 /* 3104 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3115), // Rule ID 87 //
5624 /* 3109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5625 /* 3112 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5626 /* 3112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5627 /* 3115 */ // Label 176: @3115
5628 /* 3115 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3126), // Rule ID 237 //
5629 /* 3120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5630 /* 3123 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5631 /* 3123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5632 /* 3126 */ // Label 177: @3126
5633 /* 3126 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3137), // Rule ID 270 //
5634 /* 3131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5635 /* 3134 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UDIV'
5636 /* 3134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5637 /* 3137 */ // Label 178: @3137
5638 /* 3137 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3148), // Rule ID 328 //
5639 /* 3142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5640 /* 3145 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5641 /* 3145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5642 /* 3148 */ // Label 179: @3148
5643 /* 3148 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3188), // Rule ID 128 //
5644 /* 3153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5645 /* 3156 */ // MIs[0] dst
5646 /* 3156 */ // No operand predicates
5647 /* 3156 */ // MIs[0] zero
5648 /* 3156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5649 /* 3160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5650 /* 3164 */ // MIs[1] Operand 1
5651 /* 3164 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5652 /* 3175 */ // MIs[0] rhs
5653 /* 3175 */ // No operand predicates
5654 /* 3175 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5655 /* 3180 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5656 /* 3182 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5657 /* 3182 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5658 /* 3187 */ GIR_EraseRootFromParent_Done,
5659 /* 3188 */ // Label 180: @3188
5660 /* 3188 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3205), // Rule ID 349 //
5661 /* 3193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
5662 /* 3196 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5663 /* 3202 */ // MIs[0] dst
5664 /* 3202 */ // No operand predicates
5665 /* 3202 */ // MIs[0] x
5666 /* 3202 */ // No operand predicates
5667 /* 3202 */ // MIs[0] y
5668 /* 3202 */ // No operand predicates
5669 /* 3202 */ // Combiner Rule #212: udiv_by_pow2
5670 /* 3202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
5671 /* 3205 */ // Label 181: @3205
5672 /* 3205 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3216), // Rule ID 351 //
5673 /* 3210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
5674 /* 3213 */ // MIs[0] dst
5675 /* 3213 */ // No operand predicates
5676 /* 3213 */ // MIs[0] x
5677 /* 3213 */ // No operand predicates
5678 /* 3213 */ // MIs[0] y
5679 /* 3213 */ // No operand predicates
5680 /* 3213 */ // Combiner Rule #214: udiv_by_const
5681 /* 3213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5682 /* 3216 */ // Label 182: @3216
5683 /* 3216 */ GIM_Reject,
5684 /* 3217 */ // Label 6: @3217
5685 /* 3217 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3228), // Rule ID 238 //
5686 /* 3222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5687 /* 3225 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5688 /* 3225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5689 /* 3228 */ // Label 183: @3228
5690 /* 3228 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3239), // Rule ID 273 //
5691 /* 3233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5692 /* 3236 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SREM'
5693 /* 3236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5694 /* 3239 */ // Label 184: @3239
5695 /* 3239 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3250), // Rule ID 327 //
5696 /* 3244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5697 /* 3247 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SREM'
5698 /* 3247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5699 /* 3250 */ // Label 185: @3250
5700 /* 3250 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3290), // Rule ID 129 //
5701 /* 3255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5702 /* 3258 */ // MIs[0] dst
5703 /* 3258 */ // No operand predicates
5704 /* 3258 */ // MIs[0] zero
5705 /* 3258 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5706 /* 3262 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5707 /* 3266 */ // MIs[1] Operand 1
5708 /* 3266 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5709 /* 3277 */ // MIs[0] rhs
5710 /* 3277 */ // No operand predicates
5711 /* 3277 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5712 /* 3282 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5713 /* 3284 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5714 /* 3284 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5715 /* 3289 */ GIR_EraseRootFromParent_Done,
5716 /* 3290 */ // Label 186: @3290
5717 /* 3290 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3301), // Rule ID 346 //
5718 /* 3295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
5719 /* 3298 */ // MIs[0] dst
5720 /* 3298 */ // No operand predicates
5721 /* 3298 */ // MIs[0] x
5722 /* 3298 */ // No operand predicates
5723 /* 3298 */ // MIs[0] y
5724 /* 3298 */ // No operand predicates
5725 /* 3298 */ // Combiner Rule #209: srem_pow2_to_mask
5726 /* 3298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5727 /* 3301 */ // Label 187: @3301
5728 /* 3301 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3312), // Rule ID 348 //
5729 /* 3306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5730 /* 3309 */ // MIs[0] dst
5731 /* 3309 */ // No operand predicates
5732 /* 3309 */ // MIs[0] x
5733 /* 3309 */ // No operand predicates
5734 /* 3309 */ // MIs[0] y
5735 /* 3309 */ // No operand predicates
5736 /* 3309 */ // Combiner Rule #211: srem_by_const
5737 /* 3309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5738 /* 3312 */ // Label 188: @3312
5739 /* 3312 */ GIM_Reject,
5740 /* 3313 */ // Label 7: @3313
5741 /* 3313 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3324), // Rule ID 88 //
5742 /* 3318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5743 /* 3321 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5744 /* 3321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5745 /* 3324 */ // Label 189: @3324
5746 /* 3324 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3335), // Rule ID 239 //
5747 /* 3329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5748 /* 3332 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5749 /* 3332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5750 /* 3335 */ // Label 190: @3335
5751 /* 3335 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3346), // Rule ID 272 //
5752 /* 3340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5753 /* 3343 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UREM'
5754 /* 3343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5755 /* 3346 */ // Label 191: @3346
5756 /* 3346 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3357), // Rule ID 329 //
5757 /* 3351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5758 /* 3354 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UREM'
5759 /* 3354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5760 /* 3357 */ // Label 192: @3357
5761 /* 3357 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3397), // Rule ID 130 //
5762 /* 3362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5763 /* 3365 */ // MIs[0] dst
5764 /* 3365 */ // No operand predicates
5765 /* 3365 */ // MIs[0] zero
5766 /* 3365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5767 /* 3369 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5768 /* 3373 */ // MIs[1] Operand 1
5769 /* 3373 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5770 /* 3384 */ // MIs[0] rhs
5771 /* 3384 */ // No operand predicates
5772 /* 3384 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5773 /* 3389 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5774 /* 3391 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5775 /* 3391 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5776 /* 3396 */ GIR_EraseRootFromParent_Done,
5777 /* 3397 */ // Label 193: @3397
5778 /* 3397 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3408), // Rule ID 187 //
5779 /* 3402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
5780 /* 3405 */ // MIs[0] dst
5781 /* 3405 */ // No operand predicates
5782 /* 3405 */ // MIs[0] x
5783 /* 3405 */ // No operand predicates
5784 /* 3405 */ // MIs[0] y
5785 /* 3405 */ // No operand predicates
5786 /* 3405 */ // Combiner Rule #143: urem_pow2_to_mask
5787 /* 3405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
5788 /* 3408 */ // Label 194: @3408
5789 /* 3408 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3419), // Rule ID 347 //
5790 /* 3413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5791 /* 3416 */ // MIs[0] dst
5792 /* 3416 */ // No operand predicates
5793 /* 3416 */ // MIs[0] x
5794 /* 3416 */ // No operand predicates
5795 /* 3416 */ // MIs[0] y
5796 /* 3416 */ // No operand predicates
5797 /* 3416 */ // Combiner Rule #210: urem_by_const
5798 /* 3416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5799 /* 3419 */ // Label 195: @3419
5800 /* 3419 */ GIM_Reject,
5801 /* 3420 */ // Label 8: @3420
5802 /* 3420 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3431), // Rule ID 79 //
5803 /* 3425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5804 /* 3428 */ // Combiner Rule #75: load_and_mask; wip_match_opcode 'G_AND'
5805 /* 3428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5806 /* 3431 */ // Label 196: @3431
5807 /* 3431 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3442), // Rule ID 83 //
5808 /* 3436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5809 /* 3439 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_AND'
5810 /* 3439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5811 /* 3442 */ // Label 197: @3442
5812 /* 3442 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3453), // Rule ID 153 //
5813 /* 3447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
5814 /* 3450 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5815 /* 3450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5816 /* 3453 */ // Label 198: @3453
5817 /* 3453 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3464), // Rule ID 173 //
5818 /* 3458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
5819 /* 3461 */ // Combiner Rule #129: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5820 /* 3461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5821 /* 3464 */ // Label 199: @3464
5822 /* 3464 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3475), // Rule ID 185 //
5823 /* 3469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
5824 /* 3472 */ // Combiner Rule #141: redundant_and; wip_match_opcode 'G_AND'
5825 /* 3472 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5826 /* 3475 */ // Label 200: @3475
5827 /* 3475 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3486), // Rule ID 209 //
5828 /* 3480 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5829 /* 3483 */ // Combiner Rule #165: overlapping_and; wip_match_opcode 'G_AND'
5830 /* 3483 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5831 /* 3486 */ // Label 201: @3486
5832 /* 3486 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3497), // Rule ID 262 //
5833 /* 3491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5834 /* 3494 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_AND'
5835 /* 3494 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5836 /* 3497 */ // Label 202: @3497
5837 /* 3497 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3508), // Rule ID 311 //
5838 /* 3502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
5839 /* 3505 */ // Combiner Rule #199: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5840 /* 3505 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
5841 /* 3508 */ // Label 203: @3508
5842 /* 3508 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3519), // Rule ID 323 //
5843 /* 3513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5844 /* 3516 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_AND'
5845 /* 3516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5846 /* 3519 */ // Label 204: @3519
5847 /* 3519 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3530), // Rule ID 359 //
5848 /* 3524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5849 /* 3527 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5850 /* 3527 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5851 /* 3530 */ // Label 205: @3530
5852 /* 3530 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3541), // Rule ID 386 //
5853 /* 3535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5854 /* 3538 */ // Combiner Rule #222: match_ands; wip_match_opcode 'G_AND'
5855 /* 3538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5856 /* 3541 */ // Label 206: @3541
5857 /* 3541 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3552), // Rule ID 429 //
5858 /* 3546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
5859 /* 3549 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_AND'
5860 /* 3549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
5861 /* 3552 */ // Label 207: @3552
5862 /* 3552 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3638), // Rule ID 391 //
5863 /* 3557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5864 /* 3560 */ // MIs[0] root
5865 /* 3560 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5866 /* 3564 */ // MIs[0] or
5867 /* 3564 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5868 /* 3568 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5869 /* 3572 */ // MIs[1] x
5870 /* 3572 */ // No operand predicates
5871 /* 3572 */ // MIs[1] y
5872 /* 3572 */ // No operand predicates
5873 /* 3572 */ // MIs[0] not
5874 /* 3572 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5875 /* 3576 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5876 /* 3580 */ // MIs[2] y
5877 /* 3580 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5878 /* 3585 */ // MIs[2] Operand 2
5879 /* 3585 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5880 /* 3589 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5881 /* 3591 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5882 /* 3594 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5883 /* 3604 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5884 /* 3607 */ // Combiner Rule #227: and_xor_or_to_xor_and
5885 /* 3607 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5886 /* 3610 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5887 /* 3615 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
5888 /* 3619 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5889 /* 3622 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5890 /* 3626 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5891 /* 3630 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5892 /* 3634 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5893 /* 3637 */ GIR_EraseRootFromParent_Done,
5894 /* 3638 */ // Label 208: @3638
5895 /* 3638 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3736), // Rule ID 166 //
5896 /* 3643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
5897 /* 3646 */ // MIs[0] root
5898 /* 3646 */ // No operand predicates
5899 /* 3646 */ // MIs[0] d1
5900 /* 3646 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5901 /* 3650 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5902 /* 3654 */ // MIs[1] p
5903 /* 3654 */ // No operand predicates
5904 /* 3654 */ // MIs[1] s1
5905 /* 3654 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5906 /* 3658 */ // MIs[1] Operand 3
5907 /* 3658 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5908 /* 3662 */ // MIs[0] d2
5909 /* 3662 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5910 /* 3666 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5911 /* 3670 */ // MIs[2] p
5912 /* 3670 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5913 /* 3675 */ // MIs[2] s2
5914 /* 3675 */ // No operand predicates
5915 /* 3675 */ // MIs[2] Operand 3
5916 /* 3675 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5917 /* 3679 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
5918 /* 3683 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5919 /* 3685 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5920 /* 3688 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5921 /* 3698 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5922 /* 3701 */ // Combiner Rule #122: double_icmp_zero_and_combine
5923 /* 3701 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5924 /* 3704 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5925 /* 3709 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5926 /* 3713 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5927 /* 3717 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5928 /* 3721 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5929 /* 3725 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5930 /* 3729 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5931 /* 3732 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5932 /* 3735 */ GIR_EraseRootFromParent_Done,
5933 /* 3736 */ // Label 209: @3736
5934 /* 3736 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3773), // Rule ID 255 //
5935 /* 3741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
5936 /* 3744 */ // MIs[0] root
5937 /* 3744 */ // No operand predicates
5938 /* 3744 */ // MIs[0] shift
5939 /* 3744 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5940 /* 3748 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5941 /* 3752 */ // MIs[1] x
5942 /* 3752 */ // No operand predicates
5943 /* 3752 */ // MIs[1] lsb
5944 /* 3752 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5945 /* 3756 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5946 /* 3760 */ // MIs[2] imm1
5947 /* 3760 */ // No operand predicates
5948 /* 3760 */ // MIs[0] mask
5949 /* 3760 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5950 /* 3764 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5951 /* 3768 */ // MIs[3] imm2
5952 /* 3768 */ // No operand predicates
5953 /* 3768 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5954 /* 3770 */ // Combiner Rule #188: bitfield_extract_from_and
5955 /* 3770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
5956 /* 3773 */ // Label 210: @3773
5957 /* 3773 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3822), // Rule ID 390 //
5958 /* 3778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5959 /* 3781 */ // MIs[0] root
5960 /* 3781 */ // No operand predicates
5961 /* 3781 */ // MIs[0] or
5962 /* 3781 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5963 /* 3785 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5964 /* 3789 */ // MIs[1] x
5965 /* 3789 */ // No operand predicates
5966 /* 3789 */ // MIs[1] not
5967 /* 3789 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5968 /* 3793 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5969 /* 3797 */ // MIs[2] y
5970 /* 3797 */ // No operand predicates
5971 /* 3797 */ // MIs[2] Operand 2
5972 /* 3797 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5973 /* 3801 */ // MIs[0] y
5974 /* 3801 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5975 /* 3806 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5976 /* 3808 */ // Combiner Rule #226: and_xor_or_to_and
5977 /* 3808 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5978 /* 3811 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5979 /* 3813 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5980 /* 3817 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
5981 /* 3821 */ GIR_EraseRootFromParent_Done,
5982 /* 3822 */ // Label 211: @3822
5983 /* 3822 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3936), // Rule ID 451 //
5984 /* 3827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule279Enabled),
5985 /* 3830 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i64,
5986 /* 3833 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_i64,
5987 /* 3836 */ // MIs[0] dst
5988 /* 3836 */ // No operand predicates
5989 /* 3836 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
5990 /* 3840 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_i32,
5991 /* 3843 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_i32,
5992 /* 3846 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_i32,
5993 /* 3849 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_i32,
5994 /* 3852 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_i32,
5995 /* 3855 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i32,
5996 /* 3858 */ // Combiner Rule #279: combine_and_s64_with_s32_mask
5997 /* 3858 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5998 /* 3861 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5999 /* 3866 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6000 /* 3871 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6001 /* 3873 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6002 /* 3877 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6003 /* 3882 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6004 /* 3887 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
6005 /* 3891 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6006 /* 3895 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6007 /* 3900 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
6008 /* 3903 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6009 /* 3906 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6010 /* 3910 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6011 /* 3915 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
6012 /* 3918 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
6013 /* 3921 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6014 /* 3925 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
6015 /* 3929 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
6016 /* 3932 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
6017 /* 3935 */ GIR_EraseRootFromParent_Done,
6018 /* 3936 */ // Label 212: @3936
6019 /* 3936 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3960), // Rule ID 120 //
6020 /* 3941 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6021 /* 3944 */ // MIs[0] dst
6022 /* 3944 */ // No operand predicates
6023 /* 3944 */ // MIs[0] src
6024 /* 3944 */ // No operand predicates
6025 /* 3944 */ // MIs[0] src
6026 /* 3944 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6027 /* 3949 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6028 /* 3954 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
6029 /* 3954 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6030 /* 3959 */ GIR_EraseRootFromParent_Done,
6031 /* 3960 */ // Label 213: @3960
6032 /* 3960 */ GIM_Reject,
6033 /* 3961 */ // Label 9: @3961
6034 /* 3961 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3972), // Rule ID 85 //
6035 /* 3966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6036 /* 3969 */ // Combiner Rule #79: undef_to_negative_one; wip_match_opcode 'G_OR'
6037 /* 3969 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
6038 /* 3972 */ // Label 214: @3972
6039 /* 3972 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3983), // Rule ID 154 //
6040 /* 3977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6041 /* 3980 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
6042 /* 3980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6043 /* 3983 */ // Label 215: @3983
6044 /* 3983 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3994), // Rule ID 186 //
6045 /* 3988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
6046 /* 3991 */ // Combiner Rule #142: redundant_or; wip_match_opcode 'G_OR'
6047 /* 3991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
6048 /* 3994 */ // Label 216: @3994
6049 /* 3994 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(4005), // Rule ID 235 //
6050 /* 3999 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
6051 /* 4002 */ // Combiner Rule #175: load_or_combine; wip_match_opcode 'G_OR'
6052 /* 4002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6053 /* 4005 */ // Label 217: @4005
6054 /* 4005 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(4016), // Rule ID 240 //
6055 /* 4010 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6056 /* 4013 */ // Combiner Rule #177: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
6057 /* 4013 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6058 /* 4016 */ // Label 218: @4016
6059 /* 4016 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(4027), // Rule ID 266 //
6060 /* 4021 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6061 /* 4024 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_OR'
6062 /* 4024 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6063 /* 4027 */ // Label 219: @4027
6064 /* 4027 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4038), // Rule ID 324 //
6065 /* 4032 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6066 /* 4035 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_OR'
6067 /* 4035 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6068 /* 4038 */ // Label 220: @4038
6069 /* 4038 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4049), // Rule ID 360 //
6070 /* 4043 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
6071 /* 4046 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
6072 /* 4046 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
6073 /* 4049 */ // Label 221: @4049
6074 /* 4049 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4060), // Rule ID 387 //
6075 /* 4054 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
6076 /* 4057 */ // Combiner Rule #223: match_ors; wip_match_opcode 'G_OR'
6077 /* 4057 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6078 /* 4060 */ // Label 222: @4060
6079 /* 4060 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4071), // Rule ID 430 //
6080 /* 4065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
6081 /* 4068 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_OR'
6082 /* 4068 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
6083 /* 4071 */ // Label 223: @4071
6084 /* 4071 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4157), // Rule ID 389 //
6085 /* 4076 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
6086 /* 4079 */ // MIs[0] root
6087 /* 4079 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6088 /* 4083 */ // MIs[0] and
6089 /* 4083 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6090 /* 4087 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6091 /* 4091 */ // MIs[1] x
6092 /* 4091 */ // No operand predicates
6093 /* 4091 */ // MIs[1] y
6094 /* 4091 */ // No operand predicates
6095 /* 4091 */ // MIs[0] not
6096 /* 4091 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6097 /* 4095 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6098 /* 4099 */ // MIs[2] y
6099 /* 4099 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6100 /* 4104 */ // MIs[2] Operand 2
6101 /* 4104 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6102 /* 4108 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6103 /* 4110 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6104 /* 4113 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6105 /* 4123 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6106 /* 4126 */ // Combiner Rule #225: or_and_xor_to_xor_or
6107 /* 4126 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6108 /* 4129 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6109 /* 4134 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6110 /* 4138 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6111 /* 4141 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6112 /* 4145 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6113 /* 4149 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6114 /* 4153 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6115 /* 4156 */ GIR_EraseRootFromParent_Done,
6116 /* 4157 */ // Label 224: @4157
6117 /* 4157 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4244), // Rule ID 453 //
6118 /* 4162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule280Enabled),
6119 /* 4165 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i64,
6120 /* 4168 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_i64,
6121 /* 4171 */ // MIs[0] dst
6122 /* 4171 */ // No operand predicates
6123 /* 4171 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6124 /* 4175 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6125 /* 4179 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_i32,
6126 /* 4183 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
6127 /* 4187 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6128 /* 4189 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
6129 /* 4192 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6130 /* 4195 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6131 /* 4198 */ // Combiner Rule #280: combine_or_s64_s32 @ [dst[1]]
6132 /* 4198 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6133 /* 4201 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6134 /* 4206 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6135 /* 4211 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
6136 /* 4213 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6137 /* 4217 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6138 /* 4222 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6139 /* 4225 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
6140 /* 4229 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6141 /* 4233 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
6142 /* 4237 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6143 /* 4240 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
6144 /* 4243 */ GIR_EraseRootFromParent_Done,
6145 /* 4244 */ // Label 225: @4244
6146 /* 4244 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4291), // Rule ID 247 //
6147 /* 4249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6148 /* 4252 */ // MIs[0] root
6149 /* 4252 */ // No operand predicates
6150 /* 4252 */ // MIs[0] out1
6151 /* 4252 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6152 /* 4256 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
6153 /* 4260 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6154 /* 4260 */ // No operand predicates
6155 /* 4260 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6156 /* 4260 */ // No operand predicates
6157 /* 4260 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6158 /* 4260 */ // No operand predicates
6159 /* 4260 */ // MIs[0] out2
6160 /* 4260 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6161 /* 4264 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
6162 /* 4268 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6163 /* 4268 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6164 /* 4273 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6165 /* 4273 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6166 /* 4278 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6167 /* 4283 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6168 /* 4285 */ // Combiner Rule #182: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
6169 /* 4285 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6170 /* 4290 */ GIR_EraseRootFromParent_Done,
6171 /* 4291 */ // Label 226: @4291
6172 /* 4291 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4338), // Rule ID 249 //
6173 /* 4296 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6174 /* 4299 */ // MIs[0] root
6175 /* 4299 */ // No operand predicates
6176 /* 4299 */ // MIs[0] out1
6177 /* 4299 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6178 /* 4303 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
6179 /* 4307 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6180 /* 4307 */ // No operand predicates
6181 /* 4307 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6182 /* 4307 */ // No operand predicates
6183 /* 4307 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6184 /* 4307 */ // No operand predicates
6185 /* 4307 */ // MIs[0] out2
6186 /* 4307 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6187 /* 4311 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6188 /* 4315 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6189 /* 4315 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6190 /* 4320 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6191 /* 4320 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6192 /* 4325 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6193 /* 4330 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6194 /* 4332 */ // Combiner Rule #183: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
6195 /* 4332 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6196 /* 4337 */ GIR_EraseRootFromParent_Done,
6197 /* 4338 */ // Label 227: @4338
6198 /* 4338 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4436), // Rule ID 167 //
6199 /* 4343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6200 /* 4346 */ // MIs[0] root
6201 /* 4346 */ // No operand predicates
6202 /* 4346 */ // MIs[0] d1
6203 /* 4346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6204 /* 4350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6205 /* 4354 */ // MIs[1] p
6206 /* 4354 */ // No operand predicates
6207 /* 4354 */ // MIs[1] s1
6208 /* 4354 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6209 /* 4358 */ // MIs[1] Operand 3
6210 /* 4358 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6211 /* 4362 */ // MIs[0] d2
6212 /* 4362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6213 /* 4366 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6214 /* 4370 */ // MIs[2] p
6215 /* 4370 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6216 /* 4375 */ // MIs[2] s2
6217 /* 4375 */ // No operand predicates
6218 /* 4375 */ // MIs[2] Operand 3
6219 /* 4375 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6220 /* 4379 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
6221 /* 4383 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6222 /* 4385 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6223 /* 4388 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6224 /* 4398 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6225 /* 4401 */ // Combiner Rule #123: double_icmp_zero_or_combine
6226 /* 4401 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6227 /* 4404 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6228 /* 4409 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6229 /* 4413 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6230 /* 4417 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6231 /* 4421 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6232 /* 4425 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6233 /* 4429 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6234 /* 4432 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6235 /* 4435 */ GIR_EraseRootFromParent_Done,
6236 /* 4436 */ // Label 228: @4436
6237 /* 4436 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4485), // Rule ID 388 //
6238 /* 4441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
6239 /* 4444 */ // MIs[0] root
6240 /* 4444 */ // No operand predicates
6241 /* 4444 */ // MIs[0] and
6242 /* 4444 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6243 /* 4448 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6244 /* 4452 */ // MIs[1] x
6245 /* 4452 */ // No operand predicates
6246 /* 4452 */ // MIs[1] not
6247 /* 4452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6248 /* 4456 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6249 /* 4460 */ // MIs[2] y
6250 /* 4460 */ // No operand predicates
6251 /* 4460 */ // MIs[2] Operand 2
6252 /* 4460 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6253 /* 4464 */ // MIs[0] y
6254 /* 4464 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6255 /* 4469 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6256 /* 4471 */ // Combiner Rule #224: or_and_xor_to_or
6257 /* 4471 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6258 /* 4474 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6259 /* 4476 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6260 /* 4480 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6261 /* 4484 */ GIR_EraseRootFromParent_Done,
6262 /* 4485 */ // Label 229: @4485
6263 /* 4485 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4519), // Rule ID 440 //
6264 /* 4490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6265 /* 4493 */ // MIs[0] dst
6266 /* 4493 */ // No operand predicates
6267 /* 4493 */ // MIs[0] __combine_or_of_and_match_0.and
6268 /* 4493 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6269 /* 4497 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6270 /* 4501 */ // MIs[1] x
6271 /* 4501 */ // No operand predicates
6272 /* 4501 */ // MIs[1] y
6273 /* 4501 */ // No operand predicates
6274 /* 4501 */ // MIs[0] x
6275 /* 4501 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6276 /* 4506 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6277 /* 4511 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6278 /* 4513 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
6279 /* 4513 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6280 /* 4518 */ GIR_EraseRootFromParent_Done,
6281 /* 4519 */ // Label 230: @4519
6282 /* 4519 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4553), // Rule ID 441 //
6283 /* 4524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6284 /* 4527 */ // MIs[0] dst
6285 /* 4527 */ // No operand predicates
6286 /* 4527 */ // MIs[0] __combine_or_of_and_match_0.and
6287 /* 4527 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6288 /* 4531 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6289 /* 4535 */ // MIs[1] y
6290 /* 4535 */ // No operand predicates
6291 /* 4535 */ // MIs[1] x
6292 /* 4535 */ // No operand predicates
6293 /* 4535 */ // MIs[0] x
6294 /* 4535 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6295 /* 4540 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6296 /* 4545 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6297 /* 4547 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
6298 /* 4547 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6299 /* 4552 */ GIR_EraseRootFromParent_Done,
6300 /* 4553 */ // Label 231: @4553
6301 /* 4553 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4600), // Rule ID 250 //
6302 /* 4558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6303 /* 4561 */ // MIs[0] root
6304 /* 4561 */ // No operand predicates
6305 /* 4561 */ // MIs[0] out2
6306 /* 4561 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6307 /* 4565 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6308 /* 4569 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6309 /* 4569 */ // No operand predicates
6310 /* 4569 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6311 /* 4569 */ // No operand predicates
6312 /* 4569 */ // MIs[0] out1
6313 /* 4569 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6314 /* 4573 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
6315 /* 4577 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6316 /* 4577 */ // No operand predicates
6317 /* 4577 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6318 /* 4577 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6319 /* 4582 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6320 /* 4582 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6321 /* 4587 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6322 /* 4592 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6323 /* 4594 */ // Combiner Rule #183: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6324 /* 4594 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6325 /* 4599 */ GIR_EraseRootFromParent_Done,
6326 /* 4600 */ // Label 232: @4600
6327 /* 4600 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4647), // Rule ID 248 //
6328 /* 4605 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6329 /* 4608 */ // MIs[0] root
6330 /* 4608 */ // No operand predicates
6331 /* 4608 */ // MIs[0] out2
6332 /* 4608 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6333 /* 4612 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6334 /* 4616 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6335 /* 4616 */ // No operand predicates
6336 /* 4616 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6337 /* 4616 */ // No operand predicates
6338 /* 4616 */ // MIs[0] out1
6339 /* 4616 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6340 /* 4620 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6341 /* 4624 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6342 /* 4624 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6343 /* 4629 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6344 /* 4629 */ // No operand predicates
6345 /* 4629 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6346 /* 4629 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6347 /* 4634 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6348 /* 4639 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6349 /* 4641 */ // Combiner Rule #182: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6350 /* 4641 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6351 /* 4646 */ GIR_EraseRootFromParent_Done,
6352 /* 4647 */ // Label 233: @4647
6353 /* 4647 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4697), // Rule ID 393 //
6354 /* 4652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6355 /* 4655 */ // MIs[0] root
6356 /* 4655 */ // No operand predicates
6357 /* 4655 */ // MIs[0] xor
6358 /* 4655 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6359 /* 4659 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6360 /* 4663 */ // MIs[1] x
6361 /* 4663 */ // No operand predicates
6362 /* 4663 */ // MIs[1] y
6363 /* 4663 */ // No operand predicates
6364 /* 4663 */ // MIs[0] and
6365 /* 4663 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6366 /* 4667 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_AND),
6367 /* 4671 */ // MIs[2] x
6368 /* 4671 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6369 /* 4676 */ // MIs[2] y
6370 /* 4676 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6371 /* 4681 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6372 /* 4683 */ // Combiner Rule #229: or_xor_and
6373 /* 4683 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6374 /* 4686 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6375 /* 4688 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6376 /* 4692 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6377 /* 4696 */ GIR_EraseRootFromParent_Done,
6378 /* 4697 */ // Label 234: @4697
6379 /* 4697 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4747), // Rule ID 392 //
6380 /* 4702 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
6381 /* 4705 */ // MIs[0] root
6382 /* 4705 */ // No operand predicates
6383 /* 4705 */ // MIs[0] xor
6384 /* 4705 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6385 /* 4709 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6386 /* 4713 */ // MIs[1] x
6387 /* 4713 */ // No operand predicates
6388 /* 4713 */ // MIs[1] y
6389 /* 4713 */ // No operand predicates
6390 /* 4713 */ // MIs[0] or
6391 /* 4713 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6392 /* 4717 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_OR),
6393 /* 4721 */ // MIs[2] x
6394 /* 4721 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6395 /* 4726 */ // MIs[2] y
6396 /* 4726 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6397 /* 4731 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6398 /* 4733 */ // Combiner Rule #228: or_xor_or
6399 /* 4733 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6400 /* 4736 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6401 /* 4738 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6402 /* 4742 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6403 /* 4746 */ GIR_EraseRootFromParent_Done,
6404 /* 4747 */ // Label 235: @4747
6405 /* 4747 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4948),
6406 /* 4752 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i64,
6407 /* 4755 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_i64,
6408 /* 4758 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4839), // Rule ID 452 //
6409 /* 4763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule280Enabled),
6410 /* 4766 */ // MIs[0] dst
6411 /* 4766 */ // No operand predicates
6412 /* 4766 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6413 /* 4770 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6414 /* 4774 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_i32,
6415 /* 4778 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
6416 /* 4782 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6417 /* 4784 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
6418 /* 4787 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6419 /* 4790 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6420 /* 4793 */ // Combiner Rule #280: combine_or_s64_s32 @ [dst[0]]
6421 /* 4793 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6422 /* 4796 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6423 /* 4801 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6424 /* 4806 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6425 /* 4808 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6426 /* 4812 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6427 /* 4817 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6428 /* 4820 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
6429 /* 4824 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6430 /* 4828 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
6431 /* 4832 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6432 /* 4835 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
6433 /* 4838 */ GIR_EraseRootFromParent_Done,
6434 /* 4839 */ // Label 237: @4839
6435 /* 4839 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4947), // Rule ID 450 //
6436 /* 4844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6437 /* 4847 */ // MIs[0] dst
6438 /* 4847 */ // No operand predicates
6439 /* 4847 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
6440 /* 4851 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_i32,
6441 /* 4854 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_i32,
6442 /* 4857 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_i32,
6443 /* 4860 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_i32,
6444 /* 4863 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_i32,
6445 /* 4866 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i32,
6446 /* 4869 */ // Combiner Rule #278: combine_or_s64_with_s32_mask
6447 /* 4869 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6448 /* 4872 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6449 /* 4877 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6450 /* 4882 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6451 /* 4884 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6452 /* 4888 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6453 /* 4893 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6454 /* 4898 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
6455 /* 4902 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6456 /* 4906 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6457 /* 4911 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
6458 /* 4914 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6459 /* 4917 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6460 /* 4921 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6461 /* 4926 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
6462 /* 4929 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
6463 /* 4932 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6464 /* 4936 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
6465 /* 4940 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
6466 /* 4943 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
6467 /* 4946 */ GIR_EraseRootFromParent_Done,
6468 /* 4947 */ // Label 238: @4947
6469 /* 4947 */ GIM_Reject,
6470 /* 4948 */ // Label 236: @4948
6471 /* 4948 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4972), // Rule ID 121 //
6472 /* 4953 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6473 /* 4956 */ // MIs[0] dst
6474 /* 4956 */ // No operand predicates
6475 /* 4956 */ // MIs[0] src
6476 /* 4956 */ // No operand predicates
6477 /* 4956 */ // MIs[0] src
6478 /* 4956 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6479 /* 4961 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6480 /* 4966 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
6481 /* 4966 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6482 /* 4971 */ GIR_EraseRootFromParent_Done,
6483 /* 4972 */ // Label 239: @4972
6484 /* 4972 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(5006), // Rule ID 442 //
6485 /* 4977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6486 /* 4980 */ // MIs[0] dst
6487 /* 4980 */ // No operand predicates
6488 /* 4980 */ // MIs[0] x
6489 /* 4980 */ // No operand predicates
6490 /* 4980 */ // MIs[0] __combine_or_of_and_match_0.and
6491 /* 4980 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6492 /* 4984 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6493 /* 4988 */ // MIs[1] x
6494 /* 4988 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
6495 /* 4993 */ // MIs[1] y
6496 /* 4993 */ // No operand predicates
6497 /* 4993 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6498 /* 4998 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6499 /* 5000 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
6500 /* 5000 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6501 /* 5005 */ GIR_EraseRootFromParent_Done,
6502 /* 5006 */ // Label 240: @5006
6503 /* 5006 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(5040), // Rule ID 443 //
6504 /* 5011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6505 /* 5014 */ // MIs[0] dst
6506 /* 5014 */ // No operand predicates
6507 /* 5014 */ // MIs[0] x
6508 /* 5014 */ // No operand predicates
6509 /* 5014 */ // MIs[0] __combine_or_of_and_match_0.and
6510 /* 5014 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6511 /* 5018 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6512 /* 5022 */ // MIs[1] y
6513 /* 5022 */ // No operand predicates
6514 /* 5022 */ // MIs[1] x
6515 /* 5022 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6516 /* 5027 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6517 /* 5032 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6518 /* 5034 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
6519 /* 5034 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6520 /* 5039 */ GIR_EraseRootFromParent_Done,
6521 /* 5040 */ // Label 241: @5040
6522 /* 5040 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(5063), // Rule ID 112 //
6523 /* 5045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6524 /* 5048 */ // MIs[0] dst
6525 /* 5048 */ // No operand predicates
6526 /* 5048 */ // MIs[0] lhs
6527 /* 5048 */ // No operand predicates
6528 /* 5048 */ // MIs[0] Operand 2
6529 /* 5048 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6530 /* 5052 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6531 /* 5057 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
6532 /* 5057 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6533 /* 5062 */ GIR_EraseRootFromParent_Done,
6534 /* 5063 */ // Label 242: @5063
6535 /* 5063 */ GIM_Reject,
6536 /* 5064 */ // Label 10: @5064
6537 /* 5064 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(5075), // Rule ID 102 //
6538 /* 5069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
6539 /* 5072 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_XOR'
6540 /* 5072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
6541 /* 5075 */ // Label 243: @5075
6542 /* 5075 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(5086), // Rule ID 155 //
6543 /* 5080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6544 /* 5083 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
6545 /* 5083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6546 /* 5086 */ // Label 244: @5086
6547 /* 5086 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(5097), // Rule ID 191 //
6548 /* 5091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
6549 /* 5094 */ // Combiner Rule #147: not_cmp_fold; wip_match_opcode 'G_XOR'
6550 /* 5094 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6551 /* 5097 */ // Label 245: @5097
6552 /* 5097 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(5108), // Rule ID 223 //
6553 /* 5102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6554 /* 5105 */ // Combiner Rule #171: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
6555 /* 5105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
6556 /* 5108 */ // Label 246: @5108
6557 /* 5108 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(5119), // Rule ID 269 //
6558 /* 5113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6559 /* 5116 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_XOR'
6560 /* 5116 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6561 /* 5119 */ // Label 247: @5119
6562 /* 5119 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(5130), // Rule ID 325 //
6563 /* 5124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6564 /* 5127 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_XOR'
6565 /* 5127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6566 /* 5130 */ // Label 248: @5130
6567 /* 5130 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(5141), // Rule ID 361 //
6568 /* 5135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
6569 /* 5138 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
6570 /* 5138 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
6571 /* 5141 */ // Label 249: @5141
6572 /* 5141 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(5152), // Rule ID 431 //
6573 /* 5146 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
6574 /* 5149 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_XOR'
6575 /* 5149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
6576 /* 5152 */ // Label 250: @5152
6577 /* 5152 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(5212), // Rule ID 13 //
6578 /* 5157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6579 /* 5160 */ // MIs[0] root
6580 /* 5160 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6581 /* 5164 */ // MIs[0] add
6582 /* 5164 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6583 /* 5168 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6584 /* 5172 */ // MIs[1] A
6585 /* 5172 */ // No operand predicates
6586 /* 5172 */ // MIs[1] Operand 2
6587 /* 5172 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
6588 /* 5176 */ // MIs[0] Operand 2
6589 /* 5176 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6590 /* 5180 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
6591 /* 5184 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6592 /* 5186 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6593 /* 5189 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6594 /* 5199 */ // Combiner Rule #13: NotAPlusNegOne
6595 /* 5199 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6596 /* 5202 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6597 /* 5204 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6598 /* 5207 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
6599 /* 5211 */ GIR_EraseRootFromParent_Done,
6600 /* 5212 */ // Label 251: @5212
6601 /* 5212 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(5251), // Rule ID 123 //
6602 /* 5217 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
6603 /* 5220 */ // MIs[0] dst
6604 /* 5220 */ // No operand predicates
6605 /* 5220 */ // MIs[0] x
6606 /* 5220 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
6607 /* 5224 */ // MIs[0] x
6608 /* 5224 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6609 /* 5229 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6610 /* 5232 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6611 /* 5242 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
6612 /* 5242 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6613 /* 5245 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6614 /* 5247 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6615 /* 5250 */ GIR_EraseRootFromParent_Done,
6616 /* 5251 */ // Label 252: @5251
6617 /* 5251 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(5274), // Rule ID 113 //
6618 /* 5256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6619 /* 5259 */ // MIs[0] dst
6620 /* 5259 */ // No operand predicates
6621 /* 5259 */ // MIs[0] lhs
6622 /* 5259 */ // No operand predicates
6623 /* 5259 */ // MIs[0] Operand 2
6624 /* 5259 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6625 /* 5263 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6626 /* 5268 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
6627 /* 5268 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6628 /* 5273 */ GIR_EraseRootFromParent_Done,
6629 /* 5274 */ // Label 253: @5274
6630 /* 5274 */ GIM_Reject,
6631 /* 5275 */ // Label 11: @5275
6632 /* 5275 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(5286), // Rule ID 151 //
6633 /* 5280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
6634 /* 5283 */ // Combiner Rule #111: extend_through_phis; wip_match_opcode 'G_PHI'
6635 /* 5283 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
6636 /* 5286 */ // Label 254: @5286
6637 /* 5286 */ GIM_Reject,
6638 /* 5287 */ // Label 12: @5287
6639 /* 5287 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(5298), // Rule ID 403 //
6640 /* 5292 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6641 /* 5295 */ // Combiner Rule #239: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
6642 /* 5295 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
6643 /* 5298 */ // Label 255: @5298
6644 /* 5298 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(5309), // Rule ID 404 //
6645 /* 5303 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6646 /* 5306 */ // Combiner Rule #240: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
6647 /* 5306 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
6648 /* 5309 */ // Label 256: @5309
6649 /* 5309 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(5320), // Rule ID 406 //
6650 /* 5314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
6651 /* 5317 */ // Combiner Rule #242: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
6652 /* 5317 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
6653 /* 5320 */ // Label 257: @5320
6654 /* 5320 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(5331), // Rule ID 407 //
6655 /* 5325 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
6656 /* 5328 */ // Combiner Rule #243: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
6657 /* 5328 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
6658 /* 5331 */ // Label 258: @5331
6659 /* 5331 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(5342), // Rule ID 408 //
6660 /* 5336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
6661 /* 5339 */ // Combiner Rule #244: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
6662 /* 5339 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6663 /* 5342 */ // Label 259: @5342
6664 /* 5342 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(5353), // Rule ID 409 //
6665 /* 5347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
6666 /* 5350 */ // Combiner Rule #245: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
6667 /* 5350 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
6668 /* 5353 */ // Label 260: @5353
6669 /* 5353 */ GIM_Reject,
6670 /* 5354 */ // Label 13: @5354
6671 /* 5354 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(5368), // Rule ID 405 //
6672 /* 5359 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
6673 /* 5362 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6674 /* 5365 */ // MIs[0] dst
6675 /* 5365 */ // No operand predicates
6676 /* 5365 */ // MIs[0] merge_srcs
6677 /* 5365 */ // No operand predicates
6678 /* 5365 */ // Combiner Rule #241: merge_unmerge
6679 /* 5365 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
6680 /* 5368 */ // Label 261: @5368
6681 /* 5368 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(5430),
6682 /* 5373 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
6683 /* 5376 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(5397), // Rule ID 410 //
6684 /* 5381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
6685 /* 5384 */ // MIs[0] root
6686 /* 5384 */ // No operand predicates
6687 /* 5384 */ // MIs[0] x
6688 /* 5384 */ // No operand predicates
6689 /* 5384 */ // MIs[0] undef
6690 /* 5384 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6691 /* 5388 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6692 /* 5392 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6693 /* 5394 */ // Combiner Rule #246: merge_of_x_and_undef
6694 /* 5394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6695 /* 5397 */ // Label 263: @5397
6696 /* 5397 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5429), // Rule ID 411 //
6697 /* 5402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
6698 /* 5405 */ // MIs[0] root
6699 /* 5405 */ // No operand predicates
6700 /* 5405 */ // MIs[0] x
6701 /* 5405 */ // No operand predicates
6702 /* 5405 */ // MIs[0] zero
6703 /* 5405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6704 /* 5409 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6705 /* 5413 */ // MIs[1] Operand 1
6706 /* 5413 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6707 /* 5424 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6708 /* 5426 */ // Combiner Rule #247: merge_of_x_and_zero
6709 /* 5426 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6710 /* 5429 */ // Label 264: @5429
6711 /* 5429 */ GIM_Reject,
6712 /* 5430 */ // Label 262: @5430
6713 /* 5430 */ GIM_Reject,
6714 /* 5431 */ // Label 14: @5431
6715 /* 5431 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5442), // Rule ID 75 //
6716 /* 5436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
6717 /* 5439 */ // Combiner Rule #73: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
6718 /* 5439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
6719 /* 5442 */ // Label 265: @5442
6720 /* 5442 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5453), // Rule ID 104 //
6721 /* 5447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6722 /* 5450 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
6723 /* 5450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
6724 /* 5453 */ // Label 266: @5453
6725 /* 5453 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5464), // Rule ID 142 //
6726 /* 5458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6727 /* 5461 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
6728 /* 5461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6729 /* 5464 */ // Label 267: @5464
6730 /* 5464 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5495),
6731 /* 5469 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6732 /* 5472 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5483), // Rule ID 402 //
6733 /* 5477 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6734 /* 5480 */ // MIs[0] dst
6735 /* 5480 */ // No operand predicates
6736 /* 5480 */ // MIs[0] unused
6737 /* 5480 */ // No operand predicates
6738 /* 5480 */ // Combiner Rule #238: combine_use_vector_truncate
6739 /* 5480 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
6740 /* 5483 */ // Label 269: @5483
6741 /* 5483 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5494), // Rule ID 412 //
6742 /* 5488 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
6743 /* 5491 */ // MIs[0] dst
6744 /* 5491 */ // No operand predicates
6745 /* 5491 */ // MIs[0] unused
6746 /* 5491 */ // No operand predicates
6747 /* 5491 */ // Combiner Rule #248: combine_build_unmerge
6748 /* 5491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6749 /* 5494 */ // Label 270: @5494
6750 /* 5494 */ GIM_Reject,
6751 /* 5495 */ // Label 268: @5495
6752 /* 5495 */ GIM_Reject,
6753 /* 5496 */ // Label 15: @5496
6754 /* 5496 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5507), // Rule ID 141 //
6755 /* 5501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6756 /* 5504 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
6757 /* 5504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6758 /* 5507 */ // Label 271: @5507
6759 /* 5507 */ GIM_Reject,
6760 /* 5508 */ // Label 16: @5508
6761 /* 5508 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5519), // Rule ID 395 //
6762 /* 5513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6763 /* 5516 */ // Combiner Rule #231: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
6764 /* 5516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6765 /* 5519 */ // Label 272: @5519
6766 /* 5519 */ GIM_Reject,
6767 /* 5520 */ // Label 17: @5520
6768 /* 5520 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5541), // Rule ID 134 //
6769 /* 5525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
6770 /* 5528 */ // MIs[0] dst
6771 /* 5528 */ // No operand predicates
6772 /* 5528 */ // MIs[0] t
6773 /* 5528 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6774 /* 5532 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
6775 /* 5536 */ // MIs[1] ptr
6776 /* 5536 */ // No operand predicates
6777 /* 5536 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6778 /* 5538 */ // Combiner Rule #96: i2p_to_p2i
6779 /* 5538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6780 /* 5541 */ // Label 273: @5541
6781 /* 5541 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5562), // Rule ID 96 //
6782 /* 5546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6783 /* 5549 */ // MIs[0] dst
6784 /* 5549 */ // No operand predicates
6785 /* 5549 */ // MIs[0] __unary_undef_to_undef_match_0.x
6786 /* 5549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6787 /* 5553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6788 /* 5557 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6789 /* 5559 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
6790 /* 5559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6791 /* 5562 */ // Label 274: @5562
6792 /* 5562 */ GIM_Reject,
6793 /* 5563 */ // Label 18: @5563
6794 /* 5563 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5574), // Rule ID 133 //
6795 /* 5568 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6796 /* 5571 */ // Combiner Rule #95: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
6797 /* 5571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
6798 /* 5574 */ // Label 275: @5574
6799 /* 5574 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5595), // Rule ID 97 //
6800 /* 5579 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6801 /* 5582 */ // MIs[0] dst
6802 /* 5582 */ // No operand predicates
6803 /* 5582 */ // MIs[0] __unary_undef_to_undef_match_0.x
6804 /* 5582 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6805 /* 5586 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6806 /* 5590 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6807 /* 5592 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
6808 /* 5592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6809 /* 5595 */ // Label 276: @5595
6810 /* 5595 */ GIM_Reject,
6811 /* 5596 */ // Label 19: @5596
6812 /* 5596 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5628), // Rule ID 146 //
6813 /* 5601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
6814 /* 5604 */ // MIs[0] dst
6815 /* 5604 */ // No operand predicates
6816 /* 5604 */ // MIs[0] src1
6817 /* 5604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6818 /* 5608 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6819 /* 5612 */ // MIs[1] src0
6820 /* 5612 */ // No operand predicates
6821 /* 5612 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6822 /* 5616 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6823 /* 5618 */ // Combiner Rule #106: bitcast_bitcast_to_bitcast
6824 /* 5618 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
6825 /* 5621 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6826 /* 5623 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
6827 /* 5627 */ GIR_EraseRootFromParent_Done,
6828 /* 5628 */ // Label 277: @5628
6829 /* 5628 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5649), // Rule ID 145 //
6830 /* 5633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
6831 /* 5636 */ // MIs[0] dst
6832 /* 5636 */ // No operand predicates
6833 /* 5636 */ // MIs[0] src1
6834 /* 5636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6835 /* 5640 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6836 /* 5644 */ // MIs[1] src0
6837 /* 5644 */ // No operand predicates
6838 /* 5644 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6839 /* 5646 */ // Combiner Rule #105: bitcast_bitcast_fold
6840 /* 5646 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
6841 /* 5649 */ // Label 278: @5649
6842 /* 5649 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5670), // Rule ID 94 //
6843 /* 5654 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6844 /* 5657 */ // MIs[0] dst
6845 /* 5657 */ // No operand predicates
6846 /* 5657 */ // MIs[0] __unary_undef_to_undef_match_0.x
6847 /* 5657 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6848 /* 5661 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6849 /* 5665 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6850 /* 5667 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
6851 /* 5667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6852 /* 5670 */ // Label 279: @5670
6853 /* 5670 */ GIM_Reject,
6854 /* 5671 */ // Label 20: @5671
6855 /* 5671 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5700), // Rule ID 24 //
6856 /* 5676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6857 /* 5679 */ // MIs[0] dst
6858 /* 5679 */ // No operand predicates
6859 /* 5679 */ // MIs[0] src
6860 /* 5679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6861 /* 5683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
6862 /* 5687 */ // MIs[1] __idempotent_prop_match_0.x
6863 /* 5687 */ // No operand predicates
6864 /* 5687 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6865 /* 5692 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6866 /* 5694 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
6867 /* 5694 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6868 /* 5699 */ GIR_EraseRootFromParent_Done,
6869 /* 5700 */ // Label 280: @5700
6870 /* 5700 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5723), // Rule ID 49 //
6871 /* 5705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6872 /* 5708 */ // MIs[0] root
6873 /* 5708 */ // No operand predicates
6874 /* 5708 */ // MIs[0] src
6875 /* 5708 */ // No operand predicates
6876 /* 5708 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
6877 /* 5712 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6878 /* 5717 */ // Combiner Rule #47: freeze_of_non_undef_non_poison
6879 /* 5717 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6880 /* 5722 */ GIR_EraseRootFromParent_Done,
6881 /* 5723 */ // Label 281: @5723
6882 /* 5723 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5734), // Rule ID 50 //
6883 /* 5728 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6884 /* 5731 */ // MIs[0] dst
6885 /* 5731 */ // No operand predicates
6886 /* 5731 */ // MIs[0] src
6887 /* 5731 */ // No operand predicates
6888 /* 5731 */ // Combiner Rule #48: push_freeze_to_prevent_poison_from_propagating
6889 /* 5731 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
6890 /* 5734 */ // Label 282: @5734
6891 /* 5734 */ GIM_Reject,
6892 /* 5735 */ // Label 21: @5735
6893 /* 5735 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5756), // Rule ID 201 //
6894 /* 5740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
6895 /* 5743 */ // MIs[0] dst
6896 /* 5743 */ // No operand predicates
6897 /* 5743 */ // MIs[0] src0
6898 /* 5743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6899 /* 5747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6900 /* 5751 */ // MIs[1] cst
6901 /* 5751 */ // No operand predicates
6902 /* 5751 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6903 /* 5753 */ // Combiner Rule #157: constant_fold_intrinsic_trunc
6904 /* 5753 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
6905 /* 5756 */ // Label 283: @5756
6906 /* 5756 */ GIM_Reject,
6907 /* 5757 */ // Label 22: @5757
6908 /* 5757 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5778), // Rule ID 202 //
6909 /* 5762 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6910 /* 5765 */ // MIs[0] dst
6911 /* 5765 */ // No operand predicates
6912 /* 5765 */ // MIs[0] src0
6913 /* 5765 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6914 /* 5769 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6915 /* 5773 */ // MIs[1] cst
6916 /* 5773 */ // No operand predicates
6917 /* 5773 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6918 /* 5775 */ // Combiner Rule #158: constant_fold_intrinsic_round
6919 /* 5775 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
6920 /* 5778 */ // Label 284: @5778
6921 /* 5778 */ GIM_Reject,
6922 /* 5779 */ // Label 23: @5779
6923 /* 5779 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5800), // Rule ID 203 //
6924 /* 5784 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
6925 /* 5787 */ // MIs[0] dst
6926 /* 5787 */ // No operand predicates
6927 /* 5787 */ // MIs[0] src0
6928 /* 5787 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6929 /* 5791 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6930 /* 5795 */ // MIs[1] cst
6931 /* 5795 */ // No operand predicates
6932 /* 5795 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6933 /* 5797 */ // Combiner Rule #159: constant_fold_intrinsic_roundeven
6934 /* 5797 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
6935 /* 5800 */ // Label 285: @5800
6936 /* 5800 */ GIM_Reject,
6937 /* 5801 */ // Label 24: @5801
6938 /* 5801 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5812), // Rule ID 76 //
6939 /* 5806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6940 /* 5809 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_LOAD'
6941 /* 5809 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6942 /* 5812 */ // Label 286: @5812
6943 /* 5812 */ GIM_Reject,
6944 /* 5813 */ // Label 25: @5813
6945 /* 5813 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5824), // Rule ID 77 //
6946 /* 5818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6947 /* 5821 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_SEXTLOAD'
6948 /* 5821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6949 /* 5824 */ // Label 287: @5824
6950 /* 5824 */ GIM_Reject,
6951 /* 5825 */ // Label 26: @5825
6952 /* 5825 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5836), // Rule ID 78 //
6953 /* 5830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6954 /* 5833 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
6955 /* 5833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6956 /* 5836 */ // Label 288: @5836
6957 /* 5836 */ GIM_Reject,
6958 /* 5837 */ // Label 27: @5837
6959 /* 5837 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5848), // Rule ID 106 //
6960 /* 5842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6961 /* 5845 */ // Combiner Rule #87: erase_undef_store; wip_match_opcode 'G_STORE'
6962 /* 5845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
6963 /* 5848 */ // Label 289: @5848
6964 /* 5848 */ GIM_Reject,
6965 /* 5849 */ // Label 28: @5849
6966 /* 5849 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5860), // Rule ID 135 //
6967 /* 5854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
6968 /* 5857 */ // Combiner Rule #97: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
6969 /* 5857 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
6970 /* 5860 */ // Label 290: @5860
6971 /* 5860 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5871), // Rule ID 294 //
6972 /* 5865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6973 /* 5868 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
6974 /* 5868 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
6975 /* 5871 */ // Label 291: @5871
6976 /* 5871 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5892), // Rule ID 63 //
6977 /* 5876 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6978 /* 5879 */ // MIs[0] root
6979 /* 5879 */ // No operand predicates
6980 /* 5879 */ // MIs[0] select
6981 /* 5879 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6982 /* 5883 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6983 /* 5887 */ // MIs[1] cond
6984 /* 5887 */ // No operand predicates
6985 /* 5887 */ // MIs[1] true
6986 /* 5887 */ // No operand predicates
6987 /* 5887 */ // MIs[1] false
6988 /* 5887 */ // No operand predicates
6989 /* 5887 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6990 /* 5889 */ // Combiner Rule #61: select_of_anyext
6991 /* 5889 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6992 /* 5892 */ // Label 292: @5892
6993 /* 5892 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5913), // Rule ID 58 //
6994 /* 5897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6995 /* 5900 */ // MIs[0] root
6996 /* 5900 */ // No operand predicates
6997 /* 5900 */ // MIs[0] second
6998 /* 5900 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6999 /* 5904 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7000 /* 5908 */ // MIs[1] src
7001 /* 5908 */ // No operand predicates
7002 /* 5908 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7003 /* 5910 */ // Combiner Rule #56: anyext_of_anyext
7004 /* 5910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7005 /* 5913 */ // Label 293: @5913
7006 /* 5913 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5934), // Rule ID 60 //
7007 /* 5918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
7008 /* 5921 */ // MIs[0] root
7009 /* 5921 */ // No operand predicates
7010 /* 5921 */ // MIs[0] second
7011 /* 5921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7012 /* 5925 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7013 /* 5929 */ // MIs[1] src
7014 /* 5929 */ // No operand predicates
7015 /* 5929 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7016 /* 5931 */ // Combiner Rule #58: anyext_of_sext
7017 /* 5931 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7018 /* 5934 */ // Label 294: @5934
7019 /* 5934 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5955), // Rule ID 59 //
7020 /* 5939 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
7021 /* 5942 */ // MIs[0] root
7022 /* 5942 */ // No operand predicates
7023 /* 5942 */ // MIs[0] second
7024 /* 5942 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7025 /* 5946 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7026 /* 5950 */ // MIs[1] src
7027 /* 5950 */ // No operand predicates
7028 /* 5950 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7029 /* 5952 */ // Combiner Rule #57: anyext_of_zext
7030 /* 5952 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7031 /* 5955 */ // Label 295: @5955
7032 /* 5955 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5976), // Rule ID 95 //
7033 /* 5960 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7034 /* 5963 */ // MIs[0] dst
7035 /* 5963 */ // No operand predicates
7036 /* 5963 */ // MIs[0] __unary_undef_to_undef_match_0.x
7037 /* 5963 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7038 /* 5967 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7039 /* 5971 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7040 /* 5973 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
7041 /* 5973 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7042 /* 5976 */ // Label 296: @5976
7043 /* 5976 */ GIM_Reject,
7044 /* 5977 */ // Label 29: @5977
7045 /* 5977 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5988), // Rule ID 143 //
7046 /* 5982 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7047 /* 5985 */ // Combiner Rule #103: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
7048 /* 5985 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
7049 /* 5988 */ // Label 297: @5988
7050 /* 5988 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5999), // Rule ID 144 //
7051 /* 5993 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7052 /* 5996 */ // Combiner Rule #104: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
7053 /* 5996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
7054 /* 5999 */ // Label 298: @5999
7055 /* 5999 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(6010), // Rule ID 190 //
7056 /* 6004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
7057 /* 6007 */ // Combiner Rule #146: trunc_shift; wip_match_opcode 'G_TRUNC'
7058 /* 6007 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
7059 /* 6010 */ // Label 299: @6010
7060 /* 6010 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(6021), // Rule ID 445 //
7061 /* 6015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule273Enabled),
7062 /* 6018 */ // Combiner Rule #273: clamp_i64_to_i16; wip_match_opcode 'G_TRUNC'
7063 /* 6018 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner162),
7064 /* 6021 */ // Label 300: @6021
7065 /* 6021 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(6042), // Rule ID 64 //
7066 /* 6026 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
7067 /* 6029 */ // MIs[0] root
7068 /* 6029 */ // No operand predicates
7069 /* 6029 */ // MIs[0] select
7070 /* 6029 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7071 /* 6033 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7072 /* 6037 */ // MIs[1] cond
7073 /* 6037 */ // No operand predicates
7074 /* 6037 */ // MIs[1] true
7075 /* 6037 */ // No operand predicates
7076 /* 6037 */ // MIs[1] false
7077 /* 6037 */ // No operand predicates
7078 /* 6037 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7079 /* 6039 */ // Combiner Rule #62: select_of_truncate
7080 /* 6039 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7081 /* 6042 */ // Label 301: @6042
7082 /* 6042 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(6071), // Rule ID 66 //
7083 /* 6047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
7084 /* 6050 */ // MIs[0] root
7085 /* 6050 */ // No operand predicates
7086 /* 6050 */ // MIs[0] binop
7087 /* 6050 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7088 /* 6054 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7089 /* 6058 */ // MIs[1] x
7090 /* 6058 */ // No operand predicates
7091 /* 6058 */ // MIs[1] const
7092 /* 6058 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7093 /* 6062 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7094 /* 6066 */ // MIs[2] imm
7095 /* 6066 */ // No operand predicates
7096 /* 6066 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7097 /* 6068 */ // Combiner Rule #64: narrow_binop_add
7098 /* 6068 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7099 /* 6071 */ // Label 302: @6071
7100 /* 6071 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(6100), // Rule ID 69 //
7101 /* 6076 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
7102 /* 6079 */ // MIs[0] root
7103 /* 6079 */ // No operand predicates
7104 /* 6079 */ // MIs[0] binop
7105 /* 6079 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7106 /* 6083 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7107 /* 6087 */ // MIs[1] x
7108 /* 6087 */ // No operand predicates
7109 /* 6087 */ // MIs[1] const
7110 /* 6087 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7111 /* 6091 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7112 /* 6095 */ // MIs[2] imm
7113 /* 6095 */ // No operand predicates
7114 /* 6095 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7115 /* 6097 */ // Combiner Rule #67: narrow_binop_and
7116 /* 6097 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7117 /* 6100 */ // Label 303: @6100
7118 /* 6100 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(6129), // Rule ID 68 //
7119 /* 6105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
7120 /* 6108 */ // MIs[0] root
7121 /* 6108 */ // No operand predicates
7122 /* 6108 */ // MIs[0] binop
7123 /* 6108 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7124 /* 6112 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
7125 /* 6116 */ // MIs[1] x
7126 /* 6116 */ // No operand predicates
7127 /* 6116 */ // MIs[1] const
7128 /* 6116 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7129 /* 6120 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7130 /* 6124 */ // MIs[2] imm
7131 /* 6124 */ // No operand predicates
7132 /* 6124 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7133 /* 6126 */ // Combiner Rule #66: narrow_binop_mul
7134 /* 6126 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7135 /* 6129 */ // Label 304: @6129
7136 /* 6129 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(6158), // Rule ID 70 //
7137 /* 6134 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7138 /* 6137 */ // MIs[0] root
7139 /* 6137 */ // No operand predicates
7140 /* 6137 */ // MIs[0] binop
7141 /* 6137 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7142 /* 6141 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
7143 /* 6145 */ // MIs[1] x
7144 /* 6145 */ // No operand predicates
7145 /* 6145 */ // MIs[1] const
7146 /* 6145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7147 /* 6149 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7148 /* 6153 */ // MIs[2] imm
7149 /* 6153 */ // No operand predicates
7150 /* 6153 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7151 /* 6155 */ // Combiner Rule #68: narrow_binop_or
7152 /* 6155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7153 /* 6158 */ // Label 305: @6158
7154 /* 6158 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(6187), // Rule ID 67 //
7155 /* 6163 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
7156 /* 6166 */ // MIs[0] root
7157 /* 6166 */ // No operand predicates
7158 /* 6166 */ // MIs[0] binop
7159 /* 6166 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7160 /* 6170 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
7161 /* 6174 */ // MIs[1] x
7162 /* 6174 */ // No operand predicates
7163 /* 6174 */ // MIs[1] const
7164 /* 6174 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7165 /* 6178 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7166 /* 6182 */ // MIs[2] imm
7167 /* 6182 */ // No operand predicates
7168 /* 6182 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7169 /* 6184 */ // Combiner Rule #65: narrow_binop_sub
7170 /* 6184 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7171 /* 6187 */ // Label 306: @6187
7172 /* 6187 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(6219), // Rule ID 419 //
7173 /* 6192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
7174 /* 6195 */ // MIs[0] dst
7175 /* 6195 */ // No operand predicates
7176 /* 6195 */ // MIs[0] min
7177 /* 6195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7178 /* 6199 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
7179 /* 6203 */ // MIs[1] x
7180 /* 6203 */ // No operand predicates
7181 /* 6203 */ // MIs[1] y
7182 /* 6203 */ // No operand predicates
7183 /* 6203 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
7184 /* 6207 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7185 /* 6209 */ // Combiner Rule #253: trunc_usatu
7186 /* 6209 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
7187 /* 6212 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7188 /* 6214 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7189 /* 6218 */ GIR_EraseRootFromParent_Done,
7190 /* 6219 */ // Label 307: @6219
7191 /* 6219 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(6248), // Rule ID 71 //
7192 /* 6224 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7193 /* 6227 */ // MIs[0] root
7194 /* 6227 */ // No operand predicates
7195 /* 6227 */ // MIs[0] binop
7196 /* 6227 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7197 /* 6231 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7198 /* 6235 */ // MIs[1] x
7199 /* 6235 */ // No operand predicates
7200 /* 6235 */ // MIs[1] const
7201 /* 6235 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7202 /* 6239 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7203 /* 6243 */ // MIs[2] imm
7204 /* 6243 */ // No operand predicates
7205 /* 6243 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7206 /* 6245 */ // Combiner Rule #69: narrow_binop_xor
7207 /* 6245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7208 /* 6248 */ // Label 308: @6248
7209 /* 6248 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(6269), // Rule ID 53 //
7210 /* 6253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
7211 /* 6256 */ // MIs[0] root
7212 /* 6256 */ // No operand predicates
7213 /* 6256 */ // MIs[0] ext
7214 /* 6256 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7215 /* 6260 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7216 /* 6264 */ // MIs[1] src
7217 /* 6264 */ // No operand predicates
7218 /* 6264 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7219 /* 6266 */ // Combiner Rule #51: truncate_of_anyext
7220 /* 6266 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7221 /* 6269 */ // Label 309: @6269
7222 /* 6269 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(6293), // Rule ID 65 //
7223 /* 6274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
7224 /* 6277 */ // MIs[0] root
7225 /* 6277 */ // No operand predicates
7226 /* 6277 */ // MIs[0] bv
7227 /* 6277 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7228 /* 6281 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
7229 /* 6285 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
7230 /* 6288 */ // MIs[1] unused
7231 /* 6288 */ // No operand predicates
7232 /* 6288 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7233 /* 6290 */ // Combiner Rule #63: buildvector_of_truncate
7234 /* 6290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7235 /* 6293 */ // Label 310: @6293
7236 /* 6293 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(6314), // Rule ID 52 //
7237 /* 6298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
7238 /* 6301 */ // MIs[0] root
7239 /* 6301 */ // No operand predicates
7240 /* 6301 */ // MIs[0] ext
7241 /* 6301 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7242 /* 6305 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7243 /* 6309 */ // MIs[1] src
7244 /* 6309 */ // No operand predicates
7245 /* 6309 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7246 /* 6311 */ // Combiner Rule #50: truncate_of_sext
7247 /* 6311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7248 /* 6314 */ // Label 311: @6314
7249 /* 6314 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(6335), // Rule ID 51 //
7250 /* 6319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
7251 /* 6322 */ // MIs[0] root
7252 /* 6322 */ // No operand predicates
7253 /* 6322 */ // MIs[0] ext
7254 /* 6322 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7255 /* 6326 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7256 /* 6330 */ // MIs[1] src
7257 /* 6330 */ // No operand predicates
7258 /* 6330 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7259 /* 6332 */ // Combiner Rule #49: truncate_of_zext
7260 /* 6332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7261 /* 6335 */ // Label 312: @6335
7262 /* 6335 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(6356), // Rule ID 93 //
7263 /* 6340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7264 /* 6343 */ // MIs[0] dst
7265 /* 6343 */ // No operand predicates
7266 /* 6343 */ // MIs[0] __unary_undef_to_undef_match_0.x
7267 /* 6343 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7268 /* 6347 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7269 /* 6351 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7270 /* 6353 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
7271 /* 6353 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7272 /* 6356 */ // Label 313: @6356
7273 /* 6356 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6377), // Rule ID 72 //
7274 /* 6361 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
7275 /* 6364 */ // MIs[0] root
7276 /* 6364 */ // No operand predicates
7277 /* 6364 */ // MIs[0] int
7278 /* 6364 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7279 /* 6368 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7280 /* 6372 */ // MIs[1] imm
7281 /* 6372 */ // No operand predicates
7282 /* 6372 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7283 /* 6374 */ // Combiner Rule #70: integer_of_truncate
7284 /* 6374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
7285 /* 6377 */ // Label 314: @6377
7286 /* 6377 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6388), // Rule ID 417 //
7287 /* 6382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
7288 /* 6385 */ // MIs[0] dst
7289 /* 6385 */ // No operand predicates
7290 /* 6385 */ // MIs[0] src
7291 /* 6385 */ // No operand predicates
7292 /* 6385 */ // Combiner Rule #251: trunc_ssats
7293 /* 6385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7294 /* 6388 */ // Label 315: @6388
7295 /* 6388 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6399), // Rule ID 418 //
7296 /* 6393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
7297 /* 6396 */ // MIs[0] dst
7298 /* 6396 */ // No operand predicates
7299 /* 6396 */ // MIs[0] src
7300 /* 6396 */ // No operand predicates
7301 /* 6396 */ // Combiner Rule #252: trunc_ssatu
7302 /* 6396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
7303 /* 6399 */ // Label 316: @6399
7304 /* 6399 */ GIM_Reject,
7305 /* 6400 */ // Label 30: @6400
7306 /* 6400 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6432), // Rule ID 420 //
7307 /* 6405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
7308 /* 6408 */ // MIs[0] dst
7309 /* 6408 */ // No operand predicates
7310 /* 6408 */ // MIs[0] src
7311 /* 6408 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7312 /* 6412 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
7313 /* 6416 */ // MIs[1] x
7314 /* 6416 */ // No operand predicates
7315 /* 6416 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
7316 /* 6420 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7317 /* 6422 */ // Combiner Rule #254: truncusatu_to_fptouisat
7318 /* 6422 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
7319 /* 6425 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7320 /* 6427 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7321 /* 6431 */ GIR_EraseRootFromParent_Done,
7322 /* 6432 */ // Label 317: @6432
7323 /* 6432 */ GIM_Reject,
7324 /* 6433 */ // Label 31: @6433
7325 /* 6433 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6444), // Rule ID 293 //
7326 /* 6438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7327 /* 6441 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
7328 /* 6441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7329 /* 6444 */ // Label 318: @6444
7330 /* 6444 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6465), // Rule ID 57 //
7331 /* 6449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
7332 /* 6452 */ // MIs[0] root
7333 /* 6452 */ // No operand predicates
7334 /* 6452 */ // MIs[0] second
7335 /* 6452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7336 /* 6456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7337 /* 6460 */ // MIs[1] src
7338 /* 6460 */ // No operand predicates
7339 /* 6460 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7340 /* 6462 */ // Combiner Rule #55: sext_of_anyext
7341 /* 6462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7342 /* 6465 */ // Label 319: @6465
7343 /* 6465 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6486), // Rule ID 56 //
7344 /* 6470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
7345 /* 6473 */ // MIs[0] root
7346 /* 6473 */ // No operand predicates
7347 /* 6473 */ // MIs[0] second
7348 /* 6473 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7349 /* 6477 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7350 /* 6481 */ // MIs[1] src
7351 /* 6481 */ // No operand predicates
7352 /* 6481 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7353 /* 6483 */ // Combiner Rule #54: sext_of_sext
7354 /* 6483 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7355 /* 6486 */ // Label 320: @6486
7356 /* 6486 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6507), // Rule ID 396 //
7357 /* 6491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
7358 /* 6494 */ // MIs[0] root
7359 /* 6494 */ // No operand predicates
7360 /* 6494 */ // MIs[0] src
7361 /* 6494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7362 /* 6498 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7363 /* 6502 */ // MIs[1] x
7364 /* 6502 */ // No operand predicates
7365 /* 6502 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7366 /* 6504 */ // Combiner Rule #232: sext_trunc
7367 /* 6504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7368 /* 6507 */ // Label 321: @6507
7369 /* 6507 */ GIM_Reject,
7370 /* 6508 */ // Label 32: @6508
7371 /* 6508 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6519), // Rule ID 171 //
7372 /* 6513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
7373 /* 6516 */ // Combiner Rule #127: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
7374 /* 6516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
7375 /* 6519 */ // Label 322: @6519
7376 /* 6519 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6530), // Rule ID 180 //
7377 /* 6524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
7378 /* 6527 */ // Combiner Rule #136: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
7379 /* 6527 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
7380 /* 6530 */ // Label 323: @6530
7381 /* 6530 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6541), // Rule ID 254 //
7382 /* 6535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7383 /* 6538 */ // Combiner Rule #187: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
7384 /* 6538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
7385 /* 6541 */ // Label 324: @6541
7386 /* 6541 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6562), // Rule ID 61 //
7387 /* 6546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
7388 /* 6549 */ // MIs[0] dst
7389 /* 6549 */ // No operand predicates
7390 /* 6549 */ // MIs[0] x
7391 /* 6549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7392 /* 6553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
7393 /* 6557 */ // MIs[1] src
7394 /* 6557 */ // No operand predicates
7395 /* 6557 */ // MIs[1] a
7396 /* 6557 */ // No operand predicates
7397 /* 6557 */ // MIs[0] b
7398 /* 6557 */ // No operand predicates
7399 /* 6557 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7400 /* 6559 */ // Combiner Rule #59: sext_inreg_of_sext_inreg
7401 /* 6559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7402 /* 6562 */ // Label 325: @6562
7403 /* 6562 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6602), // Rule ID 184 //
7404 /* 6567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7405 /* 6570 */ // MIs[0] dst
7406 /* 6570 */ // No operand predicates
7407 /* 6570 */ // MIs[0] tmp4
7408 /* 6570 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7409 /* 6574 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7410 /* 6578 */ // MIs[1] tmp2
7411 /* 6578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7412 /* 6582 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7413 /* 6586 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7414 /* 6589 */ // MIs[2] tmp3
7415 /* 6589 */ // No operand predicates
7416 /* 6589 */ // MIs[2] tmp1
7417 /* 6589 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7418 /* 6593 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7419 /* 6597 */ // MIs[3] src
7420 /* 6597 */ // No operand predicates
7421 /* 6597 */ // MIs[0] amt
7422 /* 6597 */ // No operand predicates
7423 /* 6597 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7424 /* 6599 */ // Combiner Rule #140: redundant_aext_unmerge_sext_inreg
7425 /* 6599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7426 /* 6602 */ // Label 326: @6602
7427 /* 6602 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6634), // Rule ID 182 //
7428 /* 6607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7429 /* 6610 */ // MIs[0] dst
7430 /* 6610 */ // No operand predicates
7431 /* 6610 */ // MIs[0] tmp
7432 /* 6610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7433 /* 6614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7434 /* 6618 */ // MIs[1] src
7435 /* 6618 */ // No operand predicates
7436 /* 6618 */ // MIs[0] amt
7437 /* 6618 */ // No operand predicates
7438 /* 6618 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7439 /* 6622 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7440 /* 6624 */ // Combiner Rule #138: redundant_aext_sext_inreg
7441 /* 6624 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7442 /* 6627 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7443 /* 6629 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7444 /* 6633 */ GIR_EraseRootFromParent_Done,
7445 /* 6634 */ // Label 327: @6634
7446 /* 6634 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6674), // Rule ID 183 //
7447 /* 6639 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7448 /* 6642 */ // MIs[0] dst
7449 /* 6642 */ // No operand predicates
7450 /* 6642 */ // MIs[0] tmp4
7451 /* 6642 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7452 /* 6646 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7453 /* 6650 */ // MIs[1] tmp2
7454 /* 6650 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7455 /* 6654 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7456 /* 6658 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7457 /* 6661 */ // MIs[2] tmp3
7458 /* 6661 */ // No operand predicates
7459 /* 6661 */ // MIs[2] tmp1
7460 /* 6661 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7461 /* 6665 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7462 /* 6669 */ // MIs[3] src
7463 /* 6669 */ // No operand predicates
7464 /* 6669 */ // MIs[0] amt
7465 /* 6669 */ // No operand predicates
7466 /* 6669 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7467 /* 6671 */ // Combiner Rule #139: redundant_zext_unmerge_sext_inreg
7468 /* 6671 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7469 /* 6674 */ // Label 328: @6674
7470 /* 6674 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6706), // Rule ID 181 //
7471 /* 6679 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
7472 /* 6682 */ // MIs[0] dst
7473 /* 6682 */ // No operand predicates
7474 /* 6682 */ // MIs[0] tmp
7475 /* 6682 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7476 /* 6686 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7477 /* 6690 */ // MIs[1] src
7478 /* 6690 */ // No operand predicates
7479 /* 6690 */ // MIs[0] amt
7480 /* 6690 */ // No operand predicates
7481 /* 6690 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7482 /* 6694 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7483 /* 6696 */ // Combiner Rule #137: redundant_zext_sext_inreg
7484 /* 6696 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7485 /* 6699 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7486 /* 6701 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7487 /* 6705 */ GIR_EraseRootFromParent_Done,
7488 /* 6706 */ // Label 329: @6706
7489 /* 6706 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6717), // Rule ID 189 //
7490 /* 6711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
7491 /* 6714 */ // MIs[0] dst
7492 /* 6714 */ // No operand predicates
7493 /* 6714 */ // MIs[0] src
7494 /* 6714 */ // No operand predicates
7495 /* 6714 */ // MIs[0] imm
7496 /* 6714 */ // No operand predicates
7497 /* 6714 */ // Combiner Rule #145: sext_inreg_to_zext_inreg
7498 /* 6714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
7499 /* 6717 */ // Label 330: @6717
7500 /* 6717 */ GIM_Reject,
7501 /* 6718 */ // Label 33: @6718
7502 /* 6718 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6729), // Rule ID 188 //
7503 /* 6723 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7504 /* 6726 */ // Combiner Rule #144: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
7505 /* 6726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
7506 /* 6729 */ // Label 331: @6729
7507 /* 6729 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6740), // Rule ID 292 //
7508 /* 6734 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7509 /* 6737 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
7510 /* 6737 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7511 /* 6740 */ // Label 332: @6740
7512 /* 6740 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6761), // Rule ID 62 //
7513 /* 6745 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
7514 /* 6748 */ // MIs[0] root
7515 /* 6748 */ // No operand predicates
7516 /* 6748 */ // MIs[0] select
7517 /* 6748 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7518 /* 6752 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7519 /* 6756 */ // MIs[1] cond
7520 /* 6756 */ // No operand predicates
7521 /* 6756 */ // MIs[1] true
7522 /* 6756 */ // No operand predicates
7523 /* 6756 */ // MIs[1] false
7524 /* 6756 */ // No operand predicates
7525 /* 6756 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7526 /* 6758 */ // Combiner Rule #60: select_of_zext
7527 /* 6758 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7528 /* 6761 */ // Label 333: @6761
7529 /* 6761 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6782), // Rule ID 55 //
7530 /* 6766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
7531 /* 6769 */ // MIs[0] root
7532 /* 6769 */ // No operand predicates
7533 /* 6769 */ // MIs[0] second
7534 /* 6769 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7535 /* 6773 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7536 /* 6777 */ // MIs[1] src
7537 /* 6777 */ // No operand predicates
7538 /* 6777 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7539 /* 6779 */ // Combiner Rule #53: zext_of_anyext
7540 /* 6779 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7541 /* 6782 */ // Label 334: @6782
7542 /* 6782 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6809), // Rule ID 397 //
7543 /* 6787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
7544 /* 6790 */ // MIs[0] root
7545 /* 6790 */ // No operand predicates
7546 /* 6790 */ // MIs[0] src
7547 /* 6790 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7548 /* 6794 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7549 /* 6798 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
7550 /* 6804 */ // MIs[1] x
7551 /* 6804 */ // No operand predicates
7552 /* 6804 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7553 /* 6806 */ // Combiner Rule #233: zext_trunc
7554 /* 6806 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7555 /* 6809 */ // Label 335: @6809
7556 /* 6809 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6830), // Rule ID 54 //
7557 /* 6814 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
7558 /* 6817 */ // MIs[0] root
7559 /* 6817 */ // No operand predicates
7560 /* 6817 */ // MIs[0] second
7561 /* 6817 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7562 /* 6821 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7563 /* 6825 */ // MIs[1] src
7564 /* 6825 */ // No operand predicates
7565 /* 6825 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7566 /* 6827 */ // Combiner Rule #52: zext_of_zext
7567 /* 6827 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7568 /* 6830 */ // Label 336: @6830
7569 /* 6830 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6847), // Rule ID 398 //
7570 /* 6835 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7571 /* 6838 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
7572 /* 6844 */ // MIs[0] root
7573 /* 6844 */ // No operand predicates
7574 /* 6844 */ // MIs[0] x
7575 /* 6844 */ // No operand predicates
7576 /* 6844 */ // Combiner Rule #234: nneg_zext
7577 /* 6844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7578 /* 6847 */ // Label 337: @6847
7579 /* 6847 */ GIM_Reject,
7580 /* 6848 */ // Label 34: @6848
7581 /* 6848 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6859), // Rule ID 86 //
7582 /* 6853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7583 /* 6856 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
7584 /* 6856 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7585 /* 6859 */ // Label 338: @6859
7586 /* 6859 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6870), // Rule ID 89 //
7587 /* 6864 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7588 /* 6867 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
7589 /* 6867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7590 /* 6870 */ // Label 339: @6870
7591 /* 6870 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6881), // Rule ID 225 //
7592 /* 6875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7593 /* 6878 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_SHL'
7594 /* 6878 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7595 /* 6881 */ // Label 340: @6881
7596 /* 6881 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6892), // Rule ID 230 //
7597 /* 6886 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7598 /* 6889 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
7599 /* 6889 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7600 /* 6892 */ // Label 341: @6892
7601 /* 6892 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6903), // Rule ID 253 //
7602 /* 6897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7603 /* 6900 */ // Combiner Rule #186: commute_shift; wip_match_opcode 'G_SHL'
7604 /* 6900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
7605 /* 6903 */ // Label 342: @6903
7606 /* 6903 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6914), // Rule ID 267 //
7607 /* 6908 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7608 /* 6911 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SHL'
7609 /* 6911 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7610 /* 6914 */ // Label 343: @6914
7611 /* 6914 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6925), // Rule ID 332 //
7612 /* 6919 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7613 /* 6922 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SHL'
7614 /* 6922 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7615 /* 6925 */ // Label 344: @6925
7616 /* 6925 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6960), // Rule ID 47 //
7617 /* 6930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
7618 /* 6933 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
7619 /* 6939 */ // MIs[0] root
7620 /* 6939 */ // No operand predicates
7621 /* 6939 */ // MIs[0] left
7622 /* 6939 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7623 /* 6943 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
7624 /* 6947 */ // MIs[1] imm
7625 /* 6947 */ // No operand predicates
7626 /* 6947 */ // MIs[0] x
7627 /* 6947 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7628 /* 6951 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7629 /* 6955 */ // MIs[2] imm1
7630 /* 6955 */ // No operand predicates
7631 /* 6955 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7632 /* 6957 */ // Combiner Rule #45: shl_of_vscale
7633 /* 6957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
7634 /* 6960 */ // Label 345: @6960
7635 /* 6960 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(7000), // Rule ID 124 //
7636 /* 6965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7637 /* 6968 */ // MIs[0] dst
7638 /* 6968 */ // No operand predicates
7639 /* 6968 */ // MIs[0] zero
7640 /* 6968 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7641 /* 6972 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7642 /* 6976 */ // MIs[1] Operand 1
7643 /* 6976 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7644 /* 6987 */ // MIs[0] rhs
7645 /* 6987 */ // No operand predicates
7646 /* 6987 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7647 /* 6992 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7648 /* 6994 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
7649 /* 6994 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7650 /* 6999 */ GIR_EraseRootFromParent_Done,
7651 /* 7000 */ // Label 346: @7000
7652 /* 7000 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(7023), // Rule ID 114 //
7653 /* 7005 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7654 /* 7008 */ // MIs[0] dst
7655 /* 7008 */ // No operand predicates
7656 /* 7008 */ // MIs[0] lhs
7657 /* 7008 */ // No operand predicates
7658 /* 7008 */ // MIs[0] Operand 2
7659 /* 7008 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7660 /* 7012 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7661 /* 7017 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
7662 /* 7017 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7663 /* 7022 */ GIR_EraseRootFromParent_Done,
7664 /* 7023 */ // Label 347: @7023
7665 /* 7023 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(7034), // Rule ID 156 //
7666 /* 7028 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7667 /* 7031 */ // MIs[0] root
7668 /* 7031 */ // No operand predicates
7669 /* 7031 */ // MIs[0] mi.shifted
7670 /* 7031 */ // No operand predicates
7671 /* 7031 */ // MIs[0] mi.amt
7672 /* 7031 */ // No operand predicates
7673 /* 7031 */ // Combiner Rule #114: shifts_too_big @ [mi[0]]
7674 /* 7031 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7675 /* 7034 */ // Label 348: @7034
7676 /* 7034 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(7045), // Rule ID 172 //
7677 /* 7039 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
7678 /* 7042 */ // MIs[0] dst
7679 /* 7042 */ // No operand predicates
7680 /* 7042 */ // MIs[0] src0
7681 /* 7042 */ // No operand predicates
7682 /* 7042 */ // MIs[0] src1
7683 /* 7042 */ // No operand predicates
7684 /* 7042 */ // Combiner Rule #128: reduce_shl_of_extend
7685 /* 7042 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
7686 /* 7045 */ // Label 349: @7045
7687 /* 7045 */ GIM_Reject,
7688 /* 7046 */ // Label 35: @7046
7689 /* 7046 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(7057), // Rule ID 91 //
7690 /* 7051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7691 /* 7054 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
7692 /* 7054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7693 /* 7057 */ // Label 350: @7057
7694 /* 7057 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(7068), // Rule ID 227 //
7695 /* 7062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7696 /* 7065 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_LSHR'
7697 /* 7065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7698 /* 7068 */ // Label 351: @7068
7699 /* 7068 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(7079), // Rule ID 232 //
7700 /* 7073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7701 /* 7076 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
7702 /* 7076 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7703 /* 7079 */ // Label 352: @7079
7704 /* 7079 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(7090), // Rule ID 257 //
7705 /* 7084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7706 /* 7087 */ // Combiner Rule #189: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
7707 /* 7087 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7708 /* 7090 */ // Label 353: @7090
7709 /* 7090 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(7101), // Rule ID 259 //
7710 /* 7095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7711 /* 7098 */ // Combiner Rule #190: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
7712 /* 7098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7713 /* 7101 */ // Label 354: @7101
7714 /* 7101 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(7112), // Rule ID 264 //
7715 /* 7106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7716 /* 7109 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_LSHR'
7717 /* 7109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7718 /* 7112 */ // Label 355: @7112
7719 /* 7112 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(7123), // Rule ID 330 //
7720 /* 7117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7721 /* 7120 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_LSHR'
7722 /* 7120 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7723 /* 7123 */ // Label 356: @7123
7724 /* 7123 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(7212), // Rule ID 438 //
7725 /* 7128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
7726 /* 7131 */ // MIs[0] dst
7727 /* 7131 */ // No operand predicates
7728 /* 7131 */ // MIs[0] sum
7729 /* 7131 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7730 /* 7135 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7731 /* 7139 */ // MIs[1] inner
7732 /* 7139 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7733 /* 7143 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7734 /* 7147 */ // MIs[2] ext1
7735 /* 7147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7736 /* 7151 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7737 /* 7155 */ // MIs[3] x
7738 /* 7155 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7739 /* 7159 */ // MIs[2] ext2
7740 /* 7159 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7741 /* 7163 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
7742 /* 7167 */ // MIs[4] y
7743 /* 7167 */ // No operand predicates
7744 /* 7167 */ // MIs[1] Operand 2
7745 /* 7167 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7746 /* 7171 */ // MIs[0] Operand 2
7747 /* 7171 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7748 /* 7175 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
7749 /* 7179 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7750 /* 7181 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7751 /* 7184 */ // Combiner Rule #269: avgceil_u_match
7752 /* 7184 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
7753 /* 7187 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7754 /* 7192 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7755 /* 7196 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7756 /* 7200 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7757 /* 7204 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7758 /* 7208 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7759 /* 7211 */ GIR_EraseRootFromParent_Done,
7760 /* 7212 */ // Label 357: @7212
7761 /* 7212 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(7289), // Rule ID 436 //
7762 /* 7217 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
7763 /* 7220 */ // MIs[0] dst
7764 /* 7220 */ // No operand predicates
7765 /* 7220 */ // MIs[0] sum
7766 /* 7220 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7767 /* 7224 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7768 /* 7228 */ // MIs[1] ext1
7769 /* 7228 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7770 /* 7232 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
7771 /* 7236 */ // MIs[2] x
7772 /* 7236 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7773 /* 7240 */ // MIs[1] ext2
7774 /* 7240 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7775 /* 7244 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7776 /* 7248 */ // MIs[3] y
7777 /* 7248 */ // No operand predicates
7778 /* 7248 */ // MIs[0] Operand 2
7779 /* 7248 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7780 /* 7252 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
7781 /* 7256 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7782 /* 7258 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7783 /* 7261 */ // Combiner Rule #267: avgfloor_u_match
7784 /* 7261 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
7785 /* 7264 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7786 /* 7269 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7787 /* 7273 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7788 /* 7277 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7789 /* 7281 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7790 /* 7285 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7791 /* 7288 */ GIR_EraseRootFromParent_Done,
7792 /* 7289 */ // Label 358: @7289
7793 /* 7289 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(7318), // Rule ID 421 //
7794 /* 7294 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
7795 /* 7297 */ // MIs[0] dst
7796 /* 7297 */ // No operand predicates
7797 /* 7297 */ // MIs[0] d2
7798 /* 7297 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7799 /* 7301 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7800 /* 7305 */ // MIs[1] d1
7801 /* 7305 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7802 /* 7309 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
7803 /* 7313 */ // MIs[2] x
7804 /* 7313 */ // No operand predicates
7805 /* 7313 */ // MIs[2] y
7806 /* 7313 */ // No operand predicates
7807 /* 7313 */ // MIs[0] z
7808 /* 7313 */ // No operand predicates
7809 /* 7313 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7810 /* 7315 */ // Combiner Rule #255: lshr_of_trunc_of_lshr
7811 /* 7315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
7812 /* 7318 */ // Label 359: @7318
7813 /* 7318 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(7358), // Rule ID 125 //
7814 /* 7323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7815 /* 7326 */ // MIs[0] dst
7816 /* 7326 */ // No operand predicates
7817 /* 7326 */ // MIs[0] zero
7818 /* 7326 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7819 /* 7330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7820 /* 7334 */ // MIs[1] Operand 1
7821 /* 7334 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7822 /* 7345 */ // MIs[0] rhs
7823 /* 7345 */ // No operand predicates
7824 /* 7345 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7825 /* 7350 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7826 /* 7352 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
7827 /* 7352 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7828 /* 7357 */ GIR_EraseRootFromParent_Done,
7829 /* 7358 */ // Label 360: @7358
7830 /* 7358 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7381), // Rule ID 116 //
7831 /* 7363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7832 /* 7366 */ // MIs[0] dst
7833 /* 7366 */ // No operand predicates
7834 /* 7366 */ // MIs[0] lhs
7835 /* 7366 */ // No operand predicates
7836 /* 7366 */ // MIs[0] Operand 2
7837 /* 7366 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7838 /* 7370 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7839 /* 7375 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
7840 /* 7375 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7841 /* 7380 */ GIR_EraseRootFromParent_Done,
7842 /* 7381 */ // Label 361: @7381
7843 /* 7381 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7392), // Rule ID 158 //
7844 /* 7386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7845 /* 7389 */ // MIs[0] root
7846 /* 7389 */ // No operand predicates
7847 /* 7389 */ // MIs[0] mi.shifted
7848 /* 7389 */ // No operand predicates
7849 /* 7389 */ // MIs[0] mi.amt
7850 /* 7389 */ // No operand predicates
7851 /* 7389 */ // Combiner Rule #114: shifts_too_big @ [mi[2]]
7852 /* 7389 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7853 /* 7392 */ // Label 362: @7392
7854 /* 7392 */ GIM_Reject,
7855 /* 7393 */ // Label 36: @7393
7856 /* 7393 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7404), // Rule ID 90 //
7857 /* 7398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7858 /* 7401 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
7859 /* 7401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7860 /* 7404 */ // Label 363: @7404
7861 /* 7404 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7415), // Rule ID 169 //
7862 /* 7409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
7863 /* 7412 */ // Combiner Rule #125: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
7864 /* 7412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
7865 /* 7415 */ // Label 364: @7415
7866 /* 7415 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7426), // Rule ID 226 //
7867 /* 7420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7868 /* 7423 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_ASHR'
7869 /* 7423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7870 /* 7426 */ // Label 365: @7426
7871 /* 7426 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7437), // Rule ID 231 //
7872 /* 7431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7873 /* 7434 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
7874 /* 7434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7875 /* 7437 */ // Label 366: @7437
7876 /* 7437 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7448), // Rule ID 256 //
7877 /* 7442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7878 /* 7445 */ // Combiner Rule #189: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
7879 /* 7445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7880 /* 7448 */ // Label 367: @7448
7881 /* 7448 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7459), // Rule ID 258 //
7882 /* 7453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7883 /* 7456 */ // Combiner Rule #190: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
7884 /* 7456 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7885 /* 7459 */ // Label 368: @7459
7886 /* 7459 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7470), // Rule ID 263 //
7887 /* 7464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7888 /* 7467 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_ASHR'
7889 /* 7467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7890 /* 7470 */ // Label 369: @7470
7891 /* 7470 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(7481), // Rule ID 331 //
7892 /* 7475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7893 /* 7478 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_ASHR'
7894 /* 7478 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7895 /* 7481 */ // Label 370: @7481
7896 /* 7481 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(7570), // Rule ID 439 //
7897 /* 7486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule270Enabled),
7898 /* 7489 */ // MIs[0] dst
7899 /* 7489 */ // No operand predicates
7900 /* 7489 */ // MIs[0] sum
7901 /* 7489 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7902 /* 7493 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7903 /* 7497 */ // MIs[1] inner
7904 /* 7497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7905 /* 7501 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7906 /* 7505 */ // MIs[2] ext1
7907 /* 7505 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7908 /* 7509 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
7909 /* 7513 */ // MIs[3] x
7910 /* 7513 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7911 /* 7517 */ // MIs[2] ext2
7912 /* 7517 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7913 /* 7521 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
7914 /* 7525 */ // MIs[4] y
7915 /* 7525 */ // No operand predicates
7916 /* 7525 */ // MIs[1] Operand 2
7917 /* 7525 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7918 /* 7529 */ // MIs[0] Operand 2
7919 /* 7529 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7920 /* 7533 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
7921 /* 7537 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7922 /* 7539 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7923 /* 7542 */ // Combiner Rule #270: avgceil_s_match
7924 /* 7542 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
7925 /* 7545 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7926 /* 7550 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7927 /* 7554 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7928 /* 7558 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7929 /* 7562 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7930 /* 7566 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7931 /* 7569 */ GIR_EraseRootFromParent_Done,
7932 /* 7570 */ // Label 371: @7570
7933 /* 7570 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(7647), // Rule ID 437 //
7934 /* 7575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule268Enabled),
7935 /* 7578 */ // MIs[0] dst
7936 /* 7578 */ // No operand predicates
7937 /* 7578 */ // MIs[0] sum
7938 /* 7578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7939 /* 7582 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7940 /* 7586 */ // MIs[1] ext1
7941 /* 7586 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7942 /* 7590 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
7943 /* 7594 */ // MIs[2] x
7944 /* 7594 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7945 /* 7598 */ // MIs[1] ext2
7946 /* 7598 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7947 /* 7602 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
7948 /* 7606 */ // MIs[3] y
7949 /* 7606 */ // No operand predicates
7950 /* 7606 */ // MIs[0] Operand 2
7951 /* 7606 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7952 /* 7610 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
7953 /* 7614 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7954 /* 7616 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7955 /* 7619 */ // Combiner Rule #268: avgfloor_s_match
7956 /* 7619 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
7957 /* 7622 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7958 /* 7627 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7959 /* 7631 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7960 /* 7635 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7961 /* 7639 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7962 /* 7643 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7963 /* 7646 */ GIR_EraseRootFromParent_Done,
7964 /* 7647 */ // Label 372: @7647
7965 /* 7647 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(7687), // Rule ID 126 //
7966 /* 7652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7967 /* 7655 */ // MIs[0] dst
7968 /* 7655 */ // No operand predicates
7969 /* 7655 */ // MIs[0] zero
7970 /* 7655 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7971 /* 7659 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7972 /* 7663 */ // MIs[1] Operand 1
7973 /* 7663 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7974 /* 7674 */ // MIs[0] rhs
7975 /* 7674 */ // No operand predicates
7976 /* 7674 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7977 /* 7679 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7978 /* 7681 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
7979 /* 7681 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7980 /* 7686 */ GIR_EraseRootFromParent_Done,
7981 /* 7687 */ // Label 373: @7687
7982 /* 7687 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(7710), // Rule ID 115 //
7983 /* 7692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7984 /* 7695 */ // MIs[0] dst
7985 /* 7695 */ // No operand predicates
7986 /* 7695 */ // MIs[0] lhs
7987 /* 7695 */ // No operand predicates
7988 /* 7695 */ // MIs[0] Operand 2
7989 /* 7695 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7990 /* 7699 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7991 /* 7704 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
7992 /* 7704 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7993 /* 7709 */ GIR_EraseRootFromParent_Done,
7994 /* 7710 */ // Label 374: @7710
7995 /* 7710 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(7721), // Rule ID 157 //
7996 /* 7715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7997 /* 7718 */ // MIs[0] root
7998 /* 7718 */ // No operand predicates
7999 /* 7718 */ // MIs[0] mi.shifted
8000 /* 7718 */ // No operand predicates
8001 /* 7718 */ // MIs[0] mi.amt
8002 /* 7718 */ // No operand predicates
8003 /* 7718 */ // Combiner Rule #114: shifts_too_big @ [mi[1]]
8004 /* 7718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
8005 /* 7721 */ // Label 375: @7721
8006 /* 7721 */ GIM_Reject,
8007 /* 7722 */ // Label 37: @7722
8008 /* 7722 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(7733), // Rule ID 241 //
8009 /* 7727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
8010 /* 7730 */ // Combiner Rule #178: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
8011 /* 7730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
8012 /* 7733 */ // Label 376: @7733
8013 /* 7733 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(7744), // Rule ID 245 //
8014 /* 7738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
8015 /* 7741 */ // Combiner Rule #181: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
8016 /* 7741 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
8017 /* 7744 */ // Label 377: @7744
8018 /* 7744 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(7764), // Rule ID 244 //
8019 /* 7749 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
8020 /* 7752 */ // MIs[0] x
8021 /* 7752 */ // No operand predicates
8022 /* 7752 */ // MIs[0] y
8023 /* 7752 */ // No operand predicates
8024 /* 7752 */ // MIs[0] z
8025 /* 7752 */ // No operand predicates
8026 /* 7752 */ // MIs[0] Operand 3
8027 /* 7752 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8028 /* 7756 */ // Combiner Rule #180: funnel_shift_left_zero
8029 /* 7756 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8030 /* 7759 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8031 /* 7761 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
8032 /* 7763 */ GIR_EraseRootFromParent_Done,
8033 /* 7764 */ // Label 378: @7764
8034 /* 7764 */ GIM_Reject,
8035 /* 7765 */ // Label 38: @7765
8036 /* 7765 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(7776), // Rule ID 242 //
8037 /* 7770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
8038 /* 7773 */ // Combiner Rule #178: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
8039 /* 7773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
8040 /* 7776 */ // Label 379: @7776
8041 /* 7776 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(7787), // Rule ID 246 //
8042 /* 7781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
8043 /* 7784 */ // Combiner Rule #181: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
8044 /* 7784 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
8045 /* 7787 */ // Label 380: @7787
8046 /* 7787 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(7807), // Rule ID 243 //
8047 /* 7792 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
8048 /* 7795 */ // MIs[0] x
8049 /* 7795 */ // No operand predicates
8050 /* 7795 */ // MIs[0] y
8051 /* 7795 */ // No operand predicates
8052 /* 7795 */ // MIs[0] z
8053 /* 7795 */ // No operand predicates
8054 /* 7795 */ // MIs[0] Operand 3
8055 /* 7795 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8056 /* 7799 */ // Combiner Rule #179: funnel_shift_right_zero
8057 /* 7799 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8058 /* 7802 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8059 /* 7804 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
8060 /* 7806 */ GIR_EraseRootFromParent_Done,
8061 /* 7807 */ // Label 381: @7807
8062 /* 7807 */ GIM_Reject,
8063 /* 7808 */ // Label 39: @7808
8064 /* 7808 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(7831), // Rule ID 119 //
8065 /* 7813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8066 /* 7816 */ // MIs[0] dst
8067 /* 7816 */ // No operand predicates
8068 /* 7816 */ // MIs[0] lhs
8069 /* 7816 */ // No operand predicates
8070 /* 7816 */ // MIs[0] Operand 2
8071 /* 7816 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8072 /* 7820 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8073 /* 7825 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
8074 /* 7825 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8075 /* 7830 */ GIR_EraseRootFromParent_Done,
8076 /* 7831 */ // Label 382: @7831
8077 /* 7831 */ GIM_Reject,
8078 /* 7832 */ // Label 40: @7832
8079 /* 7832 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(7855), // Rule ID 118 //
8080 /* 7837 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8081 /* 7840 */ // MIs[0] dst
8082 /* 7840 */ // No operand predicates
8083 /* 7840 */ // MIs[0] lhs
8084 /* 7840 */ // No operand predicates
8085 /* 7840 */ // MIs[0] Operand 2
8086 /* 7840 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8087 /* 7844 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8088 /* 7849 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
8089 /* 7849 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8090 /* 7854 */ GIR_EraseRootFromParent_Done,
8091 /* 7855 */ // Label 383: @7855
8092 /* 7855 */ GIM_Reject,
8093 /* 7856 */ // Label 41: @7856
8094 /* 7856 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(7867), // Rule ID 164 //
8095 /* 7861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
8096 /* 7864 */ // Combiner Rule #120: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
8097 /* 7864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
8098 /* 7867 */ // Label 384: @7867
8099 /* 7867 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(7878), // Rule ID 165 //
8100 /* 7872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
8101 /* 7875 */ // Combiner Rule #121: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
8102 /* 7875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
8103 /* 7878 */ // Label 385: @7878
8104 /* 7878 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(7889), // Rule ID 168 //
8105 /* 7883 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
8106 /* 7886 */ // Combiner Rule #124: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
8107 /* 7886 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
8108 /* 7889 */ // Label 386: @7889
8109 /* 7889 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(7900), // Rule ID 162 //
8110 /* 7894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
8111 /* 7897 */ // MIs[0] root
8112 /* 7897 */ // No operand predicates
8113 /* 7897 */ // MIs[0] pred
8114 /* 7897 */ // No operand predicates
8115 /* 7897 */ // MIs[0] lhs
8116 /* 7897 */ // No operand predicates
8117 /* 7897 */ // MIs[0] rhs
8118 /* 7897 */ // No operand predicates
8119 /* 7897 */ // Combiner Rule #118: canonicalize_icmp
8120 /* 7897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
8121 /* 7900 */ // Label 387: @7900
8122 /* 7900 */ GIM_Reject,
8123 /* 7901 */ // Label 42: @7901
8124 /* 7901 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(7912), // Rule ID 163 //
8125 /* 7906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
8126 /* 7909 */ // MIs[0] root
8127 /* 7909 */ // No operand predicates
8128 /* 7909 */ // MIs[0] pred
8129 /* 7909 */ // No operand predicates
8130 /* 7909 */ // MIs[0] lhs
8131 /* 7909 */ // No operand predicates
8132 /* 7909 */ // MIs[0] rhs
8133 /* 7909 */ // No operand predicates
8134 /* 7909 */ // Combiner Rule #119: canonicalize_fcmp
8135 /* 7909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
8136 /* 7912 */ // Label 388: @7912
8137 /* 7912 */ GIM_Reject,
8138 /* 7913 */ // Label 43: @7913
8139 /* 7913 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(7924), // Rule ID 109 //
8140 /* 7918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
8141 /* 7921 */ // Combiner Rule #89: select_same_val; wip_match_opcode 'G_SELECT'
8142 /* 7921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
8143 /* 7924 */ // Label 389: @7924
8144 /* 7924 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(7935), // Rule ID 175 //
8145 /* 7929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
8146 /* 7932 */ // Combiner Rule #131: select_constant_cmp; wip_match_opcode 'G_SELECT'
8147 /* 7932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
8148 /* 7935 */ // Label 390: @7935
8149 /* 7935 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(7946), // Rule ID 177 //
8150 /* 7940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
8151 /* 7943 */ // Combiner Rule #133: match_selects; wip_match_opcode 'G_SELECT'
8152 /* 7943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
8153 /* 7946 */ // Label 391: @7946
8154 /* 7946 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(7957), // Rule ID 355 //
8155 /* 7951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
8156 /* 7954 */ // Combiner Rule #218: select_to_minmax; wip_match_opcode 'G_SELECT'
8157 /* 7954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
8158 /* 7957 */ // Label 392: @7957
8159 /* 7957 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(8006), // Rule ID 178 //
8160 /* 7962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
8161 /* 7965 */ // MIs[0] dst
8162 /* 7965 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8163 /* 7969 */ // MIs[0] c
8164 /* 7969 */ // No operand predicates
8165 /* 7969 */ // MIs[0] x
8166 /* 7969 */ // No operand predicates
8167 /* 7969 */ // MIs[0] Operand 3
8168 /* 7969 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8169 /* 7973 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8170 /* 7977 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8171 /* 7980 */ // Combiner Rule #134: select_zero_false
8172 /* 7980 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
8173 /* 7983 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8174 /* 7988 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8175 /* 7990 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
8176 /* 7994 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8177 /* 7998 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
8178 /* 8002 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8179 /* 8005 */ GIR_EraseRootFromParent_Done,
8180 /* 8006 */ // Label 393: @8006
8181 /* 8006 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(8027), // Rule ID 176 //
8182 /* 8011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
8183 /* 8014 */ // MIs[0] root
8184 /* 8014 */ // No operand predicates
8185 /* 8014 */ // MIs[0] tst
8186 /* 8014 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8187 /* 8018 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
8188 /* 8022 */ // MIs[1] tst1
8189 /* 8022 */ // No operand predicates
8190 /* 8022 */ // MIs[1] a
8191 /* 8022 */ // No operand predicates
8192 /* 8022 */ // MIs[1] b
8193 /* 8022 */ // No operand predicates
8194 /* 8022 */ // MIs[0] x
8195 /* 8022 */ // No operand predicates
8196 /* 8022 */ // MIs[0] y
8197 /* 8022 */ // No operand predicates
8198 /* 8022 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8199 /* 8024 */ // Combiner Rule #132: select_to_iminmax
8200 /* 8024 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
8201 /* 8027 */ // Label 394: @8027
8202 /* 8027 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(8063), // Rule ID 179 //
8203 /* 8032 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
8204 /* 8035 */ // MIs[0] dst
8205 /* 8035 */ // No operand predicates
8206 /* 8035 */ // MIs[0] c
8207 /* 8035 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8208 /* 8039 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
8209 /* 8043 */ // MIs[1] src
8210 /* 8043 */ // No operand predicates
8211 /* 8043 */ // MIs[1] Operand 2
8212 /* 8043 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
8213 /* 8047 */ // MIs[0] x
8214 /* 8047 */ // No operand predicates
8215 /* 8047 */ // MIs[0] y
8216 /* 8047 */ // No operand predicates
8217 /* 8047 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8218 /* 8049 */ // Combiner Rule #135: select_not
8219 /* 8049 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
8220 /* 8052 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8221 /* 8054 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
8222 /* 8058 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
8223 /* 8060 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8224 /* 8062 */ GIR_EraseRootFromParent_Done,
8225 /* 8063 */ // Label 395: @8063
8226 /* 8063 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(8092), // Rule ID 174 //
8227 /* 8068 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
8228 /* 8071 */ // MIs[0] dst
8229 /* 8071 */ // No operand predicates
8230 /* 8071 */ // MIs[0] undef
8231 /* 8071 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8232 /* 8075 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8233 /* 8079 */ // MIs[0] x
8234 /* 8079 */ // No operand predicates
8235 /* 8079 */ // MIs[0] y
8236 /* 8079 */ // No operand predicates
8237 /* 8079 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8238 /* 8084 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8239 /* 8086 */ // Combiner Rule #130: select_undef_cmp
8240 /* 8086 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8241 /* 8091 */ GIR_EraseRootFromParent_Done,
8242 /* 8092 */ // Label 396: @8092
8243 /* 8092 */ GIM_Reject,
8244 /* 8093 */ // Label 44: @8093
8245 /* 8093 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(8104), // Rule ID 366 //
8246 /* 8098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8247 /* 8101 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
8248 /* 8101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8249 /* 8104 */ // Label 397: @8104
8250 /* 8104 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(8115), // Rule ID 414 //
8251 /* 8109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
8252 /* 8112 */ // Combiner Rule #249: match_addos; wip_match_opcode 'G_UADDO'
8253 /* 8112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
8254 /* 8115 */ // Label 398: @8115
8255 /* 8115 */ GIM_Reject,
8256 /* 8116 */ // Label 45: @8116
8257 /* 8116 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(8127), // Rule ID 214 //
8258 /* 8121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8259 /* 8124 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_UADDE'
8260 /* 8124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8261 /* 8127 */ // Label 399: @8127
8262 /* 8127 */ GIM_Reject,
8263 /* 8128 */ // Label 46: @8128
8264 /* 8128 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(8139), // Rule ID 416 //
8265 /* 8133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8266 /* 8136 */ // Combiner Rule #250: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
8267 /* 8136 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
8268 /* 8139 */ // Label 400: @8139
8269 /* 8139 */ GIM_Reject,
8270 /* 8140 */ // Label 47: @8140
8271 /* 8140 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(8151), // Rule ID 216 //
8272 /* 8145 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8273 /* 8148 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_USUBE'
8274 /* 8148 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8275 /* 8151 */ // Label 401: @8151
8276 /* 8151 */ GIM_Reject,
8277 /* 8152 */ // Label 48: @8152
8278 /* 8152 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(8163), // Rule ID 367 //
8279 /* 8157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8280 /* 8160 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
8281 /* 8160 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8282 /* 8163 */ // Label 402: @8163
8283 /* 8163 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(8174), // Rule ID 413 //
8284 /* 8168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
8285 /* 8171 */ // Combiner Rule #249: match_addos; wip_match_opcode 'G_SADDO'
8286 /* 8171 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
8287 /* 8174 */ // Label 403: @8174
8288 /* 8174 */ GIM_Reject,
8289 /* 8175 */ // Label 49: @8175
8290 /* 8175 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(8186), // Rule ID 215 //
8291 /* 8180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8292 /* 8183 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_SADDE'
8293 /* 8183 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8294 /* 8186 */ // Label 404: @8186
8295 /* 8186 */ GIM_Reject,
8296 /* 8187 */ // Label 50: @8187
8297 /* 8187 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(8198), // Rule ID 415 //
8298 /* 8192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8299 /* 8195 */ // Combiner Rule #250: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
8300 /* 8195 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
8301 /* 8198 */ // Label 405: @8198
8302 /* 8198 */ GIM_Reject,
8303 /* 8199 */ // Label 51: @8199
8304 /* 8199 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(8210), // Rule ID 217 //
8305 /* 8204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8306 /* 8207 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_SSUBE'
8307 /* 8207 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8308 /* 8210 */ // Label 406: @8210
8309 /* 8210 */ GIM_Reject,
8310 /* 8211 */ // Label 52: @8211
8311 /* 8211 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(8222), // Rule ID 210 //
8312 /* 8216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8313 /* 8219 */ // Combiner Rule #166: mulo_by_2; wip_match_opcode 'G_UMULO'
8314 /* 8219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
8315 /* 8222 */ // Label 407: @8222
8316 /* 8222 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(8233), // Rule ID 212 //
8317 /* 8227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
8318 /* 8230 */ // Combiner Rule #167: mulo_by_0; wip_match_opcode 'G_UMULO'
8319 /* 8230 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8320 /* 8233 */ // Label 408: @8233
8321 /* 8233 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(8244), // Rule ID 368 //
8322 /* 8238 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8323 /* 8241 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
8324 /* 8241 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8325 /* 8244 */ // Label 409: @8244
8326 /* 8244 */ GIM_Reject,
8327 /* 8245 */ // Label 53: @8245
8328 /* 8245 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(8256), // Rule ID 211 //
8329 /* 8250 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8330 /* 8253 */ // Combiner Rule #166: mulo_by_2; wip_match_opcode 'G_SMULO'
8331 /* 8253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
8332 /* 8256 */ // Label 410: @8256
8333 /* 8256 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(8267), // Rule ID 213 //
8334 /* 8261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
8335 /* 8264 */ // Combiner Rule #167: mulo_by_0; wip_match_opcode 'G_SMULO'
8336 /* 8264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8337 /* 8267 */ // Label 411: @8267
8338 /* 8267 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(8278), // Rule ID 369 //
8339 /* 8272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8340 /* 8275 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
8341 /* 8275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8342 /* 8278 */ // Label 412: @8278
8343 /* 8278 */ GIM_Reject,
8344 /* 8279 */ // Label 54: @8279
8345 /* 8279 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(8290), // Rule ID 304 //
8346 /* 8284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
8347 /* 8287 */ // Combiner Rule #197: mulh_to_lshr; wip_match_opcode 'G_UMULH'
8348 /* 8287 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8349 /* 8290 */ // Label 413: @8290
8350 /* 8290 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(8301), // Rule ID 370 //
8351 /* 8295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8352 /* 8298 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
8353 /* 8298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8354 /* 8301 */ // Label 414: @8301
8355 /* 8301 */ GIM_Reject,
8356 /* 8302 */ // Label 55: @8302
8357 /* 8302 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(8313), // Rule ID 371 //
8358 /* 8307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8359 /* 8310 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
8360 /* 8310 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8361 /* 8313 */ // Label 415: @8313
8362 /* 8313 */ GIM_Reject,
8363 /* 8314 */ // Label 56: @8314
8364 /* 8314 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(8325), // Rule ID 372 //
8365 /* 8319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8366 /* 8322 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
8367 /* 8322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8368 /* 8325 */ // Label 416: @8325
8369 /* 8325 */ GIM_Reject,
8370 /* 8326 */ // Label 57: @8326
8371 /* 8326 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(8337), // Rule ID 373 //
8372 /* 8331 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8373 /* 8334 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
8374 /* 8334 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8375 /* 8337 */ // Label 417: @8337
8376 /* 8337 */ GIM_Reject,
8377 /* 8338 */ // Label 58: @8338
8378 /* 8338 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(8349), // Rule ID 229 //
8379 /* 8343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8380 /* 8346 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
8381 /* 8346 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8382 /* 8349 */ // Label 418: @8349
8383 /* 8349 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(8360), // Rule ID 233 //
8384 /* 8354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8385 /* 8357 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
8386 /* 8357 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8387 /* 8360 */ // Label 419: @8360
8388 /* 8360 */ GIM_Reject,
8389 /* 8361 */ // Label 59: @8361
8390 /* 8361 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(8372), // Rule ID 228 //
8391 /* 8366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8392 /* 8369 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
8393 /* 8369 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8394 /* 8372 */ // Label 420: @8372
8395 /* 8372 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(8383), // Rule ID 234 //
8396 /* 8377 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8397 /* 8380 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
8398 /* 8380 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8399 /* 8383 */ // Label 421: @8383
8400 /* 8383 */ GIM_Reject,
8401 /* 8384 */ // Label 60: @8384
8402 /* 8384 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(8395), // Rule ID 374 //
8403 /* 8389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8404 /* 8392 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
8405 /* 8392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8406 /* 8395 */ // Label 422: @8395
8407 /* 8395 */ GIM_Reject,
8408 /* 8396 */ // Label 61: @8396
8409 /* 8396 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(8407), // Rule ID 375 //
8410 /* 8401 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8411 /* 8404 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
8412 /* 8404 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8413 /* 8407 */ // Label 423: @8407
8414 /* 8407 */ GIM_Reject,
8415 /* 8408 */ // Label 62: @8408
8416 /* 8408 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(8419), // Rule ID 376 //
8417 /* 8413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8418 /* 8416 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
8419 /* 8416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8420 /* 8419 */ // Label 424: @8419
8421 /* 8419 */ GIM_Reject,
8422 /* 8420 */ // Label 63: @8420
8423 /* 8420 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(8431), // Rule ID 377 //
8424 /* 8425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8425 /* 8428 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
8426 /* 8428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8427 /* 8431 */ // Label 425: @8431
8428 /* 8431 */ GIM_Reject,
8429 /* 8432 */ // Label 64: @8432
8430 /* 8432 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(8443), // Rule ID 305 //
8431 /* 8437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8432 /* 8440 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FADD'
8433 /* 8440 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8434 /* 8443 */ // Label 426: @8443
8435 /* 8443 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(8454), // Rule ID 312 //
8436 /* 8448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
8437 /* 8451 */ // Combiner Rule #200: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8438 /* 8451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
8439 /* 8454 */ // Label 427: @8454
8440 /* 8454 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(8465), // Rule ID 313 //
8441 /* 8459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
8442 /* 8462 */ // Combiner Rule #201: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8443 /* 8462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
8444 /* 8465 */ // Label 428: @8465
8445 /* 8465 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(8476), // Rule ID 314 //
8446 /* 8470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
8447 /* 8473 */ // Combiner Rule #202: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8448 /* 8473 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
8449 /* 8476 */ // Label 429: @8476
8450 /* 8476 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(8487), // Rule ID 315 //
8451 /* 8481 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
8452 /* 8484 */ // Combiner Rule #203: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8453 /* 8484 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
8454 /* 8487 */ // Label 430: @8487
8455 /* 8487 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(8498), // Rule ID 338 //
8456 /* 8492 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8457 /* 8495 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FADD'
8458 /* 8495 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8459 /* 8498 */ // Label 431: @8498
8460 /* 8498 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(8509), // Rule ID 378 //
8461 /* 8503 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8462 /* 8506 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
8463 /* 8506 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8464 /* 8509 */ // Label 432: @8509
8465 /* 8509 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(8532), // Rule ID 148 //
8466 /* 8514 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
8467 /* 8517 */ // MIs[0] dst
8468 /* 8517 */ // No operand predicates
8469 /* 8517 */ // MIs[0] x
8470 /* 8517 */ // No operand predicates
8471 /* 8517 */ // MIs[0] y
8472 /* 8517 */ // No operand predicates
8473 /* 8517 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
8474 /* 8521 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8475 /* 8526 */ // Combiner Rule #108: right_identity_neg_zero_fp
8476 /* 8526 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8477 /* 8531 */ GIR_EraseRootFromParent_Done,
8478 /* 8532 */ // Label 433: @8532
8479 /* 8532 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(8561), // Rule ID 149 //
8480 /* 8537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
8481 /* 8540 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
8482 /* 8546 */ // MIs[0] dst
8483 /* 8546 */ // No operand predicates
8484 /* 8546 */ // MIs[0] x
8485 /* 8546 */ // No operand predicates
8486 /* 8546 */ // MIs[0] y
8487 /* 8546 */ // No operand predicates
8488 /* 8546 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
8489 /* 8550 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8490 /* 8555 */ // Combiner Rule #109: right_identity_neg_zero_fp_nsz
8491 /* 8555 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8492 /* 8560 */ GIR_EraseRootFromParent_Done,
8493 /* 8561 */ // Label 434: @8561
8494 /* 8561 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(8572), // Rule ID 278 //
8495 /* 8566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8496 /* 8569 */ // MIs[0] d
8497 /* 8569 */ // No operand predicates
8498 /* 8569 */ // MIs[0] mi.src0
8499 /* 8569 */ // No operand predicates
8500 /* 8569 */ // MIs[0] mi.src1
8501 /* 8569 */ // No operand predicates
8502 /* 8569 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[0]]
8503 /* 8569 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8504 /* 8572 */ // Label 435: @8572
8505 /* 8572 */ GIM_Reject,
8506 /* 8573 */ // Label 65: @8573
8507 /* 8573 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(8584), // Rule ID 306 //
8508 /* 8578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8509 /* 8581 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FSUB'
8510 /* 8581 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8511 /* 8584 */ // Label 436: @8584
8512 /* 8584 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(8595), // Rule ID 316 //
8513 /* 8589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8514 /* 8592 */ // Combiner Rule #204: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8515 /* 8592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
8516 /* 8595 */ // Label 437: @8595
8517 /* 8595 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(8606), // Rule ID 317 //
8518 /* 8600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
8519 /* 8603 */ // Combiner Rule #205: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8520 /* 8603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
8521 /* 8606 */ // Label 438: @8606
8522 /* 8606 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(8617), // Rule ID 318 //
8523 /* 8611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
8524 /* 8614 */ // Combiner Rule #206: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8525 /* 8614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
8526 /* 8617 */ // Label 439: @8617
8527 /* 8617 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(8628), // Rule ID 319 //
8528 /* 8622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
8529 /* 8625 */ // Combiner Rule #207: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8530 /* 8625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8531 /* 8628 */ // Label 440: @8628
8532 /* 8628 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(8639), // Rule ID 339 //
8533 /* 8633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8534 /* 8636 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FSUB'
8535 /* 8636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8536 /* 8639 */ // Label 441: @8639
8537 /* 8639 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(8650), // Rule ID 356 //
8538 /* 8644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
8539 /* 8647 */ // Combiner Rule #219: fsub_to_fneg; wip_match_opcode 'G_FSUB'
8540 /* 8647 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8541 /* 8650 */ // Label 442: @8650
8542 /* 8650 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(8661), // Rule ID 279 //
8543 /* 8655 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8544 /* 8658 */ // MIs[0] d
8545 /* 8658 */ // No operand predicates
8546 /* 8658 */ // MIs[0] mi.src0
8547 /* 8658 */ // No operand predicates
8548 /* 8658 */ // MIs[0] mi.src1
8549 /* 8658 */ // No operand predicates
8550 /* 8658 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[1]]
8551 /* 8658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8552 /* 8661 */ // Label 443: @8661
8553 /* 8661 */ GIM_Reject,
8554 /* 8662 */ // Label 66: @8662
8555 /* 8662 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(8673), // Rule ID 307 //
8556 /* 8667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8557 /* 8670 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMUL'
8558 /* 8670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8559 /* 8673 */ // Label 444: @8673
8560 /* 8673 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(8684), // Rule ID 337 //
8561 /* 8678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8562 /* 8681 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMUL'
8563 /* 8681 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8564 /* 8684 */ // Label 445: @8684
8565 /* 8684 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(8695), // Rule ID 379 //
8566 /* 8689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8567 /* 8692 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
8568 /* 8692 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8569 /* 8695 */ // Label 446: @8695
8570 /* 8695 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(8716), // Rule ID 444 //
8571 /* 8700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule272Enabled),
8572 /* 8703 */ // MIs[0] dst
8573 /* 8703 */ // No operand predicates
8574 /* 8703 */ // MIs[0] x
8575 /* 8703 */ // No operand predicates
8576 /* 8703 */ // MIs[0] select
8577 /* 8703 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8578 /* 8707 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
8579 /* 8711 */ // MIs[1] y
8580 /* 8711 */ // No operand predicates
8581 /* 8711 */ // MIs[1] A
8582 /* 8711 */ // No operand predicates
8583 /* 8711 */ // MIs[1] B
8584 /* 8711 */ // No operand predicates
8585 /* 8711 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8586 /* 8713 */ // Combiner Rule #272: combine_fmul_with_select_to_fldexp
8587 /* 8713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
8588 /* 8716 */ // Label 447: @8716
8589 /* 8716 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(8739), // Rule ID 138 //
8590 /* 8721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
8591 /* 8724 */ // MIs[0] dst
8592 /* 8724 */ // No operand predicates
8593 /* 8724 */ // MIs[0] x
8594 /* 8724 */ // No operand predicates
8595 /* 8724 */ // MIs[0] y
8596 /* 8724 */ // No operand predicates
8597 /* 8724 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
8598 /* 8728 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8599 /* 8733 */ // Combiner Rule #100: right_identity_one_fp
8600 /* 8733 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8601 /* 8738 */ GIR_EraseRootFromParent_Done,
8602 /* 8739 */ // Label 448: @8739
8603 /* 8739 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(8759), // Rule ID 150 //
8604 /* 8744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
8605 /* 8747 */ // MIs[0] dst
8606 /* 8747 */ // No operand predicates
8607 /* 8747 */ // MIs[0] x
8608 /* 8747 */ // No operand predicates
8609 /* 8747 */ // MIs[0] y
8610 /* 8747 */ // No operand predicates
8611 /* 8747 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
8612 /* 8751 */ // Combiner Rule #110: right_identity_neg_one_fp
8613 /* 8751 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
8614 /* 8754 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8615 /* 8756 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
8616 /* 8758 */ GIR_EraseRootFromParent_Done,
8617 /* 8759 */ // Label 449: @8759
8618 /* 8759 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(8770), // Rule ID 280 //
8619 /* 8764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8620 /* 8767 */ // MIs[0] d
8621 /* 8767 */ // No operand predicates
8622 /* 8767 */ // MIs[0] mi.src0
8623 /* 8767 */ // No operand predicates
8624 /* 8767 */ // MIs[0] mi.src1
8625 /* 8767 */ // No operand predicates
8626 /* 8767 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[2]]
8627 /* 8767 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8628 /* 8770 */ // Label 450: @8770
8629 /* 8770 */ GIM_Reject,
8630 /* 8771 */ // Label 67: @8771
8631 /* 8771 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(8782), // Rule ID 291 //
8632 /* 8776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8633 /* 8779 */ // Combiner Rule #193: constant_fold_fma; wip_match_opcode 'G_FMA'
8634 /* 8779 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8635 /* 8782 */ // Label 451: @8782
8636 /* 8782 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(8793), // Rule ID 310 //
8637 /* 8787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8638 /* 8790 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMA'
8639 /* 8790 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8640 /* 8793 */ // Label 452: @8793
8641 /* 8793 */ GIM_Reject,
8642 /* 8794 */ // Label 68: @8794
8643 /* 8794 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(8805), // Rule ID 290 //
8644 /* 8799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8645 /* 8802 */ // Combiner Rule #193: constant_fold_fma; wip_match_opcode 'G_FMAD'
8646 /* 8802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8647 /* 8805 */ // Label 453: @8805
8648 /* 8805 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(8816), // Rule ID 309 //
8649 /* 8810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8650 /* 8813 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMAD'
8651 /* 8813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8652 /* 8816 */ // Label 454: @8816
8653 /* 8816 */ GIM_Reject,
8654 /* 8817 */ // Label 69: @8817
8655 /* 8817 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(8828), // Rule ID 308 //
8656 /* 8822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8657 /* 8825 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FDIV'
8658 /* 8825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8659 /* 8828 */ // Label 455: @8828
8660 /* 8828 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(8839), // Rule ID 340 //
8661 /* 8833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8662 /* 8836 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FDIV'
8663 /* 8836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8664 /* 8839 */ // Label 456: @8839
8665 /* 8839 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(8850), // Rule ID 281 //
8666 /* 8844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8667 /* 8847 */ // MIs[0] d
8668 /* 8847 */ // No operand predicates
8669 /* 8847 */ // MIs[0] mi.src0
8670 /* 8847 */ // No operand predicates
8671 /* 8847 */ // MIs[0] mi.src1
8672 /* 8847 */ // No operand predicates
8673 /* 8847 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[3]]
8674 /* 8847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8675 /* 8850 */ // Label 457: @8850
8676 /* 8850 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(8861), // Rule ID 353 //
8677 /* 8855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8678 /* 8858 */ // MIs[0] dst
8679 /* 8858 */ // No operand predicates
8680 /* 8858 */ // MIs[0] src1
8681 /* 8858 */ // No operand predicates
8682 /* 8858 */ // MIs[0] src2
8683 /* 8858 */ // No operand predicates
8684 /* 8858 */ // Combiner Rule #216: fdiv_repeated_divison
8685 /* 8858 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
8686 /* 8861 */ // Label 458: @8861
8687 /* 8861 */ GIM_Reject,
8688 /* 8862 */ // Label 70: @8862
8689 /* 8862 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(8873), // Rule ID 341 //
8690 /* 8867 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8691 /* 8870 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FREM'
8692 /* 8870 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8693 /* 8873 */ // Label 459: @8873
8694 /* 8873 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(8884), // Rule ID 282 //
8695 /* 8878 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8696 /* 8881 */ // MIs[0] d
8697 /* 8881 */ // No operand predicates
8698 /* 8881 */ // MIs[0] mi.src0
8699 /* 8881 */ // No operand predicates
8700 /* 8881 */ // MIs[0] mi.src1
8701 /* 8881 */ // No operand predicates
8702 /* 8881 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[4]]
8703 /* 8881 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8704 /* 8884 */ // Label 460: @8884
8705 /* 8884 */ GIM_Reject,
8706 /* 8885 */ // Label 71: @8885
8707 /* 8885 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(8906), // Rule ID 222 //
8708 /* 8890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
8709 /* 8893 */ // MIs[0] dst
8710 /* 8893 */ // No operand predicates
8711 /* 8893 */ // MIs[0] float
8712 /* 8893 */ // No operand predicates
8713 /* 8893 */ // MIs[0] int
8714 /* 8893 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8715 /* 8897 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8716 /* 8901 */ // MIs[1] imm
8717 /* 8901 */ // No operand predicates
8718 /* 8901 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8719 /* 8903 */ // Combiner Rule #170: expand_const_fpowi
8720 /* 8903 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
8721 /* 8906 */ // Label 461: @8906
8722 /* 8906 */ GIM_Reject,
8723 /* 8907 */ // Label 72: @8907
8724 /* 8907 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(8928), // Rule ID 196 //
8725 /* 8912 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
8726 /* 8915 */ // MIs[0] dst
8727 /* 8915 */ // No operand predicates
8728 /* 8915 */ // MIs[0] src0
8729 /* 8915 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8730 /* 8919 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8731 /* 8923 */ // MIs[1] cst
8732 /* 8923 */ // No operand predicates
8733 /* 8923 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8734 /* 8925 */ // Combiner Rule #152: constant_fold_flog2
8735 /* 8925 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8736 /* 8928 */ // Label 462: @8928
8737 /* 8928 */ GIM_Reject,
8738 /* 8929 */ // Label 73: @8929
8739 /* 8929 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(8940), // Rule ID 446 //
8740 /* 8934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule274Enabled),
8741 /* 8937 */ // Combiner Rule #274: foldable_fneg; wip_match_opcode 'G_FNEG'
8742 /* 8937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner163),
8743 /* 8940 */ // Label 463: @8940
8744 /* 8940 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(8961), // Rule ID 193 //
8745 /* 8945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8746 /* 8948 */ // MIs[0] dst
8747 /* 8948 */ // No operand predicates
8748 /* 8948 */ // MIs[0] src0
8749 /* 8948 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8750 /* 8952 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8751 /* 8956 */ // MIs[1] cst
8752 /* 8956 */ // No operand predicates
8753 /* 8956 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8754 /* 8958 */ // Combiner Rule #149: constant_fold_fneg
8755 /* 8958 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8756 /* 8961 */ // Label 464: @8961
8757 /* 8961 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(8990), // Rule ID 136 //
8758 /* 8966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
8759 /* 8969 */ // MIs[0] dst
8760 /* 8969 */ // No operand predicates
8761 /* 8969 */ // MIs[0] t
8762 /* 8969 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8763 /* 8973 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8764 /* 8977 */ // MIs[1] src
8765 /* 8977 */ // No operand predicates
8766 /* 8977 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8767 /* 8982 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8768 /* 8984 */ // Combiner Rule #98: fneg_fneg_fold
8769 /* 8984 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8770 /* 8989 */ GIR_EraseRootFromParent_Done,
8771 /* 8990 */ // Label 465: @8990
8772 /* 8990 */ GIM_Reject,
8773 /* 8991 */ // Label 74: @8991
8774 /* 8991 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(9012), // Rule ID 198 //
8775 /* 8996 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
8776 /* 8999 */ // MIs[0] dst
8777 /* 8999 */ // No operand predicates
8778 /* 8999 */ // MIs[0] src0
8779 /* 8999 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8780 /* 9003 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8781 /* 9007 */ // MIs[1] cst
8782 /* 9007 */ // No operand predicates
8783 /* 9007 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8784 /* 9009 */ // Combiner Rule #154: constant_fold_fpext
8785 /* 9009 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8786 /* 9012 */ // Label 466: @9012
8787 /* 9012 */ GIM_Reject,
8788 /* 9013 */ // Label 75: @9013
8789 /* 9013 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(9034), // Rule ID 197 //
8790 /* 9018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
8791 /* 9021 */ // MIs[0] dst
8792 /* 9021 */ // No operand predicates
8793 /* 9021 */ // MIs[0] src0
8794 /* 9021 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8795 /* 9025 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8796 /* 9029 */ // MIs[1] cst
8797 /* 9029 */ // No operand predicates
8798 /* 9029 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8799 /* 9031 */ // Combiner Rule #153: constant_fold_fptrunc
8800 /* 9031 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8801 /* 9034 */ // Label 467: @9034
8802 /* 9034 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(9055), // Rule ID 147 //
8803 /* 9039 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
8804 /* 9042 */ // MIs[0] dst
8805 /* 9042 */ // No operand predicates
8806 /* 9042 */ // MIs[0] src1
8807 /* 9042 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8808 /* 9046 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
8809 /* 9050 */ // MIs[1] src0
8810 /* 9050 */ // No operand predicates
8811 /* 9050 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8812 /* 9052 */ // Combiner Rule #107: fptrunc_fpext_fold
8813 /* 9052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
8814 /* 9055 */ // Label 468: @9055
8815 /* 9055 */ GIM_Reject,
8816 /* 9056 */ // Label 76: @9056
8817 /* 9056 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(9077), // Rule ID 98 //
8818 /* 9061 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8819 /* 9064 */ // MIs[0] dst
8820 /* 9064 */ // No operand predicates
8821 /* 9064 */ // MIs[0] __unary_undef_to_undef_match_0.x
8822 /* 9064 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8823 /* 9068 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8824 /* 9072 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8825 /* 9074 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
8826 /* 9074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8827 /* 9077 */ // Label 469: @9077
8828 /* 9077 */ GIM_Reject,
8829 /* 9078 */ // Label 77: @9078
8830 /* 9078 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(9099), // Rule ID 99 //
8831 /* 9083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8832 /* 9086 */ // MIs[0] dst
8833 /* 9086 */ // No operand predicates
8834 /* 9086 */ // MIs[0] __unary_undef_to_undef_match_0.x
8835 /* 9086 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8836 /* 9090 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8837 /* 9094 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8838 /* 9096 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
8839 /* 9096 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8840 /* 9099 */ // Label 470: @9099
8841 /* 9099 */ GIM_Reject,
8842 /* 9100 */ // Label 78: @9100
8843 /* 9100 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(9111), // Rule ID 82 //
8844 /* 9105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
8845 /* 9108 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
8846 /* 9108 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8847 /* 9111 */ // Label 471: @9111
8848 /* 9111 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(9126), // Rule ID 206 //
8849 /* 9116 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
8850 /* 9119 */ // MIs[0] dst
8851 /* 9119 */ // No operand predicates
8852 /* 9119 */ // MIs[0] Operand 1
8853 /* 9119 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
8854 /* 9123 */ // Combiner Rule #162: itof_const_zero_fold_si
8855 /* 9123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8856 /* 9126 */ // Label 472: @9126
8857 /* 9126 */ GIM_Reject,
8858 /* 9127 */ // Label 79: @9127
8859 /* 9127 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(9138), // Rule ID 81 //
8860 /* 9132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
8861 /* 9135 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
8862 /* 9135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8863 /* 9138 */ // Label 473: @9138
8864 /* 9138 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(9153), // Rule ID 207 //
8865 /* 9143 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
8866 /* 9146 */ // MIs[0] dst
8867 /* 9146 */ // No operand predicates
8868 /* 9146 */ // MIs[0] Operand 1
8869 /* 9146 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
8870 /* 9150 */ // Combiner Rule #163: itof_const_zero_fold_ui
8871 /* 9150 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8872 /* 9153 */ // Label 474: @9153
8873 /* 9153 */ GIM_Reject,
8874 /* 9154 */ // Label 80: @9154
8875 /* 9154 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(9183), // Rule ID 25 //
8876 /* 9159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
8877 /* 9162 */ // MIs[0] dst
8878 /* 9162 */ // No operand predicates
8879 /* 9162 */ // MIs[0] src
8880 /* 9162 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8881 /* 9166 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
8882 /* 9170 */ // MIs[1] __idempotent_prop_match_0.x
8883 /* 9170 */ // No operand predicates
8884 /* 9170 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8885 /* 9175 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8886 /* 9177 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
8887 /* 9177 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8888 /* 9182 */ GIR_EraseRootFromParent_Done,
8889 /* 9183 */ // Label 475: @9183
8890 /* 9183 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(9204), // Rule ID 194 //
8891 /* 9188 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
8892 /* 9191 */ // MIs[0] dst
8893 /* 9191 */ // No operand predicates
8894 /* 9191 */ // MIs[0] src0
8895 /* 9191 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8896 /* 9195 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8897 /* 9199 */ // MIs[1] cst
8898 /* 9199 */ // No operand predicates
8899 /* 9199 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8900 /* 9201 */ // Combiner Rule #150: constant_fold_fabs
8901 /* 9201 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8902 /* 9204 */ // Label 476: @9204
8903 /* 9204 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(9232), // Rule ID 303 //
8904 /* 9209 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
8905 /* 9212 */ // MIs[0] dst
8906 /* 9212 */ // No operand predicates
8907 /* 9212 */ // MIs[0] tmp
8908 /* 9212 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8909 /* 9216 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8910 /* 9220 */ // MIs[1] x
8911 /* 9220 */ // No operand predicates
8912 /* 9220 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8913 /* 9222 */ // Combiner Rule #196: fabs_fneg_fold
8914 /* 9222 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
8915 /* 9225 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8916 /* 9227 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8917 /* 9231 */ GIR_EraseRootFromParent_Done,
8918 /* 9232 */ // Label 477: @9232
8919 /* 9232 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(9253), // Rule ID 447 //
8920 /* 9237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule275Enabled),
8921 /* 9240 */ // MIs[0] dst
8922 /* 9240 */ // No operand predicates
8923 /* 9240 */ // MIs[0] round
8924 /* 9240 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8925 /* 9244 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTRUNC),
8926 /* 9248 */ // MIs[1] src
8927 /* 9248 */ // No operand predicates
8928 /* 9248 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8929 /* 9250 */ // Combiner Rule #275: fold_fabs_fptrunc
8930 /* 9250 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner164),
8931 /* 9253 */ // Label 478: @9253
8932 /* 9253 */ GIM_Reject,
8933 /* 9254 */ // Label 81: @9254
8934 /* 9254 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(9265), // Rule ID 283 //
8935 /* 9259 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8936 /* 9262 */ // MIs[0] d
8937 /* 9262 */ // No operand predicates
8938 /* 9262 */ // MIs[0] mi.src0
8939 /* 9262 */ // No operand predicates
8940 /* 9262 */ // MIs[0] mi.src1
8941 /* 9262 */ // No operand predicates
8942 /* 9262 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[5]]
8943 /* 9262 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8944 /* 9265 */ // Label 479: @9265
8945 /* 9265 */ GIM_Reject,
8946 /* 9266 */ // Label 82: @9266
8947 /* 9266 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(9295), // Rule ID 26 //
8948 /* 9271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
8949 /* 9274 */ // MIs[0] dst
8950 /* 9274 */ // No operand predicates
8951 /* 9274 */ // MIs[0] src
8952 /* 9274 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8953 /* 9278 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
8954 /* 9282 */ // MIs[1] __idempotent_prop_match_0.x
8955 /* 9282 */ // No operand predicates
8956 /* 9282 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8957 /* 9287 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8958 /* 9289 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
8959 /* 9289 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8960 /* 9294 */ GIR_EraseRootFromParent_Done,
8961 /* 9295 */ // Label 480: @9295
8962 /* 9295 */ GIM_Reject,
8963 /* 9296 */ // Label 83: @9296
8964 /* 9296 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(9307), // Rule ID 218 //
8965 /* 9301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
8966 /* 9304 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
8967 /* 9304 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8968 /* 9307 */ // Label 481: @9307
8969 /* 9307 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(9318), // Rule ID 342 //
8970 /* 9312 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8971 /* 9315 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
8972 /* 9315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8973 /* 9318 */ // Label 482: @9318
8974 /* 9318 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(9329), // Rule ID 380 //
8975 /* 9323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8976 /* 9326 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
8977 /* 9326 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8978 /* 9329 */ // Label 483: @9329
8979 /* 9329 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(9340), // Rule ID 284 //
8980 /* 9334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8981 /* 9337 */ // MIs[0] d
8982 /* 9337 */ // No operand predicates
8983 /* 9337 */ // MIs[0] mi.src0
8984 /* 9337 */ // No operand predicates
8985 /* 9337 */ // MIs[0] mi.src1
8986 /* 9337 */ // No operand predicates
8987 /* 9337 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[6]]
8988 /* 9337 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8989 /* 9340 */ // Label 484: @9340
8990 /* 9340 */ GIM_Reject,
8991 /* 9341 */ // Label 84: @9341
8992 /* 9341 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(9352), // Rule ID 219 //
8993 /* 9346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
8994 /* 9349 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
8995 /* 9349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8996 /* 9352 */ // Label 485: @9352
8997 /* 9352 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(9363), // Rule ID 343 //
8998 /* 9357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8999 /* 9360 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
9000 /* 9360 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9001 /* 9363 */ // Label 486: @9363
9002 /* 9363 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(9374), // Rule ID 381 //
9003 /* 9368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9004 /* 9371 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
9005 /* 9371 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9006 /* 9374 */ // Label 487: @9374
9007 /* 9374 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(9385), // Rule ID 285 //
9008 /* 9379 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9009 /* 9382 */ // MIs[0] d
9010 /* 9382 */ // No operand predicates
9011 /* 9382 */ // MIs[0] mi.src0
9012 /* 9382 */ // No operand predicates
9013 /* 9382 */ // MIs[0] mi.src1
9014 /* 9382 */ // No operand predicates
9015 /* 9382 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[7]]
9016 /* 9382 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9017 /* 9385 */ // Label 488: @9385
9018 /* 9385 */ GIM_Reject,
9019 /* 9386 */ // Label 85: @9386
9020 /* 9386 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(9397), // Rule ID 382 //
9021 /* 9391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9022 /* 9394 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
9023 /* 9394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9024 /* 9397 */ // Label 489: @9397
9025 /* 9397 */ GIM_Reject,
9026 /* 9398 */ // Label 86: @9398
9027 /* 9398 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(9409), // Rule ID 383 //
9028 /* 9403 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9029 /* 9406 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
9030 /* 9406 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9031 /* 9409 */ // Label 490: @9409
9032 /* 9409 */ GIM_Reject,
9033 /* 9410 */ // Label 87: @9410
9034 /* 9410 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(9421), // Rule ID 220 //
9035 /* 9415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9036 /* 9418 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
9037 /* 9418 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
9038 /* 9421 */ // Label 491: @9421
9039 /* 9421 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(9432), // Rule ID 344 //
9040 /* 9426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9041 /* 9429 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
9042 /* 9429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9043 /* 9432 */ // Label 492: @9432
9044 /* 9432 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(9443), // Rule ID 384 //
9045 /* 9437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9046 /* 9440 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
9047 /* 9440 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9048 /* 9443 */ // Label 493: @9443
9049 /* 9443 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(9454), // Rule ID 286 //
9050 /* 9448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9051 /* 9451 */ // MIs[0] d
9052 /* 9451 */ // No operand predicates
9053 /* 9451 */ // MIs[0] mi.src0
9054 /* 9451 */ // No operand predicates
9055 /* 9451 */ // MIs[0] mi.src1
9056 /* 9451 */ // No operand predicates
9057 /* 9451 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[8]]
9058 /* 9451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9059 /* 9454 */ // Label 494: @9454
9060 /* 9454 */ GIM_Reject,
9061 /* 9455 */ // Label 88: @9455
9062 /* 9455 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(9466), // Rule ID 221 //
9063 /* 9460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9064 /* 9463 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
9065 /* 9463 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
9066 /* 9466 */ // Label 495: @9466
9067 /* 9466 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(9477), // Rule ID 345 //
9068 /* 9471 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9069 /* 9474 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
9070 /* 9474 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9071 /* 9477 */ // Label 496: @9477
9072 /* 9477 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(9488), // Rule ID 385 //
9073 /* 9482 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9074 /* 9485 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
9075 /* 9485 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9076 /* 9488 */ // Label 497: @9488
9077 /* 9488 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(9499), // Rule ID 287 //
9078 /* 9493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9079 /* 9496 */ // MIs[0] d
9080 /* 9496 */ // No operand predicates
9081 /* 9496 */ // MIs[0] mi.src0
9082 /* 9496 */ // No operand predicates
9083 /* 9496 */ // MIs[0] mi.src1
9084 /* 9496 */ // No operand predicates
9085 /* 9496 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[9]]
9086 /* 9496 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9087 /* 9499 */ // Label 498: @9499
9088 /* 9499 */ GIM_Reject,
9089 /* 9500 */ // Label 89: @9500
9090 /* 9500 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(9511), // Rule ID 288 //
9091 /* 9505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9092 /* 9508 */ // MIs[0] d
9093 /* 9508 */ // No operand predicates
9094 /* 9508 */ // MIs[0] mi.src0
9095 /* 9508 */ // No operand predicates
9096 /* 9508 */ // MIs[0] mi.src1
9097 /* 9508 */ // No operand predicates
9098 /* 9508 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[10]]
9099 /* 9508 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9100 /* 9511 */ // Label 499: @9511
9101 /* 9511 */ GIM_Reject,
9102 /* 9512 */ // Label 90: @9512
9103 /* 9512 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(9523), // Rule ID 289 //
9104 /* 9517 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9105 /* 9520 */ // MIs[0] d
9106 /* 9520 */ // No operand predicates
9107 /* 9520 */ // MIs[0] mi.src0
9108 /* 9520 */ // No operand predicates
9109 /* 9520 */ // MIs[0] mi.src1
9110 /* 9520 */ // No operand predicates
9111 /* 9520 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[11]]
9112 /* 9520 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9113 /* 9523 */ // Label 500: @9523
9114 /* 9523 */ GIM_Reject,
9115 /* 9524 */ // Label 91: @9524
9116 /* 9524 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(9535), // Rule ID 159 //
9117 /* 9529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
9118 /* 9532 */ // Combiner Rule #115: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
9119 /* 9532 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
9120 /* 9535 */ // Label 501: @9535
9121 /* 9535 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(9546), // Rule ID 161 //
9122 /* 9540 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
9123 /* 9543 */ // Combiner Rule #117: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
9124 /* 9543 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
9125 /* 9546 */ // Label 502: @9546
9126 /* 9546 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(9557), // Rule ID 208 //
9127 /* 9551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
9128 /* 9554 */ // Combiner Rule #164: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
9129 /* 9554 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
9130 /* 9557 */ // Label 503: @9557
9131 /* 9557 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(9568), // Rule ID 224 //
9132 /* 9562 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
9133 /* 9565 */ // Combiner Rule #172: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
9134 /* 9565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
9135 /* 9568 */ // Label 504: @9568
9136 /* 9568 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(9579), // Rule ID 261 //
9137 /* 9573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9138 /* 9576 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
9139 /* 9576 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9140 /* 9579 */ // Label 505: @9579
9141 /* 9579 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(9590), // Rule ID 322 //
9142 /* 9584 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9143 /* 9587 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
9144 /* 9587 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9145 /* 9590 */ // Label 506: @9590
9146 /* 9590 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(9613), // Rule ID 117 //
9147 /* 9595 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
9148 /* 9598 */ // MIs[0] dst
9149 /* 9598 */ // No operand predicates
9150 /* 9598 */ // MIs[0] lhs
9151 /* 9598 */ // No operand predicates
9152 /* 9598 */ // MIs[0] Operand 2
9153 /* 9598 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
9154 /* 9602 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9155 /* 9607 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
9156 /* 9607 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9157 /* 9612 */ GIR_EraseRootFromParent_Done,
9158 /* 9613 */ // Label 507: @9613
9159 /* 9613 */ GIM_Reject,
9160 /* 9614 */ // Label 92: @9614
9161 /* 9614 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(9625), // Rule ID 274 //
9162 /* 9619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9163 /* 9622 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SMIN'
9164 /* 9622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9165 /* 9625 */ // Label 508: @9625
9166 /* 9625 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(9636), // Rule ID 333 //
9167 /* 9630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9168 /* 9633 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SMIN'
9169 /* 9633 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9170 /* 9636 */ // Label 509: @9636
9171 /* 9636 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(9647), // Rule ID 362 //
9172 /* 9641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9173 /* 9644 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
9174 /* 9644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9175 /* 9647 */ // Label 510: @9647
9176 /* 9647 */ GIM_Reject,
9177 /* 9648 */ // Label 93: @9648
9178 /* 9648 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(9659), // Rule ID 275 //
9179 /* 9653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9180 /* 9656 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SMAX'
9181 /* 9656 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9182 /* 9659 */ // Label 511: @9659
9183 /* 9659 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(9670), // Rule ID 334 //
9184 /* 9664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9185 /* 9667 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SMAX'
9186 /* 9667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9187 /* 9670 */ // Label 512: @9670
9188 /* 9670 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(9681), // Rule ID 363 //
9189 /* 9675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9190 /* 9678 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
9191 /* 9678 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9192 /* 9681 */ // Label 513: @9681
9193 /* 9681 */ GIM_Reject,
9194 /* 9682 */ // Label 94: @9682
9195 /* 9682 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(9693), // Rule ID 276 //
9196 /* 9687 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9197 /* 9690 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UMIN'
9198 /* 9690 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9199 /* 9693 */ // Label 514: @9693
9200 /* 9693 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(9704), // Rule ID 335 //
9201 /* 9698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9202 /* 9701 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UMIN'
9203 /* 9701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9204 /* 9704 */ // Label 515: @9704
9205 /* 9704 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(9715), // Rule ID 364 //
9206 /* 9709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9207 /* 9712 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
9208 /* 9712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9209 /* 9715 */ // Label 516: @9715
9210 /* 9715 */ GIM_Reject,
9211 /* 9716 */ // Label 95: @9716
9212 /* 9716 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(9727), // Rule ID 277 //
9213 /* 9721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9214 /* 9724 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UMAX'
9215 /* 9724 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9216 /* 9727 */ // Label 517: @9727
9217 /* 9727 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(9738), // Rule ID 336 //
9218 /* 9732 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9219 /* 9735 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UMAX'
9220 /* 9735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9221 /* 9738 */ // Label 518: @9738
9222 /* 9738 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(9749), // Rule ID 365 //
9223 /* 9743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9224 /* 9746 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
9225 /* 9746 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9226 /* 9749 */ // Label 519: @9749
9227 /* 9749 */ GIM_Reject,
9228 /* 9750 */ // Label 96: @9750
9229 /* 9750 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(9761), // Rule ID 92 //
9230 /* 9755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
9231 /* 9758 */ // Combiner Rule #82: unary_undef_to_zero; wip_match_opcode 'G_ABS'
9232 /* 9758 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
9233 /* 9761 */ // Label 520: @9761
9234 /* 9761 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(9772), // Rule ID 300 //
9235 /* 9766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9236 /* 9769 */ // MIs[0] dst
9237 /* 9769 */ // No operand predicates
9238 /* 9769 */ // MIs[0] mi.src
9239 /* 9769 */ // No operand predicates
9240 /* 9769 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[5]]
9241 /* 9769 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9242 /* 9772 */ // Label 521: @9772
9243 /* 9772 */ GIM_Reject,
9244 /* 9773 */ // Label 97: @9773
9245 /* 9773 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(9784), // Rule ID 192 //
9246 /* 9778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
9247 /* 9781 */ // Combiner Rule #148: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
9248 /* 9781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9249 /* 9784 */ // Label 522: @9784
9250 /* 9784 */ GIM_Reject,
9251 /* 9785 */ // Label 98: @9785
9252 /* 9785 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(9796), // Rule ID 32 //
9253 /* 9790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
9254 /* 9793 */ // Combiner Rule #30: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
9255 /* 9793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
9256 /* 9796 */ // Label 523: @9796
9257 /* 9796 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(9807), // Rule ID 73 //
9258 /* 9801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
9259 /* 9804 */ // Combiner Rule #71: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
9260 /* 9804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
9261 /* 9807 */ // Label 524: @9807
9262 /* 9807 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(9818), // Rule ID 107 //
9263 /* 9812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
9264 /* 9815 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
9265 /* 9815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
9266 /* 9818 */ // Label 525: @9818
9267 /* 9818 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(9857), // Rule ID 44 //
9268 /* 9823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
9269 /* 9826 */ // MIs[0] root
9270 /* 9826 */ // No operand predicates
9271 /* 9826 */ // MIs[0] src
9272 /* 9826 */ // No operand predicates
9273 /* 9826 */ // MIs[0] elt
9274 /* 9826 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9275 /* 9830 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
9276 /* 9834 */ // MIs[1] src
9277 /* 9834 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
9278 /* 9839 */ // MIs[1] idx
9279 /* 9839 */ // No operand predicates
9280 /* 9839 */ // MIs[0] idx
9281 /* 9839 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
9282 /* 9844 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9283 /* 9849 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9284 /* 9851 */ // Combiner Rule #42: insert_vector_element_extract_vector_element
9285 /* 9851 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9286 /* 9856 */ GIR_EraseRootFromParent_Done,
9287 /* 9857 */ // Label 526: @9857
9288 /* 9857 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(9890), // Rule ID 30 //
9289 /* 9862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
9290 /* 9865 */ // MIs[0] root
9291 /* 9865 */ // No operand predicates
9292 /* 9865 */ // MIs[0] src
9293 /* 9865 */ // No operand predicates
9294 /* 9865 */ // MIs[0] elt
9295 /* 9865 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9296 /* 9869 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9297 /* 9873 */ // MIs[0] idx
9298 /* 9873 */ // No operand predicates
9299 /* 9873 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
9300 /* 9877 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9301 /* 9882 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9302 /* 9884 */ // Combiner Rule #28: insert_vector_element_elt_undef
9303 /* 9884 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9304 /* 9889 */ GIR_EraseRootFromParent_Done,
9305 /* 9890 */ // Label 527: @9890
9306 /* 9890 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(9914), // Rule ID 29 //
9307 /* 9895 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
9308 /* 9898 */ // MIs[0] root
9309 /* 9898 */ // No operand predicates
9310 /* 9898 */ // MIs[0] src
9311 /* 9898 */ // No operand predicates
9312 /* 9898 */ // MIs[0] elt
9313 /* 9898 */ // No operand predicates
9314 /* 9898 */ // MIs[0] idx
9315 /* 9898 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
9316 /* 9902 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9317 /* 9906 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9318 /* 9908 */ // Combiner Rule #27: insert_vector_element_idx_undef
9319 /* 9908 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9320 /* 9911 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9321 /* 9913 */ GIR_EraseRootFromParent_Done,
9322 /* 9914 */ // Label 528: @9914
9323 /* 9914 */ GIM_Reject,
9324 /* 9915 */ // Label 99: @9915
9325 /* 9915 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(9926), // Rule ID 31 //
9326 /* 9920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
9327 /* 9923 */ // Combiner Rule #29: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9328 /* 9923 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
9329 /* 9926 */ // Label 529: @9926
9330 /* 9926 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(9937), // Rule ID 74 //
9331 /* 9931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
9332 /* 9934 */ // Combiner Rule #72: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9333 /* 9934 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
9334 /* 9937 */ // Label 530: @9937
9335 /* 9937 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(9948), // Rule ID 80 //
9336 /* 9942 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9337 /* 9945 */ // Combiner Rule #76: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9338 /* 9945 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9339 /* 9948 */ // Label 531: @9948
9340 /* 9948 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(9959), // Rule ID 108 //
9341 /* 9953 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
9342 /* 9956 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9343 /* 9956 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
9344 /* 9959 */ // Label 532: @9959
9345 /* 9959 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(9983), // Rule ID 42 //
9346 /* 9964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
9347 /* 9967 */ // MIs[0] root
9348 /* 9967 */ // No operand predicates
9349 /* 9967 */ // MIs[0] src
9350 /* 9967 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9351 /* 9971 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9352 /* 9975 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
9353 /* 9978 */ // MIs[1] x
9354 /* 9978 */ // No operand predicates
9355 /* 9978 */ // MIs[1] y
9356 /* 9978 */ // No operand predicates
9357 /* 9978 */ // MIs[1] z
9358 /* 9978 */ // No operand predicates
9359 /* 9978 */ // MIs[1] a
9360 /* 9978 */ // No operand predicates
9361 /* 9978 */ // MIs[1] b
9362 /* 9978 */ // No operand predicates
9363 /* 9978 */ // MIs[1] c
9364 /* 9978 */ // No operand predicates
9365 /* 9978 */ // MIs[1] d
9366 /* 9978 */ // No operand predicates
9367 /* 9978 */ // MIs[1] e
9368 /* 9978 */ // No operand predicates
9369 /* 9978 */ // MIs[0] idx
9370 /* 9978 */ // No operand predicates
9371 /* 9978 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9372 /* 9980 */ // Combiner Rule #40: extract_vector_element_build_vector_trunc8
9373 /* 9980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9374 /* 9983 */ // Label 533: @9983
9375 /* 9983 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(10007), // Rule ID 41 //
9376 /* 9988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
9377 /* 9991 */ // MIs[0] root
9378 /* 9991 */ // No operand predicates
9379 /* 9991 */ // MIs[0] src
9380 /* 9991 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9381 /* 9995 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9382 /* 9999 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
9383 /* 10002 */ // MIs[1] x
9384 /* 10002 */ // No operand predicates
9385 /* 10002 */ // MIs[1] y
9386 /* 10002 */ // No operand predicates
9387 /* 10002 */ // MIs[1] z
9388 /* 10002 */ // No operand predicates
9389 /* 10002 */ // MIs[1] a
9390 /* 10002 */ // No operand predicates
9391 /* 10002 */ // MIs[1] b
9392 /* 10002 */ // No operand predicates
9393 /* 10002 */ // MIs[1] c
9394 /* 10002 */ // No operand predicates
9395 /* 10002 */ // MIs[1] d
9396 /* 10002 */ // No operand predicates
9397 /* 10002 */ // MIs[0] idx
9398 /* 10002 */ // No operand predicates
9399 /* 10002 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9400 /* 10004 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc7
9401 /* 10004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9402 /* 10007 */ // Label 534: @10007
9403 /* 10007 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(10031), // Rule ID 40 //
9404 /* 10012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
9405 /* 10015 */ // MIs[0] root
9406 /* 10015 */ // No operand predicates
9407 /* 10015 */ // MIs[0] src
9408 /* 10015 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9409 /* 10019 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9410 /* 10023 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
9411 /* 10026 */ // MIs[1] x
9412 /* 10026 */ // No operand predicates
9413 /* 10026 */ // MIs[1] y
9414 /* 10026 */ // No operand predicates
9415 /* 10026 */ // MIs[1] z
9416 /* 10026 */ // No operand predicates
9417 /* 10026 */ // MIs[1] a
9418 /* 10026 */ // No operand predicates
9419 /* 10026 */ // MIs[1] b
9420 /* 10026 */ // No operand predicates
9421 /* 10026 */ // MIs[1] c
9422 /* 10026 */ // No operand predicates
9423 /* 10026 */ // MIs[0] idx
9424 /* 10026 */ // No operand predicates
9425 /* 10026 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9426 /* 10028 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc6
9427 /* 10028 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9428 /* 10031 */ // Label 535: @10031
9429 /* 10031 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(10055), // Rule ID 39 //
9430 /* 10036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
9431 /* 10039 */ // MIs[0] root
9432 /* 10039 */ // No operand predicates
9433 /* 10039 */ // MIs[0] src
9434 /* 10039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9435 /* 10043 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9436 /* 10047 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
9437 /* 10050 */ // MIs[1] x
9438 /* 10050 */ // No operand predicates
9439 /* 10050 */ // MIs[1] y
9440 /* 10050 */ // No operand predicates
9441 /* 10050 */ // MIs[1] z
9442 /* 10050 */ // No operand predicates
9443 /* 10050 */ // MIs[1] a
9444 /* 10050 */ // No operand predicates
9445 /* 10050 */ // MIs[1] b
9446 /* 10050 */ // No operand predicates
9447 /* 10050 */ // MIs[0] idx
9448 /* 10050 */ // No operand predicates
9449 /* 10050 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9450 /* 10052 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc5
9451 /* 10052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9452 /* 10055 */ // Label 536: @10055
9453 /* 10055 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(10079), // Rule ID 38 //
9454 /* 10060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
9455 /* 10063 */ // MIs[0] root
9456 /* 10063 */ // No operand predicates
9457 /* 10063 */ // MIs[0] src
9458 /* 10063 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9459 /* 10067 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9460 /* 10071 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
9461 /* 10074 */ // MIs[1] x
9462 /* 10074 */ // No operand predicates
9463 /* 10074 */ // MIs[1] y
9464 /* 10074 */ // No operand predicates
9465 /* 10074 */ // MIs[1] z
9466 /* 10074 */ // No operand predicates
9467 /* 10074 */ // MIs[1] a
9468 /* 10074 */ // No operand predicates
9469 /* 10074 */ // MIs[0] idx
9470 /* 10074 */ // No operand predicates
9471 /* 10074 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9472 /* 10076 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc4
9473 /* 10076 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9474 /* 10079 */ // Label 537: @10079
9475 /* 10079 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(10103), // Rule ID 37 //
9476 /* 10084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
9477 /* 10087 */ // MIs[0] root
9478 /* 10087 */ // No operand predicates
9479 /* 10087 */ // MIs[0] src
9480 /* 10087 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9481 /* 10091 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9482 /* 10095 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
9483 /* 10098 */ // MIs[1] x
9484 /* 10098 */ // No operand predicates
9485 /* 10098 */ // MIs[1] y
9486 /* 10098 */ // No operand predicates
9487 /* 10098 */ // MIs[1] z
9488 /* 10098 */ // No operand predicates
9489 /* 10098 */ // MIs[0] idx
9490 /* 10098 */ // No operand predicates
9491 /* 10098 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9492 /* 10100 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc3
9493 /* 10100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9494 /* 10103 */ // Label 538: @10103
9495 /* 10103 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(10137), // Rule ID 33 //
9496 /* 10108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
9497 /* 10111 */ // MIs[0] root
9498 /* 10111 */ // No operand predicates
9499 /* 10111 */ // MIs[0] src
9500 /* 10111 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9501 /* 10115 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
9502 /* 10119 */ // MIs[1] x
9503 /* 10119 */ // No operand predicates
9504 /* 10119 */ // MIs[1] value
9505 /* 10119 */ // No operand predicates
9506 /* 10119 */ // MIs[1] idx
9507 /* 10119 */ // No operand predicates
9508 /* 10119 */ // MIs[0] idx
9509 /* 10119 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
9510 /* 10124 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
9511 /* 10129 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9512 /* 10131 */ // Combiner Rule #31: extract_vector_element_not_const
9513 /* 10131 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
9514 /* 10136 */ GIR_EraseRootFromParent_Done,
9515 /* 10137 */ // Label 539: @10137
9516 /* 10137 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(10158), // Rule ID 34 //
9517 /* 10142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
9518 /* 10145 */ // MIs[0] root
9519 /* 10145 */ // No operand predicates
9520 /* 10145 */ // MIs[0] src
9521 /* 10145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9522 /* 10149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
9523 /* 10153 */ // MIs[1] x
9524 /* 10153 */ // No operand predicates
9525 /* 10153 */ // MIs[1] value
9526 /* 10153 */ // No operand predicates
9527 /* 10153 */ // MIs[1] idx2
9528 /* 10153 */ // No operand predicates
9529 /* 10153 */ // MIs[0] idx1
9530 /* 10153 */ // No operand predicates
9531 /* 10153 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9532 /* 10155 */ // Combiner Rule #32: extract_vector_element_different_indices
9533 /* 10155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
9534 /* 10158 */ // Label 540: @10158
9535 /* 10158 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(10187), // Rule ID 43 //
9536 /* 10163 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
9537 /* 10166 */ // MIs[0] root
9538 /* 10166 */ // No operand predicates
9539 /* 10166 */ // MIs[0] src
9540 /* 10166 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9541 /* 10170 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
9542 /* 10174 */ // MIs[1] src1
9543 /* 10174 */ // No operand predicates
9544 /* 10174 */ // MIs[1] src2
9545 /* 10174 */ // No operand predicates
9546 /* 10174 */ // MIs[1] mask
9547 /* 10174 */ // No operand predicates
9548 /* 10174 */ // MIs[0] idx
9549 /* 10174 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9550 /* 10178 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9551 /* 10182 */ // MIs[2] imm
9552 /* 10182 */ // No operand predicates
9553 /* 10182 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9554 /* 10184 */ // Combiner Rule #41: extract_vector_element_shuffle_vector
9555 /* 10184 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
9556 /* 10187 */ // Label 541: @10187
9557 /* 10187 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(10211), // Rule ID 36 //
9558 /* 10192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
9559 /* 10195 */ // MIs[0] root
9560 /* 10195 */ // No operand predicates
9561 /* 10195 */ // MIs[0] src
9562 /* 10195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9563 /* 10199 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9564 /* 10203 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
9565 /* 10206 */ // MIs[1] x
9566 /* 10206 */ // No operand predicates
9567 /* 10206 */ // MIs[1] y
9568 /* 10206 */ // No operand predicates
9569 /* 10206 */ // MIs[0] idx
9570 /* 10206 */ // No operand predicates
9571 /* 10206 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9572 /* 10208 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc2
9573 /* 10208 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9574 /* 10211 */ // Label 542: @10211
9575 /* 10211 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(10243), // Rule ID 35 //
9576 /* 10216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
9577 /* 10219 */ // MIs[0] root
9578 /* 10219 */ // No operand predicates
9579 /* 10219 */ // MIs[0] src
9580 /* 10219 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9581 /* 10223 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
9582 /* 10227 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
9583 /* 10230 */ // MIs[1] unused
9584 /* 10230 */ // No operand predicates
9585 /* 10230 */ // MIs[0] idx
9586 /* 10230 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9587 /* 10234 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9588 /* 10238 */ // MIs[2] imm
9589 /* 10238 */ // No operand predicates
9590 /* 10238 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9591 /* 10240 */ // Combiner Rule #33: extract_vector_element_build_vector
9592 /* 10240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
9593 /* 10243 */ // Label 543: @10243
9594 /* 10243 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(10267), // Rule ID 27 //
9595 /* 10248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
9596 /* 10251 */ // MIs[0] root
9597 /* 10251 */ // No operand predicates
9598 /* 10251 */ // MIs[0] vector
9599 /* 10251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9600 /* 10255 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9601 /* 10259 */ // MIs[0] idx
9602 /* 10259 */ // No operand predicates
9603 /* 10259 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9604 /* 10261 */ // Combiner Rule #25: match_extract_of_element_undef_vector
9605 /* 10261 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9606 /* 10264 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9607 /* 10266 */ GIR_EraseRootFromParent_Done,
9608 /* 10267 */ // Label 544: @10267
9609 /* 10267 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(10291), // Rule ID 28 //
9610 /* 10272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
9611 /* 10275 */ // MIs[0] root
9612 /* 10275 */ // No operand predicates
9613 /* 10275 */ // MIs[0] vector
9614 /* 10275 */ // No operand predicates
9615 /* 10275 */ // MIs[0] idx
9616 /* 10275 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9617 /* 10279 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9618 /* 10283 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9619 /* 10285 */ // Combiner Rule #26: match_extract_of_element_undef_index
9620 /* 10285 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9621 /* 10288 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9622 /* 10290 */ GIR_EraseRootFromParent_Done,
9623 /* 10291 */ // Label 545: @10291
9624 /* 10291 */ GIM_Reject,
9625 /* 10292 */ // Label 100: @10292
9626 /* 10292 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(10303), // Rule ID 103 //
9627 /* 10297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
9628 /* 10300 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
9629 /* 10300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
9630 /* 10303 */ // Label 546: @10303
9631 /* 10303 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(10314), // Rule ID 105 //
9632 /* 10308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
9633 /* 10311 */ // Combiner Rule #86: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9634 /* 10311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
9635 /* 10314 */ // Label 547: @10314
9636 /* 10314 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(10325), // Rule ID 399 //
9637 /* 10319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
9638 /* 10322 */ // Combiner Rule #235: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
9639 /* 10322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
9640 /* 10325 */ // Label 548: @10325
9641 /* 10325 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(10336), // Rule ID 401 //
9642 /* 10330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
9643 /* 10333 */ // Combiner Rule #237: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9644 /* 10333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
9645 /* 10336 */ // Label 549: @10336
9646 /* 10336 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(10347), // Rule ID 448 //
9647 /* 10341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule276Enabled),
9648 /* 10344 */ // Combiner Rule #276: combine_shuffle_vector; wip_match_opcode 'G_SHUFFLE_VECTOR'
9649 /* 10344 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner165),
9650 /* 10347 */ // Label 550: @10347
9651 /* 10347 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(10368), // Rule ID 400 //
9652 /* 10352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
9653 /* 10355 */ // MIs[0] root
9654 /* 10355 */ // No operand predicates
9655 /* 10355 */ // MIs[0] src1
9656 /* 10355 */ // No operand predicates
9657 /* 10355 */ // MIs[0] undef
9658 /* 10355 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9659 /* 10359 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9660 /* 10363 */ // MIs[0] mask
9661 /* 10363 */ // No operand predicates
9662 /* 10363 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9663 /* 10365 */ // Combiner Rule #236: combine_shuffle_undef_rhs
9664 /* 10365 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
9665 /* 10368 */ // Label 551: @10368
9666 /* 10368 */ GIM_Try, /*On fail goto*//*Label 552*/ GIMT_Encode4(10379), // Rule ID 449 //
9667 /* 10373 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule277Enabled),
9668 /* 10376 */ // MIs[0] dst
9669 /* 10376 */ // No operand predicates
9670 /* 10376 */ // MIs[0] src1
9671 /* 10376 */ // No operand predicates
9672 /* 10376 */ // MIs[0] src2
9673 /* 10376 */ // No operand predicates
9674 /* 10376 */ // MIs[0] mask
9675 /* 10376 */ // No operand predicates
9676 /* 10376 */ // Combiner Rule #277: combine_shuffle_vector_to_build_vector
9677 /* 10376 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
9678 /* 10379 */ // Label 552: @10379
9679 /* 10379 */ GIM_Reject,
9680 /* 10380 */ // Label 101: @10380
9681 /* 10380 */ GIM_Try, /*On fail goto*//*Label 553*/ GIMT_Encode4(10391), // Rule ID 297 //
9682 /* 10385 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9683 /* 10388 */ // MIs[0] dst
9684 /* 10388 */ // No operand predicates
9685 /* 10388 */ // MIs[0] mi.src
9686 /* 10388 */ // No operand predicates
9687 /* 10388 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[2]]
9688 /* 10388 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9689 /* 10391 */ // Label 553: @10391
9690 /* 10391 */ GIM_Try, /*On fail goto*//*Label 554*/ GIMT_Encode4(10402), // Rule ID 425 //
9691 /* 10396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
9692 /* 10399 */ // MIs[0] dst
9693 /* 10399 */ // No operand predicates
9694 /* 10399 */ // MIs[0] src
9695 /* 10399 */ // No operand predicates
9696 /* 10399 */ // Combiner Rule #259: cttz_to_cttz_zero_poison
9697 /* 10399 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
9698 /* 10402 */ // Label 554: @10402
9699 /* 10402 */ GIM_Reject,
9700 /* 10403 */ // Label 102: @10403
9701 /* 10403 */ GIM_Try, /*On fail goto*//*Label 555*/ GIMT_Encode4(10414), // Rule ID 298 //
9702 /* 10408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9703 /* 10411 */ // MIs[0] dst
9704 /* 10411 */ // No operand predicates
9705 /* 10411 */ // MIs[0] mi.src
9706 /* 10411 */ // No operand predicates
9707 /* 10411 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[3]]
9708 /* 10411 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9709 /* 10414 */ // Label 555: @10414
9710 /* 10414 */ GIM_Reject,
9711 /* 10415 */ // Label 103: @10415
9712 /* 10415 */ GIM_Try, /*On fail goto*//*Label 556*/ GIMT_Encode4(10426), // Rule ID 295 //
9713 /* 10420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9714 /* 10423 */ // MIs[0] dst
9715 /* 10423 */ // No operand predicates
9716 /* 10423 */ // MIs[0] mi.src
9717 /* 10423 */ // No operand predicates
9718 /* 10423 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[0]]
9719 /* 10423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9720 /* 10426 */ // Label 556: @10426
9721 /* 10426 */ GIM_Try, /*On fail goto*//*Label 557*/ GIMT_Encode4(10437), // Rule ID 422 //
9722 /* 10431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
9723 /* 10434 */ // MIs[0] dst
9724 /* 10434 */ // No operand predicates
9725 /* 10434 */ // MIs[0] src
9726 /* 10434 */ // No operand predicates
9727 /* 10434 */ // Combiner Rule #256: ctlz_to_ctls
9728 /* 10434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
9729 /* 10437 */ // Label 557: @10437
9730 /* 10437 */ GIM_Try, /*On fail goto*//*Label 558*/ GIMT_Encode4(10448), // Rule ID 424 //
9731 /* 10442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
9732 /* 10445 */ // MIs[0] dst
9733 /* 10445 */ // No operand predicates
9734 /* 10445 */ // MIs[0] src
9735 /* 10445 */ // No operand predicates
9736 /* 10445 */ // Combiner Rule #258: ctlz_to_ctlz_zero_poison
9737 /* 10445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
9738 /* 10448 */ // Label 558: @10448
9739 /* 10448 */ GIM_Reject,
9740 /* 10449 */ // Label 104: @10449
9741 /* 10449 */ GIM_Try, /*On fail goto*//*Label 559*/ GIMT_Encode4(10460), // Rule ID 296 //
9742 /* 10454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9743 /* 10457 */ // MIs[0] dst
9744 /* 10457 */ // No operand predicates
9745 /* 10457 */ // MIs[0] mi.src
9746 /* 10457 */ // No operand predicates
9747 /* 10457 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[1]]
9748 /* 10457 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9749 /* 10460 */ // Label 559: @10460
9750 /* 10460 */ GIM_Try, /*On fail goto*//*Label 560*/ GIMT_Encode4(10471), // Rule ID 423 //
9751 /* 10465 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9752 /* 10468 */ // MIs[0] dst
9753 /* 10468 */ // No operand predicates
9754 /* 10468 */ // MIs[0] src
9755 /* 10468 */ // No operand predicates
9756 /* 10468 */ // Combiner Rule #257: ctlz_zero_poison_to_ctls
9757 /* 10468 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
9758 /* 10471 */ // Label 560: @10471
9759 /* 10471 */ GIM_Reject,
9760 /* 10472 */ // Label 105: @10472
9761 /* 10472 */ GIM_Try, /*On fail goto*//*Label 561*/ GIMT_Encode4(10483), // Rule ID 299 //
9762 /* 10477 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9763 /* 10480 */ // MIs[0] dst
9764 /* 10480 */ // No operand predicates
9765 /* 10480 */ // MIs[0] mi.src
9766 /* 10480 */ // No operand predicates
9767 /* 10480 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[4]]
9768 /* 10480 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9769 /* 10483 */ // Label 561: @10483
9770 /* 10483 */ GIM_Reject,
9771 /* 10484 */ // Label 106: @10484
9772 /* 10484 */ GIM_Try, /*On fail goto*//*Label 562*/ GIMT_Encode4(10495), // Rule ID 301 //
9773 /* 10489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9774 /* 10492 */ // MIs[0] dst
9775 /* 10492 */ // No operand predicates
9776 /* 10492 */ // MIs[0] mi.src
9777 /* 10492 */ // No operand predicates
9778 /* 10492 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[6]]
9779 /* 10492 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9780 /* 10495 */ // Label 562: @10495
9781 /* 10495 */ GIM_Reject,
9782 /* 10496 */ // Label 107: @10496
9783 /* 10496 */ GIM_Try, /*On fail goto*//*Label 563*/ GIMT_Encode4(10540), // Rule ID 252 //
9784 /* 10501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
9785 /* 10504 */ // MIs[0] d
9786 /* 10504 */ // No operand predicates
9787 /* 10504 */ // MIs[0] src
9788 /* 10504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9789 /* 10508 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
9790 /* 10512 */ // MIs[1] rev
9791 /* 10512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9792 /* 10516 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9793 /* 10520 */ // MIs[2] val
9794 /* 10520 */ // No operand predicates
9795 /* 10520 */ // MIs[1] amt
9796 /* 10520 */ // No operand predicates
9797 /* 10520 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
9798 /* 10524 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9799 /* 10526 */ // Combiner Rule #185: bitreverse_lshr
9800 /* 10526 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
9801 /* 10529 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9802 /* 10531 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9803 /* 10535 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9804 /* 10539 */ GIR_EraseRootFromParent_Done,
9805 /* 10540 */ // Label 563: @10540
9806 /* 10540 */ GIM_Try, /*On fail goto*//*Label 564*/ GIMT_Encode4(10584), // Rule ID 251 //
9807 /* 10545 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
9808 /* 10548 */ // MIs[0] d
9809 /* 10548 */ // No operand predicates
9810 /* 10548 */ // MIs[0] src
9811 /* 10548 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9812 /* 10552 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
9813 /* 10556 */ // MIs[1] rev
9814 /* 10556 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9815 /* 10560 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9816 /* 10564 */ // MIs[2] val
9817 /* 10564 */ // No operand predicates
9818 /* 10564 */ // MIs[1] amt
9819 /* 10564 */ // No operand predicates
9820 /* 10564 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
9821 /* 10568 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9822 /* 10570 */ // Combiner Rule #184: bitreverse_shl
9823 /* 10570 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
9824 /* 10573 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9825 /* 10575 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9826 /* 10579 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9827 /* 10583 */ GIR_EraseRootFromParent_Done,
9828 /* 10584 */ // Label 564: @10584
9829 /* 10584 */ GIM_Try, /*On fail goto*//*Label 565*/ GIMT_Encode4(10595), // Rule ID 302 //
9830 /* 10589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9831 /* 10592 */ // MIs[0] dst
9832 /* 10592 */ // No operand predicates
9833 /* 10592 */ // MIs[0] mi.src
9834 /* 10592 */ // No operand predicates
9835 /* 10592 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[7]]
9836 /* 10592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9837 /* 10595 */ // Label 565: @10595
9838 /* 10595 */ GIM_Reject,
9839 /* 10596 */ // Label 108: @10596
9840 /* 10596 */ GIM_Try, /*On fail goto*//*Label 566*/ GIMT_Encode4(10617), // Rule ID 199 //
9841 /* 10601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
9842 /* 10604 */ // MIs[0] dst
9843 /* 10604 */ // No operand predicates
9844 /* 10604 */ // MIs[0] src0
9845 /* 10604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9846 /* 10608 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9847 /* 10612 */ // MIs[1] cst
9848 /* 10612 */ // No operand predicates
9849 /* 10612 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9850 /* 10614 */ // Combiner Rule #155: constant_fold_fceil
9851 /* 10614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9852 /* 10617 */ // Label 566: @10617
9853 /* 10617 */ GIM_Reject,
9854 /* 10618 */ // Label 109: @10618
9855 /* 10618 */ GIM_Try, /*On fail goto*//*Label 567*/ GIMT_Encode4(10639), // Rule ID 195 //
9856 /* 10623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
9857 /* 10626 */ // MIs[0] dst
9858 /* 10626 */ // No operand predicates
9859 /* 10626 */ // MIs[0] src0
9860 /* 10626 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9861 /* 10630 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9862 /* 10634 */ // MIs[1] cst
9863 /* 10634 */ // No operand predicates
9864 /* 10634 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9865 /* 10636 */ // Combiner Rule #151: constant_fold_fsqrt
9866 /* 10636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9867 /* 10639 */ // Label 567: @10639
9868 /* 10639 */ GIM_Reject,
9869 /* 10640 */ // Label 110: @10640
9870 /* 10640 */ GIM_Try, /*On fail goto*//*Label 568*/ GIMT_Encode4(10661), // Rule ID 200 //
9871 /* 10645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
9872 /* 10648 */ // MIs[0] dst
9873 /* 10648 */ // No operand predicates
9874 /* 10648 */ // MIs[0] src0
9875 /* 10648 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9876 /* 10652 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9877 /* 10656 */ // MIs[1] cst
9878 /* 10656 */ // No operand predicates
9879 /* 10656 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9880 /* 10658 */ // Combiner Rule #156: constant_fold_ffloor
9881 /* 10658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9882 /* 10661 */ // Label 568: @10661
9883 /* 10661 */ GIM_Reject,
9884 /* 10662 */ // Label 111: @10662
9885 /* 10662 */ GIM_Try, /*On fail goto*//*Label 569*/ GIMT_Encode4(10683), // Rule ID 204 //
9886 /* 10667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
9887 /* 10670 */ // MIs[0] dst
9888 /* 10670 */ // No operand predicates
9889 /* 10670 */ // MIs[0] src0
9890 /* 10670 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9891 /* 10674 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9892 /* 10678 */ // MIs[1] cst
9893 /* 10678 */ // No operand predicates
9894 /* 10678 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9895 /* 10680 */ // Combiner Rule #160: constant_fold_frint
9896 /* 10680 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9897 /* 10683 */ // Label 569: @10683
9898 /* 10683 */ GIM_Reject,
9899 /* 10684 */ // Label 112: @10684
9900 /* 10684 */ GIM_Try, /*On fail goto*//*Label 570*/ GIMT_Encode4(10705), // Rule ID 205 //
9901 /* 10689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
9902 /* 10692 */ // MIs[0] dst
9903 /* 10692 */ // No operand predicates
9904 /* 10692 */ // MIs[0] src0
9905 /* 10692 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9906 /* 10696 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9907 /* 10700 */ // MIs[1] cst
9908 /* 10700 */ // No operand predicates
9909 /* 10700 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9910 /* 10702 */ // Combiner Rule #161: constant_fold_fnearbyint
9911 /* 10702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9912 /* 10705 */ // Label 570: @10705
9913 /* 10705 */ GIM_Reject,
9914 /* 10706 */ // Label 113: @10706
9915 /* 10706 */ GIM_Reject,
9916 /* 10707 */ }; // Size: 10707 bytes
9917 return MatchTable0;
9918}
9919#undef GIMT_Encode2
9920#undef GIMT_Encode4
9921#undef GIMT_Encode8
9922
9923
9924#endif // GET_GICOMBINER_IMPL
9925
9926#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
9927
9928AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
9929AvailableFunctionFeatures()
9930
9931#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
9932
9933#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
9934
9935, State(0),
9936ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
9937
9938#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
9939
9940