1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AArch64PreLegalizerCombinerImpl Combiner Match Table *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_GICOMBINER_DEPS
10
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 AArch64PreLegalizerCombinerImplRuleConfig {
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: // 12 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 'e': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+1, "mit_bzero", 9) != 0)
102 break;
103 return 290; // "emit_bzero"
104 case 'i': // 1 string to match.
105 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
106 break;
107 return 96; // "i2p_to_p2i"
108 case 'm': // 2 strings to match.
109 switch (RuleIdentifier[1]) {
110 default: break;
111 case 'a': // 1 string to match.
112 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
113 break;
114 return 222; // "match_ands"
115 case 'u': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
117 break;
118 return 20; // "mul_to_shl"
119 }
120 break;
121 case 'o': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "r_xor_and", 9) != 0)
123 break;
124 return 229; // "or_xor_and"
125 case 'p': // 1 string to match.
126 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
127 break;
128 return 95; // "p2i_to_i2p"
129 case 's': // 3 strings to match.
130 switch (RuleIdentifier[1]) {
131 default: break;
132 case 'e': // 2 strings to match.
133 switch (RuleIdentifier[2]) {
134 default: break;
135 case 'l': // 1 string to match.
136 if (memcmp(RuleIdentifier.data()+3, "ect_not", 7) != 0)
137 break;
138 return 135; // "select_not"
139 case 'x': // 1 string to match.
140 if (memcmp(RuleIdentifier.data()+3, "t_trunc", 7) != 0)
141 break;
142 return 232; // "sext_trunc"
143 }
144 break;
145 case 'u': // 1 string to match.
146 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
147 break;
148 return 21; // "sub_to_add"
149 }
150 break;
151 case 'z': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
153 break;
154 return 233; // "zext_trunc"
155 }
156 break;
157 case 11: // 8 strings to match.
158 switch (RuleIdentifier[0]) {
159 default: break;
160 case 'a': // 1 string to match.
161 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
162 break;
163 return 101; // "add_sub_reg"
164 case 'm': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
166 break;
167 return 249; // "match_addos"
168 case 's': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
170 break;
171 return 217; // "sub_add_reg"
172 case 't': // 4 strings to match.
173 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
174 break;
175 switch (RuleIdentifier[6]) {
176 default: break;
177 case 's': // 3 strings to match.
178 switch (RuleIdentifier[7]) {
179 default: break;
180 case 'h': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
182 break;
183 return 146; // "trunc_shift"
184 case 's': // 2 strings to match.
185 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
186 break;
187 switch (RuleIdentifier[10]) {
188 default: break;
189 case 's': // 1 string to match.
190 return 251; // "trunc_ssats"
191 case 'u': // 1 string to match.
192 return 252; // "trunc_ssatu"
193 }
194 break;
195 }
196 break;
197 case 'u': // 1 string to match.
198 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
199 break;
200 return 253; // "trunc_usatu"
201 }
202 break;
203 case 'u': // 1 string to match.
204 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
205 break;
206 return 242; // "unmerge_cst"
207 }
208 break;
209 case 12: // 12 strings to match.
210 switch (RuleIdentifier[0]) {
211 default: break;
212 case 'A': // 1 string to match.
213 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
214 break;
215 return 4; // "APlusBMinusB"
216 case 'B': // 1 string to match.
217 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
218 break;
219 return 5; // "BMinusAPlusA"
220 case 'a': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
222 break;
223 return 168; // "adde_to_addo"
224 case 'c': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
226 break;
227 return 256; // "ctlz_to_ctls"
228 case 'f': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
230 break;
231 return 219; // "fsub_to_fneg"
232 case 'm': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
234 break;
235 return 197; // "mulh_to_lshr"
236 case 'n': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
238 break;
239 return 147; // "not_cmp_fold"
240 case 'r': // 1 string to match.
241 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
242 break;
243 return 142; // "redundant_or"
244 case 's': // 2 strings to match.
245 switch (RuleIdentifier[1]) {
246 default: break;
247 case 'd': // 1 string to match.
248 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
249 break;
250 return 213; // "sdiv_by_pow2"
251 case 'e': // 1 string to match.
252 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
253 break;
254 return 54; // "sext_of_sext"
255 }
256 break;
257 case 'u': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
259 break;
260 return 212; // "udiv_by_pow2"
261 case 'z': // 1 string to match.
262 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
263 break;
264 return 52; // "zext_of_zext"
265 }
266 break;
267 case 13: // 19 strings to match.
268 switch (RuleIdentifier[0]) {
269 default: break;
270 case 'A': // 2 strings to match.
271 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
272 break;
273 switch (RuleIdentifier[12]) {
274 default: break;
275 case 'A': // 1 string to match.
276 return 12; // "AMinusBMinusA"
277 case 'C': // 1 string to match.
278 return 9; // "AMinusBMinusC"
279 }
280 break;
281 case 'a': // 1 string to match.
282 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
283 break;
284 return 43; // "add_of_vscale"
285 case 'c': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
287 break;
288 return 186; // "commute_shift"
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: // 20 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 'c': // 2 strings to match.
446 if (memcmp(RuleIdentifier.data()+1, "ombine_mem", 10) != 0)
447 break;
448 switch (RuleIdentifier[11]) {
449 default: break;
450 case 'c': // 1 string to match.
451 if (memcmp(RuleIdentifier.data()+12, "py", 2) != 0)
452 break;
453 return 287; // "combine_memcpy"
454 case 's': // 1 string to match.
455 if (memcmp(RuleIdentifier.data()+12, "et", 2) != 0)
456 break;
457 return 289; // "combine_memset"
458 }
459 break;
460 case 'f': // 2 strings to match.
461 switch (RuleIdentifier[1]) {
462 default: break;
463 case 'a': // 1 string to match.
464 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
465 break;
466 return 196; // "fabs_fneg_fold"
467 case 'n': // 1 string to match.
468 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
469 break;
470 return 98; // "fneg_fneg_fold"
471 }
472 break;
473 case 'm': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
475 break;
476 return 23; // "mul_by_neg_one"
477 case 'r': // 1 string to match.
478 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
479 break;
480 return 115; // "reassoc_ptradd"
481 case 's': // 4 strings to match.
482 switch (RuleIdentifier[1]) {
483 default: break;
484 case 'e': // 2 strings to match.
485 switch (RuleIdentifier[2]) {
486 default: break;
487 case 'l': // 1 string to match.
488 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
489 break;
490 return 60; // "select_of_zext"
491 case 'x': // 1 string to match.
492 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
493 break;
494 return 55; // "sext_of_anyext"
495 }
496 break;
497 case 'h': // 1 string to match.
498 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
499 break;
500 return 114; // "shifts_too_big"
501 case 'i': // 1 string to match.
502 if (memcmp(RuleIdentifier.data()+2, "mplify_uaddo", 12) != 0)
503 break;
504 return 284; // "simplify_uaddo"
505 }
506 break;
507 case 'z': // 1 string to match.
508 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
509 break;
510 return 53; // "zext_of_anyext"
511 }
512 break;
513 case 15: // 15 strings to match.
514 switch (RuleIdentifier[0]) {
515 default: break;
516 case 'A': // 2 strings to match.
517 switch (RuleIdentifier[1]) {
518 default: break;
519 case 'M': // 1 string to match.
520 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
521 break;
522 return 16; // "AMinusC1MinusC2"
523 case 'P': // 1 string to match.
524 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
525 break;
526 return 3; // "APlusZeroMinusB"
527 }
528 break;
529 case 'C': // 1 string to match.
530 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
531 break;
532 return 17; // "C1Minus2MinusC2"
533 case 'Z': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
535 break;
536 return 2; // "ZeroMinusAPlusB"
537 case 'a': // 2 strings to match.
538 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
539 break;
540 switch (RuleIdentifier[8]) {
541 default: break;
542 case 's': // 1 string to match.
543 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
544 break;
545 return 270; // "avgceil_s_match"
546 case 'u': // 1 string to match.
547 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
548 break;
549 return 269; // "avgceil_u_match"
550 }
551 break;
552 case 'b': // 1 string to match.
553 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
554 break;
555 return 185; // "bitreverse_lshr"
556 case 'c': // 1 string to match.
557 if (memcmp(RuleIdentifier.data()+1, "ombine_memmove", 14) != 0)
558 break;
559 return 288; // "combine_memmove"
560 case 'e': // 1 string to match.
561 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
562 break;
563 return 74; // "extending_loads"
564 case 'i': // 1 string to match.
565 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
566 break;
567 return 24; // "idempotent_prop"
568 case 'l': // 1 string to match.
569 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
570 break;
571 return 175; // "load_or_combine"
572 case 'n': // 1 string to match.
573 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
574 break;
575 return 68; // "narrow_binop_or"
576 case 'o': // 1 string to match.
577 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
578 break;
579 return 165; // "overlapping_and"
580 case 's': // 1 string to match.
581 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
582 break;
583 return 89; // "select_same_val"
584 case 'z': // 1 string to match.
585 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
586 break;
587 return 144; // "zext_trunc_fold"
588 }
589 break;
590 case 16: // 19 strings to match.
591 switch (RuleIdentifier[0]) {
592 default: break;
593 case 'A': // 1 string to match.
594 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
595 break;
596 return 11; // "AMinusZeroMinusB"
597 case 'a': // 3 strings to match.
598 switch (RuleIdentifier[1]) {
599 default: break;
600 case 'n': // 1 string to match.
601 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
602 break;
603 return 56; // "anyext_of_anyext"
604 case 'v': // 2 strings to match.
605 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
606 break;
607 switch (RuleIdentifier[9]) {
608 default: break;
609 case 's': // 1 string to match.
610 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
611 break;
612 return 268; // "avgfloor_s_match"
613 case 'u': // 1 string to match.
614 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
615 break;
616 return 267; // "avgfloor_u_match"
617 }
618 break;
619 }
620 break;
621 case 'n': // 5 strings to match.
622 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
623 break;
624 switch (RuleIdentifier[13]) {
625 default: break;
626 case 'a': // 2 strings to match.
627 switch (RuleIdentifier[14]) {
628 default: break;
629 case 'd': // 1 string to match.
630 if (RuleIdentifier[15] != 'd')
631 break;
632 return 64; // "narrow_binop_add"
633 case 'n': // 1 string to match.
634 if (RuleIdentifier[15] != 'd')
635 break;
636 return 67; // "narrow_binop_and"
637 }
638 break;
639 case 'm': // 1 string to match.
640 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
641 break;
642 return 66; // "narrow_binop_mul"
643 case 's': // 1 string to match.
644 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
645 break;
646 return 65; // "narrow_binop_sub"
647 case 'x': // 1 string to match.
648 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
649 break;
650 return 69; // "narrow_binop_xor"
651 }
652 break;
653 case 'o': // 1 string to match.
654 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
655 break;
656 return 224; // "or_and_xor_to_or"
657 case 's': // 6 strings to match.
658 switch (RuleIdentifier[1]) {
659 default: break;
660 case 'e': // 4 strings to match.
661 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
662 break;
663 switch (RuleIdentifier[7]) {
664 default: break;
665 case 'o': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
667 break;
668 return 61; // "select_of_anyext"
669 case 't': // 1 string to match.
670 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
671 break;
672 return 218; // "select_to_minmax"
673 case 'u': // 1 string to match.
674 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
675 break;
676 return 130; // "select_undef_cmp"
677 case 'z': // 1 string to match.
678 if (memcmp(RuleIdentifier.data()+8, "ero_true", 8) != 0)
679 break;
680 return 272; // "select_zero_true"
681 }
682 break;
683 case 'u': // 2 strings to match.
684 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
685 break;
686 switch (RuleIdentifier[5]) {
687 default: break;
688 case 'f': // 1 string to match.
689 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
690 break;
691 return 264; // "sub_of_mul_const"
692 case 'n': // 1 string to match.
693 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
694 break;
695 return 261; // "sub_one_from_sub"
696 }
697 break;
698 }
699 break;
700 case 't': // 2 strings to match.
701 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
702 break;
703 switch (RuleIdentifier[12]) {
704 default: break;
705 case 's': // 1 string to match.
706 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
707 break;
708 return 50; // "truncate_of_sext"
709 case 'z': // 1 string to match.
710 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
711 break;
712 return 49; // "truncate_of_zext"
713 }
714 break;
715 case 'u': // 1 string to match.
716 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
717 break;
718 return 77; // "undef_to_fp_zero"
719 }
720 break;
721 case 17: // 18 strings to match.
722 switch (RuleIdentifier[0]) {
723 default: break;
724 case 'A': // 2 strings to match.
725 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
726 break;
727 switch (RuleIdentifier[11]) {
728 default: break;
729 case 'A': // 1 string to match.
730 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
731 break;
732 return 8; // "APlusBMinusAplusC"
733 case 'C': // 1 string to match.
734 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
735 break;
736 return 10; // "APlusBMinusCPlusA"
737 }
738 break;
739 case 'a': // 3 strings to match.
740 switch (RuleIdentifier[1]) {
741 default: break;
742 case 'd': // 1 string to match.
743 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
744 break;
745 return 22; // "add_p2i_to_ptradd"
746 case 'n': // 2 strings to match.
747 switch (RuleIdentifier[2]) {
748 default: break;
749 case 'd': // 1 string to match.
750 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
751 break;
752 return 226; // "and_xor_or_to_and"
753 case 'y': // 1 string to match.
754 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
755 break;
756 return 97; // "anyext_trunc_fold"
757 }
758 break;
759 }
760 break;
761 case 'c': // 4 strings to match.
762 switch (RuleIdentifier[1]) {
763 default: break;
764 case 'a': // 2 strings to match.
765 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
766 break;
767 switch (RuleIdentifier[13]) {
768 default: break;
769 case 'f': // 1 string to match.
770 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
771 break;
772 return 119; // "canonicalize_fcmp"
773 case 'i': // 1 string to match.
774 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
775 break;
776 return 118; // "canonicalize_icmp"
777 }
778 break;
779 case 'o': // 2 strings to match.
780 switch (RuleIdentifier[2]) {
781 default: break;
782 case 'm': // 1 string to match.
783 if (memcmp(RuleIdentifier.data()+3, "bine_or_of_and", 14) != 0)
784 break;
785 return 271; // "combine_or_of_and"
786 case 'n': // 1 string to match.
787 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
788 break;
789 return 193; // "constant_fold_fma"
790 }
791 break;
792 }
793 break;
794 case 'd': // 1 string to match.
795 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
796 break;
797 return 176; // "div_rem_to_divrem"
798 case 'e': // 1 string to match.
799 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
800 break;
801 return 87; // "erase_undef_store"
802 case 'p': // 1 string to match.
803 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
804 break;
805 return 172; // "ptr_add_with_zero"
806 case 's': // 4 strings to match.
807 switch (RuleIdentifier[1]) {
808 default: break;
809 case 'e': // 2 strings to match.
810 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
811 break;
812 switch (RuleIdentifier[7]) {
813 default: break;
814 case 't': // 1 string to match.
815 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
816 break;
817 return 132; // "select_to_iminmax"
818 case 'z': // 1 string to match.
819 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
820 break;
821 return 134; // "select_zero_false"
822 }
823 break;
824 case 'h': // 1 string to match.
825 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
826 break;
827 return 173; // "shift_immed_chain"
828 case 'r': // 1 string to match.
829 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
830 break;
831 return 209; // "srem_pow2_to_mask"
832 }
833 break;
834 case 'u': // 2 strings to match.
835 switch (RuleIdentifier[1]) {
836 default: break;
837 case 'n': // 1 string to match.
838 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
839 break;
840 return 78; // "undef_to_int_zero"
841 case 'r': // 1 string to match.
842 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
843 break;
844 return 143; // "urem_pow2_to_mask"
845 }
846 break;
847 }
848 break;
849 case 18: // 13 strings to match.
850 switch (RuleIdentifier[0]) {
851 default: break;
852 case 'A': // 3 strings to match.
853 switch (RuleIdentifier[1]) {
854 default: break;
855 case 'M': // 2 strings to match.
856 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
857 break;
858 switch (RuleIdentifier[11]) {
859 default: break;
860 case 'B': // 1 string to match.
861 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
862 break;
863 return 7; // "AMinusBPlusBMinusC"
864 case 'C': // 1 string to match.
865 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
866 break;
867 return 6; // "AMinusBPlusCMinusA"
868 }
869 break;
870 case 'P': // 1 string to match.
871 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
872 break;
873 return 0; // "APlusBMinusCMinusB"
874 }
875 break;
876 case 'b': // 1 string to match.
877 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
878 break;
879 return 93; // "binop_left_to_zero"
880 case 'c': // 3 strings to match.
881 if (RuleIdentifier[1] != 'o')
882 break;
883 switch (RuleIdentifier[2]) {
884 default: break;
885 case 'm': // 1 string to match.
886 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
887 break;
888 return 169; // "combine_minmax_nan"
889 case 'n': // 2 strings to match.
890 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
891 break;
892 switch (RuleIdentifier[15]) {
893 default: break;
894 case 'a': // 1 string to match.
895 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
896 break;
897 return 150; // "constant_fold_fabs"
898 case 'n': // 1 string to match.
899 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
900 break;
901 return 149; // "constant_fold_fneg"
902 }
903 break;
904 }
905 break;
906 case 'e': // 1 string to match.
907 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
908 break;
909 return 170; // "expand_const_fpowi"
910 case 'f': // 2 strings to match.
911 switch (RuleIdentifier[1]) {
912 default: break;
913 case 'o': // 1 string to match.
914 if (memcmp(RuleIdentifier.data()+2, "ld_global_offset", 16) != 0)
915 break;
916 return 275; // "fold_global_offset"
917 case 'p': // 1 string to match.
918 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
919 break;
920 return 107; // "fptrunc_fpext_fold"
921 }
922 break;
923 case 's': // 2 strings to match.
924 if (RuleIdentifier[1] != 'e')
925 break;
926 switch (RuleIdentifier[2]) {
927 default: break;
928 case 'l': // 1 string to match.
929 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
930 break;
931 return 62; // "select_of_truncate"
932 case 'x': // 1 string to match.
933 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
934 break;
935 return 127; // "sext_inreg_of_load"
936 }
937 break;
938 case 't': // 1 string to match.
939 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
940 break;
941 return 51; // "truncate_of_anyext"
942 }
943 break;
944 case 19: // 20 strings to match.
945 switch (RuleIdentifier[0]) {
946 default: break;
947 case 'A': // 1 string to match.
948 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
949 break;
950 return 1; // "AMinusBMinusCMinusC"
951 case 'b': // 1 string to match.
952 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
953 break;
954 return 94; // "binop_right_to_zero"
955 case 'c': // 7 strings to match.
956 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
957 break;
958 switch (RuleIdentifier[5]) {
959 default: break;
960 case '_': // 1 string to match.
961 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
962 break;
963 return 164; // "const_ptradd_to_i2p"
964 case 'a': // 6 strings to match.
965 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
966 break;
967 switch (RuleIdentifier[14]) {
968 default: break;
969 case 'b': // 1 string to match.
970 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
971 break;
972 return 191; // "constant_fold_binop"
973 case 'f': // 5 strings to match.
974 switch (RuleIdentifier[15]) {
975 default: break;
976 case 'c': // 1 string to match.
977 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
978 break;
979 return 155; // "constant_fold_fceil"
980 case 'l': // 1 string to match.
981 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
982 break;
983 return 152; // "constant_fold_flog2"
984 case 'p': // 1 string to match.
985 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
986 break;
987 return 154; // "constant_fold_fpext"
988 case 'r': // 1 string to match.
989 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
990 break;
991 return 160; // "constant_fold_frint"
992 case 's': // 1 string to match.
993 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
994 break;
995 return 151; // "constant_fold_fsqrt"
996 }
997 break;
998 }
999 break;
1000 }
1001 break;
1002 case 'e': // 2 strings to match.
1003 if (memcmp(RuleIdentifier.data()+1, "xt", 2) != 0)
1004 break;
1005 switch (RuleIdentifier[3]) {
1006 default: break;
1007 case '_': // 1 string to match.
1008 if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv", 15) != 0)
1009 break;
1010 return 277; // "ext_uaddv_to_uaddlv"
1011 case 'e': // 1 string to match.
1012 if (memcmp(RuleIdentifier.data()+4, "nd_through_phis", 15) != 0)
1013 break;
1014 return 111; // "extend_through_phis"
1015 }
1016 break;
1017 case 'i': // 1 string to match.
1018 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
1019 break;
1020 return 70; // "integer_of_truncate"
1021 case 'm': // 1 string to match.
1022 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
1023 break;
1024 return 247; // "merge_of_x_and_zero"
1025 case 'p': // 1 string to match.
1026 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
1027 break;
1028 return 117; // "ptr_add_immed_chain"
1029 case 'r': // 2 strings to match.
1030 switch (RuleIdentifier[1]) {
1031 default: break;
1032 case 'e': // 1 string to match.
1033 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
1034 break;
1035 return 116; // "reassoc_comm_binops"
1036 case 'i': // 1 string to match.
1037 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
1038 break;
1039 return 90; // "right_identity_zero"
1040 }
1041 break;
1042 case 's': // 3 strings to match.
1043 switch (RuleIdentifier[1]) {
1044 default: break;
1045 case 'e': // 1 string to match.
1046 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
1047 break;
1048 return 131; // "select_constant_cmp"
1049 case 'i': // 2 strings to match.
1050 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
1051 break;
1052 switch (RuleIdentifier[9]) {
1053 default: break;
1054 case 'a': // 1 string to match.
1055 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
1056 break;
1057 return 112; // "simplify_add_to_sub"
1058 case 'n': // 1 string to match.
1059 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1060 break;
1061 return 230; // "simplify_neg_minmax"
1062 }
1063 break;
1064 }
1065 break;
1066 case 'u': // 1 string to match.
1067 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1068 break;
1069 return 82; // "unary_undef_to_zero"
1070 }
1071 break;
1072 case 20: // 10 strings to match.
1073 switch (RuleIdentifier[0]) {
1074 default: break;
1075 case 'a': // 1 string to match.
1076 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1077 break;
1078 return 199; // "and_or_disjoint_mask"
1079 case 'b': // 1 string to match.
1080 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1081 break;
1082 return 105; // "bitcast_bitcast_fold"
1083 case 'c': // 1 string to match.
1084 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1085 break;
1086 return 156; // "constant_fold_ffloor"
1087 case 'i': // 1 string to match.
1088 if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc", 19) != 0)
1089 break;
1090 return 274; // "icmp_redundant_trunc"
1091 case 'm': // 1 string to match.
1092 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1093 break;
1094 return 246; // "merge_of_x_and_undef"
1095 case 'o': // 1 string to match.
1096 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1097 break;
1098 return 225; // "or_and_xor_to_xor_or"
1099 case 'r': // 2 strings to match.
1100 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1101 break;
1102 switch (RuleIdentifier[4]) {
1103 default: break;
1104 case 'c': // 1 string to match.
1105 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1106 break;
1107 return 128; // "reduce_shl_of_extend"
1108 case 'n': // 1 string to match.
1109 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1110 break;
1111 return 136; // "redundant_sext_inreg"
1112 }
1113 break;
1114 case 'u': // 2 strings to match.
1115 if (RuleIdentifier[1] != 'n')
1116 break;
1117 switch (RuleIdentifier[2]) {
1118 default: break;
1119 case 'a': // 1 string to match.
1120 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1121 break;
1122 return 83; // "unary_undef_to_undef"
1123 case 'm': // 1 string to match.
1124 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1125 break;
1126 return 245; // "unmerge_zext_to_zext"
1127 }
1128 break;
1129 }
1130 break;
1131 case 21: // 20 strings to match.
1132 switch (RuleIdentifier[0]) {
1133 default: break;
1134 case 'a': // 1 string to match.
1135 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1136 break;
1137 return 227; // "and_xor_or_to_xor_and"
1138 case 'c': // 6 strings to match.
1139 if (RuleIdentifier[1] != 'o')
1140 break;
1141 switch (RuleIdentifier[2]) {
1142 default: break;
1143 case 'm': // 4 strings to match.
1144 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1145 break;
1146 switch (RuleIdentifier[8]) {
1147 default: break;
1148 case 'b': // 1 string to match.
1149 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1150 break;
1151 return 248; // "combine_build_unmerge"
1152 case 'c': // 1 string to match.
1153 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1154 break;
1155 return 231; // "combine_concat_vector"
1156 case 'm': // 2 strings to match.
1157 if (memcmp(RuleIdentifier.data()+9, "em", 2) != 0)
1158 break;
1159 switch (RuleIdentifier[11]) {
1160 default: break;
1161 case 'c': // 1 string to match.
1162 if (memcmp(RuleIdentifier.data()+12, "py_inline", 9) != 0)
1163 break;
1164 return 285; // "combine_memcpy_inline"
1165 case 's': // 1 string to match.
1166 if (memcmp(RuleIdentifier.data()+12, "et_inline", 9) != 0)
1167 break;
1168 return 286; // "combine_memset_inline"
1169 }
1170 break;
1171 }
1172 break;
1173 case 'n': // 2 strings to match.
1174 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1175 break;
1176 switch (RuleIdentifier[14]) {
1177 default: break;
1178 case 'c': // 1 string to match.
1179 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1180 break;
1181 return 194; // "constant_fold_cast_op"
1182 case 'f': // 1 string to match.
1183 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1184 break;
1185 return 153; // "constant_fold_fptrunc"
1186 }
1187 break;
1188 }
1189 break;
1190 case 'e': // 1 string to match.
1191 if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv", 20) != 0)
1192 break;
1193 return 276; // "ext_addv_to_udot_addv"
1194 case 'f': // 1 string to match.
1195 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1196 break;
1197 return 216; // "fdiv_repeated_divison"
1198 case 'i': // 1 string to match.
1199 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1200 break;
1201 return 30; // "insert_vector_elt_oob"
1202 case 'l': // 1 string to match.
1203 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1204 break;
1205 return 255; // "lshr_of_trunc_of_lshr"
1206 case 'p': // 6 strings to match.
1207 if (memcmp(RuleIdentifier.data()+1, "ush_", 4) != 0)
1208 break;
1209 switch (RuleIdentifier[5]) {
1210 default: break;
1211 case 'a': // 2 strings to match.
1212 if (memcmp(RuleIdentifier.data()+6, "dd_through_", 11) != 0)
1213 break;
1214 switch (RuleIdentifier[17]) {
1215 default: break;
1216 case 's': // 1 string to match.
1217 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1218 break;
1219 return 282; // "push_add_through_sext"
1220 case 'z': // 1 string to match.
1221 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1222 break;
1223 return 279; // "push_add_through_zext"
1224 }
1225 break;
1226 case 'm': // 2 strings to match.
1227 if (memcmp(RuleIdentifier.data()+6, "ul_through_", 11) != 0)
1228 break;
1229 switch (RuleIdentifier[17]) {
1230 default: break;
1231 case 's': // 1 string to match.
1232 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1233 break;
1234 return 283; // "push_mul_through_sext"
1235 case 'z': // 1 string to match.
1236 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1237 break;
1238 return 280; // "push_mul_through_zext"
1239 }
1240 break;
1241 case 's': // 2 strings to match.
1242 if (memcmp(RuleIdentifier.data()+6, "ub_through_", 11) != 0)
1243 break;
1244 switch (RuleIdentifier[17]) {
1245 default: break;
1246 case 's': // 1 string to match.
1247 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1248 break;
1249 return 281; // "push_sub_through_sext"
1250 case 'z': // 1 string to match.
1251 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1252 break;
1253 return 278; // "push_sub_through_zext"
1254 }
1255 break;
1256 }
1257 break;
1258 case 'r': // 1 string to match.
1259 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1260 break;
1261 return 100; // "right_identity_one_fp"
1262 case 'u': // 2 strings to match.
1263 if (RuleIdentifier[1] != 'n')
1264 break;
1265 switch (RuleIdentifier[2]) {
1266 default: break;
1267 case 'd': // 1 string to match.
1268 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1269 break;
1270 return 79; // "undef_to_negative_one"
1271 case 'm': // 1 string to match.
1272 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1273 break;
1274 return 244; // "unmerge_dead_to_trunc"
1275 }
1276 break;
1277 }
1278 break;
1279 case 22: // 14 strings to match.
1280 switch (RuleIdentifier[0]) {
1281 default: break;
1282 case 'c': // 3 strings to match.
1283 if (RuleIdentifier[1] != 'o')
1284 break;
1285 switch (RuleIdentifier[2]) {
1286 default: break;
1287 case 'm': // 2 strings to match.
1288 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_", 13) != 0)
1289 break;
1290 switch (RuleIdentifier[16]) {
1291 default: break;
1292 case 'c': // 1 string to match.
1293 if (memcmp(RuleIdentifier.data()+17, "oncat", 5) != 0)
1294 break;
1295 return 235; // "combine_shuffle_concat"
1296 case 'v': // 1 string to match.
1297 if (memcmp(RuleIdentifier.data()+17, "ector", 5) != 0)
1298 break;
1299 return 273; // "combine_shuffle_vector"
1300 }
1301 break;
1302 case 'n': // 1 string to match.
1303 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1304 break;
1305 return 192; // "constant_fold_fp_binop"
1306 }
1307 break;
1308 case 'f': // 4 strings to match.
1309 switch (RuleIdentifier[1]) {
1310 default: break;
1311 case 'o': // 1 string to match.
1312 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1313 break;
1314 return 208; // "fold_binop_into_select"
1315 case 'u': // 3 strings to match.
1316 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1317 break;
1318 switch (RuleIdentifier[13]) {
1319 default: break;
1320 case 'l': // 1 string to match.
1321 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1322 break;
1323 return 180; // "funnel_shift_left_zero"
1324 case 'o': // 1 string to match.
1325 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1326 break;
1327 return 181; // "funnel_shift_overshift"
1328 case 't': // 1 string to match.
1329 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1330 break;
1331 return 178; // "funnel_shift_to_rotate"
1332 }
1333 break;
1334 }
1335 break;
1336 case 'i': // 1 string to match.
1337 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1338 break;
1339 return 121; // "icmp_to_lhs_known_bits"
1340 case 'm': // 1 string to match.
1341 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1342 break;
1343 return 250; // "match_subo_no_overflow"
1344 case 'p': // 1 string to match.
1345 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1346 break;
1347 return 84; // "propagate_undef_any_op"
1348 case 'r': // 2 strings to match.
1349 switch (RuleIdentifier[1]) {
1350 default: break;
1351 case 'e': // 1 string to match.
1352 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1353 break;
1354 return 198; // "redundant_neg_operands"
1355 case 'i': // 1 string to match.
1356 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1357 break;
1358 return 99; // "right_identity_one_int"
1359 }
1360 break;
1361 case 's': // 1 string to match.
1362 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1363 break;
1364 return 125; // "shl_ashr_to_sext_inreg"
1365 case 't': // 1 string to match.
1366 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1367 break;
1368 return 103; // "trunc_buildvector_fold"
1369 }
1370 break;
1371 case 23: // 6 strings to match.
1372 switch (RuleIdentifier[0]) {
1373 default: break;
1374 case 'b': // 1 string to match.
1375 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1376 break;
1377 return 63; // "buildvector_of_truncate"
1378 case 'f': // 1 string to match.
1379 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1380 break;
1381 return 179; // "funnel_shift_right_zero"
1382 case 'i': // 2 strings to match.
1383 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1384 break;
1385 switch (RuleIdentifier[21]) {
1386 default: break;
1387 case 's': // 1 string to match.
1388 if (RuleIdentifier[22] != 'i')
1389 break;
1390 return 162; // "itof_const_zero_fold_si"
1391 case 'u': // 1 string to match.
1392 if (RuleIdentifier[22] != 'i')
1393 break;
1394 return 163; // "itof_const_zero_fold_ui"
1395 }
1396 break;
1397 case 'p': // 1 string to match.
1398 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1399 break;
1400 return 85; // "propagate_undef_all_ops"
1401 case 't': // 1 string to match.
1402 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1403 break;
1404 return 254; // "truncusatu_to_fptouisat"
1405 }
1406 break;
1407 case 24: // 10 strings to match.
1408 switch (RuleIdentifier[0]) {
1409 default: break;
1410 case 'b': // 1 string to match.
1411 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1412 break;
1413 return 80; // "binop_left_undef_to_zero"
1414 case 'c': // 4 strings to match.
1415 switch (RuleIdentifier[1]) {
1416 default: break;
1417 case 'o': // 1 string to match.
1418 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1419 break;
1420 return 161; // "constant_fold_fnearbyint"
1421 case 't': // 3 strings to match.
1422 switch (RuleIdentifier[2]) {
1423 default: break;
1424 case 'l': // 2 strings to match.
1425 if (memcmp(RuleIdentifier.data()+3, "z_", 2) != 0)
1426 break;
1427 switch (RuleIdentifier[5]) {
1428 default: break;
1429 case 't': // 1 string to match.
1430 if (memcmp(RuleIdentifier.data()+6, "o_ctlz_zero_poison", 18) != 0)
1431 break;
1432 return 258; // "ctlz_to_ctlz_zero_poison"
1433 case 'z': // 1 string to match.
1434 if (memcmp(RuleIdentifier.data()+6, "ero_poison_to_ctls", 18) != 0)
1435 break;
1436 return 257; // "ctlz_zero_poison_to_ctls"
1437 }
1438 break;
1439 case 't': // 1 string to match.
1440 if (memcmp(RuleIdentifier.data()+3, "z_to_cttz_zero_poison", 21) != 0)
1441 break;
1442 return 259; // "cttz_to_cttz_zero_poison"
1443 }
1444 break;
1445 }
1446 break;
1447 case 'm': // 1 string to match.
1448 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1449 break;
1450 return 29; // "match_extract_of_element"
1451 case 'n': // 1 string to match.
1452 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1453 break;
1454 return 129; // "narrow_binop_feeding_and"
1455 case 's': // 2 strings to match.
1456 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1457 break;
1458 switch (RuleIdentifier[11]) {
1459 default: break;
1460 case 'o': // 1 string to match.
1461 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1462 break;
1463 return 59; // "sext_inreg_of_sext_inreg"
1464 case 't': // 1 string to match.
1465 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1466 break;
1467 return 145; // "sext_inreg_to_zext_inreg"
1468 }
1469 break;
1470 case 'x': // 1 string to match.
1471 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1472 break;
1473 return 171; // "xor_of_and_with_same_reg"
1474 }
1475 break;
1476 case 25: // 9 strings to match.
1477 switch (RuleIdentifier[0]) {
1478 default: break;
1479 case 'b': // 3 strings to match.
1480 switch (RuleIdentifier[1]) {
1481 default: break;
1482 case 'i': // 2 strings to match.
1483 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1484 break;
1485 switch (RuleIdentifier[22]) {
1486 default: break;
1487 case 'a': // 1 string to match.
1488 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1489 break;
1490 return 188; // "bitfield_extract_from_and"
1491 case 's': // 1 string to match.
1492 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1493 break;
1494 return 189; // "bitfield_extract_from_shr"
1495 }
1496 break;
1497 case 'u': // 1 string to match.
1498 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1499 break;
1500 return 102; // "buildvector_identity_fold"
1501 }
1502 break;
1503 case 'c': // 1 string to match.
1504 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1505 break;
1506 return 236; // "combine_shuffle_undef_rhs"
1507 case 'e': // 1 string to match.
1508 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1509 break;
1510 return 72; // "extract_vec_elt_build_vec"
1511 case 'n': // 1 string to match.
1512 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1513 break;
1514 return 126; // "neg_and_one_to_sext_inreg"
1515 case 'r': // 3 strings to match.
1516 switch (RuleIdentifier[1]) {
1517 default: break;
1518 case 'e': // 2 strings to match.
1519 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
1520 break;
1521 switch (RuleIdentifier[10]) {
1522 default: break;
1523 case 'a': // 1 string to match.
1524 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1525 break;
1526 return 138; // "redundant_aext_sext_inreg"
1527 case 'z': // 1 string to match.
1528 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1529 break;
1530 return 137; // "redundant_zext_sext_inreg"
1531 }
1532 break;
1533 case 'i': // 1 string to match.
1534 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
1535 break;
1536 return 110; // "right_identity_neg_one_fp"
1537 }
1538 break;
1539 }
1540 break;
1541 case 26: // 6 strings to match.
1542 switch (RuleIdentifier[0]) {
1543 default: break;
1544 case 'b': // 2 strings to match.
1545 if (RuleIdentifier[1] != 'i')
1546 break;
1547 switch (RuleIdentifier[2]) {
1548 default: break;
1549 case 'n': // 1 string to match.
1550 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1551 break;
1552 return 81; // "binop_right_undef_to_undef"
1553 case 't': // 1 string to match.
1554 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1555 break;
1556 return 106; // "bitcast_bitcast_to_bitcast"
1557 }
1558 break;
1559 case 'c': // 2 strings to match.
1560 if (RuleIdentifier[1] != 'o')
1561 break;
1562 switch (RuleIdentifier[2]) {
1563 default: break;
1564 case 'm': // 1 string to match.
1565 if (memcmp(RuleIdentifier.data()+3, "mute_fp_constant_to_rhs", 23) != 0)
1566 break;
1567 return 221; // "commute_fp_constant_to_rhs"
1568 case 'n': // 1 string to match.
1569 if (memcmp(RuleIdentifier.data()+3, "stant_fold_unary_int_op", 23) != 0)
1570 break;
1571 return 195; // "constant_fold_unary_int_op"
1572 }
1573 break;
1574 case 'f': // 1 string to match.
1575 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1576 break;
1577 return 177; // "funnel_shift_from_or_shift"
1578 case 'r': // 1 string to match.
1579 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1580 break;
1581 return 108; // "right_identity_neg_zero_fp"
1582 }
1583 break;
1584 case 27: // 6 strings to match.
1585 switch (RuleIdentifier[0]) {
1586 default: break;
1587 case 'c': // 2 strings to match.
1588 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1589 break;
1590 switch (RuleIdentifier[3]) {
1591 default: break;
1592 case 'b': // 1 string to match.
1593 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1594 break;
1595 return 238; // "combine_use_vector_truncate"
1596 case 'm': // 1 string to match.
1597 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1598 break;
1599 return 220; // "commute_int_constant_to_rhs"
1600 }
1601 break;
1602 case 'd': // 1 string to match.
1603 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1604 break;
1605 return 123; // "double_icmp_zero_or_combine"
1606 case 'r': // 1 string to match.
1607 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1608 break;
1609 return 124; // "redundant_binop_in_equality"
1610 case 't': // 1 string to match.
1611 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1612 break;
1613 return 104; // "trunc_lshr_buildvector_fold"
1614 case 'u': // 1 string to match.
1615 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1616 break;
1617 return 239; // "unmerge_anyext_build_vector"
1618 }
1619 break;
1620 case 28: // 4 strings to match.
1621 switch (RuleIdentifier[0]) {
1622 default: break;
1623 case 'd': // 1 string to match.
1624 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1625 break;
1626 return 122; // "double_icmp_zero_and_combine"
1627 case 'o': // 1 string to match.
1628 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1629 break;
1630 return 148; // "opt_brcond_by_inverting_cond"
1631 case 'p': // 1 string to match.
1632 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1633 break;
1634 return 86; // "propagate_undef_shuffle_mask"
1635 case 's': // 1 string to match.
1636 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1637 break;
1638 return 174; // "shift_of_shifted_logic_chain"
1639 }
1640 break;
1641 case 29: // 6 strings to match.
1642 switch (RuleIdentifier[0]) {
1643 default: break;
1644 case 'b': // 1 string to match.
1645 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1646 break;
1647 return 190; // "bitfield_extract_from_shr_and"
1648 case 'c': // 4 strings to match.
1649 if (RuleIdentifier[1] != 'o')
1650 break;
1651 switch (RuleIdentifier[2]) {
1652 default: break;
1653 case 'm': // 2 strings to match.
1654 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1655 break;
1656 switch (RuleIdentifier[8]) {
1657 default: break;
1658 case 'e': // 1 string to match.
1659 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1660 break;
1661 return 76; // "combine_extracted_vector_load"
1662 case 's': // 1 string to match.
1663 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1664 break;
1665 return 237; // "combine_shuffle_disjoint_mask"
1666 }
1667 break;
1668 case 'n': // 2 strings to match.
1669 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1670 break;
1671 switch (RuleIdentifier[24]) {
1672 default: break;
1673 case 'r': // 1 string to match.
1674 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1675 break;
1676 return 158; // "constant_fold_intrinsic_round"
1677 case 't': // 1 string to match.
1678 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1679 break;
1680 return 157; // "constant_fold_intrinsic_trunc"
1681 }
1682 break;
1683 }
1684 break;
1685 case 'i': // 1 string to match.
1686 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1687 break;
1688 return 120; // "icmp_to_true_false_known_bits"
1689 }
1690 break;
1691 case 30: // 2 strings to match.
1692 switch (RuleIdentifier[0]) {
1693 default: break;
1694 case 'f': // 1 string to match.
1695 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1696 break;
1697 return 47; // "freeze_of_non_undef_non_poison"
1698 case 'r': // 1 string to match.
1699 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1700 break;
1701 return 109; // "right_identity_neg_zero_fp_nsz"
1702 }
1703 break;
1704 case 31: // 2 strings to match.
1705 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1706 break;
1707 switch (RuleIdentifier[22]) {
1708 default: break;
1709 case 'e': // 1 string to match.
1710 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1711 break;
1712 return 28; // "insert_vector_element_elt_undef"
1713 case 'i': // 1 string to match.
1714 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1715 break;
1716 return 27; // "insert_vector_element_idx_undef"
1717 }
1718 break;
1719 case 32: // 4 strings to match.
1720 switch (RuleIdentifier[0]) {
1721 default: break;
1722 case 'b': // 1 string to match.
1723 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1724 break;
1725 return 187; // "bitfield_extract_from_sext_inreg"
1726 case 'c': // 2 strings to match.
1727 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1728 break;
1729 switch (RuleIdentifier[9]) {
1730 default: break;
1731 case 'a': // 1 string to match.
1732 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1733 break;
1734 return 200; // "combine_fadd_fmul_to_fmad_or_fma"
1735 case 's': // 1 string to match.
1736 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1737 break;
1738 return 204; // "combine_fsub_fmul_to_fmad_or_fma"
1739 }
1740 break;
1741 case 'e': // 1 string to match.
1742 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1743 break;
1744 return 31; // "extract_vector_element_not_const"
1745 }
1746 break;
1747 case 33: // 3 strings to match.
1748 switch (RuleIdentifier[0]) {
1749 default: break;
1750 case 'c': // 1 string to match.
1751 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
1752 break;
1753 return 159; // "constant_fold_intrinsic_roundeven"
1754 case 'r': // 2 strings to match.
1755 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1756 break;
1757 switch (RuleIdentifier[10]) {
1758 default: break;
1759 case 'a': // 1 string to match.
1760 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1761 break;
1762 return 140; // "redundant_aext_unmerge_sext_inreg"
1763 case 'z': // 1 string to match.
1764 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1765 break;
1766 return 139; // "redundant_zext_unmerge_sext_inreg"
1767 }
1768 break;
1769 }
1770 break;
1771 case 34: // 1 string to match.
1772 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1773 break;
1774 return 73; // "extract_all_elts_from_build_vector"
1775 case 35: // 1 string to match.
1776 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1777 break;
1778 return 33; // "extract_vector_element_build_vector"
1779 case 36: // 4 strings to match.
1780 switch (RuleIdentifier[0]) {
1781 default: break;
1782 case 'c': // 2 strings to match.
1783 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1784 break;
1785 switch (RuleIdentifier[8]) {
1786 default: break;
1787 case 'f': // 1 string to match.
1788 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1789 break;
1790 return 202; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1791 case 'i': // 1 string to match.
1792 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1793 break;
1794 return 71; // "combine_insert_vec_elts_build_vector"
1795 }
1796 break;
1797 case 'i': // 1 string to match.
1798 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1799 break;
1800 return 88; // "insert_extract_vec_elt_out_of_bounds"
1801 case 'm': // 1 string to match.
1802 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1803 break;
1804 return 26; // "match_extract_of_element_undef_index"
1805 }
1806 break;
1807 case 37: // 4 strings to match.
1808 switch (RuleIdentifier[0]) {
1809 default: break;
1810 case 'c': // 1 string to match.
1811 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1812 break;
1813 return 205; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1814 case 'e': // 1 string to match.
1815 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1816 break;
1817 return 41; // "extract_vector_element_shuffle_vector"
1818 case 'h': // 1 string to match.
1819 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1820 break;
1821 return 113; // "hoist_logic_op_with_same_opcode_hands"
1822 case 'm': // 1 string to match.
1823 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1824 break;
1825 return 25; // "match_extract_of_element_undef_vector"
1826 }
1827 break;
1828 case 38: // 2 strings to match.
1829 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1830 break;
1831 switch (RuleIdentifier[9]) {
1832 default: break;
1833 case 'a': // 1 string to match.
1834 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1835 break;
1836 return 201; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1837 case 's': // 1 string to match.
1838 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1839 break;
1840 return 206; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1841 }
1842 break;
1843 case 40: // 1 string to match.
1844 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1845 break;
1846 return 32; // "extract_vector_element_different_indices"
1847 case 42: // 9 strings to match.
1848 switch (RuleIdentifier[0]) {
1849 default: break;
1850 case 'c': // 1 string to match.
1851 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1852 break;
1853 return 203; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1854 case 'e': // 7 strings to match.
1855 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1856 break;
1857 switch (RuleIdentifier[41]) {
1858 default: break;
1859 case '2': // 1 string to match.
1860 return 34; // "extract_vector_element_build_vector_trunc2"
1861 case '3': // 1 string to match.
1862 return 35; // "extract_vector_element_build_vector_trunc3"
1863 case '4': // 1 string to match.
1864 return 36; // "extract_vector_element_build_vector_trunc4"
1865 case '5': // 1 string to match.
1866 return 37; // "extract_vector_element_build_vector_trunc5"
1867 case '6': // 1 string to match.
1868 return 38; // "extract_vector_element_build_vector_trunc6"
1869 case '7': // 1 string to match.
1870 return 39; // "extract_vector_element_build_vector_trunc7"
1871 case '8': // 1 string to match.
1872 return 40; // "extract_vector_element_build_vector_trunc8"
1873 }
1874 break;
1875 case 'f': // 1 string to match.
1876 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1877 break;
1878 return 182; // "funnel_shift_or_shift_to_funnel_shift_left"
1879 }
1880 break;
1881 case 43: // 2 strings to match.
1882 switch (RuleIdentifier[0]) {
1883 default: break;
1884 case 'c': // 1 string to match.
1885 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1886 break;
1887 return 207; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1888 case 'f': // 1 string to match.
1889 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1890 break;
1891 return 183; // "funnel_shift_or_shift_to_funnel_shift_right"
1892 }
1893 break;
1894 case 44: // 1 string to match.
1895 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1896 break;
1897 return 42; // "insert_vector_element_extract_vector_element"
1898 case 46: // 1 string to match.
1899 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1900 break;
1901 return 48; // "push_freeze_to_prevent_poison_from_propagating"
1902 }
1903#endif // ifndef NDEBUG
1904
1905 return std::nullopt;
1906}
1907static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1908 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1909 if (!RangePair.second.empty()) {
1910 const auto First = getRuleIdxForIdentifier(RangePair.first);
1911 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1912 if (!First || !Last)
1913 return std::nullopt;
1914 if (First >= Last)
1915 report_fatal_error("Beginning of range should be before end of range");
1916 return {{*First, *Last + 1}};
1917 }
1918 if (RangePair.first == "*") {
1919 return {{0, 291}};
1920 }
1921 const auto I = getRuleIdxForIdentifier(RangePair.first);
1922 if (!I)
1923 return std::nullopt;
1924 return {{*I, *I + 1}};
1925}
1926
1927bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1928 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1929 if (!MaybeRange)
1930 return false;
1931 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1932 DisabledRules.reset(I);
1933 return true;
1934}
1935
1936bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1937 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1938 if (!MaybeRange)
1939 return false;
1940 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1941 DisabledRules.set(I);
1942 return true;
1943}
1944
1945static std::vector<std::string> AArch64PreLegalizerCombinerOption;
1946static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption(
1947 "aarch64prelegalizercombiner-disable-rule",
1948 cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass"),
1949 cl::CommaSeparated,
1950 cl::Hidden,
1951 cl::cat(GICombinerOptionCategory),
1952 cl::callback([](const std::string &Str) {
1953 AArch64PreLegalizerCombinerOption.push_back(Str);
1954 }));
1955static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption(
1956 "aarch64prelegalizercombiner-only-enable-rule",
1957 cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones"),
1958 cl::Hidden,
1959 cl::cat(GICombinerOptionCategory),
1960 cl::callback([](const std::string &CommaSeparatedArg) {
1961 StringRef Str = CommaSeparatedArg;
1962 AArch64PreLegalizerCombinerOption.push_back("*");
1963 do {
1964 auto X = Str.split(",");
1965 AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str());
1966 Str = X.second;
1967 } while (!Str.empty());
1968 }));
1969
1970
1971bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1972 return !DisabledRules.test(RuleID);
1973}
1974bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1975 for (StringRef Identifier : AArch64PreLegalizerCombinerOption) {
1976 bool Enabled = Identifier.consume_front("!");
1977 if (Enabled && !setRuleEnabled(Identifier))
1978 return false;
1979 if (!Enabled && !setRuleDisabled(Identifier))
1980 return false;
1981 }
1982 return true;
1983}
1984
1985
1986#endif // GET_GICOMBINER_TYPES
1987
1988#ifdef GET_GICOMBINER_TYPES
1989
1990const unsigned MAX_SUBTARGET_PREDICATES = 1;
1991using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1992
1993#endif // GET_GICOMBINER_TYPES
1994
1995#ifdef GET_GICOMBINER_CLASS_MEMBERS
1996
1997 bool canMatchOpcode(unsigned Opc) const override;
1998
1999#endif // GET_GICOMBINER_CLASS_MEMBERS
2000
2001#ifdef GET_GICOMBINER_CLASS_MEMBERS
2002
2003PredicateBitset AvailableModuleFeatures;
2004mutable PredicateBitset AvailableFunctionFeatures;
2005PredicateBitset getAvailableFeatures() const {
2006 return AvailableModuleFeatures | AvailableFunctionFeatures;
2007}
2008PredicateBitset
2009computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
2010PredicateBitset
2011computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
2012 const MachineFunction *MF) const;
2013void setupGeneratedPerFunctionState(MachineFunction &MF) override;
2014
2015#endif // GET_GICOMBINER_CLASS_MEMBERS
2016
2017#ifdef GET_GICOMBINER_CLASS_MEMBERS
2018
2019 mutable MatcherState State;
2020 typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
2021 typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
2022 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
2023 static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
2024 static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
2025 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
2026 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
2027 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
2028 const uint8_t *getMatchTable() const override;
2029 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
2030 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
2031 bool testSimplePredicate(unsigned PredicateID) const override;
2032 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
2033
2034#endif // GET_GICOMBINER_CLASS_MEMBERS
2035
2036#ifdef GET_GICOMBINER_IMPL
2037
2038// LLT Objects.
2039enum {
2040 GILLT_s1,
2041};
2042const static size_t NumTypeObjects = 1;
2043const static LLT TypeObjects[] = {
2044 LLT::scalar(1),
2045};
2046
2047// Bits for subtarget features that participate in instruction matching.
2048enum SubtargetFeatureBits : uint8_t {
2049 Feature_HasDotProdBit = 0,
2050};
2051
2052PredicateBitset AArch64PreLegalizerCombinerImpl::
2053computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
2054 PredicateBitset Features{};
2055 if (Subtarget->hasDotProd())
2056 Features.set(Feature_HasDotProdBit);
2057 return Features;
2058}
2059
2060void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
2061 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
2062}
2063PredicateBitset AArch64PreLegalizerCombinerImpl::
2064computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
2065 PredicateBitset Features{};
2066 return Features;
2067}
2068
2069// Feature bitsets.
2070enum {
2071 GIFBS_Invalid,
2072 GIFBS_HasDotProd,
2073};
2074constexpr static PredicateBitset FeatureBitsets[] {
2075 {}, // GIFBS_Invalid
2076 {Feature_HasDotProdBit, },
2077};
2078
2079// ComplexPattern predicates.
2080enum {
2081 GICP_Invalid,
2082};
2083// See constructor for table contents
2084
2085AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn
2086AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
2087 nullptr, // GICP_Invalid
2088};
2089
2090enum {
2091 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
2092 GICXXPred_MI_Predicate_GICombiner1,
2093 GICXXPred_MI_Predicate_GICombiner2,
2094 GICXXPred_MI_Predicate_GICombiner3,
2095 GICXXPred_MI_Predicate_GICombiner4,
2096 GICXXPred_MI_Predicate_GICombiner5,
2097 GICXXPred_MI_Predicate_GICombiner6,
2098 GICXXPred_MI_Predicate_GICombiner7,
2099 GICXXPred_MI_Predicate_GICombiner8,
2100 GICXXPred_MI_Predicate_GICombiner9,
2101 GICXXPred_MI_Predicate_GICombiner10,
2102 GICXXPred_MI_Predicate_GICombiner11,
2103 GICXXPred_MI_Predicate_GICombiner12,
2104 GICXXPred_MI_Predicate_GICombiner13,
2105 GICXXPred_MI_Predicate_GICombiner14,
2106 GICXXPred_MI_Predicate_GICombiner15,
2107 GICXXPred_MI_Predicate_GICombiner16,
2108 GICXXPred_MI_Predicate_GICombiner17,
2109 GICXXPred_MI_Predicate_GICombiner18,
2110 GICXXPred_MI_Predicate_GICombiner19,
2111 GICXXPred_MI_Predicate_GICombiner20,
2112 GICXXPred_MI_Predicate_GICombiner21,
2113 GICXXPred_MI_Predicate_GICombiner22,
2114 GICXXPred_MI_Predicate_GICombiner23,
2115 GICXXPred_MI_Predicate_GICombiner24,
2116};
2117bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
2118 switch (PredicateID) {
2119 case GICXXPred_MI_Predicate_GICombiner0: {
2120 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2121 }
2122 case GICXXPred_MI_Predicate_GICombiner1: {
2123 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
2124 }
2125 case GICXXPred_MI_Predicate_GICombiner2: {
2126 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2127 }
2128 case GICXXPred_MI_Predicate_GICombiner3: {
2129 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2130 }
2131 case GICXXPred_MI_Predicate_GICombiner4: {
2132 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
2133 }
2134 case GICXXPred_MI_Predicate_GICombiner5: {
2135 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
2136 }
2137 case GICXXPred_MI_Predicate_GICombiner6: {
2138 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
2139 }
2140 case GICXXPred_MI_Predicate_GICombiner7: {
2141 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
2142 }
2143 case GICXXPred_MI_Predicate_GICombiner8: {
2144 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
2145 }
2146 case GICXXPred_MI_Predicate_GICombiner9: {
2147 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
2148 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2149 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2150 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2151 }
2152 case GICXXPred_MI_Predicate_GICombiner10: {
2153 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
2154 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2155 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2156 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2157 }
2158 case GICXXPred_MI_Predicate_GICombiner11: {
2159 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2160 Helper.isLegalOrBeforeLegalizer({
2161 TargetOpcode::G_SEXT_INREG,
2162 {MRI.getType(State.MIs[1]->getOperand(1).getReg())},
2163 {},
2164 {1}
2165 });
2166 }
2167 case GICXXPred_MI_Predicate_GICombiner12: {
2168 return MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
2169 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2170 }
2171 case GICXXPred_MI_Predicate_GICombiner13: {
2172 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
2173 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2174 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
2175 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
2176 llvm_unreachable("GICombiner13 should have returned");
2177 }
2178 case GICXXPred_MI_Predicate_GICombiner14: {
2179 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
2180 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2181 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2182 }
2183 case GICXXPred_MI_Predicate_GICombiner15: {
2184 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
2185 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2186 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2187 }
2188 case GICXXPred_MI_Predicate_GICombiner16: {
2189 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
2190 }
2191 case GICXXPred_MI_Predicate_GICombiner17: {
2192 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
2193 }
2194 case GICXXPred_MI_Predicate_GICombiner18: {
2195 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2196 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2197 }
2198 case GICXXPred_MI_Predicate_GICombiner19: {
2199 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2200 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2201 }
2202 case GICXXPred_MI_Predicate_GICombiner20: {
2203 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
2204 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2205 }
2206 case GICXXPred_MI_Predicate_GICombiner21: {
2207 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_UAVGFLOOR);
2208 }
2209 case GICXXPred_MI_Predicate_GICombiner22: {
2210 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_SAVGFLOOR);
2211 }
2212 case GICXXPred_MI_Predicate_GICombiner23: {
2213 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_UAVGCEIL);
2214 }
2215 case GICXXPred_MI_Predicate_GICombiner24: {
2216 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_SAVGCEIL);
2217 }
2218 }
2219 llvm_unreachable("Unknown predicate");
2220 return false;
2221}
2222bool AArch64PreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
2223 llvm_unreachable("Unknown predicate");
2224 return false;
2225}
2226bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
2227 llvm_unreachable("Unknown predicate");
2228 return false;
2229}
2230bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2231 llvm_unreachable("Unknown predicate");
2232 return false;
2233}
2234bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2235 llvm_unreachable("Unknown predicate");
2236 return false;
2237}
2238enum {
2239 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2240 GICXXPred_Simple_IsRule1Enabled,
2241 GICXXPred_Simple_IsRule2Enabled,
2242 GICXXPred_Simple_IsRule3Enabled,
2243 GICXXPred_Simple_IsRule4Enabled,
2244 GICXXPred_Simple_IsRule5Enabled,
2245 GICXXPred_Simple_IsRule6Enabled,
2246 GICXXPred_Simple_IsRule7Enabled,
2247 GICXXPred_Simple_IsRule8Enabled,
2248 GICXXPred_Simple_IsRule9Enabled,
2249 GICXXPred_Simple_IsRule10Enabled,
2250 GICXXPred_Simple_IsRule11Enabled,
2251 GICXXPred_Simple_IsRule12Enabled,
2252 GICXXPred_Simple_IsRule13Enabled,
2253 GICXXPred_Simple_IsRule14Enabled,
2254 GICXXPred_Simple_IsRule15Enabled,
2255 GICXXPred_Simple_IsRule16Enabled,
2256 GICXXPred_Simple_IsRule17Enabled,
2257 GICXXPred_Simple_IsRule18Enabled,
2258 GICXXPred_Simple_IsRule19Enabled,
2259 GICXXPred_Simple_IsRule20Enabled,
2260 GICXXPred_Simple_IsRule21Enabled,
2261 GICXXPred_Simple_IsRule22Enabled,
2262 GICXXPred_Simple_IsRule23Enabled,
2263 GICXXPred_Simple_IsRule24Enabled,
2264 GICXXPred_Simple_IsRule25Enabled,
2265 GICXXPred_Simple_IsRule26Enabled,
2266 GICXXPred_Simple_IsRule27Enabled,
2267 GICXXPred_Simple_IsRule28Enabled,
2268 GICXXPred_Simple_IsRule29Enabled,
2269 GICXXPred_Simple_IsRule30Enabled,
2270 GICXXPred_Simple_IsRule31Enabled,
2271 GICXXPred_Simple_IsRule32Enabled,
2272 GICXXPred_Simple_IsRule33Enabled,
2273 GICXXPred_Simple_IsRule34Enabled,
2274 GICXXPred_Simple_IsRule35Enabled,
2275 GICXXPred_Simple_IsRule36Enabled,
2276 GICXXPred_Simple_IsRule37Enabled,
2277 GICXXPred_Simple_IsRule38Enabled,
2278 GICXXPred_Simple_IsRule39Enabled,
2279 GICXXPred_Simple_IsRule40Enabled,
2280 GICXXPred_Simple_IsRule41Enabled,
2281 GICXXPred_Simple_IsRule42Enabled,
2282 GICXXPred_Simple_IsRule43Enabled,
2283 GICXXPred_Simple_IsRule44Enabled,
2284 GICXXPred_Simple_IsRule45Enabled,
2285 GICXXPred_Simple_IsRule46Enabled,
2286 GICXXPred_Simple_IsRule47Enabled,
2287 GICXXPred_Simple_IsRule48Enabled,
2288 GICXXPred_Simple_IsRule49Enabled,
2289 GICXXPred_Simple_IsRule50Enabled,
2290 GICXXPred_Simple_IsRule51Enabled,
2291 GICXXPred_Simple_IsRule52Enabled,
2292 GICXXPred_Simple_IsRule53Enabled,
2293 GICXXPred_Simple_IsRule54Enabled,
2294 GICXXPred_Simple_IsRule55Enabled,
2295 GICXXPred_Simple_IsRule56Enabled,
2296 GICXXPred_Simple_IsRule57Enabled,
2297 GICXXPred_Simple_IsRule58Enabled,
2298 GICXXPred_Simple_IsRule59Enabled,
2299 GICXXPred_Simple_IsRule60Enabled,
2300 GICXXPred_Simple_IsRule61Enabled,
2301 GICXXPred_Simple_IsRule62Enabled,
2302 GICXXPred_Simple_IsRule63Enabled,
2303 GICXXPred_Simple_IsRule64Enabled,
2304 GICXXPred_Simple_IsRule65Enabled,
2305 GICXXPred_Simple_IsRule66Enabled,
2306 GICXXPred_Simple_IsRule67Enabled,
2307 GICXXPred_Simple_IsRule68Enabled,
2308 GICXXPred_Simple_IsRule69Enabled,
2309 GICXXPred_Simple_IsRule70Enabled,
2310 GICXXPred_Simple_IsRule71Enabled,
2311 GICXXPred_Simple_IsRule72Enabled,
2312 GICXXPred_Simple_IsRule73Enabled,
2313 GICXXPred_Simple_IsRule74Enabled,
2314 GICXXPred_Simple_IsRule75Enabled,
2315 GICXXPred_Simple_IsRule76Enabled,
2316 GICXXPred_Simple_IsRule77Enabled,
2317 GICXXPred_Simple_IsRule78Enabled,
2318 GICXXPred_Simple_IsRule79Enabled,
2319 GICXXPred_Simple_IsRule80Enabled,
2320 GICXXPred_Simple_IsRule81Enabled,
2321 GICXXPred_Simple_IsRule82Enabled,
2322 GICXXPred_Simple_IsRule83Enabled,
2323 GICXXPred_Simple_IsRule84Enabled,
2324 GICXXPred_Simple_IsRule85Enabled,
2325 GICXXPred_Simple_IsRule86Enabled,
2326 GICXXPred_Simple_IsRule87Enabled,
2327 GICXXPred_Simple_IsRule88Enabled,
2328 GICXXPred_Simple_IsRule89Enabled,
2329 GICXXPred_Simple_IsRule90Enabled,
2330 GICXXPred_Simple_IsRule91Enabled,
2331 GICXXPred_Simple_IsRule92Enabled,
2332 GICXXPred_Simple_IsRule93Enabled,
2333 GICXXPred_Simple_IsRule94Enabled,
2334 GICXXPred_Simple_IsRule95Enabled,
2335 GICXXPred_Simple_IsRule96Enabled,
2336 GICXXPred_Simple_IsRule97Enabled,
2337 GICXXPred_Simple_IsRule98Enabled,
2338 GICXXPred_Simple_IsRule99Enabled,
2339 GICXXPred_Simple_IsRule100Enabled,
2340 GICXXPred_Simple_IsRule101Enabled,
2341 GICXXPred_Simple_IsRule102Enabled,
2342 GICXXPred_Simple_IsRule103Enabled,
2343 GICXXPred_Simple_IsRule104Enabled,
2344 GICXXPred_Simple_IsRule105Enabled,
2345 GICXXPred_Simple_IsRule106Enabled,
2346 GICXXPred_Simple_IsRule107Enabled,
2347 GICXXPred_Simple_IsRule108Enabled,
2348 GICXXPred_Simple_IsRule109Enabled,
2349 GICXXPred_Simple_IsRule110Enabled,
2350 GICXXPred_Simple_IsRule111Enabled,
2351 GICXXPred_Simple_IsRule112Enabled,
2352 GICXXPred_Simple_IsRule113Enabled,
2353 GICXXPred_Simple_IsRule114Enabled,
2354 GICXXPred_Simple_IsRule115Enabled,
2355 GICXXPred_Simple_IsRule116Enabled,
2356 GICXXPred_Simple_IsRule117Enabled,
2357 GICXXPred_Simple_IsRule118Enabled,
2358 GICXXPred_Simple_IsRule119Enabled,
2359 GICXXPred_Simple_IsRule120Enabled,
2360 GICXXPred_Simple_IsRule121Enabled,
2361 GICXXPred_Simple_IsRule122Enabled,
2362 GICXXPred_Simple_IsRule123Enabled,
2363 GICXXPred_Simple_IsRule124Enabled,
2364 GICXXPred_Simple_IsRule125Enabled,
2365 GICXXPred_Simple_IsRule126Enabled,
2366 GICXXPred_Simple_IsRule127Enabled,
2367 GICXXPred_Simple_IsRule128Enabled,
2368 GICXXPred_Simple_IsRule129Enabled,
2369 GICXXPred_Simple_IsRule130Enabled,
2370 GICXXPred_Simple_IsRule131Enabled,
2371 GICXXPred_Simple_IsRule132Enabled,
2372 GICXXPred_Simple_IsRule133Enabled,
2373 GICXXPred_Simple_IsRule134Enabled,
2374 GICXXPred_Simple_IsRule135Enabled,
2375 GICXXPred_Simple_IsRule136Enabled,
2376 GICXXPred_Simple_IsRule137Enabled,
2377 GICXXPred_Simple_IsRule138Enabled,
2378 GICXXPred_Simple_IsRule139Enabled,
2379 GICXXPred_Simple_IsRule140Enabled,
2380 GICXXPred_Simple_IsRule141Enabled,
2381 GICXXPred_Simple_IsRule142Enabled,
2382 GICXXPred_Simple_IsRule143Enabled,
2383 GICXXPred_Simple_IsRule144Enabled,
2384 GICXXPred_Simple_IsRule145Enabled,
2385 GICXXPred_Simple_IsRule146Enabled,
2386 GICXXPred_Simple_IsRule147Enabled,
2387 GICXXPred_Simple_IsRule148Enabled,
2388 GICXXPred_Simple_IsRule149Enabled,
2389 GICXXPred_Simple_IsRule150Enabled,
2390 GICXXPred_Simple_IsRule151Enabled,
2391 GICXXPred_Simple_IsRule152Enabled,
2392 GICXXPred_Simple_IsRule153Enabled,
2393 GICXXPred_Simple_IsRule154Enabled,
2394 GICXXPred_Simple_IsRule155Enabled,
2395 GICXXPred_Simple_IsRule156Enabled,
2396 GICXXPred_Simple_IsRule157Enabled,
2397 GICXXPred_Simple_IsRule158Enabled,
2398 GICXXPred_Simple_IsRule159Enabled,
2399 GICXXPred_Simple_IsRule160Enabled,
2400 GICXXPred_Simple_IsRule161Enabled,
2401 GICXXPred_Simple_IsRule162Enabled,
2402 GICXXPred_Simple_IsRule163Enabled,
2403 GICXXPred_Simple_IsRule164Enabled,
2404 GICXXPred_Simple_IsRule165Enabled,
2405 GICXXPred_Simple_IsRule166Enabled,
2406 GICXXPred_Simple_IsRule167Enabled,
2407 GICXXPred_Simple_IsRule168Enabled,
2408 GICXXPred_Simple_IsRule169Enabled,
2409 GICXXPred_Simple_IsRule170Enabled,
2410 GICXXPred_Simple_IsRule171Enabled,
2411 GICXXPred_Simple_IsRule172Enabled,
2412 GICXXPred_Simple_IsRule173Enabled,
2413 GICXXPred_Simple_IsRule174Enabled,
2414 GICXXPred_Simple_IsRule175Enabled,
2415 GICXXPred_Simple_IsRule176Enabled,
2416 GICXXPred_Simple_IsRule177Enabled,
2417 GICXXPred_Simple_IsRule178Enabled,
2418 GICXXPred_Simple_IsRule179Enabled,
2419 GICXXPred_Simple_IsRule180Enabled,
2420 GICXXPred_Simple_IsRule181Enabled,
2421 GICXXPred_Simple_IsRule182Enabled,
2422 GICXXPred_Simple_IsRule183Enabled,
2423 GICXXPred_Simple_IsRule184Enabled,
2424 GICXXPred_Simple_IsRule185Enabled,
2425 GICXXPred_Simple_IsRule186Enabled,
2426 GICXXPred_Simple_IsRule187Enabled,
2427 GICXXPred_Simple_IsRule188Enabled,
2428 GICXXPred_Simple_IsRule189Enabled,
2429 GICXXPred_Simple_IsRule190Enabled,
2430 GICXXPred_Simple_IsRule191Enabled,
2431 GICXXPred_Simple_IsRule192Enabled,
2432 GICXXPred_Simple_IsRule193Enabled,
2433 GICXXPred_Simple_IsRule194Enabled,
2434 GICXXPred_Simple_IsRule195Enabled,
2435 GICXXPred_Simple_IsRule196Enabled,
2436 GICXXPred_Simple_IsRule197Enabled,
2437 GICXXPred_Simple_IsRule198Enabled,
2438 GICXXPred_Simple_IsRule199Enabled,
2439 GICXXPred_Simple_IsRule200Enabled,
2440 GICXXPred_Simple_IsRule201Enabled,
2441 GICXXPred_Simple_IsRule202Enabled,
2442 GICXXPred_Simple_IsRule203Enabled,
2443 GICXXPred_Simple_IsRule204Enabled,
2444 GICXXPred_Simple_IsRule205Enabled,
2445 GICXXPred_Simple_IsRule206Enabled,
2446 GICXXPred_Simple_IsRule207Enabled,
2447 GICXXPred_Simple_IsRule208Enabled,
2448 GICXXPred_Simple_IsRule209Enabled,
2449 GICXXPred_Simple_IsRule210Enabled,
2450 GICXXPred_Simple_IsRule211Enabled,
2451 GICXXPred_Simple_IsRule212Enabled,
2452 GICXXPred_Simple_IsRule213Enabled,
2453 GICXXPred_Simple_IsRule214Enabled,
2454 GICXXPred_Simple_IsRule215Enabled,
2455 GICXXPred_Simple_IsRule216Enabled,
2456 GICXXPred_Simple_IsRule217Enabled,
2457 GICXXPred_Simple_IsRule218Enabled,
2458 GICXXPred_Simple_IsRule219Enabled,
2459 GICXXPred_Simple_IsRule220Enabled,
2460 GICXXPred_Simple_IsRule221Enabled,
2461 GICXXPred_Simple_IsRule222Enabled,
2462 GICXXPred_Simple_IsRule223Enabled,
2463 GICXXPred_Simple_IsRule224Enabled,
2464 GICXXPred_Simple_IsRule225Enabled,
2465 GICXXPred_Simple_IsRule226Enabled,
2466 GICXXPred_Simple_IsRule227Enabled,
2467 GICXXPred_Simple_IsRule228Enabled,
2468 GICXXPred_Simple_IsRule229Enabled,
2469 GICXXPred_Simple_IsRule230Enabled,
2470 GICXXPred_Simple_IsRule231Enabled,
2471 GICXXPred_Simple_IsRule232Enabled,
2472 GICXXPred_Simple_IsRule233Enabled,
2473 GICXXPred_Simple_IsRule234Enabled,
2474 GICXXPred_Simple_IsRule235Enabled,
2475 GICXXPred_Simple_IsRule236Enabled,
2476 GICXXPred_Simple_IsRule237Enabled,
2477 GICXXPred_Simple_IsRule238Enabled,
2478 GICXXPred_Simple_IsRule239Enabled,
2479 GICXXPred_Simple_IsRule240Enabled,
2480 GICXXPred_Simple_IsRule241Enabled,
2481 GICXXPred_Simple_IsRule242Enabled,
2482 GICXXPred_Simple_IsRule243Enabled,
2483 GICXXPred_Simple_IsRule244Enabled,
2484 GICXXPred_Simple_IsRule245Enabled,
2485 GICXXPred_Simple_IsRule246Enabled,
2486 GICXXPred_Simple_IsRule247Enabled,
2487 GICXXPred_Simple_IsRule248Enabled,
2488 GICXXPred_Simple_IsRule249Enabled,
2489 GICXXPred_Simple_IsRule250Enabled,
2490 GICXXPred_Simple_IsRule251Enabled,
2491 GICXXPred_Simple_IsRule252Enabled,
2492 GICXXPred_Simple_IsRule253Enabled,
2493 GICXXPred_Simple_IsRule254Enabled,
2494 GICXXPred_Simple_IsRule255Enabled,
2495 GICXXPred_Simple_IsRule256Enabled,
2496 GICXXPred_Simple_IsRule257Enabled,
2497 GICXXPred_Simple_IsRule258Enabled,
2498 GICXXPred_Simple_IsRule259Enabled,
2499 GICXXPred_Simple_IsRule260Enabled,
2500 GICXXPred_Simple_IsRule261Enabled,
2501 GICXXPred_Simple_IsRule262Enabled,
2502 GICXXPred_Simple_IsRule263Enabled,
2503 GICXXPred_Simple_IsRule264Enabled,
2504 GICXXPred_Simple_IsRule265Enabled,
2505 GICXXPred_Simple_IsRule266Enabled,
2506 GICXXPred_Simple_IsRule267Enabled,
2507 GICXXPred_Simple_IsRule268Enabled,
2508 GICXXPred_Simple_IsRule269Enabled,
2509 GICXXPred_Simple_IsRule270Enabled,
2510 GICXXPred_Simple_IsRule271Enabled,
2511 GICXXPred_Simple_IsRule272Enabled,
2512 GICXXPred_Simple_IsRule273Enabled,
2513 GICXXPred_Simple_IsRule274Enabled,
2514 GICXXPred_Simple_IsRule275Enabled,
2515 GICXXPred_Simple_IsRule276Enabled,
2516 GICXXPred_Simple_IsRule277Enabled,
2517 GICXXPred_Simple_IsRule278Enabled,
2518 GICXXPred_Simple_IsRule279Enabled,
2519 GICXXPred_Simple_IsRule280Enabled,
2520 GICXXPred_Simple_IsRule281Enabled,
2521 GICXXPred_Simple_IsRule282Enabled,
2522 GICXXPred_Simple_IsRule283Enabled,
2523 GICXXPred_Simple_IsRule284Enabled,
2524 GICXXPred_Simple_IsRule285Enabled,
2525 GICXXPred_Simple_IsRule286Enabled,
2526 GICXXPred_Simple_IsRule287Enabled,
2527 GICXXPred_Simple_IsRule288Enabled,
2528 GICXXPred_Simple_IsRule289Enabled,
2529 GICXXPred_Simple_IsRule290Enabled,
2530};
2531
2532bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2533 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2534}
2535// Custom renderers.
2536enum {
2537 GICR_Invalid,
2538};
2539AArch64PreLegalizerCombinerImpl::CustomRendererFn
2540AArch64PreLegalizerCombinerImpl::CustomRenderers[] = {
2541 nullptr, // GICR_Invalid
2542};
2543
2544bool AArch64PreLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
2545 switch (Opc) {
2546 case TargetOpcode::G_FCMP:
2547 case TargetOpcode::G_FSHL:
2548 case TargetOpcode::G_FSHR:
2549 case TargetOpcode::G_ICMP:
2550 case TargetOpcode::G_INSERT_VECTOR_ELT:
2551 case TargetOpcode::G_MEMCPY:
2552 case TargetOpcode::G_MEMMOVE:
2553 case TargetOpcode::G_MEMSET:
2554 case TargetOpcode::G_SELECT:
2555 case TargetOpcode::G_SHUFFLE_VECTOR:
2556 case TargetOpcode::G_UADDO:
2557 case TargetOpcode::G_ADD:
2558 case TargetOpcode::G_AND:
2559 case TargetOpcode::G_ASHR:
2560 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
2561 case TargetOpcode::G_FADD:
2562 case TargetOpcode::G_FCOPYSIGN:
2563 case TargetOpcode::G_FDIV:
2564 case TargetOpcode::G_FMAXIMUM:
2565 case TargetOpcode::G_FMAXIMUMNUM:
2566 case TargetOpcode::G_FMAXNUM:
2567 case TargetOpcode::G_FMINIMUM:
2568 case TargetOpcode::G_FMINIMUMNUM:
2569 case TargetOpcode::G_FMINNUM:
2570 case TargetOpcode::G_FMUL:
2571 case TargetOpcode::G_FPOWI:
2572 case TargetOpcode::G_FREM:
2573 case TargetOpcode::G_FSUB:
2574 case TargetOpcode::G_LSHR:
2575 case TargetOpcode::G_MEMCPY_INLINE:
2576 case TargetOpcode::G_MEMSET_INLINE:
2577 case TargetOpcode::G_MERGE_VALUES:
2578 case TargetOpcode::G_MUL:
2579 case TargetOpcode::G_OR:
2580 case TargetOpcode::G_PTR_ADD:
2581 case TargetOpcode::G_ROTL:
2582 case TargetOpcode::G_ROTR:
2583 case TargetOpcode::G_SDIV:
2584 case TargetOpcode::G_SEXT_INREG:
2585 case TargetOpcode::G_SHL:
2586 case TargetOpcode::G_SREM:
2587 case TargetOpcode::G_SUB:
2588 case TargetOpcode::G_UDIV:
2589 case TargetOpcode::G_UREM:
2590 case TargetOpcode::G_XOR:
2591 case TargetOpcode::COPY:
2592 case TargetOpcode::G_ABS:
2593 case TargetOpcode::G_ANYEXT:
2594 case TargetOpcode::G_BITCAST:
2595 case TargetOpcode::G_BITREVERSE:
2596 case TargetOpcode::G_BSWAP:
2597 case TargetOpcode::G_BUILD_VECTOR:
2598 case TargetOpcode::G_CTLZ:
2599 case TargetOpcode::G_CTLZ_ZERO_POISON:
2600 case TargetOpcode::G_CTPOP:
2601 case TargetOpcode::G_CTTZ:
2602 case TargetOpcode::G_CTTZ_ZERO_POISON:
2603 case TargetOpcode::G_FABS:
2604 case TargetOpcode::G_FCANONICALIZE:
2605 case TargetOpcode::G_FCEIL:
2606 case TargetOpcode::G_FFLOOR:
2607 case TargetOpcode::G_FLOG2:
2608 case TargetOpcode::G_FNEARBYINT:
2609 case TargetOpcode::G_FNEG:
2610 case TargetOpcode::G_FPEXT:
2611 case TargetOpcode::G_FPTOSI:
2612 case TargetOpcode::G_FPTOUI:
2613 case TargetOpcode::G_FPTRUNC:
2614 case TargetOpcode::G_FREEZE:
2615 case TargetOpcode::G_FRINT:
2616 case TargetOpcode::G_FSQRT:
2617 case TargetOpcode::G_INTRINSIC_ROUND:
2618 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
2619 case TargetOpcode::G_INTRINSIC_TRUNC:
2620 case TargetOpcode::G_INTTOPTR:
2621 case TargetOpcode::G_PTRTOINT:
2622 case TargetOpcode::G_SEXT:
2623 case TargetOpcode::G_SITOFP:
2624 case TargetOpcode::G_TRUNC:
2625 case TargetOpcode::G_TRUNC_USAT_U:
2626 case TargetOpcode::G_UITOFP:
2627 case TargetOpcode::G_ZEXT:
2628 case TargetOpcode::G_BR:
2629 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
2630 case TargetOpcode::G_CONCAT_VECTORS:
2631 case TargetOpcode::G_FMA:
2632 case TargetOpcode::G_FMAD:
2633 case TargetOpcode::G_FMAXNUM_IEEE:
2634 case TargetOpcode::G_FMINNUM_IEEE:
2635 case TargetOpcode::G_GLOBAL_VALUE:
2636 case TargetOpcode::G_LOAD:
2637 case TargetOpcode::G_PHI:
2638 case TargetOpcode::G_SADDE:
2639 case TargetOpcode::G_SADDO:
2640 case TargetOpcode::G_SADDSAT:
2641 case TargetOpcode::G_SEXTLOAD:
2642 case TargetOpcode::G_SMAX:
2643 case TargetOpcode::G_SMIN:
2644 case TargetOpcode::G_SMULFIX:
2645 case TargetOpcode::G_SMULFIXSAT:
2646 case TargetOpcode::G_SMULH:
2647 case TargetOpcode::G_SMULO:
2648 case TargetOpcode::G_SSHLSAT:
2649 case TargetOpcode::G_SSUBE:
2650 case TargetOpcode::G_SSUBO:
2651 case TargetOpcode::G_STORE:
2652 case TargetOpcode::G_UADDE:
2653 case TargetOpcode::G_UADDSAT:
2654 case TargetOpcode::G_UMAX:
2655 case TargetOpcode::G_UMIN:
2656 case TargetOpcode::G_UMULFIX:
2657 case TargetOpcode::G_UMULFIXSAT:
2658 case TargetOpcode::G_UMULH:
2659 case TargetOpcode::G_UMULO:
2660 case TargetOpcode::G_UNMERGE_VALUES:
2661 case TargetOpcode::G_USHLSAT:
2662 case TargetOpcode::G_USUBE:
2663 case TargetOpcode::G_USUBO:
2664 case TargetOpcode::G_VECREDUCE_ADD:
2665 case TargetOpcode::G_ZEXTLOAD:
2666 return true;
2667 default:
2668 return false;
2669 }
2670}
2671
2672bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2673 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2674 State.MIs.clear();
2675 State.MIs.push_back(&I);
2676 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2677 return true;
2678 }
2679
2680 return false;
2681}
2682
2683enum {
2684 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2685 GICXXCustomAction_GICombiner1,
2686 GICXXCustomAction_GICombiner2,
2687 GICXXCustomAction_GICombiner3,
2688 GICXXCustomAction_GICombiner4,
2689 GICXXCustomAction_GICombiner5,
2690 GICXXCustomAction_GICombiner6,
2691 GICXXCustomAction_GICombiner7,
2692 GICXXCustomAction_GICombiner8,
2693 GICXXCustomAction_GICombiner9,
2694 GICXXCustomAction_GICombiner10,
2695 GICXXCustomAction_GICombiner11,
2696 GICXXCustomAction_GICombiner12,
2697 GICXXCustomAction_GICombiner13,
2698 GICXXCustomAction_GICombiner14,
2699 GICXXCustomAction_GICombiner15,
2700 GICXXCustomAction_GICombiner16,
2701 GICXXCustomAction_GICombiner17,
2702 GICXXCustomAction_GICombiner18,
2703 GICXXCustomAction_GICombiner19,
2704 GICXXCustomAction_GICombiner20,
2705 GICXXCustomAction_GICombiner21,
2706 GICXXCustomAction_GICombiner22,
2707 GICXXCustomAction_GICombiner23,
2708 GICXXCustomAction_GICombiner24,
2709 GICXXCustomAction_GICombiner25,
2710 GICXXCustomAction_GICombiner26,
2711 GICXXCustomAction_GICombiner27,
2712 GICXXCustomAction_GICombiner28,
2713 GICXXCustomAction_GICombiner29,
2714 GICXXCustomAction_GICombiner30,
2715 GICXXCustomAction_GICombiner31,
2716 GICXXCustomAction_GICombiner32,
2717 GICXXCustomAction_GICombiner33,
2718 GICXXCustomAction_GICombiner34,
2719 GICXXCustomAction_GICombiner35,
2720 GICXXCustomAction_GICombiner36,
2721 GICXXCustomAction_GICombiner37,
2722 GICXXCustomAction_GICombiner38,
2723 GICXXCustomAction_GICombiner39,
2724 GICXXCustomAction_GICombiner40,
2725 GICXXCustomAction_GICombiner41,
2726 GICXXCustomAction_GICombiner42,
2727 GICXXCustomAction_GICombiner43,
2728 GICXXCustomAction_GICombiner44,
2729 GICXXCustomAction_GICombiner45,
2730 GICXXCustomAction_GICombiner46,
2731 GICXXCustomAction_GICombiner47,
2732 GICXXCustomAction_GICombiner48,
2733 GICXXCustomAction_GICombiner49,
2734 GICXXCustomAction_GICombiner50,
2735 GICXXCustomAction_GICombiner51,
2736 GICXXCustomAction_GICombiner52,
2737 GICXXCustomAction_GICombiner53,
2738 GICXXCustomAction_GICombiner54,
2739 GICXXCustomAction_GICombiner55,
2740 GICXXCustomAction_GICombiner56,
2741 GICXXCustomAction_GICombiner57,
2742 GICXXCustomAction_GICombiner58,
2743 GICXXCustomAction_GICombiner59,
2744 GICXXCustomAction_GICombiner60,
2745 GICXXCustomAction_GICombiner61,
2746 GICXXCustomAction_GICombiner62,
2747 GICXXCustomAction_GICombiner63,
2748 GICXXCustomAction_GICombiner64,
2749 GICXXCustomAction_GICombiner65,
2750 GICXXCustomAction_GICombiner66,
2751 GICXXCustomAction_GICombiner67,
2752 GICXXCustomAction_GICombiner68,
2753 GICXXCustomAction_GICombiner69,
2754 GICXXCustomAction_GICombiner70,
2755 GICXXCustomAction_GICombiner71,
2756 GICXXCustomAction_GICombiner72,
2757 GICXXCustomAction_GICombiner73,
2758 GICXXCustomAction_GICombiner74,
2759 GICXXCustomAction_GICombiner75,
2760 GICXXCustomAction_GICombiner76,
2761 GICXXCustomAction_GICombiner77,
2762 GICXXCustomAction_GICombiner78,
2763 GICXXCustomAction_GICombiner79,
2764 GICXXCustomAction_GICombiner80,
2765 GICXXCustomAction_GICombiner81,
2766 GICXXCustomAction_GICombiner82,
2767 GICXXCustomAction_GICombiner83,
2768 GICXXCustomAction_GICombiner84,
2769 GICXXCustomAction_GICombiner85,
2770 GICXXCustomAction_GICombiner86,
2771 GICXXCustomAction_GICombiner87,
2772 GICXXCustomAction_GICombiner88,
2773 GICXXCustomAction_GICombiner89,
2774 GICXXCustomAction_GICombiner90,
2775 GICXXCustomAction_GICombiner91,
2776 GICXXCustomAction_GICombiner92,
2777 GICXXCustomAction_GICombiner93,
2778 GICXXCustomAction_GICombiner94,
2779 GICXXCustomAction_GICombiner95,
2780 GICXXCustomAction_GICombiner96,
2781 GICXXCustomAction_GICombiner97,
2782 GICXXCustomAction_GICombiner98,
2783 GICXXCustomAction_GICombiner99,
2784 GICXXCustomAction_GICombiner100,
2785 GICXXCustomAction_GICombiner101,
2786 GICXXCustomAction_GICombiner102,
2787 GICXXCustomAction_GICombiner103,
2788 GICXXCustomAction_GICombiner104,
2789 GICXXCustomAction_GICombiner105,
2790 GICXXCustomAction_GICombiner106,
2791 GICXXCustomAction_GICombiner107,
2792 GICXXCustomAction_GICombiner108,
2793 GICXXCustomAction_GICombiner109,
2794 GICXXCustomAction_GICombiner110,
2795 GICXXCustomAction_GICombiner111,
2796 GICXXCustomAction_GICombiner112,
2797 GICXXCustomAction_GICombiner113,
2798 GICXXCustomAction_GICombiner114,
2799 GICXXCustomAction_GICombiner115,
2800 GICXXCustomAction_GICombiner116,
2801 GICXXCustomAction_GICombiner117,
2802 GICXXCustomAction_GICombiner118,
2803 GICXXCustomAction_GICombiner119,
2804 GICXXCustomAction_GICombiner120,
2805 GICXXCustomAction_GICombiner121,
2806 GICXXCustomAction_GICombiner122,
2807 GICXXCustomAction_GICombiner123,
2808 GICXXCustomAction_GICombiner124,
2809 GICXXCustomAction_GICombiner125,
2810 GICXXCustomAction_GICombiner126,
2811 GICXXCustomAction_GICombiner127,
2812 GICXXCustomAction_GICombiner128,
2813 GICXXCustomAction_GICombiner129,
2814 GICXXCustomAction_GICombiner130,
2815 GICXXCustomAction_GICombiner131,
2816 GICXXCustomAction_GICombiner132,
2817 GICXXCustomAction_GICombiner133,
2818 GICXXCustomAction_GICombiner134,
2819 GICXXCustomAction_GICombiner135,
2820 GICXXCustomAction_GICombiner136,
2821 GICXXCustomAction_GICombiner137,
2822 GICXXCustomAction_GICombiner138,
2823 GICXXCustomAction_GICombiner139,
2824 GICXXCustomAction_GICombiner140,
2825 GICXXCustomAction_GICombiner141,
2826 GICXXCustomAction_GICombiner142,
2827 GICXXCustomAction_GICombiner143,
2828 GICXXCustomAction_GICombiner144,
2829 GICXXCustomAction_GICombiner145,
2830 GICXXCustomAction_GICombiner146,
2831 GICXXCustomAction_GICombiner147,
2832 GICXXCustomAction_GICombiner148,
2833 GICXXCustomAction_GICombiner149,
2834 GICXXCustomAction_GICombiner150,
2835 GICXXCustomAction_GICombiner151,
2836 GICXXCustomAction_GICombiner152,
2837 GICXXCustomAction_GICombiner153,
2838 GICXXCustomAction_GICombiner154,
2839 GICXXCustomAction_GICombiner155,
2840 GICXXCustomAction_GICombiner156,
2841 GICXXCustomAction_GICombiner157,
2842 GICXXCustomAction_GICombiner158,
2843 GICXXCustomAction_GICombiner159,
2844 GICXXCustomAction_GICombiner160,
2845 GICXXCustomAction_GICombiner161,
2846 GICXXCustomAction_GICombiner162,
2847 GICXXCustomAction_GICombiner163,
2848 GICXXCustomAction_GICombiner164,
2849 GICXXCustomAction_GICombiner165,
2850 GICXXCustomAction_GICombiner166,
2851 GICXXCustomAction_GICombiner167,
2852 GICXXCustomAction_GICombiner168,
2853 GICXXCustomAction_GICombiner169,
2854 GICXXCustomAction_GICombiner170,
2855};
2856bool AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2857 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2858 switch(ApplyID) {
2859 case GICXXCustomAction_GICombiner0:{
2860 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2861 // Match Patterns
2862 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2863 return false;
2864 }
2865 // Apply Patterns
2866 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2867 return true;
2868 }
2869 case GICXXCustomAction_GICombiner1:{
2870 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2871 // Match Patterns
2872 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2873 return false;
2874 }
2875 // Apply Patterns
2876 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2877 return true;
2878 }
2879 case GICXXCustomAction_GICombiner2:{
2880 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2881 // Match Patterns
2882 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2883 return false;
2884 }
2885 // Apply Patterns
2886 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2887 return true;
2888 }
2889 case GICXXCustomAction_GICombiner3:{
2890 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2891 // Match Patterns
2892 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2893 return false;
2894 }
2895 // Apply Patterns
2896 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2897 return true;
2898 }
2899 case GICXXCustomAction_GICombiner4:{
2900 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2901 // Match Patterns
2902 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2903 return false;
2904 }
2905 // Apply Patterns
2906 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2907 return true;
2908 }
2909 case GICXXCustomAction_GICombiner5:{
2910 // Match Patterns
2911 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2912 return false;
2913 }
2914 // Apply Patterns
2915 Helper.applyCombineCopy(*State.MIs[0]);
2916 return true;
2917 }
2918 case GICXXCustomAction_GICombiner6:{
2919 unsigned GIMatchData_matchinfo;
2920 // Match Patterns
2921 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2922 return false;
2923 }
2924 // Apply Patterns
2925 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2926 return true;
2927 }
2928 case GICXXCustomAction_GICombiner7:{
2929 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2930 // Match Patterns
2931 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2932 return false;
2933 }
2934 // Apply Patterns
2935 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2936 return true;
2937 }
2938 case GICXXCustomAction_GICombiner8:{
2939 std::pair<Register, bool> GIMatchData_info;
2940 // Match Patterns
2941 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2942 return false;
2943 }
2944 // Apply Patterns
2945 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2946 return true;
2947 }
2948 case GICXXCustomAction_GICombiner9:{
2949 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2950 // Match Patterns
2951 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2952 return false;
2953 }
2954 // Apply Patterns
2955 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2956 return true;
2957 }
2958 case GICXXCustomAction_GICombiner10:{
2959 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2960 // Match Patterns
2961 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2962 return false;
2963 }
2964 // Apply Patterns
2965 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2966 return true;
2967 }
2968 case GICXXCustomAction_GICombiner11:{
2969 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2970 // Match Patterns
2971 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2972 return false;
2973 }
2974 // Apply Patterns
2975 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2976 return true;
2977 }
2978 case GICXXCustomAction_GICombiner12:{
2979 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2980 // Match Patterns
2981 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2982 GIMatchData_matchinfo);}()) {
2983 return false;
2984 }
2985 // Apply Patterns
2986 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2987 return true;
2988 }
2989 case GICXXCustomAction_GICombiner13:{
2990 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2991 // Match Patterns
2992 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2993 return false;
2994 }
2995 // Apply Patterns
2996 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2997 return true;
2998 }
2999 case GICXXCustomAction_GICombiner14:{
3000 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3001 // Match Patterns
3002 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
3003 GIMatchData_matchinfo);}()) {
3004 return false;
3005 }
3006 // Apply Patterns
3007 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3008 return true;
3009 }
3010 case GICXXCustomAction_GICombiner15:{
3011 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3012 // Match Patterns
3013 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3014 return false;
3015 }
3016 // Apply Patterns
3017 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3018 return true;
3019 }
3020 case GICXXCustomAction_GICombiner16:{
3021 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3022 // Match Patterns
3023 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3024 return false;
3025 }
3026 // Apply Patterns
3027 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3028 return true;
3029 }
3030 case GICXXCustomAction_GICombiner17:{
3031 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3032 // Match Patterns
3033 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3034 return false;
3035 }
3036 // Apply Patterns
3037 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3038 return true;
3039 }
3040 case GICXXCustomAction_GICombiner18:{
3041 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3042 // Match Patterns
3043 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3044 return false;
3045 }
3046 // Apply Patterns
3047 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3048 return true;
3049 }
3050 case GICXXCustomAction_GICombiner19:{
3051 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3052 // Match Patterns
3053 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
3054 return false;
3055 }
3056 // Apply Patterns
3057 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3058 return true;
3059 }
3060 case GICXXCustomAction_GICombiner20:{
3061 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3062 // Match Patterns
3063 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3064 return false;
3065 }
3066 // Apply Patterns
3067 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3068 return true;
3069 }
3070 case GICXXCustomAction_GICombiner21:{
3071 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3072 // Match Patterns
3073 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3074 return false;
3075 }
3076 // Apply Patterns
3077 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3078 return true;
3079 }
3080 case GICXXCustomAction_GICombiner22:{
3081 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3082 // Match Patterns
3083 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3084 return false;
3085 }
3086 // Apply Patterns
3087 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3088 return true;
3089 }
3090 case GICXXCustomAction_GICombiner23:{
3091 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3092 // Match Patterns
3093 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3094 return false;
3095 }
3096 // Apply Patterns
3097 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3098 return true;
3099 }
3100 case GICXXCustomAction_GICombiner24:{
3101 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3102 // Match Patterns
3103 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3104 return false;
3105 }
3106 // Apply Patterns
3107 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3108 return true;
3109 }
3110 case GICXXCustomAction_GICombiner25:{
3111 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3112 // Match Patterns
3113 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3114 return false;
3115 }
3116 // Apply Patterns
3117 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3118 return true;
3119 }
3120 case GICXXCustomAction_GICombiner26:{
3121 APInt GIMatchData_matchinfo;
3122 // Match Patterns
3123 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
3124 return false;
3125 }
3126 // Apply Patterns
3127 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3128 return true;
3129 }
3130 case GICXXCustomAction_GICombiner27:{
3131 SmallVector<Register> GIMatchData_info;
3132 // Match Patterns
3133 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
3134 return false;
3135 }
3136 // Apply Patterns
3137 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
3138 return true;
3139 }
3140 case GICXXCustomAction_GICombiner28:{
3141 Register GIMatchData_matchinfo;
3142 // Match Patterns
3143 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
3144 return false;
3145 }
3146 // Apply Patterns
3147 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
3148 return true;
3149 }
3150 case GICXXCustomAction_GICombiner29:{
3151 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
3152 // Match Patterns
3153 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3154 return false;
3155 }
3156 // Apply Patterns
3157 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
3158 return true;
3159 }
3160 case GICXXCustomAction_GICombiner30:{
3161 PreferredTuple GIMatchData_matchinfo;
3162 // Match Patterns
3163 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
3164 return false;
3165 }
3166 // Apply Patterns
3167 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
3168 return true;
3169 }
3170 case GICXXCustomAction_GICombiner31:{
3171 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3172 // Match Patterns
3173 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3174 return false;
3175 }
3176 // Apply Patterns
3177 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3178 return true;
3179 }
3180 case GICXXCustomAction_GICombiner32:{
3181 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3182 // Match Patterns
3183 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3184 return false;
3185 }
3186 // Apply Patterns
3187 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3188 return true;
3189 }
3190 case GICXXCustomAction_GICombiner33:{
3191 // Match Patterns
3192 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3193 return false;
3194 }
3195 // Apply Patterns
3196 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
3197 return true;
3198 }
3199 case GICXXCustomAction_GICombiner34:{
3200 // Match Patterns
3201 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3202 return false;
3203 }
3204 // Apply Patterns
3205 Helper.replaceInstWithConstant(*State.MIs[0], 0);
3206 return true;
3207 }
3208 case GICXXCustomAction_GICombiner35:{
3209 // Match Patterns
3210 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3211 return false;
3212 }
3213 // Apply Patterns
3214 Helper.replaceInstWithConstant(*State.MIs[0], -1);
3215 return true;
3216 }
3217 case GICXXCustomAction_GICombiner36:{
3218 // Match Patterns
3219 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
3220 return false;
3221 }
3222 // Apply Patterns
3223 Helper.replaceInstWithConstant(*State.MIs[0], 0);
3224 return true;
3225 }
3226 case GICXXCustomAction_GICombiner37:{
3227 // Match Patterns
3228 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
3229 return false;
3230 }
3231 // Apply Patterns
3232 Helper.replaceInstWithUndef(*State.MIs[0]);
3233 return true;
3234 }
3235 case GICXXCustomAction_GICombiner38:{
3236 // Apply Patterns
3237 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
3238 return true;
3239 }
3240 case GICXXCustomAction_GICombiner39:{
3241 // Match Patterns
3242 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
3243 return false;
3244 }
3245 // Apply Patterns
3246 Helper.replaceInstWithUndef(*State.MIs[0]);
3247 return true;
3248 }
3249 case GICXXCustomAction_GICombiner40:{
3250 // Match Patterns
3251 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
3252 return false;
3253 }
3254 // Apply Patterns
3255 Helper.replaceInstWithUndef(*State.MIs[0]);
3256 return true;
3257 }
3258 case GICXXCustomAction_GICombiner41:{
3259 // Match Patterns
3260 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
3261 return false;
3262 }
3263 // Apply Patterns
3264 Helper.replaceInstWithUndef(*State.MIs[0]);
3265 return true;
3266 }
3267 case GICXXCustomAction_GICombiner42:{
3268 // Match Patterns
3269 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
3270 return false;
3271 }
3272 // Apply Patterns
3273 Helper.eraseInst(*State.MIs[0]);
3274 return true;
3275 }
3276 case GICXXCustomAction_GICombiner43:{
3277 // Match Patterns
3278 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
3279 return false;
3280 }
3281 // Apply Patterns
3282 Helper.replaceInstWithUndef(*State.MIs[0]);
3283 return true;
3284 }
3285 case GICXXCustomAction_GICombiner44:{
3286 // Match Patterns
3287 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
3288 return false;
3289 }
3290 // Apply Patterns
3291 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
3292 return true;
3293 }
3294 case GICXXCustomAction_GICombiner45:{
3295 Register GIMatchData_info;
3296 // Match Patterns
3297 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
3298 return false;
3299 }
3300 // Apply Patterns
3301 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
3302 return true;
3303 }
3304 case GICXXCustomAction_GICombiner46:{
3305 Register GIMatchData_info;
3306 // Match Patterns
3307 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
3308 return false;
3309 }
3310 // Apply Patterns
3311 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
3312 return true;
3313 }
3314 case GICXXCustomAction_GICombiner47:{
3315 Register GIMatchData_matchinfo;
3316 // Match Patterns
3317 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3318 return false;
3319 }
3320 // Apply Patterns
3321 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3322 return true;
3323 }
3324 case GICXXCustomAction_GICombiner48:{
3325 Register GIMatchData_matchinfo;
3326 // Match Patterns
3327 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3328 return false;
3329 }
3330 // Apply Patterns
3331 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3332 return true;
3333 }
3334 case GICXXCustomAction_GICombiner49:{
3335 Register GIMatchData_matchinfo;
3336 // Match Patterns
3337 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3338 return false;
3339 }
3340 // Apply Patterns
3341 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3342 return true;
3343 }
3344 case GICXXCustomAction_GICombiner50:{
3345 Register GIMatchData_matchinfo;
3346 // Match Patterns
3347 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3348 return false;
3349 }
3350 // Apply Patterns
3351 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3352 return true;
3353 }
3354 case GICXXCustomAction_GICombiner51:{
3355 // Match Patterns
3356 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
3357 return false;
3358 }
3359 // Apply Patterns
3360 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3361 return true;
3362 }
3363 case GICXXCustomAction_GICombiner52:{
3364 MachineInstr* GIMatchData_matchinfo;
3365 // Match Patterns
3366 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3367 return false;
3368 }
3369 // Apply Patterns
3370 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3371 return true;
3372 }
3373 case GICXXCustomAction_GICombiner53:{
3374 std::tuple<Register, Register> GIMatchData_info;
3375 // Match Patterns
3376 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
3377 return false;
3378 }
3379 // Apply Patterns
3380 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
3381 return true;
3382 }
3383 case GICXXCustomAction_GICombiner54:{
3384 InstructionStepsMatchInfo GIMatchData_info;
3385 // Match Patterns
3386 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3387 return false;
3388 }
3389 // Apply Patterns
3390 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3391 return true;
3392 }
3393 case GICXXCustomAction_GICombiner55:{
3394 std::optional<int64_t> GIMatchData_matchinfo;
3395 // Match Patterns
3396 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3397 return false;
3398 }
3399 // Apply Patterns
3400 if (GIMatchData_matchinfo) {
3401 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3402 } else {
3403 Helper.replaceInstWithUndef(*State.MIs[0]);
3404 }
3405 return true;
3406 }
3407 case GICXXCustomAction_GICombiner56:{
3408 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3409 // Match Patterns
3410 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3411 return false;
3412 }
3413 // Apply Patterns
3414 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3415 return true;
3416 }
3417 case GICXXCustomAction_GICombiner57:{
3418 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3419 // Match Patterns
3420 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3421 return false;
3422 }
3423 // Apply Patterns
3424 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3425 return true;
3426 }
3427 case GICXXCustomAction_GICombiner58:{
3428 PtrAddChain GIMatchData_matchinfo;
3429 // Match Patterns
3430 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3431 return false;
3432 }
3433 // Apply Patterns
3434 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3435 return true;
3436 }
3437 case GICXXCustomAction_GICombiner59:{
3438 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3439 // Match Patterns
3440 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3441 return false;
3442 }
3443 // Apply Patterns
3444 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3445 return true;
3446 }
3447 case GICXXCustomAction_GICombiner60:{
3448 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3449 // Match Patterns
3450 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3451 return false;
3452 }
3453 // Apply Patterns
3454 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3455 return true;
3456 }
3457 case GICXXCustomAction_GICombiner61:{
3458 int64_t GIMatchData_matchinfo;
3459 // Match Patterns
3460 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3461 return false;
3462 }
3463 // Apply Patterns
3464 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3465 return true;
3466 }
3467 case GICXXCustomAction_GICombiner62:{
3468 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3469 // Match Patterns
3470 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
3471 return false;
3472 }
3473 // Apply Patterns
3474 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3475 return true;
3476 }
3477 case GICXXCustomAction_GICombiner63:{
3478 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3479 // Match Patterns
3480 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3481 return false;
3482 }
3483 // Apply Patterns
3484 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3485 return true;
3486 }
3487 case GICXXCustomAction_GICombiner64:{
3488 std::tuple<Register, int64_t> GIMatchData_info;
3489 // Match Patterns
3490 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3491 return false;
3492 }
3493 // Apply Patterns
3494 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3495 return true;
3496 }
3497 case GICXXCustomAction_GICombiner65:{
3498 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3499 // Match Patterns
3500 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3501 return false;
3502 }
3503 // Apply Patterns
3504 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3505 return true;
3506 }
3507 case GICXXCustomAction_GICombiner66:{
3508 RegisterImmPair GIMatchData_matchinfo;
3509 // Match Patterns
3510 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3511 return false;
3512 }
3513 // Apply Patterns
3514 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3515 return true;
3516 }
3517 case GICXXCustomAction_GICombiner67:{
3518 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3519 // Match Patterns
3520 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3521 return false;
3522 }
3523 // Apply Patterns
3524 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3525 return true;
3526 }
3527 case GICXXCustomAction_GICombiner68:{
3528 unsigned GIMatchData_matchinfo;
3529 // Match Patterns
3530 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3531 return false;
3532 }
3533 // Apply Patterns
3534 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3535 return true;
3536 }
3537 case GICXXCustomAction_GICombiner69:{
3538 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3539 // Match Patterns
3540 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3541 return false;
3542 }
3543 // Apply Patterns
3544 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3545 return true;
3546 }
3547 case GICXXCustomAction_GICombiner70:{
3548 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3549 // Match Patterns
3550 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3551 return false;
3552 }
3553 // Apply Patterns
3554 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3555 return true;
3556 }
3557 case GICXXCustomAction_GICombiner71:{
3558 // Match Patterns
3559 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3560 return false;
3561 }
3562 // Apply Patterns
3563 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3564 return true;
3565 }
3566 case GICXXCustomAction_GICombiner72:{
3567 // Match Patterns
3568 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
3569 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
3570 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
3571 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
3572 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
3573 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
3574 return false;
3575 }
3576 // Apply Patterns
3577 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
3578 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
3579 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
3580 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
3581 State.MIs[0]->eraseFromParent();
3582 return true;
3583 }
3584 case GICXXCustomAction_GICombiner73:{
3585 Register GIMatchData_matchinfo;
3586 // Match Patterns
3587 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3588 return false;
3589 }
3590 // Apply Patterns
3591 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3592 return true;
3593 }
3594 case GICXXCustomAction_GICombiner74:{
3595 Register GIMatchData_matchinfo;
3596 // Match Patterns
3597 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3598 return false;
3599 }
3600 // Apply Patterns
3601 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3602 return true;
3603 }
3604 case GICXXCustomAction_GICombiner75:{
3605 // Match Patterns
3606 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3607 return false;
3608 }
3609 // Apply Patterns
3610 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3611 return true;
3612 }
3613 case GICXXCustomAction_GICombiner76:{
3614 Register GIMatchData_matchinfo;
3615 // Match Patterns
3616 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3617 return false;
3618 }
3619 // Apply Patterns
3620 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3621 return true;
3622 }
3623 case GICXXCustomAction_GICombiner77:{
3624 // Match Patterns
3625 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3626 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3627 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3628 return false;
3629 }
3630 // Apply Patterns
3631 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3632 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3633 State.MIs[0]->eraseFromParent();
3634 return true;
3635 }
3636 case GICXXCustomAction_GICombiner78:{
3637 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3638 // Match Patterns
3639 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3640 return false;
3641 }
3642 // Apply Patterns
3643 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3644 return true;
3645 }
3646 case GICXXCustomAction_GICombiner79:{
3647 SmallVector<Register> GIMatchData_info;
3648 // Match Patterns
3649 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3650 return false;
3651 }
3652 // Apply Patterns
3653 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3654 return true;
3655 }
3656 case GICXXCustomAction_GICombiner80:{
3657 MachineInstr * GIMatchData_matchinfo;
3658 // Match Patterns
3659 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3660 return false;
3661 }
3662 // Apply Patterns
3663 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3664 return true;
3665 }
3666 case GICXXCustomAction_GICombiner81:{
3667 // Apply Patterns
3668 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3669 return true;
3670 }
3671 case GICXXCustomAction_GICombiner82:{
3672 // Apply Patterns
3673 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3674 return true;
3675 }
3676 case GICXXCustomAction_GICombiner83:{
3677 APInt GIMatchData_info;
3678 // Match Patterns
3679 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3680 return false;
3681 }
3682 // Apply Patterns
3683 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3684 return true;
3685 }
3686 case GICXXCustomAction_GICombiner84:{
3687 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3688 // Match Patterns
3689 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3690 return false;
3691 }
3692 // Apply Patterns
3693 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3694 return true;
3695 }
3696 case GICXXCustomAction_GICombiner85:{
3697 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3698 // Match Patterns
3699 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3700 return false;
3701 }
3702 // Apply Patterns
3703 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3704 return true;
3705 }
3706 case GICXXCustomAction_GICombiner86:{
3707 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3708 // Match Patterns
3709 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3710 return false;
3711 }
3712 // Apply Patterns
3713 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3714 return true;
3715 }
3716 case GICXXCustomAction_GICombiner87:{
3717 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3718 // Match Patterns
3719 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3720 return false;
3721 }
3722 // Apply Patterns
3723 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3724 return true;
3725 }
3726 case GICXXCustomAction_GICombiner88:{
3727 unsigned GIMatchData_info;
3728 // Match Patterns
3729 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3730 return false;
3731 }
3732 // Apply Patterns
3733 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3734 return true;
3735 }
3736 case GICXXCustomAction_GICombiner89:{
3737 // Match Patterns
3738 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3739 return false;
3740 }
3741 // Apply Patterns
3742 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3743 return true;
3744 }
3745 case GICXXCustomAction_GICombiner90:{
3746 std::pair<Register, Register> GIMatchData_matchinfo;
3747 // Match Patterns
3748 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3749 return false;
3750 }
3751 // Apply Patterns
3752 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3753 return true;
3754 }
3755 case GICXXCustomAction_GICombiner91:{
3756 // Match Patterns
3757 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3758 return false;
3759 }
3760 // Apply Patterns
3761 Helper.applyPtrAddZero(*State.MIs[0]);
3762 return true;
3763 }
3764 case GICXXCustomAction_GICombiner92:{
3765 RegisterImmPair GIMatchData_matchinfo;
3766 // Match Patterns
3767 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3768 return false;
3769 }
3770 // Apply Patterns
3771 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3772 return true;
3773 }
3774 case GICXXCustomAction_GICombiner93:{
3775 ShiftOfShiftedLogic GIMatchData_matchinfo;
3776 // Match Patterns
3777 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3778 return false;
3779 }
3780 // Apply Patterns
3781 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3782 return true;
3783 }
3784 case GICXXCustomAction_GICombiner94:{
3785 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3786 // Match Patterns
3787 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3788 return false;
3789 }
3790 // Apply Patterns
3791 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3792 return true;
3793 }
3794 case GICXXCustomAction_GICombiner95:{
3795 MachineInstr * GIMatchData_matchinfo;
3796 // Match Patterns
3797 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3798 return false;
3799 }
3800 // Apply Patterns
3801 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3802 return true;
3803 }
3804 case GICXXCustomAction_GICombiner96:{
3805 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3806 // Match Patterns
3807 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3808 return false;
3809 }
3810 // Apply Patterns
3811 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3812 return true;
3813 }
3814 case GICXXCustomAction_GICombiner97:{
3815 // Match Patterns
3816 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3817 return false;
3818 }
3819 // Apply Patterns
3820 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3821 return true;
3822 }
3823 case GICXXCustomAction_GICombiner98:{
3824 // Match Patterns
3825 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3826 return false;
3827 }
3828 // Apply Patterns
3829 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3830 return true;
3831 }
3832 case GICXXCustomAction_GICombiner99:{
3833 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3834 // Match Patterns
3835 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3836 return false;
3837 }
3838 // Apply Patterns
3839 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3840 return true;
3841 }
3842 case GICXXCustomAction_GICombiner100:{
3843 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3844 // Match Patterns
3845 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3846 return false;
3847 }
3848 // Apply Patterns
3849 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3850 return true;
3851 }
3852 case GICXXCustomAction_GICombiner101:{
3853 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3854 // Match Patterns
3855 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3856 return false;
3857 }
3858 // Apply Patterns
3859 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3860 return true;
3861 }
3862 case GICXXCustomAction_GICombiner102:{
3863 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3864 // Match Patterns
3865 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3866 return false;
3867 }
3868 // Apply Patterns
3869 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3870 return true;
3871 }
3872 case GICXXCustomAction_GICombiner103:{
3873 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3874 // Match Patterns
3875 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3876 return false;
3877 }
3878 // Apply Patterns
3879 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3880 return true;
3881 }
3882 case GICXXCustomAction_GICombiner104:{
3883 APInt GIMatchData_matchinfo;
3884 // Match Patterns
3885 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3886 return false;
3887 }
3888 // Apply Patterns
3889 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3890 return true;
3891 }
3892 case GICXXCustomAction_GICombiner105:{
3893 ConstantFP* GIMatchData_matchinfo;
3894 // Match Patterns
3895 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3896 return false;
3897 }
3898 // Apply Patterns
3899 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3900 return true;
3901 }
3902 case GICXXCustomAction_GICombiner106:{
3903 ConstantFP* GIMatchData_matchinfo;
3904 // Match Patterns
3905 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3906 return false;
3907 }
3908 // Apply Patterns
3909 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3910 return true;
3911 }
3912 case GICXXCustomAction_GICombiner107:{
3913 APInt GIMatchData_matchinfo;
3914 // Match Patterns
3915 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3916 return false;
3917 }
3918 // Apply Patterns
3919 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3920 return true;
3921 }
3922 case GICXXCustomAction_GICombiner108:{
3923 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3924 // Match Patterns
3925 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3926 return false;
3927 }
3928 // Apply Patterns
3929 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3930 return true;
3931 }
3932 case GICXXCustomAction_GICombiner109:{
3933 // Match Patterns
3934 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3935 return false;
3936 }
3937 // Apply Patterns
3938 Helper.applyUMulHToLShr(*State.MIs[0]);
3939 return true;
3940 }
3941 case GICXXCustomAction_GICombiner110:{
3942 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3943 // Match Patterns
3944 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3945 return false;
3946 }
3947 // Apply Patterns
3948 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3949 return true;
3950 }
3951 case GICXXCustomAction_GICombiner111:{
3952 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3953 // Match Patterns
3954 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3955 return false;
3956 }
3957 // Apply Patterns
3958 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3959 return true;
3960 }
3961 case GICXXCustomAction_GICombiner112:{
3962 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3963 // Match Patterns
3964 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3965 GIMatchData_info);}()) {
3966 return false;
3967 }
3968 // Apply Patterns
3969 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3970 return true;
3971 }
3972 case GICXXCustomAction_GICombiner113:{
3973 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3974 // Match Patterns
3975 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3976 GIMatchData_info);}()) {
3977 return false;
3978 }
3979 // Apply Patterns
3980 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3981 return true;
3982 }
3983 case GICXXCustomAction_GICombiner114:{
3984 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3985 // Match Patterns
3986 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3987 GIMatchData_info);}()) {
3988 return false;
3989 }
3990 // Apply Patterns
3991 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3992 return true;
3993 }
3994 case GICXXCustomAction_GICombiner115:{
3995 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3996 // Match Patterns
3997 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3998 *State.MIs[0], GIMatchData_info);}()) {
3999 return false;
4000 }
4001 // Apply Patterns
4002 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4003 return true;
4004 }
4005 case GICXXCustomAction_GICombiner116:{
4006 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4007 // Match Patterns
4008 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
4009 GIMatchData_info);}()) {
4010 return false;
4011 }
4012 // Apply Patterns
4013 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4014 return true;
4015 }
4016 case GICXXCustomAction_GICombiner117:{
4017 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4018 // Match Patterns
4019 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
4020 GIMatchData_info);}()) {
4021 return false;
4022 }
4023 // Apply Patterns
4024 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4025 return true;
4026 }
4027 case GICXXCustomAction_GICombiner118:{
4028 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4029 // Match Patterns
4030 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
4031 GIMatchData_info);}()) {
4032 return false;
4033 }
4034 // Apply Patterns
4035 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4036 return true;
4037 }
4038 case GICXXCustomAction_GICombiner119:{
4039 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4040 // Match Patterns
4041 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
4042 *State.MIs[0], GIMatchData_info);}()) {
4043 return false;
4044 }
4045 // Apply Patterns
4046 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4047 return true;
4048 }
4049 case GICXXCustomAction_GICombiner120:{
4050 unsigned GIMatchData_select_op_no;
4051 // Match Patterns
4052 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
4053 return false;
4054 }
4055 // Apply Patterns
4056 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
4057 return true;
4058 }
4059 case GICXXCustomAction_GICombiner121:{
4060 // Match Patterns
4061 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
4062 /*OrNegative=*/true);}()) {
4063 return false;
4064 }
4065 // Apply Patterns
4066 Helper.applySimplifySRemByPow2(*State.MIs[0]);
4067 return true;
4068 }
4069 case GICXXCustomAction_GICombiner122:{
4070 // Match Patterns
4071 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
4072 return false;
4073 }
4074 // Apply Patterns
4075 Helper.applyUDivOrURemByConst(*State.MIs[0]);
4076 return true;
4077 }
4078 case GICXXCustomAction_GICombiner123:{
4079 // Match Patterns
4080 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
4081 return false;
4082 }
4083 // Apply Patterns
4084 Helper.applySDivOrSRemByConst(*State.MIs[0]);
4085 return true;
4086 }
4087 case GICXXCustomAction_GICombiner124:{
4088 // Match Patterns
4089 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
4090 return false;
4091 }
4092 // Apply Patterns
4093 Helper.applyUDivByPow2(*State.MIs[0]);
4094 return true;
4095 }
4096 case GICXXCustomAction_GICombiner125:{
4097 // Match Patterns
4098 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
4099 return false;
4100 }
4101 // Apply Patterns
4102 Helper.applySDivByPow2(*State.MIs[0]);
4103 return true;
4104 }
4105 case GICXXCustomAction_GICombiner126:{
4106 SmallVector<MachineInstr *> GIMatchData_matchinfo;
4107 // Match Patterns
4108 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
4109 return false;
4110 }
4111 // Apply Patterns
4112 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
4113 return true;
4114 }
4115 case GICXXCustomAction_GICombiner127:{
4116 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4117 // Match Patterns
4118 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4119 return false;
4120 }
4121 // Apply Patterns
4122 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4123 return true;
4124 }
4125 case GICXXCustomAction_GICombiner128:{
4126 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4127 // Match Patterns
4128 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
4129 return false;
4130 }
4131 // Apply Patterns
4132 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4133 return true;
4134 }
4135 case GICXXCustomAction_GICombiner129:{
4136 Register GIMatchData_matchinfo;
4137 // Match Patterns
4138 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4139 return false;
4140 }
4141 // Apply Patterns
4142 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
4143 return true;
4144 }
4145 case GICXXCustomAction_GICombiner130:{
4146 // Match Patterns
4147 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
4148 return false;
4149 }
4150 // Apply Patterns
4151 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4152 return true;
4153 }
4154 case GICXXCustomAction_GICombiner131:{
4155 // Match Patterns
4156 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
4157 return false;
4158 }
4159 // Apply Patterns
4160 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4161 return true;
4162 }
4163 case GICXXCustomAction_GICombiner132:{
4164 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4165 // Match Patterns
4166 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
4167 return false;
4168 }
4169 // Apply Patterns
4170 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4171 return true;
4172 }
4173 case GICXXCustomAction_GICombiner133:{
4174 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4175 // Match Patterns
4176 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
4177 return false;
4178 }
4179 // Apply Patterns
4180 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4181 return true;
4182 }
4183 case GICXXCustomAction_GICombiner134:{
4184 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4185 // Match Patterns
4186 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
4187 return false;
4188 }
4189 // Apply Patterns
4190 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4191 return true;
4192 }
4193 case GICXXCustomAction_GICombiner135:{
4194 SmallVector<Register> GIMatchData_matchinfo;
4195 // Match Patterns
4196 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
4197 return false;
4198 }
4199 // Apply Patterns
4200 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
4201 return true;
4202 }
4203 case GICXXCustomAction_GICombiner136:{
4204 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4205 // Match Patterns
4206 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4207 return false;
4208 }
4209 // Apply Patterns
4210 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4211 return true;
4212 }
4213 case GICXXCustomAction_GICombiner137:{
4214 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4215 // Match Patterns
4216 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4217 return false;
4218 }
4219 // Apply Patterns
4220 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4221 return true;
4222 }
4223 case GICXXCustomAction_GICombiner138:{
4224 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4225 // Match Patterns
4226 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4227 return false;
4228 }
4229 // Apply Patterns
4230 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4231 return true;
4232 }
4233 case GICXXCustomAction_GICombiner139:{
4234 SmallVector<Register> GIMatchData_matchinfo;
4235 // Match Patterns
4236 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
4237 return false;
4238 }
4239 // Apply Patterns
4240 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
4241 return true;
4242 }
4243 case GICXXCustomAction_GICombiner140:{
4244 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4245 // Match Patterns
4246 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4247 return false;
4248 }
4249 // Apply Patterns
4250 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4251 return true;
4252 }
4253 case GICXXCustomAction_GICombiner141:{
4254 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4255 // Match Patterns
4256 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
4257 return false;
4258 }
4259 // Apply Patterns
4260 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4261 return true;
4262 }
4263 case GICXXCustomAction_GICombiner142:{
4264 Register GIMatchData_matchinfo;
4265 // Match Patterns
4266 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
4267 return false;
4268 }
4269 // Apply Patterns
4270 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
4271 return true;
4272 }
4273 case GICXXCustomAction_GICombiner143:{
4274 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4275 // Match Patterns
4276 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4277 return false;
4278 }
4279 // Apply Patterns
4280 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4281 return true;
4282 }
4283 case GICXXCustomAction_GICombiner144:{
4284 SmallVector<Register> GIMatchData_info;
4285 // Match Patterns
4286 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
4287 return false;
4288 }
4289 // Apply Patterns
4290 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4291 return true;
4292 }
4293 case GICXXCustomAction_GICombiner145:{
4294 Register GIMatchData_src;
4295 // Match Patterns
4296 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4297 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4298 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4299 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4300 return false;
4301
4302 // Check counts match.
4303 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4304 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4305 if (NumMergeSrcs != NumUnmergeDefs)
4306 return false;
4307
4308 // Verify all merge sources match unmerge defs in order.
4309 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4310 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4311 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4312
4313 if (MergeSrc != UnmergeDef)
4314 return false;
4315
4316 if (!MRI.hasOneNonDBGUse(MergeSrc))
4317 return false;
4318 }
4319
4320 // Check size compatibility.
4321 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4322 LLT SrcTy = MRI.getType(GIMatchData_src);
4323 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4324 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4325 return false;
4326
4327 // Check bitcast legality.
4328 if (SrcTy != DstTy) {
4329 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4330 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4331 if (!Helper.isLegalOrBeforeLegalizer(Query))
4332 return false;
4333 }
4334
4335 return true;}()) {
4336 return false;
4337 }
4338 // Apply Patterns
4339 LLT SrcTy = MRI.getType(GIMatchData_src);
4340 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4341
4342 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4343
4344 if (SrcTy == DstTy) {
4345 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4346 } else {
4347 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4348 }
4349
4350 State.MIs[0]->eraseFromParent();
4351 return true;
4352 }
4353 case GICXXCustomAction_GICombiner146:{
4354 SmallVector<APInt, 8> GIMatchData_info;
4355 // Match Patterns
4356 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4357 return false;
4358 }
4359 // Apply Patterns
4360 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4361 return true;
4362 }
4363 case GICXXCustomAction_GICombiner147:{
4364 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4365 // Match Patterns
4366 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4367 return false;
4368 }
4369 // Apply Patterns
4370 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4371 return true;
4372 }
4373 case GICXXCustomAction_GICombiner148:{
4374 // Match Patterns
4375 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4376 return false;
4377 }
4378 // Apply Patterns
4379 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4380 return true;
4381 }
4382 case GICXXCustomAction_GICombiner149:{
4383 // Match Patterns
4384 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4385 return false;
4386 }
4387 // Apply Patterns
4388 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4389 return true;
4390 }
4391 case GICXXCustomAction_GICombiner150:{
4392 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4393 // Match Patterns
4394 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
4395 return false;
4396 }
4397 // Apply Patterns
4398 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4399 return true;
4400 }
4401 case GICXXCustomAction_GICombiner151:{
4402 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4403 // Match Patterns
4404 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
4405 return false;
4406 }
4407 // Apply Patterns
4408 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4409 return true;
4410 }
4411 case GICXXCustomAction_GICombiner152:{
4412 Register GIMatchData_unmergeSrc;
4413 // Match Patterns
4414 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4415 return false;
4416 }
4417 // Apply Patterns
4418 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4419 return true;
4420 }
4421 case GICXXCustomAction_GICombiner153:{
4422 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4423 // Match Patterns
4424 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4425 return false;
4426 }
4427 // Apply Patterns
4428 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4429 return true;
4430 }
4431 case GICXXCustomAction_GICombiner154:{
4432 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4433 // Match Patterns
4434 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4435 return false;
4436 }
4437 // Apply Patterns
4438 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4439 return true;
4440 }
4441 case GICXXCustomAction_GICombiner155:{
4442 Register GIMatchData_matchinfo;
4443 // Match Patterns
4444 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4445 return false;
4446 }
4447 // Apply Patterns
4448 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4449 return true;
4450 }
4451 case GICXXCustomAction_GICombiner156:{
4452 Register GIMatchData_matchinfo;
4453 // Match Patterns
4454 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4455 return false;
4456 }
4457 // Apply Patterns
4458 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4459 return true;
4460 }
4461 case GICXXCustomAction_GICombiner157:{
4462 LshrOfTruncOfLshr GIMatchData_matchinfo;
4463 // Match Patterns
4464 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4465 return false;
4466 }
4467 // Apply Patterns
4468 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4469 return true;
4470 }
4471 case GICXXCustomAction_GICombiner158:{
4472 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4473 // Match Patterns
4474 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4475 return false;
4476 }
4477 // Apply Patterns
4478 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4479 return true;
4480 }
4481 case GICXXCustomAction_GICombiner159:{
4482 // Match Patterns
4483 if(![&](){return Helper.matchCountZeroToZeroPoison(*State.MIs[0]);}()) {
4484 return false;
4485 }
4486 // Apply Patterns
4487 Helper.applyCountZeroToZeroPoison(*State.MIs[0]);
4488 return true;
4489 }
4490 case GICXXCustomAction_GICombiner160:{
4491 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4492 // Match Patterns
4493 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4494 return false;
4495 }
4496 // Apply Patterns
4497 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4498 return true;
4499 }
4500 case GICXXCustomAction_GICombiner161:{
4501 SmallVector<Register> GIMatchData_matchinfo;
4502 // Match Patterns
4503 if(![&](){return Helper.matchCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4504 return false;
4505 }
4506 // Apply Patterns
4507 Helper.applyCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);
4508 return true;
4509 }
4510 case GICXXCustomAction_GICombiner162:{
4511 Register GIMatchData_matchinfo;
4512 // Match Patterns
4513 if(![&](){return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getValueTracking(), GIMatchData_matchinfo);}()) {
4514 return false;
4515 }
4516 // Apply Patterns
4517 applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4518 return true;
4519 }
4520 case GICXXCustomAction_GICombiner163:{
4521 std::pair<uint64_t, uint64_t> GIMatchData_matchinfo;
4522 // Match Patterns
4523 if(![&](){return matchFoldGlobalOffset(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4524 return false;
4525 }
4526 // Apply Patterns
4527 applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4528 return true;
4529 }
4530 case GICXXCustomAction_GICombiner164:{
4531 std::tuple<Register, Register, bool> GIMatchData_matchinfo;
4532 // Match Patterns
4533 if(![&](){return matchExtAddvToDotAddv(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
4534 return false;
4535 }
4536 // Apply Patterns
4537 applyExtAddvToDotAddv(*State.MIs[0], MRI, B, Observer, STI, GIMatchData_matchinfo);
4538 return true;
4539 }
4540 case GICXXCustomAction_GICombiner165:{
4541 std::pair<Register, bool> GIMatchData_matchinfo;
4542 // Match Patterns
4543 if(![&](){return matchExtUaddvToUaddlv(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4544 return false;
4545 }
4546 // Apply Patterns
4547 applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4548 return true;
4549 }
4550 case GICXXCustomAction_GICombiner166:{
4551 // Match Patterns
4552 if(![&](){return matchPushAddSubExt(*State.MIs[0], MRI, State.MIs[0]->getOperand(0).getReg(), State.MIs[1]->getOperand(1).getReg(), State.MIs[2]->getOperand(1).getReg());}()) {
4553 return false;
4554 }
4555 // Apply Patterns
4556 applyPushAddSubExt(*State.MIs[0], MRI, B, State.MIs[1]->getOpcode() == TargetOpcode::G_SEXT, State.MIs[0]->getOperand(0).getReg(), State.MIs[1]->getOperand(1).getReg(), State.MIs[2]->getOperand(1).getReg());
4557 return true;
4558 }
4559 case GICXXCustomAction_GICombiner167:{
4560 std::pair<Register, Register> GIMatchData_matchinfo;
4561 // Match Patterns
4562 if(![&](){return matchSimplifyUADDO(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4563 return false;
4564 }
4565 // Apply Patterns
4566 applySimplifyUADDO(*State.MIs[0], MRI, B, Observer, Helper,
4567 GIMatchData_matchinfo);
4568 return true;
4569 }
4570 case GICXXCustomAction_GICombiner168:{
4571 MemCpyFamilyLoweringInfo GIMatchData_matchinfo;
4572 // Match Patterns
4573 if(![&](){return Helper.matchCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo);}()) {
4574 return false;
4575 }
4576 // Apply Patterns
4577 Helper.applyCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo);
4578 return true;
4579 }
4580 case GICXXCustomAction_GICombiner169:{
4581 MemCpyFamilyLoweringInfo GIMatchData_matchinfo;
4582 // Match Patterns
4583 if(![&](){return Helper.matchCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo,
4584 CInfo.EnableOpt ? 0 : 32);}()) {
4585 return false;
4586 }
4587 // Apply Patterns
4588 Helper.applyCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo);
4589 return true;
4590 }
4591 case GICXXCustomAction_GICombiner170:{
4592 // Match Patterns
4593 if(![&](){return llvm::AArch64GISelUtils::matchEmitBZero(*State.MIs[0], MRI,
4594 Libcalls,
4595 CInfo.EnableMinSize);}()) {
4596 return false;
4597 }
4598 // Apply Patterns
4599 llvm::AArch64GISelUtils::applyEmitBZero(*State.MIs[0], B);
4600 return true;
4601 }
4602 }
4603 llvm_unreachable("Unknown Apply Action");
4604}
4605#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4606#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4607#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4608#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)
4609#else
4610#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4611#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4612#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)
4613#endif
4614const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const {
4615 constexpr static uint8_t MatchTable0[] = {
4616 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(323), /*)*//*default:*//*Label 120*/ GIMT_Encode4(10765),
4617 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1222), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4618 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1234),
4619 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(2025),
4620 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(3064),
4621 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3328),
4622 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3430),
4623 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3543),
4624 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3639), GIMT_Encode4(0), GIMT_Encode4(0),
4625 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3746),
4626 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(4173),
4627 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(4988), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4628 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(5199), GIMT_Encode4(0),
4629 /* 234 */ /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(5211), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4630 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(5223), GIMT_Encode4(0),
4631 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(5290),
4632 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(5367),
4633 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(5432),
4634 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 17*/ GIMT_Encode4(5444),
4635 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 18*/ GIMT_Encode4(5456),
4636 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 19*/ GIMT_Encode4(5499),
4637 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 20*/ GIMT_Encode4(5532),
4638 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 21*/ GIMT_Encode4(5607), GIMT_Encode4(0), GIMT_Encode4(0),
4639 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 22*/ GIMT_Encode4(5671),
4640 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 23*/ GIMT_Encode4(5693), GIMT_Encode4(0), GIMT_Encode4(0),
4641 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 24*/ GIMT_Encode4(5715), GIMT_Encode4(0), GIMT_Encode4(0),
4642 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 25*/ GIMT_Encode4(5737),
4643 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 26*/ GIMT_Encode4(5749),
4644 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 27*/ GIMT_Encode4(5761), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4645 /* 354 */ /*TargetOpcode::G_STORE*//*Label 28*/ GIMT_Encode4(5773), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4646 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 29*/ GIMT_Encode4(5785),
4647 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 30*/ GIMT_Encode4(5913), GIMT_Encode4(0), GIMT_Encode4(0),
4648 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 31*/ GIMT_Encode4(6325), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4649 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 32*/ GIMT_Encode4(6358),
4650 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 33*/ GIMT_Encode4(6433),
4651 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 34*/ GIMT_Encode4(6643),
4652 /* 550 */ /*TargetOpcode::G_SHL*//*Label 35*/ GIMT_Encode4(6773),
4653 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 36*/ GIMT_Encode4(6971),
4654 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 37*/ GIMT_Encode4(7318),
4655 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 38*/ GIMT_Encode4(7647),
4656 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 39*/ GIMT_Encode4(7690),
4657 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 40*/ GIMT_Encode4(7733),
4658 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 41*/ GIMT_Encode4(7757),
4659 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 42*/ GIMT_Encode4(7781),
4660 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 43*/ GIMT_Encode4(7837), GIMT_Encode4(0), GIMT_Encode4(0),
4661 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 44*/ GIMT_Encode4(7849),
4662 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 45*/ GIMT_Encode4(8109),
4663 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 46*/ GIMT_Encode4(8143),
4664 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 47*/ GIMT_Encode4(8155),
4665 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 48*/ GIMT_Encode4(8167),
4666 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 49*/ GIMT_Encode4(8179),
4667 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 50*/ GIMT_Encode4(8202),
4668 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 51*/ GIMT_Encode4(8214),
4669 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 52*/ GIMT_Encode4(8226),
4670 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 53*/ GIMT_Encode4(8238),
4671 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 54*/ GIMT_Encode4(8272),
4672 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 55*/ GIMT_Encode4(8306),
4673 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 56*/ GIMT_Encode4(8329),
4674 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 57*/ GIMT_Encode4(8341),
4675 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 58*/ GIMT_Encode4(8353), GIMT_Encode4(0), GIMT_Encode4(0),
4676 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 59*/ GIMT_Encode4(8365),
4677 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 60*/ GIMT_Encode4(8388),
4678 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 61*/ GIMT_Encode4(8411),
4679 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 62*/ GIMT_Encode4(8423),
4680 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 63*/ GIMT_Encode4(8435),
4681 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 64*/ GIMT_Encode4(8447), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4682 /* 702 */ /*TargetOpcode::G_FADD*//*Label 65*/ GIMT_Encode4(8459),
4683 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 66*/ GIMT_Encode4(8600),
4684 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 67*/ GIMT_Encode4(8689),
4685 /* 714 */ /*TargetOpcode::G_FMA*//*Label 68*/ GIMT_Encode4(8777),
4686 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 69*/ GIMT_Encode4(8800),
4687 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 70*/ GIMT_Encode4(8823),
4688 /* 726 */ /*TargetOpcode::G_FREM*//*Label 71*/ GIMT_Encode4(8868), GIMT_Encode4(0), GIMT_Encode4(0),
4689 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 72*/ GIMT_Encode4(8891), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4690 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 73*/ GIMT_Encode4(8913), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4691 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 74*/ GIMT_Encode4(8935),
4692 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 75*/ GIMT_Encode4(8986),
4693 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 76*/ GIMT_Encode4(9008),
4694 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 77*/ GIMT_Encode4(9051),
4695 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 78*/ GIMT_Encode4(9073),
4696 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 79*/ GIMT_Encode4(9095),
4697 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 80*/ GIMT_Encode4(9122), GIMT_Encode4(0), GIMT_Encode4(0),
4698 /* 810 */ /*TargetOpcode::G_FABS*//*Label 81*/ GIMT_Encode4(9149),
4699 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 82*/ GIMT_Encode4(9228), GIMT_Encode4(0),
4700 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 83*/ GIMT_Encode4(9240),
4701 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 84*/ GIMT_Encode4(9270),
4702 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 85*/ GIMT_Encode4(9315),
4703 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 86*/ GIMT_Encode4(9360),
4704 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 87*/ GIMT_Encode4(9372),
4705 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 88*/ GIMT_Encode4(9384),
4706 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 89*/ GIMT_Encode4(9429),
4707 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 90*/ GIMT_Encode4(9474),
4708 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 91*/ GIMT_Encode4(9486), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4709 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 92*/ GIMT_Encode4(9498), GIMT_Encode4(0),
4710 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 93*/ GIMT_Encode4(9588),
4711 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 94*/ GIMT_Encode4(9622),
4712 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 95*/ GIMT_Encode4(9656),
4713 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 96*/ GIMT_Encode4(9690),
4714 /* 914 */ /*TargetOpcode::G_ABS*//*Label 97*/ GIMT_Encode4(9724), GIMT_Encode4(0), GIMT_Encode4(0),
4715 /* 926 */ /*TargetOpcode::G_BR*//*Label 98*/ GIMT_Encode4(9747), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4716 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(9759),
4717 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 100*/ GIMT_Encode4(9889),
4718 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 101*/ GIMT_Encode4(10266), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4719 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 102*/ GIMT_Encode4(10343),
4720 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 103*/ GIMT_Encode4(10366),
4721 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 104*/ GIMT_Encode4(10378),
4722 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 105*/ GIMT_Encode4(10412), GIMT_Encode4(0),
4723 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 106*/ GIMT_Encode4(10435),
4724 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 107*/ GIMT_Encode4(10447),
4725 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 108*/ GIMT_Encode4(10459), GIMT_Encode4(0),
4726 /* 1006 */ /*TargetOpcode::G_FCEIL*//*Label 109*/ GIMT_Encode4(10559), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4727 /* 1054 */ /*TargetOpcode::G_FSQRT*//*Label 110*/ GIMT_Encode4(10581),
4728 /* 1058 */ /*TargetOpcode::G_FFLOOR*//*Label 111*/ GIMT_Encode4(10603),
4729 /* 1062 */ /*TargetOpcode::G_FRINT*//*Label 112*/ GIMT_Encode4(10625),
4730 /* 1066 */ /*TargetOpcode::G_FNEARBYINT*//*Label 113*/ GIMT_Encode4(10647), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4731 /* 1142 */ /*TargetOpcode::G_MEMCPY*//*Label 114*/ GIMT_Encode4(10669),
4732 /* 1146 */ /*TargetOpcode::G_MEMCPY_INLINE*//*Label 115*/ GIMT_Encode4(10681),
4733 /* 1150 */ /*TargetOpcode::G_MEMMOVE*//*Label 116*/ GIMT_Encode4(10693),
4734 /* 1154 */ /*TargetOpcode::G_MEMSET*//*Label 117*/ GIMT_Encode4(10705), GIMT_Encode4(0),
4735 /* 1162 */ /*TargetOpcode::G_MEMSET_INLINE*//*Label 118*/ GIMT_Encode4(10728), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4736 /* 1218 */ /*TargetOpcode::G_VECREDUCE_ADD*//*Label 119*/ GIMT_Encode4(10740),
4737 /* 1222 */ // Label 0: @1222
4738 /* 1222 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1233), // Rule ID 19 //
4739 /* 1227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4740 /* 1230 */ // MIs[0] d
4741 /* 1230 */ // No operand predicates
4742 /* 1230 */ // MIs[0] s
4743 /* 1230 */ // No operand predicates
4744 /* 1230 */ // Combiner Rule #19: copy_prop
4745 /* 1230 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4746 /* 1233 */ // Label 121: @1233
4747 /* 1233 */ GIM_Reject,
4748 /* 1234 */ // Label 1: @1234
4749 /* 1234 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1245), // Rule ID 22 //
4750 /* 1239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4751 /* 1242 */ // Combiner Rule #22: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4752 /* 1242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4753 /* 1245 */ // Label 122: @1245
4754 /* 1245 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1256), // Rule ID 100 //
4755 /* 1250 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4756 /* 1253 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4757 /* 1253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4758 /* 1256 */ // Label 123: @1256
4759 /* 1256 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1267), // Rule ID 152 //
4760 /* 1261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4761 /* 1264 */ // Combiner Rule #112: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4762 /* 1264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4763 /* 1267 */ // Label 124: @1267
4764 /* 1267 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1278), // Rule ID 260 //
4765 /* 1272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
4766 /* 1275 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_ADD'
4767 /* 1275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
4768 /* 1278 */ // Label 125: @1278
4769 /* 1278 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1289), // Rule ID 320 //
4770 /* 1283 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4771 /* 1286 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_ADD'
4772 /* 1286 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4773 /* 1289 */ // Label 126: @1289
4774 /* 1289 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1300), // Rule ID 357 //
4775 /* 1294 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
4776 /* 1297 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4777 /* 1297 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
4778 /* 1300 */ // Label 127: @1300
4779 /* 1300 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1388), // Rule ID 427 //
4780 /* 1305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
4781 /* 1308 */ // MIs[0] dst
4782 /* 1308 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4783 /* 1312 */ // MIs[0] __add_shift_match_0.shl_neg
4784 /* 1312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4785 /* 1316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4786 /* 1320 */ // MIs[1] __add_shift_match_0.neg_y
4787 /* 1320 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4788 /* 1324 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4789 /* 1328 */ // MIs[2] __add_shift_match_0.zero
4790 /* 1328 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4791 /* 1332 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4792 /* 1336 */ // MIs[3] Operand 1
4793 /* 1336 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4794 /* 1347 */ // MIs[2] y
4795 /* 1347 */ // No operand predicates
4796 /* 1347 */ // MIs[1] n
4797 /* 1347 */ // No operand predicates
4798 /* 1347 */ // MIs[0] x
4799 /* 1347 */ // No operand predicates
4800 /* 1347 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
4801 /* 1351 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4802 /* 1353 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4803 /* 1356 */ // Combiner Rule #260: add_shift @ [__add_shift_match_0[1]]
4804 /* 1356 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4805 /* 1359 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4806 /* 1364 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4807 /* 1368 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4808 /* 1372 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4809 /* 1376 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4810 /* 1380 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4811 /* 1384 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4812 /* 1387 */ GIR_EraseRootFromParent_Done,
4813 /* 1388 */ // Label 128: @1388
4814 /* 1388 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1476), // Rule ID 426 //
4815 /* 1393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
4816 /* 1396 */ // MIs[0] dst
4817 /* 1396 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4818 /* 1400 */ // MIs[0] x
4819 /* 1400 */ // No operand predicates
4820 /* 1400 */ // MIs[0] __add_shift_match_0.shl_neg
4821 /* 1400 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4822 /* 1404 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4823 /* 1408 */ // MIs[1] __add_shift_match_0.neg_y
4824 /* 1408 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4825 /* 1412 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4826 /* 1416 */ // MIs[2] __add_shift_match_0.zero
4827 /* 1416 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4828 /* 1420 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4829 /* 1424 */ // MIs[3] Operand 1
4830 /* 1424 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4831 /* 1435 */ // MIs[2] y
4832 /* 1435 */ // No operand predicates
4833 /* 1435 */ // MIs[1] n
4834 /* 1435 */ // No operand predicates
4835 /* 1435 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
4836 /* 1439 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4837 /* 1441 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4838 /* 1444 */ // Combiner Rule #260: add_shift @ [__add_shift_match_0[0]]
4839 /* 1444 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4840 /* 1447 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4841 /* 1452 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4842 /* 1456 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4843 /* 1460 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4844 /* 1464 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4845 /* 1468 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4846 /* 1472 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4847 /* 1475 */ GIR_EraseRootFromParent_Done,
4848 /* 1476 */ // Label 129: @1476
4849 /* 1476 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1510), // Rule ID 2 //
4850 /* 1481 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4851 /* 1484 */ // MIs[0] root
4852 /* 1484 */ // No operand predicates
4853 /* 1484 */ // MIs[0] sub
4854 /* 1484 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4855 /* 1488 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4856 /* 1492 */ // MIs[1] Operand 1
4857 /* 1492 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4858 /* 1496 */ // MIs[1] A
4859 /* 1496 */ // No operand predicates
4860 /* 1496 */ // MIs[0] B
4861 /* 1496 */ // No operand predicates
4862 /* 1496 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4863 /* 1498 */ // Combiner Rule #2: ZeroMinusAPlusB
4864 /* 1498 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4865 /* 1501 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4866 /* 1503 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4867 /* 1505 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4868 /* 1509 */ GIR_EraseRootFromParent_Done,
4869 /* 1510 */ // Label 130: @1510
4870 /* 1510 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1547), // Rule ID 18 //
4871 /* 1515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4872 /* 1518 */ // MIs[0] root
4873 /* 1518 */ // No operand predicates
4874 /* 1518 */ // MIs[0] sub
4875 /* 1518 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4876 /* 1522 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4877 /* 1526 */ // MIs[1] A
4878 /* 1526 */ // No operand predicates
4879 /* 1526 */ // MIs[1] c1
4880 /* 1526 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4881 /* 1530 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4882 /* 1534 */ // MIs[2] imm1
4883 /* 1534 */ // No operand predicates
4884 /* 1534 */ // MIs[0] c2
4885 /* 1534 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4886 /* 1538 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4887 /* 1542 */ // MIs[3] imm2
4888 /* 1542 */ // No operand predicates
4889 /* 1542 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4890 /* 1544 */ // Combiner Rule #18: AMinusC1PlusC2
4891 /* 1544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4892 /* 1547 */ // Label 131: @1547
4893 /* 1547 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1581), // Rule ID 5 //
4894 /* 1552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4895 /* 1555 */ // MIs[0] root
4896 /* 1555 */ // No operand predicates
4897 /* 1555 */ // MIs[0] sub
4898 /* 1555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4899 /* 1559 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4900 /* 1563 */ // MIs[1] B
4901 /* 1563 */ // No operand predicates
4902 /* 1563 */ // MIs[1] A
4903 /* 1563 */ // No operand predicates
4904 /* 1563 */ // MIs[0] A
4905 /* 1563 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4906 /* 1568 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4907 /* 1573 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4908 /* 1575 */ // Combiner Rule #5: BMinusAPlusA
4909 /* 1575 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4910 /* 1580 */ GIR_EraseRootFromParent_Done,
4911 /* 1581 */ // Label 132: @1581
4912 /* 1581 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1615), // Rule ID 140 //
4913 /* 1586 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4914 /* 1589 */ // MIs[0] dst
4915 /* 1589 */ // No operand predicates
4916 /* 1589 */ // MIs[0] __add_sub_reg_match_0.tmp
4917 /* 1589 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4918 /* 1593 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4919 /* 1597 */ // MIs[1] src
4920 /* 1597 */ // No operand predicates
4921 /* 1597 */ // MIs[1] __add_sub_reg_match_0.x
4922 /* 1597 */ // No operand predicates
4923 /* 1597 */ // MIs[0] __add_sub_reg_match_0.x
4924 /* 1597 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4925 /* 1602 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4926 /* 1607 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4927 /* 1609 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4928 /* 1609 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4929 /* 1614 */ GIR_EraseRootFromParent_Done,
4930 /* 1615 */ // Label 133: @1615
4931 /* 1615 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1660), // Rule ID 7 //
4932 /* 1620 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4933 /* 1623 */ // MIs[0] root
4934 /* 1623 */ // No operand predicates
4935 /* 1623 */ // MIs[0] sub1
4936 /* 1623 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4937 /* 1627 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4938 /* 1631 */ // MIs[1] A
4939 /* 1631 */ // No operand predicates
4940 /* 1631 */ // MIs[1] B
4941 /* 1631 */ // No operand predicates
4942 /* 1631 */ // MIs[0] sub2
4943 /* 1631 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4944 /* 1635 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4945 /* 1639 */ // MIs[2] B
4946 /* 1639 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4947 /* 1644 */ // MIs[2] C
4948 /* 1644 */ // No operand predicates
4949 /* 1644 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4950 /* 1646 */ // Combiner Rule #7: AMinusBPlusBMinusC
4951 /* 1646 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4952 /* 1649 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4953 /* 1651 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4954 /* 1655 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4955 /* 1659 */ GIR_EraseRootFromParent_Done,
4956 /* 1660 */ // Label 134: @1660
4957 /* 1660 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1705), // Rule ID 6 //
4958 /* 1665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4959 /* 1668 */ // MIs[0] root
4960 /* 1668 */ // No operand predicates
4961 /* 1668 */ // MIs[0] sub1
4962 /* 1668 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4963 /* 1672 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4964 /* 1676 */ // MIs[1] A
4965 /* 1676 */ // No operand predicates
4966 /* 1676 */ // MIs[1] B
4967 /* 1676 */ // No operand predicates
4968 /* 1676 */ // MIs[0] sub2
4969 /* 1676 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4970 /* 1680 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4971 /* 1684 */ // MIs[2] C
4972 /* 1684 */ // No operand predicates
4973 /* 1684 */ // MIs[2] A
4974 /* 1684 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4975 /* 1689 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4976 /* 1691 */ // Combiner Rule #6: AMinusBPlusCMinusA
4977 /* 1691 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4978 /* 1694 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4979 /* 1696 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4980 /* 1700 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4981 /* 1704 */ GIR_EraseRootFromParent_Done,
4982 /* 1705 */ // Label 135: @1705
4983 /* 1705 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1734), // Rule ID 454 //
4984 /* 1710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule282Enabled),
4985 /* 1713 */ // MIs[0] dst
4986 /* 1713 */ // No operand predicates
4987 /* 1713 */ // MIs[0] ext1
4988 /* 1713 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4989 /* 1717 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4990 /* 1721 */ // MIs[1] src1
4991 /* 1721 */ // No operand predicates
4992 /* 1721 */ // MIs[0] ext2
4993 /* 1721 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4994 /* 1725 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4995 /* 1729 */ // MIs[2] src2
4996 /* 1729 */ // No operand predicates
4997 /* 1729 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4998 /* 1731 */ // Combiner Rule #282: push_add_through_sext
4999 /* 1731 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
5000 /* 1734 */ // Label 136: @1734
5001 /* 1734 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1769), // Rule ID 45 //
5002 /* 1739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
5003 /* 1742 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5004 /* 1748 */ // MIs[0] root
5005 /* 1748 */ // No operand predicates
5006 /* 1748 */ // MIs[0] left
5007 /* 1748 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5008 /* 1752 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5009 /* 1756 */ // MIs[1] imm1
5010 /* 1756 */ // No operand predicates
5011 /* 1756 */ // MIs[0] right
5012 /* 1756 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5013 /* 1760 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
5014 /* 1764 */ // MIs[2] imm2
5015 /* 1764 */ // No operand predicates
5016 /* 1764 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5017 /* 1766 */ // Combiner Rule #43: add_of_vscale
5018 /* 1766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
5019 /* 1769 */ // Label 137: @1769
5020 /* 1769 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1798), // Rule ID 451 //
5021 /* 1774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule279Enabled),
5022 /* 1777 */ // MIs[0] dst
5023 /* 1777 */ // No operand predicates
5024 /* 1777 */ // MIs[0] ext1
5025 /* 1777 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5026 /* 1781 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5027 /* 1785 */ // MIs[1] src1
5028 /* 1785 */ // No operand predicates
5029 /* 1785 */ // MIs[0] ext2
5030 /* 1785 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5031 /* 1789 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5032 /* 1793 */ // MIs[2] src2
5033 /* 1793 */ // No operand predicates
5034 /* 1793 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5035 /* 1795 */ // Combiner Rule #279: push_add_through_zext
5036 /* 1795 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
5037 /* 1798 */ // Label 138: @1798
5038 /* 1798 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1832), // Rule ID 3 //
5039 /* 1803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
5040 /* 1806 */ // MIs[0] root
5041 /* 1806 */ // No operand predicates
5042 /* 1806 */ // MIs[0] A
5043 /* 1806 */ // No operand predicates
5044 /* 1806 */ // MIs[0] sub
5045 /* 1806 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5046 /* 1810 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5047 /* 1814 */ // MIs[1] Operand 1
5048 /* 1814 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5049 /* 1818 */ // MIs[1] B
5050 /* 1818 */ // No operand predicates
5051 /* 1818 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5052 /* 1820 */ // Combiner Rule #3: APlusZeroMinusB
5053 /* 1820 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5054 /* 1823 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5055 /* 1825 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5056 /* 1827 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5057 /* 1831 */ GIR_EraseRootFromParent_Done,
5058 /* 1832 */ // Label 139: @1832
5059 /* 1832 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1866), // Rule ID 4 //
5060 /* 1837 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
5061 /* 1840 */ // MIs[0] root
5062 /* 1840 */ // No operand predicates
5063 /* 1840 */ // MIs[0] A
5064 /* 1840 */ // No operand predicates
5065 /* 1840 */ // MIs[0] sub
5066 /* 1840 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5067 /* 1844 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5068 /* 1848 */ // MIs[1] B
5069 /* 1848 */ // No operand predicates
5070 /* 1848 */ // MIs[1] A
5071 /* 1848 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5072 /* 1853 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5073 /* 1858 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5074 /* 1860 */ // Combiner Rule #4: APlusBMinusB
5075 /* 1860 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5076 /* 1865 */ GIR_EraseRootFromParent_Done,
5077 /* 1866 */ // Label 140: @1866
5078 /* 1866 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(1900), // Rule ID 139 //
5079 /* 1871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
5080 /* 1874 */ // MIs[0] dst
5081 /* 1874 */ // No operand predicates
5082 /* 1874 */ // MIs[0] __add_sub_reg_match_0.x
5083 /* 1874 */ // No operand predicates
5084 /* 1874 */ // MIs[0] __add_sub_reg_match_0.tmp
5085 /* 1874 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5086 /* 1878 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5087 /* 1882 */ // MIs[1] src
5088 /* 1882 */ // No operand predicates
5089 /* 1882 */ // MIs[1] __add_sub_reg_match_0.x
5090 /* 1882 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5091 /* 1887 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5092 /* 1892 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5093 /* 1894 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
5094 /* 1894 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5095 /* 1899 */ GIR_EraseRootFromParent_Done,
5096 /* 1900 */ // Label 141: @1900
5097 /* 1900 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(1945), // Rule ID 8 //
5098 /* 1905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
5099 /* 1908 */ // MIs[0] root
5100 /* 1908 */ // No operand predicates
5101 /* 1908 */ // MIs[0] A
5102 /* 1908 */ // No operand predicates
5103 /* 1908 */ // MIs[0] sub1
5104 /* 1908 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5105 /* 1912 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5106 /* 1916 */ // MIs[1] B
5107 /* 1916 */ // No operand predicates
5108 /* 1916 */ // MIs[1] add1
5109 /* 1916 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5110 /* 1920 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5111 /* 1924 */ // MIs[2] A
5112 /* 1924 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5113 /* 1929 */ // MIs[2] C
5114 /* 1929 */ // No operand predicates
5115 /* 1929 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5116 /* 1931 */ // Combiner Rule #8: APlusBMinusAplusC
5117 /* 1931 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5118 /* 1934 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5119 /* 1936 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5120 /* 1940 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5121 /* 1944 */ GIR_EraseRootFromParent_Done,
5122 /* 1945 */ // Label 142: @1945
5123 /* 1945 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(1990), // Rule ID 10 //
5124 /* 1950 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5125 /* 1953 */ // MIs[0] root
5126 /* 1953 */ // No operand predicates
5127 /* 1953 */ // MIs[0] A
5128 /* 1953 */ // No operand predicates
5129 /* 1953 */ // MIs[0] sub1
5130 /* 1953 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5131 /* 1957 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5132 /* 1961 */ // MIs[1] B
5133 /* 1961 */ // No operand predicates
5134 /* 1961 */ // MIs[1] add1
5135 /* 1961 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5136 /* 1965 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5137 /* 1969 */ // MIs[2] C
5138 /* 1969 */ // No operand predicates
5139 /* 1969 */ // MIs[2] A
5140 /* 1969 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5141 /* 1974 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5142 /* 1976 */ // Combiner Rule #10: APlusBMinusCPlusA
5143 /* 1976 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5144 /* 1979 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5145 /* 1981 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5146 /* 1985 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
5147 /* 1989 */ GIR_EraseRootFromParent_Done,
5148 /* 1990 */ // Label 143: @1990
5149 /* 1990 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2013), // Rule ID 111 //
5150 /* 1995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5151 /* 1998 */ // MIs[0] dst
5152 /* 1998 */ // No operand predicates
5153 /* 1998 */ // MIs[0] lhs
5154 /* 1998 */ // No operand predicates
5155 /* 1998 */ // MIs[0] Operand 2
5156 /* 1998 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5157 /* 2002 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5158 /* 2007 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
5159 /* 2007 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5160 /* 2012 */ GIR_EraseRootFromParent_Done,
5161 /* 2013 */ // Label 144: @2013
5162 /* 2013 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2024), // Rule ID 160 //
5163 /* 2018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
5164 /* 2021 */ // MIs[0] root
5165 /* 2021 */ // No operand predicates
5166 /* 2021 */ // MIs[0] src1
5167 /* 2021 */ // No operand predicates
5168 /* 2021 */ // MIs[0] src2
5169 /* 2021 */ // No operand predicates
5170 /* 2021 */ // Combiner Rule #116: reassoc_comm_binops
5171 /* 2021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
5172 /* 2024 */ // Label 145: @2024
5173 /* 2024 */ GIM_Reject,
5174 /* 2025 */ // Label 2: @2025
5175 /* 2025 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2036), // Rule ID 101 //
5176 /* 2030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5177 /* 2033 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_SUB'
5178 /* 2033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5179 /* 2036 */ // Label 146: @2036
5180 /* 2036 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2047), // Rule ID 268 //
5181 /* 2041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5182 /* 2044 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SUB'
5183 /* 2044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5184 /* 2047 */ // Label 147: @2047
5185 /* 2047 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2058), // Rule ID 321 //
5186 /* 2052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5187 /* 2055 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SUB'
5188 /* 2055 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5189 /* 2058 */ // Label 148: @2058
5190 /* 2058 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2069), // Rule ID 354 //
5191 /* 2063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
5192 /* 2066 */ // Combiner Rule #217: sub_add_reg; wip_match_opcode 'G_SUB'
5193 /* 2066 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5194 /* 2069 */ // Label 149: @2069
5195 /* 2069 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2080), // Rule ID 394 //
5196 /* 2074 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5197 /* 2077 */ // Combiner Rule #230: simplify_neg_minmax; wip_match_opcode 'G_SUB'
5198 /* 2077 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
5199 /* 2080 */ // Label 150: @2080
5200 /* 2080 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2157), // Rule ID 428 //
5201 /* 2085 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
5202 /* 2088 */ // MIs[0] dst
5203 /* 2088 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5204 /* 2092 */ // MIs[0] sub1
5205 /* 2092 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5206 /* 2096 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5207 /* 2100 */ // MIs[1] a
5208 /* 2100 */ // No operand predicates
5209 /* 2100 */ // MIs[1] b
5210 /* 2100 */ // No operand predicates
5211 /* 2100 */ // MIs[0] Operand 2
5212 /* 2100 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5213 /* 2104 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5214 /* 2108 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5215 /* 2110 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5216 /* 2113 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5217 /* 2123 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5218 /* 2126 */ // Combiner Rule #261: sub_one_from_sub
5219 /* 2126 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5220 /* 2129 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5221 /* 2134 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
5222 /* 2138 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5223 /* 2141 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5224 /* 2145 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5225 /* 2149 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5226 /* 2152 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
5227 /* 2156 */ GIR_EraseRootFromParent_Done,
5228 /* 2157 */ // Label 151: @2157
5229 /* 2157 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2251), // Rule ID 434 //
5230 /* 2162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule265Enabled),
5231 /* 2165 */ // MIs[0] root
5232 /* 2165 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5233 /* 2169 */ // MIs[0] Operand 1
5234 /* 2169 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5235 /* 2173 */ // MIs[0] max
5236 /* 2173 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5237 /* 2177 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
5238 /* 2181 */ // MIs[1] A
5239 /* 2181 */ // No operand predicates
5240 /* 2181 */ // MIs[1] sub
5241 /* 2181 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5242 /* 2185 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5243 /* 2189 */ // MIs[2] Operand 1
5244 /* 2189 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5245 /* 2193 */ // MIs[2] A
5246 /* 2193 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5247 /* 2198 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
5248 /* 2202 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5249 /* 2204 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5250 /* 2207 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5251 /* 2217 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5252 /* 2220 */ // Combiner Rule #265: SubSmaxSub
5253 /* 2220 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5254 /* 2223 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5255 /* 2228 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5256 /* 2231 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5257 /* 2235 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
5258 /* 2239 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5259 /* 2243 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5260 /* 2247 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5261 /* 2250 */ GIR_EraseRootFromParent_Done,
5262 /* 2251 */ // Label 152: @2251
5263 /* 2251 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2345), // Rule ID 435 //
5264 /* 2256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule266Enabled),
5265 /* 2259 */ // MIs[0] root
5266 /* 2259 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5267 /* 2263 */ // MIs[0] Operand 1
5268 /* 2263 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5269 /* 2267 */ // MIs[0] max
5270 /* 2267 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5271 /* 2271 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
5272 /* 2275 */ // MIs[1] A
5273 /* 2275 */ // No operand predicates
5274 /* 2275 */ // MIs[1] sub
5275 /* 2275 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5276 /* 2279 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5277 /* 2283 */ // MIs[2] Operand 1
5278 /* 2283 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5279 /* 2287 */ // MIs[2] A
5280 /* 2287 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5281 /* 2292 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
5282 /* 2296 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5283 /* 2298 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5284 /* 2301 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5285 /* 2311 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5286 /* 2314 */ // Combiner Rule #266: SubUmaxSub
5287 /* 2314 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5288 /* 2317 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5289 /* 2322 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5290 /* 2325 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5291 /* 2329 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
5292 /* 2333 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5293 /* 2337 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5294 /* 2341 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5295 /* 2344 */ GIR_EraseRootFromParent_Done,
5296 /* 2345 */ // Label 153: @2345
5297 /* 2345 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2385), // Rule ID 432 //
5298 /* 2350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
5299 /* 2353 */ // MIs[0] root
5300 /* 2353 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5301 /* 2357 */ // MIs[0] Operand 1
5302 /* 2357 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
5303 /* 2361 */ // MIs[0] op1
5304 /* 2361 */ // No operand predicates
5305 /* 2361 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5306 /* 2364 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
5307 /* 2374 */ // Combiner Rule #263: sub_minus_one
5308 /* 2374 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5309 /* 2377 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5310 /* 2379 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
5311 /* 2381 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5312 /* 2384 */ GIR_EraseRootFromParent_Done,
5313 /* 2385 */ // Label 154: @2385
5314 /* 2385 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2485), // Rule ID 433 //
5315 /* 2390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule264Enabled),
5316 /* 2393 */ // MIs[0] d
5317 /* 2393 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5318 /* 2397 */ // MIs[0] a
5319 /* 2397 */ // No operand predicates
5320 /* 2397 */ // MIs[0] mul
5321 /* 2397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5322 /* 2401 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5323 /* 2405 */ // MIs[1] x
5324 /* 2405 */ // No operand predicates
5325 /* 2405 */ // MIs[1] c
5326 /* 2405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5327 /* 2409 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5328 /* 2413 */ // MIs[2] imm
5329 /* 2413 */ // No operand predicates
5330 /* 2413 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5331 /* 2417 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5332 /* 2419 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5333 /* 2422 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5334 /* 2425 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5335 /* 2435 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5336 /* 2438 */ // Combiner Rule #264: sub_of_mul_const
5337 /* 2438 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5338 /* 2441 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5339 /* 2446 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5340 /* 2449 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
5341 /* 2453 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
5342 /* 2457 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5343 /* 2462 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5344 /* 2466 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5345 /* 2469 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5346 /* 2473 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
5347 /* 2477 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
5348 /* 2481 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5349 /* 2484 */ GIR_EraseRootFromParent_Done,
5350 /* 2485 */ // Label 155: @2485
5351 /* 2485 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2546), // Rule ID 9 //
5352 /* 2490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
5353 /* 2493 */ // MIs[0] root
5354 /* 2493 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5355 /* 2497 */ // MIs[0] A
5356 /* 2497 */ // No operand predicates
5357 /* 2497 */ // MIs[0] sub1
5358 /* 2497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5359 /* 2501 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5360 /* 2505 */ // MIs[1] B
5361 /* 2505 */ // No operand predicates
5362 /* 2505 */ // MIs[1] C
5363 /* 2505 */ // No operand predicates
5364 /* 2505 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5365 /* 2509 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5366 /* 2511 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5367 /* 2514 */ // Combiner Rule #9: AMinusBMinusC
5368 /* 2514 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5369 /* 2517 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5370 /* 2522 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
5371 /* 2526 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5372 /* 2530 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5373 /* 2534 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5374 /* 2538 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
5375 /* 2542 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5376 /* 2545 */ GIR_EraseRootFromParent_Done,
5377 /* 2546 */ // Label 156: @2546
5378 /* 2546 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2591), // Rule ID 0 //
5379 /* 2551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
5380 /* 2554 */ // MIs[0] root
5381 /* 2554 */ // No operand predicates
5382 /* 2554 */ // MIs[0] add1
5383 /* 2554 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5384 /* 2558 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5385 /* 2562 */ // MIs[1] A
5386 /* 2562 */ // No operand predicates
5387 /* 2562 */ // MIs[1] sub1
5388 /* 2562 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5389 /* 2566 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5390 /* 2570 */ // MIs[2] B
5391 /* 2570 */ // No operand predicates
5392 /* 2570 */ // MIs[2] C
5393 /* 2570 */ // No operand predicates
5394 /* 2570 */ // MIs[0] B
5395 /* 2570 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5396 /* 2575 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5397 /* 2577 */ // Combiner Rule #0: APlusBMinusCMinusB
5398 /* 2577 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5399 /* 2580 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5400 /* 2582 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5401 /* 2586 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5402 /* 2590 */ GIR_EraseRootFromParent_Done,
5403 /* 2591 */ // Label 157: @2591
5404 /* 2591 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2628), // Rule ID 14 //
5405 /* 2596 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5406 /* 2599 */ // MIs[0] root
5407 /* 2599 */ // No operand predicates
5408 /* 2599 */ // MIs[0] add
5409 /* 2599 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5410 /* 2603 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5411 /* 2607 */ // MIs[1] A
5412 /* 2607 */ // No operand predicates
5413 /* 2607 */ // MIs[1] c1
5414 /* 2607 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5415 /* 2611 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5416 /* 2615 */ // MIs[2] imm1
5417 /* 2615 */ // No operand predicates
5418 /* 2615 */ // MIs[0] c2
5419 /* 2615 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5420 /* 2619 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5421 /* 2623 */ // MIs[3] imm2
5422 /* 2623 */ // No operand predicates
5423 /* 2623 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5424 /* 2625 */ // Combiner Rule #14: APlusC1MinusC2
5425 /* 2625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
5426 /* 2628 */ // Label 158: @2628
5427 /* 2628 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2665), // Rule ID 17 //
5428 /* 2633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5429 /* 2636 */ // MIs[0] root
5430 /* 2636 */ // No operand predicates
5431 /* 2636 */ // MIs[0] sub1
5432 /* 2636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5433 /* 2640 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5434 /* 2644 */ // MIs[1] c1
5435 /* 2644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5436 /* 2648 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5437 /* 2652 */ // MIs[2] imm1
5438 /* 2652 */ // No operand predicates
5439 /* 2652 */ // MIs[1] A
5440 /* 2652 */ // No operand predicates
5441 /* 2652 */ // MIs[0] c2
5442 /* 2652 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5443 /* 2656 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5444 /* 2660 */ // MIs[3] imm2
5445 /* 2660 */ // No operand predicates
5446 /* 2660 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5447 /* 2662 */ // Combiner Rule #17: C1Minus2MinusC2
5448 /* 2662 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5449 /* 2665 */ // Label 159: @2665
5450 /* 2665 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2710), // Rule ID 1 //
5451 /* 2670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5452 /* 2673 */ // MIs[0] root
5453 /* 2673 */ // No operand predicates
5454 /* 2673 */ // MIs[0] sub2
5455 /* 2673 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5456 /* 2677 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5457 /* 2681 */ // MIs[1] A
5458 /* 2681 */ // No operand predicates
5459 /* 2681 */ // MIs[1] sub1
5460 /* 2681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5461 /* 2685 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5462 /* 2689 */ // MIs[2] B
5463 /* 2689 */ // No operand predicates
5464 /* 2689 */ // MIs[2] C
5465 /* 2689 */ // No operand predicates
5466 /* 2689 */ // MIs[0] C
5467 /* 2689 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5468 /* 2694 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5469 /* 2696 */ // Combiner Rule #1: AMinusBMinusCMinusC
5470 /* 2696 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5471 /* 2699 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5472 /* 2701 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5473 /* 2705 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5474 /* 2709 */ GIR_EraseRootFromParent_Done,
5475 /* 2710 */ // Label 160: @2710
5476 /* 2710 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2747), // Rule ID 16 //
5477 /* 2715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5478 /* 2718 */ // MIs[0] root
5479 /* 2718 */ // No operand predicates
5480 /* 2718 */ // MIs[0] sub1
5481 /* 2718 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5482 /* 2722 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5483 /* 2726 */ // MIs[1] A
5484 /* 2726 */ // No operand predicates
5485 /* 2726 */ // MIs[1] c1
5486 /* 2726 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5487 /* 2730 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5488 /* 2734 */ // MIs[2] imm1
5489 /* 2734 */ // No operand predicates
5490 /* 2734 */ // MIs[0] c2
5491 /* 2734 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5492 /* 2738 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5493 /* 2742 */ // MIs[3] imm2
5494 /* 2742 */ // No operand predicates
5495 /* 2742 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5496 /* 2744 */ // Combiner Rule #16: AMinusC1MinusC2
5497 /* 2744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5498 /* 2747 */ // Label 161: @2747
5499 /* 2747 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2776), // Rule ID 453 //
5500 /* 2752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule281Enabled),
5501 /* 2755 */ // MIs[0] dst
5502 /* 2755 */ // No operand predicates
5503 /* 2755 */ // MIs[0] ext1
5504 /* 2755 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5505 /* 2759 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5506 /* 2763 */ // MIs[1] src1
5507 /* 2763 */ // No operand predicates
5508 /* 2763 */ // MIs[0] ext2
5509 /* 2763 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5510 /* 2767 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
5511 /* 2771 */ // MIs[2] src2
5512 /* 2771 */ // No operand predicates
5513 /* 2771 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5514 /* 2773 */ // Combiner Rule #281: push_sub_through_sext
5515 /* 2773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
5516 /* 2776 */ // Label 162: @2776
5517 /* 2776 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2805), // Rule ID 450 //
5518 /* 2781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
5519 /* 2784 */ // MIs[0] dst
5520 /* 2784 */ // No operand predicates
5521 /* 2784 */ // MIs[0] ext1
5522 /* 2784 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5523 /* 2788 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5524 /* 2792 */ // MIs[1] src1
5525 /* 2792 */ // No operand predicates
5526 /* 2792 */ // MIs[0] ext2
5527 /* 2792 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5528 /* 2796 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5529 /* 2800 */ // MIs[2] src2
5530 /* 2800 */ // No operand predicates
5531 /* 2800 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5532 /* 2802 */ // Combiner Rule #278: push_sub_through_zext
5533 /* 2802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
5534 /* 2805 */ // Label 163: @2805
5535 /* 2805 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2848), // Rule ID 170 //
5536 /* 2810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5537 /* 2813 */ // MIs[0] dst
5538 /* 2813 */ // No operand predicates
5539 /* 2813 */ // MIs[0] Operand 1
5540 /* 2813 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5541 /* 2817 */ // MIs[0] and
5542 /* 2817 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5543 /* 2821 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5544 /* 2825 */ // MIs[1] x
5545 /* 2825 */ // No operand predicates
5546 /* 2825 */ // MIs[1] Operand 2
5547 /* 2825 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5548 /* 2829 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
5549 /* 2833 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5550 /* 2835 */ // Combiner Rule #126: neg_and_one_to_sext_inreg
5551 /* 2835 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5552 /* 2838 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5553 /* 2840 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5554 /* 2844 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5555 /* 2847 */ GIR_EraseRootFromParent_Done,
5556 /* 2848 */ // Label 164: @2848
5557 /* 2848 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2885), // Rule ID 15 //
5558 /* 2853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5559 /* 2856 */ // MIs[0] root
5560 /* 2856 */ // No operand predicates
5561 /* 2856 */ // MIs[0] c2
5562 /* 2856 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5563 /* 2860 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5564 /* 2864 */ // MIs[1] imm2
5565 /* 2864 */ // No operand predicates
5566 /* 2864 */ // MIs[0] add
5567 /* 2864 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5568 /* 2868 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5569 /* 2872 */ // MIs[2] A
5570 /* 2872 */ // No operand predicates
5571 /* 2872 */ // MIs[2] c1
5572 /* 2872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5573 /* 2876 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5574 /* 2880 */ // MIs[3] imm1
5575 /* 2880 */ // No operand predicates
5576 /* 2880 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5577 /* 2882 */ // Combiner Rule #15: C2MinusAPlusC1
5578 /* 2882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5579 /* 2885 */ // Label 165: @2885
5580 /* 2885 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2924), // Rule ID 122 //
5581 /* 2890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5582 /* 2893 */ // MIs[0] dst
5583 /* 2893 */ // No operand predicates
5584 /* 2893 */ // MIs[0] x
5585 /* 2893 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5586 /* 2897 */ // MIs[0] x
5587 /* 2897 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5588 /* 2902 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5589 /* 2905 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5590 /* 2915 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
5591 /* 2915 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5592 /* 2918 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5593 /* 2920 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5594 /* 2923 */ GIR_EraseRootFromParent_Done,
5595 /* 2924 */ // Label 166: @2924
5596 /* 2924 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2958), // Rule ID 12 //
5597 /* 2929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5598 /* 2932 */ // MIs[0] root
5599 /* 2932 */ // No operand predicates
5600 /* 2932 */ // MIs[0] A
5601 /* 2932 */ // No operand predicates
5602 /* 2932 */ // MIs[0] add
5603 /* 2932 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5604 /* 2936 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5605 /* 2940 */ // MIs[1] A
5606 /* 2940 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5607 /* 2945 */ // MIs[1] B
5608 /* 2945 */ // No operand predicates
5609 /* 2945 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5610 /* 2950 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5611 /* 2952 */ // Combiner Rule #12: AMinusBMinusA
5612 /* 2952 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5613 /* 2957 */ GIR_EraseRootFromParent_Done,
5614 /* 2958 */ // Label 167: @2958
5615 /* 2958 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2992), // Rule ID 11 //
5616 /* 2963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5617 /* 2966 */ // MIs[0] root
5618 /* 2966 */ // No operand predicates
5619 /* 2966 */ // MIs[0] A
5620 /* 2966 */ // No operand predicates
5621 /* 2966 */ // MIs[0] sub1
5622 /* 2966 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5623 /* 2970 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5624 /* 2974 */ // MIs[1] Operand 1
5625 /* 2974 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5626 /* 2978 */ // MIs[1] B
5627 /* 2978 */ // No operand predicates
5628 /* 2978 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5629 /* 2980 */ // Combiner Rule #11: AMinusZeroMinusB
5630 /* 2980 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5631 /* 2983 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5632 /* 2985 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5633 /* 2987 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5634 /* 2991 */ GIR_EraseRootFromParent_Done,
5635 /* 2992 */ // Label 168: @2992
5636 /* 2992 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3019), // Rule ID 48 //
5637 /* 2997 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
5638 /* 3000 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5639 /* 3006 */ // MIs[0] root
5640 /* 3006 */ // No operand predicates
5641 /* 3006 */ // MIs[0] x
5642 /* 3006 */ // No operand predicates
5643 /* 3006 */ // MIs[0] right
5644 /* 3006 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5645 /* 3010 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5646 /* 3014 */ // MIs[1] imm
5647 /* 3014 */ // No operand predicates
5648 /* 3014 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5649 /* 3016 */ // Combiner Rule #46: sub_of_vscale
5650 /* 3016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
5651 /* 3019 */ // Label 169: @3019
5652 /* 3019 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3042), // Rule ID 110 //
5653 /* 3024 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5654 /* 3027 */ // MIs[0] dst
5655 /* 3027 */ // No operand predicates
5656 /* 3027 */ // MIs[0] lhs
5657 /* 3027 */ // No operand predicates
5658 /* 3027 */ // MIs[0] Operand 2
5659 /* 3027 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5660 /* 3031 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5661 /* 3036 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
5662 /* 3036 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5663 /* 3041 */ GIR_EraseRootFromParent_Done,
5664 /* 3042 */ // Label 170: @3042
5665 /* 3042 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3063), // Rule ID 21 //
5666 /* 3047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5667 /* 3050 */ // MIs[0] d
5668 /* 3050 */ // No operand predicates
5669 /* 3050 */ // MIs[0] op1
5670 /* 3050 */ // No operand predicates
5671 /* 3050 */ // MIs[0] c
5672 /* 3050 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5673 /* 3054 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5674 /* 3058 */ // MIs[1] imm
5675 /* 3058 */ // No operand predicates
5676 /* 3058 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5677 /* 3060 */ // Combiner Rule #21: sub_to_add
5678 /* 3060 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5679 /* 3063 */ // Label 171: @3063
5680 /* 3063 */ GIM_Reject,
5681 /* 3064 */ // Label 3: @3064
5682 /* 3064 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3075), // Rule ID 84 //
5683 /* 3069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5684 /* 3072 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_MUL'
5685 /* 3072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5686 /* 3075 */ // Label 172: @3075
5687 /* 3075 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3086), // Rule ID 265 //
5688 /* 3080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5689 /* 3083 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_MUL'
5690 /* 3083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5691 /* 3086 */ // Label 173: @3086
5692 /* 3086 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3097), // Rule ID 358 //
5693 /* 3091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5694 /* 3094 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
5695 /* 3094 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5696 /* 3097 */ // Label 174: @3097
5697 /* 3097 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3137), // Rule ID 23 //
5698 /* 3102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5699 /* 3105 */ // MIs[0] dst
5700 /* 3105 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5701 /* 3109 */ // MIs[0] x
5702 /* 3109 */ // No operand predicates
5703 /* 3109 */ // MIs[0] Operand 2
5704 /* 3109 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5705 /* 3113 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5706 /* 3116 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5707 /* 3126 */ // Combiner Rule #23: mul_by_neg_one
5708 /* 3126 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5709 /* 3129 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5710 /* 3131 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5711 /* 3134 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5712 /* 3136 */ GIR_EraseRootFromParent_Done,
5713 /* 3137 */ // Label 175: @3137
5714 /* 3137 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3166), // Rule ID 455 //
5715 /* 3142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule283Enabled),
5716 /* 3145 */ // MIs[0] dst
5717 /* 3145 */ // No operand predicates
5718 /* 3145 */ // MIs[0] ext1
5719 /* 3145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5720 /* 3149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5721 /* 3153 */ // MIs[1] src1
5722 /* 3153 */ // No operand predicates
5723 /* 3153 */ // MIs[0] ext2
5724 /* 3153 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5725 /* 3157 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
5726 /* 3161 */ // MIs[2] src2
5727 /* 3161 */ // No operand predicates
5728 /* 3161 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5729 /* 3163 */ // Combiner Rule #283: push_mul_through_sext
5730 /* 3163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
5731 /* 3166 */ // Label 176: @3166
5732 /* 3166 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3201), // Rule ID 46 //
5733 /* 3171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5734 /* 3174 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5735 /* 3180 */ // MIs[0] root
5736 /* 3180 */ // No operand predicates
5737 /* 3180 */ // MIs[0] left
5738 /* 3180 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5739 /* 3184 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5740 /* 3188 */ // MIs[1] scale
5741 /* 3188 */ // No operand predicates
5742 /* 3188 */ // MIs[0] x
5743 /* 3188 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5744 /* 3192 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5745 /* 3196 */ // MIs[2] imm1
5746 /* 3196 */ // No operand predicates
5747 /* 3196 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5748 /* 3198 */ // Combiner Rule #44: mul_of_vscale
5749 /* 3198 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
5750 /* 3201 */ // Label 177: @3201
5751 /* 3201 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3230), // Rule ID 452 //
5752 /* 3206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule280Enabled),
5753 /* 3209 */ // MIs[0] dst
5754 /* 3209 */ // No operand predicates
5755 /* 3209 */ // MIs[0] ext1
5756 /* 3209 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5757 /* 3213 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5758 /* 3217 */ // MIs[1] src1
5759 /* 3217 */ // No operand predicates
5760 /* 3217 */ // MIs[0] ext2
5761 /* 3217 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5762 /* 3221 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5763 /* 3225 */ // MIs[2] src2
5764 /* 3225 */ // No operand predicates
5765 /* 3225 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5766 /* 3227 */ // Combiner Rule #280: push_mul_through_zext
5767 /* 3227 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner166),
5768 /* 3230 */ // Label 178: @3230
5769 /* 3230 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3270), // Rule ID 131 //
5770 /* 3235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5771 /* 3238 */ // MIs[0] dst
5772 /* 3238 */ // No operand predicates
5773 /* 3238 */ // MIs[0] zero
5774 /* 3238 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5775 /* 3242 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5776 /* 3246 */ // MIs[1] Operand 1
5777 /* 3246 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5778 /* 3257 */ // MIs[0] rhs
5779 /* 3257 */ // No operand predicates
5780 /* 3257 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5781 /* 3262 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5782 /* 3264 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5783 /* 3264 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5784 /* 3269 */ GIR_EraseRootFromParent_Done,
5785 /* 3270 */ // Label 179: @3270
5786 /* 3270 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3293), // Rule ID 132 //
5787 /* 3275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5788 /* 3278 */ // MIs[0] dst
5789 /* 3278 */ // No operand predicates
5790 /* 3278 */ // MIs[0] lhs
5791 /* 3278 */ // No operand predicates
5792 /* 3278 */ // MIs[0] zero
5793 /* 3278 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5794 /* 3282 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5795 /* 3287 */ // Combiner Rule #94: binop_right_to_zero
5796 /* 3287 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5797 /* 3292 */ GIR_EraseRootFromParent_Done,
5798 /* 3293 */ // Label 180: @3293
5799 /* 3293 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3316), // Rule ID 137 //
5800 /* 3298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5801 /* 3301 */ // MIs[0] dst
5802 /* 3301 */ // No operand predicates
5803 /* 3301 */ // MIs[0] x
5804 /* 3301 */ // No operand predicates
5805 /* 3301 */ // MIs[0] Operand 2
5806 /* 3301 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5807 /* 3305 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5808 /* 3310 */ // Combiner Rule #99: right_identity_one_int
5809 /* 3310 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5810 /* 3315 */ GIR_EraseRootFromParent_Done,
5811 /* 3316 */ // Label 181: @3316
5812 /* 3316 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3327), // Rule ID 20 //
5813 /* 3321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5814 /* 3324 */ // MIs[0] d
5815 /* 3324 */ // No operand predicates
5816 /* 3324 */ // MIs[0] op1
5817 /* 3324 */ // No operand predicates
5818 /* 3324 */ // MIs[0] op2
5819 /* 3324 */ // No operand predicates
5820 /* 3324 */ // Combiner Rule #20: mul_to_shl
5821 /* 3324 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5822 /* 3327 */ // Label 182: @3327
5823 /* 3327 */ GIM_Reject,
5824 /* 3328 */ // Label 4: @3328
5825 /* 3328 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3339), // Rule ID 236 //
5826 /* 3333 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5827 /* 3336 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5828 /* 3336 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5829 /* 3339 */ // Label 183: @3339
5830 /* 3339 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3350), // Rule ID 271 //
5831 /* 3344 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5832 /* 3347 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SDIV'
5833 /* 3347 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5834 /* 3350 */ // Label 184: @3350
5835 /* 3350 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3361), // Rule ID 326 //
5836 /* 3355 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5837 /* 3358 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5838 /* 3358 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5839 /* 3361 */ // Label 185: @3361
5840 /* 3361 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3401), // Rule ID 127 //
5841 /* 3366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5842 /* 3369 */ // MIs[0] dst
5843 /* 3369 */ // No operand predicates
5844 /* 3369 */ // MIs[0] zero
5845 /* 3369 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5846 /* 3373 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5847 /* 3377 */ // MIs[1] Operand 1
5848 /* 3377 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5849 /* 3388 */ // MIs[0] rhs
5850 /* 3388 */ // No operand predicates
5851 /* 3388 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5852 /* 3393 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5853 /* 3395 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5854 /* 3395 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5855 /* 3400 */ GIR_EraseRootFromParent_Done,
5856 /* 3401 */ // Label 186: @3401
5857 /* 3401 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3418), // Rule ID 350 //
5858 /* 3406 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5859 /* 3409 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5860 /* 3415 */ // MIs[0] dst
5861 /* 3415 */ // No operand predicates
5862 /* 3415 */ // MIs[0] x
5863 /* 3415 */ // No operand predicates
5864 /* 3415 */ // MIs[0] y
5865 /* 3415 */ // No operand predicates
5866 /* 3415 */ // Combiner Rule #213: sdiv_by_pow2
5867 /* 3415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
5868 /* 3418 */ // Label 187: @3418
5869 /* 3418 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3429), // Rule ID 352 //
5870 /* 3423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5871 /* 3426 */ // MIs[0] dst
5872 /* 3426 */ // No operand predicates
5873 /* 3426 */ // MIs[0] x
5874 /* 3426 */ // No operand predicates
5875 /* 3426 */ // MIs[0] y
5876 /* 3426 */ // No operand predicates
5877 /* 3426 */ // Combiner Rule #215: sdiv_by_const
5878 /* 3426 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5879 /* 3429 */ // Label 188: @3429
5880 /* 3429 */ GIM_Reject,
5881 /* 3430 */ // Label 5: @3430
5882 /* 3430 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3441), // Rule ID 87 //
5883 /* 3435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5884 /* 3438 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5885 /* 3438 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5886 /* 3441 */ // Label 189: @3441
5887 /* 3441 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3452), // Rule ID 237 //
5888 /* 3446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5889 /* 3449 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5890 /* 3449 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5891 /* 3452 */ // Label 190: @3452
5892 /* 3452 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3463), // Rule ID 270 //
5893 /* 3457 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5894 /* 3460 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UDIV'
5895 /* 3460 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5896 /* 3463 */ // Label 191: @3463
5897 /* 3463 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3474), // Rule ID 328 //
5898 /* 3468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5899 /* 3471 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5900 /* 3471 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5901 /* 3474 */ // Label 192: @3474
5902 /* 3474 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3514), // Rule ID 128 //
5903 /* 3479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5904 /* 3482 */ // MIs[0] dst
5905 /* 3482 */ // No operand predicates
5906 /* 3482 */ // MIs[0] zero
5907 /* 3482 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5908 /* 3486 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5909 /* 3490 */ // MIs[1] Operand 1
5910 /* 3490 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5911 /* 3501 */ // MIs[0] rhs
5912 /* 3501 */ // No operand predicates
5913 /* 3501 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5914 /* 3506 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5915 /* 3508 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5916 /* 3508 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5917 /* 3513 */ GIR_EraseRootFromParent_Done,
5918 /* 3514 */ // Label 193: @3514
5919 /* 3514 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3531), // Rule ID 349 //
5920 /* 3519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
5921 /* 3522 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5922 /* 3528 */ // MIs[0] dst
5923 /* 3528 */ // No operand predicates
5924 /* 3528 */ // MIs[0] x
5925 /* 3528 */ // No operand predicates
5926 /* 3528 */ // MIs[0] y
5927 /* 3528 */ // No operand predicates
5928 /* 3528 */ // Combiner Rule #212: udiv_by_pow2
5929 /* 3528 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
5930 /* 3531 */ // Label 194: @3531
5931 /* 3531 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3542), // Rule ID 351 //
5932 /* 3536 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
5933 /* 3539 */ // MIs[0] dst
5934 /* 3539 */ // No operand predicates
5935 /* 3539 */ // MIs[0] x
5936 /* 3539 */ // No operand predicates
5937 /* 3539 */ // MIs[0] y
5938 /* 3539 */ // No operand predicates
5939 /* 3539 */ // Combiner Rule #214: udiv_by_const
5940 /* 3539 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5941 /* 3542 */ // Label 195: @3542
5942 /* 3542 */ GIM_Reject,
5943 /* 3543 */ // Label 6: @3543
5944 /* 3543 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3554), // Rule ID 238 //
5945 /* 3548 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5946 /* 3551 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5947 /* 3551 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5948 /* 3554 */ // Label 196: @3554
5949 /* 3554 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3565), // Rule ID 273 //
5950 /* 3559 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5951 /* 3562 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SREM'
5952 /* 3562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5953 /* 3565 */ // Label 197: @3565
5954 /* 3565 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3576), // Rule ID 327 //
5955 /* 3570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5956 /* 3573 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SREM'
5957 /* 3573 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5958 /* 3576 */ // Label 198: @3576
5959 /* 3576 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3616), // Rule ID 129 //
5960 /* 3581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5961 /* 3584 */ // MIs[0] dst
5962 /* 3584 */ // No operand predicates
5963 /* 3584 */ // MIs[0] zero
5964 /* 3584 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5965 /* 3588 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5966 /* 3592 */ // MIs[1] Operand 1
5967 /* 3592 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5968 /* 3603 */ // MIs[0] rhs
5969 /* 3603 */ // No operand predicates
5970 /* 3603 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5971 /* 3608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5972 /* 3610 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5973 /* 3610 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5974 /* 3615 */ GIR_EraseRootFromParent_Done,
5975 /* 3616 */ // Label 199: @3616
5976 /* 3616 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3627), // Rule ID 346 //
5977 /* 3621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
5978 /* 3624 */ // MIs[0] dst
5979 /* 3624 */ // No operand predicates
5980 /* 3624 */ // MIs[0] x
5981 /* 3624 */ // No operand predicates
5982 /* 3624 */ // MIs[0] y
5983 /* 3624 */ // No operand predicates
5984 /* 3624 */ // Combiner Rule #209: srem_pow2_to_mask
5985 /* 3624 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5986 /* 3627 */ // Label 200: @3627
5987 /* 3627 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3638), // Rule ID 348 //
5988 /* 3632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5989 /* 3635 */ // MIs[0] dst
5990 /* 3635 */ // No operand predicates
5991 /* 3635 */ // MIs[0] x
5992 /* 3635 */ // No operand predicates
5993 /* 3635 */ // MIs[0] y
5994 /* 3635 */ // No operand predicates
5995 /* 3635 */ // Combiner Rule #211: srem_by_const
5996 /* 3635 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5997 /* 3638 */ // Label 201: @3638
5998 /* 3638 */ GIM_Reject,
5999 /* 3639 */ // Label 7: @3639
6000 /* 3639 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3650), // Rule ID 88 //
6001 /* 3644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6002 /* 3647 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
6003 /* 3647 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6004 /* 3650 */ // Label 202: @3650
6005 /* 3650 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3661), // Rule ID 239 //
6006 /* 3655 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
6007 /* 3658 */ // Combiner Rule #176: div_rem_to_divrem; wip_match_opcode 'G_UREM'
6008 /* 3658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
6009 /* 3661 */ // Label 203: @3661
6010 /* 3661 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3672), // Rule ID 272 //
6011 /* 3666 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6012 /* 3669 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UREM'
6013 /* 3669 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6014 /* 3672 */ // Label 204: @3672
6015 /* 3672 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3683), // Rule ID 329 //
6016 /* 3677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6017 /* 3680 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UREM'
6018 /* 3680 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6019 /* 3683 */ // Label 205: @3683
6020 /* 3683 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3723), // Rule ID 130 //
6021 /* 3688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6022 /* 3691 */ // MIs[0] dst
6023 /* 3691 */ // No operand predicates
6024 /* 3691 */ // MIs[0] zero
6025 /* 3691 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6026 /* 3695 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6027 /* 3699 */ // MIs[1] Operand 1
6028 /* 3699 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6029 /* 3710 */ // MIs[0] rhs
6030 /* 3710 */ // No operand predicates
6031 /* 3710 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6032 /* 3715 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6033 /* 3717 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
6034 /* 3717 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6035 /* 3722 */ GIR_EraseRootFromParent_Done,
6036 /* 3723 */ // Label 206: @3723
6037 /* 3723 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3734), // Rule ID 187 //
6038 /* 3728 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
6039 /* 3731 */ // MIs[0] dst
6040 /* 3731 */ // No operand predicates
6041 /* 3731 */ // MIs[0] x
6042 /* 3731 */ // No operand predicates
6043 /* 3731 */ // MIs[0] y
6044 /* 3731 */ // No operand predicates
6045 /* 3731 */ // Combiner Rule #143: urem_pow2_to_mask
6046 /* 3731 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6047 /* 3734 */ // Label 207: @3734
6048 /* 3734 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3745), // Rule ID 347 //
6049 /* 3739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6050 /* 3742 */ // MIs[0] dst
6051 /* 3742 */ // No operand predicates
6052 /* 3742 */ // MIs[0] x
6053 /* 3742 */ // No operand predicates
6054 /* 3742 */ // MIs[0] y
6055 /* 3742 */ // No operand predicates
6056 /* 3742 */ // Combiner Rule #210: urem_by_const
6057 /* 3742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
6058 /* 3745 */ // Label 208: @3745
6059 /* 3745 */ GIM_Reject,
6060 /* 3746 */ // Label 8: @3746
6061 /* 3746 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3757), // Rule ID 79 //
6062 /* 3751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
6063 /* 3754 */ // Combiner Rule #75: load_and_mask; wip_match_opcode 'G_AND'
6064 /* 3754 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6065 /* 3757 */ // Label 209: @3757
6066 /* 3757 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3768), // Rule ID 83 //
6067 /* 3762 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6068 /* 3765 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_AND'
6069 /* 3765 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
6070 /* 3768 */ // Label 210: @3768
6071 /* 3768 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3779), // Rule ID 153 //
6072 /* 3773 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6073 /* 3776 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
6074 /* 3776 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6075 /* 3779 */ // Label 211: @3779
6076 /* 3779 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3790), // Rule ID 173 //
6077 /* 3784 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6078 /* 3787 */ // Combiner Rule #129: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
6079 /* 3787 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
6080 /* 3790 */ // Label 212: @3790
6081 /* 3790 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3801), // Rule ID 185 //
6082 /* 3795 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
6083 /* 3798 */ // Combiner Rule #141: redundant_and; wip_match_opcode 'G_AND'
6084 /* 3798 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
6085 /* 3801 */ // Label 213: @3801
6086 /* 3801 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3812), // Rule ID 209 //
6087 /* 3806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
6088 /* 3809 */ // Combiner Rule #165: overlapping_and; wip_match_opcode 'G_AND'
6089 /* 3809 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6090 /* 3812 */ // Label 214: @3812
6091 /* 3812 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3823), // Rule ID 262 //
6092 /* 3817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6093 /* 3820 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_AND'
6094 /* 3820 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6095 /* 3823 */ // Label 215: @3823
6096 /* 3823 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3834), // Rule ID 311 //
6097 /* 3828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
6098 /* 3831 */ // Combiner Rule #199: and_or_disjoint_mask; wip_match_opcode 'G_AND'
6099 /* 3831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
6100 /* 3834 */ // Label 216: @3834
6101 /* 3834 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3845), // Rule ID 323 //
6102 /* 3839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6103 /* 3842 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_AND'
6104 /* 3842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6105 /* 3845 */ // Label 217: @3845
6106 /* 3845 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3856), // Rule ID 359 //
6107 /* 3850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
6108 /* 3853 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
6109 /* 3853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
6110 /* 3856 */ // Label 218: @3856
6111 /* 3856 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3867), // Rule ID 386 //
6112 /* 3861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
6113 /* 3864 */ // Combiner Rule #222: match_ands; wip_match_opcode 'G_AND'
6114 /* 3864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
6115 /* 3867 */ // Label 219: @3867
6116 /* 3867 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3878), // Rule ID 429 //
6117 /* 3872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
6118 /* 3875 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_AND'
6119 /* 3875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
6120 /* 3878 */ // Label 220: @3878
6121 /* 3878 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3964), // Rule ID 391 //
6122 /* 3883 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6123 /* 3886 */ // MIs[0] root
6124 /* 3886 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6125 /* 3890 */ // MIs[0] or
6126 /* 3890 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6127 /* 3894 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6128 /* 3898 */ // MIs[1] x
6129 /* 3898 */ // No operand predicates
6130 /* 3898 */ // MIs[1] y
6131 /* 3898 */ // No operand predicates
6132 /* 3898 */ // MIs[0] not
6133 /* 3898 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6134 /* 3902 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6135 /* 3906 */ // MIs[2] y
6136 /* 3906 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6137 /* 3911 */ // MIs[2] Operand 2
6138 /* 3911 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6139 /* 3915 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6140 /* 3917 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6141 /* 3920 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6142 /* 3930 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6143 /* 3933 */ // Combiner Rule #227: and_xor_or_to_xor_and
6144 /* 3933 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6145 /* 3936 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6146 /* 3941 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6147 /* 3945 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6148 /* 3948 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6149 /* 3952 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6150 /* 3956 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6151 /* 3960 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6152 /* 3963 */ GIR_EraseRootFromParent_Done,
6153 /* 3964 */ // Label 221: @3964
6154 /* 3964 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4062), // Rule ID 166 //
6155 /* 3969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6156 /* 3972 */ // MIs[0] root
6157 /* 3972 */ // No operand predicates
6158 /* 3972 */ // MIs[0] d1
6159 /* 3972 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6160 /* 3976 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6161 /* 3980 */ // MIs[1] p
6162 /* 3980 */ // No operand predicates
6163 /* 3980 */ // MIs[1] s1
6164 /* 3980 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6165 /* 3984 */ // MIs[1] Operand 3
6166 /* 3984 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6167 /* 3988 */ // MIs[0] d2
6168 /* 3988 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6169 /* 3992 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6170 /* 3996 */ // MIs[2] p
6171 /* 3996 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6172 /* 4001 */ // MIs[2] s2
6173 /* 4001 */ // No operand predicates
6174 /* 4001 */ // MIs[2] Operand 3
6175 /* 4001 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6176 /* 4005 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
6177 /* 4009 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6178 /* 4011 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6179 /* 4014 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6180 /* 4024 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6181 /* 4027 */ // Combiner Rule #122: double_icmp_zero_and_combine
6182 /* 4027 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6183 /* 4030 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6184 /* 4035 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6185 /* 4039 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6186 /* 4043 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6187 /* 4047 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6188 /* 4051 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6189 /* 4055 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6190 /* 4058 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6191 /* 4061 */ GIR_EraseRootFromParent_Done,
6192 /* 4062 */ // Label 222: @4062
6193 /* 4062 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4099), // Rule ID 255 //
6194 /* 4067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
6195 /* 4070 */ // MIs[0] root
6196 /* 4070 */ // No operand predicates
6197 /* 4070 */ // MIs[0] shift
6198 /* 4070 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6199 /* 4074 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6200 /* 4078 */ // MIs[1] x
6201 /* 4078 */ // No operand predicates
6202 /* 4078 */ // MIs[1] lsb
6203 /* 4078 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6204 /* 4082 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6205 /* 4086 */ // MIs[2] imm1
6206 /* 4086 */ // No operand predicates
6207 /* 4086 */ // MIs[0] mask
6208 /* 4086 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
6209 /* 4090 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6210 /* 4094 */ // MIs[3] imm2
6211 /* 4094 */ // No operand predicates
6212 /* 4094 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
6213 /* 4096 */ // Combiner Rule #188: bitfield_extract_from_and
6214 /* 4096 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6215 /* 4099 */ // Label 223: @4099
6216 /* 4099 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4148), // Rule ID 390 //
6217 /* 4104 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
6218 /* 4107 */ // MIs[0] root
6219 /* 4107 */ // No operand predicates
6220 /* 4107 */ // MIs[0] or
6221 /* 4107 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6222 /* 4111 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6223 /* 4115 */ // MIs[1] x
6224 /* 4115 */ // No operand predicates
6225 /* 4115 */ // MIs[1] not
6226 /* 4115 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6227 /* 4119 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6228 /* 4123 */ // MIs[2] y
6229 /* 4123 */ // No operand predicates
6230 /* 4123 */ // MIs[2] Operand 2
6231 /* 4123 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6232 /* 4127 */ // MIs[0] y
6233 /* 4127 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6234 /* 4132 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6235 /* 4134 */ // Combiner Rule #226: and_xor_or_to_and
6236 /* 4134 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6237 /* 4137 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6238 /* 4139 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6239 /* 4143 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6240 /* 4147 */ GIR_EraseRootFromParent_Done,
6241 /* 4148 */ // Label 224: @4148
6242 /* 4148 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4172), // Rule ID 120 //
6243 /* 4153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6244 /* 4156 */ // MIs[0] dst
6245 /* 4156 */ // No operand predicates
6246 /* 4156 */ // MIs[0] src
6247 /* 4156 */ // No operand predicates
6248 /* 4156 */ // MIs[0] src
6249 /* 4156 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6250 /* 4161 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6251 /* 4166 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
6252 /* 4166 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6253 /* 4171 */ GIR_EraseRootFromParent_Done,
6254 /* 4172 */ // Label 225: @4172
6255 /* 4172 */ GIM_Reject,
6256 /* 4173 */ // Label 9: @4173
6257 /* 4173 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4184), // Rule ID 85 //
6258 /* 4178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6259 /* 4181 */ // Combiner Rule #79: undef_to_negative_one; wip_match_opcode 'G_OR'
6260 /* 4181 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
6261 /* 4184 */ // Label 226: @4184
6262 /* 4184 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4195), // Rule ID 154 //
6263 /* 4189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6264 /* 4192 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
6265 /* 4192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6266 /* 4195 */ // Label 227: @4195
6267 /* 4195 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4206), // Rule ID 186 //
6268 /* 4200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
6269 /* 4203 */ // Combiner Rule #142: redundant_or; wip_match_opcode 'G_OR'
6270 /* 4203 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
6271 /* 4206 */ // Label 228: @4206
6272 /* 4206 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4217), // Rule ID 235 //
6273 /* 4211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
6274 /* 4214 */ // Combiner Rule #175: load_or_combine; wip_match_opcode 'G_OR'
6275 /* 4214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6276 /* 4217 */ // Label 229: @4217
6277 /* 4217 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4228), // Rule ID 240 //
6278 /* 4222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6279 /* 4225 */ // Combiner Rule #177: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
6280 /* 4225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6281 /* 4228 */ // Label 230: @4228
6282 /* 4228 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4239), // Rule ID 266 //
6283 /* 4233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6284 /* 4236 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_OR'
6285 /* 4236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6286 /* 4239 */ // Label 231: @4239
6287 /* 4239 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4250), // Rule ID 324 //
6288 /* 4244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6289 /* 4247 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_OR'
6290 /* 4247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6291 /* 4250 */ // Label 232: @4250
6292 /* 4250 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4261), // Rule ID 360 //
6293 /* 4255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
6294 /* 4258 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
6295 /* 4258 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
6296 /* 4261 */ // Label 233: @4261
6297 /* 4261 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4272), // Rule ID 387 //
6298 /* 4266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
6299 /* 4269 */ // Combiner Rule #223: match_ors; wip_match_opcode 'G_OR'
6300 /* 4269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6301 /* 4272 */ // Label 234: @4272
6302 /* 4272 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4283), // Rule ID 430 //
6303 /* 4277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
6304 /* 4280 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_OR'
6305 /* 4280 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
6306 /* 4283 */ // Label 235: @4283
6307 /* 4283 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4369), // Rule ID 389 //
6308 /* 4288 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
6309 /* 4291 */ // MIs[0] root
6310 /* 4291 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6311 /* 4295 */ // MIs[0] and
6312 /* 4295 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6313 /* 4299 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6314 /* 4303 */ // MIs[1] x
6315 /* 4303 */ // No operand predicates
6316 /* 4303 */ // MIs[1] y
6317 /* 4303 */ // No operand predicates
6318 /* 4303 */ // MIs[0] not
6319 /* 4303 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6320 /* 4307 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6321 /* 4311 */ // MIs[2] y
6322 /* 4311 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6323 /* 4316 */ // MIs[2] Operand 2
6324 /* 4316 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6325 /* 4320 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6326 /* 4322 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6327 /* 4325 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6328 /* 4335 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6329 /* 4338 */ // Combiner Rule #225: or_and_xor_to_xor_or
6330 /* 4338 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6331 /* 4341 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6332 /* 4346 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6333 /* 4350 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6334 /* 4353 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6335 /* 4357 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6336 /* 4361 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6337 /* 4365 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6338 /* 4368 */ GIR_EraseRootFromParent_Done,
6339 /* 4369 */ // Label 236: @4369
6340 /* 4369 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4416), // Rule ID 247 //
6341 /* 4374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6342 /* 4377 */ // MIs[0] root
6343 /* 4377 */ // No operand predicates
6344 /* 4377 */ // MIs[0] out1
6345 /* 4377 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6346 /* 4381 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
6347 /* 4385 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6348 /* 4385 */ // No operand predicates
6349 /* 4385 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6350 /* 4385 */ // No operand predicates
6351 /* 4385 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6352 /* 4385 */ // No operand predicates
6353 /* 4385 */ // MIs[0] out2
6354 /* 4385 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6355 /* 4389 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
6356 /* 4393 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6357 /* 4393 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6358 /* 4398 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6359 /* 4398 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6360 /* 4403 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6361 /* 4408 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6362 /* 4410 */ // Combiner Rule #182: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
6363 /* 4410 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6364 /* 4415 */ GIR_EraseRootFromParent_Done,
6365 /* 4416 */ // Label 237: @4416
6366 /* 4416 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4463), // Rule ID 249 //
6367 /* 4421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6368 /* 4424 */ // MIs[0] root
6369 /* 4424 */ // No operand predicates
6370 /* 4424 */ // MIs[0] out1
6371 /* 4424 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6372 /* 4428 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
6373 /* 4432 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6374 /* 4432 */ // No operand predicates
6375 /* 4432 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6376 /* 4432 */ // No operand predicates
6377 /* 4432 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6378 /* 4432 */ // No operand predicates
6379 /* 4432 */ // MIs[0] out2
6380 /* 4432 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6381 /* 4436 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6382 /* 4440 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6383 /* 4440 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6384 /* 4445 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6385 /* 4445 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6386 /* 4450 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6387 /* 4455 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6388 /* 4457 */ // Combiner Rule #183: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
6389 /* 4457 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6390 /* 4462 */ GIR_EraseRootFromParent_Done,
6391 /* 4463 */ // Label 238: @4463
6392 /* 4463 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4561), // Rule ID 167 //
6393 /* 4468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6394 /* 4471 */ // MIs[0] root
6395 /* 4471 */ // No operand predicates
6396 /* 4471 */ // MIs[0] d1
6397 /* 4471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6398 /* 4475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6399 /* 4479 */ // MIs[1] p
6400 /* 4479 */ // No operand predicates
6401 /* 4479 */ // MIs[1] s1
6402 /* 4479 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6403 /* 4483 */ // MIs[1] Operand 3
6404 /* 4483 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6405 /* 4487 */ // MIs[0] d2
6406 /* 4487 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6407 /* 4491 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6408 /* 4495 */ // MIs[2] p
6409 /* 4495 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6410 /* 4500 */ // MIs[2] s2
6411 /* 4500 */ // No operand predicates
6412 /* 4500 */ // MIs[2] Operand 3
6413 /* 4500 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6414 /* 4504 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
6415 /* 4508 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6416 /* 4510 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6417 /* 4513 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6418 /* 4523 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6419 /* 4526 */ // Combiner Rule #123: double_icmp_zero_or_combine
6420 /* 4526 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6421 /* 4529 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6422 /* 4534 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6423 /* 4538 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6424 /* 4542 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6425 /* 4546 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6426 /* 4550 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6427 /* 4554 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6428 /* 4557 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6429 /* 4560 */ GIR_EraseRootFromParent_Done,
6430 /* 4561 */ // Label 239: @4561
6431 /* 4561 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4610), // Rule ID 388 //
6432 /* 4566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
6433 /* 4569 */ // MIs[0] root
6434 /* 4569 */ // No operand predicates
6435 /* 4569 */ // MIs[0] and
6436 /* 4569 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6437 /* 4573 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6438 /* 4577 */ // MIs[1] x
6439 /* 4577 */ // No operand predicates
6440 /* 4577 */ // MIs[1] not
6441 /* 4577 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6442 /* 4581 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6443 /* 4585 */ // MIs[2] y
6444 /* 4585 */ // No operand predicates
6445 /* 4585 */ // MIs[2] Operand 2
6446 /* 4585 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6447 /* 4589 */ // MIs[0] y
6448 /* 4589 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6449 /* 4594 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6450 /* 4596 */ // Combiner Rule #224: or_and_xor_to_or
6451 /* 4596 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6452 /* 4599 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6453 /* 4601 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6454 /* 4605 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6455 /* 4609 */ GIR_EraseRootFromParent_Done,
6456 /* 4610 */ // Label 240: @4610
6457 /* 4610 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4644), // Rule ID 440 //
6458 /* 4615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6459 /* 4618 */ // MIs[0] dst
6460 /* 4618 */ // No operand predicates
6461 /* 4618 */ // MIs[0] __combine_or_of_and_match_0.and
6462 /* 4618 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6463 /* 4622 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6464 /* 4626 */ // MIs[1] x
6465 /* 4626 */ // No operand predicates
6466 /* 4626 */ // MIs[1] y
6467 /* 4626 */ // No operand predicates
6468 /* 4626 */ // MIs[0] x
6469 /* 4626 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6470 /* 4631 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6471 /* 4636 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6472 /* 4638 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
6473 /* 4638 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6474 /* 4643 */ GIR_EraseRootFromParent_Done,
6475 /* 4644 */ // Label 241: @4644
6476 /* 4644 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4678), // Rule ID 441 //
6477 /* 4649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6478 /* 4652 */ // MIs[0] dst
6479 /* 4652 */ // No operand predicates
6480 /* 4652 */ // MIs[0] __combine_or_of_and_match_0.and
6481 /* 4652 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6482 /* 4656 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6483 /* 4660 */ // MIs[1] y
6484 /* 4660 */ // No operand predicates
6485 /* 4660 */ // MIs[1] x
6486 /* 4660 */ // No operand predicates
6487 /* 4660 */ // MIs[0] x
6488 /* 4660 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6489 /* 4665 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6490 /* 4670 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6491 /* 4672 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
6492 /* 4672 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6493 /* 4677 */ GIR_EraseRootFromParent_Done,
6494 /* 4678 */ // Label 242: @4678
6495 /* 4678 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4725), // Rule ID 250 //
6496 /* 4683 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6497 /* 4686 */ // MIs[0] root
6498 /* 4686 */ // No operand predicates
6499 /* 4686 */ // MIs[0] out2
6500 /* 4686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6501 /* 4690 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6502 /* 4694 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6503 /* 4694 */ // No operand predicates
6504 /* 4694 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6505 /* 4694 */ // No operand predicates
6506 /* 4694 */ // MIs[0] out1
6507 /* 4694 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6508 /* 4698 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
6509 /* 4702 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6510 /* 4702 */ // No operand predicates
6511 /* 4702 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6512 /* 4702 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6513 /* 4707 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6514 /* 4707 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6515 /* 4712 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6516 /* 4717 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6517 /* 4719 */ // Combiner Rule #183: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6518 /* 4719 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6519 /* 4724 */ GIR_EraseRootFromParent_Done,
6520 /* 4725 */ // Label 243: @4725
6521 /* 4725 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4772), // Rule ID 248 //
6522 /* 4730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6523 /* 4733 */ // MIs[0] root
6524 /* 4733 */ // No operand predicates
6525 /* 4733 */ // MIs[0] out2
6526 /* 4733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6527 /* 4737 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6528 /* 4741 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6529 /* 4741 */ // No operand predicates
6530 /* 4741 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6531 /* 4741 */ // No operand predicates
6532 /* 4741 */ // MIs[0] out1
6533 /* 4741 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6534 /* 4745 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6535 /* 4749 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6536 /* 4749 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6537 /* 4754 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6538 /* 4754 */ // No operand predicates
6539 /* 4754 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6540 /* 4754 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6541 /* 4759 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6542 /* 4764 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6543 /* 4766 */ // Combiner Rule #182: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6544 /* 4766 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6545 /* 4771 */ GIR_EraseRootFromParent_Done,
6546 /* 4772 */ // Label 244: @4772
6547 /* 4772 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4822), // Rule ID 393 //
6548 /* 4777 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6549 /* 4780 */ // MIs[0] root
6550 /* 4780 */ // No operand predicates
6551 /* 4780 */ // MIs[0] xor
6552 /* 4780 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6553 /* 4784 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6554 /* 4788 */ // MIs[1] x
6555 /* 4788 */ // No operand predicates
6556 /* 4788 */ // MIs[1] y
6557 /* 4788 */ // No operand predicates
6558 /* 4788 */ // MIs[0] and
6559 /* 4788 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6560 /* 4792 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_AND),
6561 /* 4796 */ // MIs[2] x
6562 /* 4796 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6563 /* 4801 */ // MIs[2] y
6564 /* 4801 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6565 /* 4806 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6566 /* 4808 */ // Combiner Rule #229: or_xor_and
6567 /* 4808 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6568 /* 4811 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6569 /* 4813 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6570 /* 4817 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6571 /* 4821 */ GIR_EraseRootFromParent_Done,
6572 /* 4822 */ // Label 245: @4822
6573 /* 4822 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4872), // Rule ID 392 //
6574 /* 4827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
6575 /* 4830 */ // MIs[0] root
6576 /* 4830 */ // No operand predicates
6577 /* 4830 */ // MIs[0] xor
6578 /* 4830 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6579 /* 4834 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6580 /* 4838 */ // MIs[1] x
6581 /* 4838 */ // No operand predicates
6582 /* 4838 */ // MIs[1] y
6583 /* 4838 */ // No operand predicates
6584 /* 4838 */ // MIs[0] or
6585 /* 4838 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6586 /* 4842 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_OR),
6587 /* 4846 */ // MIs[2] x
6588 /* 4846 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6589 /* 4851 */ // MIs[2] y
6590 /* 4851 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6591 /* 4856 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6592 /* 4858 */ // Combiner Rule #228: or_xor_or
6593 /* 4858 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6594 /* 4861 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6595 /* 4863 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6596 /* 4867 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6597 /* 4871 */ GIR_EraseRootFromParent_Done,
6598 /* 4872 */ // Label 246: @4872
6599 /* 4872 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4896), // Rule ID 121 //
6600 /* 4877 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6601 /* 4880 */ // MIs[0] dst
6602 /* 4880 */ // No operand predicates
6603 /* 4880 */ // MIs[0] src
6604 /* 4880 */ // No operand predicates
6605 /* 4880 */ // MIs[0] src
6606 /* 4880 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6607 /* 4885 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6608 /* 4890 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
6609 /* 4890 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6610 /* 4895 */ GIR_EraseRootFromParent_Done,
6611 /* 4896 */ // Label 247: @4896
6612 /* 4896 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4930), // Rule ID 442 //
6613 /* 4901 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6614 /* 4904 */ // MIs[0] dst
6615 /* 4904 */ // No operand predicates
6616 /* 4904 */ // MIs[0] x
6617 /* 4904 */ // No operand predicates
6618 /* 4904 */ // MIs[0] __combine_or_of_and_match_0.and
6619 /* 4904 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6620 /* 4908 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6621 /* 4912 */ // MIs[1] x
6622 /* 4912 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
6623 /* 4917 */ // MIs[1] y
6624 /* 4917 */ // No operand predicates
6625 /* 4917 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6626 /* 4922 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6627 /* 4924 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
6628 /* 4924 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6629 /* 4929 */ GIR_EraseRootFromParent_Done,
6630 /* 4930 */ // Label 248: @4930
6631 /* 4930 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4964), // Rule ID 443 //
6632 /* 4935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
6633 /* 4938 */ // MIs[0] dst
6634 /* 4938 */ // No operand predicates
6635 /* 4938 */ // MIs[0] x
6636 /* 4938 */ // No operand predicates
6637 /* 4938 */ // MIs[0] __combine_or_of_and_match_0.and
6638 /* 4938 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6639 /* 4942 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6640 /* 4946 */ // MIs[1] y
6641 /* 4946 */ // No operand predicates
6642 /* 4946 */ // MIs[1] x
6643 /* 4946 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6644 /* 4951 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6645 /* 4956 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6646 /* 4958 */ // Combiner Rule #271: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
6647 /* 4958 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6648 /* 4963 */ GIR_EraseRootFromParent_Done,
6649 /* 4964 */ // Label 249: @4964
6650 /* 4964 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4987), // Rule ID 112 //
6651 /* 4969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6652 /* 4972 */ // MIs[0] dst
6653 /* 4972 */ // No operand predicates
6654 /* 4972 */ // MIs[0] lhs
6655 /* 4972 */ // No operand predicates
6656 /* 4972 */ // MIs[0] Operand 2
6657 /* 4972 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6658 /* 4976 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6659 /* 4981 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
6660 /* 4981 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6661 /* 4986 */ GIR_EraseRootFromParent_Done,
6662 /* 4987 */ // Label 250: @4987
6663 /* 4987 */ GIM_Reject,
6664 /* 4988 */ // Label 10: @4988
6665 /* 4988 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4999), // Rule ID 102 //
6666 /* 4993 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
6667 /* 4996 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_XOR'
6668 /* 4996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
6669 /* 4999 */ // Label 251: @4999
6670 /* 4999 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(5010), // Rule ID 155 //
6671 /* 5004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6672 /* 5007 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
6673 /* 5007 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6674 /* 5010 */ // Label 252: @5010
6675 /* 5010 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(5021), // Rule ID 191 //
6676 /* 5015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
6677 /* 5018 */ // Combiner Rule #147: not_cmp_fold; wip_match_opcode 'G_XOR'
6678 /* 5018 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6679 /* 5021 */ // Label 253: @5021
6680 /* 5021 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(5032), // Rule ID 223 //
6681 /* 5026 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6682 /* 5029 */ // Combiner Rule #171: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
6683 /* 5029 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
6684 /* 5032 */ // Label 254: @5032
6685 /* 5032 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(5043), // Rule ID 269 //
6686 /* 5037 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6687 /* 5040 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_XOR'
6688 /* 5040 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6689 /* 5043 */ // Label 255: @5043
6690 /* 5043 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(5054), // Rule ID 325 //
6691 /* 5048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6692 /* 5051 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_XOR'
6693 /* 5051 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6694 /* 5054 */ // Label 256: @5054
6695 /* 5054 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(5065), // Rule ID 361 //
6696 /* 5059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
6697 /* 5062 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
6698 /* 5062 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
6699 /* 5065 */ // Label 257: @5065
6700 /* 5065 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(5076), // Rule ID 431 //
6701 /* 5070 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
6702 /* 5073 */ // Combiner Rule #262: binop_with_neg; wip_match_opcode 'G_XOR'
6703 /* 5073 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
6704 /* 5076 */ // Label 258: @5076
6705 /* 5076 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(5136), // Rule ID 13 //
6706 /* 5081 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6707 /* 5084 */ // MIs[0] root
6708 /* 5084 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6709 /* 5088 */ // MIs[0] add
6710 /* 5088 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6711 /* 5092 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6712 /* 5096 */ // MIs[1] A
6713 /* 5096 */ // No operand predicates
6714 /* 5096 */ // MIs[1] Operand 2
6715 /* 5096 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
6716 /* 5100 */ // MIs[0] Operand 2
6717 /* 5100 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6718 /* 5104 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
6719 /* 5108 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6720 /* 5110 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6721 /* 5113 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6722 /* 5123 */ // Combiner Rule #13: NotAPlusNegOne
6723 /* 5123 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6724 /* 5126 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6725 /* 5128 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6726 /* 5131 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
6727 /* 5135 */ GIR_EraseRootFromParent_Done,
6728 /* 5136 */ // Label 259: @5136
6729 /* 5136 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(5175), // Rule ID 123 //
6730 /* 5141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
6731 /* 5144 */ // MIs[0] dst
6732 /* 5144 */ // No operand predicates
6733 /* 5144 */ // MIs[0] x
6734 /* 5144 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
6735 /* 5148 */ // MIs[0] x
6736 /* 5148 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6737 /* 5153 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6738 /* 5156 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6739 /* 5166 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
6740 /* 5166 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6741 /* 5169 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6742 /* 5171 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6743 /* 5174 */ GIR_EraseRootFromParent_Done,
6744 /* 5175 */ // Label 260: @5175
6745 /* 5175 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(5198), // Rule ID 113 //
6746 /* 5180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6747 /* 5183 */ // MIs[0] dst
6748 /* 5183 */ // No operand predicates
6749 /* 5183 */ // MIs[0] lhs
6750 /* 5183 */ // No operand predicates
6751 /* 5183 */ // MIs[0] Operand 2
6752 /* 5183 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6753 /* 5187 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6754 /* 5192 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
6755 /* 5192 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6756 /* 5197 */ GIR_EraseRootFromParent_Done,
6757 /* 5198 */ // Label 261: @5198
6758 /* 5198 */ GIM_Reject,
6759 /* 5199 */ // Label 11: @5199
6760 /* 5199 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(5210), // Rule ID 151 //
6761 /* 5204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
6762 /* 5207 */ // Combiner Rule #111: extend_through_phis; wip_match_opcode 'G_PHI'
6763 /* 5207 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
6764 /* 5210 */ // Label 262: @5210
6765 /* 5210 */ GIM_Reject,
6766 /* 5211 */ // Label 12: @5211
6767 /* 5211 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(5222), // Rule ID 447 //
6768 /* 5216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule275Enabled),
6769 /* 5219 */ // Combiner Rule #275: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE'
6770 /* 5219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner163),
6771 /* 5222 */ // Label 263: @5222
6772 /* 5222 */ GIM_Reject,
6773 /* 5223 */ // Label 13: @5223
6774 /* 5223 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5234), // Rule ID 403 //
6775 /* 5228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6776 /* 5231 */ // Combiner Rule #239: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
6777 /* 5231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
6778 /* 5234 */ // Label 264: @5234
6779 /* 5234 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5245), // Rule ID 404 //
6780 /* 5239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6781 /* 5242 */ // Combiner Rule #240: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
6782 /* 5242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
6783 /* 5245 */ // Label 265: @5245
6784 /* 5245 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5256), // Rule ID 406 //
6785 /* 5250 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
6786 /* 5253 */ // Combiner Rule #242: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
6787 /* 5253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
6788 /* 5256 */ // Label 266: @5256
6789 /* 5256 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5267), // Rule ID 407 //
6790 /* 5261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
6791 /* 5264 */ // Combiner Rule #243: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
6792 /* 5264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
6793 /* 5267 */ // Label 267: @5267
6794 /* 5267 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5278), // Rule ID 408 //
6795 /* 5272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
6796 /* 5275 */ // Combiner Rule #244: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
6797 /* 5275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6798 /* 5278 */ // Label 268: @5278
6799 /* 5278 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5289), // Rule ID 409 //
6800 /* 5283 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
6801 /* 5286 */ // Combiner Rule #245: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
6802 /* 5286 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
6803 /* 5289 */ // Label 269: @5289
6804 /* 5289 */ GIM_Reject,
6805 /* 5290 */ // Label 14: @5290
6806 /* 5290 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5304), // Rule ID 405 //
6807 /* 5295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
6808 /* 5298 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6809 /* 5301 */ // MIs[0] dst
6810 /* 5301 */ // No operand predicates
6811 /* 5301 */ // MIs[0] merge_srcs
6812 /* 5301 */ // No operand predicates
6813 /* 5301 */ // Combiner Rule #241: merge_unmerge
6814 /* 5301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
6815 /* 5304 */ // Label 270: @5304
6816 /* 5304 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5366),
6817 /* 5309 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
6818 /* 5312 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5333), // Rule ID 410 //
6819 /* 5317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
6820 /* 5320 */ // MIs[0] root
6821 /* 5320 */ // No operand predicates
6822 /* 5320 */ // MIs[0] x
6823 /* 5320 */ // No operand predicates
6824 /* 5320 */ // MIs[0] undef
6825 /* 5320 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6826 /* 5324 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6827 /* 5328 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6828 /* 5330 */ // Combiner Rule #246: merge_of_x_and_undef
6829 /* 5330 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6830 /* 5333 */ // Label 272: @5333
6831 /* 5333 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5365), // Rule ID 411 //
6832 /* 5338 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
6833 /* 5341 */ // MIs[0] root
6834 /* 5341 */ // No operand predicates
6835 /* 5341 */ // MIs[0] x
6836 /* 5341 */ // No operand predicates
6837 /* 5341 */ // MIs[0] zero
6838 /* 5341 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6839 /* 5345 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6840 /* 5349 */ // MIs[1] Operand 1
6841 /* 5349 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6842 /* 5360 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6843 /* 5362 */ // Combiner Rule #247: merge_of_x_and_zero
6844 /* 5362 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6845 /* 5365 */ // Label 273: @5365
6846 /* 5365 */ GIM_Reject,
6847 /* 5366 */ // Label 271: @5366
6848 /* 5366 */ GIM_Reject,
6849 /* 5367 */ // Label 15: @5367
6850 /* 5367 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5378), // Rule ID 75 //
6851 /* 5372 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
6852 /* 5375 */ // Combiner Rule #73: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
6853 /* 5375 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
6854 /* 5378 */ // Label 274: @5378
6855 /* 5378 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5389), // Rule ID 104 //
6856 /* 5383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6857 /* 5386 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
6858 /* 5386 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
6859 /* 5389 */ // Label 275: @5389
6860 /* 5389 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5400), // Rule ID 142 //
6861 /* 5394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6862 /* 5397 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
6863 /* 5397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6864 /* 5400 */ // Label 276: @5400
6865 /* 5400 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5431),
6866 /* 5405 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6867 /* 5408 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5419), // Rule ID 402 //
6868 /* 5413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6869 /* 5416 */ // MIs[0] dst
6870 /* 5416 */ // No operand predicates
6871 /* 5416 */ // MIs[0] unused
6872 /* 5416 */ // No operand predicates
6873 /* 5416 */ // Combiner Rule #238: combine_use_vector_truncate
6874 /* 5416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
6875 /* 5419 */ // Label 278: @5419
6876 /* 5419 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5430), // Rule ID 412 //
6877 /* 5424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
6878 /* 5427 */ // MIs[0] dst
6879 /* 5427 */ // No operand predicates
6880 /* 5427 */ // MIs[0] unused
6881 /* 5427 */ // No operand predicates
6882 /* 5427 */ // Combiner Rule #248: combine_build_unmerge
6883 /* 5427 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6884 /* 5430 */ // Label 279: @5430
6885 /* 5430 */ GIM_Reject,
6886 /* 5431 */ // Label 277: @5431
6887 /* 5431 */ GIM_Reject,
6888 /* 5432 */ // Label 16: @5432
6889 /* 5432 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5443), // Rule ID 141 //
6890 /* 5437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6891 /* 5440 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
6892 /* 5440 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6893 /* 5443 */ // Label 280: @5443
6894 /* 5443 */ GIM_Reject,
6895 /* 5444 */ // Label 17: @5444
6896 /* 5444 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5455), // Rule ID 395 //
6897 /* 5449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6898 /* 5452 */ // Combiner Rule #231: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
6899 /* 5452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6900 /* 5455 */ // Label 281: @5455
6901 /* 5455 */ GIM_Reject,
6902 /* 5456 */ // Label 18: @5456
6903 /* 5456 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5477), // Rule ID 134 //
6904 /* 5461 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
6905 /* 5464 */ // MIs[0] dst
6906 /* 5464 */ // No operand predicates
6907 /* 5464 */ // MIs[0] t
6908 /* 5464 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6909 /* 5468 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
6910 /* 5472 */ // MIs[1] ptr
6911 /* 5472 */ // No operand predicates
6912 /* 5472 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6913 /* 5474 */ // Combiner Rule #96: i2p_to_p2i
6914 /* 5474 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6915 /* 5477 */ // Label 282: @5477
6916 /* 5477 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5498), // Rule ID 96 //
6917 /* 5482 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6918 /* 5485 */ // MIs[0] dst
6919 /* 5485 */ // No operand predicates
6920 /* 5485 */ // MIs[0] __unary_undef_to_undef_match_0.x
6921 /* 5485 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6922 /* 5489 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6923 /* 5493 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6924 /* 5495 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
6925 /* 5495 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6926 /* 5498 */ // Label 283: @5498
6927 /* 5498 */ GIM_Reject,
6928 /* 5499 */ // Label 19: @5499
6929 /* 5499 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5510), // Rule ID 133 //
6930 /* 5504 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6931 /* 5507 */ // Combiner Rule #95: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
6932 /* 5507 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
6933 /* 5510 */ // Label 284: @5510
6934 /* 5510 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5531), // Rule ID 97 //
6935 /* 5515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6936 /* 5518 */ // MIs[0] dst
6937 /* 5518 */ // No operand predicates
6938 /* 5518 */ // MIs[0] __unary_undef_to_undef_match_0.x
6939 /* 5518 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6940 /* 5522 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6941 /* 5526 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6942 /* 5528 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
6943 /* 5528 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6944 /* 5531 */ // Label 285: @5531
6945 /* 5531 */ GIM_Reject,
6946 /* 5532 */ // Label 20: @5532
6947 /* 5532 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5564), // Rule ID 146 //
6948 /* 5537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
6949 /* 5540 */ // MIs[0] dst
6950 /* 5540 */ // No operand predicates
6951 /* 5540 */ // MIs[0] src1
6952 /* 5540 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6953 /* 5544 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6954 /* 5548 */ // MIs[1] src0
6955 /* 5548 */ // No operand predicates
6956 /* 5548 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6957 /* 5552 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6958 /* 5554 */ // Combiner Rule #106: bitcast_bitcast_to_bitcast
6959 /* 5554 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
6960 /* 5557 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6961 /* 5559 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
6962 /* 5563 */ GIR_EraseRootFromParent_Done,
6963 /* 5564 */ // Label 286: @5564
6964 /* 5564 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5585), // Rule ID 145 //
6965 /* 5569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
6966 /* 5572 */ // MIs[0] dst
6967 /* 5572 */ // No operand predicates
6968 /* 5572 */ // MIs[0] src1
6969 /* 5572 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6970 /* 5576 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6971 /* 5580 */ // MIs[1] src0
6972 /* 5580 */ // No operand predicates
6973 /* 5580 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6974 /* 5582 */ // Combiner Rule #105: bitcast_bitcast_fold
6975 /* 5582 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
6976 /* 5585 */ // Label 287: @5585
6977 /* 5585 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5606), // Rule ID 94 //
6978 /* 5590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6979 /* 5593 */ // MIs[0] dst
6980 /* 5593 */ // No operand predicates
6981 /* 5593 */ // MIs[0] __unary_undef_to_undef_match_0.x
6982 /* 5593 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6983 /* 5597 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6984 /* 5601 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6985 /* 5603 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
6986 /* 5603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6987 /* 5606 */ // Label 288: @5606
6988 /* 5606 */ GIM_Reject,
6989 /* 5607 */ // Label 21: @5607
6990 /* 5607 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5636), // Rule ID 24 //
6991 /* 5612 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6992 /* 5615 */ // MIs[0] dst
6993 /* 5615 */ // No operand predicates
6994 /* 5615 */ // MIs[0] src
6995 /* 5615 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6996 /* 5619 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
6997 /* 5623 */ // MIs[1] __idempotent_prop_match_0.x
6998 /* 5623 */ // No operand predicates
6999 /* 5623 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7000 /* 5628 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7001 /* 5630 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
7002 /* 5630 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7003 /* 5635 */ GIR_EraseRootFromParent_Done,
7004 /* 5636 */ // Label 289: @5636
7005 /* 5636 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5659), // Rule ID 49 //
7006 /* 5641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
7007 /* 5644 */ // MIs[0] root
7008 /* 5644 */ // No operand predicates
7009 /* 5644 */ // MIs[0] src
7010 /* 5644 */ // No operand predicates
7011 /* 5644 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
7012 /* 5648 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7013 /* 5653 */ // Combiner Rule #47: freeze_of_non_undef_non_poison
7014 /* 5653 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7015 /* 5658 */ GIR_EraseRootFromParent_Done,
7016 /* 5659 */ // Label 290: @5659
7017 /* 5659 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5670), // Rule ID 50 //
7018 /* 5664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
7019 /* 5667 */ // MIs[0] dst
7020 /* 5667 */ // No operand predicates
7021 /* 5667 */ // MIs[0] src
7022 /* 5667 */ // No operand predicates
7023 /* 5667 */ // Combiner Rule #48: push_freeze_to_prevent_poison_from_propagating
7024 /* 5667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7025 /* 5670 */ // Label 291: @5670
7026 /* 5670 */ GIM_Reject,
7027 /* 5671 */ // Label 22: @5671
7028 /* 5671 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5692), // Rule ID 201 //
7029 /* 5676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7030 /* 5679 */ // MIs[0] dst
7031 /* 5679 */ // No operand predicates
7032 /* 5679 */ // MIs[0] src0
7033 /* 5679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7034 /* 5683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7035 /* 5687 */ // MIs[1] cst
7036 /* 5687 */ // No operand predicates
7037 /* 5687 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7038 /* 5689 */ // Combiner Rule #157: constant_fold_intrinsic_trunc
7039 /* 5689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7040 /* 5692 */ // Label 292: @5692
7041 /* 5692 */ GIM_Reject,
7042 /* 5693 */ // Label 23: @5693
7043 /* 5693 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5714), // Rule ID 202 //
7044 /* 5698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
7045 /* 5701 */ // MIs[0] dst
7046 /* 5701 */ // No operand predicates
7047 /* 5701 */ // MIs[0] src0
7048 /* 5701 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7049 /* 5705 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7050 /* 5709 */ // MIs[1] cst
7051 /* 5709 */ // No operand predicates
7052 /* 5709 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7053 /* 5711 */ // Combiner Rule #158: constant_fold_intrinsic_round
7054 /* 5711 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7055 /* 5714 */ // Label 293: @5714
7056 /* 5714 */ GIM_Reject,
7057 /* 5715 */ // Label 24: @5715
7058 /* 5715 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5736), // Rule ID 203 //
7059 /* 5720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7060 /* 5723 */ // MIs[0] dst
7061 /* 5723 */ // No operand predicates
7062 /* 5723 */ // MIs[0] src0
7063 /* 5723 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7064 /* 5727 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7065 /* 5731 */ // MIs[1] cst
7066 /* 5731 */ // No operand predicates
7067 /* 5731 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7068 /* 5733 */ // Combiner Rule #159: constant_fold_intrinsic_roundeven
7069 /* 5733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7070 /* 5736 */ // Label 294: @5736
7071 /* 5736 */ GIM_Reject,
7072 /* 5737 */ // Label 25: @5737
7073 /* 5737 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5748), // Rule ID 76 //
7074 /* 5742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7075 /* 5745 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_LOAD'
7076 /* 5745 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
7077 /* 5748 */ // Label 295: @5748
7078 /* 5748 */ GIM_Reject,
7079 /* 5749 */ // Label 26: @5749
7080 /* 5749 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5760), // Rule ID 77 //
7081 /* 5754 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7082 /* 5757 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_SEXTLOAD'
7083 /* 5757 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
7084 /* 5760 */ // Label 296: @5760
7085 /* 5760 */ GIM_Reject,
7086 /* 5761 */ // Label 27: @5761
7087 /* 5761 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5772), // Rule ID 78 //
7088 /* 5766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7089 /* 5769 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
7090 /* 5769 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
7091 /* 5772 */ // Label 297: @5772
7092 /* 5772 */ GIM_Reject,
7093 /* 5773 */ // Label 28: @5773
7094 /* 5773 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5784), // Rule ID 106 //
7095 /* 5778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
7096 /* 5781 */ // Combiner Rule #87: erase_undef_store; wip_match_opcode 'G_STORE'
7097 /* 5781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
7098 /* 5784 */ // Label 298: @5784
7099 /* 5784 */ GIM_Reject,
7100 /* 5785 */ // Label 29: @5785
7101 /* 5785 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5796), // Rule ID 135 //
7102 /* 5790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7103 /* 5793 */ // Combiner Rule #97: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
7104 /* 5793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
7105 /* 5796 */ // Label 299: @5796
7106 /* 5796 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5807), // Rule ID 294 //
7107 /* 5801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7108 /* 5804 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
7109 /* 5804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7110 /* 5807 */ // Label 300: @5807
7111 /* 5807 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5828), // Rule ID 63 //
7112 /* 5812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
7113 /* 5815 */ // MIs[0] root
7114 /* 5815 */ // No operand predicates
7115 /* 5815 */ // MIs[0] select
7116 /* 5815 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7117 /* 5819 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7118 /* 5823 */ // MIs[1] cond
7119 /* 5823 */ // No operand predicates
7120 /* 5823 */ // MIs[1] true
7121 /* 5823 */ // No operand predicates
7122 /* 5823 */ // MIs[1] false
7123 /* 5823 */ // No operand predicates
7124 /* 5823 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7125 /* 5825 */ // Combiner Rule #61: select_of_anyext
7126 /* 5825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7127 /* 5828 */ // Label 301: @5828
7128 /* 5828 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5849), // Rule ID 58 //
7129 /* 5833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
7130 /* 5836 */ // MIs[0] root
7131 /* 5836 */ // No operand predicates
7132 /* 5836 */ // MIs[0] second
7133 /* 5836 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7134 /* 5840 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7135 /* 5844 */ // MIs[1] src
7136 /* 5844 */ // No operand predicates
7137 /* 5844 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7138 /* 5846 */ // Combiner Rule #56: anyext_of_anyext
7139 /* 5846 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7140 /* 5849 */ // Label 302: @5849
7141 /* 5849 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5870), // Rule ID 60 //
7142 /* 5854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
7143 /* 5857 */ // MIs[0] root
7144 /* 5857 */ // No operand predicates
7145 /* 5857 */ // MIs[0] second
7146 /* 5857 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7147 /* 5861 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7148 /* 5865 */ // MIs[1] src
7149 /* 5865 */ // No operand predicates
7150 /* 5865 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7151 /* 5867 */ // Combiner Rule #58: anyext_of_sext
7152 /* 5867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7153 /* 5870 */ // Label 303: @5870
7154 /* 5870 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5891), // Rule ID 59 //
7155 /* 5875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
7156 /* 5878 */ // MIs[0] root
7157 /* 5878 */ // No operand predicates
7158 /* 5878 */ // MIs[0] second
7159 /* 5878 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7160 /* 5882 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7161 /* 5886 */ // MIs[1] src
7162 /* 5886 */ // No operand predicates
7163 /* 5886 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7164 /* 5888 */ // Combiner Rule #57: anyext_of_zext
7165 /* 5888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7166 /* 5891 */ // Label 304: @5891
7167 /* 5891 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5912), // Rule ID 95 //
7168 /* 5896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7169 /* 5899 */ // MIs[0] dst
7170 /* 5899 */ // No operand predicates
7171 /* 5899 */ // MIs[0] __unary_undef_to_undef_match_0.x
7172 /* 5899 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7173 /* 5903 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7174 /* 5907 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7175 /* 5909 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
7176 /* 5909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7177 /* 5912 */ // Label 305: @5912
7178 /* 5912 */ GIM_Reject,
7179 /* 5913 */ // Label 30: @5913
7180 /* 5913 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5924), // Rule ID 143 //
7181 /* 5918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7182 /* 5921 */ // Combiner Rule #103: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
7183 /* 5921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
7184 /* 5924 */ // Label 306: @5924
7185 /* 5924 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5935), // Rule ID 144 //
7186 /* 5929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7187 /* 5932 */ // Combiner Rule #104: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
7188 /* 5932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
7189 /* 5935 */ // Label 307: @5935
7190 /* 5935 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5946), // Rule ID 190 //
7191 /* 5940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
7192 /* 5943 */ // Combiner Rule #146: trunc_shift; wip_match_opcode 'G_TRUNC'
7193 /* 5943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
7194 /* 5946 */ // Label 308: @5946
7195 /* 5946 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5967), // Rule ID 64 //
7196 /* 5951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
7197 /* 5954 */ // MIs[0] root
7198 /* 5954 */ // No operand predicates
7199 /* 5954 */ // MIs[0] select
7200 /* 5954 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7201 /* 5958 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7202 /* 5962 */ // MIs[1] cond
7203 /* 5962 */ // No operand predicates
7204 /* 5962 */ // MIs[1] true
7205 /* 5962 */ // No operand predicates
7206 /* 5962 */ // MIs[1] false
7207 /* 5962 */ // No operand predicates
7208 /* 5962 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7209 /* 5964 */ // Combiner Rule #62: select_of_truncate
7210 /* 5964 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7211 /* 5967 */ // Label 309: @5967
7212 /* 5967 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5996), // Rule ID 66 //
7213 /* 5972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
7214 /* 5975 */ // MIs[0] root
7215 /* 5975 */ // No operand predicates
7216 /* 5975 */ // MIs[0] binop
7217 /* 5975 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7218 /* 5979 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7219 /* 5983 */ // MIs[1] x
7220 /* 5983 */ // No operand predicates
7221 /* 5983 */ // MIs[1] const
7222 /* 5983 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7223 /* 5987 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7224 /* 5991 */ // MIs[2] imm
7225 /* 5991 */ // No operand predicates
7226 /* 5991 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7227 /* 5993 */ // Combiner Rule #64: narrow_binop_add
7228 /* 5993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7229 /* 5996 */ // Label 310: @5996
7230 /* 5996 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(6025), // Rule ID 69 //
7231 /* 6001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
7232 /* 6004 */ // MIs[0] root
7233 /* 6004 */ // No operand predicates
7234 /* 6004 */ // MIs[0] binop
7235 /* 6004 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7236 /* 6008 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7237 /* 6012 */ // MIs[1] x
7238 /* 6012 */ // No operand predicates
7239 /* 6012 */ // MIs[1] const
7240 /* 6012 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7241 /* 6016 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7242 /* 6020 */ // MIs[2] imm
7243 /* 6020 */ // No operand predicates
7244 /* 6020 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7245 /* 6022 */ // Combiner Rule #67: narrow_binop_and
7246 /* 6022 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7247 /* 6025 */ // Label 311: @6025
7248 /* 6025 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(6054), // Rule ID 68 //
7249 /* 6030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
7250 /* 6033 */ // MIs[0] root
7251 /* 6033 */ // No operand predicates
7252 /* 6033 */ // MIs[0] binop
7253 /* 6033 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7254 /* 6037 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
7255 /* 6041 */ // MIs[1] x
7256 /* 6041 */ // No operand predicates
7257 /* 6041 */ // MIs[1] const
7258 /* 6041 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7259 /* 6045 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7260 /* 6049 */ // MIs[2] imm
7261 /* 6049 */ // No operand predicates
7262 /* 6049 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7263 /* 6051 */ // Combiner Rule #66: narrow_binop_mul
7264 /* 6051 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7265 /* 6054 */ // Label 312: @6054
7266 /* 6054 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(6083), // Rule ID 70 //
7267 /* 6059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7268 /* 6062 */ // MIs[0] root
7269 /* 6062 */ // No operand predicates
7270 /* 6062 */ // MIs[0] binop
7271 /* 6062 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7272 /* 6066 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
7273 /* 6070 */ // MIs[1] x
7274 /* 6070 */ // No operand predicates
7275 /* 6070 */ // MIs[1] const
7276 /* 6070 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7277 /* 6074 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7278 /* 6078 */ // MIs[2] imm
7279 /* 6078 */ // No operand predicates
7280 /* 6078 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7281 /* 6080 */ // Combiner Rule #68: narrow_binop_or
7282 /* 6080 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7283 /* 6083 */ // Label 313: @6083
7284 /* 6083 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6112), // Rule ID 67 //
7285 /* 6088 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
7286 /* 6091 */ // MIs[0] root
7287 /* 6091 */ // No operand predicates
7288 /* 6091 */ // MIs[0] binop
7289 /* 6091 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7290 /* 6095 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
7291 /* 6099 */ // MIs[1] x
7292 /* 6099 */ // No operand predicates
7293 /* 6099 */ // MIs[1] const
7294 /* 6099 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7295 /* 6103 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7296 /* 6107 */ // MIs[2] imm
7297 /* 6107 */ // No operand predicates
7298 /* 6107 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7299 /* 6109 */ // Combiner Rule #65: narrow_binop_sub
7300 /* 6109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7301 /* 6112 */ // Label 314: @6112
7302 /* 6112 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6144), // Rule ID 419 //
7303 /* 6117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
7304 /* 6120 */ // MIs[0] dst
7305 /* 6120 */ // No operand predicates
7306 /* 6120 */ // MIs[0] min
7307 /* 6120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7308 /* 6124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
7309 /* 6128 */ // MIs[1] x
7310 /* 6128 */ // No operand predicates
7311 /* 6128 */ // MIs[1] y
7312 /* 6128 */ // No operand predicates
7313 /* 6128 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
7314 /* 6132 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7315 /* 6134 */ // Combiner Rule #253: trunc_usatu
7316 /* 6134 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
7317 /* 6137 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7318 /* 6139 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7319 /* 6143 */ GIR_EraseRootFromParent_Done,
7320 /* 6144 */ // Label 315: @6144
7321 /* 6144 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6173), // Rule ID 71 //
7322 /* 6149 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7323 /* 6152 */ // MIs[0] root
7324 /* 6152 */ // No operand predicates
7325 /* 6152 */ // MIs[0] binop
7326 /* 6152 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7327 /* 6156 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7328 /* 6160 */ // MIs[1] x
7329 /* 6160 */ // No operand predicates
7330 /* 6160 */ // MIs[1] const
7331 /* 6160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7332 /* 6164 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7333 /* 6168 */ // MIs[2] imm
7334 /* 6168 */ // No operand predicates
7335 /* 6168 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7336 /* 6170 */ // Combiner Rule #69: narrow_binop_xor
7337 /* 6170 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7338 /* 6173 */ // Label 316: @6173
7339 /* 6173 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6194), // Rule ID 53 //
7340 /* 6178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
7341 /* 6181 */ // MIs[0] root
7342 /* 6181 */ // No operand predicates
7343 /* 6181 */ // MIs[0] ext
7344 /* 6181 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7345 /* 6185 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7346 /* 6189 */ // MIs[1] src
7347 /* 6189 */ // No operand predicates
7348 /* 6189 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7349 /* 6191 */ // Combiner Rule #51: truncate_of_anyext
7350 /* 6191 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7351 /* 6194 */ // Label 317: @6194
7352 /* 6194 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6218), // Rule ID 65 //
7353 /* 6199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
7354 /* 6202 */ // MIs[0] root
7355 /* 6202 */ // No operand predicates
7356 /* 6202 */ // MIs[0] bv
7357 /* 6202 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7358 /* 6206 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
7359 /* 6210 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
7360 /* 6213 */ // MIs[1] unused
7361 /* 6213 */ // No operand predicates
7362 /* 6213 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7363 /* 6215 */ // Combiner Rule #63: buildvector_of_truncate
7364 /* 6215 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7365 /* 6218 */ // Label 318: @6218
7366 /* 6218 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6239), // Rule ID 52 //
7367 /* 6223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
7368 /* 6226 */ // MIs[0] root
7369 /* 6226 */ // No operand predicates
7370 /* 6226 */ // MIs[0] ext
7371 /* 6226 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7372 /* 6230 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7373 /* 6234 */ // MIs[1] src
7374 /* 6234 */ // No operand predicates
7375 /* 6234 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7376 /* 6236 */ // Combiner Rule #50: truncate_of_sext
7377 /* 6236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7378 /* 6239 */ // Label 319: @6239
7379 /* 6239 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6260), // Rule ID 51 //
7380 /* 6244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
7381 /* 6247 */ // MIs[0] root
7382 /* 6247 */ // No operand predicates
7383 /* 6247 */ // MIs[0] ext
7384 /* 6247 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7385 /* 6251 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7386 /* 6255 */ // MIs[1] src
7387 /* 6255 */ // No operand predicates
7388 /* 6255 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7389 /* 6257 */ // Combiner Rule #49: truncate_of_zext
7390 /* 6257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7391 /* 6260 */ // Label 320: @6260
7392 /* 6260 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6281), // Rule ID 93 //
7393 /* 6265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7394 /* 6268 */ // MIs[0] dst
7395 /* 6268 */ // No operand predicates
7396 /* 6268 */ // MIs[0] __unary_undef_to_undef_match_0.x
7397 /* 6268 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7398 /* 6272 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7399 /* 6276 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7400 /* 6278 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
7401 /* 6278 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7402 /* 6281 */ // Label 321: @6281
7403 /* 6281 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6302), // Rule ID 72 //
7404 /* 6286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
7405 /* 6289 */ // MIs[0] root
7406 /* 6289 */ // No operand predicates
7407 /* 6289 */ // MIs[0] int
7408 /* 6289 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7409 /* 6293 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7410 /* 6297 */ // MIs[1] imm
7411 /* 6297 */ // No operand predicates
7412 /* 6297 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7413 /* 6299 */ // Combiner Rule #70: integer_of_truncate
7414 /* 6299 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
7415 /* 6302 */ // Label 322: @6302
7416 /* 6302 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6313), // Rule ID 417 //
7417 /* 6307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
7418 /* 6310 */ // MIs[0] dst
7419 /* 6310 */ // No operand predicates
7420 /* 6310 */ // MIs[0] src
7421 /* 6310 */ // No operand predicates
7422 /* 6310 */ // Combiner Rule #251: trunc_ssats
7423 /* 6310 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7424 /* 6313 */ // Label 323: @6313
7425 /* 6313 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6324), // Rule ID 418 //
7426 /* 6318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
7427 /* 6321 */ // MIs[0] dst
7428 /* 6321 */ // No operand predicates
7429 /* 6321 */ // MIs[0] src
7430 /* 6321 */ // No operand predicates
7431 /* 6321 */ // Combiner Rule #252: trunc_ssatu
7432 /* 6321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
7433 /* 6324 */ // Label 324: @6324
7434 /* 6324 */ GIM_Reject,
7435 /* 6325 */ // Label 31: @6325
7436 /* 6325 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6357), // Rule ID 420 //
7437 /* 6330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
7438 /* 6333 */ // MIs[0] dst
7439 /* 6333 */ // No operand predicates
7440 /* 6333 */ // MIs[0] src
7441 /* 6333 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7442 /* 6337 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
7443 /* 6341 */ // MIs[1] x
7444 /* 6341 */ // No operand predicates
7445 /* 6341 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
7446 /* 6345 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7447 /* 6347 */ // Combiner Rule #254: truncusatu_to_fptouisat
7448 /* 6347 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
7449 /* 6350 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7450 /* 6352 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7451 /* 6356 */ GIR_EraseRootFromParent_Done,
7452 /* 6357 */ // Label 325: @6357
7453 /* 6357 */ GIM_Reject,
7454 /* 6358 */ // Label 32: @6358
7455 /* 6358 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6369), // Rule ID 293 //
7456 /* 6363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7457 /* 6366 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
7458 /* 6366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7459 /* 6369 */ // Label 326: @6369
7460 /* 6369 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6390), // Rule ID 57 //
7461 /* 6374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
7462 /* 6377 */ // MIs[0] root
7463 /* 6377 */ // No operand predicates
7464 /* 6377 */ // MIs[0] second
7465 /* 6377 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7466 /* 6381 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7467 /* 6385 */ // MIs[1] src
7468 /* 6385 */ // No operand predicates
7469 /* 6385 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7470 /* 6387 */ // Combiner Rule #55: sext_of_anyext
7471 /* 6387 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7472 /* 6390 */ // Label 327: @6390
7473 /* 6390 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6411), // Rule ID 56 //
7474 /* 6395 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
7475 /* 6398 */ // MIs[0] root
7476 /* 6398 */ // No operand predicates
7477 /* 6398 */ // MIs[0] second
7478 /* 6398 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7479 /* 6402 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7480 /* 6406 */ // MIs[1] src
7481 /* 6406 */ // No operand predicates
7482 /* 6406 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7483 /* 6408 */ // Combiner Rule #54: sext_of_sext
7484 /* 6408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7485 /* 6411 */ // Label 328: @6411
7486 /* 6411 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6432), // Rule ID 396 //
7487 /* 6416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
7488 /* 6419 */ // MIs[0] root
7489 /* 6419 */ // No operand predicates
7490 /* 6419 */ // MIs[0] src
7491 /* 6419 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7492 /* 6423 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7493 /* 6427 */ // MIs[1] x
7494 /* 6427 */ // No operand predicates
7495 /* 6427 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7496 /* 6429 */ // Combiner Rule #232: sext_trunc
7497 /* 6429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7498 /* 6432 */ // Label 329: @6432
7499 /* 6432 */ GIM_Reject,
7500 /* 6433 */ // Label 33: @6433
7501 /* 6433 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6444), // Rule ID 171 //
7502 /* 6438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
7503 /* 6441 */ // Combiner Rule #127: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
7504 /* 6441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
7505 /* 6444 */ // Label 330: @6444
7506 /* 6444 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6455), // Rule ID 180 //
7507 /* 6449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
7508 /* 6452 */ // Combiner Rule #136: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
7509 /* 6452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
7510 /* 6455 */ // Label 331: @6455
7511 /* 6455 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6466), // Rule ID 254 //
7512 /* 6460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7513 /* 6463 */ // Combiner Rule #187: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
7514 /* 6463 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
7515 /* 6466 */ // Label 332: @6466
7516 /* 6466 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6487), // Rule ID 61 //
7517 /* 6471 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
7518 /* 6474 */ // MIs[0] dst
7519 /* 6474 */ // No operand predicates
7520 /* 6474 */ // MIs[0] x
7521 /* 6474 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7522 /* 6478 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
7523 /* 6482 */ // MIs[1] src
7524 /* 6482 */ // No operand predicates
7525 /* 6482 */ // MIs[1] a
7526 /* 6482 */ // No operand predicates
7527 /* 6482 */ // MIs[0] b
7528 /* 6482 */ // No operand predicates
7529 /* 6482 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7530 /* 6484 */ // Combiner Rule #59: sext_inreg_of_sext_inreg
7531 /* 6484 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7532 /* 6487 */ // Label 333: @6487
7533 /* 6487 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6527), // Rule ID 184 //
7534 /* 6492 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7535 /* 6495 */ // MIs[0] dst
7536 /* 6495 */ // No operand predicates
7537 /* 6495 */ // MIs[0] tmp4
7538 /* 6495 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7539 /* 6499 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7540 /* 6503 */ // MIs[1] tmp2
7541 /* 6503 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7542 /* 6507 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7543 /* 6511 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7544 /* 6514 */ // MIs[2] tmp3
7545 /* 6514 */ // No operand predicates
7546 /* 6514 */ // MIs[2] tmp1
7547 /* 6514 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7548 /* 6518 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7549 /* 6522 */ // MIs[3] src
7550 /* 6522 */ // No operand predicates
7551 /* 6522 */ // MIs[0] amt
7552 /* 6522 */ // No operand predicates
7553 /* 6522 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7554 /* 6524 */ // Combiner Rule #140: redundant_aext_unmerge_sext_inreg
7555 /* 6524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7556 /* 6527 */ // Label 334: @6527
7557 /* 6527 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6559), // Rule ID 182 //
7558 /* 6532 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7559 /* 6535 */ // MIs[0] dst
7560 /* 6535 */ // No operand predicates
7561 /* 6535 */ // MIs[0] tmp
7562 /* 6535 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7563 /* 6539 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7564 /* 6543 */ // MIs[1] src
7565 /* 6543 */ // No operand predicates
7566 /* 6543 */ // MIs[0] amt
7567 /* 6543 */ // No operand predicates
7568 /* 6543 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7569 /* 6547 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7570 /* 6549 */ // Combiner Rule #138: redundant_aext_sext_inreg
7571 /* 6549 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7572 /* 6552 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7573 /* 6554 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7574 /* 6558 */ GIR_EraseRootFromParent_Done,
7575 /* 6559 */ // Label 335: @6559
7576 /* 6559 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6599), // Rule ID 183 //
7577 /* 6564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7578 /* 6567 */ // MIs[0] dst
7579 /* 6567 */ // No operand predicates
7580 /* 6567 */ // MIs[0] tmp4
7581 /* 6567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7582 /* 6571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7583 /* 6575 */ // MIs[1] tmp2
7584 /* 6575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7585 /* 6579 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7586 /* 6583 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7587 /* 6586 */ // MIs[2] tmp3
7588 /* 6586 */ // No operand predicates
7589 /* 6586 */ // MIs[2] tmp1
7590 /* 6586 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7591 /* 6590 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7592 /* 6594 */ // MIs[3] src
7593 /* 6594 */ // No operand predicates
7594 /* 6594 */ // MIs[0] amt
7595 /* 6594 */ // No operand predicates
7596 /* 6594 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7597 /* 6596 */ // Combiner Rule #139: redundant_zext_unmerge_sext_inreg
7598 /* 6596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7599 /* 6599 */ // Label 336: @6599
7600 /* 6599 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6631), // Rule ID 181 //
7601 /* 6604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
7602 /* 6607 */ // MIs[0] dst
7603 /* 6607 */ // No operand predicates
7604 /* 6607 */ // MIs[0] tmp
7605 /* 6607 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7606 /* 6611 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7607 /* 6615 */ // MIs[1] src
7608 /* 6615 */ // No operand predicates
7609 /* 6615 */ // MIs[0] amt
7610 /* 6615 */ // No operand predicates
7611 /* 6615 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7612 /* 6619 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7613 /* 6621 */ // Combiner Rule #137: redundant_zext_sext_inreg
7614 /* 6621 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7615 /* 6624 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7616 /* 6626 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7617 /* 6630 */ GIR_EraseRootFromParent_Done,
7618 /* 6631 */ // Label 337: @6631
7619 /* 6631 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6642), // Rule ID 189 //
7620 /* 6636 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
7621 /* 6639 */ // MIs[0] dst
7622 /* 6639 */ // No operand predicates
7623 /* 6639 */ // MIs[0] src
7624 /* 6639 */ // No operand predicates
7625 /* 6639 */ // MIs[0] imm
7626 /* 6639 */ // No operand predicates
7627 /* 6639 */ // Combiner Rule #145: sext_inreg_to_zext_inreg
7628 /* 6639 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
7629 /* 6642 */ // Label 338: @6642
7630 /* 6642 */ GIM_Reject,
7631 /* 6643 */ // Label 34: @6643
7632 /* 6643 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6654), // Rule ID 188 //
7633 /* 6648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7634 /* 6651 */ // Combiner Rule #144: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
7635 /* 6651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
7636 /* 6654 */ // Label 339: @6654
7637 /* 6654 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6665), // Rule ID 292 //
7638 /* 6659 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7639 /* 6662 */ // Combiner Rule #194: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
7640 /* 6662 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7641 /* 6665 */ // Label 340: @6665
7642 /* 6665 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6686), // Rule ID 62 //
7643 /* 6670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
7644 /* 6673 */ // MIs[0] root
7645 /* 6673 */ // No operand predicates
7646 /* 6673 */ // MIs[0] select
7647 /* 6673 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7648 /* 6677 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7649 /* 6681 */ // MIs[1] cond
7650 /* 6681 */ // No operand predicates
7651 /* 6681 */ // MIs[1] true
7652 /* 6681 */ // No operand predicates
7653 /* 6681 */ // MIs[1] false
7654 /* 6681 */ // No operand predicates
7655 /* 6681 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7656 /* 6683 */ // Combiner Rule #60: select_of_zext
7657 /* 6683 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7658 /* 6686 */ // Label 341: @6686
7659 /* 6686 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6707), // Rule ID 55 //
7660 /* 6691 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
7661 /* 6694 */ // MIs[0] root
7662 /* 6694 */ // No operand predicates
7663 /* 6694 */ // MIs[0] second
7664 /* 6694 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7665 /* 6698 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7666 /* 6702 */ // MIs[1] src
7667 /* 6702 */ // No operand predicates
7668 /* 6702 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7669 /* 6704 */ // Combiner Rule #53: zext_of_anyext
7670 /* 6704 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7671 /* 6707 */ // Label 342: @6707
7672 /* 6707 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6734), // Rule ID 397 //
7673 /* 6712 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
7674 /* 6715 */ // MIs[0] root
7675 /* 6715 */ // No operand predicates
7676 /* 6715 */ // MIs[0] src
7677 /* 6715 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7678 /* 6719 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7679 /* 6723 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
7680 /* 6729 */ // MIs[1] x
7681 /* 6729 */ // No operand predicates
7682 /* 6729 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7683 /* 6731 */ // Combiner Rule #233: zext_trunc
7684 /* 6731 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7685 /* 6734 */ // Label 343: @6734
7686 /* 6734 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6755), // Rule ID 54 //
7687 /* 6739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
7688 /* 6742 */ // MIs[0] root
7689 /* 6742 */ // No operand predicates
7690 /* 6742 */ // MIs[0] second
7691 /* 6742 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7692 /* 6746 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7693 /* 6750 */ // MIs[1] src
7694 /* 6750 */ // No operand predicates
7695 /* 6750 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7696 /* 6752 */ // Combiner Rule #52: zext_of_zext
7697 /* 6752 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7698 /* 6755 */ // Label 344: @6755
7699 /* 6755 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6772), // Rule ID 398 //
7700 /* 6760 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7701 /* 6763 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
7702 /* 6769 */ // MIs[0] root
7703 /* 6769 */ // No operand predicates
7704 /* 6769 */ // MIs[0] x
7705 /* 6769 */ // No operand predicates
7706 /* 6769 */ // Combiner Rule #234: nneg_zext
7707 /* 6769 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7708 /* 6772 */ // Label 345: @6772
7709 /* 6772 */ GIM_Reject,
7710 /* 6773 */ // Label 35: @6773
7711 /* 6773 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6784), // Rule ID 86 //
7712 /* 6778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7713 /* 6781 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
7714 /* 6781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7715 /* 6784 */ // Label 346: @6784
7716 /* 6784 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6795), // Rule ID 89 //
7717 /* 6789 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7718 /* 6792 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
7719 /* 6792 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7720 /* 6795 */ // Label 347: @6795
7721 /* 6795 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6806), // Rule ID 225 //
7722 /* 6800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7723 /* 6803 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_SHL'
7724 /* 6803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7725 /* 6806 */ // Label 348: @6806
7726 /* 6806 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6817), // Rule ID 230 //
7727 /* 6811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7728 /* 6814 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
7729 /* 6814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7730 /* 6817 */ // Label 349: @6817
7731 /* 6817 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6828), // Rule ID 253 //
7732 /* 6822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7733 /* 6825 */ // Combiner Rule #186: commute_shift; wip_match_opcode 'G_SHL'
7734 /* 6825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
7735 /* 6828 */ // Label 350: @6828
7736 /* 6828 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6839), // Rule ID 267 //
7737 /* 6833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7738 /* 6836 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SHL'
7739 /* 6836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7740 /* 6839 */ // Label 351: @6839
7741 /* 6839 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6850), // Rule ID 332 //
7742 /* 6844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7743 /* 6847 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SHL'
7744 /* 6847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7745 /* 6850 */ // Label 352: @6850
7746 /* 6850 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6885), // Rule ID 47 //
7747 /* 6855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
7748 /* 6858 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
7749 /* 6864 */ // MIs[0] root
7750 /* 6864 */ // No operand predicates
7751 /* 6864 */ // MIs[0] left
7752 /* 6864 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7753 /* 6868 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
7754 /* 6872 */ // MIs[1] imm
7755 /* 6872 */ // No operand predicates
7756 /* 6872 */ // MIs[0] x
7757 /* 6872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7758 /* 6876 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7759 /* 6880 */ // MIs[2] imm1
7760 /* 6880 */ // No operand predicates
7761 /* 6880 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7762 /* 6882 */ // Combiner Rule #45: shl_of_vscale
7763 /* 6882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
7764 /* 6885 */ // Label 353: @6885
7765 /* 6885 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6925), // Rule ID 124 //
7766 /* 6890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7767 /* 6893 */ // MIs[0] dst
7768 /* 6893 */ // No operand predicates
7769 /* 6893 */ // MIs[0] zero
7770 /* 6893 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7771 /* 6897 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7772 /* 6901 */ // MIs[1] Operand 1
7773 /* 6901 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7774 /* 6912 */ // MIs[0] rhs
7775 /* 6912 */ // No operand predicates
7776 /* 6912 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7777 /* 6917 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7778 /* 6919 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
7779 /* 6919 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7780 /* 6924 */ GIR_EraseRootFromParent_Done,
7781 /* 6925 */ // Label 354: @6925
7782 /* 6925 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6948), // Rule ID 114 //
7783 /* 6930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7784 /* 6933 */ // MIs[0] dst
7785 /* 6933 */ // No operand predicates
7786 /* 6933 */ // MIs[0] lhs
7787 /* 6933 */ // No operand predicates
7788 /* 6933 */ // MIs[0] Operand 2
7789 /* 6933 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7790 /* 6937 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7791 /* 6942 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
7792 /* 6942 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7793 /* 6947 */ GIR_EraseRootFromParent_Done,
7794 /* 6948 */ // Label 355: @6948
7795 /* 6948 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6959), // Rule ID 156 //
7796 /* 6953 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7797 /* 6956 */ // MIs[0] root
7798 /* 6956 */ // No operand predicates
7799 /* 6956 */ // MIs[0] mi.shifted
7800 /* 6956 */ // No operand predicates
7801 /* 6956 */ // MIs[0] mi.amt
7802 /* 6956 */ // No operand predicates
7803 /* 6956 */ // Combiner Rule #114: shifts_too_big @ [mi[0]]
7804 /* 6956 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7805 /* 6959 */ // Label 356: @6959
7806 /* 6959 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6970), // Rule ID 172 //
7807 /* 6964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
7808 /* 6967 */ // MIs[0] dst
7809 /* 6967 */ // No operand predicates
7810 /* 6967 */ // MIs[0] src0
7811 /* 6967 */ // No operand predicates
7812 /* 6967 */ // MIs[0] src1
7813 /* 6967 */ // No operand predicates
7814 /* 6967 */ // Combiner Rule #128: reduce_shl_of_extend
7815 /* 6967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
7816 /* 6970 */ // Label 357: @6970
7817 /* 6970 */ GIM_Reject,
7818 /* 6971 */ // Label 36: @6971
7819 /* 6971 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6982), // Rule ID 91 //
7820 /* 6976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7821 /* 6979 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
7822 /* 6979 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7823 /* 6982 */ // Label 358: @6982
7824 /* 6982 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6993), // Rule ID 227 //
7825 /* 6987 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7826 /* 6990 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_LSHR'
7827 /* 6990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7828 /* 6993 */ // Label 359: @6993
7829 /* 6993 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(7004), // Rule ID 232 //
7830 /* 6998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7831 /* 7001 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
7832 /* 7001 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
7833 /* 7004 */ // Label 360: @7004
7834 /* 7004 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7015), // Rule ID 257 //
7835 /* 7009 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7836 /* 7012 */ // Combiner Rule #189: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
7837 /* 7012 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7838 /* 7015 */ // Label 361: @7015
7839 /* 7015 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7026), // Rule ID 259 //
7840 /* 7020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7841 /* 7023 */ // Combiner Rule #190: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
7842 /* 7023 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7843 /* 7026 */ // Label 362: @7026
7844 /* 7026 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7037), // Rule ID 264 //
7845 /* 7031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7846 /* 7034 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_LSHR'
7847 /* 7034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7848 /* 7037 */ // Label 363: @7037
7849 /* 7037 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7048), // Rule ID 330 //
7850 /* 7042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7851 /* 7045 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_LSHR'
7852 /* 7045 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7853 /* 7048 */ // Label 364: @7048
7854 /* 7048 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7137), // Rule ID 438 //
7855 /* 7053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
7856 /* 7056 */ // MIs[0] dst
7857 /* 7056 */ // No operand predicates
7858 /* 7056 */ // MIs[0] sum
7859 /* 7056 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7860 /* 7060 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7861 /* 7064 */ // MIs[1] inner
7862 /* 7064 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7863 /* 7068 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7864 /* 7072 */ // MIs[2] ext1
7865 /* 7072 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7866 /* 7076 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7867 /* 7080 */ // MIs[3] x
7868 /* 7080 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7869 /* 7084 */ // MIs[2] ext2
7870 /* 7084 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7871 /* 7088 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
7872 /* 7092 */ // MIs[4] y
7873 /* 7092 */ // No operand predicates
7874 /* 7092 */ // MIs[1] Operand 2
7875 /* 7092 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7876 /* 7096 */ // MIs[0] Operand 2
7877 /* 7096 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7878 /* 7100 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
7879 /* 7104 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7880 /* 7106 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7881 /* 7109 */ // Combiner Rule #269: avgceil_u_match
7882 /* 7109 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
7883 /* 7112 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7884 /* 7117 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7885 /* 7121 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7886 /* 7125 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7887 /* 7129 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7888 /* 7133 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7889 /* 7136 */ GIR_EraseRootFromParent_Done,
7890 /* 7137 */ // Label 365: @7137
7891 /* 7137 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7214), // Rule ID 436 //
7892 /* 7142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
7893 /* 7145 */ // MIs[0] dst
7894 /* 7145 */ // No operand predicates
7895 /* 7145 */ // MIs[0] sum
7896 /* 7145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7897 /* 7149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7898 /* 7153 */ // MIs[1] ext1
7899 /* 7153 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7900 /* 7157 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
7901 /* 7161 */ // MIs[2] x
7902 /* 7161 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7903 /* 7165 */ // MIs[1] ext2
7904 /* 7165 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7905 /* 7169 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7906 /* 7173 */ // MIs[3] y
7907 /* 7173 */ // No operand predicates
7908 /* 7173 */ // MIs[0] Operand 2
7909 /* 7173 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7910 /* 7177 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
7911 /* 7181 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7912 /* 7183 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7913 /* 7186 */ // Combiner Rule #267: avgfloor_u_match
7914 /* 7186 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
7915 /* 7189 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7916 /* 7194 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7917 /* 7198 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7918 /* 7202 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7919 /* 7206 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7920 /* 7210 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7921 /* 7213 */ GIR_EraseRootFromParent_Done,
7922 /* 7214 */ // Label 366: @7214
7923 /* 7214 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7243), // Rule ID 421 //
7924 /* 7219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
7925 /* 7222 */ // MIs[0] dst
7926 /* 7222 */ // No operand predicates
7927 /* 7222 */ // MIs[0] d2
7928 /* 7222 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7929 /* 7226 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7930 /* 7230 */ // MIs[1] d1
7931 /* 7230 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7932 /* 7234 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
7933 /* 7238 */ // MIs[2] x
7934 /* 7238 */ // No operand predicates
7935 /* 7238 */ // MIs[2] y
7936 /* 7238 */ // No operand predicates
7937 /* 7238 */ // MIs[0] z
7938 /* 7238 */ // No operand predicates
7939 /* 7238 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7940 /* 7240 */ // Combiner Rule #255: lshr_of_trunc_of_lshr
7941 /* 7240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
7942 /* 7243 */ // Label 367: @7243
7943 /* 7243 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7283), // Rule ID 125 //
7944 /* 7248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7945 /* 7251 */ // MIs[0] dst
7946 /* 7251 */ // No operand predicates
7947 /* 7251 */ // MIs[0] zero
7948 /* 7251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7949 /* 7255 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7950 /* 7259 */ // MIs[1] Operand 1
7951 /* 7259 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7952 /* 7270 */ // MIs[0] rhs
7953 /* 7270 */ // No operand predicates
7954 /* 7270 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7955 /* 7275 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7956 /* 7277 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
7957 /* 7277 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7958 /* 7282 */ GIR_EraseRootFromParent_Done,
7959 /* 7283 */ // Label 368: @7283
7960 /* 7283 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7306), // Rule ID 116 //
7961 /* 7288 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7962 /* 7291 */ // MIs[0] dst
7963 /* 7291 */ // No operand predicates
7964 /* 7291 */ // MIs[0] lhs
7965 /* 7291 */ // No operand predicates
7966 /* 7291 */ // MIs[0] Operand 2
7967 /* 7291 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7968 /* 7295 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7969 /* 7300 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
7970 /* 7300 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7971 /* 7305 */ GIR_EraseRootFromParent_Done,
7972 /* 7306 */ // Label 369: @7306
7973 /* 7306 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(7317), // Rule ID 158 //
7974 /* 7311 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7975 /* 7314 */ // MIs[0] root
7976 /* 7314 */ // No operand predicates
7977 /* 7314 */ // MIs[0] mi.shifted
7978 /* 7314 */ // No operand predicates
7979 /* 7314 */ // MIs[0] mi.amt
7980 /* 7314 */ // No operand predicates
7981 /* 7314 */ // Combiner Rule #114: shifts_too_big @ [mi[2]]
7982 /* 7314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7983 /* 7317 */ // Label 370: @7317
7984 /* 7317 */ GIM_Reject,
7985 /* 7318 */ // Label 37: @7318
7986 /* 7318 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(7329), // Rule ID 90 //
7987 /* 7323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7988 /* 7326 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
7989 /* 7326 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7990 /* 7329 */ // Label 371: @7329
7991 /* 7329 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(7340), // Rule ID 169 //
7992 /* 7334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
7993 /* 7337 */ // Combiner Rule #125: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
7994 /* 7337 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
7995 /* 7340 */ // Label 372: @7340
7996 /* 7340 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(7351), // Rule ID 226 //
7997 /* 7345 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7998 /* 7348 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_ASHR'
7999 /* 7348 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8000 /* 7351 */ // Label 373: @7351
8001 /* 7351 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(7362), // Rule ID 231 //
8002 /* 7356 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8003 /* 7359 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
8004 /* 7359 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8005 /* 7362 */ // Label 374: @7362
8006 /* 7362 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(7373), // Rule ID 256 //
8007 /* 7367 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
8008 /* 7370 */ // Combiner Rule #189: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
8009 /* 7370 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
8010 /* 7373 */ // Label 375: @7373
8011 /* 7373 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(7384), // Rule ID 258 //
8012 /* 7378 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
8013 /* 7381 */ // Combiner Rule #190: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
8014 /* 7381 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
8015 /* 7384 */ // Label 376: @7384
8016 /* 7384 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(7395), // Rule ID 263 //
8017 /* 7389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8018 /* 7392 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_ASHR'
8019 /* 7392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8020 /* 7395 */ // Label 377: @7395
8021 /* 7395 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(7406), // Rule ID 331 //
8022 /* 7400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8023 /* 7403 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_ASHR'
8024 /* 7403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8025 /* 7406 */ // Label 378: @7406
8026 /* 7406 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(7495), // Rule ID 439 //
8027 /* 7411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule270Enabled),
8028 /* 7414 */ // MIs[0] dst
8029 /* 7414 */ // No operand predicates
8030 /* 7414 */ // MIs[0] sum
8031 /* 7414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8032 /* 7418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8033 /* 7422 */ // MIs[1] inner
8034 /* 7422 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8035 /* 7426 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8036 /* 7430 */ // MIs[2] ext1
8037 /* 7430 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8038 /* 7434 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8039 /* 7438 */ // MIs[3] x
8040 /* 7438 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8041 /* 7442 */ // MIs[2] ext2
8042 /* 7442 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8043 /* 7446 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
8044 /* 7450 */ // MIs[4] y
8045 /* 7450 */ // No operand predicates
8046 /* 7450 */ // MIs[1] Operand 2
8047 /* 7450 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8048 /* 7454 */ // MIs[0] Operand 2
8049 /* 7454 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8050 /* 7458 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
8051 /* 7462 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8052 /* 7464 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8053 /* 7467 */ // Combiner Rule #270: avgceil_s_match
8054 /* 7467 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
8055 /* 7470 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8056 /* 7475 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8057 /* 7479 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8058 /* 7483 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8059 /* 7487 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8060 /* 7491 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8061 /* 7494 */ GIR_EraseRootFromParent_Done,
8062 /* 7495 */ // Label 379: @7495
8063 /* 7495 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(7572), // Rule ID 437 //
8064 /* 7500 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule268Enabled),
8065 /* 7503 */ // MIs[0] dst
8066 /* 7503 */ // No operand predicates
8067 /* 7503 */ // MIs[0] sum
8068 /* 7503 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8069 /* 7507 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8070 /* 7511 */ // MIs[1] ext1
8071 /* 7511 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8072 /* 7515 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
8073 /* 7519 */ // MIs[2] x
8074 /* 7519 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8075 /* 7523 */ // MIs[1] ext2
8076 /* 7523 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8077 /* 7527 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8078 /* 7531 */ // MIs[3] y
8079 /* 7531 */ // No operand predicates
8080 /* 7531 */ // MIs[0] Operand 2
8081 /* 7531 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8082 /* 7535 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
8083 /* 7539 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8084 /* 7541 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8085 /* 7544 */ // Combiner Rule #268: avgfloor_s_match
8086 /* 7544 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
8087 /* 7547 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8088 /* 7552 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8089 /* 7556 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8090 /* 7560 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8091 /* 7564 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8092 /* 7568 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8093 /* 7571 */ GIR_EraseRootFromParent_Done,
8094 /* 7572 */ // Label 380: @7572
8095 /* 7572 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(7612), // Rule ID 126 //
8096 /* 7577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8097 /* 7580 */ // MIs[0] dst
8098 /* 7580 */ // No operand predicates
8099 /* 7580 */ // MIs[0] zero
8100 /* 7580 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8101 /* 7584 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8102 /* 7588 */ // MIs[1] Operand 1
8103 /* 7588 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8104 /* 7599 */ // MIs[0] rhs
8105 /* 7599 */ // No operand predicates
8106 /* 7599 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8107 /* 7604 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8108 /* 7606 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
8109 /* 7606 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8110 /* 7611 */ GIR_EraseRootFromParent_Done,
8111 /* 7612 */ // Label 381: @7612
8112 /* 7612 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(7635), // Rule ID 115 //
8113 /* 7617 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8114 /* 7620 */ // MIs[0] dst
8115 /* 7620 */ // No operand predicates
8116 /* 7620 */ // MIs[0] lhs
8117 /* 7620 */ // No operand predicates
8118 /* 7620 */ // MIs[0] Operand 2
8119 /* 7620 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8120 /* 7624 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8121 /* 7629 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
8122 /* 7629 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8123 /* 7634 */ GIR_EraseRootFromParent_Done,
8124 /* 7635 */ // Label 382: @7635
8125 /* 7635 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(7646), // Rule ID 157 //
8126 /* 7640 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8127 /* 7643 */ // MIs[0] root
8128 /* 7643 */ // No operand predicates
8129 /* 7643 */ // MIs[0] mi.shifted
8130 /* 7643 */ // No operand predicates
8131 /* 7643 */ // MIs[0] mi.amt
8132 /* 7643 */ // No operand predicates
8133 /* 7643 */ // Combiner Rule #114: shifts_too_big @ [mi[1]]
8134 /* 7643 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
8135 /* 7646 */ // Label 383: @7646
8136 /* 7646 */ GIM_Reject,
8137 /* 7647 */ // Label 38: @7647
8138 /* 7647 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(7658), // Rule ID 241 //
8139 /* 7652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
8140 /* 7655 */ // Combiner Rule #178: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
8141 /* 7655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
8142 /* 7658 */ // Label 384: @7658
8143 /* 7658 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(7669), // Rule ID 245 //
8144 /* 7663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
8145 /* 7666 */ // Combiner Rule #181: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
8146 /* 7666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
8147 /* 7669 */ // Label 385: @7669
8148 /* 7669 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(7689), // Rule ID 244 //
8149 /* 7674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
8150 /* 7677 */ // MIs[0] x
8151 /* 7677 */ // No operand predicates
8152 /* 7677 */ // MIs[0] y
8153 /* 7677 */ // No operand predicates
8154 /* 7677 */ // MIs[0] z
8155 /* 7677 */ // No operand predicates
8156 /* 7677 */ // MIs[0] Operand 3
8157 /* 7677 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8158 /* 7681 */ // Combiner Rule #180: funnel_shift_left_zero
8159 /* 7681 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8160 /* 7684 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8161 /* 7686 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
8162 /* 7688 */ GIR_EraseRootFromParent_Done,
8163 /* 7689 */ // Label 386: @7689
8164 /* 7689 */ GIM_Reject,
8165 /* 7690 */ // Label 39: @7690
8166 /* 7690 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(7701), // Rule ID 242 //
8167 /* 7695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
8168 /* 7698 */ // Combiner Rule #178: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
8169 /* 7698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
8170 /* 7701 */ // Label 387: @7701
8171 /* 7701 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(7712), // Rule ID 246 //
8172 /* 7706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
8173 /* 7709 */ // Combiner Rule #181: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
8174 /* 7709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
8175 /* 7712 */ // Label 388: @7712
8176 /* 7712 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(7732), // Rule ID 243 //
8177 /* 7717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
8178 /* 7720 */ // MIs[0] x
8179 /* 7720 */ // No operand predicates
8180 /* 7720 */ // MIs[0] y
8181 /* 7720 */ // No operand predicates
8182 /* 7720 */ // MIs[0] z
8183 /* 7720 */ // No operand predicates
8184 /* 7720 */ // MIs[0] Operand 3
8185 /* 7720 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8186 /* 7724 */ // Combiner Rule #179: funnel_shift_right_zero
8187 /* 7724 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8188 /* 7727 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8189 /* 7729 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
8190 /* 7731 */ GIR_EraseRootFromParent_Done,
8191 /* 7732 */ // Label 389: @7732
8192 /* 7732 */ GIM_Reject,
8193 /* 7733 */ // Label 40: @7733
8194 /* 7733 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(7756), // Rule ID 119 //
8195 /* 7738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8196 /* 7741 */ // MIs[0] dst
8197 /* 7741 */ // No operand predicates
8198 /* 7741 */ // MIs[0] lhs
8199 /* 7741 */ // No operand predicates
8200 /* 7741 */ // MIs[0] Operand 2
8201 /* 7741 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8202 /* 7745 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8203 /* 7750 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
8204 /* 7750 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8205 /* 7755 */ GIR_EraseRootFromParent_Done,
8206 /* 7756 */ // Label 390: @7756
8207 /* 7756 */ GIM_Reject,
8208 /* 7757 */ // Label 41: @7757
8209 /* 7757 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(7780), // Rule ID 118 //
8210 /* 7762 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8211 /* 7765 */ // MIs[0] dst
8212 /* 7765 */ // No operand predicates
8213 /* 7765 */ // MIs[0] lhs
8214 /* 7765 */ // No operand predicates
8215 /* 7765 */ // MIs[0] Operand 2
8216 /* 7765 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8217 /* 7769 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8218 /* 7774 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
8219 /* 7774 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8220 /* 7779 */ GIR_EraseRootFromParent_Done,
8221 /* 7780 */ // Label 391: @7780
8222 /* 7780 */ GIM_Reject,
8223 /* 7781 */ // Label 42: @7781
8224 /* 7781 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(7792), // Rule ID 164 //
8225 /* 7786 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
8226 /* 7789 */ // Combiner Rule #120: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
8227 /* 7789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
8228 /* 7792 */ // Label 392: @7792
8229 /* 7792 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(7803), // Rule ID 165 //
8230 /* 7797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
8231 /* 7800 */ // Combiner Rule #121: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
8232 /* 7800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
8233 /* 7803 */ // Label 393: @7803
8234 /* 7803 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(7814), // Rule ID 168 //
8235 /* 7808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
8236 /* 7811 */ // Combiner Rule #124: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
8237 /* 7811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
8238 /* 7814 */ // Label 394: @7814
8239 /* 7814 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(7825), // Rule ID 162 //
8240 /* 7819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
8241 /* 7822 */ // MIs[0] root
8242 /* 7822 */ // No operand predicates
8243 /* 7822 */ // MIs[0] pred
8244 /* 7822 */ // No operand predicates
8245 /* 7822 */ // MIs[0] lhs
8246 /* 7822 */ // No operand predicates
8247 /* 7822 */ // MIs[0] rhs
8248 /* 7822 */ // No operand predicates
8249 /* 7822 */ // Combiner Rule #118: canonicalize_icmp
8250 /* 7822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
8251 /* 7825 */ // Label 395: @7825
8252 /* 7825 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(7836), // Rule ID 446 //
8253 /* 7830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule274Enabled),
8254 /* 7833 */ // MIs[0] dst
8255 /* 7833 */ // No operand predicates
8256 /* 7833 */ // MIs[0] tst
8257 /* 7833 */ // No operand predicates
8258 /* 7833 */ // MIs[0] src1
8259 /* 7833 */ // No operand predicates
8260 /* 7833 */ // MIs[0] src2
8261 /* 7833 */ // No operand predicates
8262 /* 7833 */ // Combiner Rule #274: icmp_redundant_trunc
8263 /* 7833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner162),
8264 /* 7836 */ // Label 396: @7836
8265 /* 7836 */ GIM_Reject,
8266 /* 7837 */ // Label 43: @7837
8267 /* 7837 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(7848), // Rule ID 163 //
8268 /* 7842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
8269 /* 7845 */ // MIs[0] root
8270 /* 7845 */ // No operand predicates
8271 /* 7845 */ // MIs[0] pred
8272 /* 7845 */ // No operand predicates
8273 /* 7845 */ // MIs[0] lhs
8274 /* 7845 */ // No operand predicates
8275 /* 7845 */ // MIs[0] rhs
8276 /* 7845 */ // No operand predicates
8277 /* 7845 */ // Combiner Rule #119: canonicalize_fcmp
8278 /* 7845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
8279 /* 7848 */ // Label 397: @7848
8280 /* 7848 */ GIM_Reject,
8281 /* 7849 */ // Label 44: @7849
8282 /* 7849 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(7860), // Rule ID 109 //
8283 /* 7854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
8284 /* 7857 */ // Combiner Rule #89: select_same_val; wip_match_opcode 'G_SELECT'
8285 /* 7857 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
8286 /* 7860 */ // Label 398: @7860
8287 /* 7860 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(7871), // Rule ID 175 //
8288 /* 7865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
8289 /* 7868 */ // Combiner Rule #131: select_constant_cmp; wip_match_opcode 'G_SELECT'
8290 /* 7868 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
8291 /* 7871 */ // Label 399: @7871
8292 /* 7871 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(7882), // Rule ID 177 //
8293 /* 7876 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
8294 /* 7879 */ // Combiner Rule #133: match_selects; wip_match_opcode 'G_SELECT'
8295 /* 7879 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
8296 /* 7882 */ // Label 400: @7882
8297 /* 7882 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(7893), // Rule ID 355 //
8298 /* 7887 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
8299 /* 7890 */ // Combiner Rule #218: select_to_minmax; wip_match_opcode 'G_SELECT'
8300 /* 7890 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
8301 /* 7893 */ // Label 401: @7893
8302 /* 7893 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(7973), // Rule ID 444 //
8303 /* 7898 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule272Enabled),
8304 /* 7901 */ // MIs[0] dst
8305 /* 7901 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8306 /* 7905 */ // MIs[0] c
8307 /* 7905 */ // No operand predicates
8308 /* 7905 */ // MIs[0] Operand 2
8309 /* 7905 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8310 /* 7909 */ // MIs[0] x
8311 /* 7909 */ // No operand predicates
8312 /* 7909 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8313 /* 7913 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
8314 /* 7916 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8315 /* 7919 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
8316 /* 7929 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8317 /* 7932 */ // Combiner Rule #272: select_zero_true
8318 /* 7932 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
8319 /* 7935 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8320 /* 7940 */ GIR_RootToRootCopy, /*OpIdx*/1, // c
8321 /* 7942 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
8322 /* 7945 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
8323 /* 7949 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8324 /* 7954 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/3, // x
8325 /* 7958 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
8326 /* 7962 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8327 /* 7966 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8328 /* 7969 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
8329 /* 7972 */ GIR_EraseRootFromParent_Done,
8330 /* 7973 */ // Label 402: @7973
8331 /* 7973 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(8022), // Rule ID 178 //
8332 /* 7978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
8333 /* 7981 */ // MIs[0] dst
8334 /* 7981 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8335 /* 7985 */ // MIs[0] c
8336 /* 7985 */ // No operand predicates
8337 /* 7985 */ // MIs[0] x
8338 /* 7985 */ // No operand predicates
8339 /* 7985 */ // MIs[0] Operand 3
8340 /* 7985 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8341 /* 7989 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8342 /* 7993 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8343 /* 7996 */ // Combiner Rule #134: select_zero_false
8344 /* 7996 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
8345 /* 7999 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8346 /* 8004 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8347 /* 8006 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
8348 /* 8010 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8349 /* 8014 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
8350 /* 8018 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8351 /* 8021 */ GIR_EraseRootFromParent_Done,
8352 /* 8022 */ // Label 403: @8022
8353 /* 8022 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(8043), // Rule ID 176 //
8354 /* 8027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
8355 /* 8030 */ // MIs[0] root
8356 /* 8030 */ // No operand predicates
8357 /* 8030 */ // MIs[0] tst
8358 /* 8030 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8359 /* 8034 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
8360 /* 8038 */ // MIs[1] tst1
8361 /* 8038 */ // No operand predicates
8362 /* 8038 */ // MIs[1] a
8363 /* 8038 */ // No operand predicates
8364 /* 8038 */ // MIs[1] b
8365 /* 8038 */ // No operand predicates
8366 /* 8038 */ // MIs[0] x
8367 /* 8038 */ // No operand predicates
8368 /* 8038 */ // MIs[0] y
8369 /* 8038 */ // No operand predicates
8370 /* 8038 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8371 /* 8040 */ // Combiner Rule #132: select_to_iminmax
8372 /* 8040 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
8373 /* 8043 */ // Label 404: @8043
8374 /* 8043 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(8079), // Rule ID 179 //
8375 /* 8048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
8376 /* 8051 */ // MIs[0] dst
8377 /* 8051 */ // No operand predicates
8378 /* 8051 */ // MIs[0] c
8379 /* 8051 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8380 /* 8055 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
8381 /* 8059 */ // MIs[1] src
8382 /* 8059 */ // No operand predicates
8383 /* 8059 */ // MIs[1] Operand 2
8384 /* 8059 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
8385 /* 8063 */ // MIs[0] x
8386 /* 8063 */ // No operand predicates
8387 /* 8063 */ // MIs[0] y
8388 /* 8063 */ // No operand predicates
8389 /* 8063 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8390 /* 8065 */ // Combiner Rule #135: select_not
8391 /* 8065 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
8392 /* 8068 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8393 /* 8070 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
8394 /* 8074 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
8395 /* 8076 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8396 /* 8078 */ GIR_EraseRootFromParent_Done,
8397 /* 8079 */ // Label 405: @8079
8398 /* 8079 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(8108), // Rule ID 174 //
8399 /* 8084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
8400 /* 8087 */ // MIs[0] dst
8401 /* 8087 */ // No operand predicates
8402 /* 8087 */ // MIs[0] undef
8403 /* 8087 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8404 /* 8091 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8405 /* 8095 */ // MIs[0] x
8406 /* 8095 */ // No operand predicates
8407 /* 8095 */ // MIs[0] y
8408 /* 8095 */ // No operand predicates
8409 /* 8095 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8410 /* 8100 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8411 /* 8102 */ // Combiner Rule #130: select_undef_cmp
8412 /* 8102 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8413 /* 8107 */ GIR_EraseRootFromParent_Done,
8414 /* 8108 */ // Label 406: @8108
8415 /* 8108 */ GIM_Reject,
8416 /* 8109 */ // Label 45: @8109
8417 /* 8109 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(8120), // Rule ID 366 //
8418 /* 8114 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8419 /* 8117 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
8420 /* 8117 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8421 /* 8120 */ // Label 407: @8120
8422 /* 8120 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(8131), // Rule ID 414 //
8423 /* 8125 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
8424 /* 8128 */ // Combiner Rule #249: match_addos; wip_match_opcode 'G_UADDO'
8425 /* 8128 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
8426 /* 8131 */ // Label 408: @8131
8427 /* 8131 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(8142), // Rule ID 456 //
8428 /* 8136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule284Enabled),
8429 /* 8139 */ // MIs[0] dst
8430 /* 8139 */ // No operand predicates
8431 /* 8139 */ // MIs[0] carry_out
8432 /* 8139 */ // No operand predicates
8433 /* 8139 */ // MIs[0] src1
8434 /* 8139 */ // No operand predicates
8435 /* 8139 */ // MIs[0] src2
8436 /* 8139 */ // No operand predicates
8437 /* 8139 */ // Combiner Rule #284: simplify_uaddo
8438 /* 8139 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner167),
8439 /* 8142 */ // Label 409: @8142
8440 /* 8142 */ GIM_Reject,
8441 /* 8143 */ // Label 46: @8143
8442 /* 8143 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(8154), // Rule ID 214 //
8443 /* 8148 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8444 /* 8151 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_UADDE'
8445 /* 8151 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8446 /* 8154 */ // Label 410: @8154
8447 /* 8154 */ GIM_Reject,
8448 /* 8155 */ // Label 47: @8155
8449 /* 8155 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(8166), // Rule ID 416 //
8450 /* 8160 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8451 /* 8163 */ // Combiner Rule #250: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
8452 /* 8163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
8453 /* 8166 */ // Label 411: @8166
8454 /* 8166 */ GIM_Reject,
8455 /* 8167 */ // Label 48: @8167
8456 /* 8167 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(8178), // Rule ID 216 //
8457 /* 8172 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8458 /* 8175 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_USUBE'
8459 /* 8175 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8460 /* 8178 */ // Label 412: @8178
8461 /* 8178 */ GIM_Reject,
8462 /* 8179 */ // Label 49: @8179
8463 /* 8179 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(8190), // Rule ID 367 //
8464 /* 8184 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8465 /* 8187 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
8466 /* 8187 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8467 /* 8190 */ // Label 413: @8190
8468 /* 8190 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(8201), // Rule ID 413 //
8469 /* 8195 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
8470 /* 8198 */ // Combiner Rule #249: match_addos; wip_match_opcode 'G_SADDO'
8471 /* 8198 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
8472 /* 8201 */ // Label 414: @8201
8473 /* 8201 */ GIM_Reject,
8474 /* 8202 */ // Label 50: @8202
8475 /* 8202 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(8213), // Rule ID 215 //
8476 /* 8207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8477 /* 8210 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_SADDE'
8478 /* 8210 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8479 /* 8213 */ // Label 415: @8213
8480 /* 8213 */ GIM_Reject,
8481 /* 8214 */ // Label 51: @8214
8482 /* 8214 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(8225), // Rule ID 415 //
8483 /* 8219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8484 /* 8222 */ // Combiner Rule #250: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
8485 /* 8222 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
8486 /* 8225 */ // Label 416: @8225
8487 /* 8225 */ GIM_Reject,
8488 /* 8226 */ // Label 52: @8226
8489 /* 8226 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(8237), // Rule ID 217 //
8490 /* 8231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8491 /* 8234 */ // Combiner Rule #168: adde_to_addo; wip_match_opcode 'G_SSUBE'
8492 /* 8234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8493 /* 8237 */ // Label 417: @8237
8494 /* 8237 */ GIM_Reject,
8495 /* 8238 */ // Label 53: @8238
8496 /* 8238 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(8249), // Rule ID 210 //
8497 /* 8243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8498 /* 8246 */ // Combiner Rule #166: mulo_by_2; wip_match_opcode 'G_UMULO'
8499 /* 8246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
8500 /* 8249 */ // Label 418: @8249
8501 /* 8249 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(8260), // Rule ID 212 //
8502 /* 8254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
8503 /* 8257 */ // Combiner Rule #167: mulo_by_0; wip_match_opcode 'G_UMULO'
8504 /* 8257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8505 /* 8260 */ // Label 419: @8260
8506 /* 8260 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(8271), // Rule ID 368 //
8507 /* 8265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8508 /* 8268 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
8509 /* 8268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8510 /* 8271 */ // Label 420: @8271
8511 /* 8271 */ GIM_Reject,
8512 /* 8272 */ // Label 54: @8272
8513 /* 8272 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(8283), // Rule ID 211 //
8514 /* 8277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8515 /* 8280 */ // Combiner Rule #166: mulo_by_2; wip_match_opcode 'G_SMULO'
8516 /* 8280 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
8517 /* 8283 */ // Label 421: @8283
8518 /* 8283 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(8294), // Rule ID 213 //
8519 /* 8288 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
8520 /* 8291 */ // Combiner Rule #167: mulo_by_0; wip_match_opcode 'G_SMULO'
8521 /* 8291 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8522 /* 8294 */ // Label 422: @8294
8523 /* 8294 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(8305), // Rule ID 369 //
8524 /* 8299 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8525 /* 8302 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
8526 /* 8302 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8527 /* 8305 */ // Label 423: @8305
8528 /* 8305 */ GIM_Reject,
8529 /* 8306 */ // Label 55: @8306
8530 /* 8306 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(8317), // Rule ID 304 //
8531 /* 8311 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
8532 /* 8314 */ // Combiner Rule #197: mulh_to_lshr; wip_match_opcode 'G_UMULH'
8533 /* 8314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8534 /* 8317 */ // Label 424: @8317
8535 /* 8317 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(8328), // Rule ID 370 //
8536 /* 8322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8537 /* 8325 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
8538 /* 8325 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8539 /* 8328 */ // Label 425: @8328
8540 /* 8328 */ GIM_Reject,
8541 /* 8329 */ // Label 56: @8329
8542 /* 8329 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(8340), // Rule ID 371 //
8543 /* 8334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8544 /* 8337 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
8545 /* 8337 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8546 /* 8340 */ // Label 426: @8340
8547 /* 8340 */ GIM_Reject,
8548 /* 8341 */ // Label 57: @8341
8549 /* 8341 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(8352), // Rule ID 372 //
8550 /* 8346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8551 /* 8349 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
8552 /* 8349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8553 /* 8352 */ // Label 427: @8352
8554 /* 8352 */ GIM_Reject,
8555 /* 8353 */ // Label 58: @8353
8556 /* 8353 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(8364), // Rule ID 373 //
8557 /* 8358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8558 /* 8361 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
8559 /* 8361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8560 /* 8364 */ // Label 428: @8364
8561 /* 8364 */ GIM_Reject,
8562 /* 8365 */ // Label 59: @8365
8563 /* 8365 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(8376), // Rule ID 229 //
8564 /* 8370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8565 /* 8373 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
8566 /* 8373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8567 /* 8376 */ // Label 429: @8376
8568 /* 8376 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(8387), // Rule ID 233 //
8569 /* 8381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8570 /* 8384 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
8571 /* 8384 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8572 /* 8387 */ // Label 430: @8387
8573 /* 8387 */ GIM_Reject,
8574 /* 8388 */ // Label 60: @8388
8575 /* 8388 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(8399), // Rule ID 228 //
8576 /* 8393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
8577 /* 8396 */ // Combiner Rule #173: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
8578 /* 8396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8579 /* 8399 */ // Label 431: @8399
8580 /* 8399 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(8410), // Rule ID 234 //
8581 /* 8404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8582 /* 8407 */ // Combiner Rule #174: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
8583 /* 8407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
8584 /* 8410 */ // Label 432: @8410
8585 /* 8410 */ GIM_Reject,
8586 /* 8411 */ // Label 61: @8411
8587 /* 8411 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(8422), // Rule ID 374 //
8588 /* 8416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8589 /* 8419 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
8590 /* 8419 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8591 /* 8422 */ // Label 433: @8422
8592 /* 8422 */ GIM_Reject,
8593 /* 8423 */ // Label 62: @8423
8594 /* 8423 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(8434), // Rule ID 375 //
8595 /* 8428 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8596 /* 8431 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
8597 /* 8431 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8598 /* 8434 */ // Label 434: @8434
8599 /* 8434 */ GIM_Reject,
8600 /* 8435 */ // Label 63: @8435
8601 /* 8435 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(8446), // Rule ID 376 //
8602 /* 8440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8603 /* 8443 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
8604 /* 8443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8605 /* 8446 */ // Label 435: @8446
8606 /* 8446 */ GIM_Reject,
8607 /* 8447 */ // Label 64: @8447
8608 /* 8447 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(8458), // Rule ID 377 //
8609 /* 8452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8610 /* 8455 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
8611 /* 8455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8612 /* 8458 */ // Label 436: @8458
8613 /* 8458 */ GIM_Reject,
8614 /* 8459 */ // Label 65: @8459
8615 /* 8459 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(8470), // Rule ID 305 //
8616 /* 8464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8617 /* 8467 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FADD'
8618 /* 8467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8619 /* 8470 */ // Label 437: @8470
8620 /* 8470 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(8481), // Rule ID 312 //
8621 /* 8475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
8622 /* 8478 */ // Combiner Rule #200: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8623 /* 8478 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
8624 /* 8481 */ // Label 438: @8481
8625 /* 8481 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(8492), // Rule ID 313 //
8626 /* 8486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
8627 /* 8489 */ // Combiner Rule #201: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8628 /* 8489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
8629 /* 8492 */ // Label 439: @8492
8630 /* 8492 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(8503), // Rule ID 314 //
8631 /* 8497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
8632 /* 8500 */ // Combiner Rule #202: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8633 /* 8500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
8634 /* 8503 */ // Label 440: @8503
8635 /* 8503 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(8514), // Rule ID 315 //
8636 /* 8508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
8637 /* 8511 */ // Combiner Rule #203: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
8638 /* 8511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
8639 /* 8514 */ // Label 441: @8514
8640 /* 8514 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(8525), // Rule ID 338 //
8641 /* 8519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8642 /* 8522 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FADD'
8643 /* 8522 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8644 /* 8525 */ // Label 442: @8525
8645 /* 8525 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(8536), // Rule ID 378 //
8646 /* 8530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8647 /* 8533 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
8648 /* 8533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8649 /* 8536 */ // Label 443: @8536
8650 /* 8536 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(8559), // Rule ID 148 //
8651 /* 8541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
8652 /* 8544 */ // MIs[0] dst
8653 /* 8544 */ // No operand predicates
8654 /* 8544 */ // MIs[0] x
8655 /* 8544 */ // No operand predicates
8656 /* 8544 */ // MIs[0] y
8657 /* 8544 */ // No operand predicates
8658 /* 8544 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
8659 /* 8548 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8660 /* 8553 */ // Combiner Rule #108: right_identity_neg_zero_fp
8661 /* 8553 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8662 /* 8558 */ GIR_EraseRootFromParent_Done,
8663 /* 8559 */ // Label 444: @8559
8664 /* 8559 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(8588), // Rule ID 149 //
8665 /* 8564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
8666 /* 8567 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
8667 /* 8573 */ // MIs[0] dst
8668 /* 8573 */ // No operand predicates
8669 /* 8573 */ // MIs[0] x
8670 /* 8573 */ // No operand predicates
8671 /* 8573 */ // MIs[0] y
8672 /* 8573 */ // No operand predicates
8673 /* 8573 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
8674 /* 8577 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8675 /* 8582 */ // Combiner Rule #109: right_identity_neg_zero_fp_nsz
8676 /* 8582 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8677 /* 8587 */ GIR_EraseRootFromParent_Done,
8678 /* 8588 */ // Label 445: @8588
8679 /* 8588 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(8599), // Rule ID 278 //
8680 /* 8593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8681 /* 8596 */ // MIs[0] d
8682 /* 8596 */ // No operand predicates
8683 /* 8596 */ // MIs[0] mi.src0
8684 /* 8596 */ // No operand predicates
8685 /* 8596 */ // MIs[0] mi.src1
8686 /* 8596 */ // No operand predicates
8687 /* 8596 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[0]]
8688 /* 8596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8689 /* 8599 */ // Label 446: @8599
8690 /* 8599 */ GIM_Reject,
8691 /* 8600 */ // Label 66: @8600
8692 /* 8600 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(8611), // Rule ID 306 //
8693 /* 8605 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8694 /* 8608 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FSUB'
8695 /* 8608 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8696 /* 8611 */ // Label 447: @8611
8697 /* 8611 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(8622), // Rule ID 316 //
8698 /* 8616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8699 /* 8619 */ // Combiner Rule #204: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8700 /* 8619 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
8701 /* 8622 */ // Label 448: @8622
8702 /* 8622 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(8633), // Rule ID 317 //
8703 /* 8627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
8704 /* 8630 */ // Combiner Rule #205: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8705 /* 8630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
8706 /* 8633 */ // Label 449: @8633
8707 /* 8633 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(8644), // Rule ID 318 //
8708 /* 8638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
8709 /* 8641 */ // Combiner Rule #206: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8710 /* 8641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
8711 /* 8644 */ // Label 450: @8644
8712 /* 8644 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(8655), // Rule ID 319 //
8713 /* 8649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
8714 /* 8652 */ // Combiner Rule #207: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
8715 /* 8652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8716 /* 8655 */ // Label 451: @8655
8717 /* 8655 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(8666), // Rule ID 339 //
8718 /* 8660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8719 /* 8663 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FSUB'
8720 /* 8663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8721 /* 8666 */ // Label 452: @8666
8722 /* 8666 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(8677), // Rule ID 356 //
8723 /* 8671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
8724 /* 8674 */ // Combiner Rule #219: fsub_to_fneg; wip_match_opcode 'G_FSUB'
8725 /* 8674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8726 /* 8677 */ // Label 453: @8677
8727 /* 8677 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(8688), // Rule ID 279 //
8728 /* 8682 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8729 /* 8685 */ // MIs[0] d
8730 /* 8685 */ // No operand predicates
8731 /* 8685 */ // MIs[0] mi.src0
8732 /* 8685 */ // No operand predicates
8733 /* 8685 */ // MIs[0] mi.src1
8734 /* 8685 */ // No operand predicates
8735 /* 8685 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[1]]
8736 /* 8685 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8737 /* 8688 */ // Label 454: @8688
8738 /* 8688 */ GIM_Reject,
8739 /* 8689 */ // Label 67: @8689
8740 /* 8689 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(8700), // Rule ID 307 //
8741 /* 8694 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8742 /* 8697 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMUL'
8743 /* 8697 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8744 /* 8700 */ // Label 455: @8700
8745 /* 8700 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(8711), // Rule ID 337 //
8746 /* 8705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8747 /* 8708 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMUL'
8748 /* 8708 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8749 /* 8711 */ // Label 456: @8711
8750 /* 8711 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(8722), // Rule ID 379 //
8751 /* 8716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8752 /* 8719 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
8753 /* 8719 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
8754 /* 8722 */ // Label 457: @8722
8755 /* 8722 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(8745), // Rule ID 138 //
8756 /* 8727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
8757 /* 8730 */ // MIs[0] dst
8758 /* 8730 */ // No operand predicates
8759 /* 8730 */ // MIs[0] x
8760 /* 8730 */ // No operand predicates
8761 /* 8730 */ // MIs[0] y
8762 /* 8730 */ // No operand predicates
8763 /* 8730 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
8764 /* 8734 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8765 /* 8739 */ // Combiner Rule #100: right_identity_one_fp
8766 /* 8739 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8767 /* 8744 */ GIR_EraseRootFromParent_Done,
8768 /* 8745 */ // Label 458: @8745
8769 /* 8745 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(8765), // Rule ID 150 //
8770 /* 8750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
8771 /* 8753 */ // MIs[0] dst
8772 /* 8753 */ // No operand predicates
8773 /* 8753 */ // MIs[0] x
8774 /* 8753 */ // No operand predicates
8775 /* 8753 */ // MIs[0] y
8776 /* 8753 */ // No operand predicates
8777 /* 8753 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
8778 /* 8757 */ // Combiner Rule #110: right_identity_neg_one_fp
8779 /* 8757 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
8780 /* 8760 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8781 /* 8762 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
8782 /* 8764 */ GIR_EraseRootFromParent_Done,
8783 /* 8765 */ // Label 459: @8765
8784 /* 8765 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(8776), // Rule ID 280 //
8785 /* 8770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8786 /* 8773 */ // MIs[0] d
8787 /* 8773 */ // No operand predicates
8788 /* 8773 */ // MIs[0] mi.src0
8789 /* 8773 */ // No operand predicates
8790 /* 8773 */ // MIs[0] mi.src1
8791 /* 8773 */ // No operand predicates
8792 /* 8773 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[2]]
8793 /* 8773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8794 /* 8776 */ // Label 460: @8776
8795 /* 8776 */ GIM_Reject,
8796 /* 8777 */ // Label 68: @8777
8797 /* 8777 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(8788), // Rule ID 291 //
8798 /* 8782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8799 /* 8785 */ // Combiner Rule #193: constant_fold_fma; wip_match_opcode 'G_FMA'
8800 /* 8785 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8801 /* 8788 */ // Label 461: @8788
8802 /* 8788 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(8799), // Rule ID 310 //
8803 /* 8793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8804 /* 8796 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMA'
8805 /* 8796 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8806 /* 8799 */ // Label 462: @8799
8807 /* 8799 */ GIM_Reject,
8808 /* 8800 */ // Label 69: @8800
8809 /* 8800 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(8811), // Rule ID 290 //
8810 /* 8805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8811 /* 8808 */ // Combiner Rule #193: constant_fold_fma; wip_match_opcode 'G_FMAD'
8812 /* 8808 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8813 /* 8811 */ // Label 463: @8811
8814 /* 8811 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(8822), // Rule ID 309 //
8815 /* 8816 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8816 /* 8819 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FMAD'
8817 /* 8819 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8818 /* 8822 */ // Label 464: @8822
8819 /* 8822 */ GIM_Reject,
8820 /* 8823 */ // Label 70: @8823
8821 /* 8823 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(8834), // Rule ID 308 //
8822 /* 8828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
8823 /* 8831 */ // Combiner Rule #198: redundant_neg_operands; wip_match_opcode 'G_FDIV'
8824 /* 8831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
8825 /* 8834 */ // Label 465: @8834
8826 /* 8834 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(8845), // Rule ID 340 //
8827 /* 8839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8828 /* 8842 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FDIV'
8829 /* 8842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8830 /* 8845 */ // Label 466: @8845
8831 /* 8845 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(8856), // Rule ID 281 //
8832 /* 8850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8833 /* 8853 */ // MIs[0] d
8834 /* 8853 */ // No operand predicates
8835 /* 8853 */ // MIs[0] mi.src0
8836 /* 8853 */ // No operand predicates
8837 /* 8853 */ // MIs[0] mi.src1
8838 /* 8853 */ // No operand predicates
8839 /* 8853 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[3]]
8840 /* 8853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8841 /* 8856 */ // Label 467: @8856
8842 /* 8856 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(8867), // Rule ID 353 //
8843 /* 8861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8844 /* 8864 */ // MIs[0] dst
8845 /* 8864 */ // No operand predicates
8846 /* 8864 */ // MIs[0] src1
8847 /* 8864 */ // No operand predicates
8848 /* 8864 */ // MIs[0] src2
8849 /* 8864 */ // No operand predicates
8850 /* 8864 */ // Combiner Rule #216: fdiv_repeated_divison
8851 /* 8864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
8852 /* 8867 */ // Label 468: @8867
8853 /* 8867 */ GIM_Reject,
8854 /* 8868 */ // Label 71: @8868
8855 /* 8868 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(8879), // Rule ID 341 //
8856 /* 8873 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8857 /* 8876 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FREM'
8858 /* 8876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
8859 /* 8879 */ // Label 469: @8879
8860 /* 8879 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(8890), // Rule ID 282 //
8861 /* 8884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8862 /* 8887 */ // MIs[0] d
8863 /* 8887 */ // No operand predicates
8864 /* 8887 */ // MIs[0] mi.src0
8865 /* 8887 */ // No operand predicates
8866 /* 8887 */ // MIs[0] mi.src1
8867 /* 8887 */ // No operand predicates
8868 /* 8887 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[4]]
8869 /* 8887 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8870 /* 8890 */ // Label 470: @8890
8871 /* 8890 */ GIM_Reject,
8872 /* 8891 */ // Label 72: @8891
8873 /* 8891 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(8912), // Rule ID 222 //
8874 /* 8896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
8875 /* 8899 */ // MIs[0] dst
8876 /* 8899 */ // No operand predicates
8877 /* 8899 */ // MIs[0] float
8878 /* 8899 */ // No operand predicates
8879 /* 8899 */ // MIs[0] int
8880 /* 8899 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8881 /* 8903 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8882 /* 8907 */ // MIs[1] imm
8883 /* 8907 */ // No operand predicates
8884 /* 8907 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8885 /* 8909 */ // Combiner Rule #170: expand_const_fpowi
8886 /* 8909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
8887 /* 8912 */ // Label 471: @8912
8888 /* 8912 */ GIM_Reject,
8889 /* 8913 */ // Label 73: @8913
8890 /* 8913 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(8934), // Rule ID 196 //
8891 /* 8918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
8892 /* 8921 */ // MIs[0] dst
8893 /* 8921 */ // No operand predicates
8894 /* 8921 */ // MIs[0] src0
8895 /* 8921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8896 /* 8925 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8897 /* 8929 */ // MIs[1] cst
8898 /* 8929 */ // No operand predicates
8899 /* 8929 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8900 /* 8931 */ // Combiner Rule #152: constant_fold_flog2
8901 /* 8931 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8902 /* 8934 */ // Label 472: @8934
8903 /* 8934 */ GIM_Reject,
8904 /* 8935 */ // Label 74: @8935
8905 /* 8935 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(8956), // Rule ID 193 //
8906 /* 8940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8907 /* 8943 */ // MIs[0] dst
8908 /* 8943 */ // No operand predicates
8909 /* 8943 */ // MIs[0] src0
8910 /* 8943 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8911 /* 8947 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8912 /* 8951 */ // MIs[1] cst
8913 /* 8951 */ // No operand predicates
8914 /* 8951 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8915 /* 8953 */ // Combiner Rule #149: constant_fold_fneg
8916 /* 8953 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8917 /* 8956 */ // Label 473: @8956
8918 /* 8956 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(8985), // Rule ID 136 //
8919 /* 8961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
8920 /* 8964 */ // MIs[0] dst
8921 /* 8964 */ // No operand predicates
8922 /* 8964 */ // MIs[0] t
8923 /* 8964 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8924 /* 8968 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8925 /* 8972 */ // MIs[1] src
8926 /* 8972 */ // No operand predicates
8927 /* 8972 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8928 /* 8977 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8929 /* 8979 */ // Combiner Rule #98: fneg_fneg_fold
8930 /* 8979 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8931 /* 8984 */ GIR_EraseRootFromParent_Done,
8932 /* 8985 */ // Label 474: @8985
8933 /* 8985 */ GIM_Reject,
8934 /* 8986 */ // Label 75: @8986
8935 /* 8986 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(9007), // Rule ID 198 //
8936 /* 8991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
8937 /* 8994 */ // MIs[0] dst
8938 /* 8994 */ // No operand predicates
8939 /* 8994 */ // MIs[0] src0
8940 /* 8994 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8941 /* 8998 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8942 /* 9002 */ // MIs[1] cst
8943 /* 9002 */ // No operand predicates
8944 /* 9002 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8945 /* 9004 */ // Combiner Rule #154: constant_fold_fpext
8946 /* 9004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8947 /* 9007 */ // Label 475: @9007
8948 /* 9007 */ GIM_Reject,
8949 /* 9008 */ // Label 76: @9008
8950 /* 9008 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(9029), // Rule ID 197 //
8951 /* 9013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
8952 /* 9016 */ // MIs[0] dst
8953 /* 9016 */ // No operand predicates
8954 /* 9016 */ // MIs[0] src0
8955 /* 9016 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8956 /* 9020 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8957 /* 9024 */ // MIs[1] cst
8958 /* 9024 */ // No operand predicates
8959 /* 9024 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8960 /* 9026 */ // Combiner Rule #153: constant_fold_fptrunc
8961 /* 9026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8962 /* 9029 */ // Label 476: @9029
8963 /* 9029 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(9050), // Rule ID 147 //
8964 /* 9034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
8965 /* 9037 */ // MIs[0] dst
8966 /* 9037 */ // No operand predicates
8967 /* 9037 */ // MIs[0] src1
8968 /* 9037 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8969 /* 9041 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
8970 /* 9045 */ // MIs[1] src0
8971 /* 9045 */ // No operand predicates
8972 /* 9045 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8973 /* 9047 */ // Combiner Rule #107: fptrunc_fpext_fold
8974 /* 9047 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
8975 /* 9050 */ // Label 477: @9050
8976 /* 9050 */ GIM_Reject,
8977 /* 9051 */ // Label 77: @9051
8978 /* 9051 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(9072), // Rule ID 98 //
8979 /* 9056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8980 /* 9059 */ // MIs[0] dst
8981 /* 9059 */ // No operand predicates
8982 /* 9059 */ // MIs[0] __unary_undef_to_undef_match_0.x
8983 /* 9059 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8984 /* 9063 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8985 /* 9067 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8986 /* 9069 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
8987 /* 9069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8988 /* 9072 */ // Label 478: @9072
8989 /* 9072 */ GIM_Reject,
8990 /* 9073 */ // Label 78: @9073
8991 /* 9073 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(9094), // Rule ID 99 //
8992 /* 9078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8993 /* 9081 */ // MIs[0] dst
8994 /* 9081 */ // No operand predicates
8995 /* 9081 */ // MIs[0] __unary_undef_to_undef_match_0.x
8996 /* 9081 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8997 /* 9085 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8998 /* 9089 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8999 /* 9091 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
9000 /* 9091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
9001 /* 9094 */ // Label 479: @9094
9002 /* 9094 */ GIM_Reject,
9003 /* 9095 */ // Label 79: @9095
9004 /* 9095 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(9106), // Rule ID 82 //
9005 /* 9100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
9006 /* 9103 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
9007 /* 9103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
9008 /* 9106 */ // Label 480: @9106
9009 /* 9106 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(9121), // Rule ID 206 //
9010 /* 9111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
9011 /* 9114 */ // MIs[0] dst
9012 /* 9114 */ // No operand predicates
9013 /* 9114 */ // MIs[0] Operand 1
9014 /* 9114 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
9015 /* 9118 */ // Combiner Rule #162: itof_const_zero_fold_si
9016 /* 9118 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
9017 /* 9121 */ // Label 481: @9121
9018 /* 9121 */ GIM_Reject,
9019 /* 9122 */ // Label 80: @9122
9020 /* 9122 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(9133), // Rule ID 81 //
9021 /* 9127 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
9022 /* 9130 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
9023 /* 9130 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
9024 /* 9133 */ // Label 482: @9133
9025 /* 9133 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(9148), // Rule ID 207 //
9026 /* 9138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
9027 /* 9141 */ // MIs[0] dst
9028 /* 9141 */ // No operand predicates
9029 /* 9141 */ // MIs[0] Operand 1
9030 /* 9141 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
9031 /* 9145 */ // Combiner Rule #163: itof_const_zero_fold_ui
9032 /* 9145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
9033 /* 9148 */ // Label 483: @9148
9034 /* 9148 */ GIM_Reject,
9035 /* 9149 */ // Label 81: @9149
9036 /* 9149 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(9178), // Rule ID 25 //
9037 /* 9154 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
9038 /* 9157 */ // MIs[0] dst
9039 /* 9157 */ // No operand predicates
9040 /* 9157 */ // MIs[0] src
9041 /* 9157 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9042 /* 9161 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
9043 /* 9165 */ // MIs[1] __idempotent_prop_match_0.x
9044 /* 9165 */ // No operand predicates
9045 /* 9165 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9046 /* 9170 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9047 /* 9172 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
9048 /* 9172 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9049 /* 9177 */ GIR_EraseRootFromParent_Done,
9050 /* 9178 */ // Label 484: @9178
9051 /* 9178 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(9199), // Rule ID 194 //
9052 /* 9183 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
9053 /* 9186 */ // MIs[0] dst
9054 /* 9186 */ // No operand predicates
9055 /* 9186 */ // MIs[0] src0
9056 /* 9186 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9057 /* 9190 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9058 /* 9194 */ // MIs[1] cst
9059 /* 9194 */ // No operand predicates
9060 /* 9194 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9061 /* 9196 */ // Combiner Rule #150: constant_fold_fabs
9062 /* 9196 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9063 /* 9199 */ // Label 485: @9199
9064 /* 9199 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(9227), // Rule ID 303 //
9065 /* 9204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
9066 /* 9207 */ // MIs[0] dst
9067 /* 9207 */ // No operand predicates
9068 /* 9207 */ // MIs[0] tmp
9069 /* 9207 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9070 /* 9211 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9071 /* 9215 */ // MIs[1] x
9072 /* 9215 */ // No operand predicates
9073 /* 9215 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9074 /* 9217 */ // Combiner Rule #196: fabs_fneg_fold
9075 /* 9217 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
9076 /* 9220 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9077 /* 9222 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9078 /* 9226 */ GIR_EraseRootFromParent_Done,
9079 /* 9227 */ // Label 486: @9227
9080 /* 9227 */ GIM_Reject,
9081 /* 9228 */ // Label 82: @9228
9082 /* 9228 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(9239), // Rule ID 283 //
9083 /* 9233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9084 /* 9236 */ // MIs[0] d
9085 /* 9236 */ // No operand predicates
9086 /* 9236 */ // MIs[0] mi.src0
9087 /* 9236 */ // No operand predicates
9088 /* 9236 */ // MIs[0] mi.src1
9089 /* 9236 */ // No operand predicates
9090 /* 9236 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[5]]
9091 /* 9236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9092 /* 9239 */ // Label 487: @9239
9093 /* 9239 */ GIM_Reject,
9094 /* 9240 */ // Label 83: @9240
9095 /* 9240 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(9269), // Rule ID 26 //
9096 /* 9245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
9097 /* 9248 */ // MIs[0] dst
9098 /* 9248 */ // No operand predicates
9099 /* 9248 */ // MIs[0] src
9100 /* 9248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9101 /* 9252 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
9102 /* 9256 */ // MIs[1] __idempotent_prop_match_0.x
9103 /* 9256 */ // No operand predicates
9104 /* 9256 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9105 /* 9261 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9106 /* 9263 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
9107 /* 9263 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9108 /* 9268 */ GIR_EraseRootFromParent_Done,
9109 /* 9269 */ // Label 488: @9269
9110 /* 9269 */ GIM_Reject,
9111 /* 9270 */ // Label 84: @9270
9112 /* 9270 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(9281), // Rule ID 218 //
9113 /* 9275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9114 /* 9278 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
9115 /* 9278 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
9116 /* 9281 */ // Label 489: @9281
9117 /* 9281 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(9292), // Rule ID 342 //
9118 /* 9286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9119 /* 9289 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
9120 /* 9289 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9121 /* 9292 */ // Label 490: @9292
9122 /* 9292 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(9303), // Rule ID 380 //
9123 /* 9297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9124 /* 9300 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
9125 /* 9300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9126 /* 9303 */ // Label 491: @9303
9127 /* 9303 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(9314), // Rule ID 284 //
9128 /* 9308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9129 /* 9311 */ // MIs[0] d
9130 /* 9311 */ // No operand predicates
9131 /* 9311 */ // MIs[0] mi.src0
9132 /* 9311 */ // No operand predicates
9133 /* 9311 */ // MIs[0] mi.src1
9134 /* 9311 */ // No operand predicates
9135 /* 9311 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[6]]
9136 /* 9311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9137 /* 9314 */ // Label 492: @9314
9138 /* 9314 */ GIM_Reject,
9139 /* 9315 */ // Label 85: @9315
9140 /* 9315 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(9326), // Rule ID 219 //
9141 /* 9320 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9142 /* 9323 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
9143 /* 9323 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
9144 /* 9326 */ // Label 493: @9326
9145 /* 9326 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(9337), // Rule ID 343 //
9146 /* 9331 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9147 /* 9334 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
9148 /* 9334 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9149 /* 9337 */ // Label 494: @9337
9150 /* 9337 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(9348), // Rule ID 381 //
9151 /* 9342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9152 /* 9345 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
9153 /* 9345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9154 /* 9348 */ // Label 495: @9348
9155 /* 9348 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(9359), // Rule ID 285 //
9156 /* 9353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9157 /* 9356 */ // MIs[0] d
9158 /* 9356 */ // No operand predicates
9159 /* 9356 */ // MIs[0] mi.src0
9160 /* 9356 */ // No operand predicates
9161 /* 9356 */ // MIs[0] mi.src1
9162 /* 9356 */ // No operand predicates
9163 /* 9356 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[7]]
9164 /* 9356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9165 /* 9359 */ // Label 496: @9359
9166 /* 9359 */ GIM_Reject,
9167 /* 9360 */ // Label 86: @9360
9168 /* 9360 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(9371), // Rule ID 382 //
9169 /* 9365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9170 /* 9368 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
9171 /* 9368 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9172 /* 9371 */ // Label 497: @9371
9173 /* 9371 */ GIM_Reject,
9174 /* 9372 */ // Label 87: @9372
9175 /* 9372 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(9383), // Rule ID 383 //
9176 /* 9377 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9177 /* 9380 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
9178 /* 9380 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9179 /* 9383 */ // Label 498: @9383
9180 /* 9383 */ GIM_Reject,
9181 /* 9384 */ // Label 88: @9384
9182 /* 9384 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(9395), // Rule ID 220 //
9183 /* 9389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9184 /* 9392 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
9185 /* 9392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
9186 /* 9395 */ // Label 499: @9395
9187 /* 9395 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(9406), // Rule ID 344 //
9188 /* 9400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9189 /* 9403 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
9190 /* 9403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9191 /* 9406 */ // Label 500: @9406
9192 /* 9406 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(9417), // Rule ID 384 //
9193 /* 9411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9194 /* 9414 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
9195 /* 9414 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9196 /* 9417 */ // Label 501: @9417
9197 /* 9417 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(9428), // Rule ID 286 //
9198 /* 9422 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9199 /* 9425 */ // MIs[0] d
9200 /* 9425 */ // No operand predicates
9201 /* 9425 */ // MIs[0] mi.src0
9202 /* 9425 */ // No operand predicates
9203 /* 9425 */ // MIs[0] mi.src1
9204 /* 9425 */ // No operand predicates
9205 /* 9425 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[8]]
9206 /* 9425 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9207 /* 9428 */ // Label 502: @9428
9208 /* 9428 */ GIM_Reject,
9209 /* 9429 */ // Label 89: @9429
9210 /* 9429 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(9440), // Rule ID 221 //
9211 /* 9434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9212 /* 9437 */ // Combiner Rule #169: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
9213 /* 9437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
9214 /* 9440 */ // Label 503: @9440
9215 /* 9440 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(9451), // Rule ID 345 //
9216 /* 9445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9217 /* 9448 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
9218 /* 9448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9219 /* 9451 */ // Label 504: @9451
9220 /* 9451 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(9462), // Rule ID 385 //
9221 /* 9456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
9222 /* 9459 */ // Combiner Rule #221: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
9223 /* 9459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
9224 /* 9462 */ // Label 505: @9462
9225 /* 9462 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(9473), // Rule ID 287 //
9226 /* 9467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9227 /* 9470 */ // MIs[0] d
9228 /* 9470 */ // No operand predicates
9229 /* 9470 */ // MIs[0] mi.src0
9230 /* 9470 */ // No operand predicates
9231 /* 9470 */ // MIs[0] mi.src1
9232 /* 9470 */ // No operand predicates
9233 /* 9470 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[9]]
9234 /* 9470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9235 /* 9473 */ // Label 506: @9473
9236 /* 9473 */ GIM_Reject,
9237 /* 9474 */ // Label 90: @9474
9238 /* 9474 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(9485), // Rule ID 288 //
9239 /* 9479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9240 /* 9482 */ // MIs[0] d
9241 /* 9482 */ // No operand predicates
9242 /* 9482 */ // MIs[0] mi.src0
9243 /* 9482 */ // No operand predicates
9244 /* 9482 */ // MIs[0] mi.src1
9245 /* 9482 */ // No operand predicates
9246 /* 9482 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[10]]
9247 /* 9482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9248 /* 9485 */ // Label 507: @9485
9249 /* 9485 */ GIM_Reject,
9250 /* 9486 */ // Label 91: @9486
9251 /* 9486 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(9497), // Rule ID 289 //
9252 /* 9491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
9253 /* 9494 */ // MIs[0] d
9254 /* 9494 */ // No operand predicates
9255 /* 9494 */ // MIs[0] mi.src0
9256 /* 9494 */ // No operand predicates
9257 /* 9494 */ // MIs[0] mi.src1
9258 /* 9494 */ // No operand predicates
9259 /* 9494 */ // Combiner Rule #192: constant_fold_fp_binop @ [mi[11]]
9260 /* 9494 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9261 /* 9497 */ // Label 508: @9497
9262 /* 9497 */ GIM_Reject,
9263 /* 9498 */ // Label 92: @9498
9264 /* 9498 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(9509), // Rule ID 159 //
9265 /* 9503 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
9266 /* 9506 */ // Combiner Rule #115: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
9267 /* 9506 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
9268 /* 9509 */ // Label 509: @9509
9269 /* 9509 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(9520), // Rule ID 161 //
9270 /* 9514 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
9271 /* 9517 */ // Combiner Rule #117: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
9272 /* 9517 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
9273 /* 9520 */ // Label 510: @9520
9274 /* 9520 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(9531), // Rule ID 208 //
9275 /* 9525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
9276 /* 9528 */ // Combiner Rule #164: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
9277 /* 9528 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
9278 /* 9531 */ // Label 511: @9531
9279 /* 9531 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(9542), // Rule ID 224 //
9280 /* 9536 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
9281 /* 9539 */ // Combiner Rule #172: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
9282 /* 9539 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
9283 /* 9542 */ // Label 512: @9542
9284 /* 9542 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(9553), // Rule ID 261 //
9285 /* 9547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9286 /* 9550 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
9287 /* 9550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9288 /* 9553 */ // Label 513: @9553
9289 /* 9553 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(9564), // Rule ID 322 //
9290 /* 9558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9291 /* 9561 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
9292 /* 9561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9293 /* 9564 */ // Label 514: @9564
9294 /* 9564 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(9587), // Rule ID 117 //
9295 /* 9569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
9296 /* 9572 */ // MIs[0] dst
9297 /* 9572 */ // No operand predicates
9298 /* 9572 */ // MIs[0] lhs
9299 /* 9572 */ // No operand predicates
9300 /* 9572 */ // MIs[0] Operand 2
9301 /* 9572 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
9302 /* 9576 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9303 /* 9581 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
9304 /* 9581 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9305 /* 9586 */ GIR_EraseRootFromParent_Done,
9306 /* 9587 */ // Label 515: @9587
9307 /* 9587 */ GIM_Reject,
9308 /* 9588 */ // Label 93: @9588
9309 /* 9588 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(9599), // Rule ID 274 //
9310 /* 9593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9311 /* 9596 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SMIN'
9312 /* 9596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9313 /* 9599 */ // Label 516: @9599
9314 /* 9599 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(9610), // Rule ID 333 //
9315 /* 9604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9316 /* 9607 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SMIN'
9317 /* 9607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9318 /* 9610 */ // Label 517: @9610
9319 /* 9610 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(9621), // Rule ID 362 //
9320 /* 9615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9321 /* 9618 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
9322 /* 9618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9323 /* 9621 */ // Label 518: @9621
9324 /* 9621 */ GIM_Reject,
9325 /* 9622 */ // Label 94: @9622
9326 /* 9622 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(9633), // Rule ID 275 //
9327 /* 9627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9328 /* 9630 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_SMAX'
9329 /* 9630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9330 /* 9633 */ // Label 519: @9633
9331 /* 9633 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(9644), // Rule ID 334 //
9332 /* 9638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9333 /* 9641 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_SMAX'
9334 /* 9641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9335 /* 9644 */ // Label 520: @9644
9336 /* 9644 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(9655), // Rule ID 363 //
9337 /* 9649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9338 /* 9652 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
9339 /* 9652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9340 /* 9655 */ // Label 521: @9655
9341 /* 9655 */ GIM_Reject,
9342 /* 9656 */ // Label 95: @9656
9343 /* 9656 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(9667), // Rule ID 276 //
9344 /* 9661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9345 /* 9664 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UMIN'
9346 /* 9664 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9347 /* 9667 */ // Label 522: @9667
9348 /* 9667 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(9678), // Rule ID 335 //
9349 /* 9672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9350 /* 9675 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UMIN'
9351 /* 9675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9352 /* 9678 */ // Label 523: @9678
9353 /* 9678 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(9689), // Rule ID 364 //
9354 /* 9683 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9355 /* 9686 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
9356 /* 9686 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9357 /* 9689 */ // Label 524: @9689
9358 /* 9689 */ GIM_Reject,
9359 /* 9690 */ // Label 96: @9690
9360 /* 9690 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(9701), // Rule ID 277 //
9361 /* 9695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9362 /* 9698 */ // Combiner Rule #191: constant_fold_binop; wip_match_opcode 'G_UMAX'
9363 /* 9698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9364 /* 9701 */ // Label 525: @9701
9365 /* 9701 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(9712), // Rule ID 336 //
9366 /* 9706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9367 /* 9709 */ // Combiner Rule #208: fold_binop_into_select; wip_match_opcode 'G_UMAX'
9368 /* 9709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
9369 /* 9712 */ // Label 526: @9712
9370 /* 9712 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(9723), // Rule ID 365 //
9371 /* 9717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
9372 /* 9720 */ // Combiner Rule #220: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
9373 /* 9720 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
9374 /* 9723 */ // Label 527: @9723
9375 /* 9723 */ GIM_Reject,
9376 /* 9724 */ // Label 97: @9724
9377 /* 9724 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(9735), // Rule ID 92 //
9378 /* 9729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
9379 /* 9732 */ // Combiner Rule #82: unary_undef_to_zero; wip_match_opcode 'G_ABS'
9380 /* 9732 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
9381 /* 9735 */ // Label 528: @9735
9382 /* 9735 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(9746), // Rule ID 300 //
9383 /* 9740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9384 /* 9743 */ // MIs[0] dst
9385 /* 9743 */ // No operand predicates
9386 /* 9743 */ // MIs[0] mi.src
9387 /* 9743 */ // No operand predicates
9388 /* 9743 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[5]]
9389 /* 9743 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9390 /* 9746 */ // Label 529: @9746
9391 /* 9746 */ GIM_Reject,
9392 /* 9747 */ // Label 98: @9747
9393 /* 9747 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(9758), // Rule ID 192 //
9394 /* 9752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
9395 /* 9755 */ // Combiner Rule #148: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
9396 /* 9755 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9397 /* 9758 */ // Label 530: @9758
9398 /* 9758 */ GIM_Reject,
9399 /* 9759 */ // Label 99: @9759
9400 /* 9759 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(9770), // Rule ID 32 //
9401 /* 9764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
9402 /* 9767 */ // Combiner Rule #30: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
9403 /* 9767 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
9404 /* 9770 */ // Label 531: @9770
9405 /* 9770 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(9781), // Rule ID 73 //
9406 /* 9775 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
9407 /* 9778 */ // Combiner Rule #71: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
9408 /* 9778 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
9409 /* 9781 */ // Label 532: @9781
9410 /* 9781 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(9792), // Rule ID 107 //
9411 /* 9786 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
9412 /* 9789 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
9413 /* 9789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
9414 /* 9792 */ // Label 533: @9792
9415 /* 9792 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(9831), // Rule ID 44 //
9416 /* 9797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
9417 /* 9800 */ // MIs[0] root
9418 /* 9800 */ // No operand predicates
9419 /* 9800 */ // MIs[0] src
9420 /* 9800 */ // No operand predicates
9421 /* 9800 */ // MIs[0] elt
9422 /* 9800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9423 /* 9804 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
9424 /* 9808 */ // MIs[1] src
9425 /* 9808 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
9426 /* 9813 */ // MIs[1] idx
9427 /* 9813 */ // No operand predicates
9428 /* 9813 */ // MIs[0] idx
9429 /* 9813 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
9430 /* 9818 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9431 /* 9823 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9432 /* 9825 */ // Combiner Rule #42: insert_vector_element_extract_vector_element
9433 /* 9825 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9434 /* 9830 */ GIR_EraseRootFromParent_Done,
9435 /* 9831 */ // Label 534: @9831
9436 /* 9831 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(9864), // Rule ID 30 //
9437 /* 9836 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
9438 /* 9839 */ // MIs[0] root
9439 /* 9839 */ // No operand predicates
9440 /* 9839 */ // MIs[0] src
9441 /* 9839 */ // No operand predicates
9442 /* 9839 */ // MIs[0] elt
9443 /* 9839 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9444 /* 9843 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9445 /* 9847 */ // MIs[0] idx
9446 /* 9847 */ // No operand predicates
9447 /* 9847 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
9448 /* 9851 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9449 /* 9856 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9450 /* 9858 */ // Combiner Rule #28: insert_vector_element_elt_undef
9451 /* 9858 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9452 /* 9863 */ GIR_EraseRootFromParent_Done,
9453 /* 9864 */ // Label 535: @9864
9454 /* 9864 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(9888), // Rule ID 29 //
9455 /* 9869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
9456 /* 9872 */ // MIs[0] root
9457 /* 9872 */ // No operand predicates
9458 /* 9872 */ // MIs[0] src
9459 /* 9872 */ // No operand predicates
9460 /* 9872 */ // MIs[0] elt
9461 /* 9872 */ // No operand predicates
9462 /* 9872 */ // MIs[0] idx
9463 /* 9872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
9464 /* 9876 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9465 /* 9880 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9466 /* 9882 */ // Combiner Rule #27: insert_vector_element_idx_undef
9467 /* 9882 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9468 /* 9885 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9469 /* 9887 */ GIR_EraseRootFromParent_Done,
9470 /* 9888 */ // Label 536: @9888
9471 /* 9888 */ GIM_Reject,
9472 /* 9889 */ // Label 100: @9889
9473 /* 9889 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(9900), // Rule ID 31 //
9474 /* 9894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
9475 /* 9897 */ // Combiner Rule #29: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9476 /* 9897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
9477 /* 9900 */ // Label 537: @9900
9478 /* 9900 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(9911), // Rule ID 74 //
9479 /* 9905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
9480 /* 9908 */ // Combiner Rule #72: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9481 /* 9908 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
9482 /* 9911 */ // Label 538: @9911
9483 /* 9911 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(9922), // Rule ID 80 //
9484 /* 9916 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9485 /* 9919 */ // Combiner Rule #76: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9486 /* 9919 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9487 /* 9922 */ // Label 539: @9922
9488 /* 9922 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(9933), // Rule ID 108 //
9489 /* 9927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
9490 /* 9930 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
9491 /* 9930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
9492 /* 9933 */ // Label 540: @9933
9493 /* 9933 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(9957), // Rule ID 42 //
9494 /* 9938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
9495 /* 9941 */ // MIs[0] root
9496 /* 9941 */ // No operand predicates
9497 /* 9941 */ // MIs[0] src
9498 /* 9941 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9499 /* 9945 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9500 /* 9949 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
9501 /* 9952 */ // MIs[1] x
9502 /* 9952 */ // No operand predicates
9503 /* 9952 */ // MIs[1] y
9504 /* 9952 */ // No operand predicates
9505 /* 9952 */ // MIs[1] z
9506 /* 9952 */ // No operand predicates
9507 /* 9952 */ // MIs[1] a
9508 /* 9952 */ // No operand predicates
9509 /* 9952 */ // MIs[1] b
9510 /* 9952 */ // No operand predicates
9511 /* 9952 */ // MIs[1] c
9512 /* 9952 */ // No operand predicates
9513 /* 9952 */ // MIs[1] d
9514 /* 9952 */ // No operand predicates
9515 /* 9952 */ // MIs[1] e
9516 /* 9952 */ // No operand predicates
9517 /* 9952 */ // MIs[0] idx
9518 /* 9952 */ // No operand predicates
9519 /* 9952 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9520 /* 9954 */ // Combiner Rule #40: extract_vector_element_build_vector_trunc8
9521 /* 9954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9522 /* 9957 */ // Label 541: @9957
9523 /* 9957 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(9981), // Rule ID 41 //
9524 /* 9962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
9525 /* 9965 */ // MIs[0] root
9526 /* 9965 */ // No operand predicates
9527 /* 9965 */ // MIs[0] src
9528 /* 9965 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9529 /* 9969 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9530 /* 9973 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
9531 /* 9976 */ // MIs[1] x
9532 /* 9976 */ // No operand predicates
9533 /* 9976 */ // MIs[1] y
9534 /* 9976 */ // No operand predicates
9535 /* 9976 */ // MIs[1] z
9536 /* 9976 */ // No operand predicates
9537 /* 9976 */ // MIs[1] a
9538 /* 9976 */ // No operand predicates
9539 /* 9976 */ // MIs[1] b
9540 /* 9976 */ // No operand predicates
9541 /* 9976 */ // MIs[1] c
9542 /* 9976 */ // No operand predicates
9543 /* 9976 */ // MIs[1] d
9544 /* 9976 */ // No operand predicates
9545 /* 9976 */ // MIs[0] idx
9546 /* 9976 */ // No operand predicates
9547 /* 9976 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9548 /* 9978 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc7
9549 /* 9978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9550 /* 9981 */ // Label 542: @9981
9551 /* 9981 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(10005), // Rule ID 40 //
9552 /* 9986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
9553 /* 9989 */ // MIs[0] root
9554 /* 9989 */ // No operand predicates
9555 /* 9989 */ // MIs[0] src
9556 /* 9989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9557 /* 9993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9558 /* 9997 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
9559 /* 10000 */ // MIs[1] x
9560 /* 10000 */ // No operand predicates
9561 /* 10000 */ // MIs[1] y
9562 /* 10000 */ // No operand predicates
9563 /* 10000 */ // MIs[1] z
9564 /* 10000 */ // No operand predicates
9565 /* 10000 */ // MIs[1] a
9566 /* 10000 */ // No operand predicates
9567 /* 10000 */ // MIs[1] b
9568 /* 10000 */ // No operand predicates
9569 /* 10000 */ // MIs[1] c
9570 /* 10000 */ // No operand predicates
9571 /* 10000 */ // MIs[0] idx
9572 /* 10000 */ // No operand predicates
9573 /* 10000 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9574 /* 10002 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc6
9575 /* 10002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9576 /* 10005 */ // Label 543: @10005
9577 /* 10005 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(10029), // Rule ID 39 //
9578 /* 10010 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
9579 /* 10013 */ // MIs[0] root
9580 /* 10013 */ // No operand predicates
9581 /* 10013 */ // MIs[0] src
9582 /* 10013 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9583 /* 10017 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9584 /* 10021 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
9585 /* 10024 */ // MIs[1] x
9586 /* 10024 */ // No operand predicates
9587 /* 10024 */ // MIs[1] y
9588 /* 10024 */ // No operand predicates
9589 /* 10024 */ // MIs[1] z
9590 /* 10024 */ // No operand predicates
9591 /* 10024 */ // MIs[1] a
9592 /* 10024 */ // No operand predicates
9593 /* 10024 */ // MIs[1] b
9594 /* 10024 */ // No operand predicates
9595 /* 10024 */ // MIs[0] idx
9596 /* 10024 */ // No operand predicates
9597 /* 10024 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9598 /* 10026 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc5
9599 /* 10026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9600 /* 10029 */ // Label 544: @10029
9601 /* 10029 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(10053), // Rule ID 38 //
9602 /* 10034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
9603 /* 10037 */ // MIs[0] root
9604 /* 10037 */ // No operand predicates
9605 /* 10037 */ // MIs[0] src
9606 /* 10037 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9607 /* 10041 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9608 /* 10045 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
9609 /* 10048 */ // MIs[1] x
9610 /* 10048 */ // No operand predicates
9611 /* 10048 */ // MIs[1] y
9612 /* 10048 */ // No operand predicates
9613 /* 10048 */ // MIs[1] z
9614 /* 10048 */ // No operand predicates
9615 /* 10048 */ // MIs[1] a
9616 /* 10048 */ // No operand predicates
9617 /* 10048 */ // MIs[0] idx
9618 /* 10048 */ // No operand predicates
9619 /* 10048 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9620 /* 10050 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc4
9621 /* 10050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9622 /* 10053 */ // Label 545: @10053
9623 /* 10053 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(10077), // Rule ID 37 //
9624 /* 10058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
9625 /* 10061 */ // MIs[0] root
9626 /* 10061 */ // No operand predicates
9627 /* 10061 */ // MIs[0] src
9628 /* 10061 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9629 /* 10065 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9630 /* 10069 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
9631 /* 10072 */ // MIs[1] x
9632 /* 10072 */ // No operand predicates
9633 /* 10072 */ // MIs[1] y
9634 /* 10072 */ // No operand predicates
9635 /* 10072 */ // MIs[1] z
9636 /* 10072 */ // No operand predicates
9637 /* 10072 */ // MIs[0] idx
9638 /* 10072 */ // No operand predicates
9639 /* 10072 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9640 /* 10074 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc3
9641 /* 10074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9642 /* 10077 */ // Label 546: @10077
9643 /* 10077 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(10111), // Rule ID 33 //
9644 /* 10082 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
9645 /* 10085 */ // MIs[0] root
9646 /* 10085 */ // No operand predicates
9647 /* 10085 */ // MIs[0] src
9648 /* 10085 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9649 /* 10089 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
9650 /* 10093 */ // MIs[1] x
9651 /* 10093 */ // No operand predicates
9652 /* 10093 */ // MIs[1] value
9653 /* 10093 */ // No operand predicates
9654 /* 10093 */ // MIs[1] idx
9655 /* 10093 */ // No operand predicates
9656 /* 10093 */ // MIs[0] idx
9657 /* 10093 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
9658 /* 10098 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
9659 /* 10103 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9660 /* 10105 */ // Combiner Rule #31: extract_vector_element_not_const
9661 /* 10105 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
9662 /* 10110 */ GIR_EraseRootFromParent_Done,
9663 /* 10111 */ // Label 547: @10111
9664 /* 10111 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(10132), // Rule ID 34 //
9665 /* 10116 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
9666 /* 10119 */ // MIs[0] root
9667 /* 10119 */ // No operand predicates
9668 /* 10119 */ // MIs[0] src
9669 /* 10119 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9670 /* 10123 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
9671 /* 10127 */ // MIs[1] x
9672 /* 10127 */ // No operand predicates
9673 /* 10127 */ // MIs[1] value
9674 /* 10127 */ // No operand predicates
9675 /* 10127 */ // MIs[1] idx2
9676 /* 10127 */ // No operand predicates
9677 /* 10127 */ // MIs[0] idx1
9678 /* 10127 */ // No operand predicates
9679 /* 10127 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9680 /* 10129 */ // Combiner Rule #32: extract_vector_element_different_indices
9681 /* 10129 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
9682 /* 10132 */ // Label 548: @10132
9683 /* 10132 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(10161), // Rule ID 43 //
9684 /* 10137 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
9685 /* 10140 */ // MIs[0] root
9686 /* 10140 */ // No operand predicates
9687 /* 10140 */ // MIs[0] src
9688 /* 10140 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9689 /* 10144 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
9690 /* 10148 */ // MIs[1] src1
9691 /* 10148 */ // No operand predicates
9692 /* 10148 */ // MIs[1] src2
9693 /* 10148 */ // No operand predicates
9694 /* 10148 */ // MIs[1] mask
9695 /* 10148 */ // No operand predicates
9696 /* 10148 */ // MIs[0] idx
9697 /* 10148 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9698 /* 10152 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9699 /* 10156 */ // MIs[2] imm
9700 /* 10156 */ // No operand predicates
9701 /* 10156 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9702 /* 10158 */ // Combiner Rule #41: extract_vector_element_shuffle_vector
9703 /* 10158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
9704 /* 10161 */ // Label 549: @10161
9705 /* 10161 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(10185), // Rule ID 36 //
9706 /* 10166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
9707 /* 10169 */ // MIs[0] root
9708 /* 10169 */ // No operand predicates
9709 /* 10169 */ // MIs[0] src
9710 /* 10169 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9711 /* 10173 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
9712 /* 10177 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
9713 /* 10180 */ // MIs[1] x
9714 /* 10180 */ // No operand predicates
9715 /* 10180 */ // MIs[1] y
9716 /* 10180 */ // No operand predicates
9717 /* 10180 */ // MIs[0] idx
9718 /* 10180 */ // No operand predicates
9719 /* 10180 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9720 /* 10182 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc2
9721 /* 10182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9722 /* 10185 */ // Label 550: @10185
9723 /* 10185 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(10217), // Rule ID 35 //
9724 /* 10190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
9725 /* 10193 */ // MIs[0] root
9726 /* 10193 */ // No operand predicates
9727 /* 10193 */ // MIs[0] src
9728 /* 10193 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9729 /* 10197 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
9730 /* 10201 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
9731 /* 10204 */ // MIs[1] unused
9732 /* 10204 */ // No operand predicates
9733 /* 10204 */ // MIs[0] idx
9734 /* 10204 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9735 /* 10208 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9736 /* 10212 */ // MIs[2] imm
9737 /* 10212 */ // No operand predicates
9738 /* 10212 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9739 /* 10214 */ // Combiner Rule #33: extract_vector_element_build_vector
9740 /* 10214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
9741 /* 10217 */ // Label 551: @10217
9742 /* 10217 */ GIM_Try, /*On fail goto*//*Label 552*/ GIMT_Encode4(10241), // Rule ID 27 //
9743 /* 10222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
9744 /* 10225 */ // MIs[0] root
9745 /* 10225 */ // No operand predicates
9746 /* 10225 */ // MIs[0] vector
9747 /* 10225 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9748 /* 10229 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9749 /* 10233 */ // MIs[0] idx
9750 /* 10233 */ // No operand predicates
9751 /* 10233 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9752 /* 10235 */ // Combiner Rule #25: match_extract_of_element_undef_vector
9753 /* 10235 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9754 /* 10238 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9755 /* 10240 */ GIR_EraseRootFromParent_Done,
9756 /* 10241 */ // Label 552: @10241
9757 /* 10241 */ GIM_Try, /*On fail goto*//*Label 553*/ GIMT_Encode4(10265), // Rule ID 28 //
9758 /* 10246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
9759 /* 10249 */ // MIs[0] root
9760 /* 10249 */ // No operand predicates
9761 /* 10249 */ // MIs[0] vector
9762 /* 10249 */ // No operand predicates
9763 /* 10249 */ // MIs[0] idx
9764 /* 10249 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9765 /* 10253 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9766 /* 10257 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9767 /* 10259 */ // Combiner Rule #26: match_extract_of_element_undef_index
9768 /* 10259 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9769 /* 10262 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9770 /* 10264 */ GIR_EraseRootFromParent_Done,
9771 /* 10265 */ // Label 553: @10265
9772 /* 10265 */ GIM_Reject,
9773 /* 10266 */ // Label 101: @10266
9774 /* 10266 */ GIM_Try, /*On fail goto*//*Label 554*/ GIMT_Encode4(10277), // Rule ID 103 //
9775 /* 10271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
9776 /* 10274 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
9777 /* 10274 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
9778 /* 10277 */ // Label 554: @10277
9779 /* 10277 */ GIM_Try, /*On fail goto*//*Label 555*/ GIMT_Encode4(10288), // Rule ID 105 //
9780 /* 10282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
9781 /* 10285 */ // Combiner Rule #86: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9782 /* 10285 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
9783 /* 10288 */ // Label 555: @10288
9784 /* 10288 */ GIM_Try, /*On fail goto*//*Label 556*/ GIMT_Encode4(10299), // Rule ID 399 //
9785 /* 10293 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
9786 /* 10296 */ // Combiner Rule #235: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
9787 /* 10296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
9788 /* 10299 */ // Label 556: @10299
9789 /* 10299 */ GIM_Try, /*On fail goto*//*Label 557*/ GIMT_Encode4(10310), // Rule ID 401 //
9790 /* 10304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
9791 /* 10307 */ // Combiner Rule #237: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9792 /* 10307 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
9793 /* 10310 */ // Label 557: @10310
9794 /* 10310 */ GIM_Try, /*On fail goto*//*Label 558*/ GIMT_Encode4(10321), // Rule ID 445 //
9795 /* 10315 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule273Enabled),
9796 /* 10318 */ // Combiner Rule #273: combine_shuffle_vector; wip_match_opcode 'G_SHUFFLE_VECTOR'
9797 /* 10318 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
9798 /* 10321 */ // Label 558: @10321
9799 /* 10321 */ GIM_Try, /*On fail goto*//*Label 559*/ GIMT_Encode4(10342), // Rule ID 400 //
9800 /* 10326 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
9801 /* 10329 */ // MIs[0] root
9802 /* 10329 */ // No operand predicates
9803 /* 10329 */ // MIs[0] src1
9804 /* 10329 */ // No operand predicates
9805 /* 10329 */ // MIs[0] undef
9806 /* 10329 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9807 /* 10333 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9808 /* 10337 */ // MIs[0] mask
9809 /* 10337 */ // No operand predicates
9810 /* 10337 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9811 /* 10339 */ // Combiner Rule #236: combine_shuffle_undef_rhs
9812 /* 10339 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
9813 /* 10342 */ // Label 559: @10342
9814 /* 10342 */ GIM_Reject,
9815 /* 10343 */ // Label 102: @10343
9816 /* 10343 */ GIM_Try, /*On fail goto*//*Label 560*/ GIMT_Encode4(10354), // Rule ID 297 //
9817 /* 10348 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9818 /* 10351 */ // MIs[0] dst
9819 /* 10351 */ // No operand predicates
9820 /* 10351 */ // MIs[0] mi.src
9821 /* 10351 */ // No operand predicates
9822 /* 10351 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[2]]
9823 /* 10351 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9824 /* 10354 */ // Label 560: @10354
9825 /* 10354 */ GIM_Try, /*On fail goto*//*Label 561*/ GIMT_Encode4(10365), // Rule ID 425 //
9826 /* 10359 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
9827 /* 10362 */ // MIs[0] dst
9828 /* 10362 */ // No operand predicates
9829 /* 10362 */ // MIs[0] src
9830 /* 10362 */ // No operand predicates
9831 /* 10362 */ // Combiner Rule #259: cttz_to_cttz_zero_poison
9832 /* 10362 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
9833 /* 10365 */ // Label 561: @10365
9834 /* 10365 */ GIM_Reject,
9835 /* 10366 */ // Label 103: @10366
9836 /* 10366 */ GIM_Try, /*On fail goto*//*Label 562*/ GIMT_Encode4(10377), // Rule ID 298 //
9837 /* 10371 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9838 /* 10374 */ // MIs[0] dst
9839 /* 10374 */ // No operand predicates
9840 /* 10374 */ // MIs[0] mi.src
9841 /* 10374 */ // No operand predicates
9842 /* 10374 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[3]]
9843 /* 10374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9844 /* 10377 */ // Label 562: @10377
9845 /* 10377 */ GIM_Reject,
9846 /* 10378 */ // Label 104: @10378
9847 /* 10378 */ GIM_Try, /*On fail goto*//*Label 563*/ GIMT_Encode4(10389), // Rule ID 295 //
9848 /* 10383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9849 /* 10386 */ // MIs[0] dst
9850 /* 10386 */ // No operand predicates
9851 /* 10386 */ // MIs[0] mi.src
9852 /* 10386 */ // No operand predicates
9853 /* 10386 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[0]]
9854 /* 10386 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9855 /* 10389 */ // Label 563: @10389
9856 /* 10389 */ GIM_Try, /*On fail goto*//*Label 564*/ GIMT_Encode4(10400), // Rule ID 422 //
9857 /* 10394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
9858 /* 10397 */ // MIs[0] dst
9859 /* 10397 */ // No operand predicates
9860 /* 10397 */ // MIs[0] src
9861 /* 10397 */ // No operand predicates
9862 /* 10397 */ // Combiner Rule #256: ctlz_to_ctls
9863 /* 10397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
9864 /* 10400 */ // Label 564: @10400
9865 /* 10400 */ GIM_Try, /*On fail goto*//*Label 565*/ GIMT_Encode4(10411), // Rule ID 424 //
9866 /* 10405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
9867 /* 10408 */ // MIs[0] dst
9868 /* 10408 */ // No operand predicates
9869 /* 10408 */ // MIs[0] src
9870 /* 10408 */ // No operand predicates
9871 /* 10408 */ // Combiner Rule #258: ctlz_to_ctlz_zero_poison
9872 /* 10408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
9873 /* 10411 */ // Label 565: @10411
9874 /* 10411 */ GIM_Reject,
9875 /* 10412 */ // Label 105: @10412
9876 /* 10412 */ GIM_Try, /*On fail goto*//*Label 566*/ GIMT_Encode4(10423), // Rule ID 296 //
9877 /* 10417 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9878 /* 10420 */ // MIs[0] dst
9879 /* 10420 */ // No operand predicates
9880 /* 10420 */ // MIs[0] mi.src
9881 /* 10420 */ // No operand predicates
9882 /* 10420 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[1]]
9883 /* 10420 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9884 /* 10423 */ // Label 566: @10423
9885 /* 10423 */ GIM_Try, /*On fail goto*//*Label 567*/ GIMT_Encode4(10434), // Rule ID 423 //
9886 /* 10428 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9887 /* 10431 */ // MIs[0] dst
9888 /* 10431 */ // No operand predicates
9889 /* 10431 */ // MIs[0] src
9890 /* 10431 */ // No operand predicates
9891 /* 10431 */ // Combiner Rule #257: ctlz_zero_poison_to_ctls
9892 /* 10431 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
9893 /* 10434 */ // Label 567: @10434
9894 /* 10434 */ GIM_Reject,
9895 /* 10435 */ // Label 106: @10435
9896 /* 10435 */ GIM_Try, /*On fail goto*//*Label 568*/ GIMT_Encode4(10446), // Rule ID 299 //
9897 /* 10440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9898 /* 10443 */ // MIs[0] dst
9899 /* 10443 */ // No operand predicates
9900 /* 10443 */ // MIs[0] mi.src
9901 /* 10443 */ // No operand predicates
9902 /* 10443 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[4]]
9903 /* 10443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9904 /* 10446 */ // Label 568: @10446
9905 /* 10446 */ GIM_Reject,
9906 /* 10447 */ // Label 107: @10447
9907 /* 10447 */ GIM_Try, /*On fail goto*//*Label 569*/ GIMT_Encode4(10458), // Rule ID 301 //
9908 /* 10452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9909 /* 10455 */ // MIs[0] dst
9910 /* 10455 */ // No operand predicates
9911 /* 10455 */ // MIs[0] mi.src
9912 /* 10455 */ // No operand predicates
9913 /* 10455 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[6]]
9914 /* 10455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9915 /* 10458 */ // Label 569: @10458
9916 /* 10458 */ GIM_Reject,
9917 /* 10459 */ // Label 108: @10459
9918 /* 10459 */ GIM_Try, /*On fail goto*//*Label 570*/ GIMT_Encode4(10503), // Rule ID 252 //
9919 /* 10464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
9920 /* 10467 */ // MIs[0] d
9921 /* 10467 */ // No operand predicates
9922 /* 10467 */ // MIs[0] src
9923 /* 10467 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9924 /* 10471 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
9925 /* 10475 */ // MIs[1] rev
9926 /* 10475 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9927 /* 10479 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9928 /* 10483 */ // MIs[2] val
9929 /* 10483 */ // No operand predicates
9930 /* 10483 */ // MIs[1] amt
9931 /* 10483 */ // No operand predicates
9932 /* 10483 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
9933 /* 10487 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9934 /* 10489 */ // Combiner Rule #185: bitreverse_lshr
9935 /* 10489 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
9936 /* 10492 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9937 /* 10494 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9938 /* 10498 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9939 /* 10502 */ GIR_EraseRootFromParent_Done,
9940 /* 10503 */ // Label 570: @10503
9941 /* 10503 */ GIM_Try, /*On fail goto*//*Label 571*/ GIMT_Encode4(10547), // Rule ID 251 //
9942 /* 10508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
9943 /* 10511 */ // MIs[0] d
9944 /* 10511 */ // No operand predicates
9945 /* 10511 */ // MIs[0] src
9946 /* 10511 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9947 /* 10515 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
9948 /* 10519 */ // MIs[1] rev
9949 /* 10519 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9950 /* 10523 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9951 /* 10527 */ // MIs[2] val
9952 /* 10527 */ // No operand predicates
9953 /* 10527 */ // MIs[1] amt
9954 /* 10527 */ // No operand predicates
9955 /* 10527 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
9956 /* 10531 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9957 /* 10533 */ // Combiner Rule #184: bitreverse_shl
9958 /* 10533 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
9959 /* 10536 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9960 /* 10538 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9961 /* 10542 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9962 /* 10546 */ GIR_EraseRootFromParent_Done,
9963 /* 10547 */ // Label 571: @10547
9964 /* 10547 */ GIM_Try, /*On fail goto*//*Label 572*/ GIMT_Encode4(10558), // Rule ID 302 //
9965 /* 10552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9966 /* 10555 */ // MIs[0] dst
9967 /* 10555 */ // No operand predicates
9968 /* 10555 */ // MIs[0] mi.src
9969 /* 10555 */ // No operand predicates
9970 /* 10555 */ // Combiner Rule #195: constant_fold_unary_int_op @ [mi[7]]
9971 /* 10555 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9972 /* 10558 */ // Label 572: @10558
9973 /* 10558 */ GIM_Reject,
9974 /* 10559 */ // Label 109: @10559
9975 /* 10559 */ GIM_Try, /*On fail goto*//*Label 573*/ GIMT_Encode4(10580), // Rule ID 199 //
9976 /* 10564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
9977 /* 10567 */ // MIs[0] dst
9978 /* 10567 */ // No operand predicates
9979 /* 10567 */ // MIs[0] src0
9980 /* 10567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9981 /* 10571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9982 /* 10575 */ // MIs[1] cst
9983 /* 10575 */ // No operand predicates
9984 /* 10575 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9985 /* 10577 */ // Combiner Rule #155: constant_fold_fceil
9986 /* 10577 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9987 /* 10580 */ // Label 573: @10580
9988 /* 10580 */ GIM_Reject,
9989 /* 10581 */ // Label 110: @10581
9990 /* 10581 */ GIM_Try, /*On fail goto*//*Label 574*/ GIMT_Encode4(10602), // Rule ID 195 //
9991 /* 10586 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
9992 /* 10589 */ // MIs[0] dst
9993 /* 10589 */ // No operand predicates
9994 /* 10589 */ // MIs[0] src0
9995 /* 10589 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9996 /* 10593 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9997 /* 10597 */ // MIs[1] cst
9998 /* 10597 */ // No operand predicates
9999 /* 10597 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10000 /* 10599 */ // Combiner Rule #151: constant_fold_fsqrt
10001 /* 10599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
10002 /* 10602 */ // Label 574: @10602
10003 /* 10602 */ GIM_Reject,
10004 /* 10603 */ // Label 111: @10603
10005 /* 10603 */ GIM_Try, /*On fail goto*//*Label 575*/ GIMT_Encode4(10624), // Rule ID 200 //
10006 /* 10608 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
10007 /* 10611 */ // MIs[0] dst
10008 /* 10611 */ // No operand predicates
10009 /* 10611 */ // MIs[0] src0
10010 /* 10611 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10011 /* 10615 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10012 /* 10619 */ // MIs[1] cst
10013 /* 10619 */ // No operand predicates
10014 /* 10619 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10015 /* 10621 */ // Combiner Rule #156: constant_fold_ffloor
10016 /* 10621 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
10017 /* 10624 */ // Label 575: @10624
10018 /* 10624 */ GIM_Reject,
10019 /* 10625 */ // Label 112: @10625
10020 /* 10625 */ GIM_Try, /*On fail goto*//*Label 576*/ GIMT_Encode4(10646), // Rule ID 204 //
10021 /* 10630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
10022 /* 10633 */ // MIs[0] dst
10023 /* 10633 */ // No operand predicates
10024 /* 10633 */ // MIs[0] src0
10025 /* 10633 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10026 /* 10637 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10027 /* 10641 */ // MIs[1] cst
10028 /* 10641 */ // No operand predicates
10029 /* 10641 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10030 /* 10643 */ // Combiner Rule #160: constant_fold_frint
10031 /* 10643 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
10032 /* 10646 */ // Label 576: @10646
10033 /* 10646 */ GIM_Reject,
10034 /* 10647 */ // Label 113: @10647
10035 /* 10647 */ GIM_Try, /*On fail goto*//*Label 577*/ GIMT_Encode4(10668), // Rule ID 205 //
10036 /* 10652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
10037 /* 10655 */ // MIs[0] dst
10038 /* 10655 */ // No operand predicates
10039 /* 10655 */ // MIs[0] src0
10040 /* 10655 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10041 /* 10659 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10042 /* 10663 */ // MIs[1] cst
10043 /* 10663 */ // No operand predicates
10044 /* 10663 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10045 /* 10665 */ // Combiner Rule #161: constant_fold_fnearbyint
10046 /* 10665 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
10047 /* 10668 */ // Label 577: @10668
10048 /* 10668 */ GIM_Reject,
10049 /* 10669 */ // Label 114: @10669
10050 /* 10669 */ GIM_Try, /*On fail goto*//*Label 578*/ GIMT_Encode4(10680), // Rule ID 459 //
10051 /* 10674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule287Enabled),
10052 /* 10677 */ // MIs[0] dst_addr
10053 /* 10677 */ // No operand predicates
10054 /* 10677 */ // MIs[0] src_addr
10055 /* 10677 */ // No operand predicates
10056 /* 10677 */ // MIs[0] size
10057 /* 10677 */ // No operand predicates
10058 /* 10677 */ // MIs[0] tailcall
10059 /* 10677 */ // No operand predicates
10060 /* 10677 */ // Combiner Rule #287: combine_memcpy
10061 /* 10677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner169),
10062 /* 10680 */ // Label 578: @10680
10063 /* 10680 */ GIM_Reject,
10064 /* 10681 */ // Label 115: @10681
10065 /* 10681 */ GIM_Try, /*On fail goto*//*Label 579*/ GIMT_Encode4(10692), // Rule ID 457 //
10066 /* 10686 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule285Enabled),
10067 /* 10689 */ // MIs[0] dst_addr
10068 /* 10689 */ // No operand predicates
10069 /* 10689 */ // MIs[0] src_addr
10070 /* 10689 */ // No operand predicates
10071 /* 10689 */ // MIs[0] size
10072 /* 10689 */ // No operand predicates
10073 /* 10689 */ // Combiner Rule #285: combine_memcpy_inline
10074 /* 10689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner168),
10075 /* 10692 */ // Label 579: @10692
10076 /* 10692 */ GIM_Reject,
10077 /* 10693 */ // Label 116: @10693
10078 /* 10693 */ GIM_Try, /*On fail goto*//*Label 580*/ GIMT_Encode4(10704), // Rule ID 460 //
10079 /* 10698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule288Enabled),
10080 /* 10701 */ // MIs[0] dst_addr
10081 /* 10701 */ // No operand predicates
10082 /* 10701 */ // MIs[0] src_addr
10083 /* 10701 */ // No operand predicates
10084 /* 10701 */ // MIs[0] size
10085 /* 10701 */ // No operand predicates
10086 /* 10701 */ // MIs[0] tailcall
10087 /* 10701 */ // No operand predicates
10088 /* 10701 */ // Combiner Rule #288: combine_memmove
10089 /* 10701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner169),
10090 /* 10704 */ // Label 580: @10704
10091 /* 10704 */ GIM_Reject,
10092 /* 10705 */ // Label 117: @10705
10093 /* 10705 */ GIM_Try, /*On fail goto*//*Label 581*/ GIMT_Encode4(10716), // Rule ID 461 //
10094 /* 10710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule289Enabled),
10095 /* 10713 */ // MIs[0] dst_addr
10096 /* 10713 */ // No operand predicates
10097 /* 10713 */ // MIs[0] value
10098 /* 10713 */ // No operand predicates
10099 /* 10713 */ // MIs[0] size
10100 /* 10713 */ // No operand predicates
10101 /* 10713 */ // MIs[0] tailcall
10102 /* 10713 */ // No operand predicates
10103 /* 10713 */ // Combiner Rule #289: combine_memset
10104 /* 10713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner169),
10105 /* 10716 */ // Label 581: @10716
10106 /* 10716 */ GIM_Try, /*On fail goto*//*Label 582*/ GIMT_Encode4(10727), // Rule ID 462 //
10107 /* 10721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule290Enabled),
10108 /* 10724 */ // MIs[0] dst_addr
10109 /* 10724 */ // No operand predicates
10110 /* 10724 */ // MIs[0] value
10111 /* 10724 */ // No operand predicates
10112 /* 10724 */ // MIs[0] size
10113 /* 10724 */ // No operand predicates
10114 /* 10724 */ // MIs[0] tailcall
10115 /* 10724 */ // No operand predicates
10116 /* 10724 */ // Combiner Rule #290: emit_bzero
10117 /* 10724 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner170),
10118 /* 10727 */ // Label 582: @10727
10119 /* 10727 */ GIM_Reject,
10120 /* 10728 */ // Label 118: @10728
10121 /* 10728 */ GIM_Try, /*On fail goto*//*Label 583*/ GIMT_Encode4(10739), // Rule ID 458 //
10122 /* 10733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule286Enabled),
10123 /* 10736 */ // MIs[0] dst_addr
10124 /* 10736 */ // No operand predicates
10125 /* 10736 */ // MIs[0] value
10126 /* 10736 */ // No operand predicates
10127 /* 10736 */ // MIs[0] size
10128 /* 10736 */ // No operand predicates
10129 /* 10736 */ // Combiner Rule #286: combine_memset_inline
10130 /* 10736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner168),
10131 /* 10739 */ // Label 583: @10739
10132 /* 10739 */ GIM_Reject,
10133 /* 10740 */ // Label 119: @10740
10134 /* 10740 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 584*/ GIMT_Encode4(10753), GIMT_Encode2(GIFBS_HasDotProd), // Rule ID 448 //
10135 /* 10747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule276Enabled),
10136 /* 10750 */ // Combiner Rule #276: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD'
10137 /* 10750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner164),
10138 /* 10753 */ // Label 584: @10753
10139 /* 10753 */ GIM_Try, /*On fail goto*//*Label 585*/ GIMT_Encode4(10764), // Rule ID 449 //
10140 /* 10758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule277Enabled),
10141 /* 10761 */ // Combiner Rule #277: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD'
10142 /* 10761 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner165),
10143 /* 10764 */ // Label 585: @10764
10144 /* 10764 */ GIM_Reject,
10145 /* 10765 */ // Label 120: @10765
10146 /* 10765 */ GIM_Reject,
10147 /* 10766 */ }; // Size: 10766 bytes
10148 return MatchTable0;
10149}
10150#undef GIMT_Encode2
10151#undef GIMT_Encode4
10152#undef GIMT_Encode8
10153
10154
10155#endif // GET_GICOMBINER_IMPL
10156
10157#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
10158
10159AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
10160AvailableFunctionFeatures()
10161
10162#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
10163
10164#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
10165
10166, State(0),
10167ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
10168
10169#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
10170
10171