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: // 6 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 243; // "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 214; // "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 160; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 159; // "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 219; // "nneg_zext"
76 }
77 break;
78 case 10: // 7 strings to match.
79 switch (RuleIdentifier[0]) {
80 default: break;
81 case 'i': // 1 string to match.
82 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
83 break;
84 return 96; // "i2p_to_p2i"
85 case 'm': // 2 strings to match.
86 switch (RuleIdentifier[1]) {
87 default: break;
88 case 'a': // 1 string to match.
89 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
90 break;
91 return 213; // "match_ands"
92 case 'u': // 1 string to match.
93 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
94 break;
95 return 20; // "mul_to_shl"
96 }
97 break;
98 case 'p': // 1 string to match.
99 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
100 break;
101 return 95; // "p2i_to_i2p"
102 case 's': // 2 strings to match.
103 switch (RuleIdentifier[1]) {
104 default: break;
105 case 'e': // 1 string to match.
106 if (memcmp(RuleIdentifier.data()+2, "xt_trunc", 8) != 0)
107 break;
108 return 217; // "sext_trunc"
109 case 'u': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
111 break;
112 return 21; // "sub_to_add"
113 }
114 break;
115 case 'z': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
117 break;
118 return 218; // "zext_trunc"
119 }
120 break;
121 case 11: // 8 strings to match.
122 switch (RuleIdentifier[0]) {
123 default: break;
124 case 'a': // 1 string to match.
125 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
126 break;
127 return 101; // "add_sub_reg"
128 case 'm': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
130 break;
131 return 234; // "match_addos"
132 case 's': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
134 break;
135 return 208; // "sub_add_reg"
136 case 't': // 4 strings to match.
137 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
138 break;
139 switch (RuleIdentifier[6]) {
140 default: break;
141 case 's': // 3 strings to match.
142 switch (RuleIdentifier[7]) {
143 default: break;
144 case 'h': // 1 string to match.
145 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
146 break;
147 return 139; // "trunc_shift"
148 case 's': // 2 strings to match.
149 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
150 break;
151 switch (RuleIdentifier[10]) {
152 default: break;
153 case 's': // 1 string to match.
154 return 236; // "trunc_ssats"
155 case 'u': // 1 string to match.
156 return 237; // "trunc_ssatu"
157 }
158 break;
159 }
160 break;
161 case 'u': // 1 string to match.
162 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
163 break;
164 return 238; // "trunc_usatu"
165 }
166 break;
167 case 'u': // 1 string to match.
168 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
169 break;
170 return 227; // "unmerge_cst"
171 }
172 break;
173 case 12: // 12 strings to match.
174 switch (RuleIdentifier[0]) {
175 default: break;
176 case 'A': // 1 string to match.
177 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
178 break;
179 return 4; // "APlusBMinusB"
180 case 'B': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
182 break;
183 return 5; // "BMinusAPlusA"
184 case 'a': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
186 break;
187 return 161; // "adde_to_addo"
188 case 'c': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
190 break;
191 return 241; // "ctlz_to_ctls"
192 case 'f': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
194 break;
195 return 210; // "fsub_to_fneg"
196 case 'm': // 1 string to match.
197 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
198 break;
199 return 189; // "mulh_to_lshr"
200 case 'n': // 1 string to match.
201 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
202 break;
203 return 140; // "not_cmp_fold"
204 case 'r': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
206 break;
207 return 135; // "redundant_or"
208 case 's': // 2 strings to match.
209 switch (RuleIdentifier[1]) {
210 default: break;
211 case 'd': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
213 break;
214 return 204; // "sdiv_by_pow2"
215 case 'e': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
217 break;
218 return 54; // "sext_of_sext"
219 }
220 break;
221 case 'u': // 1 string to match.
222 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
223 break;
224 return 203; // "udiv_by_pow2"
225 case 'z': // 1 string to match.
226 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
227 break;
228 return 52; // "zext_of_zext"
229 }
230 break;
231 case 13: // 19 strings to match.
232 switch (RuleIdentifier[0]) {
233 default: break;
234 case 'A': // 2 strings to match.
235 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
236 break;
237 switch (RuleIdentifier[12]) {
238 default: break;
239 case 'A': // 1 string to match.
240 return 12; // "AMinusBMinusA"
241 case 'C': // 1 string to match.
242 return 9; // "AMinusBMinusC"
243 }
244 break;
245 case 'a': // 1 string to match.
246 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
247 break;
248 return 43; // "add_of_vscale"
249 case 'c': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
251 break;
252 return 179; // "commute_shift"
253 case 'l': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
255 break;
256 return 75; // "load_and_mask"
257 case 'm': // 3 strings to match.
258 switch (RuleIdentifier[1]) {
259 default: break;
260 case 'a': // 1 string to match.
261 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
262 break;
263 return 132; // "match_selects"
264 case 'e': // 1 string to match.
265 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
266 break;
267 return 226; // "merge_unmerge"
268 case 'u': // 1 string to match.
269 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
270 break;
271 return 44; // "mul_of_vscale"
272 }
273 break;
274 case 'r': // 1 string to match.
275 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
276 break;
277 return 133; // "redundant_and"
278 case 's': // 6 strings to match.
279 switch (RuleIdentifier[1]) {
280 default: break;
281 case 'a': // 1 string to match.
282 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
283 break;
284 return 92; // "same_val_zero"
285 case 'd': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
287 break;
288 return 206; // "sdiv_by_const"
289 case 'h': // 1 string to match.
290 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
291 break;
292 return 45; // "shl_of_vscale"
293 case 'r': // 1 string to match.
294 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
295 break;
296 return 202; // "srem_by_const"
297 case 'u': // 2 strings to match.
298 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
299 break;
300 switch (RuleIdentifier[4]) {
301 default: break;
302 case 'm': // 1 string to match.
303 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
304 break;
305 return 246; // "sub_minus_one"
306 case 'o': // 1 string to match.
307 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
308 break;
309 return 46; // "sub_of_vscale"
310 }
311 break;
312 }
313 break;
314 case 'u': // 4 strings to match.
315 switch (RuleIdentifier[1]) {
316 default: break;
317 case 'd': // 1 string to match.
318 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
319 break;
320 return 205; // "udiv_by_const"
321 case 'n': // 2 strings to match.
322 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
323 break;
324 switch (RuleIdentifier[8]) {
325 default: break;
326 case 'm': // 1 string to match.
327 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
328 break;
329 return 225; // "unmerge_merge"
330 case 'u': // 1 string to match.
331 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
332 break;
333 return 228; // "unmerge_undef"
334 }
335 break;
336 case 'r': // 1 string to match.
337 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
338 break;
339 return 201; // "urem_by_const"
340 }
341 break;
342 }
343 break;
344 case 14: // 17 strings to match.
345 switch (RuleIdentifier[0]) {
346 default: break;
347 case 'A': // 2 strings to match.
348 switch (RuleIdentifier[1]) {
349 default: break;
350 case 'M': // 1 string to match.
351 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
352 break;
353 return 18; // "AMinusC1PlusC2"
354 case 'P': // 1 string to match.
355 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
356 break;
357 return 14; // "APlusC1MinusC2"
358 }
359 break;
360 case 'C': // 1 string to match.
361 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
362 break;
363 return 15; // "C2MinusAPlusC1"
364 case 'N': // 1 string to match.
365 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
366 break;
367 return 13; // "NotAPlusNegOne"
368 case 'a': // 2 strings to match.
369 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
370 break;
371 switch (RuleIdentifier[10]) {
372 default: break;
373 case 's': // 1 string to match.
374 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
375 break;
376 return 58; // "anyext_of_sext"
377 case 'z': // 1 string to match.
378 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
379 break;
380 return 57; // "anyext_of_zext"
381 }
382 break;
383 case 'b': // 3 strings to match.
384 if (RuleIdentifier[1] != 'i')
385 break;
386 switch (RuleIdentifier[2]) {
387 default: break;
388 case 'n': // 2 strings to match.
389 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
390 break;
391 switch (RuleIdentifier[6]) {
392 default: break;
393 case 's': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
395 break;
396 return 91; // "binop_same_val"
397 case 'w': // 1 string to match.
398 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
399 break;
400 return 245; // "binop_with_neg"
401 }
402 break;
403 case 't': // 1 string to match.
404 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
405 break;
406 return 177; // "bitreverse_shl"
407 }
408 break;
409 case 'f': // 2 strings to match.
410 switch (RuleIdentifier[1]) {
411 default: break;
412 case 'a': // 1 string to match.
413 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
414 break;
415 return 188; // "fabs_fneg_fold"
416 case 'n': // 1 string to match.
417 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
418 break;
419 return 98; // "fneg_fneg_fold"
420 }
421 break;
422 case 'm': // 1 string to match.
423 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
424 break;
425 return 23; // "mul_by_neg_one"
426 case 'r': // 1 string to match.
427 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
428 break;
429 return 114; // "reassoc_ptradd"
430 case 's': // 3 strings to match.
431 switch (RuleIdentifier[1]) {
432 default: break;
433 case 'e': // 2 strings to match.
434 switch (RuleIdentifier[2]) {
435 default: break;
436 case 'l': // 1 string to match.
437 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
438 break;
439 return 60; // "select_of_zext"
440 case 'x': // 1 string to match.
441 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
442 break;
443 return 55; // "sext_of_anyext"
444 }
445 break;
446 case 'h': // 1 string to match.
447 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
448 break;
449 return 113; // "shifts_too_big"
450 }
451 break;
452 case 'z': // 1 string to match.
453 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
454 break;
455 return 53; // "zext_of_anyext"
456 }
457 break;
458 case 15: // 12 strings to match.
459 switch (RuleIdentifier[0]) {
460 default: break;
461 case 'A': // 2 strings to match.
462 switch (RuleIdentifier[1]) {
463 default: break;
464 case 'M': // 1 string to match.
465 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
466 break;
467 return 16; // "AMinusC1MinusC2"
468 case 'P': // 1 string to match.
469 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
470 break;
471 return 3; // "APlusZeroMinusB"
472 }
473 break;
474 case 'C': // 1 string to match.
475 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
476 break;
477 return 17; // "C1Minus2MinusC2"
478 case 'Z': // 1 string to match.
479 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
480 break;
481 return 2; // "ZeroMinusAPlusB"
482 case 'b': // 1 string to match.
483 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
484 break;
485 return 178; // "bitreverse_lshr"
486 case 'e': // 1 string to match.
487 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
488 break;
489 return 74; // "extending_loads"
490 case 'i': // 1 string to match.
491 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
492 break;
493 return 24; // "idempotent_prop"
494 case 'l': // 1 string to match.
495 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
496 break;
497 return 168; // "load_or_combine"
498 case 'n': // 1 string to match.
499 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
500 break;
501 return 68; // "narrow_binop_or"
502 case 'o': // 1 string to match.
503 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
504 break;
505 return 158; // "overlapping_and"
506 case 's': // 1 string to match.
507 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
508 break;
509 return 89; // "select_same_val"
510 case 'z': // 1 string to match.
511 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
512 break;
513 return 137; // "zext_trunc_fold"
514 }
515 break;
516 case 16: // 14 strings to match.
517 switch (RuleIdentifier[0]) {
518 default: break;
519 case 'A': // 1 string to match.
520 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
521 break;
522 return 11; // "AMinusZeroMinusB"
523 case 'a': // 1 string to match.
524 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
525 break;
526 return 56; // "anyext_of_anyext"
527 case 'n': // 5 strings to match.
528 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
529 break;
530 switch (RuleIdentifier[13]) {
531 default: break;
532 case 'a': // 2 strings to match.
533 switch (RuleIdentifier[14]) {
534 default: break;
535 case 'd': // 1 string to match.
536 if (RuleIdentifier[15] != 'd')
537 break;
538 return 64; // "narrow_binop_add"
539 case 'n': // 1 string to match.
540 if (RuleIdentifier[15] != 'd')
541 break;
542 return 67; // "narrow_binop_and"
543 }
544 break;
545 case 'm': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
547 break;
548 return 66; // "narrow_binop_mul"
549 case 's': // 1 string to match.
550 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
551 break;
552 return 65; // "narrow_binop_sub"
553 case 'x': // 1 string to match.
554 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
555 break;
556 return 69; // "narrow_binop_xor"
557 }
558 break;
559 case 's': // 4 strings to match.
560 switch (RuleIdentifier[1]) {
561 default: break;
562 case 'e': // 3 strings to match.
563 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
564 break;
565 switch (RuleIdentifier[7]) {
566 default: break;
567 case 'o': // 1 string to match.
568 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
569 break;
570 return 61; // "select_of_anyext"
571 case 't': // 1 string to match.
572 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
573 break;
574 return 209; // "select_to_minmax"
575 case 'u': // 1 string to match.
576 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
577 break;
578 return 129; // "select_undef_cmp"
579 }
580 break;
581 case 'u': // 1 string to match.
582 if (memcmp(RuleIdentifier.data()+2, "b_one_from_sub", 14) != 0)
583 break;
584 return 244; // "sub_one_from_sub"
585 }
586 break;
587 case 't': // 2 strings to match.
588 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
589 break;
590 switch (RuleIdentifier[12]) {
591 default: break;
592 case 's': // 1 string to match.
593 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
594 break;
595 return 50; // "truncate_of_sext"
596 case 'z': // 1 string to match.
597 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
598 break;
599 return 49; // "truncate_of_zext"
600 }
601 break;
602 case 'u': // 1 string to match.
603 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
604 break;
605 return 77; // "undef_to_fp_zero"
606 }
607 break;
608 case 17: // 14 strings to match.
609 switch (RuleIdentifier[0]) {
610 default: break;
611 case 'A': // 2 strings to match.
612 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
613 break;
614 switch (RuleIdentifier[11]) {
615 default: break;
616 case 'A': // 1 string to match.
617 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
618 break;
619 return 8; // "APlusBMinusAplusC"
620 case 'C': // 1 string to match.
621 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
622 break;
623 return 10; // "APlusBMinusCPlusA"
624 }
625 break;
626 case 'a': // 2 strings to match.
627 switch (RuleIdentifier[1]) {
628 default: break;
629 case 'd': // 1 string to match.
630 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
631 break;
632 return 22; // "add_p2i_to_ptradd"
633 case 'n': // 1 string to match.
634 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
635 break;
636 return 97; // "anyext_trunc_fold"
637 }
638 break;
639 case 'c': // 3 strings to match.
640 switch (RuleIdentifier[1]) {
641 default: break;
642 case 'a': // 2 strings to match.
643 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
644 break;
645 switch (RuleIdentifier[13]) {
646 default: break;
647 case 'f': // 1 string to match.
648 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
649 break;
650 return 118; // "canonicalize_fcmp"
651 case 'i': // 1 string to match.
652 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
653 break;
654 return 117; // "canonicalize_icmp"
655 }
656 break;
657 case 'o': // 1 string to match.
658 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fma", 15) != 0)
659 break;
660 return 186; // "constant_fold_fma"
661 }
662 break;
663 case 'd': // 1 string to match.
664 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
665 break;
666 return 169; // "div_rem_to_divrem"
667 case 'e': // 1 string to match.
668 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
669 break;
670 return 87; // "erase_undef_store"
671 case 'p': // 1 string to match.
672 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
673 break;
674 return 165; // "ptr_add_with_zero"
675 case 's': // 2 strings to match.
676 switch (RuleIdentifier[1]) {
677 default: break;
678 case 'e': // 1 string to match.
679 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
680 break;
681 return 131; // "select_to_iminmax"
682 case 'h': // 1 string to match.
683 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
684 break;
685 return 166; // "shift_immed_chain"
686 }
687 break;
688 case 'u': // 2 strings to match.
689 switch (RuleIdentifier[1]) {
690 default: break;
691 case 'n': // 1 string to match.
692 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
693 break;
694 return 78; // "undef_to_int_zero"
695 case 'r': // 1 string to match.
696 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
697 break;
698 return 136; // "urem_pow2_to_mask"
699 }
700 break;
701 }
702 break;
703 case 18: // 13 strings to match.
704 switch (RuleIdentifier[0]) {
705 default: break;
706 case 'A': // 3 strings to match.
707 switch (RuleIdentifier[1]) {
708 default: break;
709 case 'M': // 2 strings to match.
710 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
711 break;
712 switch (RuleIdentifier[11]) {
713 default: break;
714 case 'B': // 1 string to match.
715 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
716 break;
717 return 7; // "AMinusBPlusBMinusC"
718 case 'C': // 1 string to match.
719 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
720 break;
721 return 6; // "AMinusBPlusCMinusA"
722 }
723 break;
724 case 'P': // 1 string to match.
725 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
726 break;
727 return 0; // "APlusBMinusCMinusB"
728 }
729 break;
730 case 'b': // 1 string to match.
731 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
732 break;
733 return 93; // "binop_left_to_zero"
734 case 'c': // 3 strings to match.
735 if (RuleIdentifier[1] != 'o')
736 break;
737 switch (RuleIdentifier[2]) {
738 default: break;
739 case 'm': // 1 string to match.
740 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
741 break;
742 return 162; // "combine_minmax_nan"
743 case 'n': // 2 strings to match.
744 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
745 break;
746 switch (RuleIdentifier[15]) {
747 default: break;
748 case 'a': // 1 string to match.
749 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
750 break;
751 return 143; // "constant_fold_fabs"
752 case 'n': // 1 string to match.
753 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
754 break;
755 return 142; // "constant_fold_fneg"
756 }
757 break;
758 }
759 break;
760 case 'e': // 1 string to match.
761 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
762 break;
763 return 163; // "expand_const_fpowi"
764 case 'f': // 2 strings to match.
765 switch (RuleIdentifier[1]) {
766 default: break;
767 case 'o': // 1 string to match.
768 if (memcmp(RuleIdentifier.data()+2, "ld_global_offset", 16) != 0)
769 break;
770 return 248; // "fold_global_offset"
771 case 'p': // 1 string to match.
772 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
773 break;
774 return 106; // "fptrunc_fpext_fold"
775 }
776 break;
777 case 's': // 2 strings to match.
778 if (RuleIdentifier[1] != 'e')
779 break;
780 switch (RuleIdentifier[2]) {
781 default: break;
782 case 'l': // 1 string to match.
783 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
784 break;
785 return 62; // "select_of_truncate"
786 case 'x': // 1 string to match.
787 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
788 break;
789 return 126; // "sext_inreg_of_load"
790 }
791 break;
792 case 't': // 1 string to match.
793 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
794 break;
795 return 51; // "truncate_of_anyext"
796 }
797 break;
798 case 19: // 20 strings to match.
799 switch (RuleIdentifier[0]) {
800 default: break;
801 case 'A': // 1 string to match.
802 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
803 break;
804 return 1; // "AMinusBMinusCMinusC"
805 case 'b': // 1 string to match.
806 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
807 break;
808 return 94; // "binop_right_to_zero"
809 case 'c': // 7 strings to match.
810 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
811 break;
812 switch (RuleIdentifier[5]) {
813 default: break;
814 case '_': // 1 string to match.
815 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
816 break;
817 return 157; // "const_ptradd_to_i2p"
818 case 'a': // 6 strings to match.
819 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
820 break;
821 switch (RuleIdentifier[14]) {
822 default: break;
823 case 'b': // 1 string to match.
824 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
825 break;
826 return 184; // "constant_fold_binop"
827 case 'f': // 5 strings to match.
828 switch (RuleIdentifier[15]) {
829 default: break;
830 case 'c': // 1 string to match.
831 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
832 break;
833 return 148; // "constant_fold_fceil"
834 case 'l': // 1 string to match.
835 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
836 break;
837 return 145; // "constant_fold_flog2"
838 case 'p': // 1 string to match.
839 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
840 break;
841 return 147; // "constant_fold_fpext"
842 case 'r': // 1 string to match.
843 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
844 break;
845 return 153; // "constant_fold_frint"
846 case 's': // 1 string to match.
847 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
848 break;
849 return 144; // "constant_fold_fsqrt"
850 }
851 break;
852 }
853 break;
854 }
855 break;
856 case 'e': // 2 strings to match.
857 if (memcmp(RuleIdentifier.data()+1, "xt", 2) != 0)
858 break;
859 switch (RuleIdentifier[3]) {
860 default: break;
861 case '_': // 1 string to match.
862 if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv", 15) != 0)
863 break;
864 return 250; // "ext_uaddv_to_uaddlv"
865 case 'e': // 1 string to match.
866 if (memcmp(RuleIdentifier.data()+4, "nd_through_phis", 15) != 0)
867 break;
868 return 110; // "extend_through_phis"
869 }
870 break;
871 case 'i': // 1 string to match.
872 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
873 break;
874 return 70; // "integer_of_truncate"
875 case 'm': // 1 string to match.
876 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
877 break;
878 return 232; // "merge_of_x_and_zero"
879 case 'p': // 1 string to match.
880 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
881 break;
882 return 116; // "ptr_add_immed_chain"
883 case 'r': // 2 strings to match.
884 switch (RuleIdentifier[1]) {
885 default: break;
886 case 'e': // 1 string to match.
887 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
888 break;
889 return 115; // "reassoc_comm_binops"
890 case 'i': // 1 string to match.
891 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
892 break;
893 return 90; // "right_identity_zero"
894 }
895 break;
896 case 's': // 3 strings to match.
897 switch (RuleIdentifier[1]) {
898 default: break;
899 case 'e': // 1 string to match.
900 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
901 break;
902 return 130; // "select_constant_cmp"
903 case 'i': // 2 strings to match.
904 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
905 break;
906 switch (RuleIdentifier[9]) {
907 default: break;
908 case 'a': // 1 string to match.
909 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
910 break;
911 return 111; // "simplify_add_to_sub"
912 case 'n': // 1 string to match.
913 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
914 break;
915 return 215; // "simplify_neg_minmax"
916 }
917 break;
918 }
919 break;
920 case 'u': // 1 string to match.
921 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
922 break;
923 return 82; // "unary_undef_to_zero"
924 }
925 break;
926 case 20: // 9 strings to match.
927 switch (RuleIdentifier[0]) {
928 default: break;
929 case 'a': // 1 string to match.
930 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
931 break;
932 return 191; // "and_or_disjoint_mask"
933 case 'b': // 1 string to match.
934 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
935 break;
936 return 105; // "bitcast_bitcast_fold"
937 case 'c': // 1 string to match.
938 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
939 break;
940 return 149; // "constant_fold_ffloor"
941 case 'i': // 1 string to match.
942 if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc", 19) != 0)
943 break;
944 return 247; // "icmp_redundant_trunc"
945 case 'm': // 1 string to match.
946 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
947 break;
948 return 231; // "merge_of_x_and_undef"
949 case 'r': // 2 strings to match.
950 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
951 break;
952 switch (RuleIdentifier[4]) {
953 default: break;
954 case 'c': // 1 string to match.
955 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
956 break;
957 return 127; // "reduce_shl_of_extend"
958 case 'n': // 1 string to match.
959 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
960 break;
961 return 134; // "redundant_sext_inreg"
962 }
963 break;
964 case 'u': // 2 strings to match.
965 if (RuleIdentifier[1] != 'n')
966 break;
967 switch (RuleIdentifier[2]) {
968 default: break;
969 case 'a': // 1 string to match.
970 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
971 break;
972 return 83; // "unary_undef_to_undef"
973 case 'm': // 1 string to match.
974 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
975 break;
976 return 230; // "unmerge_zext_to_zext"
977 }
978 break;
979 }
980 break;
981 case 21: // 17 strings to match.
982 switch (RuleIdentifier[0]) {
983 default: break;
984 case 'c': // 4 strings to match.
985 if (RuleIdentifier[1] != 'o')
986 break;
987 switch (RuleIdentifier[2]) {
988 default: break;
989 case 'm': // 2 strings to match.
990 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
991 break;
992 switch (RuleIdentifier[8]) {
993 default: break;
994 case 'b': // 1 string to match.
995 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
996 break;
997 return 233; // "combine_build_unmerge"
998 case 'c': // 1 string to match.
999 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1000 break;
1001 return 216; // "combine_concat_vector"
1002 }
1003 break;
1004 case 'n': // 2 strings to match.
1005 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1006 break;
1007 switch (RuleIdentifier[14]) {
1008 default: break;
1009 case 'c': // 1 string to match.
1010 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1011 break;
1012 return 187; // "constant_fold_cast_op"
1013 case 'f': // 1 string to match.
1014 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1015 break;
1016 return 146; // "constant_fold_fptrunc"
1017 }
1018 break;
1019 }
1020 break;
1021 case 'e': // 1 string to match.
1022 if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv", 20) != 0)
1023 break;
1024 return 249; // "ext_addv_to_udot_addv"
1025 case 'f': // 1 string to match.
1026 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1027 break;
1028 return 207; // "fdiv_repeated_divison"
1029 case 'i': // 1 string to match.
1030 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1031 break;
1032 return 30; // "insert_vector_elt_oob"
1033 case 'l': // 1 string to match.
1034 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1035 break;
1036 return 240; // "lshr_of_trunc_of_lshr"
1037 case 'p': // 6 strings to match.
1038 if (memcmp(RuleIdentifier.data()+1, "ush_", 4) != 0)
1039 break;
1040 switch (RuleIdentifier[5]) {
1041 default: break;
1042 case 'a': // 2 strings to match.
1043 if (memcmp(RuleIdentifier.data()+6, "dd_through_", 11) != 0)
1044 break;
1045 switch (RuleIdentifier[17]) {
1046 default: break;
1047 case 's': // 1 string to match.
1048 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1049 break;
1050 return 255; // "push_add_through_sext"
1051 case 'z': // 1 string to match.
1052 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1053 break;
1054 return 252; // "push_add_through_zext"
1055 }
1056 break;
1057 case 'm': // 2 strings to match.
1058 if (memcmp(RuleIdentifier.data()+6, "ul_through_", 11) != 0)
1059 break;
1060 switch (RuleIdentifier[17]) {
1061 default: break;
1062 case 's': // 1 string to match.
1063 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1064 break;
1065 return 256; // "push_mul_through_sext"
1066 case 'z': // 1 string to match.
1067 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1068 break;
1069 return 253; // "push_mul_through_zext"
1070 }
1071 break;
1072 case 's': // 2 strings to match.
1073 if (memcmp(RuleIdentifier.data()+6, "ub_through_", 11) != 0)
1074 break;
1075 switch (RuleIdentifier[17]) {
1076 default: break;
1077 case 's': // 1 string to match.
1078 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1079 break;
1080 return 254; // "push_sub_through_sext"
1081 case 'z': // 1 string to match.
1082 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1083 break;
1084 return 251; // "push_sub_through_zext"
1085 }
1086 break;
1087 }
1088 break;
1089 case 'r': // 1 string to match.
1090 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1091 break;
1092 return 100; // "right_identity_one_fp"
1093 case 'u': // 2 strings to match.
1094 if (RuleIdentifier[1] != 'n')
1095 break;
1096 switch (RuleIdentifier[2]) {
1097 default: break;
1098 case 'd': // 1 string to match.
1099 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1100 break;
1101 return 79; // "undef_to_negative_one"
1102 case 'm': // 1 string to match.
1103 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1104 break;
1105 return 229; // "unmerge_dead_to_trunc"
1106 }
1107 break;
1108 }
1109 break;
1110 case 22: // 13 strings to match.
1111 switch (RuleIdentifier[0]) {
1112 default: break;
1113 case 'c': // 2 strings to match.
1114 if (RuleIdentifier[1] != 'o')
1115 break;
1116 switch (RuleIdentifier[2]) {
1117 default: break;
1118 case 'm': // 1 string to match.
1119 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1120 break;
1121 return 220; // "combine_shuffle_concat"
1122 case 'n': // 1 string to match.
1123 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1124 break;
1125 return 185; // "constant_fold_fp_binop"
1126 }
1127 break;
1128 case 'f': // 4 strings to match.
1129 switch (RuleIdentifier[1]) {
1130 default: break;
1131 case 'o': // 1 string to match.
1132 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1133 break;
1134 return 200; // "fold_binop_into_select"
1135 case 'u': // 3 strings to match.
1136 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1137 break;
1138 switch (RuleIdentifier[13]) {
1139 default: break;
1140 case 'l': // 1 string to match.
1141 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1142 break;
1143 return 173; // "funnel_shift_left_zero"
1144 case 'o': // 1 string to match.
1145 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1146 break;
1147 return 174; // "funnel_shift_overshift"
1148 case 't': // 1 string to match.
1149 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1150 break;
1151 return 171; // "funnel_shift_to_rotate"
1152 }
1153 break;
1154 }
1155 break;
1156 case 'i': // 1 string to match.
1157 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1158 break;
1159 return 120; // "icmp_to_lhs_known_bits"
1160 case 'm': // 1 string to match.
1161 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1162 break;
1163 return 235; // "match_subo_no_overflow"
1164 case 'p': // 1 string to match.
1165 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1166 break;
1167 return 84; // "propagate_undef_any_op"
1168 case 'r': // 2 strings to match.
1169 switch (RuleIdentifier[1]) {
1170 default: break;
1171 case 'e': // 1 string to match.
1172 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1173 break;
1174 return 190; // "redundant_neg_operands"
1175 case 'i': // 1 string to match.
1176 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1177 break;
1178 return 99; // "right_identity_one_int"
1179 }
1180 break;
1181 case 's': // 1 string to match.
1182 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1183 break;
1184 return 124; // "shl_ashr_to_sext_inreg"
1185 case 't': // 1 string to match.
1186 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1187 break;
1188 return 103; // "trunc_buildvector_fold"
1189 }
1190 break;
1191 case 23: // 7 strings to match.
1192 switch (RuleIdentifier[0]) {
1193 default: break;
1194 case 'b': // 1 string to match.
1195 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1196 break;
1197 return 63; // "buildvector_of_truncate"
1198 case 'c': // 1 string to match.
1199 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1200 break;
1201 return 242; // "ctlz_zero_undef_to_ctls"
1202 case 'f': // 1 string to match.
1203 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1204 break;
1205 return 172; // "funnel_shift_right_zero"
1206 case 'i': // 2 strings to match.
1207 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1208 break;
1209 switch (RuleIdentifier[21]) {
1210 default: break;
1211 case 's': // 1 string to match.
1212 if (RuleIdentifier[22] != 'i')
1213 break;
1214 return 155; // "itof_const_zero_fold_si"
1215 case 'u': // 1 string to match.
1216 if (RuleIdentifier[22] != 'i')
1217 break;
1218 return 156; // "itof_const_zero_fold_ui"
1219 }
1220 break;
1221 case 'p': // 1 string to match.
1222 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1223 break;
1224 return 85; // "propagate_undef_all_ops"
1225 case 't': // 1 string to match.
1226 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1227 break;
1228 return 239; // "truncusatu_to_fptouisat"
1229 }
1230 break;
1231 case 24: // 7 strings to match.
1232 switch (RuleIdentifier[0]) {
1233 default: break;
1234 case 'b': // 1 string to match.
1235 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1236 break;
1237 return 80; // "binop_left_undef_to_zero"
1238 case 'c': // 1 string to match.
1239 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1240 break;
1241 return 154; // "constant_fold_fnearbyint"
1242 case 'm': // 1 string to match.
1243 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1244 break;
1245 return 29; // "match_extract_of_element"
1246 case 'n': // 1 string to match.
1247 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1248 break;
1249 return 128; // "narrow_binop_feeding_and"
1250 case 's': // 2 strings to match.
1251 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1252 break;
1253 switch (RuleIdentifier[11]) {
1254 default: break;
1255 case 'o': // 1 string to match.
1256 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1257 break;
1258 return 59; // "sext_inreg_of_sext_inreg"
1259 case 't': // 1 string to match.
1260 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1261 break;
1262 return 138; // "sext_inreg_to_zext_inreg"
1263 }
1264 break;
1265 case 'x': // 1 string to match.
1266 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1267 break;
1268 return 164; // "xor_of_and_with_same_reg"
1269 }
1270 break;
1271 case 25: // 7 strings to match.
1272 switch (RuleIdentifier[0]) {
1273 default: break;
1274 case 'b': // 3 strings to match.
1275 switch (RuleIdentifier[1]) {
1276 default: break;
1277 case 'i': // 2 strings to match.
1278 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1279 break;
1280 switch (RuleIdentifier[22]) {
1281 default: break;
1282 case 'a': // 1 string to match.
1283 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1284 break;
1285 return 181; // "bitfield_extract_from_and"
1286 case 's': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1288 break;
1289 return 182; // "bitfield_extract_from_shr"
1290 }
1291 break;
1292 case 'u': // 1 string to match.
1293 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1294 break;
1295 return 102; // "buildvector_identity_fold"
1296 }
1297 break;
1298 case 'c': // 1 string to match.
1299 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1300 break;
1301 return 221; // "combine_shuffle_undef_rhs"
1302 case 'e': // 1 string to match.
1303 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1304 break;
1305 return 72; // "extract_vec_elt_build_vec"
1306 case 'n': // 1 string to match.
1307 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1308 break;
1309 return 125; // "neg_and_one_to_sext_inreg"
1310 case 'r': // 1 string to match.
1311 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1312 break;
1313 return 109; // "right_identity_neg_one_fp"
1314 }
1315 break;
1316 case 26: // 4 strings to match.
1317 switch (RuleIdentifier[0]) {
1318 default: break;
1319 case 'b': // 1 string to match.
1320 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1321 break;
1322 return 81; // "binop_right_undef_to_undef"
1323 case 'c': // 1 string to match.
1324 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1325 break;
1326 return 212; // "commute_fp_constant_to_rhs"
1327 case 'f': // 1 string to match.
1328 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1329 break;
1330 return 170; // "funnel_shift_from_or_shift"
1331 case 'r': // 1 string to match.
1332 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1333 break;
1334 return 107; // "right_identity_neg_zero_fp"
1335 }
1336 break;
1337 case 27: // 6 strings to match.
1338 switch (RuleIdentifier[0]) {
1339 default: break;
1340 case 'c': // 2 strings to match.
1341 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1342 break;
1343 switch (RuleIdentifier[3]) {
1344 default: break;
1345 case 'b': // 1 string to match.
1346 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1347 break;
1348 return 223; // "combine_use_vector_truncate"
1349 case 'm': // 1 string to match.
1350 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1351 break;
1352 return 211; // "commute_int_constant_to_rhs"
1353 }
1354 break;
1355 case 'd': // 1 string to match.
1356 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1357 break;
1358 return 122; // "double_icmp_zero_or_combine"
1359 case 'r': // 1 string to match.
1360 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1361 break;
1362 return 123; // "redundant_binop_in_equality"
1363 case 't': // 1 string to match.
1364 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1365 break;
1366 return 104; // "trunc_lshr_buildvector_fold"
1367 case 'u': // 1 string to match.
1368 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1369 break;
1370 return 224; // "unmerge_anyext_build_vector"
1371 }
1372 break;
1373 case 28: // 4 strings to match.
1374 switch (RuleIdentifier[0]) {
1375 default: break;
1376 case 'd': // 1 string to match.
1377 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1378 break;
1379 return 121; // "double_icmp_zero_and_combine"
1380 case 'o': // 1 string to match.
1381 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1382 break;
1383 return 141; // "opt_brcond_by_inverting_cond"
1384 case 'p': // 1 string to match.
1385 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1386 break;
1387 return 86; // "propagate_undef_shuffle_mask"
1388 case 's': // 1 string to match.
1389 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1390 break;
1391 return 167; // "shift_of_shifted_logic_chain"
1392 }
1393 break;
1394 case 29: // 6 strings to match.
1395 switch (RuleIdentifier[0]) {
1396 default: break;
1397 case 'b': // 1 string to match.
1398 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1399 break;
1400 return 183; // "bitfield_extract_from_shr_and"
1401 case 'c': // 4 strings to match.
1402 if (RuleIdentifier[1] != 'o')
1403 break;
1404 switch (RuleIdentifier[2]) {
1405 default: break;
1406 case 'm': // 2 strings to match.
1407 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1408 break;
1409 switch (RuleIdentifier[8]) {
1410 default: break;
1411 case 'e': // 1 string to match.
1412 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1413 break;
1414 return 76; // "combine_extracted_vector_load"
1415 case 's': // 1 string to match.
1416 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1417 break;
1418 return 222; // "combine_shuffle_disjoint_mask"
1419 }
1420 break;
1421 case 'n': // 2 strings to match.
1422 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1423 break;
1424 switch (RuleIdentifier[24]) {
1425 default: break;
1426 case 'r': // 1 string to match.
1427 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1428 break;
1429 return 151; // "constant_fold_intrinsic_round"
1430 case 't': // 1 string to match.
1431 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1432 break;
1433 return 150; // "constant_fold_intrinsic_trunc"
1434 }
1435 break;
1436 }
1437 break;
1438 case 'i': // 1 string to match.
1439 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1440 break;
1441 return 119; // "icmp_to_true_false_known_bits"
1442 }
1443 break;
1444 case 30: // 2 strings to match.
1445 switch (RuleIdentifier[0]) {
1446 default: break;
1447 case 'f': // 1 string to match.
1448 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1449 break;
1450 return 47; // "freeze_of_non_undef_non_poison"
1451 case 'r': // 1 string to match.
1452 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1453 break;
1454 return 108; // "right_identity_neg_zero_fp_nsz"
1455 }
1456 break;
1457 case 31: // 2 strings to match.
1458 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1459 break;
1460 switch (RuleIdentifier[22]) {
1461 default: break;
1462 case 'e': // 1 string to match.
1463 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1464 break;
1465 return 28; // "insert_vector_element_elt_undef"
1466 case 'i': // 1 string to match.
1467 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1468 break;
1469 return 27; // "insert_vector_element_idx_undef"
1470 }
1471 break;
1472 case 32: // 4 strings to match.
1473 switch (RuleIdentifier[0]) {
1474 default: break;
1475 case 'b': // 1 string to match.
1476 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1477 break;
1478 return 180; // "bitfield_extract_from_sext_inreg"
1479 case 'c': // 2 strings to match.
1480 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1481 break;
1482 switch (RuleIdentifier[9]) {
1483 default: break;
1484 case 'a': // 1 string to match.
1485 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1486 break;
1487 return 192; // "combine_fadd_fmul_to_fmad_or_fma"
1488 case 's': // 1 string to match.
1489 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1490 break;
1491 return 196; // "combine_fsub_fmul_to_fmad_or_fma"
1492 }
1493 break;
1494 case 'e': // 1 string to match.
1495 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1496 break;
1497 return 31; // "extract_vector_element_not_const"
1498 }
1499 break;
1500 case 33: // 1 string to match.
1501 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1502 break;
1503 return 152; // "constant_fold_intrinsic_roundeven"
1504 case 34: // 1 string to match.
1505 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1506 break;
1507 return 73; // "extract_all_elts_from_build_vector"
1508 case 35: // 1 string to match.
1509 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1510 break;
1511 return 33; // "extract_vector_element_build_vector"
1512 case 36: // 4 strings to match.
1513 switch (RuleIdentifier[0]) {
1514 default: break;
1515 case 'c': // 2 strings to match.
1516 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1517 break;
1518 switch (RuleIdentifier[8]) {
1519 default: break;
1520 case 'f': // 1 string to match.
1521 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1522 break;
1523 return 194; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1524 case 'i': // 1 string to match.
1525 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1526 break;
1527 return 71; // "combine_insert_vec_elts_build_vector"
1528 }
1529 break;
1530 case 'i': // 1 string to match.
1531 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1532 break;
1533 return 88; // "insert_extract_vec_elt_out_of_bounds"
1534 case 'm': // 1 string to match.
1535 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1536 break;
1537 return 26; // "match_extract_of_element_undef_index"
1538 }
1539 break;
1540 case 37: // 4 strings to match.
1541 switch (RuleIdentifier[0]) {
1542 default: break;
1543 case 'c': // 1 string to match.
1544 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1545 break;
1546 return 197; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1547 case 'e': // 1 string to match.
1548 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1549 break;
1550 return 41; // "extract_vector_element_shuffle_vector"
1551 case 'h': // 1 string to match.
1552 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1553 break;
1554 return 112; // "hoist_logic_op_with_same_opcode_hands"
1555 case 'm': // 1 string to match.
1556 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1557 break;
1558 return 25; // "match_extract_of_element_undef_vector"
1559 }
1560 break;
1561 case 38: // 2 strings to match.
1562 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1563 break;
1564 switch (RuleIdentifier[9]) {
1565 default: break;
1566 case 'a': // 1 string to match.
1567 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1568 break;
1569 return 193; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1570 case 's': // 1 string to match.
1571 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1572 break;
1573 return 198; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1574 }
1575 break;
1576 case 40: // 1 string to match.
1577 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1578 break;
1579 return 32; // "extract_vector_element_different_indices"
1580 case 42: // 9 strings to match.
1581 switch (RuleIdentifier[0]) {
1582 default: break;
1583 case 'c': // 1 string to match.
1584 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1585 break;
1586 return 195; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1587 case 'e': // 7 strings to match.
1588 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1589 break;
1590 switch (RuleIdentifier[41]) {
1591 default: break;
1592 case '2': // 1 string to match.
1593 return 34; // "extract_vector_element_build_vector_trunc2"
1594 case '3': // 1 string to match.
1595 return 35; // "extract_vector_element_build_vector_trunc3"
1596 case '4': // 1 string to match.
1597 return 36; // "extract_vector_element_build_vector_trunc4"
1598 case '5': // 1 string to match.
1599 return 37; // "extract_vector_element_build_vector_trunc5"
1600 case '6': // 1 string to match.
1601 return 38; // "extract_vector_element_build_vector_trunc6"
1602 case '7': // 1 string to match.
1603 return 39; // "extract_vector_element_build_vector_trunc7"
1604 case '8': // 1 string to match.
1605 return 40; // "extract_vector_element_build_vector_trunc8"
1606 }
1607 break;
1608 case 'f': // 1 string to match.
1609 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1610 break;
1611 return 175; // "funnel_shift_or_shift_to_funnel_shift_left"
1612 }
1613 break;
1614 case 43: // 2 strings to match.
1615 switch (RuleIdentifier[0]) {
1616 default: break;
1617 case 'c': // 1 string to match.
1618 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1619 break;
1620 return 199; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1621 case 'f': // 1 string to match.
1622 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1623 break;
1624 return 176; // "funnel_shift_or_shift_to_funnel_shift_right"
1625 }
1626 break;
1627 case 44: // 1 string to match.
1628 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1629 break;
1630 return 42; // "insert_vector_element_extract_vector_element"
1631 case 46: // 1 string to match.
1632 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1633 break;
1634 return 48; // "push_freeze_to_prevent_poison_from_propagating"
1635 }
1636#endif // ifndef NDEBUG
1637
1638 return std::nullopt;
1639}
1640static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1641 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1642 if (!RangePair.second.empty()) {
1643 const auto First = getRuleIdxForIdentifier(RangePair.first);
1644 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1645 if (!First || !Last)
1646 return std::nullopt;
1647 if (First >= Last)
1648 report_fatal_error("Beginning of range should be before end of range");
1649 return {{*First, *Last + 1}};
1650 }
1651 if (RangePair.first == "*") {
1652 return {{0, 257}};
1653 }
1654 const auto I = getRuleIdxForIdentifier(RangePair.first);
1655 if (!I)
1656 return std::nullopt;
1657 return {{*I, *I + 1}};
1658}
1659
1660bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1661 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1662 if (!MaybeRange)
1663 return false;
1664 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1665 DisabledRules.reset(I);
1666 return true;
1667}
1668
1669bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1670 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1671 if (!MaybeRange)
1672 return false;
1673 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1674 DisabledRules.set(I);
1675 return true;
1676}
1677
1678static std::vector<std::string> AArch64PreLegalizerCombinerOption;
1679static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption(
1680 "aarch64prelegalizercombiner-disable-rule",
1681 cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass"),
1682 cl::CommaSeparated,
1683 cl::Hidden,
1684 cl::cat(GICombinerOptionCategory),
1685 cl::callback([](const std::string &Str) {
1686 AArch64PreLegalizerCombinerOption.push_back(Str);
1687 }));
1688static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption(
1689 "aarch64prelegalizercombiner-only-enable-rule",
1690 cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones"),
1691 cl::Hidden,
1692 cl::cat(GICombinerOptionCategory),
1693 cl::callback([](const std::string &CommaSeparatedArg) {
1694 StringRef Str = CommaSeparatedArg;
1695 AArch64PreLegalizerCombinerOption.push_back("*");
1696 do {
1697 auto X = Str.split(",");
1698 AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str());
1699 Str = X.second;
1700 } while (!Str.empty());
1701 }));
1702
1703
1704bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1705 return !DisabledRules.test(RuleID);
1706}
1707bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1708 for (StringRef Identifier : AArch64PreLegalizerCombinerOption) {
1709 bool Enabled = Identifier.consume_front("!");
1710 if (Enabled && !setRuleEnabled(Identifier))
1711 return false;
1712 if (!Enabled && !setRuleDisabled(Identifier))
1713 return false;
1714 }
1715 return true;
1716}
1717
1718
1719#endif // GET_GICOMBINER_TYPES
1720
1721#ifdef GET_GICOMBINER_TYPES
1722
1723const unsigned MAX_SUBTARGET_PREDICATES = 1;
1724using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1725
1726#endif // GET_GICOMBINER_TYPES
1727
1728#ifdef GET_GICOMBINER_CLASS_MEMBERS
1729
1730PredicateBitset AvailableModuleFeatures;
1731mutable PredicateBitset AvailableFunctionFeatures;
1732PredicateBitset getAvailableFeatures() const {
1733 return AvailableModuleFeatures | AvailableFunctionFeatures;
1734}
1735PredicateBitset
1736computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
1737PredicateBitset
1738computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
1739 const MachineFunction *MF) const;
1740void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1741
1742#endif // GET_GICOMBINER_CLASS_MEMBERS
1743
1744#ifdef GET_GICOMBINER_CLASS_MEMBERS
1745
1746 mutable MatcherState State;
1747 typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1748 typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1749 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1750 static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1751 static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1752 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1753 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1754 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1755 const uint8_t *getMatchTable() const override;
1756 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1757 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1758 bool testSimplePredicate(unsigned PredicateID) const override;
1759 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1760
1761#endif // GET_GICOMBINER_CLASS_MEMBERS
1762
1763#ifdef GET_GICOMBINER_IMPL
1764
1765// LLT Objects.
1766enum {
1767 GILLT_s1,
1768};
1769const static size_t NumTypeObjects = 1;
1770const static LLT TypeObjects[] = {
1771 LLT::scalar(1),
1772};
1773
1774// Bits for subtarget features that participate in instruction matching.
1775enum SubtargetFeatureBits : uint8_t {
1776 Feature_HasDotProdBit = 0,
1777};
1778
1779PredicateBitset AArch64PreLegalizerCombinerImpl::
1780computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
1781 PredicateBitset Features{};
1782 if (Subtarget->hasDotProd())
1783 Features.set(Feature_HasDotProdBit);
1784 return Features;
1785}
1786
1787void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1788 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
1789}
1790PredicateBitset AArch64PreLegalizerCombinerImpl::
1791computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
1792 PredicateBitset Features{};
1793 return Features;
1794}
1795
1796// Feature bitsets.
1797enum {
1798 GIFBS_Invalid,
1799 GIFBS_HasDotProd,
1800};
1801constexpr static PredicateBitset FeatureBitsets[] {
1802 {}, // GIFBS_Invalid
1803 {Feature_HasDotProdBit, },
1804};
1805
1806// ComplexPattern predicates.
1807enum {
1808 GICP_Invalid,
1809};
1810// See constructor for table contents
1811
1812AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn
1813AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1814 nullptr, // GICP_Invalid
1815};
1816
1817enum {
1818 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1819 GICXXPred_MI_Predicate_GICombiner1,
1820 GICXXPred_MI_Predicate_GICombiner2,
1821 GICXXPred_MI_Predicate_GICombiner3,
1822 GICXXPred_MI_Predicate_GICombiner4,
1823 GICXXPred_MI_Predicate_GICombiner5,
1824 GICXXPred_MI_Predicate_GICombiner6,
1825 GICXXPred_MI_Predicate_GICombiner7,
1826 GICXXPred_MI_Predicate_GICombiner8,
1827 GICXXPred_MI_Predicate_GICombiner9,
1828 GICXXPred_MI_Predicate_GICombiner10,
1829 GICXXPred_MI_Predicate_GICombiner11,
1830 GICXXPred_MI_Predicate_GICombiner12,
1831 GICXXPred_MI_Predicate_GICombiner13,
1832 GICXXPred_MI_Predicate_GICombiner14,
1833 GICXXPred_MI_Predicate_GICombiner15,
1834 GICXXPred_MI_Predicate_GICombiner16,
1835};
1836bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1837 switch (PredicateID) {
1838 case GICXXPred_MI_Predicate_GICombiner0: {
1839 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
1840 }
1841 case GICXXPred_MI_Predicate_GICombiner1: {
1842 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1843 }
1844 case GICXXPred_MI_Predicate_GICombiner2: {
1845 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1846 }
1847 case GICXXPred_MI_Predicate_GICombiner3: {
1848 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1849 }
1850 case GICXXPred_MI_Predicate_GICombiner4: {
1851 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1852 }
1853 case GICXXPred_MI_Predicate_GICombiner5: {
1854 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1855 }
1856 case GICXXPred_MI_Predicate_GICombiner6: {
1857 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1858 }
1859 case GICXXPred_MI_Predicate_GICombiner7: {
1860 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1861 }
1862 case GICXXPred_MI_Predicate_GICombiner8: {
1863 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1864 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1865 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1866 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1867 }
1868 case GICXXPred_MI_Predicate_GICombiner9: {
1869 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1870 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1871 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1872 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1873 }
1874 case GICXXPred_MI_Predicate_GICombiner10: {
1875 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1876 Helper.isLegalOrBeforeLegalizer(
1877 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1878 }
1879 case GICXXPred_MI_Predicate_GICombiner11: {
1880 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1881 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1882 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1883 }
1884 case GICXXPred_MI_Predicate_GICombiner12: {
1885 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1886 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1887 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1888 }
1889 case GICXXPred_MI_Predicate_GICombiner13: {
1890 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1891 }
1892 case GICXXPred_MI_Predicate_GICombiner14: {
1893 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1894 }
1895 case GICXXPred_MI_Predicate_GICombiner15: {
1896 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1897 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1898 }
1899 case GICXXPred_MI_Predicate_GICombiner16: {
1900 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1901 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1902 }
1903 }
1904 llvm_unreachable("Unknown predicate");
1905 return false;
1906}
1907bool AArch64PreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1908 llvm_unreachable("Unknown predicate");
1909 return false;
1910}
1911bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1912 llvm_unreachable("Unknown predicate");
1913 return false;
1914}
1915bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1916 llvm_unreachable("Unknown predicate");
1917 return false;
1918}
1919bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1920 llvm_unreachable("Unknown predicate");
1921 return false;
1922}
1923enum {
1924 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1925 GICXXPred_Simple_IsRule1Enabled,
1926 GICXXPred_Simple_IsRule2Enabled,
1927 GICXXPred_Simple_IsRule3Enabled,
1928 GICXXPred_Simple_IsRule4Enabled,
1929 GICXXPred_Simple_IsRule5Enabled,
1930 GICXXPred_Simple_IsRule6Enabled,
1931 GICXXPred_Simple_IsRule7Enabled,
1932 GICXXPred_Simple_IsRule8Enabled,
1933 GICXXPred_Simple_IsRule9Enabled,
1934 GICXXPred_Simple_IsRule10Enabled,
1935 GICXXPred_Simple_IsRule11Enabled,
1936 GICXXPred_Simple_IsRule12Enabled,
1937 GICXXPred_Simple_IsRule13Enabled,
1938 GICXXPred_Simple_IsRule14Enabled,
1939 GICXXPred_Simple_IsRule15Enabled,
1940 GICXXPred_Simple_IsRule16Enabled,
1941 GICXXPred_Simple_IsRule17Enabled,
1942 GICXXPred_Simple_IsRule18Enabled,
1943 GICXXPred_Simple_IsRule19Enabled,
1944 GICXXPred_Simple_IsRule20Enabled,
1945 GICXXPred_Simple_IsRule21Enabled,
1946 GICXXPred_Simple_IsRule22Enabled,
1947 GICXXPred_Simple_IsRule23Enabled,
1948 GICXXPred_Simple_IsRule24Enabled,
1949 GICXXPred_Simple_IsRule25Enabled,
1950 GICXXPred_Simple_IsRule26Enabled,
1951 GICXXPred_Simple_IsRule27Enabled,
1952 GICXXPred_Simple_IsRule28Enabled,
1953 GICXXPred_Simple_IsRule29Enabled,
1954 GICXXPred_Simple_IsRule30Enabled,
1955 GICXXPred_Simple_IsRule31Enabled,
1956 GICXXPred_Simple_IsRule32Enabled,
1957 GICXXPred_Simple_IsRule33Enabled,
1958 GICXXPred_Simple_IsRule34Enabled,
1959 GICXXPred_Simple_IsRule35Enabled,
1960 GICXXPred_Simple_IsRule36Enabled,
1961 GICXXPred_Simple_IsRule37Enabled,
1962 GICXXPred_Simple_IsRule38Enabled,
1963 GICXXPred_Simple_IsRule39Enabled,
1964 GICXXPred_Simple_IsRule40Enabled,
1965 GICXXPred_Simple_IsRule41Enabled,
1966 GICXXPred_Simple_IsRule42Enabled,
1967 GICXXPred_Simple_IsRule43Enabled,
1968 GICXXPred_Simple_IsRule44Enabled,
1969 GICXXPred_Simple_IsRule45Enabled,
1970 GICXXPred_Simple_IsRule46Enabled,
1971 GICXXPred_Simple_IsRule47Enabled,
1972 GICXXPred_Simple_IsRule48Enabled,
1973 GICXXPred_Simple_IsRule49Enabled,
1974 GICXXPred_Simple_IsRule50Enabled,
1975 GICXXPred_Simple_IsRule51Enabled,
1976 GICXXPred_Simple_IsRule52Enabled,
1977 GICXXPred_Simple_IsRule53Enabled,
1978 GICXXPred_Simple_IsRule54Enabled,
1979 GICXXPred_Simple_IsRule55Enabled,
1980 GICXXPred_Simple_IsRule56Enabled,
1981 GICXXPred_Simple_IsRule57Enabled,
1982 GICXXPred_Simple_IsRule58Enabled,
1983 GICXXPred_Simple_IsRule59Enabled,
1984 GICXXPred_Simple_IsRule60Enabled,
1985 GICXXPred_Simple_IsRule61Enabled,
1986 GICXXPred_Simple_IsRule62Enabled,
1987 GICXXPred_Simple_IsRule63Enabled,
1988 GICXXPred_Simple_IsRule64Enabled,
1989 GICXXPred_Simple_IsRule65Enabled,
1990 GICXXPred_Simple_IsRule66Enabled,
1991 GICXXPred_Simple_IsRule67Enabled,
1992 GICXXPred_Simple_IsRule68Enabled,
1993 GICXXPred_Simple_IsRule69Enabled,
1994 GICXXPred_Simple_IsRule70Enabled,
1995 GICXXPred_Simple_IsRule71Enabled,
1996 GICXXPred_Simple_IsRule72Enabled,
1997 GICXXPred_Simple_IsRule73Enabled,
1998 GICXXPred_Simple_IsRule74Enabled,
1999 GICXXPred_Simple_IsRule75Enabled,
2000 GICXXPred_Simple_IsRule76Enabled,
2001 GICXXPred_Simple_IsRule77Enabled,
2002 GICXXPred_Simple_IsRule78Enabled,
2003 GICXXPred_Simple_IsRule79Enabled,
2004 GICXXPred_Simple_IsRule80Enabled,
2005 GICXXPred_Simple_IsRule81Enabled,
2006 GICXXPred_Simple_IsRule82Enabled,
2007 GICXXPred_Simple_IsRule83Enabled,
2008 GICXXPred_Simple_IsRule84Enabled,
2009 GICXXPred_Simple_IsRule85Enabled,
2010 GICXXPred_Simple_IsRule86Enabled,
2011 GICXXPred_Simple_IsRule87Enabled,
2012 GICXXPred_Simple_IsRule88Enabled,
2013 GICXXPred_Simple_IsRule89Enabled,
2014 GICXXPred_Simple_IsRule90Enabled,
2015 GICXXPred_Simple_IsRule91Enabled,
2016 GICXXPred_Simple_IsRule92Enabled,
2017 GICXXPred_Simple_IsRule93Enabled,
2018 GICXXPred_Simple_IsRule94Enabled,
2019 GICXXPred_Simple_IsRule95Enabled,
2020 GICXXPred_Simple_IsRule96Enabled,
2021 GICXXPred_Simple_IsRule97Enabled,
2022 GICXXPred_Simple_IsRule98Enabled,
2023 GICXXPred_Simple_IsRule99Enabled,
2024 GICXXPred_Simple_IsRule100Enabled,
2025 GICXXPred_Simple_IsRule101Enabled,
2026 GICXXPred_Simple_IsRule102Enabled,
2027 GICXXPred_Simple_IsRule103Enabled,
2028 GICXXPred_Simple_IsRule104Enabled,
2029 GICXXPred_Simple_IsRule105Enabled,
2030 GICXXPred_Simple_IsRule106Enabled,
2031 GICXXPred_Simple_IsRule107Enabled,
2032 GICXXPred_Simple_IsRule108Enabled,
2033 GICXXPred_Simple_IsRule109Enabled,
2034 GICXXPred_Simple_IsRule110Enabled,
2035 GICXXPred_Simple_IsRule111Enabled,
2036 GICXXPred_Simple_IsRule112Enabled,
2037 GICXXPred_Simple_IsRule113Enabled,
2038 GICXXPred_Simple_IsRule114Enabled,
2039 GICXXPred_Simple_IsRule115Enabled,
2040 GICXXPred_Simple_IsRule116Enabled,
2041 GICXXPred_Simple_IsRule117Enabled,
2042 GICXXPred_Simple_IsRule118Enabled,
2043 GICXXPred_Simple_IsRule119Enabled,
2044 GICXXPred_Simple_IsRule120Enabled,
2045 GICXXPred_Simple_IsRule121Enabled,
2046 GICXXPred_Simple_IsRule122Enabled,
2047 GICXXPred_Simple_IsRule123Enabled,
2048 GICXXPred_Simple_IsRule124Enabled,
2049 GICXXPred_Simple_IsRule125Enabled,
2050 GICXXPred_Simple_IsRule126Enabled,
2051 GICXXPred_Simple_IsRule127Enabled,
2052 GICXXPred_Simple_IsRule128Enabled,
2053 GICXXPred_Simple_IsRule129Enabled,
2054 GICXXPred_Simple_IsRule130Enabled,
2055 GICXXPred_Simple_IsRule131Enabled,
2056 GICXXPred_Simple_IsRule132Enabled,
2057 GICXXPred_Simple_IsRule133Enabled,
2058 GICXXPred_Simple_IsRule134Enabled,
2059 GICXXPred_Simple_IsRule135Enabled,
2060 GICXXPred_Simple_IsRule136Enabled,
2061 GICXXPred_Simple_IsRule137Enabled,
2062 GICXXPred_Simple_IsRule138Enabled,
2063 GICXXPred_Simple_IsRule139Enabled,
2064 GICXXPred_Simple_IsRule140Enabled,
2065 GICXXPred_Simple_IsRule141Enabled,
2066 GICXXPred_Simple_IsRule142Enabled,
2067 GICXXPred_Simple_IsRule143Enabled,
2068 GICXXPred_Simple_IsRule144Enabled,
2069 GICXXPred_Simple_IsRule145Enabled,
2070 GICXXPred_Simple_IsRule146Enabled,
2071 GICXXPred_Simple_IsRule147Enabled,
2072 GICXXPred_Simple_IsRule148Enabled,
2073 GICXXPred_Simple_IsRule149Enabled,
2074 GICXXPred_Simple_IsRule150Enabled,
2075 GICXXPred_Simple_IsRule151Enabled,
2076 GICXXPred_Simple_IsRule152Enabled,
2077 GICXXPred_Simple_IsRule153Enabled,
2078 GICXXPred_Simple_IsRule154Enabled,
2079 GICXXPred_Simple_IsRule155Enabled,
2080 GICXXPred_Simple_IsRule156Enabled,
2081 GICXXPred_Simple_IsRule157Enabled,
2082 GICXXPred_Simple_IsRule158Enabled,
2083 GICXXPred_Simple_IsRule159Enabled,
2084 GICXXPred_Simple_IsRule160Enabled,
2085 GICXXPred_Simple_IsRule161Enabled,
2086 GICXXPred_Simple_IsRule162Enabled,
2087 GICXXPred_Simple_IsRule163Enabled,
2088 GICXXPred_Simple_IsRule164Enabled,
2089 GICXXPred_Simple_IsRule165Enabled,
2090 GICXXPred_Simple_IsRule166Enabled,
2091 GICXXPred_Simple_IsRule167Enabled,
2092 GICXXPred_Simple_IsRule168Enabled,
2093 GICXXPred_Simple_IsRule169Enabled,
2094 GICXXPred_Simple_IsRule170Enabled,
2095 GICXXPred_Simple_IsRule171Enabled,
2096 GICXXPred_Simple_IsRule172Enabled,
2097 GICXXPred_Simple_IsRule173Enabled,
2098 GICXXPred_Simple_IsRule174Enabled,
2099 GICXXPred_Simple_IsRule175Enabled,
2100 GICXXPred_Simple_IsRule176Enabled,
2101 GICXXPred_Simple_IsRule177Enabled,
2102 GICXXPred_Simple_IsRule178Enabled,
2103 GICXXPred_Simple_IsRule179Enabled,
2104 GICXXPred_Simple_IsRule180Enabled,
2105 GICXXPred_Simple_IsRule181Enabled,
2106 GICXXPred_Simple_IsRule182Enabled,
2107 GICXXPred_Simple_IsRule183Enabled,
2108 GICXXPred_Simple_IsRule184Enabled,
2109 GICXXPred_Simple_IsRule185Enabled,
2110 GICXXPred_Simple_IsRule186Enabled,
2111 GICXXPred_Simple_IsRule187Enabled,
2112 GICXXPred_Simple_IsRule188Enabled,
2113 GICXXPred_Simple_IsRule189Enabled,
2114 GICXXPred_Simple_IsRule190Enabled,
2115 GICXXPred_Simple_IsRule191Enabled,
2116 GICXXPred_Simple_IsRule192Enabled,
2117 GICXXPred_Simple_IsRule193Enabled,
2118 GICXXPred_Simple_IsRule194Enabled,
2119 GICXXPred_Simple_IsRule195Enabled,
2120 GICXXPred_Simple_IsRule196Enabled,
2121 GICXXPred_Simple_IsRule197Enabled,
2122 GICXXPred_Simple_IsRule198Enabled,
2123 GICXXPred_Simple_IsRule199Enabled,
2124 GICXXPred_Simple_IsRule200Enabled,
2125 GICXXPred_Simple_IsRule201Enabled,
2126 GICXXPred_Simple_IsRule202Enabled,
2127 GICXXPred_Simple_IsRule203Enabled,
2128 GICXXPred_Simple_IsRule204Enabled,
2129 GICXXPred_Simple_IsRule205Enabled,
2130 GICXXPred_Simple_IsRule206Enabled,
2131 GICXXPred_Simple_IsRule207Enabled,
2132 GICXXPred_Simple_IsRule208Enabled,
2133 GICXXPred_Simple_IsRule209Enabled,
2134 GICXXPred_Simple_IsRule210Enabled,
2135 GICXXPred_Simple_IsRule211Enabled,
2136 GICXXPred_Simple_IsRule212Enabled,
2137 GICXXPred_Simple_IsRule213Enabled,
2138 GICXXPred_Simple_IsRule214Enabled,
2139 GICXXPred_Simple_IsRule215Enabled,
2140 GICXXPred_Simple_IsRule216Enabled,
2141 GICXXPred_Simple_IsRule217Enabled,
2142 GICXXPred_Simple_IsRule218Enabled,
2143 GICXXPred_Simple_IsRule219Enabled,
2144 GICXXPred_Simple_IsRule220Enabled,
2145 GICXXPred_Simple_IsRule221Enabled,
2146 GICXXPred_Simple_IsRule222Enabled,
2147 GICXXPred_Simple_IsRule223Enabled,
2148 GICXXPred_Simple_IsRule224Enabled,
2149 GICXXPred_Simple_IsRule225Enabled,
2150 GICXXPred_Simple_IsRule226Enabled,
2151 GICXXPred_Simple_IsRule227Enabled,
2152 GICXXPred_Simple_IsRule228Enabled,
2153 GICXXPred_Simple_IsRule229Enabled,
2154 GICXXPred_Simple_IsRule230Enabled,
2155 GICXXPred_Simple_IsRule231Enabled,
2156 GICXXPred_Simple_IsRule232Enabled,
2157 GICXXPred_Simple_IsRule233Enabled,
2158 GICXXPred_Simple_IsRule234Enabled,
2159 GICXXPred_Simple_IsRule235Enabled,
2160 GICXXPred_Simple_IsRule236Enabled,
2161 GICXXPred_Simple_IsRule237Enabled,
2162 GICXXPred_Simple_IsRule238Enabled,
2163 GICXXPred_Simple_IsRule239Enabled,
2164 GICXXPred_Simple_IsRule240Enabled,
2165 GICXXPred_Simple_IsRule241Enabled,
2166 GICXXPred_Simple_IsRule242Enabled,
2167 GICXXPred_Simple_IsRule243Enabled,
2168 GICXXPred_Simple_IsRule244Enabled,
2169 GICXXPred_Simple_IsRule245Enabled,
2170 GICXXPred_Simple_IsRule246Enabled,
2171 GICXXPred_Simple_IsRule247Enabled,
2172 GICXXPred_Simple_IsRule248Enabled,
2173 GICXXPred_Simple_IsRule249Enabled,
2174 GICXXPred_Simple_IsRule250Enabled,
2175 GICXXPred_Simple_IsRule251Enabled,
2176 GICXXPred_Simple_IsRule252Enabled,
2177 GICXXPred_Simple_IsRule253Enabled,
2178 GICXXPred_Simple_IsRule254Enabled,
2179 GICXXPred_Simple_IsRule255Enabled,
2180 GICXXPred_Simple_IsRule256Enabled,
2181};
2182
2183bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2184 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2185}
2186// Custom renderers.
2187enum {
2188 GICR_Invalid,
2189};
2190AArch64PreLegalizerCombinerImpl::CustomRendererFn
2191AArch64PreLegalizerCombinerImpl::CustomRenderers[] = {
2192 nullptr, // GICR_Invalid
2193};
2194
2195bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2196 const TargetSubtargetInfo &ST = MF.getSubtarget();
2197 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2198 B.setInstrAndDebugLoc(I);
2199 State.MIs.clear();
2200 State.MIs.push_back(&I);
2201 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2202 return true;
2203 }
2204
2205 return false;
2206}
2207
2208enum {
2209 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2210 GICXXCustomAction_GICombiner1,
2211 GICXXCustomAction_GICombiner2,
2212 GICXXCustomAction_GICombiner3,
2213 GICXXCustomAction_GICombiner4,
2214 GICXXCustomAction_GICombiner5,
2215 GICXXCustomAction_GICombiner6,
2216 GICXXCustomAction_GICombiner7,
2217 GICXXCustomAction_GICombiner8,
2218 GICXXCustomAction_GICombiner9,
2219 GICXXCustomAction_GICombiner10,
2220 GICXXCustomAction_GICombiner11,
2221 GICXXCustomAction_GICombiner12,
2222 GICXXCustomAction_GICombiner13,
2223 GICXXCustomAction_GICombiner14,
2224 GICXXCustomAction_GICombiner15,
2225 GICXXCustomAction_GICombiner16,
2226 GICXXCustomAction_GICombiner17,
2227 GICXXCustomAction_GICombiner18,
2228 GICXXCustomAction_GICombiner19,
2229 GICXXCustomAction_GICombiner20,
2230 GICXXCustomAction_GICombiner21,
2231 GICXXCustomAction_GICombiner22,
2232 GICXXCustomAction_GICombiner23,
2233 GICXXCustomAction_GICombiner24,
2234 GICXXCustomAction_GICombiner25,
2235 GICXXCustomAction_GICombiner26,
2236 GICXXCustomAction_GICombiner27,
2237 GICXXCustomAction_GICombiner28,
2238 GICXXCustomAction_GICombiner29,
2239 GICXXCustomAction_GICombiner30,
2240 GICXXCustomAction_GICombiner31,
2241 GICXXCustomAction_GICombiner32,
2242 GICXXCustomAction_GICombiner33,
2243 GICXXCustomAction_GICombiner34,
2244 GICXXCustomAction_GICombiner35,
2245 GICXXCustomAction_GICombiner36,
2246 GICXXCustomAction_GICombiner37,
2247 GICXXCustomAction_GICombiner38,
2248 GICXXCustomAction_GICombiner39,
2249 GICXXCustomAction_GICombiner40,
2250 GICXXCustomAction_GICombiner41,
2251 GICXXCustomAction_GICombiner42,
2252 GICXXCustomAction_GICombiner43,
2253 GICXXCustomAction_GICombiner44,
2254 GICXXCustomAction_GICombiner45,
2255 GICXXCustomAction_GICombiner46,
2256 GICXXCustomAction_GICombiner47,
2257 GICXXCustomAction_GICombiner48,
2258 GICXXCustomAction_GICombiner49,
2259 GICXXCustomAction_GICombiner50,
2260 GICXXCustomAction_GICombiner51,
2261 GICXXCustomAction_GICombiner52,
2262 GICXXCustomAction_GICombiner53,
2263 GICXXCustomAction_GICombiner54,
2264 GICXXCustomAction_GICombiner55,
2265 GICXXCustomAction_GICombiner56,
2266 GICXXCustomAction_GICombiner57,
2267 GICXXCustomAction_GICombiner58,
2268 GICXXCustomAction_GICombiner59,
2269 GICXXCustomAction_GICombiner60,
2270 GICXXCustomAction_GICombiner61,
2271 GICXXCustomAction_GICombiner62,
2272 GICXXCustomAction_GICombiner63,
2273 GICXXCustomAction_GICombiner64,
2274 GICXXCustomAction_GICombiner65,
2275 GICXXCustomAction_GICombiner66,
2276 GICXXCustomAction_GICombiner67,
2277 GICXXCustomAction_GICombiner68,
2278 GICXXCustomAction_GICombiner69,
2279 GICXXCustomAction_GICombiner70,
2280 GICXXCustomAction_GICombiner71,
2281 GICXXCustomAction_GICombiner72,
2282 GICXXCustomAction_GICombiner73,
2283 GICXXCustomAction_GICombiner74,
2284 GICXXCustomAction_GICombiner75,
2285 GICXXCustomAction_GICombiner76,
2286 GICXXCustomAction_GICombiner77,
2287 GICXXCustomAction_GICombiner78,
2288 GICXXCustomAction_GICombiner79,
2289 GICXXCustomAction_GICombiner80,
2290 GICXXCustomAction_GICombiner81,
2291 GICXXCustomAction_GICombiner82,
2292 GICXXCustomAction_GICombiner83,
2293 GICXXCustomAction_GICombiner84,
2294 GICXXCustomAction_GICombiner85,
2295 GICXXCustomAction_GICombiner86,
2296 GICXXCustomAction_GICombiner87,
2297 GICXXCustomAction_GICombiner88,
2298 GICXXCustomAction_GICombiner89,
2299 GICXXCustomAction_GICombiner90,
2300 GICXXCustomAction_GICombiner91,
2301 GICXXCustomAction_GICombiner92,
2302 GICXXCustomAction_GICombiner93,
2303 GICXXCustomAction_GICombiner94,
2304 GICXXCustomAction_GICombiner95,
2305 GICXXCustomAction_GICombiner96,
2306 GICXXCustomAction_GICombiner97,
2307 GICXXCustomAction_GICombiner98,
2308 GICXXCustomAction_GICombiner99,
2309 GICXXCustomAction_GICombiner100,
2310 GICXXCustomAction_GICombiner101,
2311 GICXXCustomAction_GICombiner102,
2312 GICXXCustomAction_GICombiner103,
2313 GICXXCustomAction_GICombiner104,
2314 GICXXCustomAction_GICombiner105,
2315 GICXXCustomAction_GICombiner106,
2316 GICXXCustomAction_GICombiner107,
2317 GICXXCustomAction_GICombiner108,
2318 GICXXCustomAction_GICombiner109,
2319 GICXXCustomAction_GICombiner110,
2320 GICXXCustomAction_GICombiner111,
2321 GICXXCustomAction_GICombiner112,
2322 GICXXCustomAction_GICombiner113,
2323 GICXXCustomAction_GICombiner114,
2324 GICXXCustomAction_GICombiner115,
2325 GICXXCustomAction_GICombiner116,
2326 GICXXCustomAction_GICombiner117,
2327 GICXXCustomAction_GICombiner118,
2328 GICXXCustomAction_GICombiner119,
2329 GICXXCustomAction_GICombiner120,
2330 GICXXCustomAction_GICombiner121,
2331 GICXXCustomAction_GICombiner122,
2332 GICXXCustomAction_GICombiner123,
2333 GICXXCustomAction_GICombiner124,
2334 GICXXCustomAction_GICombiner125,
2335 GICXXCustomAction_GICombiner126,
2336 GICXXCustomAction_GICombiner127,
2337 GICXXCustomAction_GICombiner128,
2338 GICXXCustomAction_GICombiner129,
2339 GICXXCustomAction_GICombiner130,
2340 GICXXCustomAction_GICombiner131,
2341 GICXXCustomAction_GICombiner132,
2342 GICXXCustomAction_GICombiner133,
2343 GICXXCustomAction_GICombiner134,
2344 GICXXCustomAction_GICombiner135,
2345 GICXXCustomAction_GICombiner136,
2346 GICXXCustomAction_GICombiner137,
2347 GICXXCustomAction_GICombiner138,
2348 GICXXCustomAction_GICombiner139,
2349 GICXXCustomAction_GICombiner140,
2350 GICXXCustomAction_GICombiner141,
2351 GICXXCustomAction_GICombiner142,
2352 GICXXCustomAction_GICombiner143,
2353 GICXXCustomAction_GICombiner144,
2354 GICXXCustomAction_GICombiner145,
2355 GICXXCustomAction_GICombiner146,
2356 GICXXCustomAction_GICombiner147,
2357 GICXXCustomAction_GICombiner148,
2358 GICXXCustomAction_GICombiner149,
2359 GICXXCustomAction_GICombiner150,
2360 GICXXCustomAction_GICombiner151,
2361 GICXXCustomAction_GICombiner152,
2362 GICXXCustomAction_GICombiner153,
2363 GICXXCustomAction_GICombiner154,
2364 GICXXCustomAction_GICombiner155,
2365 GICXXCustomAction_GICombiner156,
2366 GICXXCustomAction_GICombiner157,
2367 GICXXCustomAction_GICombiner158,
2368 GICXXCustomAction_GICombiner159,
2369 GICXXCustomAction_GICombiner160,
2370 GICXXCustomAction_GICombiner161,
2371};
2372bool AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2373 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2374 switch(ApplyID) {
2375 case GICXXCustomAction_GICombiner0:{
2376 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2377 // Match Patterns
2378 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2379 return false;
2380 }
2381 // Apply Patterns
2382 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2383 return true;
2384 }
2385 case GICXXCustomAction_GICombiner1:{
2386 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2387 // Match Patterns
2388 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2389 return false;
2390 }
2391 // Apply Patterns
2392 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2393 return true;
2394 }
2395 case GICXXCustomAction_GICombiner2:{
2396 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2397 // Match Patterns
2398 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2399 return false;
2400 }
2401 // Apply Patterns
2402 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2403 return true;
2404 }
2405 case GICXXCustomAction_GICombiner3:{
2406 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2407 // Match Patterns
2408 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2409 return false;
2410 }
2411 // Apply Patterns
2412 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2413 return true;
2414 }
2415 case GICXXCustomAction_GICombiner4:{
2416 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2417 // Match Patterns
2418 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2419 return false;
2420 }
2421 // Apply Patterns
2422 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2423 return true;
2424 }
2425 case GICXXCustomAction_GICombiner5:{
2426 // Match Patterns
2427 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2428 return false;
2429 }
2430 // Apply Patterns
2431 Helper.applyCombineCopy(*State.MIs[0]);
2432 return true;
2433 }
2434 case GICXXCustomAction_GICombiner6:{
2435 unsigned GIMatchData_matchinfo;
2436 // Match Patterns
2437 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2438 return false;
2439 }
2440 // Apply Patterns
2441 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2442 return true;
2443 }
2444 case GICXXCustomAction_GICombiner7:{
2445 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2446 // Match Patterns
2447 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2448 return false;
2449 }
2450 // Apply Patterns
2451 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2452 return true;
2453 }
2454 case GICXXCustomAction_GICombiner8:{
2455 std::pair<Register, bool> GIMatchData_info;
2456 // Match Patterns
2457 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2458 return false;
2459 }
2460 // Apply Patterns
2461 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2462 return true;
2463 }
2464 case GICXXCustomAction_GICombiner9:{
2465 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2466 // Match Patterns
2467 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2468 return false;
2469 }
2470 // Apply Patterns
2471 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2472 return true;
2473 }
2474 case GICXXCustomAction_GICombiner10:{
2475 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2476 // Match Patterns
2477 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2478 return false;
2479 }
2480 // Apply Patterns
2481 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2482 return true;
2483 }
2484 case GICXXCustomAction_GICombiner11:{
2485 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2486 // Match Patterns
2487 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2488 return false;
2489 }
2490 // Apply Patterns
2491 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2492 return true;
2493 }
2494 case GICXXCustomAction_GICombiner12:{
2495 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2496 // Match Patterns
2497 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2498 GIMatchData_matchinfo);}()) {
2499 return false;
2500 }
2501 // Apply Patterns
2502 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2503 return true;
2504 }
2505 case GICXXCustomAction_GICombiner13:{
2506 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2507 // Match Patterns
2508 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2509 return false;
2510 }
2511 // Apply Patterns
2512 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2513 return true;
2514 }
2515 case GICXXCustomAction_GICombiner14:{
2516 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2517 // Match Patterns
2518 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2519 GIMatchData_matchinfo);}()) {
2520 return false;
2521 }
2522 // Apply Patterns
2523 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2524 return true;
2525 }
2526 case GICXXCustomAction_GICombiner15:{
2527 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2528 // Match Patterns
2529 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2530 return false;
2531 }
2532 // Apply Patterns
2533 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2534 return true;
2535 }
2536 case GICXXCustomAction_GICombiner16:{
2537 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2538 // Match Patterns
2539 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2540 return false;
2541 }
2542 // Apply Patterns
2543 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2544 return true;
2545 }
2546 case GICXXCustomAction_GICombiner17:{
2547 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2548 // Match Patterns
2549 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2550 return false;
2551 }
2552 // Apply Patterns
2553 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2554 return true;
2555 }
2556 case GICXXCustomAction_GICombiner18:{
2557 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2558 // Match Patterns
2559 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2560 return false;
2561 }
2562 // Apply Patterns
2563 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2564 return true;
2565 }
2566 case GICXXCustomAction_GICombiner19:{
2567 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2568 // Match Patterns
2569 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2570 return false;
2571 }
2572 // Apply Patterns
2573 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2574 return true;
2575 }
2576 case GICXXCustomAction_GICombiner20:{
2577 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2578 // Match Patterns
2579 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2580 return false;
2581 }
2582 // Apply Patterns
2583 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2584 return true;
2585 }
2586 case GICXXCustomAction_GICombiner21:{
2587 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2588 // Match Patterns
2589 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2590 return false;
2591 }
2592 // Apply Patterns
2593 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2594 return true;
2595 }
2596 case GICXXCustomAction_GICombiner22:{
2597 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2598 // Match Patterns
2599 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2600 return false;
2601 }
2602 // Apply Patterns
2603 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2604 return true;
2605 }
2606 case GICXXCustomAction_GICombiner23:{
2607 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2608 // Match Patterns
2609 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2610 return false;
2611 }
2612 // Apply Patterns
2613 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2614 return true;
2615 }
2616 case GICXXCustomAction_GICombiner24:{
2617 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2618 // Match Patterns
2619 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2620 return false;
2621 }
2622 // Apply Patterns
2623 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2624 return true;
2625 }
2626 case GICXXCustomAction_GICombiner25:{
2627 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2628 // Match Patterns
2629 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2630 return false;
2631 }
2632 // Apply Patterns
2633 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2634 return true;
2635 }
2636 case GICXXCustomAction_GICombiner26:{
2637 APInt GIMatchData_matchinfo;
2638 // Match Patterns
2639 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2640 return false;
2641 }
2642 // Apply Patterns
2643 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2644 return true;
2645 }
2646 case GICXXCustomAction_GICombiner27:{
2647 SmallVector<Register> GIMatchData_info;
2648 // Match Patterns
2649 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2650 return false;
2651 }
2652 // Apply Patterns
2653 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2654 return true;
2655 }
2656 case GICXXCustomAction_GICombiner28:{
2657 Register GIMatchData_matchinfo;
2658 // Match Patterns
2659 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2660 return false;
2661 }
2662 // Apply Patterns
2663 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2664 return true;
2665 }
2666 case GICXXCustomAction_GICombiner29:{
2667 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2668 // Match Patterns
2669 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2670 return false;
2671 }
2672 // Apply Patterns
2673 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2674 return true;
2675 }
2676 case GICXXCustomAction_GICombiner30:{
2677 PreferredTuple GIMatchData_matchinfo;
2678 // Match Patterns
2679 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2680 return false;
2681 }
2682 // Apply Patterns
2683 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2684 return true;
2685 }
2686 case GICXXCustomAction_GICombiner31:{
2687 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2688 // Match Patterns
2689 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2690 return false;
2691 }
2692 // Apply Patterns
2693 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2694 return true;
2695 }
2696 case GICXXCustomAction_GICombiner32:{
2697 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2698 // Match Patterns
2699 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2700 return false;
2701 }
2702 // Apply Patterns
2703 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2704 return true;
2705 }
2706 case GICXXCustomAction_GICombiner33:{
2707 // Match Patterns
2708 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2709 return false;
2710 }
2711 // Apply Patterns
2712 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2713 return true;
2714 }
2715 case GICXXCustomAction_GICombiner34:{
2716 // Match Patterns
2717 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2718 return false;
2719 }
2720 // Apply Patterns
2721 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2722 return true;
2723 }
2724 case GICXXCustomAction_GICombiner35:{
2725 // Match Patterns
2726 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2727 return false;
2728 }
2729 // Apply Patterns
2730 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2731 return true;
2732 }
2733 case GICXXCustomAction_GICombiner36:{
2734 // Match Patterns
2735 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2736 return false;
2737 }
2738 // Apply Patterns
2739 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2740 return true;
2741 }
2742 case GICXXCustomAction_GICombiner37:{
2743 // Match Patterns
2744 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2745 return false;
2746 }
2747 // Apply Patterns
2748 Helper.replaceInstWithUndef(*State.MIs[0]);
2749 return true;
2750 }
2751 case GICXXCustomAction_GICombiner38:{
2752 // Apply Patterns
2753 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2754 return true;
2755 }
2756 case GICXXCustomAction_GICombiner39:{
2757 // Match Patterns
2758 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2759 return false;
2760 }
2761 // Apply Patterns
2762 Helper.replaceInstWithUndef(*State.MIs[0]);
2763 return true;
2764 }
2765 case GICXXCustomAction_GICombiner40:{
2766 // Match Patterns
2767 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2768 return false;
2769 }
2770 // Apply Patterns
2771 Helper.replaceInstWithUndef(*State.MIs[0]);
2772 return true;
2773 }
2774 case GICXXCustomAction_GICombiner41:{
2775 // Match Patterns
2776 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2777 return false;
2778 }
2779 // Apply Patterns
2780 Helper.replaceInstWithUndef(*State.MIs[0]);
2781 return true;
2782 }
2783 case GICXXCustomAction_GICombiner42:{
2784 // Match Patterns
2785 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2786 return false;
2787 }
2788 // Apply Patterns
2789 Helper.eraseInst(*State.MIs[0]);
2790 return true;
2791 }
2792 case GICXXCustomAction_GICombiner43:{
2793 // Match Patterns
2794 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2795 return false;
2796 }
2797 // Apply Patterns
2798 Helper.replaceInstWithUndef(*State.MIs[0]);
2799 return true;
2800 }
2801 case GICXXCustomAction_GICombiner44:{
2802 // Match Patterns
2803 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2804 return false;
2805 }
2806 // Apply Patterns
2807 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2808 return true;
2809 }
2810 case GICXXCustomAction_GICombiner45:{
2811 Register GIMatchData_info;
2812 // Match Patterns
2813 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2814 return false;
2815 }
2816 // Apply Patterns
2817 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2818 return true;
2819 }
2820 case GICXXCustomAction_GICombiner46:{
2821 Register GIMatchData_info;
2822 // Match Patterns
2823 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2824 return false;
2825 }
2826 // Apply Patterns
2827 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2828 return true;
2829 }
2830 case GICXXCustomAction_GICombiner47:{
2831 Register GIMatchData_matchinfo;
2832 // Match Patterns
2833 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2834 return false;
2835 }
2836 // Apply Patterns
2837 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2838 return true;
2839 }
2840 case GICXXCustomAction_GICombiner48:{
2841 Register GIMatchData_matchinfo;
2842 // Match Patterns
2843 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2844 return false;
2845 }
2846 // Apply Patterns
2847 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2848 return true;
2849 }
2850 case GICXXCustomAction_GICombiner49:{
2851 Register GIMatchData_matchinfo;
2852 // Match Patterns
2853 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2854 return false;
2855 }
2856 // Apply Patterns
2857 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2858 return true;
2859 }
2860 case GICXXCustomAction_GICombiner50:{
2861 Register GIMatchData_matchinfo;
2862 // Match Patterns
2863 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2864 return false;
2865 }
2866 // Apply Patterns
2867 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2868 return true;
2869 }
2870 case GICXXCustomAction_GICombiner51:{
2871 // Match Patterns
2872 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2873 return false;
2874 }
2875 // Apply Patterns
2876 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2877 return true;
2878 }
2879 case GICXXCustomAction_GICombiner52:{
2880 MachineInstr* GIMatchData_matchinfo;
2881 // Match Patterns
2882 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2883 return false;
2884 }
2885 // Apply Patterns
2886 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2887 return true;
2888 }
2889 case GICXXCustomAction_GICombiner53:{
2890 std::tuple<Register, Register> GIMatchData_info;
2891 // Match Patterns
2892 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2893 return false;
2894 }
2895 // Apply Patterns
2896 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2897 return true;
2898 }
2899 case GICXXCustomAction_GICombiner54:{
2900 InstructionStepsMatchInfo GIMatchData_info;
2901 // Match Patterns
2902 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2903 return false;
2904 }
2905 // Apply Patterns
2906 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2907 return true;
2908 }
2909 case GICXXCustomAction_GICombiner55:{
2910 std::optional<int64_t> GIMatchData_matchinfo;
2911 // Match Patterns
2912 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2913 return false;
2914 }
2915 // Apply Patterns
2916 if (GIMatchData_matchinfo) {
2917 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2918 } else {
2919 Helper.replaceInstWithUndef(*State.MIs[0]);
2920 }
2921 return true;
2922 }
2923 case GICXXCustomAction_GICombiner56:{
2924 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2925 // Match Patterns
2926 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2927 return false;
2928 }
2929 // Apply Patterns
2930 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2931 return true;
2932 }
2933 case GICXXCustomAction_GICombiner57:{
2934 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2935 // Match Patterns
2936 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2937 return false;
2938 }
2939 // Apply Patterns
2940 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2941 return true;
2942 }
2943 case GICXXCustomAction_GICombiner58:{
2944 PtrAddChain GIMatchData_matchinfo;
2945 // Match Patterns
2946 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2947 return false;
2948 }
2949 // Apply Patterns
2950 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2951 return true;
2952 }
2953 case GICXXCustomAction_GICombiner59:{
2954 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2955 // Match Patterns
2956 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2957 return false;
2958 }
2959 // Apply Patterns
2960 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2961 return true;
2962 }
2963 case GICXXCustomAction_GICombiner60:{
2964 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2965 // Match Patterns
2966 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2967 return false;
2968 }
2969 // Apply Patterns
2970 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2971 return true;
2972 }
2973 case GICXXCustomAction_GICombiner61:{
2974 int64_t GIMatchData_matchinfo;
2975 // Match Patterns
2976 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2977 return false;
2978 }
2979 // Apply Patterns
2980 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2981 return true;
2982 }
2983 case GICXXCustomAction_GICombiner62:{
2984 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2985 // Match Patterns
2986 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2987 return false;
2988 }
2989 // Apply Patterns
2990 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2991 return true;
2992 }
2993 case GICXXCustomAction_GICombiner63:{
2994 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2995 // Match Patterns
2996 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2997 return false;
2998 }
2999 // Apply Patterns
3000 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3001 return true;
3002 }
3003 case GICXXCustomAction_GICombiner64:{
3004 std::tuple<Register, int64_t> GIMatchData_info;
3005 // Match Patterns
3006 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3007 return false;
3008 }
3009 // Apply Patterns
3010 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3011 return true;
3012 }
3013 case GICXXCustomAction_GICombiner65:{
3014 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3015 // Match Patterns
3016 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3017 return false;
3018 }
3019 // Apply Patterns
3020 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3021 return true;
3022 }
3023 case GICXXCustomAction_GICombiner66:{
3024 RegisterImmPair GIMatchData_matchinfo;
3025 // Match Patterns
3026 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3027 return false;
3028 }
3029 // Apply Patterns
3030 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3031 return true;
3032 }
3033 case GICXXCustomAction_GICombiner67:{
3034 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3035 // Match Patterns
3036 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3037 return false;
3038 }
3039 // Apply Patterns
3040 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3041 return true;
3042 }
3043 case GICXXCustomAction_GICombiner68:{
3044 unsigned GIMatchData_matchinfo;
3045 // Match Patterns
3046 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3047 return false;
3048 }
3049 // Apply Patterns
3050 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3051 return true;
3052 }
3053 case GICXXCustomAction_GICombiner69:{
3054 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3055 // Match Patterns
3056 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3057 return false;
3058 }
3059 // Apply Patterns
3060 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3061 return true;
3062 }
3063 case GICXXCustomAction_GICombiner70:{
3064 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3065 // Match Patterns
3066 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3067 return false;
3068 }
3069 // Apply Patterns
3070 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3071 return true;
3072 }
3073 case GICXXCustomAction_GICombiner71:{
3074 Register GIMatchData_matchinfo;
3075 // Match Patterns
3076 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3077 return false;
3078 }
3079 // Apply Patterns
3080 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3081 return true;
3082 }
3083 case GICXXCustomAction_GICombiner72:{
3084 // Match Patterns
3085 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3086 return false;
3087 }
3088 // Apply Patterns
3089 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3090 return true;
3091 }
3092 case GICXXCustomAction_GICombiner73:{
3093 Register GIMatchData_matchinfo;
3094 // Match Patterns
3095 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3096 return false;
3097 }
3098 // Apply Patterns
3099 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3100 return true;
3101 }
3102 case GICXXCustomAction_GICombiner74:{
3103 // Match Patterns
3104 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
3105 return false;
3106 }
3107 // Apply Patterns
3108 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3109 return true;
3110 }
3111 case GICXXCustomAction_GICombiner75:{
3112 Register GIMatchData_matchinfo;
3113 // Match Patterns
3114 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3115 return false;
3116 }
3117 // Apply Patterns
3118 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3119 return true;
3120 }
3121 case GICXXCustomAction_GICombiner76:{
3122 // Match Patterns
3123 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3124 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3125 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3126 return false;
3127 }
3128 // Apply Patterns
3129 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3130 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3131 State.MIs[0]->eraseFromParent();
3132 return true;
3133 }
3134 case GICXXCustomAction_GICombiner77:{
3135 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3136 // Match Patterns
3137 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3138 return false;
3139 }
3140 // Apply Patterns
3141 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3142 return true;
3143 }
3144 case GICXXCustomAction_GICombiner78:{
3145 SmallVector<Register> GIMatchData_info;
3146 // Match Patterns
3147 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3148 return false;
3149 }
3150 // Apply Patterns
3151 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3152 return true;
3153 }
3154 case GICXXCustomAction_GICombiner79:{
3155 MachineInstr * GIMatchData_matchinfo;
3156 // Match Patterns
3157 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3158 return false;
3159 }
3160 // Apply Patterns
3161 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3162 return true;
3163 }
3164 case GICXXCustomAction_GICombiner80:{
3165 // Apply Patterns
3166 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3167 return true;
3168 }
3169 case GICXXCustomAction_GICombiner81:{
3170 // Apply Patterns
3171 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3172 return true;
3173 }
3174 case GICXXCustomAction_GICombiner82:{
3175 APInt GIMatchData_info;
3176 // Match Patterns
3177 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3178 return false;
3179 }
3180 // Apply Patterns
3181 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3182 return true;
3183 }
3184 case GICXXCustomAction_GICombiner83:{
3185 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3186 // Match Patterns
3187 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3188 return false;
3189 }
3190 // Apply Patterns
3191 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3192 return true;
3193 }
3194 case GICXXCustomAction_GICombiner84:{
3195 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3196 // Match Patterns
3197 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3198 return false;
3199 }
3200 // Apply Patterns
3201 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3202 return true;
3203 }
3204 case GICXXCustomAction_GICombiner85:{
3205 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3206 // Match Patterns
3207 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3208 return false;
3209 }
3210 // Apply Patterns
3211 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3212 return true;
3213 }
3214 case GICXXCustomAction_GICombiner86:{
3215 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3216 // Match Patterns
3217 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3218 return false;
3219 }
3220 // Apply Patterns
3221 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3222 return true;
3223 }
3224 case GICXXCustomAction_GICombiner87:{
3225 unsigned GIMatchData_info;
3226 // Match Patterns
3227 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3228 return false;
3229 }
3230 // Apply Patterns
3231 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3232 return true;
3233 }
3234 case GICXXCustomAction_GICombiner88:{
3235 // Match Patterns
3236 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3237 return false;
3238 }
3239 // Apply Patterns
3240 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3241 return true;
3242 }
3243 case GICXXCustomAction_GICombiner89:{
3244 std::pair<Register, Register> GIMatchData_matchinfo;
3245 // Match Patterns
3246 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3247 return false;
3248 }
3249 // Apply Patterns
3250 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3251 return true;
3252 }
3253 case GICXXCustomAction_GICombiner90:{
3254 // Match Patterns
3255 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3256 return false;
3257 }
3258 // Apply Patterns
3259 Helper.applyPtrAddZero(*State.MIs[0]);
3260 return true;
3261 }
3262 case GICXXCustomAction_GICombiner91:{
3263 RegisterImmPair GIMatchData_matchinfo;
3264 // Match Patterns
3265 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3266 return false;
3267 }
3268 // Apply Patterns
3269 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3270 return true;
3271 }
3272 case GICXXCustomAction_GICombiner92:{
3273 ShiftOfShiftedLogic GIMatchData_matchinfo;
3274 // Match Patterns
3275 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3276 return false;
3277 }
3278 // Apply Patterns
3279 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3280 return true;
3281 }
3282 case GICXXCustomAction_GICombiner93:{
3283 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3284 // Match Patterns
3285 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3286 return false;
3287 }
3288 // Apply Patterns
3289 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3290 return true;
3291 }
3292 case GICXXCustomAction_GICombiner94:{
3293 MachineInstr * GIMatchData_matchinfo;
3294 // Match Patterns
3295 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3296 return false;
3297 }
3298 // Apply Patterns
3299 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3300 return true;
3301 }
3302 case GICXXCustomAction_GICombiner95:{
3303 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3304 // Match Patterns
3305 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3306 return false;
3307 }
3308 // Apply Patterns
3309 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3310 return true;
3311 }
3312 case GICXXCustomAction_GICombiner96:{
3313 // Match Patterns
3314 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3315 return false;
3316 }
3317 // Apply Patterns
3318 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3319 return true;
3320 }
3321 case GICXXCustomAction_GICombiner97:{
3322 // Match Patterns
3323 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3324 return false;
3325 }
3326 // Apply Patterns
3327 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3328 return true;
3329 }
3330 case GICXXCustomAction_GICombiner98:{
3331 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3332 // Match Patterns
3333 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3334 return false;
3335 }
3336 // Apply Patterns
3337 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3338 return true;
3339 }
3340 case GICXXCustomAction_GICombiner99:{
3341 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3342 // Match Patterns
3343 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3344 return false;
3345 }
3346 // Apply Patterns
3347 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3348 return true;
3349 }
3350 case GICXXCustomAction_GICombiner100:{
3351 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3352 // Match Patterns
3353 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3354 return false;
3355 }
3356 // Apply Patterns
3357 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3358 return true;
3359 }
3360 case GICXXCustomAction_GICombiner101:{
3361 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3362 // Match Patterns
3363 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3364 return false;
3365 }
3366 // Apply Patterns
3367 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3368 return true;
3369 }
3370 case GICXXCustomAction_GICombiner102:{
3371 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3372 // Match Patterns
3373 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3374 return false;
3375 }
3376 // Apply Patterns
3377 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3378 return true;
3379 }
3380 case GICXXCustomAction_GICombiner103:{
3381 APInt GIMatchData_matchinfo;
3382 // Match Patterns
3383 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3384 return false;
3385 }
3386 // Apply Patterns
3387 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3388 return true;
3389 }
3390 case GICXXCustomAction_GICombiner104:{
3391 ConstantFP* GIMatchData_matchinfo;
3392 // Match Patterns
3393 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3394 return false;
3395 }
3396 // Apply Patterns
3397 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3398 return true;
3399 }
3400 case GICXXCustomAction_GICombiner105:{
3401 ConstantFP* GIMatchData_matchinfo;
3402 // Match Patterns
3403 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3404 return false;
3405 }
3406 // Apply Patterns
3407 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3408 return true;
3409 }
3410 case GICXXCustomAction_GICombiner106:{
3411 APInt GIMatchData_matchinfo;
3412 // Match Patterns
3413 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3414 return false;
3415 }
3416 // Apply Patterns
3417 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3418 return true;
3419 }
3420 case GICXXCustomAction_GICombiner107:{
3421 // Match Patterns
3422 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3423 return false;
3424 }
3425 // Apply Patterns
3426 Helper.applyUMulHToLShr(*State.MIs[0]);
3427 return true;
3428 }
3429 case GICXXCustomAction_GICombiner108:{
3430 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3431 // Match Patterns
3432 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3433 return false;
3434 }
3435 // Apply Patterns
3436 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3437 return true;
3438 }
3439 case GICXXCustomAction_GICombiner109:{
3440 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3441 // Match Patterns
3442 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3443 return false;
3444 }
3445 // Apply Patterns
3446 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3447 return true;
3448 }
3449 case GICXXCustomAction_GICombiner110:{
3450 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3451 // Match Patterns
3452 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3453 GIMatchData_info);}()) {
3454 return false;
3455 }
3456 // Apply Patterns
3457 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3458 return true;
3459 }
3460 case GICXXCustomAction_GICombiner111:{
3461 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3462 // Match Patterns
3463 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3464 GIMatchData_info);}()) {
3465 return false;
3466 }
3467 // Apply Patterns
3468 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3469 return true;
3470 }
3471 case GICXXCustomAction_GICombiner112:{
3472 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3473 // Match Patterns
3474 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3475 GIMatchData_info);}()) {
3476 return false;
3477 }
3478 // Apply Patterns
3479 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3480 return true;
3481 }
3482 case GICXXCustomAction_GICombiner113:{
3483 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3484 // Match Patterns
3485 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3486 *State.MIs[0], GIMatchData_info);}()) {
3487 return false;
3488 }
3489 // Apply Patterns
3490 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3491 return true;
3492 }
3493 case GICXXCustomAction_GICombiner114:{
3494 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3495 // Match Patterns
3496 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3497 GIMatchData_info);}()) {
3498 return false;
3499 }
3500 // Apply Patterns
3501 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3502 return true;
3503 }
3504 case GICXXCustomAction_GICombiner115:{
3505 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3506 // Match Patterns
3507 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3508 GIMatchData_info);}()) {
3509 return false;
3510 }
3511 // Apply Patterns
3512 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3513 return true;
3514 }
3515 case GICXXCustomAction_GICombiner116:{
3516 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3517 // Match Patterns
3518 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3519 GIMatchData_info);}()) {
3520 return false;
3521 }
3522 // Apply Patterns
3523 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3524 return true;
3525 }
3526 case GICXXCustomAction_GICombiner117:{
3527 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3528 // Match Patterns
3529 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3530 *State.MIs[0], GIMatchData_info);}()) {
3531 return false;
3532 }
3533 // Apply Patterns
3534 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3535 return true;
3536 }
3537 case GICXXCustomAction_GICombiner118:{
3538 unsigned GIMatchData_select_op_no;
3539 // Match Patterns
3540 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3541 return false;
3542 }
3543 // Apply Patterns
3544 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3545 return true;
3546 }
3547 case GICXXCustomAction_GICombiner119:{
3548 // Match Patterns
3549 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3550 return false;
3551 }
3552 // Apply Patterns
3553 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3554 return true;
3555 }
3556 case GICXXCustomAction_GICombiner120:{
3557 // Match Patterns
3558 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3559 return false;
3560 }
3561 // Apply Patterns
3562 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3563 return true;
3564 }
3565 case GICXXCustomAction_GICombiner121:{
3566 // Match Patterns
3567 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3568 return false;
3569 }
3570 // Apply Patterns
3571 Helper.applyUDivByPow2(*State.MIs[0]);
3572 return true;
3573 }
3574 case GICXXCustomAction_GICombiner122:{
3575 // Match Patterns
3576 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3577 return false;
3578 }
3579 // Apply Patterns
3580 Helper.applySDivByPow2(*State.MIs[0]);
3581 return true;
3582 }
3583 case GICXXCustomAction_GICombiner123:{
3584 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3585 // Match Patterns
3586 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3587 return false;
3588 }
3589 // Apply Patterns
3590 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3591 return true;
3592 }
3593 case GICXXCustomAction_GICombiner124:{
3594 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3595 // Match Patterns
3596 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3597 return false;
3598 }
3599 // Apply Patterns
3600 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3601 return true;
3602 }
3603 case GICXXCustomAction_GICombiner125:{
3604 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3605 // Match Patterns
3606 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3607 return false;
3608 }
3609 // Apply Patterns
3610 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3611 return true;
3612 }
3613 case GICXXCustomAction_GICombiner126:{
3614 Register GIMatchData_matchinfo;
3615 // Match Patterns
3616 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3617 return false;
3618 }
3619 // Apply Patterns
3620 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3621 return true;
3622 }
3623 case GICXXCustomAction_GICombiner127:{
3624 // Match Patterns
3625 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3626 return false;
3627 }
3628 // Apply Patterns
3629 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3630 return true;
3631 }
3632 case GICXXCustomAction_GICombiner128:{
3633 // Match Patterns
3634 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3635 return false;
3636 }
3637 // Apply Patterns
3638 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3639 return true;
3640 }
3641 case GICXXCustomAction_GICombiner129:{
3642 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3643 // Match Patterns
3644 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3645 return false;
3646 }
3647 // Apply Patterns
3648 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3649 return true;
3650 }
3651 case GICXXCustomAction_GICombiner130:{
3652 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3653 // Match Patterns
3654 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3655 return false;
3656 }
3657 // Apply Patterns
3658 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3659 return true;
3660 }
3661 case GICXXCustomAction_GICombiner131:{
3662 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3663 // Match Patterns
3664 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3665 return false;
3666 }
3667 // Apply Patterns
3668 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3669 return true;
3670 }
3671 case GICXXCustomAction_GICombiner132:{
3672 SmallVector<Register> GIMatchData_matchinfo;
3673 // Match Patterns
3674 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3675 return false;
3676 }
3677 // Apply Patterns
3678 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3679 return true;
3680 }
3681 case GICXXCustomAction_GICombiner133:{
3682 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3683 // Match Patterns
3684 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3685 return false;
3686 }
3687 // Apply Patterns
3688 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3689 return true;
3690 }
3691 case GICXXCustomAction_GICombiner134:{
3692 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3693 // Match Patterns
3694 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3695 return false;
3696 }
3697 // Apply Patterns
3698 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3699 return true;
3700 }
3701 case GICXXCustomAction_GICombiner135:{
3702 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3703 // Match Patterns
3704 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3705 return false;
3706 }
3707 // Apply Patterns
3708 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3709 return true;
3710 }
3711 case GICXXCustomAction_GICombiner136:{
3712 SmallVector<Register> GIMatchData_matchinfo;
3713 // Match Patterns
3714 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3715 return false;
3716 }
3717 // Apply Patterns
3718 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3719 return true;
3720 }
3721 case GICXXCustomAction_GICombiner137:{
3722 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3723 // Match Patterns
3724 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3725 return false;
3726 }
3727 // Apply Patterns
3728 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3729 return true;
3730 }
3731 case GICXXCustomAction_GICombiner138:{
3732 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3733 // Match Patterns
3734 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3735 return false;
3736 }
3737 // Apply Patterns
3738 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3739 return true;
3740 }
3741 case GICXXCustomAction_GICombiner139:{
3742 Register GIMatchData_matchinfo;
3743 // Match Patterns
3744 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3745 return false;
3746 }
3747 // Apply Patterns
3748 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3749 return true;
3750 }
3751 case GICXXCustomAction_GICombiner140:{
3752 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3753 // Match Patterns
3754 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3755 return false;
3756 }
3757 // Apply Patterns
3758 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3759 return true;
3760 }
3761 case GICXXCustomAction_GICombiner141:{
3762 SmallVector<Register> GIMatchData_info;
3763 // Match Patterns
3764 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3765 return false;
3766 }
3767 // Apply Patterns
3768 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3769 return true;
3770 }
3771 case GICXXCustomAction_GICombiner142:{
3772 Register GIMatchData_src;
3773 // Match Patterns
3774 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3775 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3776 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3777 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3778 return false;
3779
3780 // Check counts match.
3781 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3782 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3783 if (NumMergeSrcs != NumUnmergeDefs)
3784 return false;
3785
3786 // Verify all merge sources match unmerge defs in order.
3787 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3788 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3789 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3790
3791 if (MergeSrc != UnmergeDef)
3792 return false;
3793
3794 if (!MRI.hasOneNonDBGUse(MergeSrc))
3795 return false;
3796 }
3797
3798 // Check size compatibility.
3799 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3800 LLT SrcTy = MRI.getType(GIMatchData_src);
3801 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3802 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3803 return false;
3804
3805 // Check bitcast legality.
3806 if (SrcTy != DstTy) {
3807 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3808 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3809 if (!Helper.isLegalOrBeforeLegalizer(Query))
3810 return false;
3811 }
3812
3813 return true;}()) {
3814 return false;
3815 }
3816 // Apply Patterns
3817 LLT SrcTy = MRI.getType(GIMatchData_src);
3818 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3819
3820 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3821
3822 if (SrcTy == DstTy) {
3823 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3824 } else {
3825 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3826 }
3827
3828 State.MIs[0]->eraseFromParent();
3829 return true;
3830 }
3831 case GICXXCustomAction_GICombiner143:{
3832 SmallVector<APInt, 8> GIMatchData_info;
3833 // Match Patterns
3834 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3835 return false;
3836 }
3837 // Apply Patterns
3838 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3839 return true;
3840 }
3841 case GICXXCustomAction_GICombiner144:{
3842 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3843 // Match Patterns
3844 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3845 return false;
3846 }
3847 // Apply Patterns
3848 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3849 return true;
3850 }
3851 case GICXXCustomAction_GICombiner145:{
3852 // Match Patterns
3853 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3854 return false;
3855 }
3856 // Apply Patterns
3857 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3858 return true;
3859 }
3860 case GICXXCustomAction_GICombiner146:{
3861 // Match Patterns
3862 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3863 return false;
3864 }
3865 // Apply Patterns
3866 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3867 return true;
3868 }
3869 case GICXXCustomAction_GICombiner147:{
3870 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3871 // Match Patterns
3872 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3873 return false;
3874 }
3875 // Apply Patterns
3876 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3877 return true;
3878 }
3879 case GICXXCustomAction_GICombiner148:{
3880 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3881 // Match Patterns
3882 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3883 return false;
3884 }
3885 // Apply Patterns
3886 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3887 return true;
3888 }
3889 case GICXXCustomAction_GICombiner149:{
3890 Register GIMatchData_unmergeSrc;
3891 // Match Patterns
3892 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3893 return false;
3894 }
3895 // Apply Patterns
3896 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3897 return true;
3898 }
3899 case GICXXCustomAction_GICombiner150:{
3900 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3901 // Match Patterns
3902 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3903 return false;
3904 }
3905 // Apply Patterns
3906 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3907 return true;
3908 }
3909 case GICXXCustomAction_GICombiner151:{
3910 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3911 // Match Patterns
3912 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3913 return false;
3914 }
3915 // Apply Patterns
3916 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3917 return true;
3918 }
3919 case GICXXCustomAction_GICombiner152:{
3920 Register GIMatchData_matchinfo;
3921 // Match Patterns
3922 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3923 return false;
3924 }
3925 // Apply Patterns
3926 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3927 return true;
3928 }
3929 case GICXXCustomAction_GICombiner153:{
3930 Register GIMatchData_matchinfo;
3931 // Match Patterns
3932 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3933 return false;
3934 }
3935 // Apply Patterns
3936 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3937 return true;
3938 }
3939 case GICXXCustomAction_GICombiner154:{
3940 LshrOfTruncOfLshr GIMatchData_matchinfo;
3941 // Match Patterns
3942 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3943 return false;
3944 }
3945 // Apply Patterns
3946 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3947 return true;
3948 }
3949 case GICXXCustomAction_GICombiner155:{
3950 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3951 // Match Patterns
3952 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3953 return false;
3954 }
3955 // Apply Patterns
3956 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3957 return true;
3958 }
3959 case GICXXCustomAction_GICombiner156:{
3960 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3961 // Match Patterns
3962 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3963 return false;
3964 }
3965 // Apply Patterns
3966 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3967 return true;
3968 }
3969 case GICXXCustomAction_GICombiner157:{
3970 Register GIMatchData_matchinfo;
3971 // Match Patterns
3972 if(![&](){return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getValueTracking(), GIMatchData_matchinfo);}()) {
3973 return false;
3974 }
3975 // Apply Patterns
3976 applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3977 return true;
3978 }
3979 case GICXXCustomAction_GICombiner158:{
3980 std::pair<uint64_t, uint64_t> GIMatchData_matchinfo;
3981 // Match Patterns
3982 if(![&](){return matchFoldGlobalOffset(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
3983 return false;
3984 }
3985 // Apply Patterns
3986 applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3987 return true;
3988 }
3989 case GICXXCustomAction_GICombiner159:{
3990 std::tuple<Register, Register, bool> GIMatchData_matchinfo;
3991 // Match Patterns
3992 if(![&](){return matchExtAddvToDotAddv(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
3993 return false;
3994 }
3995 // Apply Patterns
3996 applyExtAddvToDotAddv(*State.MIs[0], MRI, B, Observer, STI, GIMatchData_matchinfo);
3997 return true;
3998 }
3999 case GICXXCustomAction_GICombiner160:{
4000 std::pair<Register, bool> GIMatchData_matchinfo;
4001 // Match Patterns
4002 if(![&](){return matchExtUaddvToUaddlv(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4003 return false;
4004 }
4005 // Apply Patterns
4006 applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4007 return true;
4008 }
4009 case GICXXCustomAction_GICombiner161:{
4010 // Match Patterns
4011 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());}()) {
4012 return false;
4013 }
4014 // Apply Patterns
4015 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());
4016 return true;
4017 }
4018 }
4019 llvm_unreachable("Unknown Apply Action");
4020}
4021#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4022#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4023#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4024#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)
4025#else
4026#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4027#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4028#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)
4029#endif
4030const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const {
4031 constexpr static uint8_t MatchTable0[] = {
4032 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(315), /*)*//*default:*//*Label 108*/ GIMT_Encode4(8958),
4033 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1190), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4034 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1202),
4035 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1993),
4036 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2744),
4037 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3008),
4038 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3110),
4039 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3223),
4040 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3308), GIMT_Encode4(0), GIMT_Encode4(0),
4041 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3415),
4042 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3707),
4043 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(4151), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4044 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(4362), GIMT_Encode4(0),
4045 /* 234 */ /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(4374), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4046 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(4386), GIMT_Encode4(0),
4047 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(4453),
4048 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(4530),
4049 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(4595),
4050 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 17*/ GIMT_Encode4(4607),
4051 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 18*/ GIMT_Encode4(4619),
4052 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 19*/ GIMT_Encode4(4662),
4053 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 20*/ GIMT_Encode4(4695),
4054 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 21*/ GIMT_Encode4(4738), GIMT_Encode4(0), GIMT_Encode4(0),
4055 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 22*/ GIMT_Encode4(4802),
4056 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 23*/ GIMT_Encode4(4824), GIMT_Encode4(0), GIMT_Encode4(0),
4057 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 24*/ GIMT_Encode4(4846), GIMT_Encode4(0), GIMT_Encode4(0),
4058 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 25*/ GIMT_Encode4(4868),
4059 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 26*/ GIMT_Encode4(4880),
4060 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 27*/ GIMT_Encode4(4892), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4061 /* 350 */ /*TargetOpcode::G_STORE*//*Label 28*/ GIMT_Encode4(4904), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4062 /* 494 */ /*TargetOpcode::G_ANYEXT*//*Label 29*/ GIMT_Encode4(4916),
4063 /* 498 */ /*TargetOpcode::G_TRUNC*//*Label 30*/ GIMT_Encode4(5044), GIMT_Encode4(0), GIMT_Encode4(0),
4064 /* 510 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 31*/ GIMT_Encode4(5456), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4065 /* 530 */ /*TargetOpcode::G_SEXT*//*Label 32*/ GIMT_Encode4(5489),
4066 /* 534 */ /*TargetOpcode::G_SEXT_INREG*//*Label 33*/ GIMT_Encode4(5564),
4067 /* 538 */ /*TargetOpcode::G_ZEXT*//*Label 34*/ GIMT_Encode4(5630),
4068 /* 542 */ /*TargetOpcode::G_SHL*//*Label 35*/ GIMT_Encode4(5760),
4069 /* 546 */ /*TargetOpcode::G_LSHR*//*Label 36*/ GIMT_Encode4(5958),
4070 /* 550 */ /*TargetOpcode::G_ASHR*//*Label 37*/ GIMT_Encode4(6139),
4071 /* 554 */ /*TargetOpcode::G_FSHL*//*Label 38*/ GIMT_Encode4(6302),
4072 /* 558 */ /*TargetOpcode::G_FSHR*//*Label 39*/ GIMT_Encode4(6345),
4073 /* 562 */ /*TargetOpcode::G_ROTR*//*Label 40*/ GIMT_Encode4(6388),
4074 /* 566 */ /*TargetOpcode::G_ROTL*//*Label 41*/ GIMT_Encode4(6412),
4075 /* 570 */ /*TargetOpcode::G_ICMP*//*Label 42*/ GIMT_Encode4(6436),
4076 /* 574 */ /*TargetOpcode::G_FCMP*//*Label 43*/ GIMT_Encode4(6492), GIMT_Encode4(0), GIMT_Encode4(0),
4077 /* 586 */ /*TargetOpcode::G_SELECT*//*Label 44*/ GIMT_Encode4(6504),
4078 /* 590 */ /*TargetOpcode::G_UADDO*//*Label 45*/ GIMT_Encode4(6599),
4079 /* 594 */ /*TargetOpcode::G_UADDE*//*Label 46*/ GIMT_Encode4(6622),
4080 /* 598 */ /*TargetOpcode::G_USUBO*//*Label 47*/ GIMT_Encode4(6634),
4081 /* 602 */ /*TargetOpcode::G_USUBE*//*Label 48*/ GIMT_Encode4(6646),
4082 /* 606 */ /*TargetOpcode::G_SADDO*//*Label 49*/ GIMT_Encode4(6658),
4083 /* 610 */ /*TargetOpcode::G_SADDE*//*Label 50*/ GIMT_Encode4(6681),
4084 /* 614 */ /*TargetOpcode::G_SSUBO*//*Label 51*/ GIMT_Encode4(6693),
4085 /* 618 */ /*TargetOpcode::G_SSUBE*//*Label 52*/ GIMT_Encode4(6705),
4086 /* 622 */ /*TargetOpcode::G_UMULO*//*Label 53*/ GIMT_Encode4(6717),
4087 /* 626 */ /*TargetOpcode::G_SMULO*//*Label 54*/ GIMT_Encode4(6751),
4088 /* 630 */ /*TargetOpcode::G_UMULH*//*Label 55*/ GIMT_Encode4(6785),
4089 /* 634 */ /*TargetOpcode::G_SMULH*//*Label 56*/ GIMT_Encode4(6808),
4090 /* 638 */ /*TargetOpcode::G_UADDSAT*//*Label 57*/ GIMT_Encode4(6820),
4091 /* 642 */ /*TargetOpcode::G_SADDSAT*//*Label 58*/ GIMT_Encode4(6832), GIMT_Encode4(0), GIMT_Encode4(0),
4092 /* 654 */ /*TargetOpcode::G_USHLSAT*//*Label 59*/ GIMT_Encode4(6844),
4093 /* 658 */ /*TargetOpcode::G_SSHLSAT*//*Label 60*/ GIMT_Encode4(6867),
4094 /* 662 */ /*TargetOpcode::G_SMULFIX*//*Label 61*/ GIMT_Encode4(6890),
4095 /* 666 */ /*TargetOpcode::G_UMULFIX*//*Label 62*/ GIMT_Encode4(6902),
4096 /* 670 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 63*/ GIMT_Encode4(6914),
4097 /* 674 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 64*/ GIMT_Encode4(6926), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4098 /* 694 */ /*TargetOpcode::G_FADD*//*Label 65*/ GIMT_Encode4(6938),
4099 /* 698 */ /*TargetOpcode::G_FSUB*//*Label 66*/ GIMT_Encode4(7079),
4100 /* 702 */ /*TargetOpcode::G_FMUL*//*Label 67*/ GIMT_Encode4(7168),
4101 /* 706 */ /*TargetOpcode::G_FMA*//*Label 68*/ GIMT_Encode4(7256),
4102 /* 710 */ /*TargetOpcode::G_FMAD*//*Label 69*/ GIMT_Encode4(7279),
4103 /* 714 */ /*TargetOpcode::G_FDIV*//*Label 70*/ GIMT_Encode4(7302),
4104 /* 718 */ /*TargetOpcode::G_FREM*//*Label 71*/ GIMT_Encode4(7347), GIMT_Encode4(0), GIMT_Encode4(0),
4105 /* 730 */ /*TargetOpcode::G_FPOWI*//*Label 72*/ GIMT_Encode4(7359), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4106 /* 750 */ /*TargetOpcode::G_FLOG2*//*Label 73*/ GIMT_Encode4(7381), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4107 /* 766 */ /*TargetOpcode::G_FNEG*//*Label 74*/ GIMT_Encode4(7403),
4108 /* 770 */ /*TargetOpcode::G_FPEXT*//*Label 75*/ GIMT_Encode4(7454),
4109 /* 774 */ /*TargetOpcode::G_FPTRUNC*//*Label 76*/ GIMT_Encode4(7476),
4110 /* 778 */ /*TargetOpcode::G_FPTOSI*//*Label 77*/ GIMT_Encode4(7519),
4111 /* 782 */ /*TargetOpcode::G_FPTOUI*//*Label 78*/ GIMT_Encode4(7541),
4112 /* 786 */ /*TargetOpcode::G_SITOFP*//*Label 79*/ GIMT_Encode4(7563),
4113 /* 790 */ /*TargetOpcode::G_UITOFP*//*Label 80*/ GIMT_Encode4(7590), GIMT_Encode4(0), GIMT_Encode4(0),
4114 /* 802 */ /*TargetOpcode::G_FABS*//*Label 81*/ GIMT_Encode4(7617), GIMT_Encode4(0), GIMT_Encode4(0),
4115 /* 814 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(7696),
4116 /* 818 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(7726),
4117 /* 822 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(7760),
4118 /* 826 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(7794),
4119 /* 830 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(7806),
4120 /* 834 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(7818),
4121 /* 838 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(7852), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4122 /* 882 */ /*TargetOpcode::G_PTR_ADD*//*Label 89*/ GIMT_Encode4(7886), GIMT_Encode4(0),
4123 /* 890 */ /*TargetOpcode::G_SMIN*//*Label 90*/ GIMT_Encode4(7976),
4124 /* 894 */ /*TargetOpcode::G_SMAX*//*Label 91*/ GIMT_Encode4(8010),
4125 /* 898 */ /*TargetOpcode::G_UMIN*//*Label 92*/ GIMT_Encode4(8044),
4126 /* 902 */ /*TargetOpcode::G_UMAX*//*Label 93*/ GIMT_Encode4(8078),
4127 /* 906 */ /*TargetOpcode::G_ABS*//*Label 94*/ GIMT_Encode4(8112), GIMT_Encode4(0), GIMT_Encode4(0),
4128 /* 918 */ /*TargetOpcode::G_BR*//*Label 95*/ GIMT_Encode4(8124), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4129 /* 938 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(8136),
4130 /* 942 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 97*/ GIMT_Encode4(8266),
4131 /* 946 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 98*/ GIMT_Encode4(8643), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4132 /* 970 */ /*TargetOpcode::G_CTLZ*//*Label 99*/ GIMT_Encode4(8709),
4133 /* 974 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 100*/ GIMT_Encode4(8721), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4134 /* 990 */ /*TargetOpcode::G_BITREVERSE*//*Label 101*/ GIMT_Encode4(8733),
4135 /* 994 */ /*TargetOpcode::G_FCEIL*//*Label 102*/ GIMT_Encode4(8822), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4136 /* 1042 */ /*TargetOpcode::G_FSQRT*//*Label 103*/ GIMT_Encode4(8844),
4137 /* 1046 */ /*TargetOpcode::G_FFLOOR*//*Label 104*/ GIMT_Encode4(8866),
4138 /* 1050 */ /*TargetOpcode::G_FRINT*//*Label 105*/ GIMT_Encode4(8888),
4139 /* 1054 */ /*TargetOpcode::G_FNEARBYINT*//*Label 106*/ GIMT_Encode4(8910), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4140 /* 1186 */ /*TargetOpcode::G_VECREDUCE_ADD*//*Label 107*/ GIMT_Encode4(8932),
4141 /* 1190 */ // Label 0: @1190
4142 /* 1190 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1201), // Rule ID 19 //
4143 /* 1195 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4144 /* 1198 */ // MIs[0] d
4145 /* 1198 */ // No operand predicates
4146 /* 1198 */ // MIs[0] s
4147 /* 1198 */ // No operand predicates
4148 /* 1198 */ // Combiner Rule #19: copy_prop
4149 /* 1198 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4150 /* 1201 */ // Label 109: @1201
4151 /* 1201 */ GIM_Reject,
4152 /* 1202 */ // Label 1: @1202
4153 /* 1202 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1213), // Rule ID 22 //
4154 /* 1207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4155 /* 1210 */ // Combiner Rule #22: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4156 /* 1210 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4157 /* 1213 */ // Label 110: @1213
4158 /* 1213 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1224), // Rule ID 100 //
4159 /* 1218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4160 /* 1221 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4161 /* 1221 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4162 /* 1224 */ // Label 111: @1224
4163 /* 1224 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1235), // Rule ID 151 //
4164 /* 1229 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
4165 /* 1232 */ // Combiner Rule #111: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4166 /* 1232 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4167 /* 1235 */ // Label 112: @1235
4168 /* 1235 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1246), // Rule ID 253 //
4169 /* 1240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4170 /* 1243 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_ADD'
4171 /* 1243 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4172 /* 1246 */ // Label 113: @1246
4173 /* 1246 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1257), // Rule ID 297 //
4174 /* 1251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4175 /* 1254 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_ADD'
4176 /* 1254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4177 /* 1257 */ // Label 114: @1257
4178 /* 1257 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1268), // Rule ID 333 //
4179 /* 1262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
4180 /* 1265 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4181 /* 1265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4182 /* 1268 */ // Label 115: @1268
4183 /* 1268 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1356), // Rule ID 395 //
4184 /* 1273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
4185 /* 1276 */ // MIs[0] dst
4186 /* 1276 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4187 /* 1280 */ // MIs[0] __add_shift_match_0.shl_neg
4188 /* 1280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4189 /* 1284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4190 /* 1288 */ // MIs[1] __add_shift_match_0.neg_y
4191 /* 1288 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4192 /* 1292 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4193 /* 1296 */ // MIs[2] __add_shift_match_0.zero
4194 /* 1296 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4195 /* 1300 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4196 /* 1304 */ // MIs[3] Operand 1
4197 /* 1304 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4198 /* 1315 */ // MIs[2] y
4199 /* 1315 */ // No operand predicates
4200 /* 1315 */ // MIs[1] n
4201 /* 1315 */ // No operand predicates
4202 /* 1315 */ // MIs[0] x
4203 /* 1315 */ // No operand predicates
4204 /* 1315 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
4205 /* 1319 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4206 /* 1321 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4207 /* 1324 */ // Combiner Rule #243: add_shift @ [__add_shift_match_0[1]]
4208 /* 1324 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4209 /* 1327 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4210 /* 1332 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4211 /* 1336 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4212 /* 1340 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4213 /* 1344 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4214 /* 1348 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4215 /* 1352 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4216 /* 1355 */ GIR_EraseRootFromParent_Done,
4217 /* 1356 */ // Label 116: @1356
4218 /* 1356 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1444), // Rule ID 394 //
4219 /* 1361 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
4220 /* 1364 */ // MIs[0] dst
4221 /* 1364 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4222 /* 1368 */ // MIs[0] x
4223 /* 1368 */ // No operand predicates
4224 /* 1368 */ // MIs[0] __add_shift_match_0.shl_neg
4225 /* 1368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4226 /* 1372 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4227 /* 1376 */ // MIs[1] __add_shift_match_0.neg_y
4228 /* 1376 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4229 /* 1380 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4230 /* 1384 */ // MIs[2] __add_shift_match_0.zero
4231 /* 1384 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4232 /* 1388 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4233 /* 1392 */ // MIs[3] Operand 1
4234 /* 1392 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4235 /* 1403 */ // MIs[2] y
4236 /* 1403 */ // No operand predicates
4237 /* 1403 */ // MIs[1] n
4238 /* 1403 */ // No operand predicates
4239 /* 1403 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
4240 /* 1407 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4241 /* 1409 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4242 /* 1412 */ // Combiner Rule #243: add_shift @ [__add_shift_match_0[0]]
4243 /* 1412 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4244 /* 1415 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4245 /* 1420 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4246 /* 1424 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4247 /* 1428 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4248 /* 1432 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4249 /* 1436 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4250 /* 1440 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4251 /* 1443 */ GIR_EraseRootFromParent_Done,
4252 /* 1444 */ // Label 117: @1444
4253 /* 1444 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1478), // Rule ID 2 //
4254 /* 1449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4255 /* 1452 */ // MIs[0] root
4256 /* 1452 */ // No operand predicates
4257 /* 1452 */ // MIs[0] sub
4258 /* 1452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4259 /* 1456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4260 /* 1460 */ // MIs[1] Operand 1
4261 /* 1460 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4262 /* 1464 */ // MIs[1] A
4263 /* 1464 */ // No operand predicates
4264 /* 1464 */ // MIs[0] B
4265 /* 1464 */ // No operand predicates
4266 /* 1464 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4267 /* 1466 */ // Combiner Rule #2: ZeroMinusAPlusB
4268 /* 1466 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4269 /* 1469 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4270 /* 1471 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4271 /* 1473 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4272 /* 1477 */ GIR_EraseRootFromParent_Done,
4273 /* 1478 */ // Label 118: @1478
4274 /* 1478 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1515), // Rule ID 18 //
4275 /* 1483 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4276 /* 1486 */ // MIs[0] root
4277 /* 1486 */ // No operand predicates
4278 /* 1486 */ // MIs[0] sub
4279 /* 1486 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4280 /* 1490 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4281 /* 1494 */ // MIs[1] A
4282 /* 1494 */ // No operand predicates
4283 /* 1494 */ // MIs[1] c1
4284 /* 1494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4285 /* 1498 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4286 /* 1502 */ // MIs[2] imm1
4287 /* 1502 */ // No operand predicates
4288 /* 1502 */ // MIs[0] c2
4289 /* 1502 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4290 /* 1506 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4291 /* 1510 */ // MIs[3] imm2
4292 /* 1510 */ // No operand predicates
4293 /* 1510 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4294 /* 1512 */ // Combiner Rule #18: AMinusC1PlusC2
4295 /* 1512 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4296 /* 1515 */ // Label 119: @1515
4297 /* 1515 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1549), // Rule ID 5 //
4298 /* 1520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4299 /* 1523 */ // MIs[0] root
4300 /* 1523 */ // No operand predicates
4301 /* 1523 */ // MIs[0] sub
4302 /* 1523 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4303 /* 1527 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4304 /* 1531 */ // MIs[1] B
4305 /* 1531 */ // No operand predicates
4306 /* 1531 */ // MIs[1] A
4307 /* 1531 */ // No operand predicates
4308 /* 1531 */ // MIs[0] A
4309 /* 1531 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4310 /* 1536 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4311 /* 1541 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4312 /* 1543 */ // Combiner Rule #5: BMinusAPlusA
4313 /* 1543 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4314 /* 1548 */ GIR_EraseRootFromParent_Done,
4315 /* 1549 */ // Label 120: @1549
4316 /* 1549 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1583), // Rule ID 140 //
4317 /* 1554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4318 /* 1557 */ // MIs[0] dst
4319 /* 1557 */ // No operand predicates
4320 /* 1557 */ // MIs[0] __add_sub_reg_match_0.tmp
4321 /* 1557 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4322 /* 1561 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4323 /* 1565 */ // MIs[1] src
4324 /* 1565 */ // No operand predicates
4325 /* 1565 */ // MIs[1] __add_sub_reg_match_0.x
4326 /* 1565 */ // No operand predicates
4327 /* 1565 */ // MIs[0] __add_sub_reg_match_0.x
4328 /* 1565 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4329 /* 1570 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4330 /* 1575 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4331 /* 1577 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4332 /* 1577 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4333 /* 1582 */ GIR_EraseRootFromParent_Done,
4334 /* 1583 */ // Label 121: @1583
4335 /* 1583 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1628), // Rule ID 7 //
4336 /* 1588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4337 /* 1591 */ // MIs[0] root
4338 /* 1591 */ // No operand predicates
4339 /* 1591 */ // MIs[0] sub1
4340 /* 1591 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4341 /* 1595 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4342 /* 1599 */ // MIs[1] A
4343 /* 1599 */ // No operand predicates
4344 /* 1599 */ // MIs[1] B
4345 /* 1599 */ // No operand predicates
4346 /* 1599 */ // MIs[0] sub2
4347 /* 1599 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4348 /* 1603 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4349 /* 1607 */ // MIs[2] B
4350 /* 1607 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4351 /* 1612 */ // MIs[2] C
4352 /* 1612 */ // No operand predicates
4353 /* 1612 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4354 /* 1614 */ // Combiner Rule #7: AMinusBPlusBMinusC
4355 /* 1614 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4356 /* 1617 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4357 /* 1619 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4358 /* 1623 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4359 /* 1627 */ GIR_EraseRootFromParent_Done,
4360 /* 1628 */ // Label 122: @1628
4361 /* 1628 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1673), // Rule ID 6 //
4362 /* 1633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4363 /* 1636 */ // MIs[0] root
4364 /* 1636 */ // No operand predicates
4365 /* 1636 */ // MIs[0] sub1
4366 /* 1636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4367 /* 1640 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4368 /* 1644 */ // MIs[1] A
4369 /* 1644 */ // No operand predicates
4370 /* 1644 */ // MIs[1] B
4371 /* 1644 */ // No operand predicates
4372 /* 1644 */ // MIs[0] sub2
4373 /* 1644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4374 /* 1648 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4375 /* 1652 */ // MIs[2] C
4376 /* 1652 */ // No operand predicates
4377 /* 1652 */ // MIs[2] A
4378 /* 1652 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4379 /* 1657 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4380 /* 1659 */ // Combiner Rule #6: AMinusBPlusCMinusA
4381 /* 1659 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4382 /* 1662 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4383 /* 1664 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4384 /* 1668 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4385 /* 1672 */ GIR_EraseRootFromParent_Done,
4386 /* 1673 */ // Label 123: @1673
4387 /* 1673 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1702), // Rule ID 409 //
4388 /* 1678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
4389 /* 1681 */ // MIs[0] dst
4390 /* 1681 */ // No operand predicates
4391 /* 1681 */ // MIs[0] ext1
4392 /* 1681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4393 /* 1685 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4394 /* 1689 */ // MIs[1] src1
4395 /* 1689 */ // No operand predicates
4396 /* 1689 */ // MIs[0] ext2
4397 /* 1689 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4398 /* 1693 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4399 /* 1697 */ // MIs[2] src2
4400 /* 1697 */ // No operand predicates
4401 /* 1697 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4402 /* 1699 */ // Combiner Rule #255: push_add_through_sext
4403 /* 1699 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
4404 /* 1702 */ // Label 124: @1702
4405 /* 1702 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1737), // Rule ID 45 //
4406 /* 1707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4407 /* 1710 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4408 /* 1716 */ // MIs[0] root
4409 /* 1716 */ // No operand predicates
4410 /* 1716 */ // MIs[0] left
4411 /* 1716 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4412 /* 1720 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4413 /* 1724 */ // MIs[1] imm1
4414 /* 1724 */ // No operand predicates
4415 /* 1724 */ // MIs[0] right
4416 /* 1724 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4417 /* 1728 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4418 /* 1732 */ // MIs[2] imm2
4419 /* 1732 */ // No operand predicates
4420 /* 1732 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4421 /* 1734 */ // Combiner Rule #43: add_of_vscale
4422 /* 1734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4423 /* 1737 */ // Label 125: @1737
4424 /* 1737 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1766), // Rule ID 406 //
4425 /* 1742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
4426 /* 1745 */ // MIs[0] dst
4427 /* 1745 */ // No operand predicates
4428 /* 1745 */ // MIs[0] ext1
4429 /* 1745 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4430 /* 1749 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4431 /* 1753 */ // MIs[1] src1
4432 /* 1753 */ // No operand predicates
4433 /* 1753 */ // MIs[0] ext2
4434 /* 1753 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4435 /* 1757 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4436 /* 1761 */ // MIs[2] src2
4437 /* 1761 */ // No operand predicates
4438 /* 1761 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4439 /* 1763 */ // Combiner Rule #252: push_add_through_zext
4440 /* 1763 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
4441 /* 1766 */ // Label 126: @1766
4442 /* 1766 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1800), // Rule ID 3 //
4443 /* 1771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4444 /* 1774 */ // MIs[0] root
4445 /* 1774 */ // No operand predicates
4446 /* 1774 */ // MIs[0] A
4447 /* 1774 */ // No operand predicates
4448 /* 1774 */ // MIs[0] sub
4449 /* 1774 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4450 /* 1778 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4451 /* 1782 */ // MIs[1] Operand 1
4452 /* 1782 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4453 /* 1786 */ // MIs[1] B
4454 /* 1786 */ // No operand predicates
4455 /* 1786 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4456 /* 1788 */ // Combiner Rule #3: APlusZeroMinusB
4457 /* 1788 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4458 /* 1791 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4459 /* 1793 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4460 /* 1795 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4461 /* 1799 */ GIR_EraseRootFromParent_Done,
4462 /* 1800 */ // Label 127: @1800
4463 /* 1800 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1834), // Rule ID 4 //
4464 /* 1805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4465 /* 1808 */ // MIs[0] root
4466 /* 1808 */ // No operand predicates
4467 /* 1808 */ // MIs[0] A
4468 /* 1808 */ // No operand predicates
4469 /* 1808 */ // MIs[0] sub
4470 /* 1808 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4471 /* 1812 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4472 /* 1816 */ // MIs[1] B
4473 /* 1816 */ // No operand predicates
4474 /* 1816 */ // MIs[1] A
4475 /* 1816 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4476 /* 1821 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4477 /* 1826 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4478 /* 1828 */ // Combiner Rule #4: APlusBMinusB
4479 /* 1828 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4480 /* 1833 */ GIR_EraseRootFromParent_Done,
4481 /* 1834 */ // Label 128: @1834
4482 /* 1834 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1868), // Rule ID 139 //
4483 /* 1839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4484 /* 1842 */ // MIs[0] dst
4485 /* 1842 */ // No operand predicates
4486 /* 1842 */ // MIs[0] __add_sub_reg_match_0.x
4487 /* 1842 */ // No operand predicates
4488 /* 1842 */ // MIs[0] __add_sub_reg_match_0.tmp
4489 /* 1842 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4490 /* 1846 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4491 /* 1850 */ // MIs[1] src
4492 /* 1850 */ // No operand predicates
4493 /* 1850 */ // MIs[1] __add_sub_reg_match_0.x
4494 /* 1850 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4495 /* 1855 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4496 /* 1860 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4497 /* 1862 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
4498 /* 1862 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4499 /* 1867 */ GIR_EraseRootFromParent_Done,
4500 /* 1868 */ // Label 129: @1868
4501 /* 1868 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1913), // Rule ID 8 //
4502 /* 1873 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4503 /* 1876 */ // MIs[0] root
4504 /* 1876 */ // No operand predicates
4505 /* 1876 */ // MIs[0] A
4506 /* 1876 */ // No operand predicates
4507 /* 1876 */ // MIs[0] sub1
4508 /* 1876 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4509 /* 1880 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4510 /* 1884 */ // MIs[1] B
4511 /* 1884 */ // No operand predicates
4512 /* 1884 */ // MIs[1] add1
4513 /* 1884 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4514 /* 1888 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4515 /* 1892 */ // MIs[2] A
4516 /* 1892 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4517 /* 1897 */ // MIs[2] C
4518 /* 1897 */ // No operand predicates
4519 /* 1897 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4520 /* 1899 */ // Combiner Rule #8: APlusBMinusAplusC
4521 /* 1899 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4522 /* 1902 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4523 /* 1904 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4524 /* 1908 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4525 /* 1912 */ GIR_EraseRootFromParent_Done,
4526 /* 1913 */ // Label 130: @1913
4527 /* 1913 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1958), // Rule ID 10 //
4528 /* 1918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4529 /* 1921 */ // MIs[0] root
4530 /* 1921 */ // No operand predicates
4531 /* 1921 */ // MIs[0] A
4532 /* 1921 */ // No operand predicates
4533 /* 1921 */ // MIs[0] sub1
4534 /* 1921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4535 /* 1925 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4536 /* 1929 */ // MIs[1] B
4537 /* 1929 */ // No operand predicates
4538 /* 1929 */ // MIs[1] add1
4539 /* 1929 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4540 /* 1933 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4541 /* 1937 */ // MIs[2] C
4542 /* 1937 */ // No operand predicates
4543 /* 1937 */ // MIs[2] A
4544 /* 1937 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4545 /* 1942 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4546 /* 1944 */ // Combiner Rule #10: APlusBMinusCPlusA
4547 /* 1944 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4548 /* 1947 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4549 /* 1949 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4550 /* 1953 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4551 /* 1957 */ GIR_EraseRootFromParent_Done,
4552 /* 1958 */ // Label 131: @1958
4553 /* 1958 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1981), // Rule ID 111 //
4554 /* 1963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4555 /* 1966 */ // MIs[0] dst
4556 /* 1966 */ // No operand predicates
4557 /* 1966 */ // MIs[0] lhs
4558 /* 1966 */ // No operand predicates
4559 /* 1966 */ // MIs[0] Operand 2
4560 /* 1966 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4561 /* 1970 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4562 /* 1975 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
4563 /* 1975 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4564 /* 1980 */ GIR_EraseRootFromParent_Done,
4565 /* 1981 */ // Label 132: @1981
4566 /* 1981 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1992), // Rule ID 159 //
4567 /* 1986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
4568 /* 1989 */ // MIs[0] root
4569 /* 1989 */ // No operand predicates
4570 /* 1989 */ // MIs[0] src1
4571 /* 1989 */ // No operand predicates
4572 /* 1989 */ // MIs[0] src2
4573 /* 1989 */ // No operand predicates
4574 /* 1989 */ // Combiner Rule #115: reassoc_comm_binops
4575 /* 1989 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4576 /* 1992 */ // Label 133: @1992
4577 /* 1992 */ GIM_Reject,
4578 /* 1993 */ // Label 2: @1993
4579 /* 1993 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2004), // Rule ID 101 //
4580 /* 1998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4581 /* 2001 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4582 /* 2001 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4583 /* 2004 */ // Label 134: @2004
4584 /* 2004 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2015), // Rule ID 261 //
4585 /* 2009 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4586 /* 2012 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SUB'
4587 /* 2012 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4588 /* 2015 */ // Label 135: @2015
4589 /* 2015 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2026), // Rule ID 298 //
4590 /* 2020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4591 /* 2023 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SUB'
4592 /* 2023 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4593 /* 2026 */ // Label 136: @2026
4594 /* 2026 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2037), // Rule ID 330 //
4595 /* 2031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4596 /* 2034 */ // Combiner Rule #208: sub_add_reg; wip_match_opcode 'G_SUB'
4597 /* 2034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4598 /* 2037 */ // Label 137: @2037
4599 /* 2037 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2048), // Rule ID 364 //
4600 /* 2042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
4601 /* 2045 */ // Combiner Rule #215: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4602 /* 2045 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4603 /* 2048 */ // Label 138: @2048
4604 /* 2048 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2125), // Rule ID 396 //
4605 /* 2053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
4606 /* 2056 */ // MIs[0] dst
4607 /* 2056 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4608 /* 2060 */ // MIs[0] sub1
4609 /* 2060 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4610 /* 2064 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4611 /* 2068 */ // MIs[1] a
4612 /* 2068 */ // No operand predicates
4613 /* 2068 */ // MIs[1] b
4614 /* 2068 */ // No operand predicates
4615 /* 2068 */ // MIs[0] Operand 2
4616 /* 2068 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4617 /* 2072 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
4618 /* 2076 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4619 /* 2078 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4620 /* 2081 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4621 /* 2091 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4622 /* 2094 */ // Combiner Rule #244: sub_one_from_sub
4623 /* 2094 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4624 /* 2097 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4625 /* 2102 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4626 /* 2106 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4627 /* 2109 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4628 /* 2113 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4629 /* 2117 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4630 /* 2120 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4631 /* 2124 */ GIR_EraseRootFromParent_Done,
4632 /* 2125 */ // Label 139: @2125
4633 /* 2125 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2165), // Rule ID 400 //
4634 /* 2130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
4635 /* 2133 */ // MIs[0] root
4636 /* 2133 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4637 /* 2137 */ // MIs[0] Operand 1
4638 /* 2137 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
4639 /* 2141 */ // MIs[0] op1
4640 /* 2141 */ // No operand predicates
4641 /* 2141 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4642 /* 2144 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
4643 /* 2154 */ // Combiner Rule #246: sub_minus_one
4644 /* 2154 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4645 /* 2157 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4646 /* 2159 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
4647 /* 2161 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4648 /* 2164 */ GIR_EraseRootFromParent_Done,
4649 /* 2165 */ // Label 140: @2165
4650 /* 2165 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2226), // Rule ID 9 //
4651 /* 2170 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4652 /* 2173 */ // MIs[0] root
4653 /* 2173 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4654 /* 2177 */ // MIs[0] A
4655 /* 2177 */ // No operand predicates
4656 /* 2177 */ // MIs[0] sub1
4657 /* 2177 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4658 /* 2181 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4659 /* 2185 */ // MIs[1] B
4660 /* 2185 */ // No operand predicates
4661 /* 2185 */ // MIs[1] C
4662 /* 2185 */ // No operand predicates
4663 /* 2185 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4664 /* 2189 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4665 /* 2191 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4666 /* 2194 */ // Combiner Rule #9: AMinusBMinusC
4667 /* 2194 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4668 /* 2197 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4669 /* 2202 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
4670 /* 2206 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4671 /* 2210 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4672 /* 2214 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4673 /* 2218 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
4674 /* 2222 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4675 /* 2225 */ GIR_EraseRootFromParent_Done,
4676 /* 2226 */ // Label 141: @2226
4677 /* 2226 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2271), // Rule ID 0 //
4678 /* 2231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4679 /* 2234 */ // MIs[0] root
4680 /* 2234 */ // No operand predicates
4681 /* 2234 */ // MIs[0] add1
4682 /* 2234 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4683 /* 2238 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4684 /* 2242 */ // MIs[1] A
4685 /* 2242 */ // No operand predicates
4686 /* 2242 */ // MIs[1] sub1
4687 /* 2242 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4688 /* 2246 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4689 /* 2250 */ // MIs[2] B
4690 /* 2250 */ // No operand predicates
4691 /* 2250 */ // MIs[2] C
4692 /* 2250 */ // No operand predicates
4693 /* 2250 */ // MIs[0] B
4694 /* 2250 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4695 /* 2255 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4696 /* 2257 */ // Combiner Rule #0: APlusBMinusCMinusB
4697 /* 2257 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4698 /* 2260 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4699 /* 2262 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4700 /* 2266 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4701 /* 2270 */ GIR_EraseRootFromParent_Done,
4702 /* 2271 */ // Label 142: @2271
4703 /* 2271 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2308), // Rule ID 14 //
4704 /* 2276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4705 /* 2279 */ // MIs[0] root
4706 /* 2279 */ // No operand predicates
4707 /* 2279 */ // MIs[0] add
4708 /* 2279 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4709 /* 2283 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4710 /* 2287 */ // MIs[1] A
4711 /* 2287 */ // No operand predicates
4712 /* 2287 */ // MIs[1] c1
4713 /* 2287 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4714 /* 2291 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4715 /* 2295 */ // MIs[2] imm1
4716 /* 2295 */ // No operand predicates
4717 /* 2295 */ // MIs[0] c2
4718 /* 2295 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4719 /* 2299 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4720 /* 2303 */ // MIs[3] imm2
4721 /* 2303 */ // No operand predicates
4722 /* 2303 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4723 /* 2305 */ // Combiner Rule #14: APlusC1MinusC2
4724 /* 2305 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4725 /* 2308 */ // Label 143: @2308
4726 /* 2308 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2345), // Rule ID 17 //
4727 /* 2313 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4728 /* 2316 */ // MIs[0] root
4729 /* 2316 */ // No operand predicates
4730 /* 2316 */ // MIs[0] sub1
4731 /* 2316 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4732 /* 2320 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4733 /* 2324 */ // MIs[1] c1
4734 /* 2324 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4735 /* 2328 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4736 /* 2332 */ // MIs[2] imm1
4737 /* 2332 */ // No operand predicates
4738 /* 2332 */ // MIs[1] A
4739 /* 2332 */ // No operand predicates
4740 /* 2332 */ // MIs[0] c2
4741 /* 2332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4742 /* 2336 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4743 /* 2340 */ // MIs[3] imm2
4744 /* 2340 */ // No operand predicates
4745 /* 2340 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4746 /* 2342 */ // Combiner Rule #17: C1Minus2MinusC2
4747 /* 2342 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4748 /* 2345 */ // Label 144: @2345
4749 /* 2345 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2390), // Rule ID 1 //
4750 /* 2350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4751 /* 2353 */ // MIs[0] root
4752 /* 2353 */ // No operand predicates
4753 /* 2353 */ // MIs[0] sub2
4754 /* 2353 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4755 /* 2357 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4756 /* 2361 */ // MIs[1] A
4757 /* 2361 */ // No operand predicates
4758 /* 2361 */ // MIs[1] sub1
4759 /* 2361 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4760 /* 2365 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4761 /* 2369 */ // MIs[2] B
4762 /* 2369 */ // No operand predicates
4763 /* 2369 */ // MIs[2] C
4764 /* 2369 */ // No operand predicates
4765 /* 2369 */ // MIs[0] C
4766 /* 2369 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4767 /* 2374 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4768 /* 2376 */ // Combiner Rule #1: AMinusBMinusCMinusC
4769 /* 2376 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4770 /* 2379 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4771 /* 2381 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4772 /* 2385 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4773 /* 2389 */ GIR_EraseRootFromParent_Done,
4774 /* 2390 */ // Label 145: @2390
4775 /* 2390 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2427), // Rule ID 16 //
4776 /* 2395 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4777 /* 2398 */ // MIs[0] root
4778 /* 2398 */ // No operand predicates
4779 /* 2398 */ // MIs[0] sub1
4780 /* 2398 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4781 /* 2402 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4782 /* 2406 */ // MIs[1] A
4783 /* 2406 */ // No operand predicates
4784 /* 2406 */ // MIs[1] c1
4785 /* 2406 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4786 /* 2410 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4787 /* 2414 */ // MIs[2] imm1
4788 /* 2414 */ // No operand predicates
4789 /* 2414 */ // MIs[0] c2
4790 /* 2414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4791 /* 2418 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4792 /* 2422 */ // MIs[3] imm2
4793 /* 2422 */ // No operand predicates
4794 /* 2422 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4795 /* 2424 */ // Combiner Rule #16: AMinusC1MinusC2
4796 /* 2424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4797 /* 2427 */ // Label 146: @2427
4798 /* 2427 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2456), // Rule ID 408 //
4799 /* 2432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
4800 /* 2435 */ // MIs[0] dst
4801 /* 2435 */ // No operand predicates
4802 /* 2435 */ // MIs[0] ext1
4803 /* 2435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4804 /* 2439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4805 /* 2443 */ // MIs[1] src1
4806 /* 2443 */ // No operand predicates
4807 /* 2443 */ // MIs[0] ext2
4808 /* 2443 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4809 /* 2447 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4810 /* 2451 */ // MIs[2] src2
4811 /* 2451 */ // No operand predicates
4812 /* 2451 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4813 /* 2453 */ // Combiner Rule #254: push_sub_through_sext
4814 /* 2453 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
4815 /* 2456 */ // Label 147: @2456
4816 /* 2456 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2485), // Rule ID 405 //
4817 /* 2461 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
4818 /* 2464 */ // MIs[0] dst
4819 /* 2464 */ // No operand predicates
4820 /* 2464 */ // MIs[0] ext1
4821 /* 2464 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4822 /* 2468 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4823 /* 2472 */ // MIs[1] src1
4824 /* 2472 */ // No operand predicates
4825 /* 2472 */ // MIs[0] ext2
4826 /* 2472 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4827 /* 2476 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4828 /* 2480 */ // MIs[2] src2
4829 /* 2480 */ // No operand predicates
4830 /* 2480 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4831 /* 2482 */ // Combiner Rule #251: push_sub_through_zext
4832 /* 2482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
4833 /* 2485 */ // Label 148: @2485
4834 /* 2485 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2528), // Rule ID 169 //
4835 /* 2490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
4836 /* 2493 */ // MIs[0] dst
4837 /* 2493 */ // No operand predicates
4838 /* 2493 */ // MIs[0] Operand 1
4839 /* 2493 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4840 /* 2497 */ // MIs[0] and
4841 /* 2497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4842 /* 2501 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4843 /* 2505 */ // MIs[1] x
4844 /* 2505 */ // No operand predicates
4845 /* 2505 */ // MIs[1] Operand 2
4846 /* 2505 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4847 /* 2509 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
4848 /* 2513 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4849 /* 2515 */ // Combiner Rule #125: neg_and_one_to_sext_inreg
4850 /* 2515 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4851 /* 2518 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4852 /* 2520 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4853 /* 2524 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4854 /* 2527 */ GIR_EraseRootFromParent_Done,
4855 /* 2528 */ // Label 149: @2528
4856 /* 2528 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2565), // Rule ID 15 //
4857 /* 2533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4858 /* 2536 */ // MIs[0] root
4859 /* 2536 */ // No operand predicates
4860 /* 2536 */ // MIs[0] c2
4861 /* 2536 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4862 /* 2540 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4863 /* 2544 */ // MIs[1] imm2
4864 /* 2544 */ // No operand predicates
4865 /* 2544 */ // MIs[0] add
4866 /* 2544 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4867 /* 2548 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4868 /* 2552 */ // MIs[2] A
4869 /* 2552 */ // No operand predicates
4870 /* 2552 */ // MIs[2] c1
4871 /* 2552 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4872 /* 2556 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4873 /* 2560 */ // MIs[3] imm1
4874 /* 2560 */ // No operand predicates
4875 /* 2560 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4876 /* 2562 */ // Combiner Rule #15: C2MinusAPlusC1
4877 /* 2562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4878 /* 2565 */ // Label 150: @2565
4879 /* 2565 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2604), // Rule ID 122 //
4880 /* 2570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
4881 /* 2573 */ // MIs[0] dst
4882 /* 2573 */ // No operand predicates
4883 /* 2573 */ // MIs[0] x
4884 /* 2573 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
4885 /* 2577 */ // MIs[0] x
4886 /* 2577 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4887 /* 2582 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4888 /* 2585 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4889 /* 2595 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
4890 /* 2595 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4891 /* 2598 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4892 /* 2600 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4893 /* 2603 */ GIR_EraseRootFromParent_Done,
4894 /* 2604 */ // Label 151: @2604
4895 /* 2604 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2638), // Rule ID 12 //
4896 /* 2609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4897 /* 2612 */ // MIs[0] root
4898 /* 2612 */ // No operand predicates
4899 /* 2612 */ // MIs[0] A
4900 /* 2612 */ // No operand predicates
4901 /* 2612 */ // MIs[0] add
4902 /* 2612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4903 /* 2616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4904 /* 2620 */ // MIs[1] A
4905 /* 2620 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4906 /* 2625 */ // MIs[1] B
4907 /* 2625 */ // No operand predicates
4908 /* 2625 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
4909 /* 2630 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4910 /* 2632 */ // Combiner Rule #12: AMinusBMinusA
4911 /* 2632 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
4912 /* 2637 */ GIR_EraseRootFromParent_Done,
4913 /* 2638 */ // Label 152: @2638
4914 /* 2638 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2672), // Rule ID 11 //
4915 /* 2643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4916 /* 2646 */ // MIs[0] root
4917 /* 2646 */ // No operand predicates
4918 /* 2646 */ // MIs[0] A
4919 /* 2646 */ // No operand predicates
4920 /* 2646 */ // MIs[0] sub1
4921 /* 2646 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4922 /* 2650 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4923 /* 2654 */ // MIs[1] Operand 1
4924 /* 2654 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4925 /* 2658 */ // MIs[1] B
4926 /* 2658 */ // No operand predicates
4927 /* 2658 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4928 /* 2660 */ // Combiner Rule #11: AMinusZeroMinusB
4929 /* 2660 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4930 /* 2663 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4931 /* 2665 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4932 /* 2667 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4933 /* 2671 */ GIR_EraseRootFromParent_Done,
4934 /* 2672 */ // Label 153: @2672
4935 /* 2672 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2699), // Rule ID 48 //
4936 /* 2677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
4937 /* 2680 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4938 /* 2686 */ // MIs[0] root
4939 /* 2686 */ // No operand predicates
4940 /* 2686 */ // MIs[0] x
4941 /* 2686 */ // No operand predicates
4942 /* 2686 */ // MIs[0] right
4943 /* 2686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4944 /* 2690 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4945 /* 2694 */ // MIs[1] imm
4946 /* 2694 */ // No operand predicates
4947 /* 2694 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4948 /* 2696 */ // Combiner Rule #46: sub_of_vscale
4949 /* 2696 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4950 /* 2699 */ // Label 154: @2699
4951 /* 2699 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2722), // Rule ID 110 //
4952 /* 2704 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4953 /* 2707 */ // MIs[0] dst
4954 /* 2707 */ // No operand predicates
4955 /* 2707 */ // MIs[0] lhs
4956 /* 2707 */ // No operand predicates
4957 /* 2707 */ // MIs[0] Operand 2
4958 /* 2707 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4959 /* 2711 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4960 /* 2716 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
4961 /* 2716 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4962 /* 2721 */ GIR_EraseRootFromParent_Done,
4963 /* 2722 */ // Label 155: @2722
4964 /* 2722 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2743), // Rule ID 21 //
4965 /* 2727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
4966 /* 2730 */ // MIs[0] d
4967 /* 2730 */ // No operand predicates
4968 /* 2730 */ // MIs[0] op1
4969 /* 2730 */ // No operand predicates
4970 /* 2730 */ // MIs[0] c
4971 /* 2730 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4972 /* 2734 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4973 /* 2738 */ // MIs[1] imm
4974 /* 2738 */ // No operand predicates
4975 /* 2738 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4976 /* 2740 */ // Combiner Rule #21: sub_to_add
4977 /* 2740 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4978 /* 2743 */ // Label 156: @2743
4979 /* 2743 */ GIM_Reject,
4980 /* 2744 */ // Label 3: @2744
4981 /* 2744 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2755), // Rule ID 84 //
4982 /* 2749 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
4983 /* 2752 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_MUL'
4984 /* 2752 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4985 /* 2755 */ // Label 157: @2755
4986 /* 2755 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2766), // Rule ID 258 //
4987 /* 2760 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4988 /* 2763 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_MUL'
4989 /* 2763 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4990 /* 2766 */ // Label 158: @2766
4991 /* 2766 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2777), // Rule ID 334 //
4992 /* 2771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
4993 /* 2774 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4994 /* 2774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4995 /* 2777 */ // Label 159: @2777
4996 /* 2777 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2817), // Rule ID 23 //
4997 /* 2782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
4998 /* 2785 */ // MIs[0] dst
4999 /* 2785 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5000 /* 2789 */ // MIs[0] x
5001 /* 2789 */ // No operand predicates
5002 /* 2789 */ // MIs[0] Operand 2
5003 /* 2789 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5004 /* 2793 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5005 /* 2796 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5006 /* 2806 */ // Combiner Rule #23: mul_by_neg_one
5007 /* 2806 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5008 /* 2809 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5009 /* 2811 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5010 /* 2814 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5011 /* 2816 */ GIR_EraseRootFromParent_Done,
5012 /* 2817 */ // Label 160: @2817
5013 /* 2817 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2846), // Rule ID 410 //
5014 /* 2822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
5015 /* 2825 */ // MIs[0] dst
5016 /* 2825 */ // No operand predicates
5017 /* 2825 */ // MIs[0] ext1
5018 /* 2825 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5019 /* 2829 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5020 /* 2833 */ // MIs[1] src1
5021 /* 2833 */ // No operand predicates
5022 /* 2833 */ // MIs[0] ext2
5023 /* 2833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5024 /* 2837 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
5025 /* 2841 */ // MIs[2] src2
5026 /* 2841 */ // No operand predicates
5027 /* 2841 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5028 /* 2843 */ // Combiner Rule #256: push_mul_through_sext
5029 /* 2843 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
5030 /* 2846 */ // Label 161: @2846
5031 /* 2846 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2881), // Rule ID 46 //
5032 /* 2851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5033 /* 2854 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5034 /* 2860 */ // MIs[0] root
5035 /* 2860 */ // No operand predicates
5036 /* 2860 */ // MIs[0] left
5037 /* 2860 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5038 /* 2864 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5039 /* 2868 */ // MIs[1] scale
5040 /* 2868 */ // No operand predicates
5041 /* 2868 */ // MIs[0] x
5042 /* 2868 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5043 /* 2872 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5044 /* 2876 */ // MIs[2] imm1
5045 /* 2876 */ // No operand predicates
5046 /* 2876 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5047 /* 2878 */ // Combiner Rule #44: mul_of_vscale
5048 /* 2878 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
5049 /* 2881 */ // Label 162: @2881
5050 /* 2881 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2910), // Rule ID 407 //
5051 /* 2886 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
5052 /* 2889 */ // MIs[0] dst
5053 /* 2889 */ // No operand predicates
5054 /* 2889 */ // MIs[0] ext1
5055 /* 2889 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5056 /* 2893 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5057 /* 2897 */ // MIs[1] src1
5058 /* 2897 */ // No operand predicates
5059 /* 2897 */ // MIs[0] ext2
5060 /* 2897 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5061 /* 2901 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5062 /* 2905 */ // MIs[2] src2
5063 /* 2905 */ // No operand predicates
5064 /* 2905 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5065 /* 2907 */ // Combiner Rule #253: push_mul_through_zext
5066 /* 2907 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner161),
5067 /* 2910 */ // Label 163: @2910
5068 /* 2910 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2950), // Rule ID 131 //
5069 /* 2915 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5070 /* 2918 */ // MIs[0] dst
5071 /* 2918 */ // No operand predicates
5072 /* 2918 */ // MIs[0] zero
5073 /* 2918 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5074 /* 2922 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5075 /* 2926 */ // MIs[1] Operand 1
5076 /* 2926 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5077 /* 2937 */ // MIs[0] rhs
5078 /* 2937 */ // No operand predicates
5079 /* 2937 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5080 /* 2942 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5081 /* 2944 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5082 /* 2944 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5083 /* 2949 */ GIR_EraseRootFromParent_Done,
5084 /* 2950 */ // Label 164: @2950
5085 /* 2950 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2973), // Rule ID 132 //
5086 /* 2955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5087 /* 2958 */ // MIs[0] dst
5088 /* 2958 */ // No operand predicates
5089 /* 2958 */ // MIs[0] lhs
5090 /* 2958 */ // No operand predicates
5091 /* 2958 */ // MIs[0] zero
5092 /* 2958 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5093 /* 2962 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5094 /* 2967 */ // Combiner Rule #94: binop_right_to_zero
5095 /* 2967 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5096 /* 2972 */ GIR_EraseRootFromParent_Done,
5097 /* 2973 */ // Label 165: @2973
5098 /* 2973 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2996), // Rule ID 137 //
5099 /* 2978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5100 /* 2981 */ // MIs[0] dst
5101 /* 2981 */ // No operand predicates
5102 /* 2981 */ // MIs[0] x
5103 /* 2981 */ // No operand predicates
5104 /* 2981 */ // MIs[0] Operand 2
5105 /* 2981 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5106 /* 2985 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5107 /* 2990 */ // Combiner Rule #99: right_identity_one_int
5108 /* 2990 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5109 /* 2995 */ GIR_EraseRootFromParent_Done,
5110 /* 2996 */ // Label 166: @2996
5111 /* 2996 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(3007), // Rule ID 20 //
5112 /* 3001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5113 /* 3004 */ // MIs[0] d
5114 /* 3004 */ // No operand predicates
5115 /* 3004 */ // MIs[0] op1
5116 /* 3004 */ // No operand predicates
5117 /* 3004 */ // MIs[0] op2
5118 /* 3004 */ // No operand predicates
5119 /* 3004 */ // Combiner Rule #20: mul_to_shl
5120 /* 3004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5121 /* 3007 */ // Label 167: @3007
5122 /* 3007 */ GIM_Reject,
5123 /* 3008 */ // Label 4: @3008
5124 /* 3008 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(3019), // Rule ID 229 //
5125 /* 3013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5126 /* 3016 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5127 /* 3016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5128 /* 3019 */ // Label 168: @3019
5129 /* 3019 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3030), // Rule ID 264 //
5130 /* 3024 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5131 /* 3027 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SDIV'
5132 /* 3027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5133 /* 3030 */ // Label 169: @3030
5134 /* 3030 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3041), // Rule ID 303 //
5135 /* 3035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5136 /* 3038 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5137 /* 3038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5138 /* 3041 */ // Label 170: @3041
5139 /* 3041 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3081), // Rule ID 127 //
5140 /* 3046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5141 /* 3049 */ // MIs[0] dst
5142 /* 3049 */ // No operand predicates
5143 /* 3049 */ // MIs[0] zero
5144 /* 3049 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5145 /* 3053 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5146 /* 3057 */ // MIs[1] Operand 1
5147 /* 3057 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5148 /* 3068 */ // MIs[0] rhs
5149 /* 3068 */ // No operand predicates
5150 /* 3068 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5151 /* 3073 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5152 /* 3075 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5153 /* 3075 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5154 /* 3080 */ GIR_EraseRootFromParent_Done,
5155 /* 3081 */ // Label 171: @3081
5156 /* 3081 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3098), // Rule ID 326 //
5157 /* 3086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5158 /* 3089 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5159 /* 3095 */ // MIs[0] dst
5160 /* 3095 */ // No operand predicates
5161 /* 3095 */ // MIs[0] x
5162 /* 3095 */ // No operand predicates
5163 /* 3095 */ // MIs[0] y
5164 /* 3095 */ // No operand predicates
5165 /* 3095 */ // Combiner Rule #204: sdiv_by_pow2
5166 /* 3095 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5167 /* 3098 */ // Label 172: @3098
5168 /* 3098 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3109), // Rule ID 328 //
5169 /* 3103 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5170 /* 3106 */ // MIs[0] dst
5171 /* 3106 */ // No operand predicates
5172 /* 3106 */ // MIs[0] x
5173 /* 3106 */ // No operand predicates
5174 /* 3106 */ // MIs[0] y
5175 /* 3106 */ // No operand predicates
5176 /* 3106 */ // Combiner Rule #206: sdiv_by_const
5177 /* 3106 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5178 /* 3109 */ // Label 173: @3109
5179 /* 3109 */ GIM_Reject,
5180 /* 3110 */ // Label 5: @3110
5181 /* 3110 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3121), // Rule ID 87 //
5182 /* 3115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5183 /* 3118 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5184 /* 3118 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5185 /* 3121 */ // Label 174: @3121
5186 /* 3121 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3132), // Rule ID 230 //
5187 /* 3126 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5188 /* 3129 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5189 /* 3129 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5190 /* 3132 */ // Label 175: @3132
5191 /* 3132 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3143), // Rule ID 263 //
5192 /* 3137 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5193 /* 3140 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UDIV'
5194 /* 3140 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5195 /* 3143 */ // Label 176: @3143
5196 /* 3143 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3154), // Rule ID 305 //
5197 /* 3148 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5198 /* 3151 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5199 /* 3151 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5200 /* 3154 */ // Label 177: @3154
5201 /* 3154 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3194), // Rule ID 128 //
5202 /* 3159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5203 /* 3162 */ // MIs[0] dst
5204 /* 3162 */ // No operand predicates
5205 /* 3162 */ // MIs[0] zero
5206 /* 3162 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5207 /* 3166 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5208 /* 3170 */ // MIs[1] Operand 1
5209 /* 3170 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5210 /* 3181 */ // MIs[0] rhs
5211 /* 3181 */ // No operand predicates
5212 /* 3181 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5213 /* 3186 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5214 /* 3188 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5215 /* 3188 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5216 /* 3193 */ GIR_EraseRootFromParent_Done,
5217 /* 3194 */ // Label 178: @3194
5218 /* 3194 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3211), // Rule ID 325 //
5219 /* 3199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
5220 /* 3202 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5221 /* 3208 */ // MIs[0] dst
5222 /* 3208 */ // No operand predicates
5223 /* 3208 */ // MIs[0] x
5224 /* 3208 */ // No operand predicates
5225 /* 3208 */ // MIs[0] y
5226 /* 3208 */ // No operand predicates
5227 /* 3208 */ // Combiner Rule #203: udiv_by_pow2
5228 /* 3208 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5229 /* 3211 */ // Label 179: @3211
5230 /* 3211 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3222), // Rule ID 327 //
5231 /* 3216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
5232 /* 3219 */ // MIs[0] dst
5233 /* 3219 */ // No operand predicates
5234 /* 3219 */ // MIs[0] x
5235 /* 3219 */ // No operand predicates
5236 /* 3219 */ // MIs[0] y
5237 /* 3219 */ // No operand predicates
5238 /* 3219 */ // Combiner Rule #205: udiv_by_const
5239 /* 3219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5240 /* 3222 */ // Label 180: @3222
5241 /* 3222 */ GIM_Reject,
5242 /* 3223 */ // Label 6: @3223
5243 /* 3223 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3234), // Rule ID 231 //
5244 /* 3228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5245 /* 3231 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5246 /* 3231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5247 /* 3234 */ // Label 181: @3234
5248 /* 3234 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3245), // Rule ID 266 //
5249 /* 3239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5250 /* 3242 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SREM'
5251 /* 3242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5252 /* 3245 */ // Label 182: @3245
5253 /* 3245 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3256), // Rule ID 304 //
5254 /* 3250 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5255 /* 3253 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SREM'
5256 /* 3253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5257 /* 3256 */ // Label 183: @3256
5258 /* 3256 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3296), // Rule ID 129 //
5259 /* 3261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5260 /* 3264 */ // MIs[0] dst
5261 /* 3264 */ // No operand predicates
5262 /* 3264 */ // MIs[0] zero
5263 /* 3264 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5264 /* 3268 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5265 /* 3272 */ // MIs[1] Operand 1
5266 /* 3272 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5267 /* 3283 */ // MIs[0] rhs
5268 /* 3283 */ // No operand predicates
5269 /* 3283 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5270 /* 3288 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5271 /* 3290 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5272 /* 3290 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5273 /* 3295 */ GIR_EraseRootFromParent_Done,
5274 /* 3296 */ // Label 184: @3296
5275 /* 3296 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3307), // Rule ID 324 //
5276 /* 3301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
5277 /* 3304 */ // MIs[0] dst
5278 /* 3304 */ // No operand predicates
5279 /* 3304 */ // MIs[0] x
5280 /* 3304 */ // No operand predicates
5281 /* 3304 */ // MIs[0] y
5282 /* 3304 */ // No operand predicates
5283 /* 3304 */ // Combiner Rule #202: srem_by_const
5284 /* 3304 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5285 /* 3307 */ // Label 185: @3307
5286 /* 3307 */ GIM_Reject,
5287 /* 3308 */ // Label 7: @3308
5288 /* 3308 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3319), // Rule ID 88 //
5289 /* 3313 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5290 /* 3316 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5291 /* 3316 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5292 /* 3319 */ // Label 186: @3319
5293 /* 3319 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3330), // Rule ID 180 //
5294 /* 3324 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
5295 /* 3327 */ // Combiner Rule #136: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
5296 /* 3327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5297 /* 3330 */ // Label 187: @3330
5298 /* 3330 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3341), // Rule ID 232 //
5299 /* 3335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5300 /* 3338 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5301 /* 3338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5302 /* 3341 */ // Label 188: @3341
5303 /* 3341 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3352), // Rule ID 265 //
5304 /* 3346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5305 /* 3349 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UREM'
5306 /* 3349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5307 /* 3352 */ // Label 189: @3352
5308 /* 3352 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3363), // Rule ID 306 //
5309 /* 3357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5310 /* 3360 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UREM'
5311 /* 3360 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5312 /* 3363 */ // Label 190: @3363
5313 /* 3363 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3403), // Rule ID 130 //
5314 /* 3368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5315 /* 3371 */ // MIs[0] dst
5316 /* 3371 */ // No operand predicates
5317 /* 3371 */ // MIs[0] zero
5318 /* 3371 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5319 /* 3375 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5320 /* 3379 */ // MIs[1] Operand 1
5321 /* 3379 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5322 /* 3390 */ // MIs[0] rhs
5323 /* 3390 */ // No operand predicates
5324 /* 3390 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5325 /* 3395 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5326 /* 3397 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5327 /* 3397 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5328 /* 3402 */ GIR_EraseRootFromParent_Done,
5329 /* 3403 */ // Label 191: @3403
5330 /* 3403 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3414), // Rule ID 323 //
5331 /* 3408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
5332 /* 3411 */ // MIs[0] dst
5333 /* 3411 */ // No operand predicates
5334 /* 3411 */ // MIs[0] x
5335 /* 3411 */ // No operand predicates
5336 /* 3411 */ // MIs[0] y
5337 /* 3411 */ // No operand predicates
5338 /* 3411 */ // Combiner Rule #201: urem_by_const
5339 /* 3411 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5340 /* 3414 */ // Label 192: @3414
5341 /* 3414 */ GIM_Reject,
5342 /* 3415 */ // Label 8: @3415
5343 /* 3415 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3426), // Rule ID 79 //
5344 /* 3420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5345 /* 3423 */ // Combiner Rule #75: load_and_mask; wip_match_opcode 'G_AND'
5346 /* 3423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5347 /* 3426 */ // Label 193: @3426
5348 /* 3426 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3437), // Rule ID 83 //
5349 /* 3431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5350 /* 3434 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_AND'
5351 /* 3434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5352 /* 3437 */ // Label 194: @3437
5353 /* 3437 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3448), // Rule ID 152 //
5354 /* 3442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5355 /* 3445 */ // Combiner Rule #112: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5356 /* 3445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5357 /* 3448 */ // Label 195: @3448
5358 /* 3448 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3459), // Rule ID 172 //
5359 /* 3453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
5360 /* 3456 */ // Combiner Rule #128: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5361 /* 3456 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5362 /* 3459 */ // Label 196: @3459
5363 /* 3459 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3470), // Rule ID 177 //
5364 /* 3464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
5365 /* 3467 */ // Combiner Rule #133: redundant_and; wip_match_opcode 'G_AND'
5366 /* 3467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
5367 /* 3470 */ // Label 197: @3470
5368 /* 3470 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3481), // Rule ID 202 //
5369 /* 3475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
5370 /* 3478 */ // Combiner Rule #158: overlapping_and; wip_match_opcode 'G_AND'
5371 /* 3478 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
5372 /* 3481 */ // Label 198: @3481
5373 /* 3481 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3492), // Rule ID 255 //
5374 /* 3486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5375 /* 3489 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_AND'
5376 /* 3489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5377 /* 3492 */ // Label 199: @3492
5378 /* 3492 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3503), // Rule ID 288 //
5379 /* 3497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5380 /* 3500 */ // Combiner Rule #191: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5381 /* 3500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5382 /* 3503 */ // Label 200: @3503
5383 /* 3503 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3514), // Rule ID 300 //
5384 /* 3508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5385 /* 3511 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_AND'
5386 /* 3511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5387 /* 3514 */ // Label 201: @3514
5388 /* 3514 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3525), // Rule ID 335 //
5389 /* 3519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5390 /* 3522 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5391 /* 3522 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5392 /* 3525 */ // Label 202: @3525
5393 /* 3525 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3536), // Rule ID 362 //
5394 /* 3530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5395 /* 3533 */ // Combiner Rule #213: match_ands; wip_match_opcode 'G_AND'
5396 /* 3533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5397 /* 3536 */ // Label 203: @3536
5398 /* 3536 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3547), // Rule ID 397 //
5399 /* 3541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5400 /* 3544 */ // Combiner Rule #245: binop_with_neg; wip_match_opcode 'G_AND'
5401 /* 3544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
5402 /* 3547 */ // Label 204: @3547
5403 /* 3547 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3645), // Rule ID 165 //
5404 /* 3552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
5405 /* 3555 */ // MIs[0] root
5406 /* 3555 */ // No operand predicates
5407 /* 3555 */ // MIs[0] d1
5408 /* 3555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5409 /* 3559 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5410 /* 3563 */ // MIs[1] p
5411 /* 3563 */ // No operand predicates
5412 /* 3563 */ // MIs[1] s1
5413 /* 3563 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5414 /* 3567 */ // MIs[1] Operand 3
5415 /* 3567 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5416 /* 3571 */ // MIs[0] d2
5417 /* 3571 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5418 /* 3575 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5419 /* 3579 */ // MIs[2] p
5420 /* 3579 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5421 /* 3584 */ // MIs[2] s2
5422 /* 3584 */ // No operand predicates
5423 /* 3584 */ // MIs[2] Operand 3
5424 /* 3584 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5425 /* 3588 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
5426 /* 3592 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5427 /* 3594 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5428 /* 3597 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5429 /* 3607 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5430 /* 3610 */ // Combiner Rule #121: double_icmp_zero_and_combine
5431 /* 3610 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5432 /* 3613 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5433 /* 3618 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5434 /* 3622 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5435 /* 3626 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5436 /* 3630 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5437 /* 3634 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5438 /* 3638 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5439 /* 3641 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5440 /* 3644 */ GIR_EraseRootFromParent_Done,
5441 /* 3645 */ // Label 205: @3645
5442 /* 3645 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3682), // Rule ID 248 //
5443 /* 3650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5444 /* 3653 */ // MIs[0] root
5445 /* 3653 */ // No operand predicates
5446 /* 3653 */ // MIs[0] shift
5447 /* 3653 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5448 /* 3657 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5449 /* 3661 */ // MIs[1] x
5450 /* 3661 */ // No operand predicates
5451 /* 3661 */ // MIs[1] lsb
5452 /* 3661 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5453 /* 3665 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5454 /* 3669 */ // MIs[2] imm1
5455 /* 3669 */ // No operand predicates
5456 /* 3669 */ // MIs[0] mask
5457 /* 3669 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5458 /* 3673 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5459 /* 3677 */ // MIs[3] imm2
5460 /* 3677 */ // No operand predicates
5461 /* 3677 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5462 /* 3679 */ // Combiner Rule #181: bitfield_extract_from_and
5463 /* 3679 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5464 /* 3682 */ // Label 206: @3682
5465 /* 3682 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3706), // Rule ID 120 //
5466 /* 3687 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5467 /* 3690 */ // MIs[0] dst
5468 /* 3690 */ // No operand predicates
5469 /* 3690 */ // MIs[0] src
5470 /* 3690 */ // No operand predicates
5471 /* 3690 */ // MIs[0] src
5472 /* 3690 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5473 /* 3695 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5474 /* 3700 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
5475 /* 3700 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5476 /* 3705 */ GIR_EraseRootFromParent_Done,
5477 /* 3706 */ // Label 207: @3706
5478 /* 3706 */ GIM_Reject,
5479 /* 3707 */ // Label 9: @3707
5480 /* 3707 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3718), // Rule ID 85 //
5481 /* 3712 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5482 /* 3715 */ // Combiner Rule #79: undef_to_negative_one; wip_match_opcode 'G_OR'
5483 /* 3715 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5484 /* 3718 */ // Label 208: @3718
5485 /* 3718 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3729), // Rule ID 153 //
5486 /* 3723 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5487 /* 3726 */ // Combiner Rule #112: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5488 /* 3726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5489 /* 3729 */ // Label 209: @3729
5490 /* 3729 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3740), // Rule ID 179 //
5491 /* 3734 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
5492 /* 3737 */ // Combiner Rule #135: redundant_or; wip_match_opcode 'G_OR'
5493 /* 3737 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5494 /* 3740 */ // Label 210: @3740
5495 /* 3740 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3751), // Rule ID 228 //
5496 /* 3745 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
5497 /* 3748 */ // Combiner Rule #168: load_or_combine; wip_match_opcode 'G_OR'
5498 /* 3748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5499 /* 3751 */ // Label 211: @3751
5500 /* 3751 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3762), // Rule ID 233 //
5501 /* 3756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5502 /* 3759 */ // Combiner Rule #170: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5503 /* 3759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5504 /* 3762 */ // Label 212: @3762
5505 /* 3762 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3773), // Rule ID 259 //
5506 /* 3767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5507 /* 3770 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_OR'
5508 /* 3770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5509 /* 3773 */ // Label 213: @3773
5510 /* 3773 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3784), // Rule ID 301 //
5511 /* 3778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5512 /* 3781 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_OR'
5513 /* 3781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5514 /* 3784 */ // Label 214: @3784
5515 /* 3784 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3795), // Rule ID 336 //
5516 /* 3789 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5517 /* 3792 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5518 /* 3792 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5519 /* 3795 */ // Label 215: @3795
5520 /* 3795 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3806), // Rule ID 363 //
5521 /* 3800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
5522 /* 3803 */ // Combiner Rule #214: match_ors; wip_match_opcode 'G_OR'
5523 /* 3803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5524 /* 3806 */ // Label 216: @3806
5525 /* 3806 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3817), // Rule ID 398 //
5526 /* 3811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5527 /* 3814 */ // Combiner Rule #245: binop_with_neg; wip_match_opcode 'G_OR'
5528 /* 3814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
5529 /* 3817 */ // Label 217: @3817
5530 /* 3817 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3864), // Rule ID 240 //
5531 /* 3822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
5532 /* 3825 */ // MIs[0] root
5533 /* 3825 */ // No operand predicates
5534 /* 3825 */ // MIs[0] out1
5535 /* 3825 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5536 /* 3829 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5537 /* 3833 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5538 /* 3833 */ // No operand predicates
5539 /* 3833 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5540 /* 3833 */ // No operand predicates
5541 /* 3833 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5542 /* 3833 */ // No operand predicates
5543 /* 3833 */ // MIs[0] out2
5544 /* 3833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5545 /* 3837 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5546 /* 3841 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5547 /* 3841 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5548 /* 3846 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5549 /* 3846 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5550 /* 3851 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5551 /* 3856 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5552 /* 3858 */ // Combiner Rule #175: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5553 /* 3858 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5554 /* 3863 */ GIR_EraseRootFromParent_Done,
5555 /* 3864 */ // Label 218: @3864
5556 /* 3864 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3911), // Rule ID 242 //
5557 /* 3869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5558 /* 3872 */ // MIs[0] root
5559 /* 3872 */ // No operand predicates
5560 /* 3872 */ // MIs[0] out1
5561 /* 3872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5562 /* 3876 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5563 /* 3880 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5564 /* 3880 */ // No operand predicates
5565 /* 3880 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5566 /* 3880 */ // No operand predicates
5567 /* 3880 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5568 /* 3880 */ // No operand predicates
5569 /* 3880 */ // MIs[0] out2
5570 /* 3880 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5571 /* 3884 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5572 /* 3888 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5573 /* 3888 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5574 /* 3893 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5575 /* 3893 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5576 /* 3898 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5577 /* 3903 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5578 /* 3905 */ // Combiner Rule #176: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5579 /* 3905 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5580 /* 3910 */ GIR_EraseRootFromParent_Done,
5581 /* 3911 */ // Label 219: @3911
5582 /* 3911 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4009), // Rule ID 166 //
5583 /* 3916 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
5584 /* 3919 */ // MIs[0] root
5585 /* 3919 */ // No operand predicates
5586 /* 3919 */ // MIs[0] d1
5587 /* 3919 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5588 /* 3923 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5589 /* 3927 */ // MIs[1] p
5590 /* 3927 */ // No operand predicates
5591 /* 3927 */ // MIs[1] s1
5592 /* 3927 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5593 /* 3931 */ // MIs[1] Operand 3
5594 /* 3931 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5595 /* 3935 */ // MIs[0] d2
5596 /* 3935 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5597 /* 3939 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5598 /* 3943 */ // MIs[2] p
5599 /* 3943 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5600 /* 3948 */ // MIs[2] s2
5601 /* 3948 */ // No operand predicates
5602 /* 3948 */ // MIs[2] Operand 3
5603 /* 3948 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5604 /* 3952 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
5605 /* 3956 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5606 /* 3958 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5607 /* 3961 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5608 /* 3971 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5609 /* 3974 */ // Combiner Rule #122: double_icmp_zero_or_combine
5610 /* 3974 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5611 /* 3977 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5612 /* 3982 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5613 /* 3986 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5614 /* 3990 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5615 /* 3994 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5616 /* 3998 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5617 /* 4002 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5618 /* 4005 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5619 /* 4008 */ GIR_EraseRootFromParent_Done,
5620 /* 4009 */ // Label 220: @4009
5621 /* 4009 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4056), // Rule ID 243 //
5622 /* 4014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5623 /* 4017 */ // MIs[0] root
5624 /* 4017 */ // No operand predicates
5625 /* 4017 */ // MIs[0] out2
5626 /* 4017 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5627 /* 4021 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5628 /* 4025 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5629 /* 4025 */ // No operand predicates
5630 /* 4025 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5631 /* 4025 */ // No operand predicates
5632 /* 4025 */ // MIs[0] out1
5633 /* 4025 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5634 /* 4029 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5635 /* 4033 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5636 /* 4033 */ // No operand predicates
5637 /* 4033 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5638 /* 4033 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5639 /* 4038 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5640 /* 4038 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5641 /* 4043 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5642 /* 4048 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5643 /* 4050 */ // Combiner Rule #176: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5644 /* 4050 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5645 /* 4055 */ GIR_EraseRootFromParent_Done,
5646 /* 4056 */ // Label 221: @4056
5647 /* 4056 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4103), // Rule ID 241 //
5648 /* 4061 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
5649 /* 4064 */ // MIs[0] root
5650 /* 4064 */ // No operand predicates
5651 /* 4064 */ // MIs[0] out2
5652 /* 4064 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5653 /* 4068 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5654 /* 4072 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5655 /* 4072 */ // No operand predicates
5656 /* 4072 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5657 /* 4072 */ // No operand predicates
5658 /* 4072 */ // MIs[0] out1
5659 /* 4072 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5660 /* 4076 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5661 /* 4080 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5662 /* 4080 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5663 /* 4085 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5664 /* 4085 */ // No operand predicates
5665 /* 4085 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5666 /* 4085 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5667 /* 4090 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5668 /* 4095 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5669 /* 4097 */ // Combiner Rule #175: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5670 /* 4097 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5671 /* 4102 */ GIR_EraseRootFromParent_Done,
5672 /* 4103 */ // Label 222: @4103
5673 /* 4103 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4127), // Rule ID 121 //
5674 /* 4108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5675 /* 4111 */ // MIs[0] dst
5676 /* 4111 */ // No operand predicates
5677 /* 4111 */ // MIs[0] src
5678 /* 4111 */ // No operand predicates
5679 /* 4111 */ // MIs[0] src
5680 /* 4111 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5681 /* 4116 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5682 /* 4121 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
5683 /* 4121 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5684 /* 4126 */ GIR_EraseRootFromParent_Done,
5685 /* 4127 */ // Label 223: @4127
5686 /* 4127 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4150), // Rule ID 112 //
5687 /* 4132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5688 /* 4135 */ // MIs[0] dst
5689 /* 4135 */ // No operand predicates
5690 /* 4135 */ // MIs[0] lhs
5691 /* 4135 */ // No operand predicates
5692 /* 4135 */ // MIs[0] Operand 2
5693 /* 4135 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5694 /* 4139 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5695 /* 4144 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
5696 /* 4144 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5697 /* 4149 */ GIR_EraseRootFromParent_Done,
5698 /* 4150 */ // Label 224: @4150
5699 /* 4150 */ GIM_Reject,
5700 /* 4151 */ // Label 10: @4151
5701 /* 4151 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4162), // Rule ID 102 //
5702 /* 4156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5703 /* 4159 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5704 /* 4159 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5705 /* 4162 */ // Label 225: @4162
5706 /* 4162 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4173), // Rule ID 154 //
5707 /* 4167 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5708 /* 4170 */ // Combiner Rule #112: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5709 /* 4170 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5710 /* 4173 */ // Label 226: @4173
5711 /* 4173 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4184), // Rule ID 184 //
5712 /* 4178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
5713 /* 4181 */ // Combiner Rule #140: not_cmp_fold; wip_match_opcode 'G_XOR'
5714 /* 4181 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5715 /* 4184 */ // Label 227: @4184
5716 /* 4184 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4195), // Rule ID 216 //
5717 /* 4189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
5718 /* 4192 */ // Combiner Rule #164: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5719 /* 4192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5720 /* 4195 */ // Label 228: @4195
5721 /* 4195 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4206), // Rule ID 262 //
5722 /* 4200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5723 /* 4203 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_XOR'
5724 /* 4203 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5725 /* 4206 */ // Label 229: @4206
5726 /* 4206 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4217), // Rule ID 302 //
5727 /* 4211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5728 /* 4214 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_XOR'
5729 /* 4214 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5730 /* 4217 */ // Label 230: @4217
5731 /* 4217 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4228), // Rule ID 337 //
5732 /* 4222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5733 /* 4225 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5734 /* 4225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5735 /* 4228 */ // Label 231: @4228
5736 /* 4228 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4239), // Rule ID 399 //
5737 /* 4233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5738 /* 4236 */ // Combiner Rule #245: binop_with_neg; wip_match_opcode 'G_XOR'
5739 /* 4236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
5740 /* 4239 */ // Label 232: @4239
5741 /* 4239 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4299), // Rule ID 13 //
5742 /* 4244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
5743 /* 4247 */ // MIs[0] root
5744 /* 4247 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5745 /* 4251 */ // MIs[0] add
5746 /* 4251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5747 /* 4255 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5748 /* 4259 */ // MIs[1] A
5749 /* 4259 */ // No operand predicates
5750 /* 4259 */ // MIs[1] Operand 2
5751 /* 4259 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
5752 /* 4263 */ // MIs[0] Operand 2
5753 /* 4263 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5754 /* 4267 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5755 /* 4271 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5756 /* 4273 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5757 /* 4276 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5758 /* 4286 */ // Combiner Rule #13: NotAPlusNegOne
5759 /* 4286 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5760 /* 4289 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5761 /* 4291 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5762 /* 4294 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5763 /* 4298 */ GIR_EraseRootFromParent_Done,
5764 /* 4299 */ // Label 233: @4299
5765 /* 4299 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4338), // Rule ID 123 //
5766 /* 4304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5767 /* 4307 */ // MIs[0] dst
5768 /* 4307 */ // No operand predicates
5769 /* 4307 */ // MIs[0] x
5770 /* 4307 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5771 /* 4311 */ // MIs[0] x
5772 /* 4311 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5773 /* 4316 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5774 /* 4319 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5775 /* 4329 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
5776 /* 4329 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5777 /* 4332 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5778 /* 4334 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5779 /* 4337 */ GIR_EraseRootFromParent_Done,
5780 /* 4338 */ // Label 234: @4338
5781 /* 4338 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4361), // Rule ID 113 //
5782 /* 4343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5783 /* 4346 */ // MIs[0] dst
5784 /* 4346 */ // No operand predicates
5785 /* 4346 */ // MIs[0] lhs
5786 /* 4346 */ // No operand predicates
5787 /* 4346 */ // MIs[0] Operand 2
5788 /* 4346 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5789 /* 4350 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5790 /* 4355 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
5791 /* 4355 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5792 /* 4360 */ GIR_EraseRootFromParent_Done,
5793 /* 4361 */ // Label 235: @4361
5794 /* 4361 */ GIM_Reject,
5795 /* 4362 */ // Label 11: @4362
5796 /* 4362 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4373), // Rule ID 150 //
5797 /* 4367 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
5798 /* 4370 */ // Combiner Rule #110: extend_through_phis; wip_match_opcode 'G_PHI'
5799 /* 4370 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5800 /* 4373 */ // Label 236: @4373
5801 /* 4373 */ GIM_Reject,
5802 /* 4374 */ // Label 12: @4374
5803 /* 4374 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4385), // Rule ID 402 //
5804 /* 4379 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
5805 /* 4382 */ // Combiner Rule #248: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE'
5806 /* 4382 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
5807 /* 4385 */ // Label 237: @4385
5808 /* 4385 */ GIM_Reject,
5809 /* 4386 */ // Label 13: @4386
5810 /* 4386 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4397), // Rule ID 373 //
5811 /* 4391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5812 /* 4394 */ // Combiner Rule #224: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5813 /* 4394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5814 /* 4397 */ // Label 238: @4397
5815 /* 4397 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4408), // Rule ID 374 //
5816 /* 4402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5817 /* 4405 */ // Combiner Rule #225: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5818 /* 4405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5819 /* 4408 */ // Label 239: @4408
5820 /* 4408 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4419), // Rule ID 376 //
5821 /* 4413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5822 /* 4416 */ // Combiner Rule #227: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5823 /* 4416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5824 /* 4419 */ // Label 240: @4419
5825 /* 4419 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4430), // Rule ID 377 //
5826 /* 4424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5827 /* 4427 */ // Combiner Rule #228: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5828 /* 4427 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5829 /* 4430 */ // Label 241: @4430
5830 /* 4430 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4441), // Rule ID 378 //
5831 /* 4435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
5832 /* 4438 */ // Combiner Rule #229: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5833 /* 4438 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5834 /* 4441 */ // Label 242: @4441
5835 /* 4441 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4452), // Rule ID 379 //
5836 /* 4446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5837 /* 4449 */ // Combiner Rule #230: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5838 /* 4449 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5839 /* 4452 */ // Label 243: @4452
5840 /* 4452 */ GIM_Reject,
5841 /* 4453 */ // Label 14: @4453
5842 /* 4453 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4467), // Rule ID 375 //
5843 /* 4458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5844 /* 4461 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5845 /* 4464 */ // MIs[0] dst
5846 /* 4464 */ // No operand predicates
5847 /* 4464 */ // MIs[0] merge_srcs
5848 /* 4464 */ // No operand predicates
5849 /* 4464 */ // Combiner Rule #226: merge_unmerge
5850 /* 4464 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5851 /* 4467 */ // Label 244: @4467
5852 /* 4467 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4529),
5853 /* 4472 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5854 /* 4475 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4496), // Rule ID 380 //
5855 /* 4480 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
5856 /* 4483 */ // MIs[0] root
5857 /* 4483 */ // No operand predicates
5858 /* 4483 */ // MIs[0] x
5859 /* 4483 */ // No operand predicates
5860 /* 4483 */ // MIs[0] undef
5861 /* 4483 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5862 /* 4487 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5863 /* 4491 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5864 /* 4493 */ // Combiner Rule #231: merge_of_x_and_undef
5865 /* 4493 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5866 /* 4496 */ // Label 246: @4496
5867 /* 4496 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4528), // Rule ID 381 //
5868 /* 4501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
5869 /* 4504 */ // MIs[0] root
5870 /* 4504 */ // No operand predicates
5871 /* 4504 */ // MIs[0] x
5872 /* 4504 */ // No operand predicates
5873 /* 4504 */ // MIs[0] zero
5874 /* 4504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5875 /* 4508 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5876 /* 4512 */ // MIs[1] Operand 1
5877 /* 4512 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5878 /* 4523 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5879 /* 4525 */ // Combiner Rule #232: merge_of_x_and_zero
5880 /* 4525 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5881 /* 4528 */ // Label 247: @4528
5882 /* 4528 */ GIM_Reject,
5883 /* 4529 */ // Label 245: @4529
5884 /* 4529 */ GIM_Reject,
5885 /* 4530 */ // Label 15: @4530
5886 /* 4530 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4541), // Rule ID 75 //
5887 /* 4535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
5888 /* 4538 */ // Combiner Rule #73: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5889 /* 4538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5890 /* 4541 */ // Label 248: @4541
5891 /* 4541 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4552), // Rule ID 104 //
5892 /* 4546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
5893 /* 4549 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5894 /* 4549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5895 /* 4552 */ // Label 249: @4552
5896 /* 4552 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4563), // Rule ID 142 //
5897 /* 4557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5898 /* 4560 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5899 /* 4560 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5900 /* 4563 */ // Label 250: @4563
5901 /* 4563 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4594),
5902 /* 4568 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5903 /* 4571 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4582), // Rule ID 372 //
5904 /* 4576 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5905 /* 4579 */ // MIs[0] dst
5906 /* 4579 */ // No operand predicates
5907 /* 4579 */ // MIs[0] unused
5908 /* 4579 */ // No operand predicates
5909 /* 4579 */ // Combiner Rule #223: combine_use_vector_truncate
5910 /* 4579 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5911 /* 4582 */ // Label 252: @4582
5912 /* 4582 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4593), // Rule ID 382 //
5913 /* 4587 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
5914 /* 4590 */ // MIs[0] dst
5915 /* 4590 */ // No operand predicates
5916 /* 4590 */ // MIs[0] unused
5917 /* 4590 */ // No operand predicates
5918 /* 4590 */ // Combiner Rule #233: combine_build_unmerge
5919 /* 4590 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5920 /* 4593 */ // Label 253: @4593
5921 /* 4593 */ GIM_Reject,
5922 /* 4594 */ // Label 251: @4594
5923 /* 4594 */ GIM_Reject,
5924 /* 4595 */ // Label 16: @4595
5925 /* 4595 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4606), // Rule ID 141 //
5926 /* 4600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5927 /* 4603 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5928 /* 4603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5929 /* 4606 */ // Label 254: @4606
5930 /* 4606 */ GIM_Reject,
5931 /* 4607 */ // Label 17: @4607
5932 /* 4607 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4618), // Rule ID 365 //
5933 /* 4612 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
5934 /* 4615 */ // Combiner Rule #216: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5935 /* 4615 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5936 /* 4618 */ // Label 255: @4618
5937 /* 4618 */ GIM_Reject,
5938 /* 4619 */ // Label 18: @4619
5939 /* 4619 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4640), // Rule ID 134 //
5940 /* 4624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
5941 /* 4627 */ // MIs[0] dst
5942 /* 4627 */ // No operand predicates
5943 /* 4627 */ // MIs[0] t
5944 /* 4627 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5945 /* 4631 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5946 /* 4635 */ // MIs[1] ptr
5947 /* 4635 */ // No operand predicates
5948 /* 4635 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5949 /* 4637 */ // Combiner Rule #96: i2p_to_p2i
5950 /* 4637 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5951 /* 4640 */ // Label 256: @4640
5952 /* 4640 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4661), // Rule ID 96 //
5953 /* 4645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5954 /* 4648 */ // MIs[0] dst
5955 /* 4648 */ // No operand predicates
5956 /* 4648 */ // MIs[0] __unary_undef_to_undef_match_0.x
5957 /* 4648 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5958 /* 4652 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5959 /* 4656 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5960 /* 4658 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5961 /* 4658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5962 /* 4661 */ // Label 257: @4661
5963 /* 4661 */ GIM_Reject,
5964 /* 4662 */ // Label 19: @4662
5965 /* 4662 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4673), // Rule ID 133 //
5966 /* 4667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
5967 /* 4670 */ // Combiner Rule #95: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5968 /* 4670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5969 /* 4673 */ // Label 258: @4673
5970 /* 4673 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4694), // Rule ID 97 //
5971 /* 4678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5972 /* 4681 */ // MIs[0] dst
5973 /* 4681 */ // No operand predicates
5974 /* 4681 */ // MIs[0] __unary_undef_to_undef_match_0.x
5975 /* 4681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5976 /* 4685 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5977 /* 4689 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5978 /* 4691 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5979 /* 4691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5980 /* 4694 */ // Label 259: @4694
5981 /* 4694 */ GIM_Reject,
5982 /* 4695 */ // Label 20: @4695
5983 /* 4695 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4716), // Rule ID 145 //
5984 /* 4700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5985 /* 4703 */ // MIs[0] dst
5986 /* 4703 */ // No operand predicates
5987 /* 4703 */ // MIs[0] src1
5988 /* 4703 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5989 /* 4707 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5990 /* 4711 */ // MIs[1] src0
5991 /* 4711 */ // No operand predicates
5992 /* 4711 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5993 /* 4713 */ // Combiner Rule #105: bitcast_bitcast_fold
5994 /* 4713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5995 /* 4716 */ // Label 260: @4716
5996 /* 4716 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4737), // Rule ID 94 //
5997 /* 4721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5998 /* 4724 */ // MIs[0] dst
5999 /* 4724 */ // No operand predicates
6000 /* 4724 */ // MIs[0] __unary_undef_to_undef_match_0.x
6001 /* 4724 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6002 /* 4728 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6003 /* 4732 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6004 /* 4734 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
6005 /* 4734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6006 /* 4737 */ // Label 261: @4737
6007 /* 4737 */ GIM_Reject,
6008 /* 4738 */ // Label 21: @4738
6009 /* 4738 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4767), // Rule ID 24 //
6010 /* 4743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6011 /* 4746 */ // MIs[0] dst
6012 /* 4746 */ // No operand predicates
6013 /* 4746 */ // MIs[0] src
6014 /* 4746 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6015 /* 4750 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
6016 /* 4754 */ // MIs[1] __idempotent_prop_match_0.x
6017 /* 4754 */ // No operand predicates
6018 /* 4754 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6019 /* 4759 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6020 /* 4761 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
6021 /* 4761 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6022 /* 4766 */ GIR_EraseRootFromParent_Done,
6023 /* 4767 */ // Label 262: @4767
6024 /* 4767 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4790), // Rule ID 49 //
6025 /* 4772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6026 /* 4775 */ // MIs[0] root
6027 /* 4775 */ // No operand predicates
6028 /* 4775 */ // MIs[0] src
6029 /* 4775 */ // No operand predicates
6030 /* 4775 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
6031 /* 4779 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6032 /* 4784 */ // Combiner Rule #47: freeze_of_non_undef_non_poison
6033 /* 4784 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6034 /* 4789 */ GIR_EraseRootFromParent_Done,
6035 /* 4790 */ // Label 263: @4790
6036 /* 4790 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4801), // Rule ID 50 //
6037 /* 4795 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6038 /* 4798 */ // MIs[0] dst
6039 /* 4798 */ // No operand predicates
6040 /* 4798 */ // MIs[0] src
6041 /* 4798 */ // No operand predicates
6042 /* 4798 */ // Combiner Rule #48: push_freeze_to_prevent_poison_from_propagating
6043 /* 4798 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
6044 /* 4801 */ // Label 264: @4801
6045 /* 4801 */ GIM_Reject,
6046 /* 4802 */ // Label 22: @4802
6047 /* 4802 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4823), // Rule ID 194 //
6048 /* 4807 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
6049 /* 4810 */ // MIs[0] dst
6050 /* 4810 */ // No operand predicates
6051 /* 4810 */ // MIs[0] src0
6052 /* 4810 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6053 /* 4814 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6054 /* 4818 */ // MIs[1] cst
6055 /* 4818 */ // No operand predicates
6056 /* 4818 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6057 /* 4820 */ // Combiner Rule #150: constant_fold_intrinsic_trunc
6058 /* 4820 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6059 /* 4823 */ // Label 265: @4823
6060 /* 4823 */ GIM_Reject,
6061 /* 4824 */ // Label 23: @4824
6062 /* 4824 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4845), // Rule ID 195 //
6063 /* 4829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
6064 /* 4832 */ // MIs[0] dst
6065 /* 4832 */ // No operand predicates
6066 /* 4832 */ // MIs[0] src0
6067 /* 4832 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6068 /* 4836 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6069 /* 4840 */ // MIs[1] cst
6070 /* 4840 */ // No operand predicates
6071 /* 4840 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6072 /* 4842 */ // Combiner Rule #151: constant_fold_intrinsic_round
6073 /* 4842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6074 /* 4845 */ // Label 266: @4845
6075 /* 4845 */ GIM_Reject,
6076 /* 4846 */ // Label 24: @4846
6077 /* 4846 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4867), // Rule ID 196 //
6078 /* 4851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
6079 /* 4854 */ // MIs[0] dst
6080 /* 4854 */ // No operand predicates
6081 /* 4854 */ // MIs[0] src0
6082 /* 4854 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6083 /* 4858 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6084 /* 4862 */ // MIs[1] cst
6085 /* 4862 */ // No operand predicates
6086 /* 4862 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6087 /* 4864 */ // Combiner Rule #152: constant_fold_intrinsic_roundeven
6088 /* 4864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6089 /* 4867 */ // Label 267: @4867
6090 /* 4867 */ GIM_Reject,
6091 /* 4868 */ // Label 25: @4868
6092 /* 4868 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4879), // Rule ID 76 //
6093 /* 4873 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6094 /* 4876 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_LOAD'
6095 /* 4876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6096 /* 4879 */ // Label 268: @4879
6097 /* 4879 */ GIM_Reject,
6098 /* 4880 */ // Label 26: @4880
6099 /* 4880 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4891), // Rule ID 77 //
6100 /* 4885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6101 /* 4888 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_SEXTLOAD'
6102 /* 4888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6103 /* 4891 */ // Label 269: @4891
6104 /* 4891 */ GIM_Reject,
6105 /* 4892 */ // Label 27: @4892
6106 /* 4892 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4903), // Rule ID 78 //
6107 /* 4897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6108 /* 4900 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
6109 /* 4900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6110 /* 4903 */ // Label 270: @4903
6111 /* 4903 */ GIM_Reject,
6112 /* 4904 */ // Label 28: @4904
6113 /* 4904 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4915), // Rule ID 106 //
6114 /* 4909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6115 /* 4912 */ // Combiner Rule #87: erase_undef_store; wip_match_opcode 'G_STORE'
6116 /* 4912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
6117 /* 4915 */ // Label 271: @4915
6118 /* 4915 */ GIM_Reject,
6119 /* 4916 */ // Label 29: @4916
6120 /* 4916 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4927), // Rule ID 135 //
6121 /* 4921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
6122 /* 4924 */ // Combiner Rule #97: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
6123 /* 4924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
6124 /* 4927 */ // Label 272: @4927
6125 /* 4927 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4938), // Rule ID 279 //
6126 /* 4932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6127 /* 4935 */ // Combiner Rule #187: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
6128 /* 4935 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6129 /* 4938 */ // Label 273: @4938
6130 /* 4938 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4959), // Rule ID 63 //
6131 /* 4943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6132 /* 4946 */ // MIs[0] root
6133 /* 4946 */ // No operand predicates
6134 /* 4946 */ // MIs[0] select
6135 /* 4946 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6136 /* 4950 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6137 /* 4954 */ // MIs[1] cond
6138 /* 4954 */ // No operand predicates
6139 /* 4954 */ // MIs[1] true
6140 /* 4954 */ // No operand predicates
6141 /* 4954 */ // MIs[1] false
6142 /* 4954 */ // No operand predicates
6143 /* 4954 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6144 /* 4956 */ // Combiner Rule #61: select_of_anyext
6145 /* 4956 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6146 /* 4959 */ // Label 274: @4959
6147 /* 4959 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4980), // Rule ID 58 //
6148 /* 4964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6149 /* 4967 */ // MIs[0] root
6150 /* 4967 */ // No operand predicates
6151 /* 4967 */ // MIs[0] second
6152 /* 4967 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6153 /* 4971 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6154 /* 4975 */ // MIs[1] src
6155 /* 4975 */ // No operand predicates
6156 /* 4975 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6157 /* 4977 */ // Combiner Rule #56: anyext_of_anyext
6158 /* 4977 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6159 /* 4980 */ // Label 275: @4980
6160 /* 4980 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5001), // Rule ID 60 //
6161 /* 4985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
6162 /* 4988 */ // MIs[0] root
6163 /* 4988 */ // No operand predicates
6164 /* 4988 */ // MIs[0] second
6165 /* 4988 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6166 /* 4992 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6167 /* 4996 */ // MIs[1] src
6168 /* 4996 */ // No operand predicates
6169 /* 4996 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6170 /* 4998 */ // Combiner Rule #58: anyext_of_sext
6171 /* 4998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6172 /* 5001 */ // Label 276: @5001
6173 /* 5001 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5022), // Rule ID 59 //
6174 /* 5006 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6175 /* 5009 */ // MIs[0] root
6176 /* 5009 */ // No operand predicates
6177 /* 5009 */ // MIs[0] second
6178 /* 5009 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6179 /* 5013 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6180 /* 5017 */ // MIs[1] src
6181 /* 5017 */ // No operand predicates
6182 /* 5017 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6183 /* 5019 */ // Combiner Rule #57: anyext_of_zext
6184 /* 5019 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6185 /* 5022 */ // Label 277: @5022
6186 /* 5022 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5043), // Rule ID 95 //
6187 /* 5027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6188 /* 5030 */ // MIs[0] dst
6189 /* 5030 */ // No operand predicates
6190 /* 5030 */ // MIs[0] __unary_undef_to_undef_match_0.x
6191 /* 5030 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6192 /* 5034 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6193 /* 5038 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6194 /* 5040 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
6195 /* 5040 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6196 /* 5043 */ // Label 278: @5043
6197 /* 5043 */ GIM_Reject,
6198 /* 5044 */ // Label 30: @5044
6199 /* 5044 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5055), // Rule ID 143 //
6200 /* 5049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
6201 /* 5052 */ // Combiner Rule #103: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
6202 /* 5052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
6203 /* 5055 */ // Label 279: @5055
6204 /* 5055 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5066), // Rule ID 144 //
6205 /* 5060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
6206 /* 5063 */ // Combiner Rule #104: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
6207 /* 5063 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
6208 /* 5066 */ // Label 280: @5066
6209 /* 5066 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5077), // Rule ID 183 //
6210 /* 5071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
6211 /* 5074 */ // Combiner Rule #139: trunc_shift; wip_match_opcode 'G_TRUNC'
6212 /* 5074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
6213 /* 5077 */ // Label 281: @5077
6214 /* 5077 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5098), // Rule ID 64 //
6215 /* 5082 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
6216 /* 5085 */ // MIs[0] root
6217 /* 5085 */ // No operand predicates
6218 /* 5085 */ // MIs[0] select
6219 /* 5085 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6220 /* 5089 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6221 /* 5093 */ // MIs[1] cond
6222 /* 5093 */ // No operand predicates
6223 /* 5093 */ // MIs[1] true
6224 /* 5093 */ // No operand predicates
6225 /* 5093 */ // MIs[1] false
6226 /* 5093 */ // No operand predicates
6227 /* 5093 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6228 /* 5095 */ // Combiner Rule #62: select_of_truncate
6229 /* 5095 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6230 /* 5098 */ // Label 282: @5098
6231 /* 5098 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5127), // Rule ID 66 //
6232 /* 5103 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6233 /* 5106 */ // MIs[0] root
6234 /* 5106 */ // No operand predicates
6235 /* 5106 */ // MIs[0] binop
6236 /* 5106 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6237 /* 5110 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6238 /* 5114 */ // MIs[1] x
6239 /* 5114 */ // No operand predicates
6240 /* 5114 */ // MIs[1] const
6241 /* 5114 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6242 /* 5118 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6243 /* 5122 */ // MIs[2] imm
6244 /* 5122 */ // No operand predicates
6245 /* 5122 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6246 /* 5124 */ // Combiner Rule #64: narrow_binop_add
6247 /* 5124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6248 /* 5127 */ // Label 283: @5127
6249 /* 5127 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5156), // Rule ID 69 //
6250 /* 5132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6251 /* 5135 */ // MIs[0] root
6252 /* 5135 */ // No operand predicates
6253 /* 5135 */ // MIs[0] binop
6254 /* 5135 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6255 /* 5139 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6256 /* 5143 */ // MIs[1] x
6257 /* 5143 */ // No operand predicates
6258 /* 5143 */ // MIs[1] const
6259 /* 5143 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6260 /* 5147 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6261 /* 5151 */ // MIs[2] imm
6262 /* 5151 */ // No operand predicates
6263 /* 5151 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6264 /* 5153 */ // Combiner Rule #67: narrow_binop_and
6265 /* 5153 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6266 /* 5156 */ // Label 284: @5156
6267 /* 5156 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5185), // Rule ID 68 //
6268 /* 5161 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6269 /* 5164 */ // MIs[0] root
6270 /* 5164 */ // No operand predicates
6271 /* 5164 */ // MIs[0] binop
6272 /* 5164 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6273 /* 5168 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
6274 /* 5172 */ // MIs[1] x
6275 /* 5172 */ // No operand predicates
6276 /* 5172 */ // MIs[1] const
6277 /* 5172 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6278 /* 5176 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6279 /* 5180 */ // MIs[2] imm
6280 /* 5180 */ // No operand predicates
6281 /* 5180 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6282 /* 5182 */ // Combiner Rule #66: narrow_binop_mul
6283 /* 5182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6284 /* 5185 */ // Label 285: @5185
6285 /* 5185 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5214), // Rule ID 70 //
6286 /* 5190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
6287 /* 5193 */ // MIs[0] root
6288 /* 5193 */ // No operand predicates
6289 /* 5193 */ // MIs[0] binop
6290 /* 5193 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6291 /* 5197 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6292 /* 5201 */ // MIs[1] x
6293 /* 5201 */ // No operand predicates
6294 /* 5201 */ // MIs[1] const
6295 /* 5201 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6296 /* 5205 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6297 /* 5209 */ // MIs[2] imm
6298 /* 5209 */ // No operand predicates
6299 /* 5209 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6300 /* 5211 */ // Combiner Rule #68: narrow_binop_or
6301 /* 5211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6302 /* 5214 */ // Label 286: @5214
6303 /* 5214 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5243), // Rule ID 67 //
6304 /* 5219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6305 /* 5222 */ // MIs[0] root
6306 /* 5222 */ // No operand predicates
6307 /* 5222 */ // MIs[0] binop
6308 /* 5222 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6309 /* 5226 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6310 /* 5230 */ // MIs[1] x
6311 /* 5230 */ // No operand predicates
6312 /* 5230 */ // MIs[1] const
6313 /* 5230 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6314 /* 5234 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6315 /* 5238 */ // MIs[2] imm
6316 /* 5238 */ // No operand predicates
6317 /* 5238 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6318 /* 5240 */ // Combiner Rule #65: narrow_binop_sub
6319 /* 5240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6320 /* 5243 */ // Label 287: @5243
6321 /* 5243 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5275), // Rule ID 389 //
6322 /* 5248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6323 /* 5251 */ // MIs[0] dst
6324 /* 5251 */ // No operand predicates
6325 /* 5251 */ // MIs[0] min
6326 /* 5251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6327 /* 5255 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6328 /* 5259 */ // MIs[1] x
6329 /* 5259 */ // No operand predicates
6330 /* 5259 */ // MIs[1] y
6331 /* 5259 */ // No operand predicates
6332 /* 5259 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6333 /* 5263 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6334 /* 5265 */ // Combiner Rule #238: trunc_usatu
6335 /* 5265 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6336 /* 5268 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6337 /* 5270 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6338 /* 5274 */ GIR_EraseRootFromParent_Done,
6339 /* 5275 */ // Label 288: @5275
6340 /* 5275 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5304), // Rule ID 71 //
6341 /* 5280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
6342 /* 5283 */ // MIs[0] root
6343 /* 5283 */ // No operand predicates
6344 /* 5283 */ // MIs[0] binop
6345 /* 5283 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6346 /* 5287 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6347 /* 5291 */ // MIs[1] x
6348 /* 5291 */ // No operand predicates
6349 /* 5291 */ // MIs[1] const
6350 /* 5291 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6351 /* 5295 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6352 /* 5299 */ // MIs[2] imm
6353 /* 5299 */ // No operand predicates
6354 /* 5299 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6355 /* 5301 */ // Combiner Rule #69: narrow_binop_xor
6356 /* 5301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6357 /* 5304 */ // Label 289: @5304
6358 /* 5304 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5325), // Rule ID 53 //
6359 /* 5309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6360 /* 5312 */ // MIs[0] root
6361 /* 5312 */ // No operand predicates
6362 /* 5312 */ // MIs[0] ext
6363 /* 5312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6364 /* 5316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6365 /* 5320 */ // MIs[1] src
6366 /* 5320 */ // No operand predicates
6367 /* 5320 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6368 /* 5322 */ // Combiner Rule #51: truncate_of_anyext
6369 /* 5322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6370 /* 5325 */ // Label 290: @5325
6371 /* 5325 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5349), // Rule ID 65 //
6372 /* 5330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6373 /* 5333 */ // MIs[0] root
6374 /* 5333 */ // No operand predicates
6375 /* 5333 */ // MIs[0] bv
6376 /* 5333 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6377 /* 5337 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6378 /* 5341 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6379 /* 5344 */ // MIs[1] unused
6380 /* 5344 */ // No operand predicates
6381 /* 5344 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6382 /* 5346 */ // Combiner Rule #63: buildvector_of_truncate
6383 /* 5346 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6384 /* 5349 */ // Label 291: @5349
6385 /* 5349 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5370), // Rule ID 52 //
6386 /* 5354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6387 /* 5357 */ // MIs[0] root
6388 /* 5357 */ // No operand predicates
6389 /* 5357 */ // MIs[0] ext
6390 /* 5357 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6391 /* 5361 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6392 /* 5365 */ // MIs[1] src
6393 /* 5365 */ // No operand predicates
6394 /* 5365 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6395 /* 5367 */ // Combiner Rule #50: truncate_of_sext
6396 /* 5367 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6397 /* 5370 */ // Label 292: @5370
6398 /* 5370 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5391), // Rule ID 51 //
6399 /* 5375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6400 /* 5378 */ // MIs[0] root
6401 /* 5378 */ // No operand predicates
6402 /* 5378 */ // MIs[0] ext
6403 /* 5378 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6404 /* 5382 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6405 /* 5386 */ // MIs[1] src
6406 /* 5386 */ // No operand predicates
6407 /* 5386 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6408 /* 5388 */ // Combiner Rule #49: truncate_of_zext
6409 /* 5388 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6410 /* 5391 */ // Label 293: @5391
6411 /* 5391 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5412), // Rule ID 93 //
6412 /* 5396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6413 /* 5399 */ // MIs[0] dst
6414 /* 5399 */ // No operand predicates
6415 /* 5399 */ // MIs[0] __unary_undef_to_undef_match_0.x
6416 /* 5399 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6417 /* 5403 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6418 /* 5407 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6419 /* 5409 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6420 /* 5409 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6421 /* 5412 */ // Label 294: @5412
6422 /* 5412 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5433), // Rule ID 72 //
6423 /* 5417 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
6424 /* 5420 */ // MIs[0] root
6425 /* 5420 */ // No operand predicates
6426 /* 5420 */ // MIs[0] int
6427 /* 5420 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6428 /* 5424 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6429 /* 5428 */ // MIs[1] imm
6430 /* 5428 */ // No operand predicates
6431 /* 5428 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6432 /* 5430 */ // Combiner Rule #70: integer_of_truncate
6433 /* 5430 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6434 /* 5433 */ // Label 295: @5433
6435 /* 5433 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5444), // Rule ID 387 //
6436 /* 5438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6437 /* 5441 */ // MIs[0] dst
6438 /* 5441 */ // No operand predicates
6439 /* 5441 */ // MIs[0] src
6440 /* 5441 */ // No operand predicates
6441 /* 5441 */ // Combiner Rule #236: trunc_ssats
6442 /* 5441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6443 /* 5444 */ // Label 296: @5444
6444 /* 5444 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5455), // Rule ID 388 //
6445 /* 5449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6446 /* 5452 */ // MIs[0] dst
6447 /* 5452 */ // No operand predicates
6448 /* 5452 */ // MIs[0] src
6449 /* 5452 */ // No operand predicates
6450 /* 5452 */ // Combiner Rule #237: trunc_ssatu
6451 /* 5452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
6452 /* 5455 */ // Label 297: @5455
6453 /* 5455 */ GIM_Reject,
6454 /* 5456 */ // Label 31: @5456
6455 /* 5456 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5488), // Rule ID 390 //
6456 /* 5461 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6457 /* 5464 */ // MIs[0] dst
6458 /* 5464 */ // No operand predicates
6459 /* 5464 */ // MIs[0] src
6460 /* 5464 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6461 /* 5468 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6462 /* 5472 */ // MIs[1] x
6463 /* 5472 */ // No operand predicates
6464 /* 5472 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
6465 /* 5476 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6466 /* 5478 */ // Combiner Rule #239: truncusatu_to_fptouisat
6467 /* 5478 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6468 /* 5481 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6469 /* 5483 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6470 /* 5487 */ GIR_EraseRootFromParent_Done,
6471 /* 5488 */ // Label 298: @5488
6472 /* 5488 */ GIM_Reject,
6473 /* 5489 */ // Label 32: @5489
6474 /* 5489 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5500), // Rule ID 278 //
6475 /* 5494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6476 /* 5497 */ // Combiner Rule #187: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6477 /* 5497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6478 /* 5500 */ // Label 299: @5500
6479 /* 5500 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5521), // Rule ID 57 //
6480 /* 5505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
6481 /* 5508 */ // MIs[0] root
6482 /* 5508 */ // No operand predicates
6483 /* 5508 */ // MIs[0] second
6484 /* 5508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6485 /* 5512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6486 /* 5516 */ // MIs[1] src
6487 /* 5516 */ // No operand predicates
6488 /* 5516 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6489 /* 5518 */ // Combiner Rule #55: sext_of_anyext
6490 /* 5518 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6491 /* 5521 */ // Label 300: @5521
6492 /* 5521 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5542), // Rule ID 56 //
6493 /* 5526 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
6494 /* 5529 */ // MIs[0] root
6495 /* 5529 */ // No operand predicates
6496 /* 5529 */ // MIs[0] second
6497 /* 5529 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6498 /* 5533 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6499 /* 5537 */ // MIs[1] src
6500 /* 5537 */ // No operand predicates
6501 /* 5537 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6502 /* 5539 */ // Combiner Rule #54: sext_of_sext
6503 /* 5539 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6504 /* 5542 */ // Label 301: @5542
6505 /* 5542 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5563), // Rule ID 366 //
6506 /* 5547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
6507 /* 5550 */ // MIs[0] root
6508 /* 5550 */ // No operand predicates
6509 /* 5550 */ // MIs[0] src
6510 /* 5550 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6511 /* 5554 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6512 /* 5558 */ // MIs[1] x
6513 /* 5558 */ // No operand predicates
6514 /* 5558 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6515 /* 5560 */ // Combiner Rule #217: sext_trunc
6516 /* 5560 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6517 /* 5563 */ // Label 302: @5563
6518 /* 5563 */ GIM_Reject,
6519 /* 5564 */ // Label 33: @5564
6520 /* 5564 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5575), // Rule ID 170 //
6521 /* 5569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6522 /* 5572 */ // Combiner Rule #126: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6523 /* 5572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6524 /* 5575 */ // Label 303: @5575
6525 /* 5575 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5586), // Rule ID 178 //
6526 /* 5580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
6527 /* 5583 */ // Combiner Rule #134: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6528 /* 5583 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6529 /* 5586 */ // Label 304: @5586
6530 /* 5586 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5597), // Rule ID 247 //
6531 /* 5591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6532 /* 5594 */ // Combiner Rule #180: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6533 /* 5594 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6534 /* 5597 */ // Label 305: @5597
6535 /* 5597 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5618), // Rule ID 61 //
6536 /* 5602 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
6537 /* 5605 */ // MIs[0] dst
6538 /* 5605 */ // No operand predicates
6539 /* 5605 */ // MIs[0] x
6540 /* 5605 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6541 /* 5609 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6542 /* 5613 */ // MIs[1] src
6543 /* 5613 */ // No operand predicates
6544 /* 5613 */ // MIs[1] a
6545 /* 5613 */ // No operand predicates
6546 /* 5613 */ // MIs[0] b
6547 /* 5613 */ // No operand predicates
6548 /* 5613 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6549 /* 5615 */ // Combiner Rule #59: sext_inreg_of_sext_inreg
6550 /* 5615 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6551 /* 5618 */ // Label 306: @5618
6552 /* 5618 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5629), // Rule ID 182 //
6553 /* 5623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
6554 /* 5626 */ // MIs[0] dst
6555 /* 5626 */ // No operand predicates
6556 /* 5626 */ // MIs[0] src
6557 /* 5626 */ // No operand predicates
6558 /* 5626 */ // MIs[0] imm
6559 /* 5626 */ // No operand predicates
6560 /* 5626 */ // Combiner Rule #138: sext_inreg_to_zext_inreg
6561 /* 5626 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6562 /* 5629 */ // Label 307: @5629
6563 /* 5629 */ GIM_Reject,
6564 /* 5630 */ // Label 34: @5630
6565 /* 5630 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5641), // Rule ID 181 //
6566 /* 5635 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
6567 /* 5638 */ // Combiner Rule #137: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6568 /* 5638 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6569 /* 5641 */ // Label 308: @5641
6570 /* 5641 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5652), // Rule ID 277 //
6571 /* 5646 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6572 /* 5649 */ // Combiner Rule #187: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6573 /* 5649 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6574 /* 5652 */ // Label 309: @5652
6575 /* 5652 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5673), // Rule ID 62 //
6576 /* 5657 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
6577 /* 5660 */ // MIs[0] root
6578 /* 5660 */ // No operand predicates
6579 /* 5660 */ // MIs[0] select
6580 /* 5660 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6581 /* 5664 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6582 /* 5668 */ // MIs[1] cond
6583 /* 5668 */ // No operand predicates
6584 /* 5668 */ // MIs[1] true
6585 /* 5668 */ // No operand predicates
6586 /* 5668 */ // MIs[1] false
6587 /* 5668 */ // No operand predicates
6588 /* 5668 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6589 /* 5670 */ // Combiner Rule #60: select_of_zext
6590 /* 5670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6591 /* 5673 */ // Label 310: @5673
6592 /* 5673 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5694), // Rule ID 55 //
6593 /* 5678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
6594 /* 5681 */ // MIs[0] root
6595 /* 5681 */ // No operand predicates
6596 /* 5681 */ // MIs[0] second
6597 /* 5681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6598 /* 5685 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6599 /* 5689 */ // MIs[1] src
6600 /* 5689 */ // No operand predicates
6601 /* 5689 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6602 /* 5691 */ // Combiner Rule #53: zext_of_anyext
6603 /* 5691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6604 /* 5694 */ // Label 311: @5694
6605 /* 5694 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5721), // Rule ID 367 //
6606 /* 5699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
6607 /* 5702 */ // MIs[0] root
6608 /* 5702 */ // No operand predicates
6609 /* 5702 */ // MIs[0] src
6610 /* 5702 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6611 /* 5706 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6612 /* 5710 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6613 /* 5716 */ // MIs[1] x
6614 /* 5716 */ // No operand predicates
6615 /* 5716 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6616 /* 5718 */ // Combiner Rule #218: zext_trunc
6617 /* 5718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6618 /* 5721 */ // Label 312: @5721
6619 /* 5721 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5742), // Rule ID 54 //
6620 /* 5726 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
6621 /* 5729 */ // MIs[0] root
6622 /* 5729 */ // No operand predicates
6623 /* 5729 */ // MIs[0] second
6624 /* 5729 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6625 /* 5733 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6626 /* 5737 */ // MIs[1] src
6627 /* 5737 */ // No operand predicates
6628 /* 5737 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6629 /* 5739 */ // Combiner Rule #52: zext_of_zext
6630 /* 5739 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6631 /* 5742 */ // Label 313: @5742
6632 /* 5742 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5759), // Rule ID 368 //
6633 /* 5747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
6634 /* 5750 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6635 /* 5756 */ // MIs[0] root
6636 /* 5756 */ // No operand predicates
6637 /* 5756 */ // MIs[0] x
6638 /* 5756 */ // No operand predicates
6639 /* 5756 */ // Combiner Rule #219: nneg_zext
6640 /* 5756 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6641 /* 5759 */ // Label 314: @5759
6642 /* 5759 */ GIM_Reject,
6643 /* 5760 */ // Label 35: @5760
6644 /* 5760 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5771), // Rule ID 86 //
6645 /* 5765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6646 /* 5768 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6647 /* 5768 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6648 /* 5771 */ // Label 315: @5771
6649 /* 5771 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5782), // Rule ID 89 //
6650 /* 5776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
6651 /* 5779 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6652 /* 5779 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6653 /* 5782 */ // Label 316: @5782
6654 /* 5782 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5793), // Rule ID 218 //
6655 /* 5787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6656 /* 5790 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_SHL'
6657 /* 5790 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6658 /* 5793 */ // Label 317: @5793
6659 /* 5793 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5804), // Rule ID 223 //
6660 /* 5798 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6661 /* 5801 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6662 /* 5801 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6663 /* 5804 */ // Label 318: @5804
6664 /* 5804 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5815), // Rule ID 246 //
6665 /* 5809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6666 /* 5812 */ // Combiner Rule #179: commute_shift; wip_match_opcode 'G_SHL'
6667 /* 5812 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6668 /* 5815 */ // Label 319: @5815
6669 /* 5815 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5826), // Rule ID 260 //
6670 /* 5820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6671 /* 5823 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SHL'
6672 /* 5823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6673 /* 5826 */ // Label 320: @5826
6674 /* 5826 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5837), // Rule ID 309 //
6675 /* 5831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6676 /* 5834 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SHL'
6677 /* 5834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6678 /* 5837 */ // Label 321: @5837
6679 /* 5837 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5872), // Rule ID 47 //
6680 /* 5842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
6681 /* 5845 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6682 /* 5851 */ // MIs[0] root
6683 /* 5851 */ // No operand predicates
6684 /* 5851 */ // MIs[0] left
6685 /* 5851 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6686 /* 5855 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6687 /* 5859 */ // MIs[1] imm
6688 /* 5859 */ // No operand predicates
6689 /* 5859 */ // MIs[0] x
6690 /* 5859 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6691 /* 5863 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6692 /* 5867 */ // MIs[2] imm1
6693 /* 5867 */ // No operand predicates
6694 /* 5867 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6695 /* 5869 */ // Combiner Rule #45: shl_of_vscale
6696 /* 5869 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6697 /* 5872 */ // Label 322: @5872
6698 /* 5872 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5912), // Rule ID 124 //
6699 /* 5877 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6700 /* 5880 */ // MIs[0] dst
6701 /* 5880 */ // No operand predicates
6702 /* 5880 */ // MIs[0] zero
6703 /* 5880 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6704 /* 5884 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6705 /* 5888 */ // MIs[1] Operand 1
6706 /* 5888 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6707 /* 5899 */ // MIs[0] rhs
6708 /* 5899 */ // No operand predicates
6709 /* 5899 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6710 /* 5904 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6711 /* 5906 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6712 /* 5906 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6713 /* 5911 */ GIR_EraseRootFromParent_Done,
6714 /* 5912 */ // Label 323: @5912
6715 /* 5912 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5935), // Rule ID 114 //
6716 /* 5917 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6717 /* 5920 */ // MIs[0] dst
6718 /* 5920 */ // No operand predicates
6719 /* 5920 */ // MIs[0] lhs
6720 /* 5920 */ // No operand predicates
6721 /* 5920 */ // MIs[0] Operand 2
6722 /* 5920 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6723 /* 5924 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6724 /* 5929 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
6725 /* 5929 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6726 /* 5934 */ GIR_EraseRootFromParent_Done,
6727 /* 5935 */ // Label 324: @5935
6728 /* 5935 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5946), // Rule ID 155 //
6729 /* 5940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6730 /* 5943 */ // MIs[0] root
6731 /* 5943 */ // No operand predicates
6732 /* 5943 */ // MIs[0] mi.shifted
6733 /* 5943 */ // No operand predicates
6734 /* 5943 */ // MIs[0] mi.amt
6735 /* 5943 */ // No operand predicates
6736 /* 5943 */ // Combiner Rule #113: shifts_too_big @ [mi[0]]
6737 /* 5943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6738 /* 5946 */ // Label 325: @5946
6739 /* 5946 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5957), // Rule ID 171 //
6740 /* 5951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6741 /* 5954 */ // MIs[0] dst
6742 /* 5954 */ // No operand predicates
6743 /* 5954 */ // MIs[0] src0
6744 /* 5954 */ // No operand predicates
6745 /* 5954 */ // MIs[0] src1
6746 /* 5954 */ // No operand predicates
6747 /* 5954 */ // Combiner Rule #127: reduce_shl_of_extend
6748 /* 5954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6749 /* 5957 */ // Label 326: @5957
6750 /* 5957 */ GIM_Reject,
6751 /* 5958 */ // Label 36: @5958
6752 /* 5958 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5969), // Rule ID 91 //
6753 /* 5963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
6754 /* 5966 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6755 /* 5966 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6756 /* 5969 */ // Label 327: @5969
6757 /* 5969 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5980), // Rule ID 220 //
6758 /* 5974 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6759 /* 5977 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_LSHR'
6760 /* 5977 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6761 /* 5980 */ // Label 328: @5980
6762 /* 5980 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(5991), // Rule ID 225 //
6763 /* 5985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6764 /* 5988 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6765 /* 5988 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6766 /* 5991 */ // Label 329: @5991
6767 /* 5991 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6002), // Rule ID 250 //
6768 /* 5996 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6769 /* 5999 */ // Combiner Rule #182: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6770 /* 5999 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6771 /* 6002 */ // Label 330: @6002
6772 /* 6002 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6013), // Rule ID 252 //
6773 /* 6007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6774 /* 6010 */ // Combiner Rule #183: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6775 /* 6010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6776 /* 6013 */ // Label 331: @6013
6777 /* 6013 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6024), // Rule ID 257 //
6778 /* 6018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6779 /* 6021 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_LSHR'
6780 /* 6021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6781 /* 6024 */ // Label 332: @6024
6782 /* 6024 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6035), // Rule ID 307 //
6783 /* 6029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6784 /* 6032 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6785 /* 6032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6786 /* 6035 */ // Label 333: @6035
6787 /* 6035 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6064), // Rule ID 391 //
6788 /* 6040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6789 /* 6043 */ // MIs[0] dst
6790 /* 6043 */ // No operand predicates
6791 /* 6043 */ // MIs[0] d2
6792 /* 6043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6793 /* 6047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6794 /* 6051 */ // MIs[1] d1
6795 /* 6051 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6796 /* 6055 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6797 /* 6059 */ // MIs[2] x
6798 /* 6059 */ // No operand predicates
6799 /* 6059 */ // MIs[2] y
6800 /* 6059 */ // No operand predicates
6801 /* 6059 */ // MIs[0] z
6802 /* 6059 */ // No operand predicates
6803 /* 6059 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6804 /* 6061 */ // Combiner Rule #240: lshr_of_trunc_of_lshr
6805 /* 6061 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6806 /* 6064 */ // Label 334: @6064
6807 /* 6064 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6104), // Rule ID 125 //
6808 /* 6069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6809 /* 6072 */ // MIs[0] dst
6810 /* 6072 */ // No operand predicates
6811 /* 6072 */ // MIs[0] zero
6812 /* 6072 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6813 /* 6076 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6814 /* 6080 */ // MIs[1] Operand 1
6815 /* 6080 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6816 /* 6091 */ // MIs[0] rhs
6817 /* 6091 */ // No operand predicates
6818 /* 6091 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6819 /* 6096 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6820 /* 6098 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6821 /* 6098 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6822 /* 6103 */ GIR_EraseRootFromParent_Done,
6823 /* 6104 */ // Label 335: @6104
6824 /* 6104 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6127), // Rule ID 116 //
6825 /* 6109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6826 /* 6112 */ // MIs[0] dst
6827 /* 6112 */ // No operand predicates
6828 /* 6112 */ // MIs[0] lhs
6829 /* 6112 */ // No operand predicates
6830 /* 6112 */ // MIs[0] Operand 2
6831 /* 6112 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6832 /* 6116 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6833 /* 6121 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
6834 /* 6121 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6835 /* 6126 */ GIR_EraseRootFromParent_Done,
6836 /* 6127 */ // Label 336: @6127
6837 /* 6127 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6138), // Rule ID 157 //
6838 /* 6132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6839 /* 6135 */ // MIs[0] root
6840 /* 6135 */ // No operand predicates
6841 /* 6135 */ // MIs[0] mi.shifted
6842 /* 6135 */ // No operand predicates
6843 /* 6135 */ // MIs[0] mi.amt
6844 /* 6135 */ // No operand predicates
6845 /* 6135 */ // Combiner Rule #113: shifts_too_big @ [mi[2]]
6846 /* 6135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6847 /* 6138 */ // Label 337: @6138
6848 /* 6138 */ GIM_Reject,
6849 /* 6139 */ // Label 37: @6139
6850 /* 6139 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6150), // Rule ID 90 //
6851 /* 6144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
6852 /* 6147 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6853 /* 6147 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6854 /* 6150 */ // Label 338: @6150
6855 /* 6150 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6161), // Rule ID 168 //
6856 /* 6155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6857 /* 6158 */ // Combiner Rule #124: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6858 /* 6158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6859 /* 6161 */ // Label 339: @6161
6860 /* 6161 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6172), // Rule ID 219 //
6861 /* 6166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6862 /* 6169 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_ASHR'
6863 /* 6169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6864 /* 6172 */ // Label 340: @6172
6865 /* 6172 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6183), // Rule ID 224 //
6866 /* 6177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6867 /* 6180 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6868 /* 6180 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6869 /* 6183 */ // Label 341: @6183
6870 /* 6183 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6194), // Rule ID 249 //
6871 /* 6188 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6872 /* 6191 */ // Combiner Rule #182: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6873 /* 6191 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6874 /* 6194 */ // Label 342: @6194
6875 /* 6194 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6205), // Rule ID 251 //
6876 /* 6199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6877 /* 6202 */ // Combiner Rule #183: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6878 /* 6202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6879 /* 6205 */ // Label 343: @6205
6880 /* 6205 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6216), // Rule ID 256 //
6881 /* 6210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6882 /* 6213 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_ASHR'
6883 /* 6213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6884 /* 6216 */ // Label 344: @6216
6885 /* 6216 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6227), // Rule ID 308 //
6886 /* 6221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6887 /* 6224 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6888 /* 6224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6889 /* 6227 */ // Label 345: @6227
6890 /* 6227 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6267), // Rule ID 126 //
6891 /* 6232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6892 /* 6235 */ // MIs[0] dst
6893 /* 6235 */ // No operand predicates
6894 /* 6235 */ // MIs[0] zero
6895 /* 6235 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6896 /* 6239 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6897 /* 6243 */ // MIs[1] Operand 1
6898 /* 6243 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6899 /* 6254 */ // MIs[0] rhs
6900 /* 6254 */ // No operand predicates
6901 /* 6254 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6902 /* 6259 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6903 /* 6261 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6904 /* 6261 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6905 /* 6266 */ GIR_EraseRootFromParent_Done,
6906 /* 6267 */ // Label 346: @6267
6907 /* 6267 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6290), // Rule ID 115 //
6908 /* 6272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6909 /* 6275 */ // MIs[0] dst
6910 /* 6275 */ // No operand predicates
6911 /* 6275 */ // MIs[0] lhs
6912 /* 6275 */ // No operand predicates
6913 /* 6275 */ // MIs[0] Operand 2
6914 /* 6275 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6915 /* 6279 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6916 /* 6284 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
6917 /* 6284 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6918 /* 6289 */ GIR_EraseRootFromParent_Done,
6919 /* 6290 */ // Label 347: @6290
6920 /* 6290 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6301), // Rule ID 156 //
6921 /* 6295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6922 /* 6298 */ // MIs[0] root
6923 /* 6298 */ // No operand predicates
6924 /* 6298 */ // MIs[0] mi.shifted
6925 /* 6298 */ // No operand predicates
6926 /* 6298 */ // MIs[0] mi.amt
6927 /* 6298 */ // No operand predicates
6928 /* 6298 */ // Combiner Rule #113: shifts_too_big @ [mi[1]]
6929 /* 6298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6930 /* 6301 */ // Label 348: @6301
6931 /* 6301 */ GIM_Reject,
6932 /* 6302 */ // Label 38: @6302
6933 /* 6302 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6313), // Rule ID 234 //
6934 /* 6307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6935 /* 6310 */ // Combiner Rule #171: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6936 /* 6310 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6937 /* 6313 */ // Label 349: @6313
6938 /* 6313 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6324), // Rule ID 238 //
6939 /* 6318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
6940 /* 6321 */ // Combiner Rule #174: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6941 /* 6321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6942 /* 6324 */ // Label 350: @6324
6943 /* 6324 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6344), // Rule ID 237 //
6944 /* 6329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
6945 /* 6332 */ // MIs[0] x
6946 /* 6332 */ // No operand predicates
6947 /* 6332 */ // MIs[0] y
6948 /* 6332 */ // No operand predicates
6949 /* 6332 */ // MIs[0] z
6950 /* 6332 */ // No operand predicates
6951 /* 6332 */ // MIs[0] Operand 3
6952 /* 6332 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6953 /* 6336 */ // Combiner Rule #173: funnel_shift_left_zero
6954 /* 6336 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6955 /* 6339 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6956 /* 6341 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6957 /* 6343 */ GIR_EraseRootFromParent_Done,
6958 /* 6344 */ // Label 351: @6344
6959 /* 6344 */ GIM_Reject,
6960 /* 6345 */ // Label 39: @6345
6961 /* 6345 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6356), // Rule ID 235 //
6962 /* 6350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6963 /* 6353 */ // Combiner Rule #171: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6964 /* 6353 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6965 /* 6356 */ // Label 352: @6356
6966 /* 6356 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6367), // Rule ID 239 //
6967 /* 6361 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
6968 /* 6364 */ // Combiner Rule #174: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6969 /* 6364 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6970 /* 6367 */ // Label 353: @6367
6971 /* 6367 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6387), // Rule ID 236 //
6972 /* 6372 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
6973 /* 6375 */ // MIs[0] x
6974 /* 6375 */ // No operand predicates
6975 /* 6375 */ // MIs[0] y
6976 /* 6375 */ // No operand predicates
6977 /* 6375 */ // MIs[0] z
6978 /* 6375 */ // No operand predicates
6979 /* 6375 */ // MIs[0] Operand 3
6980 /* 6375 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6981 /* 6379 */ // Combiner Rule #172: funnel_shift_right_zero
6982 /* 6379 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6983 /* 6382 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6984 /* 6384 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6985 /* 6386 */ GIR_EraseRootFromParent_Done,
6986 /* 6387 */ // Label 354: @6387
6987 /* 6387 */ GIM_Reject,
6988 /* 6388 */ // Label 40: @6388
6989 /* 6388 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6411), // Rule ID 119 //
6990 /* 6393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6991 /* 6396 */ // MIs[0] dst
6992 /* 6396 */ // No operand predicates
6993 /* 6396 */ // MIs[0] lhs
6994 /* 6396 */ // No operand predicates
6995 /* 6396 */ // MIs[0] Operand 2
6996 /* 6396 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6997 /* 6400 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6998 /* 6405 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
6999 /* 6405 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7000 /* 6410 */ GIR_EraseRootFromParent_Done,
7001 /* 6411 */ // Label 355: @6411
7002 /* 6411 */ GIM_Reject,
7003 /* 6412 */ // Label 41: @6412
7004 /* 6412 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6435), // Rule ID 118 //
7005 /* 6417 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7006 /* 6420 */ // MIs[0] dst
7007 /* 6420 */ // No operand predicates
7008 /* 6420 */ // MIs[0] lhs
7009 /* 6420 */ // No operand predicates
7010 /* 6420 */ // MIs[0] Operand 2
7011 /* 6420 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7012 /* 6424 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7013 /* 6429 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
7014 /* 6429 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7015 /* 6434 */ GIR_EraseRootFromParent_Done,
7016 /* 6435 */ // Label 356: @6435
7017 /* 6435 */ GIM_Reject,
7018 /* 6436 */ // Label 42: @6436
7019 /* 6436 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6447), // Rule ID 163 //
7020 /* 6441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
7021 /* 6444 */ // Combiner Rule #119: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
7022 /* 6444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
7023 /* 6447 */ // Label 357: @6447
7024 /* 6447 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6458), // Rule ID 164 //
7025 /* 6452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
7026 /* 6455 */ // Combiner Rule #120: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
7027 /* 6455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
7028 /* 6458 */ // Label 358: @6458
7029 /* 6458 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6469), // Rule ID 167 //
7030 /* 6463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
7031 /* 6466 */ // Combiner Rule #123: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
7032 /* 6466 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7033 /* 6469 */ // Label 359: @6469
7034 /* 6469 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6480), // Rule ID 161 //
7035 /* 6474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
7036 /* 6477 */ // MIs[0] root
7037 /* 6477 */ // No operand predicates
7038 /* 6477 */ // MIs[0] pred
7039 /* 6477 */ // No operand predicates
7040 /* 6477 */ // MIs[0] lhs
7041 /* 6477 */ // No operand predicates
7042 /* 6477 */ // MIs[0] rhs
7043 /* 6477 */ // No operand predicates
7044 /* 6477 */ // Combiner Rule #117: canonicalize_icmp
7045 /* 6477 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
7046 /* 6480 */ // Label 360: @6480
7047 /* 6480 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6491), // Rule ID 401 //
7048 /* 6485 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
7049 /* 6488 */ // MIs[0] dst
7050 /* 6488 */ // No operand predicates
7051 /* 6488 */ // MIs[0] tst
7052 /* 6488 */ // No operand predicates
7053 /* 6488 */ // MIs[0] src1
7054 /* 6488 */ // No operand predicates
7055 /* 6488 */ // MIs[0] src2
7056 /* 6488 */ // No operand predicates
7057 /* 6488 */ // Combiner Rule #247: icmp_redundant_trunc
7058 /* 6488 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
7059 /* 6491 */ // Label 361: @6491
7060 /* 6491 */ GIM_Reject,
7061 /* 6492 */ // Label 43: @6492
7062 /* 6492 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6503), // Rule ID 162 //
7063 /* 6497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
7064 /* 6500 */ // MIs[0] root
7065 /* 6500 */ // No operand predicates
7066 /* 6500 */ // MIs[0] pred
7067 /* 6500 */ // No operand predicates
7068 /* 6500 */ // MIs[0] lhs
7069 /* 6500 */ // No operand predicates
7070 /* 6500 */ // MIs[0] rhs
7071 /* 6500 */ // No operand predicates
7072 /* 6500 */ // Combiner Rule #118: canonicalize_fcmp
7073 /* 6500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
7074 /* 6503 */ // Label 362: @6503
7075 /* 6503 */ GIM_Reject,
7076 /* 6504 */ // Label 44: @6504
7077 /* 6504 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6515), // Rule ID 109 //
7078 /* 6509 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
7079 /* 6512 */ // Combiner Rule #89: select_same_val; wip_match_opcode 'G_SELECT'
7080 /* 6512 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
7081 /* 6515 */ // Label 363: @6515
7082 /* 6515 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6526), // Rule ID 174 //
7083 /* 6520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
7084 /* 6523 */ // Combiner Rule #130: select_constant_cmp; wip_match_opcode 'G_SELECT'
7085 /* 6523 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7086 /* 6526 */ // Label 364: @6526
7087 /* 6526 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6537), // Rule ID 176 //
7088 /* 6531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
7089 /* 6534 */ // Combiner Rule #132: match_selects; wip_match_opcode 'G_SELECT'
7090 /* 6534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
7091 /* 6537 */ // Label 365: @6537
7092 /* 6537 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6548), // Rule ID 331 //
7093 /* 6542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7094 /* 6545 */ // Combiner Rule #209: select_to_minmax; wip_match_opcode 'G_SELECT'
7095 /* 6545 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
7096 /* 6548 */ // Label 366: @6548
7097 /* 6548 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6569), // Rule ID 175 //
7098 /* 6553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
7099 /* 6556 */ // MIs[0] root
7100 /* 6556 */ // No operand predicates
7101 /* 6556 */ // MIs[0] tst
7102 /* 6556 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7103 /* 6560 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
7104 /* 6564 */ // MIs[1] tst1
7105 /* 6564 */ // No operand predicates
7106 /* 6564 */ // MIs[1] a
7107 /* 6564 */ // No operand predicates
7108 /* 6564 */ // MIs[1] b
7109 /* 6564 */ // No operand predicates
7110 /* 6564 */ // MIs[0] x
7111 /* 6564 */ // No operand predicates
7112 /* 6564 */ // MIs[0] y
7113 /* 6564 */ // No operand predicates
7114 /* 6564 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7115 /* 6566 */ // Combiner Rule #131: select_to_iminmax
7116 /* 6566 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
7117 /* 6569 */ // Label 367: @6569
7118 /* 6569 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6598), // Rule ID 173 //
7119 /* 6574 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
7120 /* 6577 */ // MIs[0] dst
7121 /* 6577 */ // No operand predicates
7122 /* 6577 */ // MIs[0] undef
7123 /* 6577 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7124 /* 6581 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7125 /* 6585 */ // MIs[0] x
7126 /* 6585 */ // No operand predicates
7127 /* 6585 */ // MIs[0] y
7128 /* 6585 */ // No operand predicates
7129 /* 6585 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7130 /* 6590 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7131 /* 6592 */ // Combiner Rule #129: select_undef_cmp
7132 /* 6592 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7133 /* 6597 */ GIR_EraseRootFromParent_Done,
7134 /* 6598 */ // Label 368: @6598
7135 /* 6598 */ GIM_Reject,
7136 /* 6599 */ // Label 45: @6599
7137 /* 6599 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6610), // Rule ID 342 //
7138 /* 6604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7139 /* 6607 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
7140 /* 6607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7141 /* 6610 */ // Label 369: @6610
7142 /* 6610 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6621), // Rule ID 384 //
7143 /* 6615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7144 /* 6618 */ // Combiner Rule #234: match_addos; wip_match_opcode 'G_UADDO'
7145 /* 6618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
7146 /* 6621 */ // Label 370: @6621
7147 /* 6621 */ GIM_Reject,
7148 /* 6622 */ // Label 46: @6622
7149 /* 6622 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6633), // Rule ID 207 //
7150 /* 6627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7151 /* 6630 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_UADDE'
7152 /* 6630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7153 /* 6633 */ // Label 371: @6633
7154 /* 6633 */ GIM_Reject,
7155 /* 6634 */ // Label 47: @6634
7156 /* 6634 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6645), // Rule ID 386 //
7157 /* 6639 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
7158 /* 6642 */ // Combiner Rule #235: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
7159 /* 6642 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7160 /* 6645 */ // Label 372: @6645
7161 /* 6645 */ GIM_Reject,
7162 /* 6646 */ // Label 48: @6646
7163 /* 6646 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6657), // Rule ID 209 //
7164 /* 6651 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7165 /* 6654 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_USUBE'
7166 /* 6654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7167 /* 6657 */ // Label 373: @6657
7168 /* 6657 */ GIM_Reject,
7169 /* 6658 */ // Label 49: @6658
7170 /* 6658 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6669), // Rule ID 343 //
7171 /* 6663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7172 /* 6666 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
7173 /* 6666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7174 /* 6669 */ // Label 374: @6669
7175 /* 6669 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6680), // Rule ID 383 //
7176 /* 6674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7177 /* 6677 */ // Combiner Rule #234: match_addos; wip_match_opcode 'G_SADDO'
7178 /* 6677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
7179 /* 6680 */ // Label 375: @6680
7180 /* 6680 */ GIM_Reject,
7181 /* 6681 */ // Label 50: @6681
7182 /* 6681 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6692), // Rule ID 208 //
7183 /* 6686 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7184 /* 6689 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_SADDE'
7185 /* 6689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7186 /* 6692 */ // Label 376: @6692
7187 /* 6692 */ GIM_Reject,
7188 /* 6693 */ // Label 51: @6693
7189 /* 6693 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6704), // Rule ID 385 //
7190 /* 6698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
7191 /* 6701 */ // Combiner Rule #235: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
7192 /* 6701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7193 /* 6704 */ // Label 377: @6704
7194 /* 6704 */ GIM_Reject,
7195 /* 6705 */ // Label 52: @6705
7196 /* 6705 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6716), // Rule ID 210 //
7197 /* 6710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7198 /* 6713 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_SSUBE'
7199 /* 6713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7200 /* 6716 */ // Label 378: @6716
7201 /* 6716 */ GIM_Reject,
7202 /* 6717 */ // Label 53: @6717
7203 /* 6717 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6728), // Rule ID 203 //
7204 /* 6722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7205 /* 6725 */ // Combiner Rule #159: mulo_by_2; wip_match_opcode 'G_UMULO'
7206 /* 6725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7207 /* 6728 */ // Label 379: @6728
7208 /* 6728 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6739), // Rule ID 205 //
7209 /* 6733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7210 /* 6736 */ // Combiner Rule #160: mulo_by_0; wip_match_opcode 'G_UMULO'
7211 /* 6736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7212 /* 6739 */ // Label 380: @6739
7213 /* 6739 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6750), // Rule ID 344 //
7214 /* 6744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7215 /* 6747 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
7216 /* 6747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7217 /* 6750 */ // Label 381: @6750
7218 /* 6750 */ GIM_Reject,
7219 /* 6751 */ // Label 54: @6751
7220 /* 6751 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6762), // Rule ID 204 //
7221 /* 6756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7222 /* 6759 */ // Combiner Rule #159: mulo_by_2; wip_match_opcode 'G_SMULO'
7223 /* 6759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7224 /* 6762 */ // Label 382: @6762
7225 /* 6762 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6773), // Rule ID 206 //
7226 /* 6767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7227 /* 6770 */ // Combiner Rule #160: mulo_by_0; wip_match_opcode 'G_SMULO'
7228 /* 6770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7229 /* 6773 */ // Label 383: @6773
7230 /* 6773 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6784), // Rule ID 345 //
7231 /* 6778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7232 /* 6781 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
7233 /* 6781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7234 /* 6784 */ // Label 384: @6784
7235 /* 6784 */ GIM_Reject,
7236 /* 6785 */ // Label 55: @6785
7237 /* 6785 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6796), // Rule ID 281 //
7238 /* 6790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7239 /* 6793 */ // Combiner Rule #189: mulh_to_lshr; wip_match_opcode 'G_UMULH'
7240 /* 6793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7241 /* 6796 */ // Label 385: @6796
7242 /* 6796 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6807), // Rule ID 346 //
7243 /* 6801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7244 /* 6804 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
7245 /* 6804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7246 /* 6807 */ // Label 386: @6807
7247 /* 6807 */ GIM_Reject,
7248 /* 6808 */ // Label 56: @6808
7249 /* 6808 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6819), // Rule ID 347 //
7250 /* 6813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7251 /* 6816 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
7252 /* 6816 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7253 /* 6819 */ // Label 387: @6819
7254 /* 6819 */ GIM_Reject,
7255 /* 6820 */ // Label 57: @6820
7256 /* 6820 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6831), // Rule ID 348 //
7257 /* 6825 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7258 /* 6828 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
7259 /* 6828 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7260 /* 6831 */ // Label 388: @6831
7261 /* 6831 */ GIM_Reject,
7262 /* 6832 */ // Label 58: @6832
7263 /* 6832 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6843), // Rule ID 349 //
7264 /* 6837 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7265 /* 6840 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
7266 /* 6840 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7267 /* 6843 */ // Label 389: @6843
7268 /* 6843 */ GIM_Reject,
7269 /* 6844 */ // Label 59: @6844
7270 /* 6844 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6855), // Rule ID 222 //
7271 /* 6849 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
7272 /* 6852 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
7273 /* 6852 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7274 /* 6855 */ // Label 390: @6855
7275 /* 6855 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6866), // Rule ID 226 //
7276 /* 6860 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
7277 /* 6863 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
7278 /* 6863 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7279 /* 6866 */ // Label 391: @6866
7280 /* 6866 */ GIM_Reject,
7281 /* 6867 */ // Label 60: @6867
7282 /* 6867 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(6878), // Rule ID 221 //
7283 /* 6872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
7284 /* 6875 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
7285 /* 6875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7286 /* 6878 */ // Label 392: @6878
7287 /* 6878 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(6889), // Rule ID 227 //
7288 /* 6883 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
7289 /* 6886 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
7290 /* 6886 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7291 /* 6889 */ // Label 393: @6889
7292 /* 6889 */ GIM_Reject,
7293 /* 6890 */ // Label 61: @6890
7294 /* 6890 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(6901), // Rule ID 350 //
7295 /* 6895 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7296 /* 6898 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
7297 /* 6898 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7298 /* 6901 */ // Label 394: @6901
7299 /* 6901 */ GIM_Reject,
7300 /* 6902 */ // Label 62: @6902
7301 /* 6902 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(6913), // Rule ID 351 //
7302 /* 6907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7303 /* 6910 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
7304 /* 6910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7305 /* 6913 */ // Label 395: @6913
7306 /* 6913 */ GIM_Reject,
7307 /* 6914 */ // Label 63: @6914
7308 /* 6914 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(6925), // Rule ID 352 //
7309 /* 6919 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7310 /* 6922 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
7311 /* 6922 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7312 /* 6925 */ // Label 396: @6925
7313 /* 6925 */ GIM_Reject,
7314 /* 6926 */ // Label 64: @6926
7315 /* 6926 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(6937), // Rule ID 353 //
7316 /* 6931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7317 /* 6934 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
7318 /* 6934 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7319 /* 6937 */ // Label 397: @6937
7320 /* 6937 */ GIM_Reject,
7321 /* 6938 */ // Label 65: @6938
7322 /* 6938 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(6949), // Rule ID 271 //
7323 /* 6943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7324 /* 6946 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
7325 /* 6946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7326 /* 6949 */ // Label 398: @6949
7327 /* 6949 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(6960), // Rule ID 282 //
7328 /* 6954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7329 /* 6957 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FADD'
7330 /* 6957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7331 /* 6960 */ // Label 399: @6960
7332 /* 6960 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(6971), // Rule ID 289 //
7333 /* 6965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
7334 /* 6968 */ // Combiner Rule #192: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7335 /* 6968 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
7336 /* 6971 */ // Label 400: @6971
7337 /* 6971 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(6982), // Rule ID 290 //
7338 /* 6976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
7339 /* 6979 */ // Combiner Rule #193: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7340 /* 6979 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
7341 /* 6982 */ // Label 401: @6982
7342 /* 6982 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(6993), // Rule ID 291 //
7343 /* 6987 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7344 /* 6990 */ // Combiner Rule #194: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7345 /* 6990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7346 /* 6993 */ // Label 402: @6993
7347 /* 6993 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(7004), // Rule ID 292 //
7348 /* 6998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7349 /* 7001 */ // Combiner Rule #195: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7350 /* 7001 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7351 /* 7004 */ // Label 403: @7004
7352 /* 7004 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(7015), // Rule ID 315 //
7353 /* 7009 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7354 /* 7012 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FADD'
7355 /* 7012 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7356 /* 7015 */ // Label 404: @7015
7357 /* 7015 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(7026), // Rule ID 354 //
7358 /* 7020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7359 /* 7023 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
7360 /* 7023 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7361 /* 7026 */ // Label 405: @7026
7362 /* 7026 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(7049), // Rule ID 147 //
7363 /* 7031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
7364 /* 7034 */ // MIs[0] dst
7365 /* 7034 */ // No operand predicates
7366 /* 7034 */ // MIs[0] x
7367 /* 7034 */ // No operand predicates
7368 /* 7034 */ // MIs[0] y
7369 /* 7034 */ // No operand predicates
7370 /* 7034 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
7371 /* 7038 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7372 /* 7043 */ // Combiner Rule #107: right_identity_neg_zero_fp
7373 /* 7043 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7374 /* 7048 */ GIR_EraseRootFromParent_Done,
7375 /* 7049 */ // Label 406: @7049
7376 /* 7049 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(7078), // Rule ID 148 //
7377 /* 7054 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
7378 /* 7057 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
7379 /* 7063 */ // MIs[0] dst
7380 /* 7063 */ // No operand predicates
7381 /* 7063 */ // MIs[0] x
7382 /* 7063 */ // No operand predicates
7383 /* 7063 */ // MIs[0] y
7384 /* 7063 */ // No operand predicates
7385 /* 7063 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7386 /* 7067 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7387 /* 7072 */ // Combiner Rule #108: right_identity_neg_zero_fp_nsz
7388 /* 7072 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7389 /* 7077 */ GIR_EraseRootFromParent_Done,
7390 /* 7078 */ // Label 407: @7078
7391 /* 7078 */ GIM_Reject,
7392 /* 7079 */ // Label 66: @7079
7393 /* 7079 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(7090), // Rule ID 272 //
7394 /* 7084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7395 /* 7087 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
7396 /* 7087 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7397 /* 7090 */ // Label 408: @7090
7398 /* 7090 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(7101), // Rule ID 283 //
7399 /* 7095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7400 /* 7098 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FSUB'
7401 /* 7098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7402 /* 7101 */ // Label 409: @7101
7403 /* 7101 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(7112), // Rule ID 293 //
7404 /* 7106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
7405 /* 7109 */ // Combiner Rule #196: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7406 /* 7109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7407 /* 7112 */ // Label 410: @7112
7408 /* 7112 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(7123), // Rule ID 294 //
7409 /* 7117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7410 /* 7120 */ // Combiner Rule #197: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7411 /* 7120 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7412 /* 7123 */ // Label 411: @7123
7413 /* 7123 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(7134), // Rule ID 295 //
7414 /* 7128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
7415 /* 7131 */ // Combiner Rule #198: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7416 /* 7131 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7417 /* 7134 */ // Label 412: @7134
7418 /* 7134 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(7145), // Rule ID 296 //
7419 /* 7139 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
7420 /* 7142 */ // Combiner Rule #199: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7421 /* 7142 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7422 /* 7145 */ // Label 413: @7145
7423 /* 7145 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(7156), // Rule ID 316 //
7424 /* 7150 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7425 /* 7153 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FSUB'
7426 /* 7153 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7427 /* 7156 */ // Label 414: @7156
7428 /* 7156 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(7167), // Rule ID 332 //
7429 /* 7161 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
7430 /* 7164 */ // Combiner Rule #210: fsub_to_fneg; wip_match_opcode 'G_FSUB'
7431 /* 7164 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
7432 /* 7167 */ // Label 415: @7167
7433 /* 7167 */ GIM_Reject,
7434 /* 7168 */ // Label 67: @7168
7435 /* 7168 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(7179), // Rule ID 273 //
7436 /* 7173 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7437 /* 7176 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
7438 /* 7176 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7439 /* 7179 */ // Label 416: @7179
7440 /* 7179 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(7190), // Rule ID 284 //
7441 /* 7184 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7442 /* 7187 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FMUL'
7443 /* 7187 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7444 /* 7190 */ // Label 417: @7190
7445 /* 7190 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(7201), // Rule ID 314 //
7446 /* 7195 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7447 /* 7198 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMUL'
7448 /* 7198 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7449 /* 7201 */ // Label 418: @7201
7450 /* 7201 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(7212), // Rule ID 355 //
7451 /* 7206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7452 /* 7209 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
7453 /* 7209 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7454 /* 7212 */ // Label 419: @7212
7455 /* 7212 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(7235), // Rule ID 138 //
7456 /* 7217 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
7457 /* 7220 */ // MIs[0] dst
7458 /* 7220 */ // No operand predicates
7459 /* 7220 */ // MIs[0] x
7460 /* 7220 */ // No operand predicates
7461 /* 7220 */ // MIs[0] y
7462 /* 7220 */ // No operand predicates
7463 /* 7220 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7464 /* 7224 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7465 /* 7229 */ // Combiner Rule #100: right_identity_one_fp
7466 /* 7229 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7467 /* 7234 */ GIR_EraseRootFromParent_Done,
7468 /* 7235 */ // Label 420: @7235
7469 /* 7235 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(7255), // Rule ID 149 //
7470 /* 7240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
7471 /* 7243 */ // MIs[0] dst
7472 /* 7243 */ // No operand predicates
7473 /* 7243 */ // MIs[0] x
7474 /* 7243 */ // No operand predicates
7475 /* 7243 */ // MIs[0] y
7476 /* 7243 */ // No operand predicates
7477 /* 7243 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
7478 /* 7247 */ // Combiner Rule #109: right_identity_neg_one_fp
7479 /* 7247 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
7480 /* 7250 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7481 /* 7252 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7482 /* 7254 */ GIR_EraseRootFromParent_Done,
7483 /* 7255 */ // Label 421: @7255
7484 /* 7255 */ GIM_Reject,
7485 /* 7256 */ // Label 68: @7256
7486 /* 7256 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(7267), // Rule ID 276 //
7487 /* 7261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7488 /* 7264 */ // Combiner Rule #186: constant_fold_fma; wip_match_opcode 'G_FMA'
7489 /* 7264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7490 /* 7267 */ // Label 422: @7267
7491 /* 7267 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7278), // Rule ID 287 //
7492 /* 7272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7493 /* 7275 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FMA'
7494 /* 7275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7495 /* 7278 */ // Label 423: @7278
7496 /* 7278 */ GIM_Reject,
7497 /* 7279 */ // Label 69: @7279
7498 /* 7279 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7290), // Rule ID 275 //
7499 /* 7284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7500 /* 7287 */ // Combiner Rule #186: constant_fold_fma; wip_match_opcode 'G_FMAD'
7501 /* 7287 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7502 /* 7290 */ // Label 424: @7290
7503 /* 7290 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7301), // Rule ID 286 //
7504 /* 7295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7505 /* 7298 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FMAD'
7506 /* 7298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7507 /* 7301 */ // Label 425: @7301
7508 /* 7301 */ GIM_Reject,
7509 /* 7302 */ // Label 70: @7302
7510 /* 7302 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7313), // Rule ID 274 //
7511 /* 7307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7512 /* 7310 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
7513 /* 7310 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7514 /* 7313 */ // Label 426: @7313
7515 /* 7313 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7324), // Rule ID 285 //
7516 /* 7318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7517 /* 7321 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FDIV'
7518 /* 7321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7519 /* 7324 */ // Label 427: @7324
7520 /* 7324 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7335), // Rule ID 317 //
7521 /* 7329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7522 /* 7332 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FDIV'
7523 /* 7332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7524 /* 7335 */ // Label 428: @7335
7525 /* 7335 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7346), // Rule ID 329 //
7526 /* 7340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7527 /* 7343 */ // MIs[0] dst
7528 /* 7343 */ // No operand predicates
7529 /* 7343 */ // MIs[0] src1
7530 /* 7343 */ // No operand predicates
7531 /* 7343 */ // MIs[0] src2
7532 /* 7343 */ // No operand predicates
7533 /* 7343 */ // Combiner Rule #207: fdiv_repeated_divison
7534 /* 7343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7535 /* 7346 */ // Label 429: @7346
7536 /* 7346 */ GIM_Reject,
7537 /* 7347 */ // Label 71: @7347
7538 /* 7347 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7358), // Rule ID 318 //
7539 /* 7352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7540 /* 7355 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FREM'
7541 /* 7355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7542 /* 7358 */ // Label 430: @7358
7543 /* 7358 */ GIM_Reject,
7544 /* 7359 */ // Label 72: @7359
7545 /* 7359 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7380), // Rule ID 215 //
7546 /* 7364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7547 /* 7367 */ // MIs[0] dst
7548 /* 7367 */ // No operand predicates
7549 /* 7367 */ // MIs[0] float
7550 /* 7367 */ // No operand predicates
7551 /* 7367 */ // MIs[0] int
7552 /* 7367 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7553 /* 7371 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7554 /* 7375 */ // MIs[1] imm
7555 /* 7375 */ // No operand predicates
7556 /* 7375 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7557 /* 7377 */ // Combiner Rule #163: expand_const_fpowi
7558 /* 7377 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7559 /* 7380 */ // Label 431: @7380
7560 /* 7380 */ GIM_Reject,
7561 /* 7381 */ // Label 73: @7381
7562 /* 7381 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7402), // Rule ID 189 //
7563 /* 7386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
7564 /* 7389 */ // MIs[0] dst
7565 /* 7389 */ // No operand predicates
7566 /* 7389 */ // MIs[0] src0
7567 /* 7389 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7568 /* 7393 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7569 /* 7397 */ // MIs[1] cst
7570 /* 7397 */ // No operand predicates
7571 /* 7397 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7572 /* 7399 */ // Combiner Rule #145: constant_fold_flog2
7573 /* 7399 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7574 /* 7402 */ // Label 432: @7402
7575 /* 7402 */ GIM_Reject,
7576 /* 7403 */ // Label 74: @7403
7577 /* 7403 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7424), // Rule ID 186 //
7578 /* 7408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7579 /* 7411 */ // MIs[0] dst
7580 /* 7411 */ // No operand predicates
7581 /* 7411 */ // MIs[0] src0
7582 /* 7411 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7583 /* 7415 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7584 /* 7419 */ // MIs[1] cst
7585 /* 7419 */ // No operand predicates
7586 /* 7419 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7587 /* 7421 */ // Combiner Rule #142: constant_fold_fneg
7588 /* 7421 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7589 /* 7424 */ // Label 433: @7424
7590 /* 7424 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7453), // Rule ID 136 //
7591 /* 7429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
7592 /* 7432 */ // MIs[0] dst
7593 /* 7432 */ // No operand predicates
7594 /* 7432 */ // MIs[0] t
7595 /* 7432 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7596 /* 7436 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7597 /* 7440 */ // MIs[1] src
7598 /* 7440 */ // No operand predicates
7599 /* 7440 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7600 /* 7445 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7601 /* 7447 */ // Combiner Rule #98: fneg_fneg_fold
7602 /* 7447 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7603 /* 7452 */ GIR_EraseRootFromParent_Done,
7604 /* 7453 */ // Label 434: @7453
7605 /* 7453 */ GIM_Reject,
7606 /* 7454 */ // Label 75: @7454
7607 /* 7454 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7475), // Rule ID 191 //
7608 /* 7459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
7609 /* 7462 */ // MIs[0] dst
7610 /* 7462 */ // No operand predicates
7611 /* 7462 */ // MIs[0] src0
7612 /* 7462 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7613 /* 7466 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7614 /* 7470 */ // MIs[1] cst
7615 /* 7470 */ // No operand predicates
7616 /* 7470 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7617 /* 7472 */ // Combiner Rule #147: constant_fold_fpext
7618 /* 7472 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7619 /* 7475 */ // Label 435: @7475
7620 /* 7475 */ GIM_Reject,
7621 /* 7476 */ // Label 76: @7476
7622 /* 7476 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7497), // Rule ID 190 //
7623 /* 7481 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
7624 /* 7484 */ // MIs[0] dst
7625 /* 7484 */ // No operand predicates
7626 /* 7484 */ // MIs[0] src0
7627 /* 7484 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7628 /* 7488 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7629 /* 7492 */ // MIs[1] cst
7630 /* 7492 */ // No operand predicates
7631 /* 7492 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7632 /* 7494 */ // Combiner Rule #146: constant_fold_fptrunc
7633 /* 7494 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7634 /* 7497 */ // Label 436: @7497
7635 /* 7497 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7518), // Rule ID 146 //
7636 /* 7502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7637 /* 7505 */ // MIs[0] dst
7638 /* 7505 */ // No operand predicates
7639 /* 7505 */ // MIs[0] src1
7640 /* 7505 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7641 /* 7509 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7642 /* 7513 */ // MIs[1] src0
7643 /* 7513 */ // No operand predicates
7644 /* 7513 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7645 /* 7515 */ // Combiner Rule #106: fptrunc_fpext_fold
7646 /* 7515 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7647 /* 7518 */ // Label 437: @7518
7648 /* 7518 */ GIM_Reject,
7649 /* 7519 */ // Label 77: @7519
7650 /* 7519 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7540), // Rule ID 98 //
7651 /* 7524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7652 /* 7527 */ // MIs[0] dst
7653 /* 7527 */ // No operand predicates
7654 /* 7527 */ // MIs[0] __unary_undef_to_undef_match_0.x
7655 /* 7527 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7656 /* 7531 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7657 /* 7535 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7658 /* 7537 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7659 /* 7537 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7660 /* 7540 */ // Label 438: @7540
7661 /* 7540 */ GIM_Reject,
7662 /* 7541 */ // Label 78: @7541
7663 /* 7541 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7562), // Rule ID 99 //
7664 /* 7546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7665 /* 7549 */ // MIs[0] dst
7666 /* 7549 */ // No operand predicates
7667 /* 7549 */ // MIs[0] __unary_undef_to_undef_match_0.x
7668 /* 7549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7669 /* 7553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7670 /* 7557 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7671 /* 7559 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7672 /* 7559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7673 /* 7562 */ // Label 439: @7562
7674 /* 7562 */ GIM_Reject,
7675 /* 7563 */ // Label 79: @7563
7676 /* 7563 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7574), // Rule ID 82 //
7677 /* 7568 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
7678 /* 7571 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7679 /* 7571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7680 /* 7574 */ // Label 440: @7574
7681 /* 7574 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7589), // Rule ID 199 //
7682 /* 7579 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
7683 /* 7582 */ // MIs[0] dst
7684 /* 7582 */ // No operand predicates
7685 /* 7582 */ // MIs[0] Operand 1
7686 /* 7582 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7687 /* 7586 */ // Combiner Rule #155: itof_const_zero_fold_si
7688 /* 7586 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7689 /* 7589 */ // Label 441: @7589
7690 /* 7589 */ GIM_Reject,
7691 /* 7590 */ // Label 80: @7590
7692 /* 7590 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7601), // Rule ID 81 //
7693 /* 7595 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
7694 /* 7598 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7695 /* 7598 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7696 /* 7601 */ // Label 442: @7601
7697 /* 7601 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7616), // Rule ID 200 //
7698 /* 7606 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
7699 /* 7609 */ // MIs[0] dst
7700 /* 7609 */ // No operand predicates
7701 /* 7609 */ // MIs[0] Operand 1
7702 /* 7609 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7703 /* 7613 */ // Combiner Rule #156: itof_const_zero_fold_ui
7704 /* 7613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7705 /* 7616 */ // Label 443: @7616
7706 /* 7616 */ GIM_Reject,
7707 /* 7617 */ // Label 81: @7617
7708 /* 7617 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7646), // Rule ID 25 //
7709 /* 7622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7710 /* 7625 */ // MIs[0] dst
7711 /* 7625 */ // No operand predicates
7712 /* 7625 */ // MIs[0] src
7713 /* 7625 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7714 /* 7629 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7715 /* 7633 */ // MIs[1] __idempotent_prop_match_0.x
7716 /* 7633 */ // No operand predicates
7717 /* 7633 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7718 /* 7638 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7719 /* 7640 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
7720 /* 7640 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7721 /* 7645 */ GIR_EraseRootFromParent_Done,
7722 /* 7646 */ // Label 444: @7646
7723 /* 7646 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7667), // Rule ID 187 //
7724 /* 7651 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
7725 /* 7654 */ // MIs[0] dst
7726 /* 7654 */ // No operand predicates
7727 /* 7654 */ // MIs[0] src0
7728 /* 7654 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7729 /* 7658 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7730 /* 7662 */ // MIs[1] cst
7731 /* 7662 */ // No operand predicates
7732 /* 7662 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7733 /* 7664 */ // Combiner Rule #143: constant_fold_fabs
7734 /* 7664 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7735 /* 7667 */ // Label 445: @7667
7736 /* 7667 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7695), // Rule ID 280 //
7737 /* 7672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
7738 /* 7675 */ // MIs[0] dst
7739 /* 7675 */ // No operand predicates
7740 /* 7675 */ // MIs[0] tmp
7741 /* 7675 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7742 /* 7679 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7743 /* 7683 */ // MIs[1] x
7744 /* 7683 */ // No operand predicates
7745 /* 7683 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7746 /* 7685 */ // Combiner Rule #188: fabs_fneg_fold
7747 /* 7685 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7748 /* 7688 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7749 /* 7690 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7750 /* 7694 */ GIR_EraseRootFromParent_Done,
7751 /* 7695 */ // Label 446: @7695
7752 /* 7695 */ GIM_Reject,
7753 /* 7696 */ // Label 82: @7696
7754 /* 7696 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7725), // Rule ID 26 //
7755 /* 7701 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7756 /* 7704 */ // MIs[0] dst
7757 /* 7704 */ // No operand predicates
7758 /* 7704 */ // MIs[0] src
7759 /* 7704 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7760 /* 7708 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7761 /* 7712 */ // MIs[1] __idempotent_prop_match_0.x
7762 /* 7712 */ // No operand predicates
7763 /* 7712 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7764 /* 7717 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7765 /* 7719 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
7766 /* 7719 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7767 /* 7724 */ GIR_EraseRootFromParent_Done,
7768 /* 7725 */ // Label 447: @7725
7769 /* 7725 */ GIM_Reject,
7770 /* 7726 */ // Label 83: @7726
7771 /* 7726 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7737), // Rule ID 211 //
7772 /* 7731 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7773 /* 7734 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7774 /* 7734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7775 /* 7737 */ // Label 448: @7737
7776 /* 7737 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7748), // Rule ID 319 //
7777 /* 7742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7778 /* 7745 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7779 /* 7745 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7780 /* 7748 */ // Label 449: @7748
7781 /* 7748 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7759), // Rule ID 356 //
7782 /* 7753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7783 /* 7756 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7784 /* 7756 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7785 /* 7759 */ // Label 450: @7759
7786 /* 7759 */ GIM_Reject,
7787 /* 7760 */ // Label 84: @7760
7788 /* 7760 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7771), // Rule ID 212 //
7789 /* 7765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7790 /* 7768 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7791 /* 7768 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7792 /* 7771 */ // Label 451: @7771
7793 /* 7771 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7782), // Rule ID 320 //
7794 /* 7776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7795 /* 7779 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7796 /* 7779 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7797 /* 7782 */ // Label 452: @7782
7798 /* 7782 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7793), // Rule ID 357 //
7799 /* 7787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7800 /* 7790 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7801 /* 7790 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7802 /* 7793 */ // Label 453: @7793
7803 /* 7793 */ GIM_Reject,
7804 /* 7794 */ // Label 85: @7794
7805 /* 7794 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7805), // Rule ID 358 //
7806 /* 7799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7807 /* 7802 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7808 /* 7802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7809 /* 7805 */ // Label 454: @7805
7810 /* 7805 */ GIM_Reject,
7811 /* 7806 */ // Label 86: @7806
7812 /* 7806 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7817), // Rule ID 359 //
7813 /* 7811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7814 /* 7814 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7815 /* 7814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7816 /* 7817 */ // Label 455: @7817
7817 /* 7817 */ GIM_Reject,
7818 /* 7818 */ // Label 87: @7818
7819 /* 7818 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7829), // Rule ID 213 //
7820 /* 7823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7821 /* 7826 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7822 /* 7826 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7823 /* 7829 */ // Label 456: @7829
7824 /* 7829 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7840), // Rule ID 321 //
7825 /* 7834 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7826 /* 7837 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7827 /* 7837 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7828 /* 7840 */ // Label 457: @7840
7829 /* 7840 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7851), // Rule ID 360 //
7830 /* 7845 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7831 /* 7848 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7832 /* 7848 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7833 /* 7851 */ // Label 458: @7851
7834 /* 7851 */ GIM_Reject,
7835 /* 7852 */ // Label 88: @7852
7836 /* 7852 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(7863), // Rule ID 214 //
7837 /* 7857 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7838 /* 7860 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7839 /* 7860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7840 /* 7863 */ // Label 459: @7863
7841 /* 7863 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(7874), // Rule ID 322 //
7842 /* 7868 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7843 /* 7871 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7844 /* 7871 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7845 /* 7874 */ // Label 460: @7874
7846 /* 7874 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(7885), // Rule ID 361 //
7847 /* 7879 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7848 /* 7882 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7849 /* 7882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7850 /* 7885 */ // Label 461: @7885
7851 /* 7885 */ GIM_Reject,
7852 /* 7886 */ // Label 89: @7886
7853 /* 7886 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(7897), // Rule ID 158 //
7854 /* 7891 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7855 /* 7894 */ // Combiner Rule #114: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7856 /* 7894 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7857 /* 7897 */ // Label 462: @7897
7858 /* 7897 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(7908), // Rule ID 160 //
7859 /* 7902 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
7860 /* 7905 */ // Combiner Rule #116: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7861 /* 7905 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7862 /* 7908 */ // Label 463: @7908
7863 /* 7908 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(7919), // Rule ID 201 //
7864 /* 7913 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7865 /* 7916 */ // Combiner Rule #157: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7866 /* 7916 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7867 /* 7919 */ // Label 464: @7919
7868 /* 7919 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(7930), // Rule ID 217 //
7869 /* 7924 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
7870 /* 7927 */ // Combiner Rule #165: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7871 /* 7927 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7872 /* 7930 */ // Label 465: @7930
7873 /* 7930 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(7941), // Rule ID 254 //
7874 /* 7935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7875 /* 7938 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7876 /* 7938 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7877 /* 7941 */ // Label 466: @7941
7878 /* 7941 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(7952), // Rule ID 299 //
7879 /* 7946 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7880 /* 7949 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7881 /* 7949 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7882 /* 7952 */ // Label 467: @7952
7883 /* 7952 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(7975), // Rule ID 117 //
7884 /* 7957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7885 /* 7960 */ // MIs[0] dst
7886 /* 7960 */ // No operand predicates
7887 /* 7960 */ // MIs[0] lhs
7888 /* 7960 */ // No operand predicates
7889 /* 7960 */ // MIs[0] Operand 2
7890 /* 7960 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7891 /* 7964 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7892 /* 7969 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
7893 /* 7969 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7894 /* 7974 */ GIR_EraseRootFromParent_Done,
7895 /* 7975 */ // Label 468: @7975
7896 /* 7975 */ GIM_Reject,
7897 /* 7976 */ // Label 90: @7976
7898 /* 7976 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(7987), // Rule ID 267 //
7899 /* 7981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7900 /* 7984 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SMIN'
7901 /* 7984 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7902 /* 7987 */ // Label 469: @7987
7903 /* 7987 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(7998), // Rule ID 310 //
7904 /* 7992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7905 /* 7995 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7906 /* 7995 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7907 /* 7998 */ // Label 470: @7998
7908 /* 7998 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(8009), // Rule ID 338 //
7909 /* 8003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7910 /* 8006 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7911 /* 8006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7912 /* 8009 */ // Label 471: @8009
7913 /* 8009 */ GIM_Reject,
7914 /* 8010 */ // Label 91: @8010
7915 /* 8010 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(8021), // Rule ID 268 //
7916 /* 8015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7917 /* 8018 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SMAX'
7918 /* 8018 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7919 /* 8021 */ // Label 472: @8021
7920 /* 8021 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(8032), // Rule ID 311 //
7921 /* 8026 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7922 /* 8029 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7923 /* 8029 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7924 /* 8032 */ // Label 473: @8032
7925 /* 8032 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(8043), // Rule ID 339 //
7926 /* 8037 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7927 /* 8040 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7928 /* 8040 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7929 /* 8043 */ // Label 474: @8043
7930 /* 8043 */ GIM_Reject,
7931 /* 8044 */ // Label 92: @8044
7932 /* 8044 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(8055), // Rule ID 269 //
7933 /* 8049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7934 /* 8052 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UMIN'
7935 /* 8052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7936 /* 8055 */ // Label 475: @8055
7937 /* 8055 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(8066), // Rule ID 312 //
7938 /* 8060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7939 /* 8063 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7940 /* 8063 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7941 /* 8066 */ // Label 476: @8066
7942 /* 8066 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(8077), // Rule ID 340 //
7943 /* 8071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7944 /* 8074 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7945 /* 8074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7946 /* 8077 */ // Label 477: @8077
7947 /* 8077 */ GIM_Reject,
7948 /* 8078 */ // Label 93: @8078
7949 /* 8078 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(8089), // Rule ID 270 //
7950 /* 8083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7951 /* 8086 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UMAX'
7952 /* 8086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7953 /* 8089 */ // Label 478: @8089
7954 /* 8089 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(8100), // Rule ID 313 //
7955 /* 8094 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7956 /* 8097 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7957 /* 8097 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7958 /* 8100 */ // Label 479: @8100
7959 /* 8100 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(8111), // Rule ID 341 //
7960 /* 8105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7961 /* 8108 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7962 /* 8108 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7963 /* 8111 */ // Label 480: @8111
7964 /* 8111 */ GIM_Reject,
7965 /* 8112 */ // Label 94: @8112
7966 /* 8112 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(8123), // Rule ID 92 //
7967 /* 8117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7968 /* 8120 */ // Combiner Rule #82: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7969 /* 8120 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7970 /* 8123 */ // Label 481: @8123
7971 /* 8123 */ GIM_Reject,
7972 /* 8124 */ // Label 95: @8124
7973 /* 8124 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(8135), // Rule ID 185 //
7974 /* 8129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
7975 /* 8132 */ // Combiner Rule #141: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7976 /* 8132 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7977 /* 8135 */ // Label 482: @8135
7978 /* 8135 */ GIM_Reject,
7979 /* 8136 */ // Label 96: @8136
7980 /* 8136 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(8147), // Rule ID 32 //
7981 /* 8141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
7982 /* 8144 */ // Combiner Rule #30: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7983 /* 8144 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7984 /* 8147 */ // Label 483: @8147
7985 /* 8147 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(8158), // Rule ID 73 //
7986 /* 8152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
7987 /* 8155 */ // Combiner Rule #71: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7988 /* 8155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7989 /* 8158 */ // Label 484: @8158
7990 /* 8158 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8169), // Rule ID 107 //
7991 /* 8163 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
7992 /* 8166 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7993 /* 8166 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7994 /* 8169 */ // Label 485: @8169
7995 /* 8169 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8208), // Rule ID 44 //
7996 /* 8174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
7997 /* 8177 */ // MIs[0] root
7998 /* 8177 */ // No operand predicates
7999 /* 8177 */ // MIs[0] src
8000 /* 8177 */ // No operand predicates
8001 /* 8177 */ // MIs[0] elt
8002 /* 8177 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8003 /* 8181 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
8004 /* 8185 */ // MIs[1] src
8005 /* 8185 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
8006 /* 8190 */ // MIs[1] idx
8007 /* 8190 */ // No operand predicates
8008 /* 8190 */ // MIs[0] idx
8009 /* 8190 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
8010 /* 8195 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8011 /* 8200 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8012 /* 8202 */ // Combiner Rule #42: insert_vector_element_extract_vector_element
8013 /* 8202 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8014 /* 8207 */ GIR_EraseRootFromParent_Done,
8015 /* 8208 */ // Label 486: @8208
8016 /* 8208 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8241), // Rule ID 30 //
8017 /* 8213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
8018 /* 8216 */ // MIs[0] root
8019 /* 8216 */ // No operand predicates
8020 /* 8216 */ // MIs[0] src
8021 /* 8216 */ // No operand predicates
8022 /* 8216 */ // MIs[0] elt
8023 /* 8216 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8024 /* 8220 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8025 /* 8224 */ // MIs[0] idx
8026 /* 8224 */ // No operand predicates
8027 /* 8224 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
8028 /* 8228 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8029 /* 8233 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8030 /* 8235 */ // Combiner Rule #28: insert_vector_element_elt_undef
8031 /* 8235 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8032 /* 8240 */ GIR_EraseRootFromParent_Done,
8033 /* 8241 */ // Label 487: @8241
8034 /* 8241 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8265), // Rule ID 29 //
8035 /* 8246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
8036 /* 8249 */ // MIs[0] root
8037 /* 8249 */ // No operand predicates
8038 /* 8249 */ // MIs[0] src
8039 /* 8249 */ // No operand predicates
8040 /* 8249 */ // MIs[0] elt
8041 /* 8249 */ // No operand predicates
8042 /* 8249 */ // MIs[0] idx
8043 /* 8249 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
8044 /* 8253 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8045 /* 8257 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8046 /* 8259 */ // Combiner Rule #27: insert_vector_element_idx_undef
8047 /* 8259 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8048 /* 8262 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8049 /* 8264 */ GIR_EraseRootFromParent_Done,
8050 /* 8265 */ // Label 488: @8265
8051 /* 8265 */ GIM_Reject,
8052 /* 8266 */ // Label 97: @8266
8053 /* 8266 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8277), // Rule ID 31 //
8054 /* 8271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
8055 /* 8274 */ // Combiner Rule #29: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8056 /* 8274 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
8057 /* 8277 */ // Label 489: @8277
8058 /* 8277 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8288), // Rule ID 74 //
8059 /* 8282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
8060 /* 8285 */ // Combiner Rule #72: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8061 /* 8285 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
8062 /* 8288 */ // Label 490: @8288
8063 /* 8288 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8299), // Rule ID 80 //
8064 /* 8293 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
8065 /* 8296 */ // Combiner Rule #76: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8066 /* 8296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
8067 /* 8299 */ // Label 491: @8299
8068 /* 8299 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8310), // Rule ID 108 //
8069 /* 8304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8070 /* 8307 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8071 /* 8307 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
8072 /* 8310 */ // Label 492: @8310
8073 /* 8310 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8334), // Rule ID 42 //
8074 /* 8315 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
8075 /* 8318 */ // MIs[0] root
8076 /* 8318 */ // No operand predicates
8077 /* 8318 */ // MIs[0] src
8078 /* 8318 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8079 /* 8322 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8080 /* 8326 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
8081 /* 8329 */ // MIs[1] x
8082 /* 8329 */ // No operand predicates
8083 /* 8329 */ // MIs[1] y
8084 /* 8329 */ // No operand predicates
8085 /* 8329 */ // MIs[1] z
8086 /* 8329 */ // No operand predicates
8087 /* 8329 */ // MIs[1] a
8088 /* 8329 */ // No operand predicates
8089 /* 8329 */ // MIs[1] b
8090 /* 8329 */ // No operand predicates
8091 /* 8329 */ // MIs[1] c
8092 /* 8329 */ // No operand predicates
8093 /* 8329 */ // MIs[1] d
8094 /* 8329 */ // No operand predicates
8095 /* 8329 */ // MIs[1] e
8096 /* 8329 */ // No operand predicates
8097 /* 8329 */ // MIs[0] idx
8098 /* 8329 */ // No operand predicates
8099 /* 8329 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8100 /* 8331 */ // Combiner Rule #40: extract_vector_element_build_vector_trunc8
8101 /* 8331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8102 /* 8334 */ // Label 493: @8334
8103 /* 8334 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8358), // Rule ID 41 //
8104 /* 8339 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
8105 /* 8342 */ // MIs[0] root
8106 /* 8342 */ // No operand predicates
8107 /* 8342 */ // MIs[0] src
8108 /* 8342 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8109 /* 8346 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8110 /* 8350 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
8111 /* 8353 */ // MIs[1] x
8112 /* 8353 */ // No operand predicates
8113 /* 8353 */ // MIs[1] y
8114 /* 8353 */ // No operand predicates
8115 /* 8353 */ // MIs[1] z
8116 /* 8353 */ // No operand predicates
8117 /* 8353 */ // MIs[1] a
8118 /* 8353 */ // No operand predicates
8119 /* 8353 */ // MIs[1] b
8120 /* 8353 */ // No operand predicates
8121 /* 8353 */ // MIs[1] c
8122 /* 8353 */ // No operand predicates
8123 /* 8353 */ // MIs[1] d
8124 /* 8353 */ // No operand predicates
8125 /* 8353 */ // MIs[0] idx
8126 /* 8353 */ // No operand predicates
8127 /* 8353 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8128 /* 8355 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc7
8129 /* 8355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8130 /* 8358 */ // Label 494: @8358
8131 /* 8358 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8382), // Rule ID 40 //
8132 /* 8363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
8133 /* 8366 */ // MIs[0] root
8134 /* 8366 */ // No operand predicates
8135 /* 8366 */ // MIs[0] src
8136 /* 8366 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8137 /* 8370 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8138 /* 8374 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
8139 /* 8377 */ // MIs[1] x
8140 /* 8377 */ // No operand predicates
8141 /* 8377 */ // MIs[1] y
8142 /* 8377 */ // No operand predicates
8143 /* 8377 */ // MIs[1] z
8144 /* 8377 */ // No operand predicates
8145 /* 8377 */ // MIs[1] a
8146 /* 8377 */ // No operand predicates
8147 /* 8377 */ // MIs[1] b
8148 /* 8377 */ // No operand predicates
8149 /* 8377 */ // MIs[1] c
8150 /* 8377 */ // No operand predicates
8151 /* 8377 */ // MIs[0] idx
8152 /* 8377 */ // No operand predicates
8153 /* 8377 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8154 /* 8379 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc6
8155 /* 8379 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8156 /* 8382 */ // Label 495: @8382
8157 /* 8382 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8406), // Rule ID 39 //
8158 /* 8387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
8159 /* 8390 */ // MIs[0] root
8160 /* 8390 */ // No operand predicates
8161 /* 8390 */ // MIs[0] src
8162 /* 8390 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8163 /* 8394 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8164 /* 8398 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
8165 /* 8401 */ // MIs[1] x
8166 /* 8401 */ // No operand predicates
8167 /* 8401 */ // MIs[1] y
8168 /* 8401 */ // No operand predicates
8169 /* 8401 */ // MIs[1] z
8170 /* 8401 */ // No operand predicates
8171 /* 8401 */ // MIs[1] a
8172 /* 8401 */ // No operand predicates
8173 /* 8401 */ // MIs[1] b
8174 /* 8401 */ // No operand predicates
8175 /* 8401 */ // MIs[0] idx
8176 /* 8401 */ // No operand predicates
8177 /* 8401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8178 /* 8403 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc5
8179 /* 8403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8180 /* 8406 */ // Label 496: @8406
8181 /* 8406 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8430), // Rule ID 38 //
8182 /* 8411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
8183 /* 8414 */ // MIs[0] root
8184 /* 8414 */ // No operand predicates
8185 /* 8414 */ // MIs[0] src
8186 /* 8414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8187 /* 8418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8188 /* 8422 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
8189 /* 8425 */ // MIs[1] x
8190 /* 8425 */ // No operand predicates
8191 /* 8425 */ // MIs[1] y
8192 /* 8425 */ // No operand predicates
8193 /* 8425 */ // MIs[1] z
8194 /* 8425 */ // No operand predicates
8195 /* 8425 */ // MIs[1] a
8196 /* 8425 */ // No operand predicates
8197 /* 8425 */ // MIs[0] idx
8198 /* 8425 */ // No operand predicates
8199 /* 8425 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8200 /* 8427 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc4
8201 /* 8427 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8202 /* 8430 */ // Label 497: @8430
8203 /* 8430 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8454), // Rule ID 37 //
8204 /* 8435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
8205 /* 8438 */ // MIs[0] root
8206 /* 8438 */ // No operand predicates
8207 /* 8438 */ // MIs[0] src
8208 /* 8438 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8209 /* 8442 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8210 /* 8446 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
8211 /* 8449 */ // MIs[1] x
8212 /* 8449 */ // No operand predicates
8213 /* 8449 */ // MIs[1] y
8214 /* 8449 */ // No operand predicates
8215 /* 8449 */ // MIs[1] z
8216 /* 8449 */ // No operand predicates
8217 /* 8449 */ // MIs[0] idx
8218 /* 8449 */ // No operand predicates
8219 /* 8449 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8220 /* 8451 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc3
8221 /* 8451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8222 /* 8454 */ // Label 498: @8454
8223 /* 8454 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8488), // Rule ID 33 //
8224 /* 8459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
8225 /* 8462 */ // MIs[0] root
8226 /* 8462 */ // No operand predicates
8227 /* 8462 */ // MIs[0] src
8228 /* 8462 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8229 /* 8466 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8230 /* 8470 */ // MIs[1] x
8231 /* 8470 */ // No operand predicates
8232 /* 8470 */ // MIs[1] value
8233 /* 8470 */ // No operand predicates
8234 /* 8470 */ // MIs[1] idx
8235 /* 8470 */ // No operand predicates
8236 /* 8470 */ // MIs[0] idx
8237 /* 8470 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
8238 /* 8475 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8239 /* 8480 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8240 /* 8482 */ // Combiner Rule #31: extract_vector_element_not_const
8241 /* 8482 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8242 /* 8487 */ GIR_EraseRootFromParent_Done,
8243 /* 8488 */ // Label 499: @8488
8244 /* 8488 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8509), // Rule ID 34 //
8245 /* 8493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
8246 /* 8496 */ // MIs[0] root
8247 /* 8496 */ // No operand predicates
8248 /* 8496 */ // MIs[0] src
8249 /* 8496 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8250 /* 8500 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8251 /* 8504 */ // MIs[1] x
8252 /* 8504 */ // No operand predicates
8253 /* 8504 */ // MIs[1] value
8254 /* 8504 */ // No operand predicates
8255 /* 8504 */ // MIs[1] idx2
8256 /* 8504 */ // No operand predicates
8257 /* 8504 */ // MIs[0] idx1
8258 /* 8504 */ // No operand predicates
8259 /* 8504 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8260 /* 8506 */ // Combiner Rule #32: extract_vector_element_different_indices
8261 /* 8506 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
8262 /* 8509 */ // Label 500: @8509
8263 /* 8509 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(8538), // Rule ID 43 //
8264 /* 8514 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
8265 /* 8517 */ // MIs[0] root
8266 /* 8517 */ // No operand predicates
8267 /* 8517 */ // MIs[0] src
8268 /* 8517 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8269 /* 8521 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
8270 /* 8525 */ // MIs[1] src1
8271 /* 8525 */ // No operand predicates
8272 /* 8525 */ // MIs[1] src2
8273 /* 8525 */ // No operand predicates
8274 /* 8525 */ // MIs[1] mask
8275 /* 8525 */ // No operand predicates
8276 /* 8525 */ // MIs[0] idx
8277 /* 8525 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8278 /* 8529 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8279 /* 8533 */ // MIs[2] imm
8280 /* 8533 */ // No operand predicates
8281 /* 8533 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8282 /* 8535 */ // Combiner Rule #41: extract_vector_element_shuffle_vector
8283 /* 8535 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8284 /* 8538 */ // Label 501: @8538
8285 /* 8538 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(8562), // Rule ID 36 //
8286 /* 8543 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
8287 /* 8546 */ // MIs[0] root
8288 /* 8546 */ // No operand predicates
8289 /* 8546 */ // MIs[0] src
8290 /* 8546 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8291 /* 8550 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8292 /* 8554 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
8293 /* 8557 */ // MIs[1] x
8294 /* 8557 */ // No operand predicates
8295 /* 8557 */ // MIs[1] y
8296 /* 8557 */ // No operand predicates
8297 /* 8557 */ // MIs[0] idx
8298 /* 8557 */ // No operand predicates
8299 /* 8557 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8300 /* 8559 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc2
8301 /* 8559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8302 /* 8562 */ // Label 502: @8562
8303 /* 8562 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(8594), // Rule ID 35 //
8304 /* 8567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
8305 /* 8570 */ // MIs[0] root
8306 /* 8570 */ // No operand predicates
8307 /* 8570 */ // MIs[0] src
8308 /* 8570 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8309 /* 8574 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
8310 /* 8578 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
8311 /* 8581 */ // MIs[1] unused
8312 /* 8581 */ // No operand predicates
8313 /* 8581 */ // MIs[0] idx
8314 /* 8581 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8315 /* 8585 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8316 /* 8589 */ // MIs[2] imm
8317 /* 8589 */ // No operand predicates
8318 /* 8589 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8319 /* 8591 */ // Combiner Rule #33: extract_vector_element_build_vector
8320 /* 8591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
8321 /* 8594 */ // Label 503: @8594
8322 /* 8594 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(8618), // Rule ID 27 //
8323 /* 8599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
8324 /* 8602 */ // MIs[0] root
8325 /* 8602 */ // No operand predicates
8326 /* 8602 */ // MIs[0] vector
8327 /* 8602 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8328 /* 8606 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8329 /* 8610 */ // MIs[0] idx
8330 /* 8610 */ // No operand predicates
8331 /* 8610 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8332 /* 8612 */ // Combiner Rule #25: match_extract_of_element_undef_vector
8333 /* 8612 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8334 /* 8615 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8335 /* 8617 */ GIR_EraseRootFromParent_Done,
8336 /* 8618 */ // Label 504: @8618
8337 /* 8618 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(8642), // Rule ID 28 //
8338 /* 8623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
8339 /* 8626 */ // MIs[0] root
8340 /* 8626 */ // No operand predicates
8341 /* 8626 */ // MIs[0] vector
8342 /* 8626 */ // No operand predicates
8343 /* 8626 */ // MIs[0] idx
8344 /* 8626 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8345 /* 8630 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8346 /* 8634 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8347 /* 8636 */ // Combiner Rule #26: match_extract_of_element_undef_index
8348 /* 8636 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8349 /* 8639 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8350 /* 8641 */ GIR_EraseRootFromParent_Done,
8351 /* 8642 */ // Label 505: @8642
8352 /* 8642 */ GIM_Reject,
8353 /* 8643 */ // Label 98: @8643
8354 /* 8643 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(8654), // Rule ID 103 //
8355 /* 8648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
8356 /* 8651 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
8357 /* 8651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
8358 /* 8654 */ // Label 506: @8654
8359 /* 8654 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(8665), // Rule ID 105 //
8360 /* 8659 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
8361 /* 8662 */ // Combiner Rule #86: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8362 /* 8662 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
8363 /* 8665 */ // Label 507: @8665
8364 /* 8665 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(8676), // Rule ID 369 //
8365 /* 8670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8366 /* 8673 */ // Combiner Rule #220: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
8367 /* 8673 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
8368 /* 8676 */ // Label 508: @8676
8369 /* 8676 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(8687), // Rule ID 371 //
8370 /* 8681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
8371 /* 8684 */ // Combiner Rule #222: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8372 /* 8684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
8373 /* 8687 */ // Label 509: @8687
8374 /* 8687 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(8708), // Rule ID 370 //
8375 /* 8692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8376 /* 8695 */ // MIs[0] root
8377 /* 8695 */ // No operand predicates
8378 /* 8695 */ // MIs[0] src1
8379 /* 8695 */ // No operand predicates
8380 /* 8695 */ // MIs[0] undef
8381 /* 8695 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8382 /* 8699 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8383 /* 8703 */ // MIs[0] mask
8384 /* 8703 */ // No operand predicates
8385 /* 8703 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8386 /* 8705 */ // Combiner Rule #221: combine_shuffle_undef_rhs
8387 /* 8705 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
8388 /* 8708 */ // Label 510: @8708
8389 /* 8708 */ GIM_Reject,
8390 /* 8709 */ // Label 99: @8709
8391 /* 8709 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(8720), // Rule ID 392 //
8392 /* 8714 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
8393 /* 8717 */ // MIs[0] dst
8394 /* 8717 */ // No operand predicates
8395 /* 8717 */ // MIs[0] src
8396 /* 8717 */ // No operand predicates
8397 /* 8717 */ // Combiner Rule #241: ctlz_to_ctls
8398 /* 8717 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8399 /* 8720 */ // Label 511: @8720
8400 /* 8720 */ GIM_Reject,
8401 /* 8721 */ // Label 100: @8721
8402 /* 8721 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(8732), // Rule ID 393 //
8403 /* 8726 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
8404 /* 8729 */ // MIs[0] dst
8405 /* 8729 */ // No operand predicates
8406 /* 8729 */ // MIs[0] src
8407 /* 8729 */ // No operand predicates
8408 /* 8729 */ // Combiner Rule #242: ctlz_zero_undef_to_ctls
8409 /* 8729 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8410 /* 8732 */ // Label 512: @8732
8411 /* 8732 */ GIM_Reject,
8412 /* 8733 */ // Label 101: @8733
8413 /* 8733 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(8777), // Rule ID 245 //
8414 /* 8738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
8415 /* 8741 */ // MIs[0] d
8416 /* 8741 */ // No operand predicates
8417 /* 8741 */ // MIs[0] src
8418 /* 8741 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8419 /* 8745 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
8420 /* 8749 */ // MIs[1] rev
8421 /* 8749 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8422 /* 8753 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8423 /* 8757 */ // MIs[2] val
8424 /* 8757 */ // No operand predicates
8425 /* 8757 */ // MIs[1] amt
8426 /* 8757 */ // No operand predicates
8427 /* 8757 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8428 /* 8761 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8429 /* 8763 */ // Combiner Rule #178: bitreverse_lshr
8430 /* 8763 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8431 /* 8766 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8432 /* 8768 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8433 /* 8772 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8434 /* 8776 */ GIR_EraseRootFromParent_Done,
8435 /* 8777 */ // Label 513: @8777
8436 /* 8777 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(8821), // Rule ID 244 //
8437 /* 8782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
8438 /* 8785 */ // MIs[0] d
8439 /* 8785 */ // No operand predicates
8440 /* 8785 */ // MIs[0] src
8441 /* 8785 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8442 /* 8789 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
8443 /* 8793 */ // MIs[1] rev
8444 /* 8793 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8445 /* 8797 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8446 /* 8801 */ // MIs[2] val
8447 /* 8801 */ // No operand predicates
8448 /* 8801 */ // MIs[1] amt
8449 /* 8801 */ // No operand predicates
8450 /* 8801 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
8451 /* 8805 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8452 /* 8807 */ // Combiner Rule #177: bitreverse_shl
8453 /* 8807 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
8454 /* 8810 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8455 /* 8812 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8456 /* 8816 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8457 /* 8820 */ GIR_EraseRootFromParent_Done,
8458 /* 8821 */ // Label 514: @8821
8459 /* 8821 */ GIM_Reject,
8460 /* 8822 */ // Label 102: @8822
8461 /* 8822 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(8843), // Rule ID 192 //
8462 /* 8827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
8463 /* 8830 */ // MIs[0] dst
8464 /* 8830 */ // No operand predicates
8465 /* 8830 */ // MIs[0] src0
8466 /* 8830 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8467 /* 8834 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8468 /* 8838 */ // MIs[1] cst
8469 /* 8838 */ // No operand predicates
8470 /* 8838 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8471 /* 8840 */ // Combiner Rule #148: constant_fold_fceil
8472 /* 8840 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8473 /* 8843 */ // Label 515: @8843
8474 /* 8843 */ GIM_Reject,
8475 /* 8844 */ // Label 103: @8844
8476 /* 8844 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(8865), // Rule ID 188 //
8477 /* 8849 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
8478 /* 8852 */ // MIs[0] dst
8479 /* 8852 */ // No operand predicates
8480 /* 8852 */ // MIs[0] src0
8481 /* 8852 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8482 /* 8856 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8483 /* 8860 */ // MIs[1] cst
8484 /* 8860 */ // No operand predicates
8485 /* 8860 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8486 /* 8862 */ // Combiner Rule #144: constant_fold_fsqrt
8487 /* 8862 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8488 /* 8865 */ // Label 516: @8865
8489 /* 8865 */ GIM_Reject,
8490 /* 8866 */ // Label 104: @8866
8491 /* 8866 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(8887), // Rule ID 193 //
8492 /* 8871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8493 /* 8874 */ // MIs[0] dst
8494 /* 8874 */ // No operand predicates
8495 /* 8874 */ // MIs[0] src0
8496 /* 8874 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8497 /* 8878 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8498 /* 8882 */ // MIs[1] cst
8499 /* 8882 */ // No operand predicates
8500 /* 8882 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8501 /* 8884 */ // Combiner Rule #149: constant_fold_ffloor
8502 /* 8884 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8503 /* 8887 */ // Label 517: @8887
8504 /* 8887 */ GIM_Reject,
8505 /* 8888 */ // Label 105: @8888
8506 /* 8888 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(8909), // Rule ID 197 //
8507 /* 8893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
8508 /* 8896 */ // MIs[0] dst
8509 /* 8896 */ // No operand predicates
8510 /* 8896 */ // MIs[0] src0
8511 /* 8896 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8512 /* 8900 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8513 /* 8904 */ // MIs[1] cst
8514 /* 8904 */ // No operand predicates
8515 /* 8904 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8516 /* 8906 */ // Combiner Rule #153: constant_fold_frint
8517 /* 8906 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8518 /* 8909 */ // Label 518: @8909
8519 /* 8909 */ GIM_Reject,
8520 /* 8910 */ // Label 106: @8910
8521 /* 8910 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(8931), // Rule ID 198 //
8522 /* 8915 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
8523 /* 8918 */ // MIs[0] dst
8524 /* 8918 */ // No operand predicates
8525 /* 8918 */ // MIs[0] src0
8526 /* 8918 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8527 /* 8922 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8528 /* 8926 */ // MIs[1] cst
8529 /* 8926 */ // No operand predicates
8530 /* 8926 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8531 /* 8928 */ // Combiner Rule #154: constant_fold_fnearbyint
8532 /* 8928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8533 /* 8931 */ // Label 519: @8931
8534 /* 8931 */ GIM_Reject,
8535 /* 8932 */ // Label 107: @8932
8536 /* 8932 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(8946), // Rule ID 403 //
8537 /* 8937 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_HasDotProd),
8538 /* 8940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
8539 /* 8943 */ // Combiner Rule #249: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD'
8540 /* 8943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
8541 /* 8946 */ // Label 520: @8946
8542 /* 8946 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(8957), // Rule ID 404 //
8543 /* 8951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8544 /* 8954 */ // Combiner Rule #250: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD'
8545 /* 8954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
8546 /* 8957 */ // Label 521: @8957
8547 /* 8957 */ GIM_Reject,
8548 /* 8958 */ // Label 108: @8958
8549 /* 8958 */ GIM_Reject,
8550 /* 8959 */ }; // Size: 8959 bytes
8551 return MatchTable0;
8552}
8553#undef GIMT_Encode2
8554#undef GIMT_Encode4
8555#undef GIMT_Encode8
8556
8557
8558#endif // GET_GICOMBINER_IMPL
8559
8560#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8561
8562AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
8563AvailableFunctionFeatures()
8564
8565#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8566
8567#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8568
8569, State(0),
8570ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
8571
8572#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8573
8574