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 240; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 16; // "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 211; // "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 157; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 156; // "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 216; // "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 93; // "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 210; // "match_ands"
92 case 'u': // 1 string to match.
93 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
94 break;
95 return 17; // "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 92; // "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 214; // "sext_trunc"
109 case 'u': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
111 break;
112 return 18; // "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 215; // "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 98; // "add_sub_reg"
128 case 'm': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
130 break;
131 return 231; // "match_addos"
132 case 's': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
134 break;
135 return 205; // "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 136; // "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 233; // "trunc_ssats"
155 case 'u': // 1 string to match.
156 return 234; // "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 235; // "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 224; // "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 158; // "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 238; // "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 207; // "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 186; // "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 137; // "not_cmp_fold"
204 case 'r': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
206 break;
207 return 132; // "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 201; // "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 51; // "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 200; // "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 49; // "zext_of_zext"
229 }
230 break;
231 case 13: // 16 strings to match.
232 switch (RuleIdentifier[0]) {
233 default: break;
234 case 'a': // 1 string to match.
235 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
236 break;
237 return 40; // "add_of_vscale"
238 case 'c': // 1 string to match.
239 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
240 break;
241 return 176; // "commute_shift"
242 case 'l': // 1 string to match.
243 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
244 break;
245 return 72; // "load_and_mask"
246 case 'm': // 3 strings to match.
247 switch (RuleIdentifier[1]) {
248 default: break;
249 case 'a': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
251 break;
252 return 129; // "match_selects"
253 case 'e': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
255 break;
256 return 223; // "merge_unmerge"
257 case 'u': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
259 break;
260 return 41; // "mul_of_vscale"
261 }
262 break;
263 case 'r': // 1 string to match.
264 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
265 break;
266 return 130; // "redundant_and"
267 case 's': // 5 strings to match.
268 switch (RuleIdentifier[1]) {
269 default: break;
270 case 'a': // 1 string to match.
271 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
272 break;
273 return 89; // "same_val_zero"
274 case 'd': // 1 string to match.
275 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
276 break;
277 return 203; // "sdiv_by_const"
278 case 'h': // 1 string to match.
279 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
280 break;
281 return 42; // "shl_of_vscale"
282 case 'r': // 1 string to match.
283 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
284 break;
285 return 199; // "srem_by_const"
286 case 'u': // 1 string to match.
287 if (memcmp(RuleIdentifier.data()+2, "b_of_vscale", 11) != 0)
288 break;
289 return 43; // "sub_of_vscale"
290 }
291 break;
292 case 'u': // 4 strings to match.
293 switch (RuleIdentifier[1]) {
294 default: break;
295 case 'd': // 1 string to match.
296 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
297 break;
298 return 202; // "udiv_by_const"
299 case 'n': // 2 strings to match.
300 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
301 break;
302 switch (RuleIdentifier[8]) {
303 default: break;
304 case 'm': // 1 string to match.
305 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
306 break;
307 return 222; // "unmerge_merge"
308 case 'u': // 1 string to match.
309 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
310 break;
311 return 225; // "unmerge_undef"
312 }
313 break;
314 case 'r': // 1 string to match.
315 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
316 break;
317 return 198; // "urem_by_const"
318 }
319 break;
320 }
321 break;
322 case 14: // 16 strings to match.
323 switch (RuleIdentifier[0]) {
324 default: break;
325 case 'A': // 2 strings to match.
326 switch (RuleIdentifier[1]) {
327 default: break;
328 case 'M': // 1 string to match.
329 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
330 break;
331 return 15; // "AMinusC1PlusC2"
332 case 'P': // 1 string to match.
333 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
334 break;
335 return 11; // "APlusC1MinusC2"
336 }
337 break;
338 case 'C': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
340 break;
341 return 12; // "C2MinusAPlusC1"
342 case 'N': // 1 string to match.
343 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
344 break;
345 return 10; // "NotAPlusNegOne"
346 case 'a': // 2 strings to match.
347 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
348 break;
349 switch (RuleIdentifier[10]) {
350 default: break;
351 case 's': // 1 string to match.
352 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
353 break;
354 return 55; // "anyext_of_sext"
355 case 'z': // 1 string to match.
356 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
357 break;
358 return 54; // "anyext_of_zext"
359 }
360 break;
361 case 'b': // 2 strings to match.
362 if (RuleIdentifier[1] != 'i')
363 break;
364 switch (RuleIdentifier[2]) {
365 default: break;
366 case 'n': // 1 string to match.
367 if (memcmp(RuleIdentifier.data()+3, "op_same_val", 11) != 0)
368 break;
369 return 88; // "binop_same_val"
370 case 't': // 1 string to match.
371 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
372 break;
373 return 174; // "bitreverse_shl"
374 }
375 break;
376 case 'f': // 2 strings to match.
377 switch (RuleIdentifier[1]) {
378 default: break;
379 case 'a': // 1 string to match.
380 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
381 break;
382 return 185; // "fabs_fneg_fold"
383 case 'n': // 1 string to match.
384 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
385 break;
386 return 95; // "fneg_fneg_fold"
387 }
388 break;
389 case 'm': // 1 string to match.
390 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
391 break;
392 return 20; // "mul_by_neg_one"
393 case 'r': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
395 break;
396 return 111; // "reassoc_ptradd"
397 case 's': // 3 strings to match.
398 switch (RuleIdentifier[1]) {
399 default: break;
400 case 'e': // 2 strings to match.
401 switch (RuleIdentifier[2]) {
402 default: break;
403 case 'l': // 1 string to match.
404 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
405 break;
406 return 57; // "select_of_zext"
407 case 'x': // 1 string to match.
408 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
409 break;
410 return 52; // "sext_of_anyext"
411 }
412 break;
413 case 'h': // 1 string to match.
414 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
415 break;
416 return 110; // "shifts_too_big"
417 }
418 break;
419 case 'z': // 1 string to match.
420 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
421 break;
422 return 50; // "zext_of_anyext"
423 }
424 break;
425 case 15: // 12 strings to match.
426 switch (RuleIdentifier[0]) {
427 default: break;
428 case 'A': // 2 strings to match.
429 switch (RuleIdentifier[1]) {
430 default: break;
431 case 'M': // 1 string to match.
432 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
433 break;
434 return 13; // "AMinusC1MinusC2"
435 case 'P': // 1 string to match.
436 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
437 break;
438 return 3; // "APlusZeroMinusB"
439 }
440 break;
441 case 'C': // 1 string to match.
442 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
443 break;
444 return 14; // "C1Minus2MinusC2"
445 case 'Z': // 1 string to match.
446 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
447 break;
448 return 2; // "ZeroMinusAPlusB"
449 case 'b': // 1 string to match.
450 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
451 break;
452 return 175; // "bitreverse_lshr"
453 case 'e': // 1 string to match.
454 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
455 break;
456 return 71; // "extending_loads"
457 case 'i': // 1 string to match.
458 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
459 break;
460 return 21; // "idempotent_prop"
461 case 'l': // 1 string to match.
462 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
463 break;
464 return 165; // "load_or_combine"
465 case 'n': // 1 string to match.
466 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
467 break;
468 return 65; // "narrow_binop_or"
469 case 'o': // 1 string to match.
470 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
471 break;
472 return 155; // "overlapping_and"
473 case 's': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
475 break;
476 return 86; // "select_same_val"
477 case 'z': // 1 string to match.
478 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
479 break;
480 return 134; // "zext_trunc_fold"
481 }
482 break;
483 case 16: // 13 strings to match.
484 switch (RuleIdentifier[0]) {
485 default: break;
486 case 'a': // 1 string to match.
487 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
488 break;
489 return 53; // "anyext_of_anyext"
490 case 'n': // 5 strings to match.
491 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
492 break;
493 switch (RuleIdentifier[13]) {
494 default: break;
495 case 'a': // 2 strings to match.
496 switch (RuleIdentifier[14]) {
497 default: break;
498 case 'd': // 1 string to match.
499 if (RuleIdentifier[15] != 'd')
500 break;
501 return 61; // "narrow_binop_add"
502 case 'n': // 1 string to match.
503 if (RuleIdentifier[15] != 'd')
504 break;
505 return 64; // "narrow_binop_and"
506 }
507 break;
508 case 'm': // 1 string to match.
509 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
510 break;
511 return 63; // "narrow_binop_mul"
512 case 's': // 1 string to match.
513 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
514 break;
515 return 62; // "narrow_binop_sub"
516 case 'x': // 1 string to match.
517 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
518 break;
519 return 66; // "narrow_binop_xor"
520 }
521 break;
522 case 's': // 4 strings to match.
523 switch (RuleIdentifier[1]) {
524 default: break;
525 case 'e': // 3 strings to match.
526 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
527 break;
528 switch (RuleIdentifier[7]) {
529 default: break;
530 case 'o': // 1 string to match.
531 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
532 break;
533 return 58; // "select_of_anyext"
534 case 't': // 1 string to match.
535 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
536 break;
537 return 206; // "select_to_minmax"
538 case 'u': // 1 string to match.
539 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
540 break;
541 return 126; // "select_undef_cmp"
542 }
543 break;
544 case 'u': // 1 string to match.
545 if (memcmp(RuleIdentifier.data()+2, "b_one_from_sub", 14) != 0)
546 break;
547 return 241; // "sub_one_from_sub"
548 }
549 break;
550 case 't': // 2 strings to match.
551 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
552 break;
553 switch (RuleIdentifier[12]) {
554 default: break;
555 case 's': // 1 string to match.
556 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
557 break;
558 return 47; // "truncate_of_sext"
559 case 'z': // 1 string to match.
560 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
561 break;
562 return 46; // "truncate_of_zext"
563 }
564 break;
565 case 'u': // 1 string to match.
566 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
567 break;
568 return 74; // "undef_to_fp_zero"
569 }
570 break;
571 case 17: // 14 strings to match.
572 switch (RuleIdentifier[0]) {
573 default: break;
574 case 'A': // 2 strings to match.
575 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
576 break;
577 switch (RuleIdentifier[11]) {
578 default: break;
579 case 'A': // 1 string to match.
580 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
581 break;
582 return 8; // "APlusBMinusAplusC"
583 case 'C': // 1 string to match.
584 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
585 break;
586 return 9; // "APlusBMinusCPlusA"
587 }
588 break;
589 case 'a': // 2 strings to match.
590 switch (RuleIdentifier[1]) {
591 default: break;
592 case 'd': // 1 string to match.
593 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
594 break;
595 return 19; // "add_p2i_to_ptradd"
596 case 'n': // 1 string to match.
597 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
598 break;
599 return 94; // "anyext_trunc_fold"
600 }
601 break;
602 case 'c': // 3 strings to match.
603 switch (RuleIdentifier[1]) {
604 default: break;
605 case 'a': // 2 strings to match.
606 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
607 break;
608 switch (RuleIdentifier[13]) {
609 default: break;
610 case 'f': // 1 string to match.
611 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
612 break;
613 return 115; // "canonicalize_fcmp"
614 case 'i': // 1 string to match.
615 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
616 break;
617 return 114; // "canonicalize_icmp"
618 }
619 break;
620 case 'o': // 1 string to match.
621 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fma", 15) != 0)
622 break;
623 return 183; // "constant_fold_fma"
624 }
625 break;
626 case 'd': // 1 string to match.
627 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
628 break;
629 return 166; // "div_rem_to_divrem"
630 case 'e': // 1 string to match.
631 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
632 break;
633 return 84; // "erase_undef_store"
634 case 'p': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
636 break;
637 return 162; // "ptr_add_with_zero"
638 case 's': // 2 strings to match.
639 switch (RuleIdentifier[1]) {
640 default: break;
641 case 'e': // 1 string to match.
642 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
643 break;
644 return 128; // "select_to_iminmax"
645 case 'h': // 1 string to match.
646 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
647 break;
648 return 163; // "shift_immed_chain"
649 }
650 break;
651 case 'u': // 2 strings to match.
652 switch (RuleIdentifier[1]) {
653 default: break;
654 case 'n': // 1 string to match.
655 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
656 break;
657 return 75; // "undef_to_int_zero"
658 case 'r': // 1 string to match.
659 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
660 break;
661 return 133; // "urem_pow2_to_mask"
662 }
663 break;
664 }
665 break;
666 case 18: // 13 strings to match.
667 switch (RuleIdentifier[0]) {
668 default: break;
669 case 'A': // 3 strings to match.
670 switch (RuleIdentifier[1]) {
671 default: break;
672 case 'M': // 2 strings to match.
673 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
674 break;
675 switch (RuleIdentifier[11]) {
676 default: break;
677 case 'B': // 1 string to match.
678 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
679 break;
680 return 7; // "AMinusBPlusBMinusC"
681 case 'C': // 1 string to match.
682 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
683 break;
684 return 6; // "AMinusBPlusCMinusA"
685 }
686 break;
687 case 'P': // 1 string to match.
688 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
689 break;
690 return 0; // "APlusBMinusCMinusB"
691 }
692 break;
693 case 'b': // 1 string to match.
694 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
695 break;
696 return 90; // "binop_left_to_zero"
697 case 'c': // 3 strings to match.
698 if (RuleIdentifier[1] != 'o')
699 break;
700 switch (RuleIdentifier[2]) {
701 default: break;
702 case 'm': // 1 string to match.
703 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
704 break;
705 return 159; // "combine_minmax_nan"
706 case 'n': // 2 strings to match.
707 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
708 break;
709 switch (RuleIdentifier[15]) {
710 default: break;
711 case 'a': // 1 string to match.
712 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
713 break;
714 return 140; // "constant_fold_fabs"
715 case 'n': // 1 string to match.
716 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
717 break;
718 return 139; // "constant_fold_fneg"
719 }
720 break;
721 }
722 break;
723 case 'e': // 1 string to match.
724 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
725 break;
726 return 160; // "expand_const_fpowi"
727 case 'f': // 2 strings to match.
728 switch (RuleIdentifier[1]) {
729 default: break;
730 case 'o': // 1 string to match.
731 if (memcmp(RuleIdentifier.data()+2, "ld_global_offset", 16) != 0)
732 break;
733 return 243; // "fold_global_offset"
734 case 'p': // 1 string to match.
735 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
736 break;
737 return 103; // "fptrunc_fpext_fold"
738 }
739 break;
740 case 's': // 2 strings to match.
741 if (RuleIdentifier[1] != 'e')
742 break;
743 switch (RuleIdentifier[2]) {
744 default: break;
745 case 'l': // 1 string to match.
746 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
747 break;
748 return 59; // "select_of_truncate"
749 case 'x': // 1 string to match.
750 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
751 break;
752 return 123; // "sext_inreg_of_load"
753 }
754 break;
755 case 't': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
757 break;
758 return 48; // "truncate_of_anyext"
759 }
760 break;
761 case 19: // 20 strings to match.
762 switch (RuleIdentifier[0]) {
763 default: break;
764 case 'A': // 1 string to match.
765 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
766 break;
767 return 1; // "AMinusBMinusCMinusC"
768 case 'b': // 1 string to match.
769 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
770 break;
771 return 91; // "binop_right_to_zero"
772 case 'c': // 7 strings to match.
773 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
774 break;
775 switch (RuleIdentifier[5]) {
776 default: break;
777 case '_': // 1 string to match.
778 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
779 break;
780 return 154; // "const_ptradd_to_i2p"
781 case 'a': // 6 strings to match.
782 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
783 break;
784 switch (RuleIdentifier[14]) {
785 default: break;
786 case 'b': // 1 string to match.
787 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
788 break;
789 return 181; // "constant_fold_binop"
790 case 'f': // 5 strings to match.
791 switch (RuleIdentifier[15]) {
792 default: break;
793 case 'c': // 1 string to match.
794 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
795 break;
796 return 145; // "constant_fold_fceil"
797 case 'l': // 1 string to match.
798 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
799 break;
800 return 142; // "constant_fold_flog2"
801 case 'p': // 1 string to match.
802 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
803 break;
804 return 144; // "constant_fold_fpext"
805 case 'r': // 1 string to match.
806 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
807 break;
808 return 150; // "constant_fold_frint"
809 case 's': // 1 string to match.
810 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
811 break;
812 return 141; // "constant_fold_fsqrt"
813 }
814 break;
815 }
816 break;
817 }
818 break;
819 case 'e': // 2 strings to match.
820 if (memcmp(RuleIdentifier.data()+1, "xt", 2) != 0)
821 break;
822 switch (RuleIdentifier[3]) {
823 default: break;
824 case '_': // 1 string to match.
825 if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv", 15) != 0)
826 break;
827 return 245; // "ext_uaddv_to_uaddlv"
828 case 'e': // 1 string to match.
829 if (memcmp(RuleIdentifier.data()+4, "nd_through_phis", 15) != 0)
830 break;
831 return 107; // "extend_through_phis"
832 }
833 break;
834 case 'i': // 1 string to match.
835 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
836 break;
837 return 67; // "integer_of_truncate"
838 case 'm': // 1 string to match.
839 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
840 break;
841 return 229; // "merge_of_x_and_zero"
842 case 'p': // 1 string to match.
843 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
844 break;
845 return 113; // "ptr_add_immed_chain"
846 case 'r': // 2 strings to match.
847 switch (RuleIdentifier[1]) {
848 default: break;
849 case 'e': // 1 string to match.
850 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
851 break;
852 return 112; // "reassoc_comm_binops"
853 case 'i': // 1 string to match.
854 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
855 break;
856 return 87; // "right_identity_zero"
857 }
858 break;
859 case 's': // 3 strings to match.
860 switch (RuleIdentifier[1]) {
861 default: break;
862 case 'e': // 1 string to match.
863 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
864 break;
865 return 127; // "select_constant_cmp"
866 case 'i': // 2 strings to match.
867 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
868 break;
869 switch (RuleIdentifier[9]) {
870 default: break;
871 case 'a': // 1 string to match.
872 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
873 break;
874 return 108; // "simplify_add_to_sub"
875 case 'n': // 1 string to match.
876 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
877 break;
878 return 212; // "simplify_neg_minmax"
879 }
880 break;
881 }
882 break;
883 case 'u': // 1 string to match.
884 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
885 break;
886 return 79; // "unary_undef_to_zero"
887 }
888 break;
889 case 20: // 9 strings to match.
890 switch (RuleIdentifier[0]) {
891 default: break;
892 case 'a': // 1 string to match.
893 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
894 break;
895 return 188; // "and_or_disjoint_mask"
896 case 'b': // 1 string to match.
897 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
898 break;
899 return 102; // "bitcast_bitcast_fold"
900 case 'c': // 1 string to match.
901 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
902 break;
903 return 146; // "constant_fold_ffloor"
904 case 'i': // 1 string to match.
905 if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc", 19) != 0)
906 break;
907 return 242; // "icmp_redundant_trunc"
908 case 'm': // 1 string to match.
909 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
910 break;
911 return 228; // "merge_of_x_and_undef"
912 case 'r': // 2 strings to match.
913 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
914 break;
915 switch (RuleIdentifier[4]) {
916 default: break;
917 case 'c': // 1 string to match.
918 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
919 break;
920 return 124; // "reduce_shl_of_extend"
921 case 'n': // 1 string to match.
922 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
923 break;
924 return 131; // "redundant_sext_inreg"
925 }
926 break;
927 case 'u': // 2 strings to match.
928 if (RuleIdentifier[1] != 'n')
929 break;
930 switch (RuleIdentifier[2]) {
931 default: break;
932 case 'a': // 1 string to match.
933 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
934 break;
935 return 80; // "unary_undef_to_undef"
936 case 'm': // 1 string to match.
937 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
938 break;
939 return 227; // "unmerge_zext_to_zext"
940 }
941 break;
942 }
943 break;
944 case 21: // 17 strings to match.
945 switch (RuleIdentifier[0]) {
946 default: break;
947 case 'c': // 4 strings to match.
948 if (RuleIdentifier[1] != 'o')
949 break;
950 switch (RuleIdentifier[2]) {
951 default: break;
952 case 'm': // 2 strings to match.
953 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
954 break;
955 switch (RuleIdentifier[8]) {
956 default: break;
957 case 'b': // 1 string to match.
958 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
959 break;
960 return 230; // "combine_build_unmerge"
961 case 'c': // 1 string to match.
962 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
963 break;
964 return 213; // "combine_concat_vector"
965 }
966 break;
967 case 'n': // 2 strings to match.
968 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
969 break;
970 switch (RuleIdentifier[14]) {
971 default: break;
972 case 'c': // 1 string to match.
973 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
974 break;
975 return 184; // "constant_fold_cast_op"
976 case 'f': // 1 string to match.
977 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
978 break;
979 return 143; // "constant_fold_fptrunc"
980 }
981 break;
982 }
983 break;
984 case 'e': // 1 string to match.
985 if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv", 20) != 0)
986 break;
987 return 244; // "ext_addv_to_udot_addv"
988 case 'f': // 1 string to match.
989 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
990 break;
991 return 204; // "fdiv_repeated_divison"
992 case 'i': // 1 string to match.
993 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
994 break;
995 return 27; // "insert_vector_elt_oob"
996 case 'l': // 1 string to match.
997 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
998 break;
999 return 237; // "lshr_of_trunc_of_lshr"
1000 case 'p': // 6 strings to match.
1001 if (memcmp(RuleIdentifier.data()+1, "ush_", 4) != 0)
1002 break;
1003 switch (RuleIdentifier[5]) {
1004 default: break;
1005 case 'a': // 2 strings to match.
1006 if (memcmp(RuleIdentifier.data()+6, "dd_through_", 11) != 0)
1007 break;
1008 switch (RuleIdentifier[17]) {
1009 default: break;
1010 case 's': // 1 string to match.
1011 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1012 break;
1013 return 250; // "push_add_through_sext"
1014 case 'z': // 1 string to match.
1015 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1016 break;
1017 return 247; // "push_add_through_zext"
1018 }
1019 break;
1020 case 'm': // 2 strings to match.
1021 if (memcmp(RuleIdentifier.data()+6, "ul_through_", 11) != 0)
1022 break;
1023 switch (RuleIdentifier[17]) {
1024 default: break;
1025 case 's': // 1 string to match.
1026 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1027 break;
1028 return 251; // "push_mul_through_sext"
1029 case 'z': // 1 string to match.
1030 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1031 break;
1032 return 248; // "push_mul_through_zext"
1033 }
1034 break;
1035 case 's': // 2 strings to match.
1036 if (memcmp(RuleIdentifier.data()+6, "ub_through_", 11) != 0)
1037 break;
1038 switch (RuleIdentifier[17]) {
1039 default: break;
1040 case 's': // 1 string to match.
1041 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1042 break;
1043 return 249; // "push_sub_through_sext"
1044 case 'z': // 1 string to match.
1045 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1046 break;
1047 return 246; // "push_sub_through_zext"
1048 }
1049 break;
1050 }
1051 break;
1052 case 'r': // 1 string to match.
1053 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1054 break;
1055 return 97; // "right_identity_one_fp"
1056 case 'u': // 2 strings to match.
1057 if (RuleIdentifier[1] != 'n')
1058 break;
1059 switch (RuleIdentifier[2]) {
1060 default: break;
1061 case 'd': // 1 string to match.
1062 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1063 break;
1064 return 76; // "undef_to_negative_one"
1065 case 'm': // 1 string to match.
1066 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1067 break;
1068 return 226; // "unmerge_dead_to_trunc"
1069 }
1070 break;
1071 }
1072 break;
1073 case 22: // 13 strings to match.
1074 switch (RuleIdentifier[0]) {
1075 default: break;
1076 case 'c': // 2 strings to match.
1077 if (RuleIdentifier[1] != 'o')
1078 break;
1079 switch (RuleIdentifier[2]) {
1080 default: break;
1081 case 'm': // 1 string to match.
1082 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1083 break;
1084 return 217; // "combine_shuffle_concat"
1085 case 'n': // 1 string to match.
1086 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1087 break;
1088 return 182; // "constant_fold_fp_binop"
1089 }
1090 break;
1091 case 'f': // 4 strings to match.
1092 switch (RuleIdentifier[1]) {
1093 default: break;
1094 case 'o': // 1 string to match.
1095 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1096 break;
1097 return 197; // "fold_binop_into_select"
1098 case 'u': // 3 strings to match.
1099 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1100 break;
1101 switch (RuleIdentifier[13]) {
1102 default: break;
1103 case 'l': // 1 string to match.
1104 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1105 break;
1106 return 170; // "funnel_shift_left_zero"
1107 case 'o': // 1 string to match.
1108 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1109 break;
1110 return 171; // "funnel_shift_overshift"
1111 case 't': // 1 string to match.
1112 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1113 break;
1114 return 168; // "funnel_shift_to_rotate"
1115 }
1116 break;
1117 }
1118 break;
1119 case 'i': // 1 string to match.
1120 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1121 break;
1122 return 117; // "icmp_to_lhs_known_bits"
1123 case 'm': // 1 string to match.
1124 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1125 break;
1126 return 232; // "match_subo_no_overflow"
1127 case 'p': // 1 string to match.
1128 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1129 break;
1130 return 81; // "propagate_undef_any_op"
1131 case 'r': // 2 strings to match.
1132 switch (RuleIdentifier[1]) {
1133 default: break;
1134 case 'e': // 1 string to match.
1135 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1136 break;
1137 return 187; // "redundant_neg_operands"
1138 case 'i': // 1 string to match.
1139 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1140 break;
1141 return 96; // "right_identity_one_int"
1142 }
1143 break;
1144 case 's': // 1 string to match.
1145 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1146 break;
1147 return 121; // "shl_ashr_to_sext_inreg"
1148 case 't': // 1 string to match.
1149 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1150 break;
1151 return 100; // "trunc_buildvector_fold"
1152 }
1153 break;
1154 case 23: // 7 strings to match.
1155 switch (RuleIdentifier[0]) {
1156 default: break;
1157 case 'b': // 1 string to match.
1158 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1159 break;
1160 return 60; // "buildvector_of_truncate"
1161 case 'c': // 1 string to match.
1162 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1163 break;
1164 return 239; // "ctlz_zero_undef_to_ctls"
1165 case 'f': // 1 string to match.
1166 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1167 break;
1168 return 169; // "funnel_shift_right_zero"
1169 case 'i': // 2 strings to match.
1170 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1171 break;
1172 switch (RuleIdentifier[21]) {
1173 default: break;
1174 case 's': // 1 string to match.
1175 if (RuleIdentifier[22] != 'i')
1176 break;
1177 return 152; // "itof_const_zero_fold_si"
1178 case 'u': // 1 string to match.
1179 if (RuleIdentifier[22] != 'i')
1180 break;
1181 return 153; // "itof_const_zero_fold_ui"
1182 }
1183 break;
1184 case 'p': // 1 string to match.
1185 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1186 break;
1187 return 82; // "propagate_undef_all_ops"
1188 case 't': // 1 string to match.
1189 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1190 break;
1191 return 236; // "truncusatu_to_fptouisat"
1192 }
1193 break;
1194 case 24: // 7 strings to match.
1195 switch (RuleIdentifier[0]) {
1196 default: break;
1197 case 'b': // 1 string to match.
1198 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1199 break;
1200 return 77; // "binop_left_undef_to_zero"
1201 case 'c': // 1 string to match.
1202 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1203 break;
1204 return 151; // "constant_fold_fnearbyint"
1205 case 'm': // 1 string to match.
1206 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1207 break;
1208 return 26; // "match_extract_of_element"
1209 case 'n': // 1 string to match.
1210 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1211 break;
1212 return 125; // "narrow_binop_feeding_and"
1213 case 's': // 2 strings to match.
1214 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1215 break;
1216 switch (RuleIdentifier[11]) {
1217 default: break;
1218 case 'o': // 1 string to match.
1219 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1220 break;
1221 return 56; // "sext_inreg_of_sext_inreg"
1222 case 't': // 1 string to match.
1223 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1224 break;
1225 return 135; // "sext_inreg_to_zext_inreg"
1226 }
1227 break;
1228 case 'x': // 1 string to match.
1229 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1230 break;
1231 return 161; // "xor_of_and_with_same_reg"
1232 }
1233 break;
1234 case 25: // 7 strings to match.
1235 switch (RuleIdentifier[0]) {
1236 default: break;
1237 case 'b': // 3 strings to match.
1238 switch (RuleIdentifier[1]) {
1239 default: break;
1240 case 'i': // 2 strings to match.
1241 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1242 break;
1243 switch (RuleIdentifier[22]) {
1244 default: break;
1245 case 'a': // 1 string to match.
1246 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1247 break;
1248 return 178; // "bitfield_extract_from_and"
1249 case 's': // 1 string to match.
1250 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1251 break;
1252 return 179; // "bitfield_extract_from_shr"
1253 }
1254 break;
1255 case 'u': // 1 string to match.
1256 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1257 break;
1258 return 99; // "buildvector_identity_fold"
1259 }
1260 break;
1261 case 'c': // 1 string to match.
1262 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1263 break;
1264 return 218; // "combine_shuffle_undef_rhs"
1265 case 'e': // 1 string to match.
1266 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1267 break;
1268 return 69; // "extract_vec_elt_build_vec"
1269 case 'n': // 1 string to match.
1270 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1271 break;
1272 return 122; // "neg_and_one_to_sext_inreg"
1273 case 'r': // 1 string to match.
1274 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1275 break;
1276 return 106; // "right_identity_neg_one_fp"
1277 }
1278 break;
1279 case 26: // 4 strings to match.
1280 switch (RuleIdentifier[0]) {
1281 default: break;
1282 case 'b': // 1 string to match.
1283 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1284 break;
1285 return 78; // "binop_right_undef_to_undef"
1286 case 'c': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1288 break;
1289 return 209; // "commute_fp_constant_to_rhs"
1290 case 'f': // 1 string to match.
1291 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1292 break;
1293 return 167; // "funnel_shift_from_or_shift"
1294 case 'r': // 1 string to match.
1295 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1296 break;
1297 return 104; // "right_identity_neg_zero_fp"
1298 }
1299 break;
1300 case 27: // 6 strings to match.
1301 switch (RuleIdentifier[0]) {
1302 default: break;
1303 case 'c': // 2 strings to match.
1304 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1305 break;
1306 switch (RuleIdentifier[3]) {
1307 default: break;
1308 case 'b': // 1 string to match.
1309 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1310 break;
1311 return 220; // "combine_use_vector_truncate"
1312 case 'm': // 1 string to match.
1313 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1314 break;
1315 return 208; // "commute_int_constant_to_rhs"
1316 }
1317 break;
1318 case 'd': // 1 string to match.
1319 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1320 break;
1321 return 119; // "double_icmp_zero_or_combine"
1322 case 'r': // 1 string to match.
1323 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1324 break;
1325 return 120; // "redundant_binop_in_equality"
1326 case 't': // 1 string to match.
1327 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1328 break;
1329 return 101; // "trunc_lshr_buildvector_fold"
1330 case 'u': // 1 string to match.
1331 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1332 break;
1333 return 221; // "unmerge_anyext_build_vector"
1334 }
1335 break;
1336 case 28: // 4 strings to match.
1337 switch (RuleIdentifier[0]) {
1338 default: break;
1339 case 'd': // 1 string to match.
1340 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1341 break;
1342 return 118; // "double_icmp_zero_and_combine"
1343 case 'o': // 1 string to match.
1344 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1345 break;
1346 return 138; // "opt_brcond_by_inverting_cond"
1347 case 'p': // 1 string to match.
1348 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1349 break;
1350 return 83; // "propagate_undef_shuffle_mask"
1351 case 's': // 1 string to match.
1352 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1353 break;
1354 return 164; // "shift_of_shifted_logic_chain"
1355 }
1356 break;
1357 case 29: // 6 strings to match.
1358 switch (RuleIdentifier[0]) {
1359 default: break;
1360 case 'b': // 1 string to match.
1361 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1362 break;
1363 return 180; // "bitfield_extract_from_shr_and"
1364 case 'c': // 4 strings to match.
1365 if (RuleIdentifier[1] != 'o')
1366 break;
1367 switch (RuleIdentifier[2]) {
1368 default: break;
1369 case 'm': // 2 strings to match.
1370 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1371 break;
1372 switch (RuleIdentifier[8]) {
1373 default: break;
1374 case 'e': // 1 string to match.
1375 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1376 break;
1377 return 73; // "combine_extracted_vector_load"
1378 case 's': // 1 string to match.
1379 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1380 break;
1381 return 219; // "combine_shuffle_disjoint_mask"
1382 }
1383 break;
1384 case 'n': // 2 strings to match.
1385 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1386 break;
1387 switch (RuleIdentifier[24]) {
1388 default: break;
1389 case 'r': // 1 string to match.
1390 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1391 break;
1392 return 148; // "constant_fold_intrinsic_round"
1393 case 't': // 1 string to match.
1394 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1395 break;
1396 return 147; // "constant_fold_intrinsic_trunc"
1397 }
1398 break;
1399 }
1400 break;
1401 case 'i': // 1 string to match.
1402 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1403 break;
1404 return 116; // "icmp_to_true_false_known_bits"
1405 }
1406 break;
1407 case 30: // 2 strings to match.
1408 switch (RuleIdentifier[0]) {
1409 default: break;
1410 case 'f': // 1 string to match.
1411 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1412 break;
1413 return 44; // "freeze_of_non_undef_non_poison"
1414 case 'r': // 1 string to match.
1415 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1416 break;
1417 return 105; // "right_identity_neg_zero_fp_nsz"
1418 }
1419 break;
1420 case 31: // 2 strings to match.
1421 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1422 break;
1423 switch (RuleIdentifier[22]) {
1424 default: break;
1425 case 'e': // 1 string to match.
1426 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1427 break;
1428 return 25; // "insert_vector_element_elt_undef"
1429 case 'i': // 1 string to match.
1430 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1431 break;
1432 return 24; // "insert_vector_element_idx_undef"
1433 }
1434 break;
1435 case 32: // 4 strings to match.
1436 switch (RuleIdentifier[0]) {
1437 default: break;
1438 case 'b': // 1 string to match.
1439 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1440 break;
1441 return 177; // "bitfield_extract_from_sext_inreg"
1442 case 'c': // 2 strings to match.
1443 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1444 break;
1445 switch (RuleIdentifier[9]) {
1446 default: break;
1447 case 'a': // 1 string to match.
1448 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1449 break;
1450 return 189; // "combine_fadd_fmul_to_fmad_or_fma"
1451 case 's': // 1 string to match.
1452 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1453 break;
1454 return 193; // "combine_fsub_fmul_to_fmad_or_fma"
1455 }
1456 break;
1457 case 'e': // 1 string to match.
1458 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1459 break;
1460 return 28; // "extract_vector_element_not_const"
1461 }
1462 break;
1463 case 33: // 1 string to match.
1464 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1465 break;
1466 return 149; // "constant_fold_intrinsic_roundeven"
1467 case 34: // 1 string to match.
1468 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1469 break;
1470 return 70; // "extract_all_elts_from_build_vector"
1471 case 35: // 1 string to match.
1472 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1473 break;
1474 return 30; // "extract_vector_element_build_vector"
1475 case 36: // 4 strings to match.
1476 switch (RuleIdentifier[0]) {
1477 default: break;
1478 case 'c': // 2 strings to match.
1479 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1480 break;
1481 switch (RuleIdentifier[8]) {
1482 default: break;
1483 case 'f': // 1 string to match.
1484 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1485 break;
1486 return 191; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1487 case 'i': // 1 string to match.
1488 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1489 break;
1490 return 68; // "combine_insert_vec_elts_build_vector"
1491 }
1492 break;
1493 case 'i': // 1 string to match.
1494 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1495 break;
1496 return 85; // "insert_extract_vec_elt_out_of_bounds"
1497 case 'm': // 1 string to match.
1498 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1499 break;
1500 return 23; // "match_extract_of_element_undef_index"
1501 }
1502 break;
1503 case 37: // 4 strings to match.
1504 switch (RuleIdentifier[0]) {
1505 default: break;
1506 case 'c': // 1 string to match.
1507 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1508 break;
1509 return 194; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1510 case 'e': // 1 string to match.
1511 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1512 break;
1513 return 38; // "extract_vector_element_shuffle_vector"
1514 case 'h': // 1 string to match.
1515 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1516 break;
1517 return 109; // "hoist_logic_op_with_same_opcode_hands"
1518 case 'm': // 1 string to match.
1519 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1520 break;
1521 return 22; // "match_extract_of_element_undef_vector"
1522 }
1523 break;
1524 case 38: // 2 strings to match.
1525 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1526 break;
1527 switch (RuleIdentifier[9]) {
1528 default: break;
1529 case 'a': // 1 string to match.
1530 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1531 break;
1532 return 190; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1533 case 's': // 1 string to match.
1534 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1535 break;
1536 return 195; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1537 }
1538 break;
1539 case 40: // 1 string to match.
1540 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1541 break;
1542 return 29; // "extract_vector_element_different_indices"
1543 case 42: // 9 strings to match.
1544 switch (RuleIdentifier[0]) {
1545 default: break;
1546 case 'c': // 1 string to match.
1547 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1548 break;
1549 return 192; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1550 case 'e': // 7 strings to match.
1551 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1552 break;
1553 switch (RuleIdentifier[41]) {
1554 default: break;
1555 case '2': // 1 string to match.
1556 return 31; // "extract_vector_element_build_vector_trunc2"
1557 case '3': // 1 string to match.
1558 return 32; // "extract_vector_element_build_vector_trunc3"
1559 case '4': // 1 string to match.
1560 return 33; // "extract_vector_element_build_vector_trunc4"
1561 case '5': // 1 string to match.
1562 return 34; // "extract_vector_element_build_vector_trunc5"
1563 case '6': // 1 string to match.
1564 return 35; // "extract_vector_element_build_vector_trunc6"
1565 case '7': // 1 string to match.
1566 return 36; // "extract_vector_element_build_vector_trunc7"
1567 case '8': // 1 string to match.
1568 return 37; // "extract_vector_element_build_vector_trunc8"
1569 }
1570 break;
1571 case 'f': // 1 string to match.
1572 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1573 break;
1574 return 172; // "funnel_shift_or_shift_to_funnel_shift_left"
1575 }
1576 break;
1577 case 43: // 2 strings to match.
1578 switch (RuleIdentifier[0]) {
1579 default: break;
1580 case 'c': // 1 string to match.
1581 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1582 break;
1583 return 196; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1584 case 'f': // 1 string to match.
1585 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1586 break;
1587 return 173; // "funnel_shift_or_shift_to_funnel_shift_right"
1588 }
1589 break;
1590 case 44: // 1 string to match.
1591 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1592 break;
1593 return 39; // "insert_vector_element_extract_vector_element"
1594 case 46: // 1 string to match.
1595 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1596 break;
1597 return 45; // "push_freeze_to_prevent_poison_from_propagating"
1598 }
1599#endif // ifndef NDEBUG
1600
1601 return std::nullopt;
1602}
1603static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1604 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1605 if (!RangePair.second.empty()) {
1606 const auto First = getRuleIdxForIdentifier(RangePair.first);
1607 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1608 if (!First || !Last)
1609 return std::nullopt;
1610 if (First >= Last)
1611 report_fatal_error("Beginning of range should be before end of range");
1612 return {{*First, *Last + 1}};
1613 }
1614 if (RangePair.first == "*") {
1615 return {{0, 252}};
1616 }
1617 const auto I = getRuleIdxForIdentifier(RangePair.first);
1618 if (!I)
1619 return std::nullopt;
1620 return {{*I, *I + 1}};
1621}
1622
1623bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1624 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1625 if (!MaybeRange)
1626 return false;
1627 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1628 DisabledRules.reset(I);
1629 return true;
1630}
1631
1632bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1633 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1634 if (!MaybeRange)
1635 return false;
1636 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1637 DisabledRules.set(I);
1638 return true;
1639}
1640
1641static std::vector<std::string> AArch64PreLegalizerCombinerOption;
1642static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption(
1643 "aarch64prelegalizercombiner-disable-rule",
1644 cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass"),
1645 cl::CommaSeparated,
1646 cl::Hidden,
1647 cl::cat(GICombinerOptionCategory),
1648 cl::callback([](const std::string &Str) {
1649 AArch64PreLegalizerCombinerOption.push_back(Str);
1650 }));
1651static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption(
1652 "aarch64prelegalizercombiner-only-enable-rule",
1653 cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones"),
1654 cl::Hidden,
1655 cl::cat(GICombinerOptionCategory),
1656 cl::callback([](const std::string &CommaSeparatedArg) {
1657 StringRef Str = CommaSeparatedArg;
1658 AArch64PreLegalizerCombinerOption.push_back("*");
1659 do {
1660 auto X = Str.split(",");
1661 AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str());
1662 Str = X.second;
1663 } while (!Str.empty());
1664 }));
1665
1666
1667bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1668 return !DisabledRules.test(RuleID);
1669}
1670bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1671 for (StringRef Identifier : AArch64PreLegalizerCombinerOption) {
1672 bool Enabled = Identifier.consume_front("!");
1673 if (Enabled && !setRuleEnabled(Identifier))
1674 return false;
1675 if (!Enabled && !setRuleDisabled(Identifier))
1676 return false;
1677 }
1678 return true;
1679}
1680
1681
1682#endif // GET_GICOMBINER_TYPES
1683
1684#ifdef GET_GICOMBINER_TYPES
1685
1686const unsigned MAX_SUBTARGET_PREDICATES = 1;
1687using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1688
1689#endif // GET_GICOMBINER_TYPES
1690
1691#ifdef GET_GICOMBINER_CLASS_MEMBERS
1692
1693PredicateBitset AvailableModuleFeatures;
1694mutable PredicateBitset AvailableFunctionFeatures;
1695PredicateBitset getAvailableFeatures() const {
1696 return AvailableModuleFeatures | AvailableFunctionFeatures;
1697}
1698PredicateBitset
1699computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
1700PredicateBitset
1701computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
1702 const MachineFunction *MF) const;
1703void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1704
1705#endif // GET_GICOMBINER_CLASS_MEMBERS
1706
1707#ifdef GET_GICOMBINER_CLASS_MEMBERS
1708
1709 mutable MatcherState State;
1710 typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1711 typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1712 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1713 static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1714 static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1715 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1716 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1717 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1718 const uint8_t *getMatchTable() const override;
1719 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1720 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1721 bool testSimplePredicate(unsigned PredicateID) const override;
1722 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1723
1724#endif // GET_GICOMBINER_CLASS_MEMBERS
1725
1726#ifdef GET_GICOMBINER_IMPL
1727
1728// LLT Objects.
1729enum {
1730 GILLT_s1,
1731};
1732const static size_t NumTypeObjects = 1;
1733const static LLT TypeObjects[] = {
1734 LLT::scalar(1),
1735};
1736
1737// Bits for subtarget features that participate in instruction matching.
1738enum SubtargetFeatureBits : uint8_t {
1739 Feature_HasDotProdBit = 0,
1740};
1741
1742PredicateBitset AArch64PreLegalizerCombinerImpl::
1743computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
1744 PredicateBitset Features{};
1745 if (Subtarget->hasDotProd())
1746 Features.set(Feature_HasDotProdBit);
1747 return Features;
1748}
1749
1750void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1751 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
1752}
1753PredicateBitset AArch64PreLegalizerCombinerImpl::
1754computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
1755 PredicateBitset Features{};
1756 return Features;
1757}
1758
1759// Feature bitsets.
1760enum {
1761 GIFBS_Invalid,
1762 GIFBS_HasDotProd,
1763};
1764constexpr static PredicateBitset FeatureBitsets[] {
1765 {}, // GIFBS_Invalid
1766 {Feature_HasDotProdBit, },
1767};
1768
1769// ComplexPattern predicates.
1770enum {
1771 GICP_Invalid,
1772};
1773// See constructor for table contents
1774
1775AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn
1776AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1777 nullptr, // GICP_Invalid
1778};
1779
1780enum {
1781 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1782 GICXXPred_MI_Predicate_GICombiner1,
1783 GICXXPred_MI_Predicate_GICombiner2,
1784 GICXXPred_MI_Predicate_GICombiner3,
1785 GICXXPred_MI_Predicate_GICombiner4,
1786 GICXXPred_MI_Predicate_GICombiner5,
1787 GICXXPred_MI_Predicate_GICombiner6,
1788 GICXXPred_MI_Predicate_GICombiner7,
1789 GICXXPred_MI_Predicate_GICombiner8,
1790 GICXXPred_MI_Predicate_GICombiner9,
1791 GICXXPred_MI_Predicate_GICombiner10,
1792 GICXXPred_MI_Predicate_GICombiner11,
1793 GICXXPred_MI_Predicate_GICombiner12,
1794 GICXXPred_MI_Predicate_GICombiner13,
1795 GICXXPred_MI_Predicate_GICombiner14,
1796 GICXXPred_MI_Predicate_GICombiner15,
1797};
1798bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1799 switch (PredicateID) {
1800 case GICXXPred_MI_Predicate_GICombiner0: {
1801 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1802 }
1803 case GICXXPred_MI_Predicate_GICombiner1: {
1804 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1805 }
1806 case GICXXPred_MI_Predicate_GICombiner2: {
1807 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1808 }
1809 case GICXXPred_MI_Predicate_GICombiner3: {
1810 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1811 }
1812 case GICXXPred_MI_Predicate_GICombiner4: {
1813 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1814 }
1815 case GICXXPred_MI_Predicate_GICombiner5: {
1816 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1817 }
1818 case GICXXPred_MI_Predicate_GICombiner6: {
1819 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1820 }
1821 case GICXXPred_MI_Predicate_GICombiner7: {
1822 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1823 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1824 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1825 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1826 }
1827 case GICXXPred_MI_Predicate_GICombiner8: {
1828 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1829 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1830 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1831 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1832 }
1833 case GICXXPred_MI_Predicate_GICombiner9: {
1834 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1835 Helper.isLegalOrBeforeLegalizer(
1836 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1837 }
1838 case GICXXPred_MI_Predicate_GICombiner10: {
1839 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1840 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1841 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1842 }
1843 case GICXXPred_MI_Predicate_GICombiner11: {
1844 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1845 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1846 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1847 }
1848 case GICXXPred_MI_Predicate_GICombiner12: {
1849 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1850 }
1851 case GICXXPred_MI_Predicate_GICombiner13: {
1852 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1853 }
1854 case GICXXPred_MI_Predicate_GICombiner14: {
1855 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1856 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1857 }
1858 case GICXXPred_MI_Predicate_GICombiner15: {
1859 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1860 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1861 }
1862 }
1863 llvm_unreachable("Unknown predicate");
1864 return false;
1865}
1866bool AArch64PreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1867 llvm_unreachable("Unknown predicate");
1868 return false;
1869}
1870bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1871 llvm_unreachable("Unknown predicate");
1872 return false;
1873}
1874bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1875 llvm_unreachable("Unknown predicate");
1876 return false;
1877}
1878bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1879 llvm_unreachable("Unknown predicate");
1880 return false;
1881}
1882enum {
1883 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1884 GICXXPred_Simple_IsRule1Enabled,
1885 GICXXPred_Simple_IsRule2Enabled,
1886 GICXXPred_Simple_IsRule3Enabled,
1887 GICXXPred_Simple_IsRule4Enabled,
1888 GICXXPred_Simple_IsRule5Enabled,
1889 GICXXPred_Simple_IsRule6Enabled,
1890 GICXXPred_Simple_IsRule7Enabled,
1891 GICXXPred_Simple_IsRule8Enabled,
1892 GICXXPred_Simple_IsRule9Enabled,
1893 GICXXPred_Simple_IsRule10Enabled,
1894 GICXXPred_Simple_IsRule11Enabled,
1895 GICXXPred_Simple_IsRule12Enabled,
1896 GICXXPred_Simple_IsRule13Enabled,
1897 GICXXPred_Simple_IsRule14Enabled,
1898 GICXXPred_Simple_IsRule15Enabled,
1899 GICXXPred_Simple_IsRule16Enabled,
1900 GICXXPred_Simple_IsRule17Enabled,
1901 GICXXPred_Simple_IsRule18Enabled,
1902 GICXXPred_Simple_IsRule19Enabled,
1903 GICXXPred_Simple_IsRule20Enabled,
1904 GICXXPred_Simple_IsRule21Enabled,
1905 GICXXPred_Simple_IsRule22Enabled,
1906 GICXXPred_Simple_IsRule23Enabled,
1907 GICXXPred_Simple_IsRule24Enabled,
1908 GICXXPred_Simple_IsRule25Enabled,
1909 GICXXPred_Simple_IsRule26Enabled,
1910 GICXXPred_Simple_IsRule27Enabled,
1911 GICXXPred_Simple_IsRule28Enabled,
1912 GICXXPred_Simple_IsRule29Enabled,
1913 GICXXPred_Simple_IsRule30Enabled,
1914 GICXXPred_Simple_IsRule31Enabled,
1915 GICXXPred_Simple_IsRule32Enabled,
1916 GICXXPred_Simple_IsRule33Enabled,
1917 GICXXPred_Simple_IsRule34Enabled,
1918 GICXXPred_Simple_IsRule35Enabled,
1919 GICXXPred_Simple_IsRule36Enabled,
1920 GICXXPred_Simple_IsRule37Enabled,
1921 GICXXPred_Simple_IsRule38Enabled,
1922 GICXXPred_Simple_IsRule39Enabled,
1923 GICXXPred_Simple_IsRule40Enabled,
1924 GICXXPred_Simple_IsRule41Enabled,
1925 GICXXPred_Simple_IsRule42Enabled,
1926 GICXXPred_Simple_IsRule43Enabled,
1927 GICXXPred_Simple_IsRule44Enabled,
1928 GICXXPred_Simple_IsRule45Enabled,
1929 GICXXPred_Simple_IsRule46Enabled,
1930 GICXXPred_Simple_IsRule47Enabled,
1931 GICXXPred_Simple_IsRule48Enabled,
1932 GICXXPred_Simple_IsRule49Enabled,
1933 GICXXPred_Simple_IsRule50Enabled,
1934 GICXXPred_Simple_IsRule51Enabled,
1935 GICXXPred_Simple_IsRule52Enabled,
1936 GICXXPred_Simple_IsRule53Enabled,
1937 GICXXPred_Simple_IsRule54Enabled,
1938 GICXXPred_Simple_IsRule55Enabled,
1939 GICXXPred_Simple_IsRule56Enabled,
1940 GICXXPred_Simple_IsRule57Enabled,
1941 GICXXPred_Simple_IsRule58Enabled,
1942 GICXXPred_Simple_IsRule59Enabled,
1943 GICXXPred_Simple_IsRule60Enabled,
1944 GICXXPred_Simple_IsRule61Enabled,
1945 GICXXPred_Simple_IsRule62Enabled,
1946 GICXXPred_Simple_IsRule63Enabled,
1947 GICXXPred_Simple_IsRule64Enabled,
1948 GICXXPred_Simple_IsRule65Enabled,
1949 GICXXPred_Simple_IsRule66Enabled,
1950 GICXXPred_Simple_IsRule67Enabled,
1951 GICXXPred_Simple_IsRule68Enabled,
1952 GICXXPred_Simple_IsRule69Enabled,
1953 GICXXPred_Simple_IsRule70Enabled,
1954 GICXXPred_Simple_IsRule71Enabled,
1955 GICXXPred_Simple_IsRule72Enabled,
1956 GICXXPred_Simple_IsRule73Enabled,
1957 GICXXPred_Simple_IsRule74Enabled,
1958 GICXXPred_Simple_IsRule75Enabled,
1959 GICXXPred_Simple_IsRule76Enabled,
1960 GICXXPred_Simple_IsRule77Enabled,
1961 GICXXPred_Simple_IsRule78Enabled,
1962 GICXXPred_Simple_IsRule79Enabled,
1963 GICXXPred_Simple_IsRule80Enabled,
1964 GICXXPred_Simple_IsRule81Enabled,
1965 GICXXPred_Simple_IsRule82Enabled,
1966 GICXXPred_Simple_IsRule83Enabled,
1967 GICXXPred_Simple_IsRule84Enabled,
1968 GICXXPred_Simple_IsRule85Enabled,
1969 GICXXPred_Simple_IsRule86Enabled,
1970 GICXXPred_Simple_IsRule87Enabled,
1971 GICXXPred_Simple_IsRule88Enabled,
1972 GICXXPred_Simple_IsRule89Enabled,
1973 GICXXPred_Simple_IsRule90Enabled,
1974 GICXXPred_Simple_IsRule91Enabled,
1975 GICXXPred_Simple_IsRule92Enabled,
1976 GICXXPred_Simple_IsRule93Enabled,
1977 GICXXPred_Simple_IsRule94Enabled,
1978 GICXXPred_Simple_IsRule95Enabled,
1979 GICXXPred_Simple_IsRule96Enabled,
1980 GICXXPred_Simple_IsRule97Enabled,
1981 GICXXPred_Simple_IsRule98Enabled,
1982 GICXXPred_Simple_IsRule99Enabled,
1983 GICXXPred_Simple_IsRule100Enabled,
1984 GICXXPred_Simple_IsRule101Enabled,
1985 GICXXPred_Simple_IsRule102Enabled,
1986 GICXXPred_Simple_IsRule103Enabled,
1987 GICXXPred_Simple_IsRule104Enabled,
1988 GICXXPred_Simple_IsRule105Enabled,
1989 GICXXPred_Simple_IsRule106Enabled,
1990 GICXXPred_Simple_IsRule107Enabled,
1991 GICXXPred_Simple_IsRule108Enabled,
1992 GICXXPred_Simple_IsRule109Enabled,
1993 GICXXPred_Simple_IsRule110Enabled,
1994 GICXXPred_Simple_IsRule111Enabled,
1995 GICXXPred_Simple_IsRule112Enabled,
1996 GICXXPred_Simple_IsRule113Enabled,
1997 GICXXPred_Simple_IsRule114Enabled,
1998 GICXXPred_Simple_IsRule115Enabled,
1999 GICXXPred_Simple_IsRule116Enabled,
2000 GICXXPred_Simple_IsRule117Enabled,
2001 GICXXPred_Simple_IsRule118Enabled,
2002 GICXXPred_Simple_IsRule119Enabled,
2003 GICXXPred_Simple_IsRule120Enabled,
2004 GICXXPred_Simple_IsRule121Enabled,
2005 GICXXPred_Simple_IsRule122Enabled,
2006 GICXXPred_Simple_IsRule123Enabled,
2007 GICXXPred_Simple_IsRule124Enabled,
2008 GICXXPred_Simple_IsRule125Enabled,
2009 GICXXPred_Simple_IsRule126Enabled,
2010 GICXXPred_Simple_IsRule127Enabled,
2011 GICXXPred_Simple_IsRule128Enabled,
2012 GICXXPred_Simple_IsRule129Enabled,
2013 GICXXPred_Simple_IsRule130Enabled,
2014 GICXXPred_Simple_IsRule131Enabled,
2015 GICXXPred_Simple_IsRule132Enabled,
2016 GICXXPred_Simple_IsRule133Enabled,
2017 GICXXPred_Simple_IsRule134Enabled,
2018 GICXXPred_Simple_IsRule135Enabled,
2019 GICXXPred_Simple_IsRule136Enabled,
2020 GICXXPred_Simple_IsRule137Enabled,
2021 GICXXPred_Simple_IsRule138Enabled,
2022 GICXXPred_Simple_IsRule139Enabled,
2023 GICXXPred_Simple_IsRule140Enabled,
2024 GICXXPred_Simple_IsRule141Enabled,
2025 GICXXPred_Simple_IsRule142Enabled,
2026 GICXXPred_Simple_IsRule143Enabled,
2027 GICXXPred_Simple_IsRule144Enabled,
2028 GICXXPred_Simple_IsRule145Enabled,
2029 GICXXPred_Simple_IsRule146Enabled,
2030 GICXXPred_Simple_IsRule147Enabled,
2031 GICXXPred_Simple_IsRule148Enabled,
2032 GICXXPred_Simple_IsRule149Enabled,
2033 GICXXPred_Simple_IsRule150Enabled,
2034 GICXXPred_Simple_IsRule151Enabled,
2035 GICXXPred_Simple_IsRule152Enabled,
2036 GICXXPred_Simple_IsRule153Enabled,
2037 GICXXPred_Simple_IsRule154Enabled,
2038 GICXXPred_Simple_IsRule155Enabled,
2039 GICXXPred_Simple_IsRule156Enabled,
2040 GICXXPred_Simple_IsRule157Enabled,
2041 GICXXPred_Simple_IsRule158Enabled,
2042 GICXXPred_Simple_IsRule159Enabled,
2043 GICXXPred_Simple_IsRule160Enabled,
2044 GICXXPred_Simple_IsRule161Enabled,
2045 GICXXPred_Simple_IsRule162Enabled,
2046 GICXXPred_Simple_IsRule163Enabled,
2047 GICXXPred_Simple_IsRule164Enabled,
2048 GICXXPred_Simple_IsRule165Enabled,
2049 GICXXPred_Simple_IsRule166Enabled,
2050 GICXXPred_Simple_IsRule167Enabled,
2051 GICXXPred_Simple_IsRule168Enabled,
2052 GICXXPred_Simple_IsRule169Enabled,
2053 GICXXPred_Simple_IsRule170Enabled,
2054 GICXXPred_Simple_IsRule171Enabled,
2055 GICXXPred_Simple_IsRule172Enabled,
2056 GICXXPred_Simple_IsRule173Enabled,
2057 GICXXPred_Simple_IsRule174Enabled,
2058 GICXXPred_Simple_IsRule175Enabled,
2059 GICXXPred_Simple_IsRule176Enabled,
2060 GICXXPred_Simple_IsRule177Enabled,
2061 GICXXPred_Simple_IsRule178Enabled,
2062 GICXXPred_Simple_IsRule179Enabled,
2063 GICXXPred_Simple_IsRule180Enabled,
2064 GICXXPred_Simple_IsRule181Enabled,
2065 GICXXPred_Simple_IsRule182Enabled,
2066 GICXXPred_Simple_IsRule183Enabled,
2067 GICXXPred_Simple_IsRule184Enabled,
2068 GICXXPred_Simple_IsRule185Enabled,
2069 GICXXPred_Simple_IsRule186Enabled,
2070 GICXXPred_Simple_IsRule187Enabled,
2071 GICXXPred_Simple_IsRule188Enabled,
2072 GICXXPred_Simple_IsRule189Enabled,
2073 GICXXPred_Simple_IsRule190Enabled,
2074 GICXXPred_Simple_IsRule191Enabled,
2075 GICXXPred_Simple_IsRule192Enabled,
2076 GICXXPred_Simple_IsRule193Enabled,
2077 GICXXPred_Simple_IsRule194Enabled,
2078 GICXXPred_Simple_IsRule195Enabled,
2079 GICXXPred_Simple_IsRule196Enabled,
2080 GICXXPred_Simple_IsRule197Enabled,
2081 GICXXPred_Simple_IsRule198Enabled,
2082 GICXXPred_Simple_IsRule199Enabled,
2083 GICXXPred_Simple_IsRule200Enabled,
2084 GICXXPred_Simple_IsRule201Enabled,
2085 GICXXPred_Simple_IsRule202Enabled,
2086 GICXXPred_Simple_IsRule203Enabled,
2087 GICXXPred_Simple_IsRule204Enabled,
2088 GICXXPred_Simple_IsRule205Enabled,
2089 GICXXPred_Simple_IsRule206Enabled,
2090 GICXXPred_Simple_IsRule207Enabled,
2091 GICXXPred_Simple_IsRule208Enabled,
2092 GICXXPred_Simple_IsRule209Enabled,
2093 GICXXPred_Simple_IsRule210Enabled,
2094 GICXXPred_Simple_IsRule211Enabled,
2095 GICXXPred_Simple_IsRule212Enabled,
2096 GICXXPred_Simple_IsRule213Enabled,
2097 GICXXPred_Simple_IsRule214Enabled,
2098 GICXXPred_Simple_IsRule215Enabled,
2099 GICXXPred_Simple_IsRule216Enabled,
2100 GICXXPred_Simple_IsRule217Enabled,
2101 GICXXPred_Simple_IsRule218Enabled,
2102 GICXXPred_Simple_IsRule219Enabled,
2103 GICXXPred_Simple_IsRule220Enabled,
2104 GICXXPred_Simple_IsRule221Enabled,
2105 GICXXPred_Simple_IsRule222Enabled,
2106 GICXXPred_Simple_IsRule223Enabled,
2107 GICXXPred_Simple_IsRule224Enabled,
2108 GICXXPred_Simple_IsRule225Enabled,
2109 GICXXPred_Simple_IsRule226Enabled,
2110 GICXXPred_Simple_IsRule227Enabled,
2111 GICXXPred_Simple_IsRule228Enabled,
2112 GICXXPred_Simple_IsRule229Enabled,
2113 GICXXPred_Simple_IsRule230Enabled,
2114 GICXXPred_Simple_IsRule231Enabled,
2115 GICXXPred_Simple_IsRule232Enabled,
2116 GICXXPred_Simple_IsRule233Enabled,
2117 GICXXPred_Simple_IsRule234Enabled,
2118 GICXXPred_Simple_IsRule235Enabled,
2119 GICXXPred_Simple_IsRule236Enabled,
2120 GICXXPred_Simple_IsRule237Enabled,
2121 GICXXPred_Simple_IsRule238Enabled,
2122 GICXXPred_Simple_IsRule239Enabled,
2123 GICXXPred_Simple_IsRule240Enabled,
2124 GICXXPred_Simple_IsRule241Enabled,
2125 GICXXPred_Simple_IsRule242Enabled,
2126 GICXXPred_Simple_IsRule243Enabled,
2127 GICXXPred_Simple_IsRule244Enabled,
2128 GICXXPred_Simple_IsRule245Enabled,
2129 GICXXPred_Simple_IsRule246Enabled,
2130 GICXXPred_Simple_IsRule247Enabled,
2131 GICXXPred_Simple_IsRule248Enabled,
2132 GICXXPred_Simple_IsRule249Enabled,
2133 GICXXPred_Simple_IsRule250Enabled,
2134 GICXXPred_Simple_IsRule251Enabled,
2135};
2136
2137bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2138 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2139}
2140// Custom renderers.
2141enum {
2142 GICR_Invalid,
2143};
2144AArch64PreLegalizerCombinerImpl::CustomRendererFn
2145AArch64PreLegalizerCombinerImpl::CustomRenderers[] = {
2146 nullptr, // GICR_Invalid
2147};
2148
2149bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2150 const TargetSubtargetInfo &ST = MF.getSubtarget();
2151 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2152 B.setInstrAndDebugLoc(I);
2153 State.MIs.clear();
2154 State.MIs.push_back(&I);
2155 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2156 return true;
2157 }
2158
2159 return false;
2160}
2161
2162enum {
2163 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2164 GICXXCustomAction_GICombiner1,
2165 GICXXCustomAction_GICombiner2,
2166 GICXXCustomAction_GICombiner3,
2167 GICXXCustomAction_GICombiner4,
2168 GICXXCustomAction_GICombiner5,
2169 GICXXCustomAction_GICombiner6,
2170 GICXXCustomAction_GICombiner7,
2171 GICXXCustomAction_GICombiner8,
2172 GICXXCustomAction_GICombiner9,
2173 GICXXCustomAction_GICombiner10,
2174 GICXXCustomAction_GICombiner11,
2175 GICXXCustomAction_GICombiner12,
2176 GICXXCustomAction_GICombiner13,
2177 GICXXCustomAction_GICombiner14,
2178 GICXXCustomAction_GICombiner15,
2179 GICXXCustomAction_GICombiner16,
2180 GICXXCustomAction_GICombiner17,
2181 GICXXCustomAction_GICombiner18,
2182 GICXXCustomAction_GICombiner19,
2183 GICXXCustomAction_GICombiner20,
2184 GICXXCustomAction_GICombiner21,
2185 GICXXCustomAction_GICombiner22,
2186 GICXXCustomAction_GICombiner23,
2187 GICXXCustomAction_GICombiner24,
2188 GICXXCustomAction_GICombiner25,
2189 GICXXCustomAction_GICombiner26,
2190 GICXXCustomAction_GICombiner27,
2191 GICXXCustomAction_GICombiner28,
2192 GICXXCustomAction_GICombiner29,
2193 GICXXCustomAction_GICombiner30,
2194 GICXXCustomAction_GICombiner31,
2195 GICXXCustomAction_GICombiner32,
2196 GICXXCustomAction_GICombiner33,
2197 GICXXCustomAction_GICombiner34,
2198 GICXXCustomAction_GICombiner35,
2199 GICXXCustomAction_GICombiner36,
2200 GICXXCustomAction_GICombiner37,
2201 GICXXCustomAction_GICombiner38,
2202 GICXXCustomAction_GICombiner39,
2203 GICXXCustomAction_GICombiner40,
2204 GICXXCustomAction_GICombiner41,
2205 GICXXCustomAction_GICombiner42,
2206 GICXXCustomAction_GICombiner43,
2207 GICXXCustomAction_GICombiner44,
2208 GICXXCustomAction_GICombiner45,
2209 GICXXCustomAction_GICombiner46,
2210 GICXXCustomAction_GICombiner47,
2211 GICXXCustomAction_GICombiner48,
2212 GICXXCustomAction_GICombiner49,
2213 GICXXCustomAction_GICombiner50,
2214 GICXXCustomAction_GICombiner51,
2215 GICXXCustomAction_GICombiner52,
2216 GICXXCustomAction_GICombiner53,
2217 GICXXCustomAction_GICombiner54,
2218 GICXXCustomAction_GICombiner55,
2219 GICXXCustomAction_GICombiner56,
2220 GICXXCustomAction_GICombiner57,
2221 GICXXCustomAction_GICombiner58,
2222 GICXXCustomAction_GICombiner59,
2223 GICXXCustomAction_GICombiner60,
2224 GICXXCustomAction_GICombiner61,
2225 GICXXCustomAction_GICombiner62,
2226 GICXXCustomAction_GICombiner63,
2227 GICXXCustomAction_GICombiner64,
2228 GICXXCustomAction_GICombiner65,
2229 GICXXCustomAction_GICombiner66,
2230 GICXXCustomAction_GICombiner67,
2231 GICXXCustomAction_GICombiner68,
2232 GICXXCustomAction_GICombiner69,
2233 GICXXCustomAction_GICombiner70,
2234 GICXXCustomAction_GICombiner71,
2235 GICXXCustomAction_GICombiner72,
2236 GICXXCustomAction_GICombiner73,
2237 GICXXCustomAction_GICombiner74,
2238 GICXXCustomAction_GICombiner75,
2239 GICXXCustomAction_GICombiner76,
2240 GICXXCustomAction_GICombiner77,
2241 GICXXCustomAction_GICombiner78,
2242 GICXXCustomAction_GICombiner79,
2243 GICXXCustomAction_GICombiner80,
2244 GICXXCustomAction_GICombiner81,
2245 GICXXCustomAction_GICombiner82,
2246 GICXXCustomAction_GICombiner83,
2247 GICXXCustomAction_GICombiner84,
2248 GICXXCustomAction_GICombiner85,
2249 GICXXCustomAction_GICombiner86,
2250 GICXXCustomAction_GICombiner87,
2251 GICXXCustomAction_GICombiner88,
2252 GICXXCustomAction_GICombiner89,
2253 GICXXCustomAction_GICombiner90,
2254 GICXXCustomAction_GICombiner91,
2255 GICXXCustomAction_GICombiner92,
2256 GICXXCustomAction_GICombiner93,
2257 GICXXCustomAction_GICombiner94,
2258 GICXXCustomAction_GICombiner95,
2259 GICXXCustomAction_GICombiner96,
2260 GICXXCustomAction_GICombiner97,
2261 GICXXCustomAction_GICombiner98,
2262 GICXXCustomAction_GICombiner99,
2263 GICXXCustomAction_GICombiner100,
2264 GICXXCustomAction_GICombiner101,
2265 GICXXCustomAction_GICombiner102,
2266 GICXXCustomAction_GICombiner103,
2267 GICXXCustomAction_GICombiner104,
2268 GICXXCustomAction_GICombiner105,
2269 GICXXCustomAction_GICombiner106,
2270 GICXXCustomAction_GICombiner107,
2271 GICXXCustomAction_GICombiner108,
2272 GICXXCustomAction_GICombiner109,
2273 GICXXCustomAction_GICombiner110,
2274 GICXXCustomAction_GICombiner111,
2275 GICXXCustomAction_GICombiner112,
2276 GICXXCustomAction_GICombiner113,
2277 GICXXCustomAction_GICombiner114,
2278 GICXXCustomAction_GICombiner115,
2279 GICXXCustomAction_GICombiner116,
2280 GICXXCustomAction_GICombiner117,
2281 GICXXCustomAction_GICombiner118,
2282 GICXXCustomAction_GICombiner119,
2283 GICXXCustomAction_GICombiner120,
2284 GICXXCustomAction_GICombiner121,
2285 GICXXCustomAction_GICombiner122,
2286 GICXXCustomAction_GICombiner123,
2287 GICXXCustomAction_GICombiner124,
2288 GICXXCustomAction_GICombiner125,
2289 GICXXCustomAction_GICombiner126,
2290 GICXXCustomAction_GICombiner127,
2291 GICXXCustomAction_GICombiner128,
2292 GICXXCustomAction_GICombiner129,
2293 GICXXCustomAction_GICombiner130,
2294 GICXXCustomAction_GICombiner131,
2295 GICXXCustomAction_GICombiner132,
2296 GICXXCustomAction_GICombiner133,
2297 GICXXCustomAction_GICombiner134,
2298 GICXXCustomAction_GICombiner135,
2299 GICXXCustomAction_GICombiner136,
2300 GICXXCustomAction_GICombiner137,
2301 GICXXCustomAction_GICombiner138,
2302 GICXXCustomAction_GICombiner139,
2303 GICXXCustomAction_GICombiner140,
2304 GICXXCustomAction_GICombiner141,
2305 GICXXCustomAction_GICombiner142,
2306 GICXXCustomAction_GICombiner143,
2307 GICXXCustomAction_GICombiner144,
2308 GICXXCustomAction_GICombiner145,
2309 GICXXCustomAction_GICombiner146,
2310 GICXXCustomAction_GICombiner147,
2311 GICXXCustomAction_GICombiner148,
2312 GICXXCustomAction_GICombiner149,
2313 GICXXCustomAction_GICombiner150,
2314 GICXXCustomAction_GICombiner151,
2315 GICXXCustomAction_GICombiner152,
2316 GICXXCustomAction_GICombiner153,
2317 GICXXCustomAction_GICombiner154,
2318 GICXXCustomAction_GICombiner155,
2319 GICXXCustomAction_GICombiner156,
2320 GICXXCustomAction_GICombiner157,
2321 GICXXCustomAction_GICombiner158,
2322 GICXXCustomAction_GICombiner159,
2323 GICXXCustomAction_GICombiner160,
2324};
2325bool AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2326 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2327 switch(ApplyID) {
2328 case GICXXCustomAction_GICombiner0:{
2329 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2330 // Match Patterns
2331 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2332 return false;
2333 }
2334 // Apply Patterns
2335 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2336 return true;
2337 }
2338 case GICXXCustomAction_GICombiner1:{
2339 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2340 // Match Patterns
2341 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2342 return false;
2343 }
2344 // Apply Patterns
2345 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2346 return true;
2347 }
2348 case GICXXCustomAction_GICombiner2:{
2349 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2350 // Match Patterns
2351 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2352 return false;
2353 }
2354 // Apply Patterns
2355 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2356 return true;
2357 }
2358 case GICXXCustomAction_GICombiner3:{
2359 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2360 // Match Patterns
2361 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2362 return false;
2363 }
2364 // Apply Patterns
2365 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2366 return true;
2367 }
2368 case GICXXCustomAction_GICombiner4:{
2369 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2370 // Match Patterns
2371 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2372 return false;
2373 }
2374 // Apply Patterns
2375 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2376 return true;
2377 }
2378 case GICXXCustomAction_GICombiner5:{
2379 // Match Patterns
2380 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2381 return false;
2382 }
2383 // Apply Patterns
2384 Helper.applyCombineCopy(*State.MIs[0]);
2385 return true;
2386 }
2387 case GICXXCustomAction_GICombiner6:{
2388 unsigned GIMatchData_matchinfo;
2389 // Match Patterns
2390 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2391 return false;
2392 }
2393 // Apply Patterns
2394 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2395 return true;
2396 }
2397 case GICXXCustomAction_GICombiner7:{
2398 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2399 // Match Patterns
2400 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2401 return false;
2402 }
2403 // Apply Patterns
2404 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2405 return true;
2406 }
2407 case GICXXCustomAction_GICombiner8:{
2408 std::pair<Register, bool> GIMatchData_info;
2409 // Match Patterns
2410 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2411 return false;
2412 }
2413 // Apply Patterns
2414 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2415 return true;
2416 }
2417 case GICXXCustomAction_GICombiner9:{
2418 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2419 // Match Patterns
2420 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2421 return false;
2422 }
2423 // Apply Patterns
2424 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2425 return true;
2426 }
2427 case GICXXCustomAction_GICombiner10:{
2428 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2429 // Match Patterns
2430 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2431 return false;
2432 }
2433 // Apply Patterns
2434 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2435 return true;
2436 }
2437 case GICXXCustomAction_GICombiner11:{
2438 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2439 // Match Patterns
2440 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2441 return false;
2442 }
2443 // Apply Patterns
2444 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2445 return true;
2446 }
2447 case GICXXCustomAction_GICombiner12:{
2448 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2449 // Match Patterns
2450 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2451 GIMatchData_matchinfo);}()) {
2452 return false;
2453 }
2454 // Apply Patterns
2455 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2456 return true;
2457 }
2458 case GICXXCustomAction_GICombiner13:{
2459 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2460 // Match Patterns
2461 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2462 return false;
2463 }
2464 // Apply Patterns
2465 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2466 return true;
2467 }
2468 case GICXXCustomAction_GICombiner14:{
2469 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2470 // Match Patterns
2471 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2472 GIMatchData_matchinfo);}()) {
2473 return false;
2474 }
2475 // Apply Patterns
2476 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2477 return true;
2478 }
2479 case GICXXCustomAction_GICombiner15:{
2480 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2481 // Match Patterns
2482 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2483 return false;
2484 }
2485 // Apply Patterns
2486 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2487 return true;
2488 }
2489 case GICXXCustomAction_GICombiner16:{
2490 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2491 // Match Patterns
2492 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2493 return false;
2494 }
2495 // Apply Patterns
2496 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2497 return true;
2498 }
2499 case GICXXCustomAction_GICombiner17:{
2500 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2501 // Match Patterns
2502 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2503 return false;
2504 }
2505 // Apply Patterns
2506 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2507 return true;
2508 }
2509 case GICXXCustomAction_GICombiner18:{
2510 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2511 // Match Patterns
2512 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2513 return false;
2514 }
2515 // Apply Patterns
2516 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2517 return true;
2518 }
2519 case GICXXCustomAction_GICombiner19:{
2520 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2521 // Match Patterns
2522 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2523 return false;
2524 }
2525 // Apply Patterns
2526 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2527 return true;
2528 }
2529 case GICXXCustomAction_GICombiner20:{
2530 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2531 // Match Patterns
2532 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2533 return false;
2534 }
2535 // Apply Patterns
2536 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2537 return true;
2538 }
2539 case GICXXCustomAction_GICombiner21:{
2540 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2541 // Match Patterns
2542 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2543 return false;
2544 }
2545 // Apply Patterns
2546 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2547 return true;
2548 }
2549 case GICXXCustomAction_GICombiner22:{
2550 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2551 // Match Patterns
2552 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2553 return false;
2554 }
2555 // Apply Patterns
2556 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2557 return true;
2558 }
2559 case GICXXCustomAction_GICombiner23:{
2560 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2561 // Match Patterns
2562 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2563 return false;
2564 }
2565 // Apply Patterns
2566 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2567 return true;
2568 }
2569 case GICXXCustomAction_GICombiner24:{
2570 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2571 // Match Patterns
2572 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2573 return false;
2574 }
2575 // Apply Patterns
2576 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2577 return true;
2578 }
2579 case GICXXCustomAction_GICombiner25:{
2580 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2581 // Match Patterns
2582 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2583 return false;
2584 }
2585 // Apply Patterns
2586 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2587 return true;
2588 }
2589 case GICXXCustomAction_GICombiner26:{
2590 APInt GIMatchData_matchinfo;
2591 // Match Patterns
2592 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2593 return false;
2594 }
2595 // Apply Patterns
2596 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2597 return true;
2598 }
2599 case GICXXCustomAction_GICombiner27:{
2600 SmallVector<Register> GIMatchData_info;
2601 // Match Patterns
2602 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2603 return false;
2604 }
2605 // Apply Patterns
2606 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2607 return true;
2608 }
2609 case GICXXCustomAction_GICombiner28:{
2610 Register GIMatchData_matchinfo;
2611 // Match Patterns
2612 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2613 return false;
2614 }
2615 // Apply Patterns
2616 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2617 return true;
2618 }
2619 case GICXXCustomAction_GICombiner29:{
2620 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2621 // Match Patterns
2622 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2623 return false;
2624 }
2625 // Apply Patterns
2626 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2627 return true;
2628 }
2629 case GICXXCustomAction_GICombiner30:{
2630 PreferredTuple GIMatchData_matchinfo;
2631 // Match Patterns
2632 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2633 return false;
2634 }
2635 // Apply Patterns
2636 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2637 return true;
2638 }
2639 case GICXXCustomAction_GICombiner31:{
2640 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2641 // Match Patterns
2642 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2643 return false;
2644 }
2645 // Apply Patterns
2646 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2647 return true;
2648 }
2649 case GICXXCustomAction_GICombiner32:{
2650 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2651 // Match Patterns
2652 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2653 return false;
2654 }
2655 // Apply Patterns
2656 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2657 return true;
2658 }
2659 case GICXXCustomAction_GICombiner33:{
2660 // Match Patterns
2661 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2662 return false;
2663 }
2664 // Apply Patterns
2665 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2666 return true;
2667 }
2668 case GICXXCustomAction_GICombiner34:{
2669 // Match Patterns
2670 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2671 return false;
2672 }
2673 // Apply Patterns
2674 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2675 return true;
2676 }
2677 case GICXXCustomAction_GICombiner35:{
2678 // Match Patterns
2679 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2680 return false;
2681 }
2682 // Apply Patterns
2683 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2684 return true;
2685 }
2686 case GICXXCustomAction_GICombiner36:{
2687 // Match Patterns
2688 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2689 return false;
2690 }
2691 // Apply Patterns
2692 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2693 return true;
2694 }
2695 case GICXXCustomAction_GICombiner37:{
2696 // Match Patterns
2697 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2698 return false;
2699 }
2700 // Apply Patterns
2701 Helper.replaceInstWithUndef(*State.MIs[0]);
2702 return true;
2703 }
2704 case GICXXCustomAction_GICombiner38:{
2705 // Apply Patterns
2706 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2707 return true;
2708 }
2709 case GICXXCustomAction_GICombiner39:{
2710 // Match Patterns
2711 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2712 return false;
2713 }
2714 // Apply Patterns
2715 Helper.replaceInstWithUndef(*State.MIs[0]);
2716 return true;
2717 }
2718 case GICXXCustomAction_GICombiner40:{
2719 // Match Patterns
2720 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2721 return false;
2722 }
2723 // Apply Patterns
2724 Helper.replaceInstWithUndef(*State.MIs[0]);
2725 return true;
2726 }
2727 case GICXXCustomAction_GICombiner41:{
2728 // Match Patterns
2729 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2730 return false;
2731 }
2732 // Apply Patterns
2733 Helper.replaceInstWithUndef(*State.MIs[0]);
2734 return true;
2735 }
2736 case GICXXCustomAction_GICombiner42:{
2737 // Match Patterns
2738 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2739 return false;
2740 }
2741 // Apply Patterns
2742 Helper.eraseInst(*State.MIs[0]);
2743 return true;
2744 }
2745 case GICXXCustomAction_GICombiner43:{
2746 // Match Patterns
2747 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2748 return false;
2749 }
2750 // Apply Patterns
2751 Helper.replaceInstWithUndef(*State.MIs[0]);
2752 return true;
2753 }
2754 case GICXXCustomAction_GICombiner44:{
2755 // Match Patterns
2756 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2757 return false;
2758 }
2759 // Apply Patterns
2760 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2761 return true;
2762 }
2763 case GICXXCustomAction_GICombiner45:{
2764 Register GIMatchData_info;
2765 // Match Patterns
2766 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2767 return false;
2768 }
2769 // Apply Patterns
2770 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2771 return true;
2772 }
2773 case GICXXCustomAction_GICombiner46:{
2774 Register GIMatchData_info;
2775 // Match Patterns
2776 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2777 return false;
2778 }
2779 // Apply Patterns
2780 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2781 return true;
2782 }
2783 case GICXXCustomAction_GICombiner47:{
2784 Register GIMatchData_matchinfo;
2785 // Match Patterns
2786 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2787 return false;
2788 }
2789 // Apply Patterns
2790 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2791 return true;
2792 }
2793 case GICXXCustomAction_GICombiner48:{
2794 Register GIMatchData_matchinfo;
2795 // Match Patterns
2796 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2797 return false;
2798 }
2799 // Apply Patterns
2800 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2801 return true;
2802 }
2803 case GICXXCustomAction_GICombiner49:{
2804 Register GIMatchData_matchinfo;
2805 // Match Patterns
2806 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2807 return false;
2808 }
2809 // Apply Patterns
2810 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2811 return true;
2812 }
2813 case GICXXCustomAction_GICombiner50:{
2814 Register GIMatchData_matchinfo;
2815 // Match Patterns
2816 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2817 return false;
2818 }
2819 // Apply Patterns
2820 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2821 return true;
2822 }
2823 case GICXXCustomAction_GICombiner51:{
2824 // Match Patterns
2825 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2826 return false;
2827 }
2828 // Apply Patterns
2829 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2830 return true;
2831 }
2832 case GICXXCustomAction_GICombiner52:{
2833 MachineInstr* GIMatchData_matchinfo;
2834 // Match Patterns
2835 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2836 return false;
2837 }
2838 // Apply Patterns
2839 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2840 return true;
2841 }
2842 case GICXXCustomAction_GICombiner53:{
2843 std::tuple<Register, Register> GIMatchData_info;
2844 // Match Patterns
2845 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2846 return false;
2847 }
2848 // Apply Patterns
2849 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2850 return true;
2851 }
2852 case GICXXCustomAction_GICombiner54:{
2853 InstructionStepsMatchInfo GIMatchData_info;
2854 // Match Patterns
2855 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2856 return false;
2857 }
2858 // Apply Patterns
2859 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2860 return true;
2861 }
2862 case GICXXCustomAction_GICombiner55:{
2863 std::optional<int64_t> GIMatchData_matchinfo;
2864 // Match Patterns
2865 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2866 return false;
2867 }
2868 // Apply Patterns
2869 if (GIMatchData_matchinfo) {
2870 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2871 } else {
2872 Helper.replaceInstWithUndef(*State.MIs[0]);
2873 }
2874 return true;
2875 }
2876 case GICXXCustomAction_GICombiner56:{
2877 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2878 // Match Patterns
2879 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2880 return false;
2881 }
2882 // Apply Patterns
2883 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2884 return true;
2885 }
2886 case GICXXCustomAction_GICombiner57:{
2887 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2888 // Match Patterns
2889 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2890 return false;
2891 }
2892 // Apply Patterns
2893 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2894 return true;
2895 }
2896 case GICXXCustomAction_GICombiner58:{
2897 PtrAddChain GIMatchData_matchinfo;
2898 // Match Patterns
2899 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2900 return false;
2901 }
2902 // Apply Patterns
2903 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2904 return true;
2905 }
2906 case GICXXCustomAction_GICombiner59:{
2907 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2908 // Match Patterns
2909 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2910 return false;
2911 }
2912 // Apply Patterns
2913 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2914 return true;
2915 }
2916 case GICXXCustomAction_GICombiner60:{
2917 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2918 // Match Patterns
2919 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2920 return false;
2921 }
2922 // Apply Patterns
2923 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2924 return true;
2925 }
2926 case GICXXCustomAction_GICombiner61:{
2927 int64_t GIMatchData_matchinfo;
2928 // Match Patterns
2929 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2930 return false;
2931 }
2932 // Apply Patterns
2933 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2934 return true;
2935 }
2936 case GICXXCustomAction_GICombiner62:{
2937 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2938 // Match Patterns
2939 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2940 return false;
2941 }
2942 // Apply Patterns
2943 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2944 return true;
2945 }
2946 case GICXXCustomAction_GICombiner63:{
2947 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2948 // Match Patterns
2949 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2950 return false;
2951 }
2952 // Apply Patterns
2953 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2954 return true;
2955 }
2956 case GICXXCustomAction_GICombiner64:{
2957 std::tuple<Register, int64_t> GIMatchData_info;
2958 // Match Patterns
2959 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2960 return false;
2961 }
2962 // Apply Patterns
2963 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2964 return true;
2965 }
2966 case GICXXCustomAction_GICombiner65:{
2967 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2968 // Match Patterns
2969 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2970 return false;
2971 }
2972 // Apply Patterns
2973 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2974 return true;
2975 }
2976 case GICXXCustomAction_GICombiner66:{
2977 RegisterImmPair GIMatchData_matchinfo;
2978 // Match Patterns
2979 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2980 return false;
2981 }
2982 // Apply Patterns
2983 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2984 return true;
2985 }
2986 case GICXXCustomAction_GICombiner67:{
2987 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2988 // Match Patterns
2989 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2990 return false;
2991 }
2992 // Apply Patterns
2993 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2994 return true;
2995 }
2996 case GICXXCustomAction_GICombiner68:{
2997 unsigned GIMatchData_matchinfo;
2998 // Match Patterns
2999 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3000 return false;
3001 }
3002 // Apply Patterns
3003 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3004 return true;
3005 }
3006 case GICXXCustomAction_GICombiner69:{
3007 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3008 // Match Patterns
3009 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3010 return false;
3011 }
3012 // Apply Patterns
3013 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3014 return true;
3015 }
3016 case GICXXCustomAction_GICombiner70:{
3017 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3018 // Match Patterns
3019 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3020 return false;
3021 }
3022 // Apply Patterns
3023 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3024 return true;
3025 }
3026 case GICXXCustomAction_GICombiner71:{
3027 Register GIMatchData_matchinfo;
3028 // Match Patterns
3029 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3030 return false;
3031 }
3032 // Apply Patterns
3033 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3034 return true;
3035 }
3036 case GICXXCustomAction_GICombiner72:{
3037 // Match Patterns
3038 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3039 return false;
3040 }
3041 // Apply Patterns
3042 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3043 return true;
3044 }
3045 case GICXXCustomAction_GICombiner73:{
3046 Register GIMatchData_matchinfo;
3047 // Match Patterns
3048 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3049 return false;
3050 }
3051 // Apply Patterns
3052 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3053 return true;
3054 }
3055 case GICXXCustomAction_GICombiner74:{
3056 // Match Patterns
3057 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
3058 return false;
3059 }
3060 // Apply Patterns
3061 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3062 return true;
3063 }
3064 case GICXXCustomAction_GICombiner75:{
3065 Register GIMatchData_matchinfo;
3066 // Match Patterns
3067 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3068 return false;
3069 }
3070 // Apply Patterns
3071 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3072 return true;
3073 }
3074 case GICXXCustomAction_GICombiner76:{
3075 // Match Patterns
3076 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3077 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3078 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3079 return false;
3080 }
3081 // Apply Patterns
3082 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3083 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3084 State.MIs[0]->eraseFromParent();
3085 return true;
3086 }
3087 case GICXXCustomAction_GICombiner77:{
3088 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3089 // Match Patterns
3090 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3091 return false;
3092 }
3093 // Apply Patterns
3094 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3095 return true;
3096 }
3097 case GICXXCustomAction_GICombiner78:{
3098 SmallVector<Register> GIMatchData_info;
3099 // Match Patterns
3100 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3101 return false;
3102 }
3103 // Apply Patterns
3104 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3105 return true;
3106 }
3107 case GICXXCustomAction_GICombiner79:{
3108 MachineInstr * GIMatchData_matchinfo;
3109 // Match Patterns
3110 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3111 return false;
3112 }
3113 // Apply Patterns
3114 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3115 return true;
3116 }
3117 case GICXXCustomAction_GICombiner80:{
3118 // Apply Patterns
3119 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3120 return true;
3121 }
3122 case GICXXCustomAction_GICombiner81:{
3123 // Apply Patterns
3124 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3125 return true;
3126 }
3127 case GICXXCustomAction_GICombiner82:{
3128 APInt GIMatchData_info;
3129 // Match Patterns
3130 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3131 return false;
3132 }
3133 // Apply Patterns
3134 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3135 return true;
3136 }
3137 case GICXXCustomAction_GICombiner83:{
3138 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3139 // Match Patterns
3140 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3141 return false;
3142 }
3143 // Apply Patterns
3144 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3145 return true;
3146 }
3147 case GICXXCustomAction_GICombiner84:{
3148 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3149 // Match Patterns
3150 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3151 return false;
3152 }
3153 // Apply Patterns
3154 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3155 return true;
3156 }
3157 case GICXXCustomAction_GICombiner85:{
3158 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3159 // Match Patterns
3160 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3161 return false;
3162 }
3163 // Apply Patterns
3164 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3165 return true;
3166 }
3167 case GICXXCustomAction_GICombiner86:{
3168 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3169 // Match Patterns
3170 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3171 return false;
3172 }
3173 // Apply Patterns
3174 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3175 return true;
3176 }
3177 case GICXXCustomAction_GICombiner87:{
3178 unsigned GIMatchData_info;
3179 // Match Patterns
3180 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3181 return false;
3182 }
3183 // Apply Patterns
3184 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3185 return true;
3186 }
3187 case GICXXCustomAction_GICombiner88:{
3188 // Match Patterns
3189 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3190 return false;
3191 }
3192 // Apply Patterns
3193 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3194 return true;
3195 }
3196 case GICXXCustomAction_GICombiner89:{
3197 std::pair<Register, Register> GIMatchData_matchinfo;
3198 // Match Patterns
3199 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3200 return false;
3201 }
3202 // Apply Patterns
3203 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3204 return true;
3205 }
3206 case GICXXCustomAction_GICombiner90:{
3207 // Match Patterns
3208 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3209 return false;
3210 }
3211 // Apply Patterns
3212 Helper.applyPtrAddZero(*State.MIs[0]);
3213 return true;
3214 }
3215 case GICXXCustomAction_GICombiner91:{
3216 RegisterImmPair GIMatchData_matchinfo;
3217 // Match Patterns
3218 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3219 return false;
3220 }
3221 // Apply Patterns
3222 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3223 return true;
3224 }
3225 case GICXXCustomAction_GICombiner92:{
3226 ShiftOfShiftedLogic GIMatchData_matchinfo;
3227 // Match Patterns
3228 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3229 return false;
3230 }
3231 // Apply Patterns
3232 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3233 return true;
3234 }
3235 case GICXXCustomAction_GICombiner93:{
3236 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3237 // Match Patterns
3238 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3239 return false;
3240 }
3241 // Apply Patterns
3242 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3243 return true;
3244 }
3245 case GICXXCustomAction_GICombiner94:{
3246 MachineInstr * GIMatchData_matchinfo;
3247 // Match Patterns
3248 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3249 return false;
3250 }
3251 // Apply Patterns
3252 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3253 return true;
3254 }
3255 case GICXXCustomAction_GICombiner95:{
3256 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3257 // Match Patterns
3258 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3259 return false;
3260 }
3261 // Apply Patterns
3262 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3263 return true;
3264 }
3265 case GICXXCustomAction_GICombiner96:{
3266 // Match Patterns
3267 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3268 return false;
3269 }
3270 // Apply Patterns
3271 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3272 return true;
3273 }
3274 case GICXXCustomAction_GICombiner97:{
3275 // Match Patterns
3276 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3277 return false;
3278 }
3279 // Apply Patterns
3280 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3281 return true;
3282 }
3283 case GICXXCustomAction_GICombiner98:{
3284 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3285 // Match Patterns
3286 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3287 return false;
3288 }
3289 // Apply Patterns
3290 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3291 return true;
3292 }
3293 case GICXXCustomAction_GICombiner99:{
3294 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3295 // Match Patterns
3296 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3297 return false;
3298 }
3299 // Apply Patterns
3300 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3301 return true;
3302 }
3303 case GICXXCustomAction_GICombiner100:{
3304 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3305 // Match Patterns
3306 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3307 return false;
3308 }
3309 // Apply Patterns
3310 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3311 return true;
3312 }
3313 case GICXXCustomAction_GICombiner101:{
3314 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3315 // Match Patterns
3316 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3317 return false;
3318 }
3319 // Apply Patterns
3320 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3321 return true;
3322 }
3323 case GICXXCustomAction_GICombiner102:{
3324 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3325 // Match Patterns
3326 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3327 return false;
3328 }
3329 // Apply Patterns
3330 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3331 return true;
3332 }
3333 case GICXXCustomAction_GICombiner103:{
3334 APInt GIMatchData_matchinfo;
3335 // Match Patterns
3336 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3337 return false;
3338 }
3339 // Apply Patterns
3340 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3341 return true;
3342 }
3343 case GICXXCustomAction_GICombiner104:{
3344 ConstantFP* GIMatchData_matchinfo;
3345 // Match Patterns
3346 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3347 return false;
3348 }
3349 // Apply Patterns
3350 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3351 return true;
3352 }
3353 case GICXXCustomAction_GICombiner105:{
3354 ConstantFP* GIMatchData_matchinfo;
3355 // Match Patterns
3356 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3357 return false;
3358 }
3359 // Apply Patterns
3360 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3361 return true;
3362 }
3363 case GICXXCustomAction_GICombiner106:{
3364 APInt GIMatchData_matchinfo;
3365 // Match Patterns
3366 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3367 return false;
3368 }
3369 // Apply Patterns
3370 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3371 return true;
3372 }
3373 case GICXXCustomAction_GICombiner107:{
3374 // Match Patterns
3375 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3376 return false;
3377 }
3378 // Apply Patterns
3379 Helper.applyUMulHToLShr(*State.MIs[0]);
3380 return true;
3381 }
3382 case GICXXCustomAction_GICombiner108:{
3383 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3384 // Match Patterns
3385 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3386 return false;
3387 }
3388 // Apply Patterns
3389 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3390 return true;
3391 }
3392 case GICXXCustomAction_GICombiner109:{
3393 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3394 // Match Patterns
3395 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3396 return false;
3397 }
3398 // Apply Patterns
3399 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3400 return true;
3401 }
3402 case GICXXCustomAction_GICombiner110:{
3403 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3404 // Match Patterns
3405 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3406 GIMatchData_info);}()) {
3407 return false;
3408 }
3409 // Apply Patterns
3410 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3411 return true;
3412 }
3413 case GICXXCustomAction_GICombiner111:{
3414 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3415 // Match Patterns
3416 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3417 GIMatchData_info);}()) {
3418 return false;
3419 }
3420 // Apply Patterns
3421 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3422 return true;
3423 }
3424 case GICXXCustomAction_GICombiner112:{
3425 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3426 // Match Patterns
3427 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3428 GIMatchData_info);}()) {
3429 return false;
3430 }
3431 // Apply Patterns
3432 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3433 return true;
3434 }
3435 case GICXXCustomAction_GICombiner113:{
3436 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3437 // Match Patterns
3438 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3439 *State.MIs[0], GIMatchData_info);}()) {
3440 return false;
3441 }
3442 // Apply Patterns
3443 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3444 return true;
3445 }
3446 case GICXXCustomAction_GICombiner114:{
3447 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3448 // Match Patterns
3449 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3450 GIMatchData_info);}()) {
3451 return false;
3452 }
3453 // Apply Patterns
3454 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3455 return true;
3456 }
3457 case GICXXCustomAction_GICombiner115:{
3458 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3459 // Match Patterns
3460 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3461 GIMatchData_info);}()) {
3462 return false;
3463 }
3464 // Apply Patterns
3465 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3466 return true;
3467 }
3468 case GICXXCustomAction_GICombiner116:{
3469 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3470 // Match Patterns
3471 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3472 GIMatchData_info);}()) {
3473 return false;
3474 }
3475 // Apply Patterns
3476 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3477 return true;
3478 }
3479 case GICXXCustomAction_GICombiner117:{
3480 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3481 // Match Patterns
3482 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3483 *State.MIs[0], GIMatchData_info);}()) {
3484 return false;
3485 }
3486 // Apply Patterns
3487 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3488 return true;
3489 }
3490 case GICXXCustomAction_GICombiner118:{
3491 unsigned GIMatchData_select_op_no;
3492 // Match Patterns
3493 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3494 return false;
3495 }
3496 // Apply Patterns
3497 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3498 return true;
3499 }
3500 case GICXXCustomAction_GICombiner119:{
3501 // Match Patterns
3502 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3503 return false;
3504 }
3505 // Apply Patterns
3506 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3507 return true;
3508 }
3509 case GICXXCustomAction_GICombiner120:{
3510 // Match Patterns
3511 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3512 return false;
3513 }
3514 // Apply Patterns
3515 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3516 return true;
3517 }
3518 case GICXXCustomAction_GICombiner121:{
3519 // Match Patterns
3520 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3521 return false;
3522 }
3523 // Apply Patterns
3524 Helper.applyUDivByPow2(*State.MIs[0]);
3525 return true;
3526 }
3527 case GICXXCustomAction_GICombiner122:{
3528 // Match Patterns
3529 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3530 return false;
3531 }
3532 // Apply Patterns
3533 Helper.applySDivByPow2(*State.MIs[0]);
3534 return true;
3535 }
3536 case GICXXCustomAction_GICombiner123:{
3537 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3538 // Match Patterns
3539 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3540 return false;
3541 }
3542 // Apply Patterns
3543 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3544 return true;
3545 }
3546 case GICXXCustomAction_GICombiner124:{
3547 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3548 // Match Patterns
3549 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3550 return false;
3551 }
3552 // Apply Patterns
3553 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3554 return true;
3555 }
3556 case GICXXCustomAction_GICombiner125:{
3557 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3558 // Match Patterns
3559 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3560 return false;
3561 }
3562 // Apply Patterns
3563 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3564 return true;
3565 }
3566 case GICXXCustomAction_GICombiner126:{
3567 Register GIMatchData_matchinfo;
3568 // Match Patterns
3569 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3570 return false;
3571 }
3572 // Apply Patterns
3573 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3574 return true;
3575 }
3576 case GICXXCustomAction_GICombiner127:{
3577 // Match Patterns
3578 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3579 return false;
3580 }
3581 // Apply Patterns
3582 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3583 return true;
3584 }
3585 case GICXXCustomAction_GICombiner128:{
3586 // Match Patterns
3587 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3588 return false;
3589 }
3590 // Apply Patterns
3591 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3592 return true;
3593 }
3594 case GICXXCustomAction_GICombiner129:{
3595 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3596 // Match Patterns
3597 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3598 return false;
3599 }
3600 // Apply Patterns
3601 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3602 return true;
3603 }
3604 case GICXXCustomAction_GICombiner130:{
3605 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3606 // Match Patterns
3607 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3608 return false;
3609 }
3610 // Apply Patterns
3611 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3612 return true;
3613 }
3614 case GICXXCustomAction_GICombiner131:{
3615 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3616 // Match Patterns
3617 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3618 return false;
3619 }
3620 // Apply Patterns
3621 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3622 return true;
3623 }
3624 case GICXXCustomAction_GICombiner132:{
3625 SmallVector<Register> GIMatchData_matchinfo;
3626 // Match Patterns
3627 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3628 return false;
3629 }
3630 // Apply Patterns
3631 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3632 return true;
3633 }
3634 case GICXXCustomAction_GICombiner133:{
3635 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3636 // Match Patterns
3637 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3638 return false;
3639 }
3640 // Apply Patterns
3641 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3642 return true;
3643 }
3644 case GICXXCustomAction_GICombiner134:{
3645 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3646 // Match Patterns
3647 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3648 return false;
3649 }
3650 // Apply Patterns
3651 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3652 return true;
3653 }
3654 case GICXXCustomAction_GICombiner135:{
3655 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3656 // Match Patterns
3657 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3658 return false;
3659 }
3660 // Apply Patterns
3661 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3662 return true;
3663 }
3664 case GICXXCustomAction_GICombiner136:{
3665 SmallVector<Register> GIMatchData_matchinfo;
3666 // Match Patterns
3667 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3668 return false;
3669 }
3670 // Apply Patterns
3671 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3672 return true;
3673 }
3674 case GICXXCustomAction_GICombiner137:{
3675 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3676 // Match Patterns
3677 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3678 return false;
3679 }
3680 // Apply Patterns
3681 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3682 return true;
3683 }
3684 case GICXXCustomAction_GICombiner138:{
3685 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3686 // Match Patterns
3687 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3688 return false;
3689 }
3690 // Apply Patterns
3691 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3692 return true;
3693 }
3694 case GICXXCustomAction_GICombiner139:{
3695 Register GIMatchData_matchinfo;
3696 // Match Patterns
3697 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3698 return false;
3699 }
3700 // Apply Patterns
3701 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3702 return true;
3703 }
3704 case GICXXCustomAction_GICombiner140:{
3705 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3706 // Match Patterns
3707 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3708 return false;
3709 }
3710 // Apply Patterns
3711 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3712 return true;
3713 }
3714 case GICXXCustomAction_GICombiner141:{
3715 SmallVector<Register> GIMatchData_info;
3716 // Match Patterns
3717 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3718 return false;
3719 }
3720 // Apply Patterns
3721 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3722 return true;
3723 }
3724 case GICXXCustomAction_GICombiner142:{
3725 Register GIMatchData_src;
3726 // Match Patterns
3727 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3728 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3729 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3730 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3731 return false;
3732
3733 // Check counts match.
3734 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3735 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3736 if (NumMergeSrcs != NumUnmergeDefs)
3737 return false;
3738
3739 // Verify all merge sources match unmerge defs in order.
3740 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3741 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3742 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3743
3744 if (MergeSrc != UnmergeDef)
3745 return false;
3746
3747 if (!MRI.hasOneNonDBGUse(MergeSrc))
3748 return false;
3749 }
3750
3751 // Check size compatibility.
3752 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3753 LLT SrcTy = MRI.getType(GIMatchData_src);
3754 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3755 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3756 return false;
3757
3758 // Check bitcast legality.
3759 if (SrcTy != DstTy) {
3760 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3761 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3762 if (!Helper.isLegalOrBeforeLegalizer(Query))
3763 return false;
3764 }
3765
3766 return true;}()) {
3767 return false;
3768 }
3769 // Apply Patterns
3770 LLT SrcTy = MRI.getType(GIMatchData_src);
3771 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3772
3773 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3774
3775 if (SrcTy == DstTy) {
3776 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3777 } else {
3778 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3779 }
3780
3781 State.MIs[0]->eraseFromParent();
3782 return true;
3783 }
3784 case GICXXCustomAction_GICombiner143:{
3785 SmallVector<APInt, 8> GIMatchData_info;
3786 // Match Patterns
3787 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3788 return false;
3789 }
3790 // Apply Patterns
3791 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3792 return true;
3793 }
3794 case GICXXCustomAction_GICombiner144:{
3795 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3796 // Match Patterns
3797 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3798 return false;
3799 }
3800 // Apply Patterns
3801 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3802 return true;
3803 }
3804 case GICXXCustomAction_GICombiner145:{
3805 // Match Patterns
3806 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3807 return false;
3808 }
3809 // Apply Patterns
3810 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3811 return true;
3812 }
3813 case GICXXCustomAction_GICombiner146:{
3814 // Match Patterns
3815 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3816 return false;
3817 }
3818 // Apply Patterns
3819 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3820 return true;
3821 }
3822 case GICXXCustomAction_GICombiner147:{
3823 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3824 // Match Patterns
3825 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3826 return false;
3827 }
3828 // Apply Patterns
3829 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3830 return true;
3831 }
3832 case GICXXCustomAction_GICombiner148:{
3833 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3834 // Match Patterns
3835 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3836 return false;
3837 }
3838 // Apply Patterns
3839 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3840 return true;
3841 }
3842 case GICXXCustomAction_GICombiner149:{
3843 Register GIMatchData_unmergeSrc;
3844 // Match Patterns
3845 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3846 return false;
3847 }
3848 // Apply Patterns
3849 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3850 return true;
3851 }
3852 case GICXXCustomAction_GICombiner150:{
3853 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3854 // Match Patterns
3855 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3856 return false;
3857 }
3858 // Apply Patterns
3859 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3860 return true;
3861 }
3862 case GICXXCustomAction_GICombiner151:{
3863 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3864 // Match Patterns
3865 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3866 return false;
3867 }
3868 // Apply Patterns
3869 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3870 return true;
3871 }
3872 case GICXXCustomAction_GICombiner152:{
3873 Register GIMatchData_matchinfo;
3874 // Match Patterns
3875 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3876 return false;
3877 }
3878 // Apply Patterns
3879 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3880 return true;
3881 }
3882 case GICXXCustomAction_GICombiner153:{
3883 Register GIMatchData_matchinfo;
3884 // Match Patterns
3885 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3886 return false;
3887 }
3888 // Apply Patterns
3889 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3890 return true;
3891 }
3892 case GICXXCustomAction_GICombiner154:{
3893 LshrOfTruncOfLshr GIMatchData_matchinfo;
3894 // Match Patterns
3895 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3896 return false;
3897 }
3898 // Apply Patterns
3899 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3900 return true;
3901 }
3902 case GICXXCustomAction_GICombiner155:{
3903 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3904 // Match Patterns
3905 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3906 return false;
3907 }
3908 // Apply Patterns
3909 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3910 return true;
3911 }
3912 case GICXXCustomAction_GICombiner156:{
3913 Register GIMatchData_matchinfo;
3914 // Match Patterns
3915 if(![&](){return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getValueTracking(), GIMatchData_matchinfo);}()) {
3916 return false;
3917 }
3918 // Apply Patterns
3919 applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3920 return true;
3921 }
3922 case GICXXCustomAction_GICombiner157:{
3923 std::pair<uint64_t, uint64_t> GIMatchData_matchinfo;
3924 // Match Patterns
3925 if(![&](){return matchFoldGlobalOffset(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
3926 return false;
3927 }
3928 // Apply Patterns
3929 applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3930 return true;
3931 }
3932 case GICXXCustomAction_GICombiner158:{
3933 std::tuple<Register, Register, bool> GIMatchData_matchinfo;
3934 // Match Patterns
3935 if(![&](){return matchExtAddvToDotAddv(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
3936 return false;
3937 }
3938 // Apply Patterns
3939 applyExtAddvToDotAddv(*State.MIs[0], MRI, B, Observer, STI, GIMatchData_matchinfo);
3940 return true;
3941 }
3942 case GICXXCustomAction_GICombiner159:{
3943 std::pair<Register, bool> GIMatchData_matchinfo;
3944 // Match Patterns
3945 if(![&](){return matchExtUaddvToUaddlv(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
3946 return false;
3947 }
3948 // Apply Patterns
3949 applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
3950 return true;
3951 }
3952 case GICXXCustomAction_GICombiner160:{
3953 // Match Patterns
3954 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());}()) {
3955 return false;
3956 }
3957 // Apply Patterns
3958 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());
3959 return true;
3960 }
3961 }
3962 llvm_unreachable("Unknown Apply Action");
3963}
3964#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3965#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
3966#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
3967#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)
3968#else
3969#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
3970#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3971#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)
3972#endif
3973const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const {
3974 constexpr static uint8_t MatchTable0[] = {
3975 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(313), /*)*//*default:*//*Label 108*/ GIMT_Encode4(8748),
3976 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1182), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3977 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1194),
3978 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1985),
3979 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2567),
3980 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(2831),
3981 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2933),
3982 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3046),
3983 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3131), GIMT_Encode4(0), GIMT_Encode4(0),
3984 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3238),
3985 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3519),
3986 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(3952), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3987 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(4152), GIMT_Encode4(0),
3988 /* 234 */ /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(4164), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3989 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(4176), GIMT_Encode4(0),
3990 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(4243),
3991 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(4320),
3992 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(4385),
3993 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 17*/ GIMT_Encode4(4397),
3994 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 18*/ GIMT_Encode4(4409),
3995 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 19*/ GIMT_Encode4(4452),
3996 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 20*/ GIMT_Encode4(4485),
3997 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 21*/ GIMT_Encode4(4528), GIMT_Encode4(0), GIMT_Encode4(0),
3998 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 22*/ GIMT_Encode4(4592),
3999 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 23*/ GIMT_Encode4(4614), GIMT_Encode4(0), GIMT_Encode4(0),
4000 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 24*/ GIMT_Encode4(4636), GIMT_Encode4(0), GIMT_Encode4(0),
4001 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 25*/ GIMT_Encode4(4658),
4002 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 26*/ GIMT_Encode4(4670),
4003 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 27*/ GIMT_Encode4(4682), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4004 /* 350 */ /*TargetOpcode::G_STORE*//*Label 28*/ GIMT_Encode4(4694), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4005 /* 486 */ /*TargetOpcode::G_ANYEXT*//*Label 29*/ GIMT_Encode4(4706),
4006 /* 490 */ /*TargetOpcode::G_TRUNC*//*Label 30*/ GIMT_Encode4(4834), GIMT_Encode4(0), GIMT_Encode4(0),
4007 /* 502 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 31*/ GIMT_Encode4(5246), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4008 /* 522 */ /*TargetOpcode::G_SEXT*//*Label 32*/ GIMT_Encode4(5279),
4009 /* 526 */ /*TargetOpcode::G_SEXT_INREG*//*Label 33*/ GIMT_Encode4(5354),
4010 /* 530 */ /*TargetOpcode::G_ZEXT*//*Label 34*/ GIMT_Encode4(5420),
4011 /* 534 */ /*TargetOpcode::G_SHL*//*Label 35*/ GIMT_Encode4(5550),
4012 /* 538 */ /*TargetOpcode::G_LSHR*//*Label 36*/ GIMT_Encode4(5748),
4013 /* 542 */ /*TargetOpcode::G_ASHR*//*Label 37*/ GIMT_Encode4(5929),
4014 /* 546 */ /*TargetOpcode::G_FSHL*//*Label 38*/ GIMT_Encode4(6092),
4015 /* 550 */ /*TargetOpcode::G_FSHR*//*Label 39*/ GIMT_Encode4(6135),
4016 /* 554 */ /*TargetOpcode::G_ROTR*//*Label 40*/ GIMT_Encode4(6178),
4017 /* 558 */ /*TargetOpcode::G_ROTL*//*Label 41*/ GIMT_Encode4(6202),
4018 /* 562 */ /*TargetOpcode::G_ICMP*//*Label 42*/ GIMT_Encode4(6226),
4019 /* 566 */ /*TargetOpcode::G_FCMP*//*Label 43*/ GIMT_Encode4(6282), GIMT_Encode4(0), GIMT_Encode4(0),
4020 /* 578 */ /*TargetOpcode::G_SELECT*//*Label 44*/ GIMT_Encode4(6294),
4021 /* 582 */ /*TargetOpcode::G_UADDO*//*Label 45*/ GIMT_Encode4(6389),
4022 /* 586 */ /*TargetOpcode::G_UADDE*//*Label 46*/ GIMT_Encode4(6412),
4023 /* 590 */ /*TargetOpcode::G_USUBO*//*Label 47*/ GIMT_Encode4(6424),
4024 /* 594 */ /*TargetOpcode::G_USUBE*//*Label 48*/ GIMT_Encode4(6436),
4025 /* 598 */ /*TargetOpcode::G_SADDO*//*Label 49*/ GIMT_Encode4(6448),
4026 /* 602 */ /*TargetOpcode::G_SADDE*//*Label 50*/ GIMT_Encode4(6471),
4027 /* 606 */ /*TargetOpcode::G_SSUBO*//*Label 51*/ GIMT_Encode4(6483),
4028 /* 610 */ /*TargetOpcode::G_SSUBE*//*Label 52*/ GIMT_Encode4(6495),
4029 /* 614 */ /*TargetOpcode::G_UMULO*//*Label 53*/ GIMT_Encode4(6507),
4030 /* 618 */ /*TargetOpcode::G_SMULO*//*Label 54*/ GIMT_Encode4(6541),
4031 /* 622 */ /*TargetOpcode::G_UMULH*//*Label 55*/ GIMT_Encode4(6575),
4032 /* 626 */ /*TargetOpcode::G_SMULH*//*Label 56*/ GIMT_Encode4(6598),
4033 /* 630 */ /*TargetOpcode::G_UADDSAT*//*Label 57*/ GIMT_Encode4(6610),
4034 /* 634 */ /*TargetOpcode::G_SADDSAT*//*Label 58*/ GIMT_Encode4(6622), GIMT_Encode4(0), GIMT_Encode4(0),
4035 /* 646 */ /*TargetOpcode::G_USHLSAT*//*Label 59*/ GIMT_Encode4(6634),
4036 /* 650 */ /*TargetOpcode::G_SSHLSAT*//*Label 60*/ GIMT_Encode4(6657),
4037 /* 654 */ /*TargetOpcode::G_SMULFIX*//*Label 61*/ GIMT_Encode4(6680),
4038 /* 658 */ /*TargetOpcode::G_UMULFIX*//*Label 62*/ GIMT_Encode4(6692),
4039 /* 662 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 63*/ GIMT_Encode4(6704),
4040 /* 666 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 64*/ GIMT_Encode4(6716), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4041 /* 686 */ /*TargetOpcode::G_FADD*//*Label 65*/ GIMT_Encode4(6728),
4042 /* 690 */ /*TargetOpcode::G_FSUB*//*Label 66*/ GIMT_Encode4(6869),
4043 /* 694 */ /*TargetOpcode::G_FMUL*//*Label 67*/ GIMT_Encode4(6958),
4044 /* 698 */ /*TargetOpcode::G_FMA*//*Label 68*/ GIMT_Encode4(7046),
4045 /* 702 */ /*TargetOpcode::G_FMAD*//*Label 69*/ GIMT_Encode4(7069),
4046 /* 706 */ /*TargetOpcode::G_FDIV*//*Label 70*/ GIMT_Encode4(7092),
4047 /* 710 */ /*TargetOpcode::G_FREM*//*Label 71*/ GIMT_Encode4(7137), GIMT_Encode4(0), GIMT_Encode4(0),
4048 /* 722 */ /*TargetOpcode::G_FPOWI*//*Label 72*/ GIMT_Encode4(7149), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4049 /* 742 */ /*TargetOpcode::G_FLOG2*//*Label 73*/ GIMT_Encode4(7171), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4050 /* 758 */ /*TargetOpcode::G_FNEG*//*Label 74*/ GIMT_Encode4(7193),
4051 /* 762 */ /*TargetOpcode::G_FPEXT*//*Label 75*/ GIMT_Encode4(7244),
4052 /* 766 */ /*TargetOpcode::G_FPTRUNC*//*Label 76*/ GIMT_Encode4(7266),
4053 /* 770 */ /*TargetOpcode::G_FPTOSI*//*Label 77*/ GIMT_Encode4(7309),
4054 /* 774 */ /*TargetOpcode::G_FPTOUI*//*Label 78*/ GIMT_Encode4(7331),
4055 /* 778 */ /*TargetOpcode::G_SITOFP*//*Label 79*/ GIMT_Encode4(7353),
4056 /* 782 */ /*TargetOpcode::G_UITOFP*//*Label 80*/ GIMT_Encode4(7380), GIMT_Encode4(0), GIMT_Encode4(0),
4057 /* 794 */ /*TargetOpcode::G_FABS*//*Label 81*/ GIMT_Encode4(7407), GIMT_Encode4(0), GIMT_Encode4(0),
4058 /* 806 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(7486),
4059 /* 810 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(7516),
4060 /* 814 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(7550),
4061 /* 818 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(7584),
4062 /* 822 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(7596),
4063 /* 826 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(7608),
4064 /* 830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(7642), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4065 /* 874 */ /*TargetOpcode::G_PTR_ADD*//*Label 89*/ GIMT_Encode4(7676), GIMT_Encode4(0),
4066 /* 882 */ /*TargetOpcode::G_SMIN*//*Label 90*/ GIMT_Encode4(7766),
4067 /* 886 */ /*TargetOpcode::G_SMAX*//*Label 91*/ GIMT_Encode4(7800),
4068 /* 890 */ /*TargetOpcode::G_UMIN*//*Label 92*/ GIMT_Encode4(7834),
4069 /* 894 */ /*TargetOpcode::G_UMAX*//*Label 93*/ GIMT_Encode4(7868),
4070 /* 898 */ /*TargetOpcode::G_ABS*//*Label 94*/ GIMT_Encode4(7902), GIMT_Encode4(0), GIMT_Encode4(0),
4071 /* 910 */ /*TargetOpcode::G_BR*//*Label 95*/ GIMT_Encode4(7914), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4072 /* 930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(7926),
4073 /* 934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 97*/ GIMT_Encode4(8056),
4074 /* 938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 98*/ GIMT_Encode4(8433), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4075 /* 962 */ /*TargetOpcode::G_CTLZ*//*Label 99*/ GIMT_Encode4(8499),
4076 /* 966 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 100*/ GIMT_Encode4(8511), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4077 /* 982 */ /*TargetOpcode::G_BITREVERSE*//*Label 101*/ GIMT_Encode4(8523),
4078 /* 986 */ /*TargetOpcode::G_FCEIL*//*Label 102*/ GIMT_Encode4(8612), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4079 /* 1034 */ /*TargetOpcode::G_FSQRT*//*Label 103*/ GIMT_Encode4(8634),
4080 /* 1038 */ /*TargetOpcode::G_FFLOOR*//*Label 104*/ GIMT_Encode4(8656),
4081 /* 1042 */ /*TargetOpcode::G_FRINT*//*Label 105*/ GIMT_Encode4(8678),
4082 /* 1046 */ /*TargetOpcode::G_FNEARBYINT*//*Label 106*/ GIMT_Encode4(8700), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4083 /* 1178 */ /*TargetOpcode::G_VECREDUCE_ADD*//*Label 107*/ GIMT_Encode4(8722),
4084 /* 1182 */ // Label 0: @1182
4085 /* 1182 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1193), // Rule ID 16 //
4086 /* 1187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4087 /* 1190 */ // MIs[0] d
4088 /* 1190 */ // No operand predicates
4089 /* 1190 */ // MIs[0] s
4090 /* 1190 */ // No operand predicates
4091 /* 1190 */ // Combiner Rule #16: copy_prop
4092 /* 1190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4093 /* 1193 */ // Label 109: @1193
4094 /* 1193 */ GIM_Reject,
4095 /* 1194 */ // Label 1: @1194
4096 /* 1194 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1205), // Rule ID 19 //
4097 /* 1199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4098 /* 1202 */ // Combiner Rule #19: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4099 /* 1202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4100 /* 1205 */ // Label 110: @1205
4101 /* 1205 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1216), // Rule ID 97 //
4102 /* 1210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
4103 /* 1213 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4104 /* 1213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4105 /* 1216 */ // Label 111: @1216
4106 /* 1216 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1227), // Rule ID 148 //
4107 /* 1221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
4108 /* 1224 */ // Combiner Rule #108: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4109 /* 1224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4110 /* 1227 */ // Label 112: @1227
4111 /* 1227 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1238), // Rule ID 250 //
4112 /* 1232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4113 /* 1235 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_ADD'
4114 /* 1235 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4115 /* 1238 */ // Label 113: @1238
4116 /* 1238 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1249), // Rule ID 294 //
4117 /* 1243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4118 /* 1246 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_ADD'
4119 /* 1246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4120 /* 1249 */ // Label 114: @1249
4121 /* 1249 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1260), // Rule ID 330 //
4122 /* 1254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4123 /* 1257 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4124 /* 1257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4125 /* 1260 */ // Label 115: @1260
4126 /* 1260 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1348), // Rule ID 392 //
4127 /* 1265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
4128 /* 1268 */ // MIs[0] dst
4129 /* 1268 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4130 /* 1272 */ // MIs[0] __add_shift_match_0.shl_neg
4131 /* 1272 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4132 /* 1276 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4133 /* 1280 */ // MIs[1] __add_shift_match_0.neg_y
4134 /* 1280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4135 /* 1284 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4136 /* 1288 */ // MIs[2] __add_shift_match_0.zero
4137 /* 1288 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4138 /* 1292 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4139 /* 1296 */ // MIs[3] Operand 1
4140 /* 1296 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4141 /* 1307 */ // MIs[2] y
4142 /* 1307 */ // No operand predicates
4143 /* 1307 */ // MIs[1] n
4144 /* 1307 */ // No operand predicates
4145 /* 1307 */ // MIs[0] x
4146 /* 1307 */ // No operand predicates
4147 /* 1307 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
4148 /* 1311 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4149 /* 1313 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4150 /* 1316 */ // Combiner Rule #240: add_shift @ [__add_shift_match_0[1]]
4151 /* 1316 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4152 /* 1319 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4153 /* 1324 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4154 /* 1328 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4155 /* 1332 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4156 /* 1336 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4157 /* 1340 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4158 /* 1344 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4159 /* 1347 */ GIR_EraseRootFromParent_Done,
4160 /* 1348 */ // Label 116: @1348
4161 /* 1348 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1436), // Rule ID 391 //
4162 /* 1353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
4163 /* 1356 */ // MIs[0] dst
4164 /* 1356 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4165 /* 1360 */ // MIs[0] x
4166 /* 1360 */ // No operand predicates
4167 /* 1360 */ // MIs[0] __add_shift_match_0.shl_neg
4168 /* 1360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4169 /* 1364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4170 /* 1368 */ // MIs[1] __add_shift_match_0.neg_y
4171 /* 1368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4172 /* 1372 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4173 /* 1376 */ // MIs[2] __add_shift_match_0.zero
4174 /* 1376 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4175 /* 1380 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4176 /* 1384 */ // MIs[3] Operand 1
4177 /* 1384 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4178 /* 1395 */ // MIs[2] y
4179 /* 1395 */ // No operand predicates
4180 /* 1395 */ // MIs[1] n
4181 /* 1395 */ // No operand predicates
4182 /* 1395 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
4183 /* 1399 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4184 /* 1401 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4185 /* 1404 */ // Combiner Rule #240: add_shift @ [__add_shift_match_0[0]]
4186 /* 1404 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4187 /* 1407 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4188 /* 1412 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4189 /* 1416 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4190 /* 1420 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4191 /* 1424 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4192 /* 1428 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4193 /* 1432 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4194 /* 1435 */ GIR_EraseRootFromParent_Done,
4195 /* 1436 */ // Label 117: @1436
4196 /* 1436 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1470), // Rule ID 2 //
4197 /* 1441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4198 /* 1444 */ // MIs[0] root
4199 /* 1444 */ // No operand predicates
4200 /* 1444 */ // MIs[0] sub
4201 /* 1444 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4202 /* 1448 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4203 /* 1452 */ // MIs[1] Operand 1
4204 /* 1452 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4205 /* 1456 */ // MIs[1] A
4206 /* 1456 */ // No operand predicates
4207 /* 1456 */ // MIs[0] B
4208 /* 1456 */ // No operand predicates
4209 /* 1456 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4210 /* 1458 */ // Combiner Rule #2: ZeroMinusAPlusB
4211 /* 1458 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4212 /* 1461 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4213 /* 1463 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4214 /* 1465 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4215 /* 1469 */ GIR_EraseRootFromParent_Done,
4216 /* 1470 */ // Label 118: @1470
4217 /* 1470 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1507), // Rule ID 15 //
4218 /* 1475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4219 /* 1478 */ // MIs[0] root
4220 /* 1478 */ // No operand predicates
4221 /* 1478 */ // MIs[0] sub
4222 /* 1478 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4223 /* 1482 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4224 /* 1486 */ // MIs[1] A
4225 /* 1486 */ // No operand predicates
4226 /* 1486 */ // MIs[1] c1
4227 /* 1486 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4228 /* 1490 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4229 /* 1494 */ // MIs[2] imm1
4230 /* 1494 */ // No operand predicates
4231 /* 1494 */ // MIs[0] c2
4232 /* 1494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4233 /* 1498 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4234 /* 1502 */ // MIs[3] imm2
4235 /* 1502 */ // No operand predicates
4236 /* 1502 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4237 /* 1504 */ // Combiner Rule #15: AMinusC1PlusC2
4238 /* 1504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4239 /* 1507 */ // Label 119: @1507
4240 /* 1507 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1541), // Rule ID 5 //
4241 /* 1512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4242 /* 1515 */ // MIs[0] root
4243 /* 1515 */ // No operand predicates
4244 /* 1515 */ // MIs[0] sub
4245 /* 1515 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4246 /* 1519 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4247 /* 1523 */ // MIs[1] B
4248 /* 1523 */ // No operand predicates
4249 /* 1523 */ // MIs[1] A
4250 /* 1523 */ // No operand predicates
4251 /* 1523 */ // MIs[0] A
4252 /* 1523 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4253 /* 1528 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4254 /* 1533 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4255 /* 1535 */ // Combiner Rule #5: BMinusAPlusA
4256 /* 1535 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4257 /* 1540 */ GIR_EraseRootFromParent_Done,
4258 /* 1541 */ // Label 120: @1541
4259 /* 1541 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1575), // Rule ID 137 //
4260 /* 1546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4261 /* 1549 */ // MIs[0] dst
4262 /* 1549 */ // No operand predicates
4263 /* 1549 */ // MIs[0] __add_sub_reg_match_0.tmp
4264 /* 1549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4265 /* 1553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4266 /* 1557 */ // MIs[1] src
4267 /* 1557 */ // No operand predicates
4268 /* 1557 */ // MIs[1] __add_sub_reg_match_0.x
4269 /* 1557 */ // No operand predicates
4270 /* 1557 */ // MIs[0] __add_sub_reg_match_0.x
4271 /* 1557 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4272 /* 1562 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4273 /* 1567 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4274 /* 1569 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[1]]
4275 /* 1569 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4276 /* 1574 */ GIR_EraseRootFromParent_Done,
4277 /* 1575 */ // Label 121: @1575
4278 /* 1575 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1620), // Rule ID 7 //
4279 /* 1580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4280 /* 1583 */ // MIs[0] root
4281 /* 1583 */ // No operand predicates
4282 /* 1583 */ // MIs[0] sub1
4283 /* 1583 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4284 /* 1587 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4285 /* 1591 */ // MIs[1] A
4286 /* 1591 */ // No operand predicates
4287 /* 1591 */ // MIs[1] B
4288 /* 1591 */ // No operand predicates
4289 /* 1591 */ // MIs[0] sub2
4290 /* 1591 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4291 /* 1595 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4292 /* 1599 */ // MIs[2] B
4293 /* 1599 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4294 /* 1604 */ // MIs[2] C
4295 /* 1604 */ // No operand predicates
4296 /* 1604 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4297 /* 1606 */ // Combiner Rule #7: AMinusBPlusBMinusC
4298 /* 1606 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4299 /* 1609 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4300 /* 1611 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4301 /* 1615 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4302 /* 1619 */ GIR_EraseRootFromParent_Done,
4303 /* 1620 */ // Label 122: @1620
4304 /* 1620 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1665), // Rule ID 6 //
4305 /* 1625 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4306 /* 1628 */ // MIs[0] root
4307 /* 1628 */ // No operand predicates
4308 /* 1628 */ // MIs[0] sub1
4309 /* 1628 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4310 /* 1632 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4311 /* 1636 */ // MIs[1] A
4312 /* 1636 */ // No operand predicates
4313 /* 1636 */ // MIs[1] B
4314 /* 1636 */ // No operand predicates
4315 /* 1636 */ // MIs[0] sub2
4316 /* 1636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4317 /* 1640 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4318 /* 1644 */ // MIs[2] C
4319 /* 1644 */ // No operand predicates
4320 /* 1644 */ // MIs[2] A
4321 /* 1644 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4322 /* 1649 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4323 /* 1651 */ // Combiner Rule #6: AMinusBPlusCMinusA
4324 /* 1651 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4325 /* 1654 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4326 /* 1656 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4327 /* 1660 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4328 /* 1664 */ GIR_EraseRootFromParent_Done,
4329 /* 1665 */ // Label 123: @1665
4330 /* 1665 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1694), // Rule ID 402 //
4331 /* 1670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
4332 /* 1673 */ // MIs[0] dst
4333 /* 1673 */ // No operand predicates
4334 /* 1673 */ // MIs[0] ext1
4335 /* 1673 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4336 /* 1677 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4337 /* 1681 */ // MIs[1] src1
4338 /* 1681 */ // No operand predicates
4339 /* 1681 */ // MIs[0] ext2
4340 /* 1681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4341 /* 1685 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4342 /* 1689 */ // MIs[2] src2
4343 /* 1689 */ // No operand predicates
4344 /* 1689 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4345 /* 1691 */ // Combiner Rule #250: push_add_through_sext
4346 /* 1691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4347 /* 1694 */ // Label 124: @1694
4348 /* 1694 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1729), // Rule ID 42 //
4349 /* 1699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
4350 /* 1702 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4351 /* 1708 */ // MIs[0] root
4352 /* 1708 */ // No operand predicates
4353 /* 1708 */ // MIs[0] left
4354 /* 1708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4355 /* 1712 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4356 /* 1716 */ // MIs[1] imm1
4357 /* 1716 */ // No operand predicates
4358 /* 1716 */ // MIs[0] right
4359 /* 1716 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4360 /* 1720 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4361 /* 1724 */ // MIs[2] imm2
4362 /* 1724 */ // No operand predicates
4363 /* 1724 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4364 /* 1726 */ // Combiner Rule #40: add_of_vscale
4365 /* 1726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4366 /* 1729 */ // Label 125: @1729
4367 /* 1729 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1758), // Rule ID 399 //
4368 /* 1734 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
4369 /* 1737 */ // MIs[0] dst
4370 /* 1737 */ // No operand predicates
4371 /* 1737 */ // MIs[0] ext1
4372 /* 1737 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4373 /* 1741 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4374 /* 1745 */ // MIs[1] src1
4375 /* 1745 */ // No operand predicates
4376 /* 1745 */ // MIs[0] ext2
4377 /* 1745 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4378 /* 1749 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4379 /* 1753 */ // MIs[2] src2
4380 /* 1753 */ // No operand predicates
4381 /* 1753 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4382 /* 1755 */ // Combiner Rule #247: push_add_through_zext
4383 /* 1755 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4384 /* 1758 */ // Label 126: @1758
4385 /* 1758 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1792), // Rule ID 3 //
4386 /* 1763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4387 /* 1766 */ // MIs[0] root
4388 /* 1766 */ // No operand predicates
4389 /* 1766 */ // MIs[0] A
4390 /* 1766 */ // No operand predicates
4391 /* 1766 */ // MIs[0] sub
4392 /* 1766 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4393 /* 1770 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4394 /* 1774 */ // MIs[1] Operand 1
4395 /* 1774 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4396 /* 1778 */ // MIs[1] B
4397 /* 1778 */ // No operand predicates
4398 /* 1778 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4399 /* 1780 */ // Combiner Rule #3: APlusZeroMinusB
4400 /* 1780 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4401 /* 1783 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4402 /* 1785 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4403 /* 1787 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4404 /* 1791 */ GIR_EraseRootFromParent_Done,
4405 /* 1792 */ // Label 127: @1792
4406 /* 1792 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1826), // Rule ID 4 //
4407 /* 1797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4408 /* 1800 */ // MIs[0] root
4409 /* 1800 */ // No operand predicates
4410 /* 1800 */ // MIs[0] A
4411 /* 1800 */ // No operand predicates
4412 /* 1800 */ // MIs[0] sub
4413 /* 1800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4414 /* 1804 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4415 /* 1808 */ // MIs[1] B
4416 /* 1808 */ // No operand predicates
4417 /* 1808 */ // MIs[1] A
4418 /* 1808 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4419 /* 1813 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4420 /* 1818 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4421 /* 1820 */ // Combiner Rule #4: APlusBMinusB
4422 /* 1820 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4423 /* 1825 */ GIR_EraseRootFromParent_Done,
4424 /* 1826 */ // Label 128: @1826
4425 /* 1826 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1860), // Rule ID 136 //
4426 /* 1831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4427 /* 1834 */ // MIs[0] dst
4428 /* 1834 */ // No operand predicates
4429 /* 1834 */ // MIs[0] __add_sub_reg_match_0.x
4430 /* 1834 */ // No operand predicates
4431 /* 1834 */ // MIs[0] __add_sub_reg_match_0.tmp
4432 /* 1834 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4433 /* 1838 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4434 /* 1842 */ // MIs[1] src
4435 /* 1842 */ // No operand predicates
4436 /* 1842 */ // MIs[1] __add_sub_reg_match_0.x
4437 /* 1842 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4438 /* 1847 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4439 /* 1852 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4440 /* 1854 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[0]]
4441 /* 1854 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4442 /* 1859 */ GIR_EraseRootFromParent_Done,
4443 /* 1860 */ // Label 129: @1860
4444 /* 1860 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1905), // Rule ID 8 //
4445 /* 1865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4446 /* 1868 */ // MIs[0] root
4447 /* 1868 */ // No operand predicates
4448 /* 1868 */ // MIs[0] A
4449 /* 1868 */ // No operand predicates
4450 /* 1868 */ // MIs[0] sub1
4451 /* 1868 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4452 /* 1872 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4453 /* 1876 */ // MIs[1] B
4454 /* 1876 */ // No operand predicates
4455 /* 1876 */ // MIs[1] add1
4456 /* 1876 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4457 /* 1880 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4458 /* 1884 */ // MIs[2] A
4459 /* 1884 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4460 /* 1889 */ // MIs[2] C
4461 /* 1889 */ // No operand predicates
4462 /* 1889 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4463 /* 1891 */ // Combiner Rule #8: APlusBMinusAplusC
4464 /* 1891 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4465 /* 1894 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4466 /* 1896 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4467 /* 1900 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4468 /* 1904 */ GIR_EraseRootFromParent_Done,
4469 /* 1905 */ // Label 130: @1905
4470 /* 1905 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1950), // Rule ID 9 //
4471 /* 1910 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4472 /* 1913 */ // MIs[0] root
4473 /* 1913 */ // No operand predicates
4474 /* 1913 */ // MIs[0] A
4475 /* 1913 */ // No operand predicates
4476 /* 1913 */ // MIs[0] sub1
4477 /* 1913 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4478 /* 1917 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4479 /* 1921 */ // MIs[1] B
4480 /* 1921 */ // No operand predicates
4481 /* 1921 */ // MIs[1] add1
4482 /* 1921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4483 /* 1925 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4484 /* 1929 */ // MIs[2] C
4485 /* 1929 */ // No operand predicates
4486 /* 1929 */ // MIs[2] A
4487 /* 1929 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4488 /* 1934 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4489 /* 1936 */ // Combiner Rule #9: APlusBMinusCPlusA
4490 /* 1936 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4491 /* 1939 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4492 /* 1941 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4493 /* 1945 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4494 /* 1949 */ GIR_EraseRootFromParent_Done,
4495 /* 1950 */ // Label 131: @1950
4496 /* 1950 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1973), // Rule ID 108 //
4497 /* 1955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4498 /* 1958 */ // MIs[0] dst
4499 /* 1958 */ // No operand predicates
4500 /* 1958 */ // MIs[0] lhs
4501 /* 1958 */ // No operand predicates
4502 /* 1958 */ // MIs[0] Operand 2
4503 /* 1958 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4504 /* 1962 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4505 /* 1967 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[1]]
4506 /* 1967 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4507 /* 1972 */ GIR_EraseRootFromParent_Done,
4508 /* 1973 */ // Label 132: @1973
4509 /* 1973 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1984), // Rule ID 156 //
4510 /* 1978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4511 /* 1981 */ // MIs[0] root
4512 /* 1981 */ // No operand predicates
4513 /* 1981 */ // MIs[0] src1
4514 /* 1981 */ // No operand predicates
4515 /* 1981 */ // MIs[0] src2
4516 /* 1981 */ // No operand predicates
4517 /* 1981 */ // Combiner Rule #112: reassoc_comm_binops
4518 /* 1981 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4519 /* 1984 */ // Label 133: @1984
4520 /* 1984 */ GIM_Reject,
4521 /* 1985 */ // Label 2: @1985
4522 /* 1985 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1996), // Rule ID 98 //
4523 /* 1990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
4524 /* 1993 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4525 /* 1993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4526 /* 1996 */ // Label 134: @1996
4527 /* 1996 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2007), // Rule ID 258 //
4528 /* 2001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4529 /* 2004 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SUB'
4530 /* 2004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4531 /* 2007 */ // Label 135: @2007
4532 /* 2007 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2018), // Rule ID 295 //
4533 /* 2012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4534 /* 2015 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SUB'
4535 /* 2015 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4536 /* 2018 */ // Label 136: @2018
4537 /* 2018 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2029), // Rule ID 327 //
4538 /* 2023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
4539 /* 2026 */ // Combiner Rule #205: sub_add_reg; wip_match_opcode 'G_SUB'
4540 /* 2026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4541 /* 2029 */ // Label 137: @2029
4542 /* 2029 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2040), // Rule ID 361 //
4543 /* 2034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
4544 /* 2037 */ // Combiner Rule #212: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4545 /* 2037 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4546 /* 2040 */ // Label 138: @2040
4547 /* 2040 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2117), // Rule ID 393 //
4548 /* 2045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
4549 /* 2048 */ // MIs[0] dst
4550 /* 2048 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4551 /* 2052 */ // MIs[0] sub1
4552 /* 2052 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4553 /* 2056 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4554 /* 2060 */ // MIs[1] a
4555 /* 2060 */ // No operand predicates
4556 /* 2060 */ // MIs[1] b
4557 /* 2060 */ // No operand predicates
4558 /* 2060 */ // MIs[0] Operand 2
4559 /* 2060 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4560 /* 2064 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4561 /* 2068 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4562 /* 2070 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4563 /* 2073 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4564 /* 2083 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4565 /* 2086 */ // Combiner Rule #241: sub_one_from_sub
4566 /* 2086 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4567 /* 2089 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4568 /* 2094 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4569 /* 2098 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4570 /* 2101 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4571 /* 2105 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4572 /* 2109 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4573 /* 2112 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4574 /* 2116 */ GIR_EraseRootFromParent_Done,
4575 /* 2117 */ // Label 139: @2117
4576 /* 2117 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2162), // Rule ID 0 //
4577 /* 2122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4578 /* 2125 */ // MIs[0] root
4579 /* 2125 */ // No operand predicates
4580 /* 2125 */ // MIs[0] add1
4581 /* 2125 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4582 /* 2129 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4583 /* 2133 */ // MIs[1] A
4584 /* 2133 */ // No operand predicates
4585 /* 2133 */ // MIs[1] sub1
4586 /* 2133 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4587 /* 2137 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4588 /* 2141 */ // MIs[2] B
4589 /* 2141 */ // No operand predicates
4590 /* 2141 */ // MIs[2] C
4591 /* 2141 */ // No operand predicates
4592 /* 2141 */ // MIs[0] B
4593 /* 2141 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4594 /* 2146 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4595 /* 2148 */ // Combiner Rule #0: APlusBMinusCMinusB
4596 /* 2148 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4597 /* 2151 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4598 /* 2153 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4599 /* 2157 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4600 /* 2161 */ GIR_EraseRootFromParent_Done,
4601 /* 2162 */ // Label 140: @2162
4602 /* 2162 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2199), // Rule ID 11 //
4603 /* 2167 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4604 /* 2170 */ // MIs[0] root
4605 /* 2170 */ // No operand predicates
4606 /* 2170 */ // MIs[0] add
4607 /* 2170 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4608 /* 2174 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4609 /* 2178 */ // MIs[1] A
4610 /* 2178 */ // No operand predicates
4611 /* 2178 */ // MIs[1] c1
4612 /* 2178 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4613 /* 2182 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4614 /* 2186 */ // MIs[2] imm1
4615 /* 2186 */ // No operand predicates
4616 /* 2186 */ // MIs[0] c2
4617 /* 2186 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4618 /* 2190 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4619 /* 2194 */ // MIs[3] imm2
4620 /* 2194 */ // No operand predicates
4621 /* 2194 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4622 /* 2196 */ // Combiner Rule #11: APlusC1MinusC2
4623 /* 2196 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4624 /* 2199 */ // Label 141: @2199
4625 /* 2199 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2236), // Rule ID 14 //
4626 /* 2204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4627 /* 2207 */ // MIs[0] root
4628 /* 2207 */ // No operand predicates
4629 /* 2207 */ // MIs[0] sub1
4630 /* 2207 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4631 /* 2211 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4632 /* 2215 */ // MIs[1] c1
4633 /* 2215 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4634 /* 2219 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4635 /* 2223 */ // MIs[2] imm1
4636 /* 2223 */ // No operand predicates
4637 /* 2223 */ // MIs[1] A
4638 /* 2223 */ // No operand predicates
4639 /* 2223 */ // MIs[0] c2
4640 /* 2223 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4641 /* 2227 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4642 /* 2231 */ // MIs[3] imm2
4643 /* 2231 */ // No operand predicates
4644 /* 2231 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4645 /* 2233 */ // Combiner Rule #14: C1Minus2MinusC2
4646 /* 2233 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4647 /* 2236 */ // Label 142: @2236
4648 /* 2236 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2281), // Rule ID 1 //
4649 /* 2241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4650 /* 2244 */ // MIs[0] root
4651 /* 2244 */ // No operand predicates
4652 /* 2244 */ // MIs[0] sub2
4653 /* 2244 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4654 /* 2248 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4655 /* 2252 */ // MIs[1] A
4656 /* 2252 */ // No operand predicates
4657 /* 2252 */ // MIs[1] sub1
4658 /* 2252 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4659 /* 2256 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4660 /* 2260 */ // MIs[2] B
4661 /* 2260 */ // No operand predicates
4662 /* 2260 */ // MIs[2] C
4663 /* 2260 */ // No operand predicates
4664 /* 2260 */ // MIs[0] C
4665 /* 2260 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4666 /* 2265 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4667 /* 2267 */ // Combiner Rule #1: AMinusBMinusCMinusC
4668 /* 2267 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4669 /* 2270 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4670 /* 2272 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4671 /* 2276 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4672 /* 2280 */ GIR_EraseRootFromParent_Done,
4673 /* 2281 */ // Label 143: @2281
4674 /* 2281 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2318), // Rule ID 13 //
4675 /* 2286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
4676 /* 2289 */ // MIs[0] root
4677 /* 2289 */ // No operand predicates
4678 /* 2289 */ // MIs[0] sub1
4679 /* 2289 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4680 /* 2293 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4681 /* 2297 */ // MIs[1] A
4682 /* 2297 */ // No operand predicates
4683 /* 2297 */ // MIs[1] c1
4684 /* 2297 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4685 /* 2301 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4686 /* 2305 */ // MIs[2] imm1
4687 /* 2305 */ // No operand predicates
4688 /* 2305 */ // MIs[0] c2
4689 /* 2305 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4690 /* 2309 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4691 /* 2313 */ // MIs[3] imm2
4692 /* 2313 */ // No operand predicates
4693 /* 2313 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4694 /* 2315 */ // Combiner Rule #13: AMinusC1MinusC2
4695 /* 2315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4696 /* 2318 */ // Label 144: @2318
4697 /* 2318 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2347), // Rule ID 401 //
4698 /* 2323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
4699 /* 2326 */ // MIs[0] dst
4700 /* 2326 */ // No operand predicates
4701 /* 2326 */ // MIs[0] ext1
4702 /* 2326 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4703 /* 2330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4704 /* 2334 */ // MIs[1] src1
4705 /* 2334 */ // No operand predicates
4706 /* 2334 */ // MIs[0] ext2
4707 /* 2334 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4708 /* 2338 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4709 /* 2342 */ // MIs[2] src2
4710 /* 2342 */ // No operand predicates
4711 /* 2342 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4712 /* 2344 */ // Combiner Rule #249: push_sub_through_sext
4713 /* 2344 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4714 /* 2347 */ // Label 145: @2347
4715 /* 2347 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2376), // Rule ID 398 //
4716 /* 2352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
4717 /* 2355 */ // MIs[0] dst
4718 /* 2355 */ // No operand predicates
4719 /* 2355 */ // MIs[0] ext1
4720 /* 2355 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4721 /* 2359 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4722 /* 2363 */ // MIs[1] src1
4723 /* 2363 */ // No operand predicates
4724 /* 2363 */ // MIs[0] ext2
4725 /* 2363 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4726 /* 2367 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4727 /* 2371 */ // MIs[2] src2
4728 /* 2371 */ // No operand predicates
4729 /* 2371 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4730 /* 2373 */ // Combiner Rule #246: push_sub_through_zext
4731 /* 2373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4732 /* 2376 */ // Label 146: @2376
4733 /* 2376 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2419), // Rule ID 166 //
4734 /* 2381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
4735 /* 2384 */ // MIs[0] dst
4736 /* 2384 */ // No operand predicates
4737 /* 2384 */ // MIs[0] Operand 1
4738 /* 2384 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4739 /* 2388 */ // MIs[0] and
4740 /* 2388 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4741 /* 2392 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4742 /* 2396 */ // MIs[1] x
4743 /* 2396 */ // No operand predicates
4744 /* 2396 */ // MIs[1] Operand 2
4745 /* 2396 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4746 /* 2400 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
4747 /* 2404 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4748 /* 2406 */ // Combiner Rule #122: neg_and_one_to_sext_inreg
4749 /* 2406 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4750 /* 2409 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4751 /* 2411 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4752 /* 2415 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4753 /* 2418 */ GIR_EraseRootFromParent_Done,
4754 /* 2419 */ // Label 147: @2419
4755 /* 2419 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2456), // Rule ID 12 //
4756 /* 2424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4757 /* 2427 */ // MIs[0] root
4758 /* 2427 */ // No operand predicates
4759 /* 2427 */ // MIs[0] c2
4760 /* 2427 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4761 /* 2431 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4762 /* 2435 */ // MIs[1] imm2
4763 /* 2435 */ // No operand predicates
4764 /* 2435 */ // MIs[0] add
4765 /* 2435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4766 /* 2439 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4767 /* 2443 */ // MIs[2] A
4768 /* 2443 */ // No operand predicates
4769 /* 2443 */ // MIs[2] c1
4770 /* 2443 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4771 /* 2447 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4772 /* 2451 */ // MIs[3] imm1
4773 /* 2451 */ // No operand predicates
4774 /* 2451 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4775 /* 2453 */ // Combiner Rule #12: C2MinusAPlusC1
4776 /* 2453 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4777 /* 2456 */ // Label 148: @2456
4778 /* 2456 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2495), // Rule ID 119 //
4779 /* 2461 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4780 /* 2464 */ // MIs[0] dst
4781 /* 2464 */ // No operand predicates
4782 /* 2464 */ // MIs[0] x
4783 /* 2464 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
4784 /* 2468 */ // MIs[0] x
4785 /* 2468 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4786 /* 2473 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4787 /* 2476 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4788 /* 2486 */ // Combiner Rule #89: same_val_zero @ [__same_val_zero_match_0[0]]
4789 /* 2486 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4790 /* 2489 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4791 /* 2491 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4792 /* 2494 */ GIR_EraseRootFromParent_Done,
4793 /* 2495 */ // Label 149: @2495
4794 /* 2495 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2522), // Rule ID 45 //
4795 /* 2500 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4796 /* 2503 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4797 /* 2509 */ // MIs[0] root
4798 /* 2509 */ // No operand predicates
4799 /* 2509 */ // MIs[0] x
4800 /* 2509 */ // No operand predicates
4801 /* 2509 */ // MIs[0] right
4802 /* 2509 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4803 /* 2513 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4804 /* 2517 */ // MIs[1] imm
4805 /* 2517 */ // No operand predicates
4806 /* 2517 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4807 /* 2519 */ // Combiner Rule #43: sub_of_vscale
4808 /* 2519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4809 /* 2522 */ // Label 150: @2522
4810 /* 2522 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2545), // Rule ID 107 //
4811 /* 2527 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4812 /* 2530 */ // MIs[0] dst
4813 /* 2530 */ // No operand predicates
4814 /* 2530 */ // MIs[0] lhs
4815 /* 2530 */ // No operand predicates
4816 /* 2530 */ // MIs[0] Operand 2
4817 /* 2530 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4818 /* 2534 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4819 /* 2539 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[0]]
4820 /* 2539 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4821 /* 2544 */ GIR_EraseRootFromParent_Done,
4822 /* 2545 */ // Label 151: @2545
4823 /* 2545 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2566), // Rule ID 18 //
4824 /* 2550 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4825 /* 2553 */ // MIs[0] d
4826 /* 2553 */ // No operand predicates
4827 /* 2553 */ // MIs[0] op1
4828 /* 2553 */ // No operand predicates
4829 /* 2553 */ // MIs[0] c
4830 /* 2553 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4831 /* 2557 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4832 /* 2561 */ // MIs[1] imm
4833 /* 2561 */ // No operand predicates
4834 /* 2561 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4835 /* 2563 */ // Combiner Rule #18: sub_to_add
4836 /* 2563 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4837 /* 2566 */ // Label 152: @2566
4838 /* 2566 */ GIM_Reject,
4839 /* 2567 */ // Label 3: @2567
4840 /* 2567 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2578), // Rule ID 81 //
4841 /* 2572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4842 /* 2575 */ // Combiner Rule #75: undef_to_int_zero; wip_match_opcode 'G_MUL'
4843 /* 2575 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4844 /* 2578 */ // Label 153: @2578
4845 /* 2578 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2589), // Rule ID 255 //
4846 /* 2583 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4847 /* 2586 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_MUL'
4848 /* 2586 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4849 /* 2589 */ // Label 154: @2589
4850 /* 2589 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2600), // Rule ID 331 //
4851 /* 2594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4852 /* 2597 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4853 /* 2597 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4854 /* 2600 */ // Label 155: @2600
4855 /* 2600 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2640), // Rule ID 20 //
4856 /* 2605 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
4857 /* 2608 */ // MIs[0] dst
4858 /* 2608 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4859 /* 2612 */ // MIs[0] x
4860 /* 2612 */ // No operand predicates
4861 /* 2612 */ // MIs[0] Operand 2
4862 /* 2612 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
4863 /* 2616 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4864 /* 2619 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4865 /* 2629 */ // Combiner Rule #20: mul_by_neg_one
4866 /* 2629 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4867 /* 2632 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4868 /* 2634 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4869 /* 2637 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4870 /* 2639 */ GIR_EraseRootFromParent_Done,
4871 /* 2640 */ // Label 156: @2640
4872 /* 2640 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2669), // Rule ID 403 //
4873 /* 2645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
4874 /* 2648 */ // MIs[0] dst
4875 /* 2648 */ // No operand predicates
4876 /* 2648 */ // MIs[0] ext1
4877 /* 2648 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4878 /* 2652 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4879 /* 2656 */ // MIs[1] src1
4880 /* 2656 */ // No operand predicates
4881 /* 2656 */ // MIs[0] ext2
4882 /* 2656 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4883 /* 2660 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4884 /* 2664 */ // MIs[2] src2
4885 /* 2664 */ // No operand predicates
4886 /* 2664 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4887 /* 2666 */ // Combiner Rule #251: push_mul_through_sext
4888 /* 2666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4889 /* 2669 */ // Label 157: @2669
4890 /* 2669 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2704), // Rule ID 43 //
4891 /* 2674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
4892 /* 2677 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4893 /* 2683 */ // MIs[0] root
4894 /* 2683 */ // No operand predicates
4895 /* 2683 */ // MIs[0] left
4896 /* 2683 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4897 /* 2687 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4898 /* 2691 */ // MIs[1] scale
4899 /* 2691 */ // No operand predicates
4900 /* 2691 */ // MIs[0] x
4901 /* 2691 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4902 /* 2695 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4903 /* 2699 */ // MIs[2] imm1
4904 /* 2699 */ // No operand predicates
4905 /* 2699 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4906 /* 2701 */ // Combiner Rule #41: mul_of_vscale
4907 /* 2701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4908 /* 2704 */ // Label 158: @2704
4909 /* 2704 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2733), // Rule ID 400 //
4910 /* 2709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
4911 /* 2712 */ // MIs[0] dst
4912 /* 2712 */ // No operand predicates
4913 /* 2712 */ // MIs[0] ext1
4914 /* 2712 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4915 /* 2716 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
4916 /* 2720 */ // MIs[1] src1
4917 /* 2720 */ // No operand predicates
4918 /* 2720 */ // MIs[0] ext2
4919 /* 2720 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4920 /* 2724 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
4921 /* 2728 */ // MIs[2] src2
4922 /* 2728 */ // No operand predicates
4923 /* 2728 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4924 /* 2730 */ // Combiner Rule #248: push_mul_through_zext
4925 /* 2730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
4926 /* 2733 */ // Label 159: @2733
4927 /* 2733 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2773), // Rule ID 128 //
4928 /* 2738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4929 /* 2741 */ // MIs[0] dst
4930 /* 2741 */ // No operand predicates
4931 /* 2741 */ // MIs[0] zero
4932 /* 2741 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4933 /* 2745 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4934 /* 2749 */ // MIs[1] Operand 1
4935 /* 2749 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4936 /* 2760 */ // MIs[0] rhs
4937 /* 2760 */ // No operand predicates
4938 /* 2760 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4939 /* 2765 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4940 /* 2767 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
4941 /* 2767 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4942 /* 2772 */ GIR_EraseRootFromParent_Done,
4943 /* 2773 */ // Label 160: @2773
4944 /* 2773 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2796), // Rule ID 129 //
4945 /* 2778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
4946 /* 2781 */ // MIs[0] dst
4947 /* 2781 */ // No operand predicates
4948 /* 2781 */ // MIs[0] lhs
4949 /* 2781 */ // No operand predicates
4950 /* 2781 */ // MIs[0] zero
4951 /* 2781 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4952 /* 2785 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4953 /* 2790 */ // Combiner Rule #91: binop_right_to_zero
4954 /* 2790 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4955 /* 2795 */ GIR_EraseRootFromParent_Done,
4956 /* 2796 */ // Label 161: @2796
4957 /* 2796 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2819), // Rule ID 134 //
4958 /* 2801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4959 /* 2804 */ // MIs[0] dst
4960 /* 2804 */ // No operand predicates
4961 /* 2804 */ // MIs[0] x
4962 /* 2804 */ // No operand predicates
4963 /* 2804 */ // MIs[0] Operand 2
4964 /* 2804 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4965 /* 2808 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4966 /* 2813 */ // Combiner Rule #96: right_identity_one_int
4967 /* 2813 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4968 /* 2818 */ GIR_EraseRootFromParent_Done,
4969 /* 2819 */ // Label 162: @2819
4970 /* 2819 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2830), // Rule ID 17 //
4971 /* 2824 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4972 /* 2827 */ // MIs[0] d
4973 /* 2827 */ // No operand predicates
4974 /* 2827 */ // MIs[0] op1
4975 /* 2827 */ // No operand predicates
4976 /* 2827 */ // MIs[0] op2
4977 /* 2827 */ // No operand predicates
4978 /* 2827 */ // Combiner Rule #17: mul_to_shl
4979 /* 2827 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4980 /* 2830 */ // Label 163: @2830
4981 /* 2830 */ GIM_Reject,
4982 /* 2831 */ // Label 4: @2831
4983 /* 2831 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2842), // Rule ID 226 //
4984 /* 2836 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4985 /* 2839 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
4986 /* 2839 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4987 /* 2842 */ // Label 164: @2842
4988 /* 2842 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2853), // Rule ID 261 //
4989 /* 2847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4990 /* 2850 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SDIV'
4991 /* 2850 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4992 /* 2853 */ // Label 165: @2853
4993 /* 2853 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2864), // Rule ID 300 //
4994 /* 2858 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4995 /* 2861 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SDIV'
4996 /* 2861 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4997 /* 2864 */ // Label 166: @2864
4998 /* 2864 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2904), // Rule ID 124 //
4999 /* 2869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5000 /* 2872 */ // MIs[0] dst
5001 /* 2872 */ // No operand predicates
5002 /* 2872 */ // MIs[0] zero
5003 /* 2872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5004 /* 2876 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5005 /* 2880 */ // MIs[1] Operand 1
5006 /* 2880 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5007 /* 2891 */ // MIs[0] rhs
5008 /* 2891 */ // No operand predicates
5009 /* 2891 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5010 /* 2896 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5011 /* 2898 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5012 /* 2898 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5013 /* 2903 */ GIR_EraseRootFromParent_Done,
5014 /* 2904 */ // Label 167: @2904
5015 /* 2904 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2921), // Rule ID 323 //
5016 /* 2909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
5017 /* 2912 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5018 /* 2918 */ // MIs[0] dst
5019 /* 2918 */ // No operand predicates
5020 /* 2918 */ // MIs[0] x
5021 /* 2918 */ // No operand predicates
5022 /* 2918 */ // MIs[0] y
5023 /* 2918 */ // No operand predicates
5024 /* 2918 */ // Combiner Rule #201: sdiv_by_pow2
5025 /* 2918 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5026 /* 2921 */ // Label 168: @2921
5027 /* 2921 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2932), // Rule ID 325 //
5028 /* 2926 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
5029 /* 2929 */ // MIs[0] dst
5030 /* 2929 */ // No operand predicates
5031 /* 2929 */ // MIs[0] x
5032 /* 2929 */ // No operand predicates
5033 /* 2929 */ // MIs[0] y
5034 /* 2929 */ // No operand predicates
5035 /* 2929 */ // Combiner Rule #203: sdiv_by_const
5036 /* 2929 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5037 /* 2932 */ // Label 169: @2932
5038 /* 2932 */ GIM_Reject,
5039 /* 2933 */ // Label 5: @2933
5040 /* 2933 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2944), // Rule ID 84 //
5041 /* 2938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
5042 /* 2941 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5043 /* 2941 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5044 /* 2944 */ // Label 170: @2944
5045 /* 2944 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2955), // Rule ID 227 //
5046 /* 2949 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
5047 /* 2952 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5048 /* 2952 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5049 /* 2955 */ // Label 171: @2955
5050 /* 2955 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2966), // Rule ID 260 //
5051 /* 2960 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5052 /* 2963 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UDIV'
5053 /* 2963 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5054 /* 2966 */ // Label 172: @2966
5055 /* 2966 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2977), // Rule ID 302 //
5056 /* 2971 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5057 /* 2974 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5058 /* 2974 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5059 /* 2977 */ // Label 173: @2977
5060 /* 2977 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3017), // Rule ID 125 //
5061 /* 2982 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5062 /* 2985 */ // MIs[0] dst
5063 /* 2985 */ // No operand predicates
5064 /* 2985 */ // MIs[0] zero
5065 /* 2985 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5066 /* 2989 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5067 /* 2993 */ // MIs[1] Operand 1
5068 /* 2993 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5069 /* 3004 */ // MIs[0] rhs
5070 /* 3004 */ // No operand predicates
5071 /* 3004 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5072 /* 3009 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5073 /* 3011 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5074 /* 3011 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5075 /* 3016 */ GIR_EraseRootFromParent_Done,
5076 /* 3017 */ // Label 174: @3017
5077 /* 3017 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3034), // Rule ID 322 //
5078 /* 3022 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5079 /* 3025 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5080 /* 3031 */ // MIs[0] dst
5081 /* 3031 */ // No operand predicates
5082 /* 3031 */ // MIs[0] x
5083 /* 3031 */ // No operand predicates
5084 /* 3031 */ // MIs[0] y
5085 /* 3031 */ // No operand predicates
5086 /* 3031 */ // Combiner Rule #200: udiv_by_pow2
5087 /* 3031 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5088 /* 3034 */ // Label 175: @3034
5089 /* 3034 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3045), // Rule ID 324 //
5090 /* 3039 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
5091 /* 3042 */ // MIs[0] dst
5092 /* 3042 */ // No operand predicates
5093 /* 3042 */ // MIs[0] x
5094 /* 3042 */ // No operand predicates
5095 /* 3042 */ // MIs[0] y
5096 /* 3042 */ // No operand predicates
5097 /* 3042 */ // Combiner Rule #202: udiv_by_const
5098 /* 3042 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5099 /* 3045 */ // Label 176: @3045
5100 /* 3045 */ GIM_Reject,
5101 /* 3046 */ // Label 6: @3046
5102 /* 3046 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3057), // Rule ID 228 //
5103 /* 3051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
5104 /* 3054 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5105 /* 3054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5106 /* 3057 */ // Label 177: @3057
5107 /* 3057 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3068), // Rule ID 263 //
5108 /* 3062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5109 /* 3065 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SREM'
5110 /* 3065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5111 /* 3068 */ // Label 178: @3068
5112 /* 3068 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3079), // Rule ID 301 //
5113 /* 3073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5114 /* 3076 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SREM'
5115 /* 3076 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5116 /* 3079 */ // Label 179: @3079
5117 /* 3079 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3119), // Rule ID 126 //
5118 /* 3084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5119 /* 3087 */ // MIs[0] dst
5120 /* 3087 */ // No operand predicates
5121 /* 3087 */ // MIs[0] zero
5122 /* 3087 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5123 /* 3091 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5124 /* 3095 */ // MIs[1] Operand 1
5125 /* 3095 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5126 /* 3106 */ // MIs[0] rhs
5127 /* 3106 */ // No operand predicates
5128 /* 3106 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5129 /* 3111 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5130 /* 3113 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5131 /* 3113 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5132 /* 3118 */ GIR_EraseRootFromParent_Done,
5133 /* 3119 */ // Label 180: @3119
5134 /* 3119 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3130), // Rule ID 321 //
5135 /* 3124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
5136 /* 3127 */ // MIs[0] dst
5137 /* 3127 */ // No operand predicates
5138 /* 3127 */ // MIs[0] x
5139 /* 3127 */ // No operand predicates
5140 /* 3127 */ // MIs[0] y
5141 /* 3127 */ // No operand predicates
5142 /* 3127 */ // Combiner Rule #199: srem_by_const
5143 /* 3127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5144 /* 3130 */ // Label 181: @3130
5145 /* 3130 */ GIM_Reject,
5146 /* 3131 */ // Label 7: @3131
5147 /* 3131 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3142), // Rule ID 85 //
5148 /* 3136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
5149 /* 3139 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5150 /* 3139 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5151 /* 3142 */ // Label 182: @3142
5152 /* 3142 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3153), // Rule ID 177 //
5153 /* 3147 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
5154 /* 3150 */ // Combiner Rule #133: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
5155 /* 3150 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5156 /* 3153 */ // Label 183: @3153
5157 /* 3153 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3164), // Rule ID 229 //
5158 /* 3158 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
5159 /* 3161 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5160 /* 3161 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5161 /* 3164 */ // Label 184: @3164
5162 /* 3164 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3175), // Rule ID 262 //
5163 /* 3169 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5164 /* 3172 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UREM'
5165 /* 3172 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5166 /* 3175 */ // Label 185: @3175
5167 /* 3175 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3186), // Rule ID 303 //
5168 /* 3180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5169 /* 3183 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UREM'
5170 /* 3183 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5171 /* 3186 */ // Label 186: @3186
5172 /* 3186 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3226), // Rule ID 127 //
5173 /* 3191 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5174 /* 3194 */ // MIs[0] dst
5175 /* 3194 */ // No operand predicates
5176 /* 3194 */ // MIs[0] zero
5177 /* 3194 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5178 /* 3198 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5179 /* 3202 */ // MIs[1] Operand 1
5180 /* 3202 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5181 /* 3213 */ // MIs[0] rhs
5182 /* 3213 */ // No operand predicates
5183 /* 3213 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5184 /* 3218 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5185 /* 3220 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5186 /* 3220 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5187 /* 3225 */ GIR_EraseRootFromParent_Done,
5188 /* 3226 */ // Label 187: @3226
5189 /* 3226 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3237), // Rule ID 320 //
5190 /* 3231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
5191 /* 3234 */ // MIs[0] dst
5192 /* 3234 */ // No operand predicates
5193 /* 3234 */ // MIs[0] x
5194 /* 3234 */ // No operand predicates
5195 /* 3234 */ // MIs[0] y
5196 /* 3234 */ // No operand predicates
5197 /* 3234 */ // Combiner Rule #198: urem_by_const
5198 /* 3234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5199 /* 3237 */ // Label 188: @3237
5200 /* 3237 */ GIM_Reject,
5201 /* 3238 */ // Label 8: @3238
5202 /* 3238 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3249), // Rule ID 76 //
5203 /* 3243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
5204 /* 3246 */ // Combiner Rule #72: load_and_mask; wip_match_opcode 'G_AND'
5205 /* 3246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5206 /* 3249 */ // Label 189: @3249
5207 /* 3249 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3260), // Rule ID 80 //
5208 /* 3254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5209 /* 3257 */ // Combiner Rule #75: undef_to_int_zero; wip_match_opcode 'G_AND'
5210 /* 3257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5211 /* 3260 */ // Label 190: @3260
5212 /* 3260 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3271), // Rule ID 149 //
5213 /* 3265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5214 /* 3268 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5215 /* 3268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5216 /* 3271 */ // Label 191: @3271
5217 /* 3271 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3282), // Rule ID 169 //
5218 /* 3276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
5219 /* 3279 */ // Combiner Rule #125: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5220 /* 3279 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5221 /* 3282 */ // Label 192: @3282
5222 /* 3282 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3293), // Rule ID 174 //
5223 /* 3287 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
5224 /* 3290 */ // Combiner Rule #130: redundant_and; wip_match_opcode 'G_AND'
5225 /* 3290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
5226 /* 3293 */ // Label 193: @3293
5227 /* 3293 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3304), // Rule ID 199 //
5228 /* 3298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
5229 /* 3301 */ // Combiner Rule #155: overlapping_and; wip_match_opcode 'G_AND'
5230 /* 3301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
5231 /* 3304 */ // Label 194: @3304
5232 /* 3304 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3315), // Rule ID 252 //
5233 /* 3309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5234 /* 3312 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_AND'
5235 /* 3312 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5236 /* 3315 */ // Label 195: @3315
5237 /* 3315 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3326), // Rule ID 285 //
5238 /* 3320 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
5239 /* 3323 */ // Combiner Rule #188: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5240 /* 3323 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5241 /* 3326 */ // Label 196: @3326
5242 /* 3326 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3337), // Rule ID 297 //
5243 /* 3331 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5244 /* 3334 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_AND'
5245 /* 3334 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5246 /* 3337 */ // Label 197: @3337
5247 /* 3337 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3348), // Rule ID 332 //
5248 /* 3342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5249 /* 3345 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5250 /* 3345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5251 /* 3348 */ // Label 198: @3348
5252 /* 3348 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3359), // Rule ID 359 //
5253 /* 3353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5254 /* 3356 */ // Combiner Rule #210: match_ands; wip_match_opcode 'G_AND'
5255 /* 3356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5256 /* 3359 */ // Label 199: @3359
5257 /* 3359 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3457), // Rule ID 162 //
5258 /* 3364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
5259 /* 3367 */ // MIs[0] root
5260 /* 3367 */ // No operand predicates
5261 /* 3367 */ // MIs[0] d1
5262 /* 3367 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5263 /* 3371 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5264 /* 3375 */ // MIs[1] p
5265 /* 3375 */ // No operand predicates
5266 /* 3375 */ // MIs[1] s1
5267 /* 3375 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5268 /* 3379 */ // MIs[1] Operand 3
5269 /* 3379 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5270 /* 3383 */ // MIs[0] d2
5271 /* 3383 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5272 /* 3387 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5273 /* 3391 */ // MIs[2] p
5274 /* 3391 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5275 /* 3396 */ // MIs[2] s2
5276 /* 3396 */ // No operand predicates
5277 /* 3396 */ // MIs[2] Operand 3
5278 /* 3396 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5279 /* 3400 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
5280 /* 3404 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5281 /* 3406 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5282 /* 3409 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5283 /* 3419 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5284 /* 3422 */ // Combiner Rule #118: double_icmp_zero_and_combine
5285 /* 3422 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5286 /* 3425 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5287 /* 3430 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5288 /* 3434 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5289 /* 3438 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5290 /* 3442 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5291 /* 3446 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5292 /* 3450 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5293 /* 3453 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5294 /* 3456 */ GIR_EraseRootFromParent_Done,
5295 /* 3457 */ // Label 200: @3457
5296 /* 3457 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3494), // Rule ID 245 //
5297 /* 3462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5298 /* 3465 */ // MIs[0] root
5299 /* 3465 */ // No operand predicates
5300 /* 3465 */ // MIs[0] shift
5301 /* 3465 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5302 /* 3469 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5303 /* 3473 */ // MIs[1] x
5304 /* 3473 */ // No operand predicates
5305 /* 3473 */ // MIs[1] lsb
5306 /* 3473 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5307 /* 3477 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5308 /* 3481 */ // MIs[2] imm1
5309 /* 3481 */ // No operand predicates
5310 /* 3481 */ // MIs[0] mask
5311 /* 3481 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5312 /* 3485 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5313 /* 3489 */ // MIs[3] imm2
5314 /* 3489 */ // No operand predicates
5315 /* 3489 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5316 /* 3491 */ // Combiner Rule #178: bitfield_extract_from_and
5317 /* 3491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5318 /* 3494 */ // Label 201: @3494
5319 /* 3494 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3518), // Rule ID 117 //
5320 /* 3499 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5321 /* 3502 */ // MIs[0] dst
5322 /* 3502 */ // No operand predicates
5323 /* 3502 */ // MIs[0] src
5324 /* 3502 */ // No operand predicates
5325 /* 3502 */ // MIs[0] src
5326 /* 3502 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5327 /* 3507 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5328 /* 3512 */ // Combiner Rule #88: binop_same_val @ [__binop_same_val_match_0[0]]
5329 /* 3512 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5330 /* 3517 */ GIR_EraseRootFromParent_Done,
5331 /* 3518 */ // Label 202: @3518
5332 /* 3518 */ GIM_Reject,
5333 /* 3519 */ // Label 9: @3519
5334 /* 3519 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3530), // Rule ID 82 //
5335 /* 3524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
5336 /* 3527 */ // Combiner Rule #76: undef_to_negative_one; wip_match_opcode 'G_OR'
5337 /* 3527 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5338 /* 3530 */ // Label 203: @3530
5339 /* 3530 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3541), // Rule ID 150 //
5340 /* 3535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5341 /* 3538 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5342 /* 3538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5343 /* 3541 */ // Label 204: @3541
5344 /* 3541 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3552), // Rule ID 176 //
5345 /* 3546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5346 /* 3549 */ // Combiner Rule #132: redundant_or; wip_match_opcode 'G_OR'
5347 /* 3549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5348 /* 3552 */ // Label 205: @3552
5349 /* 3552 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3563), // Rule ID 225 //
5350 /* 3557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5351 /* 3560 */ // Combiner Rule #165: load_or_combine; wip_match_opcode 'G_OR'
5352 /* 3560 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5353 /* 3563 */ // Label 206: @3563
5354 /* 3563 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3574), // Rule ID 230 //
5355 /* 3568 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
5356 /* 3571 */ // Combiner Rule #167: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5357 /* 3571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5358 /* 3574 */ // Label 207: @3574
5359 /* 3574 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3585), // Rule ID 256 //
5360 /* 3579 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5361 /* 3582 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_OR'
5362 /* 3582 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5363 /* 3585 */ // Label 208: @3585
5364 /* 3585 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3596), // Rule ID 298 //
5365 /* 3590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5366 /* 3593 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_OR'
5367 /* 3593 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5368 /* 3596 */ // Label 209: @3596
5369 /* 3596 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3607), // Rule ID 333 //
5370 /* 3601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5371 /* 3604 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5372 /* 3604 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5373 /* 3607 */ // Label 210: @3607
5374 /* 3607 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3618), // Rule ID 360 //
5375 /* 3612 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5376 /* 3615 */ // Combiner Rule #211: match_ors; wip_match_opcode 'G_OR'
5377 /* 3615 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5378 /* 3618 */ // Label 211: @3618
5379 /* 3618 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3665), // Rule ID 237 //
5380 /* 3623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5381 /* 3626 */ // MIs[0] root
5382 /* 3626 */ // No operand predicates
5383 /* 3626 */ // MIs[0] out1
5384 /* 3626 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5385 /* 3630 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5386 /* 3634 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5387 /* 3634 */ // No operand predicates
5388 /* 3634 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5389 /* 3634 */ // No operand predicates
5390 /* 3634 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5391 /* 3634 */ // No operand predicates
5392 /* 3634 */ // MIs[0] out2
5393 /* 3634 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5394 /* 3638 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5395 /* 3642 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5396 /* 3642 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5397 /* 3647 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5398 /* 3647 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5399 /* 3652 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5400 /* 3657 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5401 /* 3659 */ // Combiner Rule #172: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5402 /* 3659 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5403 /* 3664 */ GIR_EraseRootFromParent_Done,
5404 /* 3665 */ // Label 212: @3665
5405 /* 3665 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3712), // Rule ID 239 //
5406 /* 3670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5407 /* 3673 */ // MIs[0] root
5408 /* 3673 */ // No operand predicates
5409 /* 3673 */ // MIs[0] out1
5410 /* 3673 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5411 /* 3677 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5412 /* 3681 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5413 /* 3681 */ // No operand predicates
5414 /* 3681 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5415 /* 3681 */ // No operand predicates
5416 /* 3681 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5417 /* 3681 */ // No operand predicates
5418 /* 3681 */ // MIs[0] out2
5419 /* 3681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5420 /* 3685 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5421 /* 3689 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5422 /* 3689 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5423 /* 3694 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5424 /* 3694 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5425 /* 3699 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5426 /* 3704 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5427 /* 3706 */ // Combiner Rule #173: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5428 /* 3706 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5429 /* 3711 */ GIR_EraseRootFromParent_Done,
5430 /* 3712 */ // Label 213: @3712
5431 /* 3712 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3810), // Rule ID 163 //
5432 /* 3717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
5433 /* 3720 */ // MIs[0] root
5434 /* 3720 */ // No operand predicates
5435 /* 3720 */ // MIs[0] d1
5436 /* 3720 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5437 /* 3724 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5438 /* 3728 */ // MIs[1] p
5439 /* 3728 */ // No operand predicates
5440 /* 3728 */ // MIs[1] s1
5441 /* 3728 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5442 /* 3732 */ // MIs[1] Operand 3
5443 /* 3732 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5444 /* 3736 */ // MIs[0] d2
5445 /* 3736 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5446 /* 3740 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5447 /* 3744 */ // MIs[2] p
5448 /* 3744 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5449 /* 3749 */ // MIs[2] s2
5450 /* 3749 */ // No operand predicates
5451 /* 3749 */ // MIs[2] Operand 3
5452 /* 3749 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5453 /* 3753 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
5454 /* 3757 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5455 /* 3759 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5456 /* 3762 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5457 /* 3772 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5458 /* 3775 */ // Combiner Rule #119: double_icmp_zero_or_combine
5459 /* 3775 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5460 /* 3778 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5461 /* 3783 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5462 /* 3787 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5463 /* 3791 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5464 /* 3795 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5465 /* 3799 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5466 /* 3803 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5467 /* 3806 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5468 /* 3809 */ GIR_EraseRootFromParent_Done,
5469 /* 3810 */ // Label 214: @3810
5470 /* 3810 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3857), // Rule ID 240 //
5471 /* 3815 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5472 /* 3818 */ // MIs[0] root
5473 /* 3818 */ // No operand predicates
5474 /* 3818 */ // MIs[0] out2
5475 /* 3818 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5476 /* 3822 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5477 /* 3826 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5478 /* 3826 */ // No operand predicates
5479 /* 3826 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5480 /* 3826 */ // No operand predicates
5481 /* 3826 */ // MIs[0] out1
5482 /* 3826 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5483 /* 3830 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5484 /* 3834 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5485 /* 3834 */ // No operand predicates
5486 /* 3834 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5487 /* 3834 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5488 /* 3839 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5489 /* 3839 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5490 /* 3844 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5491 /* 3849 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5492 /* 3851 */ // Combiner Rule #173: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5493 /* 3851 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5494 /* 3856 */ GIR_EraseRootFromParent_Done,
5495 /* 3857 */ // Label 215: @3857
5496 /* 3857 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3904), // Rule ID 238 //
5497 /* 3862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5498 /* 3865 */ // MIs[0] root
5499 /* 3865 */ // No operand predicates
5500 /* 3865 */ // MIs[0] out2
5501 /* 3865 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5502 /* 3869 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5503 /* 3873 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5504 /* 3873 */ // No operand predicates
5505 /* 3873 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5506 /* 3873 */ // No operand predicates
5507 /* 3873 */ // MIs[0] out1
5508 /* 3873 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5509 /* 3877 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5510 /* 3881 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5511 /* 3881 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5512 /* 3886 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5513 /* 3886 */ // No operand predicates
5514 /* 3886 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5515 /* 3886 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5516 /* 3891 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5517 /* 3896 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5518 /* 3898 */ // Combiner Rule #172: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5519 /* 3898 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5520 /* 3903 */ GIR_EraseRootFromParent_Done,
5521 /* 3904 */ // Label 216: @3904
5522 /* 3904 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3928), // Rule ID 118 //
5523 /* 3909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5524 /* 3912 */ // MIs[0] dst
5525 /* 3912 */ // No operand predicates
5526 /* 3912 */ // MIs[0] src
5527 /* 3912 */ // No operand predicates
5528 /* 3912 */ // MIs[0] src
5529 /* 3912 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5530 /* 3917 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5531 /* 3922 */ // Combiner Rule #88: binop_same_val @ [__binop_same_val_match_0[1]]
5532 /* 3922 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5533 /* 3927 */ GIR_EraseRootFromParent_Done,
5534 /* 3928 */ // Label 217: @3928
5535 /* 3928 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3951), // Rule ID 109 //
5536 /* 3933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5537 /* 3936 */ // MIs[0] dst
5538 /* 3936 */ // No operand predicates
5539 /* 3936 */ // MIs[0] lhs
5540 /* 3936 */ // No operand predicates
5541 /* 3936 */ // MIs[0] Operand 2
5542 /* 3936 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5543 /* 3940 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5544 /* 3945 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[2]]
5545 /* 3945 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5546 /* 3950 */ GIR_EraseRootFromParent_Done,
5547 /* 3951 */ // Label 218: @3951
5548 /* 3951 */ GIM_Reject,
5549 /* 3952 */ // Label 10: @3952
5550 /* 3952 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3963), // Rule ID 99 //
5551 /* 3957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5552 /* 3960 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5553 /* 3960 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5554 /* 3963 */ // Label 219: @3963
5555 /* 3963 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3974), // Rule ID 151 //
5556 /* 3968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5557 /* 3971 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5558 /* 3971 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5559 /* 3974 */ // Label 220: @3974
5560 /* 3974 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3985), // Rule ID 181 //
5561 /* 3979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
5562 /* 3982 */ // Combiner Rule #137: not_cmp_fold; wip_match_opcode 'G_XOR'
5563 /* 3982 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5564 /* 3985 */ // Label 221: @3985
5565 /* 3985 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3996), // Rule ID 213 //
5566 /* 3990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
5567 /* 3993 */ // Combiner Rule #161: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5568 /* 3993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5569 /* 3996 */ // Label 222: @3996
5570 /* 3996 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4007), // Rule ID 259 //
5571 /* 4001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5572 /* 4004 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_XOR'
5573 /* 4004 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5574 /* 4007 */ // Label 223: @4007
5575 /* 4007 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4018), // Rule ID 299 //
5576 /* 4012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5577 /* 4015 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_XOR'
5578 /* 4015 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5579 /* 4018 */ // Label 224: @4018
5580 /* 4018 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4029), // Rule ID 334 //
5581 /* 4023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5582 /* 4026 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5583 /* 4026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5584 /* 4029 */ // Label 225: @4029
5585 /* 4029 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4089), // Rule ID 10 //
5586 /* 4034 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5587 /* 4037 */ // MIs[0] root
5588 /* 4037 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5589 /* 4041 */ // MIs[0] add
5590 /* 4041 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5591 /* 4045 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5592 /* 4049 */ // MIs[1] A
5593 /* 4049 */ // No operand predicates
5594 /* 4049 */ // MIs[1] Operand 2
5595 /* 4049 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
5596 /* 4053 */ // MIs[0] Operand 2
5597 /* 4053 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5598 /* 4057 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5599 /* 4061 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5600 /* 4063 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5601 /* 4066 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5602 /* 4076 */ // Combiner Rule #10: NotAPlusNegOne
5603 /* 4076 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5604 /* 4079 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5605 /* 4081 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5606 /* 4084 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5607 /* 4088 */ GIR_EraseRootFromParent_Done,
5608 /* 4089 */ // Label 226: @4089
5609 /* 4089 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4128), // Rule ID 120 //
5610 /* 4094 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
5611 /* 4097 */ // MIs[0] dst
5612 /* 4097 */ // No operand predicates
5613 /* 4097 */ // MIs[0] x
5614 /* 4097 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5615 /* 4101 */ // MIs[0] x
5616 /* 4101 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5617 /* 4106 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5618 /* 4109 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5619 /* 4119 */ // Combiner Rule #89: same_val_zero @ [__same_val_zero_match_0[1]]
5620 /* 4119 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5621 /* 4122 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5622 /* 4124 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5623 /* 4127 */ GIR_EraseRootFromParent_Done,
5624 /* 4128 */ // Label 227: @4128
5625 /* 4128 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4151), // Rule ID 110 //
5626 /* 4133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5627 /* 4136 */ // MIs[0] dst
5628 /* 4136 */ // No operand predicates
5629 /* 4136 */ // MIs[0] lhs
5630 /* 4136 */ // No operand predicates
5631 /* 4136 */ // MIs[0] Operand 2
5632 /* 4136 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5633 /* 4140 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5634 /* 4145 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[3]]
5635 /* 4145 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5636 /* 4150 */ GIR_EraseRootFromParent_Done,
5637 /* 4151 */ // Label 228: @4151
5638 /* 4151 */ GIM_Reject,
5639 /* 4152 */ // Label 11: @4152
5640 /* 4152 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4163), // Rule ID 147 //
5641 /* 4157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5642 /* 4160 */ // Combiner Rule #107: extend_through_phis; wip_match_opcode 'G_PHI'
5643 /* 4160 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5644 /* 4163 */ // Label 229: @4163
5645 /* 4163 */ GIM_Reject,
5646 /* 4164 */ // Label 12: @4164
5647 /* 4164 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4175), // Rule ID 395 //
5648 /* 4169 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
5649 /* 4172 */ // Combiner Rule #243: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE'
5650 /* 4172 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
5651 /* 4175 */ // Label 230: @4175
5652 /* 4175 */ GIM_Reject,
5653 /* 4176 */ // Label 13: @4176
5654 /* 4176 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4187), // Rule ID 370 //
5655 /* 4181 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5656 /* 4184 */ // Combiner Rule #221: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5657 /* 4184 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5658 /* 4187 */ // Label 231: @4187
5659 /* 4187 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4198), // Rule ID 371 //
5660 /* 4192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5661 /* 4195 */ // Combiner Rule #222: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5662 /* 4195 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5663 /* 4198 */ // Label 232: @4198
5664 /* 4198 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4209), // Rule ID 373 //
5665 /* 4203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5666 /* 4206 */ // Combiner Rule #224: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5667 /* 4206 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5668 /* 4209 */ // Label 233: @4209
5669 /* 4209 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4220), // Rule ID 374 //
5670 /* 4214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5671 /* 4217 */ // Combiner Rule #225: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5672 /* 4217 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5673 /* 4220 */ // Label 234: @4220
5674 /* 4220 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4231), // Rule ID 375 //
5675 /* 4225 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5676 /* 4228 */ // Combiner Rule #226: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5677 /* 4228 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5678 /* 4231 */ // Label 235: @4231
5679 /* 4231 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4242), // Rule ID 376 //
5680 /* 4236 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5681 /* 4239 */ // Combiner Rule #227: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5682 /* 4239 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5683 /* 4242 */ // Label 236: @4242
5684 /* 4242 */ GIM_Reject,
5685 /* 4243 */ // Label 14: @4243
5686 /* 4243 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4257), // Rule ID 372 //
5687 /* 4248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5688 /* 4251 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5689 /* 4254 */ // MIs[0] dst
5690 /* 4254 */ // No operand predicates
5691 /* 4254 */ // MIs[0] merge_srcs
5692 /* 4254 */ // No operand predicates
5693 /* 4254 */ // Combiner Rule #223: merge_unmerge
5694 /* 4254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5695 /* 4257 */ // Label 237: @4257
5696 /* 4257 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4319),
5697 /* 4262 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5698 /* 4265 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4286), // Rule ID 377 //
5699 /* 4270 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5700 /* 4273 */ // MIs[0] root
5701 /* 4273 */ // No operand predicates
5702 /* 4273 */ // MIs[0] x
5703 /* 4273 */ // No operand predicates
5704 /* 4273 */ // MIs[0] undef
5705 /* 4273 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5706 /* 4277 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5707 /* 4281 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5708 /* 4283 */ // Combiner Rule #228: merge_of_x_and_undef
5709 /* 4283 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5710 /* 4286 */ // Label 239: @4286
5711 /* 4286 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4318), // Rule ID 378 //
5712 /* 4291 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
5713 /* 4294 */ // MIs[0] root
5714 /* 4294 */ // No operand predicates
5715 /* 4294 */ // MIs[0] x
5716 /* 4294 */ // No operand predicates
5717 /* 4294 */ // MIs[0] zero
5718 /* 4294 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5719 /* 4298 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5720 /* 4302 */ // MIs[1] Operand 1
5721 /* 4302 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5722 /* 4313 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5723 /* 4315 */ // Combiner Rule #229: merge_of_x_and_zero
5724 /* 4315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5725 /* 4318 */ // Label 240: @4318
5726 /* 4318 */ GIM_Reject,
5727 /* 4319 */ // Label 238: @4319
5728 /* 4319 */ GIM_Reject,
5729 /* 4320 */ // Label 15: @4320
5730 /* 4320 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4331), // Rule ID 72 //
5731 /* 4325 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5732 /* 4328 */ // Combiner Rule #70: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5733 /* 4328 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5734 /* 4331 */ // Label 241: @4331
5735 /* 4331 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4342), // Rule ID 101 //
5736 /* 4336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
5737 /* 4339 */ // Combiner Rule #82: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5738 /* 4339 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5739 /* 4342 */ // Label 242: @4342
5740 /* 4342 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4353), // Rule ID 139 //
5741 /* 4347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5742 /* 4350 */ // Combiner Rule #99: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5743 /* 4350 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5744 /* 4353 */ // Label 243: @4353
5745 /* 4353 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4384),
5746 /* 4358 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5747 /* 4361 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4372), // Rule ID 369 //
5748 /* 4366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5749 /* 4369 */ // MIs[0] dst
5750 /* 4369 */ // No operand predicates
5751 /* 4369 */ // MIs[0] unused
5752 /* 4369 */ // No operand predicates
5753 /* 4369 */ // Combiner Rule #220: combine_use_vector_truncate
5754 /* 4369 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5755 /* 4372 */ // Label 245: @4372
5756 /* 4372 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4383), // Rule ID 379 //
5757 /* 4377 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5758 /* 4380 */ // MIs[0] dst
5759 /* 4380 */ // No operand predicates
5760 /* 4380 */ // MIs[0] unused
5761 /* 4380 */ // No operand predicates
5762 /* 4380 */ // Combiner Rule #230: combine_build_unmerge
5763 /* 4380 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5764 /* 4383 */ // Label 246: @4383
5765 /* 4383 */ GIM_Reject,
5766 /* 4384 */ // Label 244: @4384
5767 /* 4384 */ GIM_Reject,
5768 /* 4385 */ // Label 16: @4385
5769 /* 4385 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4396), // Rule ID 138 //
5770 /* 4390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5771 /* 4393 */ // Combiner Rule #99: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5772 /* 4393 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5773 /* 4396 */ // Label 247: @4396
5774 /* 4396 */ GIM_Reject,
5775 /* 4397 */ // Label 17: @4397
5776 /* 4397 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4408), // Rule ID 362 //
5777 /* 4402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5778 /* 4405 */ // Combiner Rule #213: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5779 /* 4405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5780 /* 4408 */ // Label 248: @4408
5781 /* 4408 */ GIM_Reject,
5782 /* 4409 */ // Label 18: @4409
5783 /* 4409 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4430), // Rule ID 131 //
5784 /* 4414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5785 /* 4417 */ // MIs[0] dst
5786 /* 4417 */ // No operand predicates
5787 /* 4417 */ // MIs[0] t
5788 /* 4417 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5789 /* 4421 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5790 /* 4425 */ // MIs[1] ptr
5791 /* 4425 */ // No operand predicates
5792 /* 4425 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5793 /* 4427 */ // Combiner Rule #93: i2p_to_p2i
5794 /* 4427 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5795 /* 4430 */ // Label 249: @4430
5796 /* 4430 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4451), // Rule ID 93 //
5797 /* 4435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5798 /* 4438 */ // MIs[0] dst
5799 /* 4438 */ // No operand predicates
5800 /* 4438 */ // MIs[0] __unary_undef_to_undef_match_0.x
5801 /* 4438 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5802 /* 4442 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5803 /* 4446 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5804 /* 4448 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5805 /* 4448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5806 /* 4451 */ // Label 250: @4451
5807 /* 4451 */ GIM_Reject,
5808 /* 4452 */ // Label 19: @4452
5809 /* 4452 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4463), // Rule ID 130 //
5810 /* 4457 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5811 /* 4460 */ // Combiner Rule #92: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5812 /* 4460 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5813 /* 4463 */ // Label 251: @4463
5814 /* 4463 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4484), // Rule ID 94 //
5815 /* 4468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5816 /* 4471 */ // MIs[0] dst
5817 /* 4471 */ // No operand predicates
5818 /* 4471 */ // MIs[0] __unary_undef_to_undef_match_0.x
5819 /* 4471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5820 /* 4475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5821 /* 4479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5822 /* 4481 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5823 /* 4481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5824 /* 4484 */ // Label 252: @4484
5825 /* 4484 */ GIM_Reject,
5826 /* 4485 */ // Label 20: @4485
5827 /* 4485 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4506), // Rule ID 142 //
5828 /* 4490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5829 /* 4493 */ // MIs[0] dst
5830 /* 4493 */ // No operand predicates
5831 /* 4493 */ // MIs[0] src1
5832 /* 4493 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5833 /* 4497 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5834 /* 4501 */ // MIs[1] src0
5835 /* 4501 */ // No operand predicates
5836 /* 4501 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5837 /* 4503 */ // Combiner Rule #102: bitcast_bitcast_fold
5838 /* 4503 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5839 /* 4506 */ // Label 253: @4506
5840 /* 4506 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4527), // Rule ID 91 //
5841 /* 4511 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5842 /* 4514 */ // MIs[0] dst
5843 /* 4514 */ // No operand predicates
5844 /* 4514 */ // MIs[0] __unary_undef_to_undef_match_0.x
5845 /* 4514 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5846 /* 4518 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5847 /* 4522 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5848 /* 4524 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
5849 /* 4524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5850 /* 4527 */ // Label 254: @4527
5851 /* 4527 */ GIM_Reject,
5852 /* 4528 */ // Label 21: @4528
5853 /* 4528 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4557), // Rule ID 21 //
5854 /* 4533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5855 /* 4536 */ // MIs[0] dst
5856 /* 4536 */ // No operand predicates
5857 /* 4536 */ // MIs[0] src
5858 /* 4536 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5859 /* 4540 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
5860 /* 4544 */ // MIs[1] __idempotent_prop_match_0.x
5861 /* 4544 */ // No operand predicates
5862 /* 4544 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5863 /* 4549 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5864 /* 4551 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[0]]
5865 /* 4551 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5866 /* 4556 */ GIR_EraseRootFromParent_Done,
5867 /* 4557 */ // Label 255: @4557
5868 /* 4557 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4580), // Rule ID 46 //
5869 /* 4562 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5870 /* 4565 */ // MIs[0] root
5871 /* 4565 */ // No operand predicates
5872 /* 4565 */ // MIs[0] src
5873 /* 4565 */ // No operand predicates
5874 /* 4565 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5875 /* 4569 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5876 /* 4574 */ // Combiner Rule #44: freeze_of_non_undef_non_poison
5877 /* 4574 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5878 /* 4579 */ GIR_EraseRootFromParent_Done,
5879 /* 4580 */ // Label 256: @4580
5880 /* 4580 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4591), // Rule ID 47 //
5881 /* 4585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5882 /* 4588 */ // MIs[0] dst
5883 /* 4588 */ // No operand predicates
5884 /* 4588 */ // MIs[0] src
5885 /* 4588 */ // No operand predicates
5886 /* 4588 */ // Combiner Rule #45: push_freeze_to_prevent_poison_from_propagating
5887 /* 4588 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
5888 /* 4591 */ // Label 257: @4591
5889 /* 4591 */ GIM_Reject,
5890 /* 4592 */ // Label 22: @4592
5891 /* 4592 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4613), // Rule ID 191 //
5892 /* 4597 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
5893 /* 4600 */ // MIs[0] dst
5894 /* 4600 */ // No operand predicates
5895 /* 4600 */ // MIs[0] src0
5896 /* 4600 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5897 /* 4604 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5898 /* 4608 */ // MIs[1] cst
5899 /* 4608 */ // No operand predicates
5900 /* 4608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5901 /* 4610 */ // Combiner Rule #147: constant_fold_intrinsic_trunc
5902 /* 4610 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5903 /* 4613 */ // Label 258: @4613
5904 /* 4613 */ GIM_Reject,
5905 /* 4614 */ // Label 23: @4614
5906 /* 4614 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4635), // Rule ID 192 //
5907 /* 4619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
5908 /* 4622 */ // MIs[0] dst
5909 /* 4622 */ // No operand predicates
5910 /* 4622 */ // MIs[0] src0
5911 /* 4622 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5912 /* 4626 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5913 /* 4630 */ // MIs[1] cst
5914 /* 4630 */ // No operand predicates
5915 /* 4630 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5916 /* 4632 */ // Combiner Rule #148: constant_fold_intrinsic_round
5917 /* 4632 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5918 /* 4635 */ // Label 259: @4635
5919 /* 4635 */ GIM_Reject,
5920 /* 4636 */ // Label 24: @4636
5921 /* 4636 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4657), // Rule ID 193 //
5922 /* 4641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
5923 /* 4644 */ // MIs[0] dst
5924 /* 4644 */ // No operand predicates
5925 /* 4644 */ // MIs[0] src0
5926 /* 4644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5927 /* 4648 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5928 /* 4652 */ // MIs[1] cst
5929 /* 4652 */ // No operand predicates
5930 /* 4652 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5931 /* 4654 */ // Combiner Rule #149: constant_fold_intrinsic_roundeven
5932 /* 4654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5933 /* 4657 */ // Label 260: @4657
5934 /* 4657 */ GIM_Reject,
5935 /* 4658 */ // Label 25: @4658
5936 /* 4658 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4669), // Rule ID 73 //
5937 /* 4663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5938 /* 4666 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_LOAD'
5939 /* 4666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5940 /* 4669 */ // Label 261: @4669
5941 /* 4669 */ GIM_Reject,
5942 /* 4670 */ // Label 26: @4670
5943 /* 4670 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4681), // Rule ID 74 //
5944 /* 4675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5945 /* 4678 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_SEXTLOAD'
5946 /* 4678 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5947 /* 4681 */ // Label 262: @4681
5948 /* 4681 */ GIM_Reject,
5949 /* 4682 */ // Label 27: @4682
5950 /* 4682 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4693), // Rule ID 75 //
5951 /* 4687 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5952 /* 4690 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
5953 /* 4690 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5954 /* 4693 */ // Label 263: @4693
5955 /* 4693 */ GIM_Reject,
5956 /* 4694 */ // Label 28: @4694
5957 /* 4694 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4705), // Rule ID 103 //
5958 /* 4699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5959 /* 4702 */ // Combiner Rule #84: erase_undef_store; wip_match_opcode 'G_STORE'
5960 /* 4702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
5961 /* 4705 */ // Label 264: @4705
5962 /* 4705 */ GIM_Reject,
5963 /* 4706 */ // Label 29: @4706
5964 /* 4706 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4717), // Rule ID 132 //
5965 /* 4711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5966 /* 4714 */ // Combiner Rule #94: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
5967 /* 4714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
5968 /* 4717 */ // Label 265: @4717
5969 /* 4717 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4728), // Rule ID 276 //
5970 /* 4722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5971 /* 4725 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
5972 /* 4725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5973 /* 4728 */ // Label 266: @4728
5974 /* 4728 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4749), // Rule ID 60 //
5975 /* 4733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
5976 /* 4736 */ // MIs[0] root
5977 /* 4736 */ // No operand predicates
5978 /* 4736 */ // MIs[0] select
5979 /* 4736 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5980 /* 4740 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5981 /* 4744 */ // MIs[1] cond
5982 /* 4744 */ // No operand predicates
5983 /* 4744 */ // MIs[1] true
5984 /* 4744 */ // No operand predicates
5985 /* 4744 */ // MIs[1] false
5986 /* 4744 */ // No operand predicates
5987 /* 4744 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5988 /* 4746 */ // Combiner Rule #58: select_of_anyext
5989 /* 4746 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5990 /* 4749 */ // Label 267: @4749
5991 /* 4749 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4770), // Rule ID 55 //
5992 /* 4754 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
5993 /* 4757 */ // MIs[0] root
5994 /* 4757 */ // No operand predicates
5995 /* 4757 */ // MIs[0] second
5996 /* 4757 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5997 /* 4761 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5998 /* 4765 */ // MIs[1] src
5999 /* 4765 */ // No operand predicates
6000 /* 4765 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6001 /* 4767 */ // Combiner Rule #53: anyext_of_anyext
6002 /* 4767 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6003 /* 4770 */ // Label 268: @4770
6004 /* 4770 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4791), // Rule ID 57 //
6005 /* 4775 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
6006 /* 4778 */ // MIs[0] root
6007 /* 4778 */ // No operand predicates
6008 /* 4778 */ // MIs[0] second
6009 /* 4778 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6010 /* 4782 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6011 /* 4786 */ // MIs[1] src
6012 /* 4786 */ // No operand predicates
6013 /* 4786 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6014 /* 4788 */ // Combiner Rule #55: anyext_of_sext
6015 /* 4788 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6016 /* 4791 */ // Label 269: @4791
6017 /* 4791 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4812), // Rule ID 56 //
6018 /* 4796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
6019 /* 4799 */ // MIs[0] root
6020 /* 4799 */ // No operand predicates
6021 /* 4799 */ // MIs[0] second
6022 /* 4799 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6023 /* 4803 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6024 /* 4807 */ // MIs[1] src
6025 /* 4807 */ // No operand predicates
6026 /* 4807 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6027 /* 4809 */ // Combiner Rule #54: anyext_of_zext
6028 /* 4809 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6029 /* 4812 */ // Label 270: @4812
6030 /* 4812 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4833), // Rule ID 92 //
6031 /* 4817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6032 /* 4820 */ // MIs[0] dst
6033 /* 4820 */ // No operand predicates
6034 /* 4820 */ // MIs[0] __unary_undef_to_undef_match_0.x
6035 /* 4820 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6036 /* 4824 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6037 /* 4828 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6038 /* 4830 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
6039 /* 4830 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6040 /* 4833 */ // Label 271: @4833
6041 /* 4833 */ GIM_Reject,
6042 /* 4834 */ // Label 30: @4834
6043 /* 4834 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4845), // Rule ID 140 //
6044 /* 4839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
6045 /* 4842 */ // Combiner Rule #100: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
6046 /* 4842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
6047 /* 4845 */ // Label 272: @4845
6048 /* 4845 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4856), // Rule ID 141 //
6049 /* 4850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
6050 /* 4853 */ // Combiner Rule #101: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
6051 /* 4853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
6052 /* 4856 */ // Label 273: @4856
6053 /* 4856 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4867), // Rule ID 180 //
6054 /* 4861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
6055 /* 4864 */ // Combiner Rule #136: trunc_shift; wip_match_opcode 'G_TRUNC'
6056 /* 4864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
6057 /* 4867 */ // Label 274: @4867
6058 /* 4867 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4888), // Rule ID 61 //
6059 /* 4872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
6060 /* 4875 */ // MIs[0] root
6061 /* 4875 */ // No operand predicates
6062 /* 4875 */ // MIs[0] select
6063 /* 4875 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6064 /* 4879 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6065 /* 4883 */ // MIs[1] cond
6066 /* 4883 */ // No operand predicates
6067 /* 4883 */ // MIs[1] true
6068 /* 4883 */ // No operand predicates
6069 /* 4883 */ // MIs[1] false
6070 /* 4883 */ // No operand predicates
6071 /* 4883 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6072 /* 4885 */ // Combiner Rule #59: select_of_truncate
6073 /* 4885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6074 /* 4888 */ // Label 275: @4888
6075 /* 4888 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4917), // Rule ID 63 //
6076 /* 4893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6077 /* 4896 */ // MIs[0] root
6078 /* 4896 */ // No operand predicates
6079 /* 4896 */ // MIs[0] binop
6080 /* 4896 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6081 /* 4900 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6082 /* 4904 */ // MIs[1] x
6083 /* 4904 */ // No operand predicates
6084 /* 4904 */ // MIs[1] const
6085 /* 4904 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6086 /* 4908 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6087 /* 4912 */ // MIs[2] imm
6088 /* 4912 */ // No operand predicates
6089 /* 4912 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6090 /* 4914 */ // Combiner Rule #61: narrow_binop_add
6091 /* 4914 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6092 /* 4917 */ // Label 276: @4917
6093 /* 4917 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4946), // Rule ID 66 //
6094 /* 4922 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6095 /* 4925 */ // MIs[0] root
6096 /* 4925 */ // No operand predicates
6097 /* 4925 */ // MIs[0] binop
6098 /* 4925 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6099 /* 4929 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6100 /* 4933 */ // MIs[1] x
6101 /* 4933 */ // No operand predicates
6102 /* 4933 */ // MIs[1] const
6103 /* 4933 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6104 /* 4937 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6105 /* 4941 */ // MIs[2] imm
6106 /* 4941 */ // No operand predicates
6107 /* 4941 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6108 /* 4943 */ // Combiner Rule #64: narrow_binop_and
6109 /* 4943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6110 /* 4946 */ // Label 277: @4946
6111 /* 4946 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4975), // Rule ID 65 //
6112 /* 4951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6113 /* 4954 */ // MIs[0] root
6114 /* 4954 */ // No operand predicates
6115 /* 4954 */ // MIs[0] binop
6116 /* 4954 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6117 /* 4958 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
6118 /* 4962 */ // MIs[1] x
6119 /* 4962 */ // No operand predicates
6120 /* 4962 */ // MIs[1] const
6121 /* 4962 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6122 /* 4966 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6123 /* 4970 */ // MIs[2] imm
6124 /* 4970 */ // No operand predicates
6125 /* 4970 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6126 /* 4972 */ // Combiner Rule #63: narrow_binop_mul
6127 /* 4972 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6128 /* 4975 */ // Label 278: @4975
6129 /* 4975 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5004), // Rule ID 67 //
6130 /* 4980 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6131 /* 4983 */ // MIs[0] root
6132 /* 4983 */ // No operand predicates
6133 /* 4983 */ // MIs[0] binop
6134 /* 4983 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6135 /* 4987 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6136 /* 4991 */ // MIs[1] x
6137 /* 4991 */ // No operand predicates
6138 /* 4991 */ // MIs[1] const
6139 /* 4991 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6140 /* 4995 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6141 /* 4999 */ // MIs[2] imm
6142 /* 4999 */ // No operand predicates
6143 /* 4999 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6144 /* 5001 */ // Combiner Rule #65: narrow_binop_or
6145 /* 5001 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6146 /* 5004 */ // Label 279: @5004
6147 /* 5004 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5033), // Rule ID 64 //
6148 /* 5009 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
6149 /* 5012 */ // MIs[0] root
6150 /* 5012 */ // No operand predicates
6151 /* 5012 */ // MIs[0] binop
6152 /* 5012 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6153 /* 5016 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6154 /* 5020 */ // MIs[1] x
6155 /* 5020 */ // No operand predicates
6156 /* 5020 */ // MIs[1] const
6157 /* 5020 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6158 /* 5024 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6159 /* 5028 */ // MIs[2] imm
6160 /* 5028 */ // No operand predicates
6161 /* 5028 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6162 /* 5030 */ // Combiner Rule #62: narrow_binop_sub
6163 /* 5030 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6164 /* 5033 */ // Label 280: @5033
6165 /* 5033 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5065), // Rule ID 386 //
6166 /* 5038 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6167 /* 5041 */ // MIs[0] dst
6168 /* 5041 */ // No operand predicates
6169 /* 5041 */ // MIs[0] min
6170 /* 5041 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6171 /* 5045 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6172 /* 5049 */ // MIs[1] x
6173 /* 5049 */ // No operand predicates
6174 /* 5049 */ // MIs[1] y
6175 /* 5049 */ // No operand predicates
6176 /* 5049 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6177 /* 5053 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6178 /* 5055 */ // Combiner Rule #235: trunc_usatu
6179 /* 5055 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6180 /* 5058 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6181 /* 5060 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6182 /* 5064 */ GIR_EraseRootFromParent_Done,
6183 /* 5065 */ // Label 281: @5065
6184 /* 5065 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5094), // Rule ID 68 //
6185 /* 5070 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6186 /* 5073 */ // MIs[0] root
6187 /* 5073 */ // No operand predicates
6188 /* 5073 */ // MIs[0] binop
6189 /* 5073 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6190 /* 5077 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6191 /* 5081 */ // MIs[1] x
6192 /* 5081 */ // No operand predicates
6193 /* 5081 */ // MIs[1] const
6194 /* 5081 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6195 /* 5085 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6196 /* 5089 */ // MIs[2] imm
6197 /* 5089 */ // No operand predicates
6198 /* 5089 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6199 /* 5091 */ // Combiner Rule #66: narrow_binop_xor
6200 /* 5091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6201 /* 5094 */ // Label 282: @5094
6202 /* 5094 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5115), // Rule ID 50 //
6203 /* 5099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6204 /* 5102 */ // MIs[0] root
6205 /* 5102 */ // No operand predicates
6206 /* 5102 */ // MIs[0] ext
6207 /* 5102 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6208 /* 5106 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6209 /* 5110 */ // MIs[1] src
6210 /* 5110 */ // No operand predicates
6211 /* 5110 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6212 /* 5112 */ // Combiner Rule #48: truncate_of_anyext
6213 /* 5112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6214 /* 5115 */ // Label 283: @5115
6215 /* 5115 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5139), // Rule ID 62 //
6216 /* 5120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
6217 /* 5123 */ // MIs[0] root
6218 /* 5123 */ // No operand predicates
6219 /* 5123 */ // MIs[0] bv
6220 /* 5123 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6221 /* 5127 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6222 /* 5131 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6223 /* 5134 */ // MIs[1] unused
6224 /* 5134 */ // No operand predicates
6225 /* 5134 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6226 /* 5136 */ // Combiner Rule #60: buildvector_of_truncate
6227 /* 5136 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6228 /* 5139 */ // Label 284: @5139
6229 /* 5139 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5160), // Rule ID 49 //
6230 /* 5144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6231 /* 5147 */ // MIs[0] root
6232 /* 5147 */ // No operand predicates
6233 /* 5147 */ // MIs[0] ext
6234 /* 5147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6235 /* 5151 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6236 /* 5155 */ // MIs[1] src
6237 /* 5155 */ // No operand predicates
6238 /* 5155 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6239 /* 5157 */ // Combiner Rule #47: truncate_of_sext
6240 /* 5157 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6241 /* 5160 */ // Label 285: @5160
6242 /* 5160 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5181), // Rule ID 48 //
6243 /* 5165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
6244 /* 5168 */ // MIs[0] root
6245 /* 5168 */ // No operand predicates
6246 /* 5168 */ // MIs[0] ext
6247 /* 5168 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6248 /* 5172 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6249 /* 5176 */ // MIs[1] src
6250 /* 5176 */ // No operand predicates
6251 /* 5176 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6252 /* 5178 */ // Combiner Rule #46: truncate_of_zext
6253 /* 5178 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6254 /* 5181 */ // Label 286: @5181
6255 /* 5181 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5202), // Rule ID 90 //
6256 /* 5186 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6257 /* 5189 */ // MIs[0] dst
6258 /* 5189 */ // No operand predicates
6259 /* 5189 */ // MIs[0] __unary_undef_to_undef_match_0.x
6260 /* 5189 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6261 /* 5193 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6262 /* 5197 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6263 /* 5199 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6264 /* 5199 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6265 /* 5202 */ // Label 287: @5202
6266 /* 5202 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5223), // Rule ID 69 //
6267 /* 5207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6268 /* 5210 */ // MIs[0] root
6269 /* 5210 */ // No operand predicates
6270 /* 5210 */ // MIs[0] int
6271 /* 5210 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6272 /* 5214 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6273 /* 5218 */ // MIs[1] imm
6274 /* 5218 */ // No operand predicates
6275 /* 5218 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6276 /* 5220 */ // Combiner Rule #67: integer_of_truncate
6277 /* 5220 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6278 /* 5223 */ // Label 288: @5223
6279 /* 5223 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5234), // Rule ID 384 //
6280 /* 5228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6281 /* 5231 */ // MIs[0] dst
6282 /* 5231 */ // No operand predicates
6283 /* 5231 */ // MIs[0] src
6284 /* 5231 */ // No operand predicates
6285 /* 5231 */ // Combiner Rule #233: trunc_ssats
6286 /* 5231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6287 /* 5234 */ // Label 289: @5234
6288 /* 5234 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5245), // Rule ID 385 //
6289 /* 5239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6290 /* 5242 */ // MIs[0] dst
6291 /* 5242 */ // No operand predicates
6292 /* 5242 */ // MIs[0] src
6293 /* 5242 */ // No operand predicates
6294 /* 5242 */ // Combiner Rule #234: trunc_ssatu
6295 /* 5242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
6296 /* 5245 */ // Label 290: @5245
6297 /* 5245 */ GIM_Reject,
6298 /* 5246 */ // Label 31: @5246
6299 /* 5246 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5278), // Rule ID 387 //
6300 /* 5251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6301 /* 5254 */ // MIs[0] dst
6302 /* 5254 */ // No operand predicates
6303 /* 5254 */ // MIs[0] src
6304 /* 5254 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6305 /* 5258 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6306 /* 5262 */ // MIs[1] x
6307 /* 5262 */ // No operand predicates
6308 /* 5262 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6309 /* 5266 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6310 /* 5268 */ // Combiner Rule #236: truncusatu_to_fptouisat
6311 /* 5268 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6312 /* 5271 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6313 /* 5273 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6314 /* 5277 */ GIR_EraseRootFromParent_Done,
6315 /* 5278 */ // Label 291: @5278
6316 /* 5278 */ GIM_Reject,
6317 /* 5279 */ // Label 32: @5279
6318 /* 5279 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5290), // Rule ID 275 //
6319 /* 5284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6320 /* 5287 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6321 /* 5287 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6322 /* 5290 */ // Label 292: @5290
6323 /* 5290 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5311), // Rule ID 54 //
6324 /* 5295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
6325 /* 5298 */ // MIs[0] root
6326 /* 5298 */ // No operand predicates
6327 /* 5298 */ // MIs[0] second
6328 /* 5298 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6329 /* 5302 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6330 /* 5306 */ // MIs[1] src
6331 /* 5306 */ // No operand predicates
6332 /* 5306 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6333 /* 5308 */ // Combiner Rule #52: sext_of_anyext
6334 /* 5308 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6335 /* 5311 */ // Label 293: @5311
6336 /* 5311 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5332), // Rule ID 53 //
6337 /* 5316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6338 /* 5319 */ // MIs[0] root
6339 /* 5319 */ // No operand predicates
6340 /* 5319 */ // MIs[0] second
6341 /* 5319 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6342 /* 5323 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6343 /* 5327 */ // MIs[1] src
6344 /* 5327 */ // No operand predicates
6345 /* 5327 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6346 /* 5329 */ // Combiner Rule #51: sext_of_sext
6347 /* 5329 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6348 /* 5332 */ // Label 294: @5332
6349 /* 5332 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5353), // Rule ID 363 //
6350 /* 5337 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
6351 /* 5340 */ // MIs[0] root
6352 /* 5340 */ // No operand predicates
6353 /* 5340 */ // MIs[0] src
6354 /* 5340 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6355 /* 5344 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6356 /* 5348 */ // MIs[1] x
6357 /* 5348 */ // No operand predicates
6358 /* 5348 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6359 /* 5350 */ // Combiner Rule #214: sext_trunc
6360 /* 5350 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6361 /* 5353 */ // Label 295: @5353
6362 /* 5353 */ GIM_Reject,
6363 /* 5354 */ // Label 33: @5354
6364 /* 5354 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5365), // Rule ID 167 //
6365 /* 5359 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6366 /* 5362 */ // Combiner Rule #123: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6367 /* 5362 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6368 /* 5365 */ // Label 296: @5365
6369 /* 5365 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5376), // Rule ID 175 //
6370 /* 5370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
6371 /* 5373 */ // Combiner Rule #131: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6372 /* 5373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6373 /* 5376 */ // Label 297: @5376
6374 /* 5376 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5387), // Rule ID 244 //
6375 /* 5381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6376 /* 5384 */ // Combiner Rule #177: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6377 /* 5384 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6378 /* 5387 */ // Label 298: @5387
6379 /* 5387 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5408), // Rule ID 58 //
6380 /* 5392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6381 /* 5395 */ // MIs[0] dst
6382 /* 5395 */ // No operand predicates
6383 /* 5395 */ // MIs[0] x
6384 /* 5395 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6385 /* 5399 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6386 /* 5403 */ // MIs[1] src
6387 /* 5403 */ // No operand predicates
6388 /* 5403 */ // MIs[1] a
6389 /* 5403 */ // No operand predicates
6390 /* 5403 */ // MIs[0] b
6391 /* 5403 */ // No operand predicates
6392 /* 5403 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6393 /* 5405 */ // Combiner Rule #56: sext_inreg_of_sext_inreg
6394 /* 5405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6395 /* 5408 */ // Label 299: @5408
6396 /* 5408 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5419), // Rule ID 179 //
6397 /* 5413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
6398 /* 5416 */ // MIs[0] dst
6399 /* 5416 */ // No operand predicates
6400 /* 5416 */ // MIs[0] src
6401 /* 5416 */ // No operand predicates
6402 /* 5416 */ // MIs[0] imm
6403 /* 5416 */ // No operand predicates
6404 /* 5416 */ // Combiner Rule #135: sext_inreg_to_zext_inreg
6405 /* 5416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6406 /* 5419 */ // Label 300: @5419
6407 /* 5419 */ GIM_Reject,
6408 /* 5420 */ // Label 34: @5420
6409 /* 5420 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5431), // Rule ID 178 //
6410 /* 5425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
6411 /* 5428 */ // Combiner Rule #134: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6412 /* 5428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6413 /* 5431 */ // Label 301: @5431
6414 /* 5431 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5442), // Rule ID 274 //
6415 /* 5436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6416 /* 5439 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6417 /* 5439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6418 /* 5442 */ // Label 302: @5442
6419 /* 5442 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5463), // Rule ID 59 //
6420 /* 5447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6421 /* 5450 */ // MIs[0] root
6422 /* 5450 */ // No operand predicates
6423 /* 5450 */ // MIs[0] select
6424 /* 5450 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6425 /* 5454 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6426 /* 5458 */ // MIs[1] cond
6427 /* 5458 */ // No operand predicates
6428 /* 5458 */ // MIs[1] true
6429 /* 5458 */ // No operand predicates
6430 /* 5458 */ // MIs[1] false
6431 /* 5458 */ // No operand predicates
6432 /* 5458 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6433 /* 5460 */ // Combiner Rule #57: select_of_zext
6434 /* 5460 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6435 /* 5463 */ // Label 303: @5463
6436 /* 5463 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5484), // Rule ID 52 //
6437 /* 5468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6438 /* 5471 */ // MIs[0] root
6439 /* 5471 */ // No operand predicates
6440 /* 5471 */ // MIs[0] second
6441 /* 5471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6442 /* 5475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6443 /* 5479 */ // MIs[1] src
6444 /* 5479 */ // No operand predicates
6445 /* 5479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6446 /* 5481 */ // Combiner Rule #50: zext_of_anyext
6447 /* 5481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6448 /* 5484 */ // Label 304: @5484
6449 /* 5484 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5511), // Rule ID 364 //
6450 /* 5489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6451 /* 5492 */ // MIs[0] root
6452 /* 5492 */ // No operand predicates
6453 /* 5492 */ // MIs[0] src
6454 /* 5492 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6455 /* 5496 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6456 /* 5500 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6457 /* 5506 */ // MIs[1] x
6458 /* 5506 */ // No operand predicates
6459 /* 5506 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6460 /* 5508 */ // Combiner Rule #215: zext_trunc
6461 /* 5508 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6462 /* 5511 */ // Label 305: @5511
6463 /* 5511 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5532), // Rule ID 51 //
6464 /* 5516 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6465 /* 5519 */ // MIs[0] root
6466 /* 5519 */ // No operand predicates
6467 /* 5519 */ // MIs[0] second
6468 /* 5519 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6469 /* 5523 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6470 /* 5527 */ // MIs[1] src
6471 /* 5527 */ // No operand predicates
6472 /* 5527 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6473 /* 5529 */ // Combiner Rule #49: zext_of_zext
6474 /* 5529 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6475 /* 5532 */ // Label 306: @5532
6476 /* 5532 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5549), // Rule ID 365 //
6477 /* 5537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
6478 /* 5540 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6479 /* 5546 */ // MIs[0] root
6480 /* 5546 */ // No operand predicates
6481 /* 5546 */ // MIs[0] x
6482 /* 5546 */ // No operand predicates
6483 /* 5546 */ // Combiner Rule #216: nneg_zext
6484 /* 5546 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6485 /* 5549 */ // Label 307: @5549
6486 /* 5549 */ GIM_Reject,
6487 /* 5550 */ // Label 35: @5550
6488 /* 5550 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5561), // Rule ID 83 //
6489 /* 5555 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6490 /* 5558 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6491 /* 5558 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6492 /* 5561 */ // Label 308: @5561
6493 /* 5561 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5572), // Rule ID 86 //
6494 /* 5566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6495 /* 5569 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6496 /* 5569 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6497 /* 5572 */ // Label 309: @5572
6498 /* 5572 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5583), // Rule ID 215 //
6499 /* 5577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6500 /* 5580 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_SHL'
6501 /* 5580 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6502 /* 5583 */ // Label 310: @5583
6503 /* 5583 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5594), // Rule ID 220 //
6504 /* 5588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6505 /* 5591 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6506 /* 5591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6507 /* 5594 */ // Label 311: @5594
6508 /* 5594 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5605), // Rule ID 243 //
6509 /* 5599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
6510 /* 5602 */ // Combiner Rule #176: commute_shift; wip_match_opcode 'G_SHL'
6511 /* 5602 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6512 /* 5605 */ // Label 312: @5605
6513 /* 5605 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5616), // Rule ID 257 //
6514 /* 5610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6515 /* 5613 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SHL'
6516 /* 5613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6517 /* 5616 */ // Label 313: @5616
6518 /* 5616 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5627), // Rule ID 306 //
6519 /* 5621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6520 /* 5624 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SHL'
6521 /* 5624 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6522 /* 5627 */ // Label 314: @5627
6523 /* 5627 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5662), // Rule ID 44 //
6524 /* 5632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
6525 /* 5635 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6526 /* 5641 */ // MIs[0] root
6527 /* 5641 */ // No operand predicates
6528 /* 5641 */ // MIs[0] left
6529 /* 5641 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6530 /* 5645 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6531 /* 5649 */ // MIs[1] imm
6532 /* 5649 */ // No operand predicates
6533 /* 5649 */ // MIs[0] x
6534 /* 5649 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6535 /* 5653 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6536 /* 5657 */ // MIs[2] imm1
6537 /* 5657 */ // No operand predicates
6538 /* 5657 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6539 /* 5659 */ // Combiner Rule #42: shl_of_vscale
6540 /* 5659 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6541 /* 5662 */ // Label 315: @5662
6542 /* 5662 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5702), // Rule ID 121 //
6543 /* 5667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6544 /* 5670 */ // MIs[0] dst
6545 /* 5670 */ // No operand predicates
6546 /* 5670 */ // MIs[0] zero
6547 /* 5670 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6548 /* 5674 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6549 /* 5678 */ // MIs[1] Operand 1
6550 /* 5678 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6551 /* 5689 */ // MIs[0] rhs
6552 /* 5689 */ // No operand predicates
6553 /* 5689 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6554 /* 5694 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6555 /* 5696 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6556 /* 5696 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6557 /* 5701 */ GIR_EraseRootFromParent_Done,
6558 /* 5702 */ // Label 316: @5702
6559 /* 5702 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5725), // Rule ID 111 //
6560 /* 5707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6561 /* 5710 */ // MIs[0] dst
6562 /* 5710 */ // No operand predicates
6563 /* 5710 */ // MIs[0] lhs
6564 /* 5710 */ // No operand predicates
6565 /* 5710 */ // MIs[0] Operand 2
6566 /* 5710 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6567 /* 5714 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6568 /* 5719 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[4]]
6569 /* 5719 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6570 /* 5724 */ GIR_EraseRootFromParent_Done,
6571 /* 5725 */ // Label 317: @5725
6572 /* 5725 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5736), // Rule ID 152 //
6573 /* 5730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6574 /* 5733 */ // MIs[0] root
6575 /* 5733 */ // No operand predicates
6576 /* 5733 */ // MIs[0] mi.shifted
6577 /* 5733 */ // No operand predicates
6578 /* 5733 */ // MIs[0] mi.amt
6579 /* 5733 */ // No operand predicates
6580 /* 5733 */ // Combiner Rule #110: shifts_too_big @ [mi[0]]
6581 /* 5733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6582 /* 5736 */ // Label 318: @5736
6583 /* 5736 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5747), // Rule ID 168 //
6584 /* 5741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6585 /* 5744 */ // MIs[0] dst
6586 /* 5744 */ // No operand predicates
6587 /* 5744 */ // MIs[0] src0
6588 /* 5744 */ // No operand predicates
6589 /* 5744 */ // MIs[0] src1
6590 /* 5744 */ // No operand predicates
6591 /* 5744 */ // Combiner Rule #124: reduce_shl_of_extend
6592 /* 5744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6593 /* 5747 */ // Label 319: @5747
6594 /* 5747 */ GIM_Reject,
6595 /* 5748 */ // Label 36: @5748
6596 /* 5748 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5759), // Rule ID 88 //
6597 /* 5753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6598 /* 5756 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6599 /* 5756 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6600 /* 5759 */ // Label 320: @5759
6601 /* 5759 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5770), // Rule ID 217 //
6602 /* 5764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6603 /* 5767 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_LSHR'
6604 /* 5767 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6605 /* 5770 */ // Label 321: @5770
6606 /* 5770 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5781), // Rule ID 222 //
6607 /* 5775 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6608 /* 5778 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6609 /* 5778 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6610 /* 5781 */ // Label 322: @5781
6611 /* 5781 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5792), // Rule ID 247 //
6612 /* 5786 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6613 /* 5789 */ // Combiner Rule #179: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6614 /* 5789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6615 /* 5792 */ // Label 323: @5792
6616 /* 5792 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5803), // Rule ID 249 //
6617 /* 5797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6618 /* 5800 */ // Combiner Rule #180: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6619 /* 5800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6620 /* 5803 */ // Label 324: @5803
6621 /* 5803 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5814), // Rule ID 254 //
6622 /* 5808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6623 /* 5811 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_LSHR'
6624 /* 5811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6625 /* 5814 */ // Label 325: @5814
6626 /* 5814 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5825), // Rule ID 304 //
6627 /* 5819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6628 /* 5822 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6629 /* 5822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6630 /* 5825 */ // Label 326: @5825
6631 /* 5825 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5854), // Rule ID 388 //
6632 /* 5830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6633 /* 5833 */ // MIs[0] dst
6634 /* 5833 */ // No operand predicates
6635 /* 5833 */ // MIs[0] d2
6636 /* 5833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6637 /* 5837 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6638 /* 5841 */ // MIs[1] d1
6639 /* 5841 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6640 /* 5845 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6641 /* 5849 */ // MIs[2] x
6642 /* 5849 */ // No operand predicates
6643 /* 5849 */ // MIs[2] y
6644 /* 5849 */ // No operand predicates
6645 /* 5849 */ // MIs[0] z
6646 /* 5849 */ // No operand predicates
6647 /* 5849 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6648 /* 5851 */ // Combiner Rule #237: lshr_of_trunc_of_lshr
6649 /* 5851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6650 /* 5854 */ // Label 327: @5854
6651 /* 5854 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5894), // Rule ID 122 //
6652 /* 5859 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6653 /* 5862 */ // MIs[0] dst
6654 /* 5862 */ // No operand predicates
6655 /* 5862 */ // MIs[0] zero
6656 /* 5862 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6657 /* 5866 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6658 /* 5870 */ // MIs[1] Operand 1
6659 /* 5870 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6660 /* 5881 */ // MIs[0] rhs
6661 /* 5881 */ // No operand predicates
6662 /* 5881 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6663 /* 5886 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6664 /* 5888 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6665 /* 5888 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6666 /* 5893 */ GIR_EraseRootFromParent_Done,
6667 /* 5894 */ // Label 328: @5894
6668 /* 5894 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(5917), // Rule ID 113 //
6669 /* 5899 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6670 /* 5902 */ // MIs[0] dst
6671 /* 5902 */ // No operand predicates
6672 /* 5902 */ // MIs[0] lhs
6673 /* 5902 */ // No operand predicates
6674 /* 5902 */ // MIs[0] Operand 2
6675 /* 5902 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6676 /* 5906 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6677 /* 5911 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[6]]
6678 /* 5911 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6679 /* 5916 */ GIR_EraseRootFromParent_Done,
6680 /* 5917 */ // Label 329: @5917
6681 /* 5917 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(5928), // Rule ID 154 //
6682 /* 5922 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6683 /* 5925 */ // MIs[0] root
6684 /* 5925 */ // No operand predicates
6685 /* 5925 */ // MIs[0] mi.shifted
6686 /* 5925 */ // No operand predicates
6687 /* 5925 */ // MIs[0] mi.amt
6688 /* 5925 */ // No operand predicates
6689 /* 5925 */ // Combiner Rule #110: shifts_too_big @ [mi[2]]
6690 /* 5925 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6691 /* 5928 */ // Label 330: @5928
6692 /* 5928 */ GIM_Reject,
6693 /* 5929 */ // Label 37: @5929
6694 /* 5929 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(5940), // Rule ID 87 //
6695 /* 5934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6696 /* 5937 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6697 /* 5937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6698 /* 5940 */ // Label 331: @5940
6699 /* 5940 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(5951), // Rule ID 165 //
6700 /* 5945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
6701 /* 5948 */ // Combiner Rule #121: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6702 /* 5948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6703 /* 5951 */ // Label 332: @5951
6704 /* 5951 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(5962), // Rule ID 216 //
6705 /* 5956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6706 /* 5959 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_ASHR'
6707 /* 5959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6708 /* 5962 */ // Label 333: @5962
6709 /* 5962 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(5973), // Rule ID 221 //
6710 /* 5967 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6711 /* 5970 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6712 /* 5970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6713 /* 5973 */ // Label 334: @5973
6714 /* 5973 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(5984), // Rule ID 246 //
6715 /* 5978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6716 /* 5981 */ // Combiner Rule #179: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6717 /* 5981 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6718 /* 5984 */ // Label 335: @5984
6719 /* 5984 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(5995), // Rule ID 248 //
6720 /* 5989 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6721 /* 5992 */ // Combiner Rule #180: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6722 /* 5992 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6723 /* 5995 */ // Label 336: @5995
6724 /* 5995 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6006), // Rule ID 253 //
6725 /* 6000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6726 /* 6003 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_ASHR'
6727 /* 6003 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6728 /* 6006 */ // Label 337: @6006
6729 /* 6006 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6017), // Rule ID 305 //
6730 /* 6011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6731 /* 6014 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6732 /* 6014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6733 /* 6017 */ // Label 338: @6017
6734 /* 6017 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6057), // Rule ID 123 //
6735 /* 6022 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6736 /* 6025 */ // MIs[0] dst
6737 /* 6025 */ // No operand predicates
6738 /* 6025 */ // MIs[0] zero
6739 /* 6025 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6740 /* 6029 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6741 /* 6033 */ // MIs[1] Operand 1
6742 /* 6033 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6743 /* 6044 */ // MIs[0] rhs
6744 /* 6044 */ // No operand predicates
6745 /* 6044 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6746 /* 6049 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6747 /* 6051 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6748 /* 6051 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6749 /* 6056 */ GIR_EraseRootFromParent_Done,
6750 /* 6057 */ // Label 339: @6057
6751 /* 6057 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6080), // Rule ID 112 //
6752 /* 6062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6753 /* 6065 */ // MIs[0] dst
6754 /* 6065 */ // No operand predicates
6755 /* 6065 */ // MIs[0] lhs
6756 /* 6065 */ // No operand predicates
6757 /* 6065 */ // MIs[0] Operand 2
6758 /* 6065 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6759 /* 6069 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6760 /* 6074 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[5]]
6761 /* 6074 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6762 /* 6079 */ GIR_EraseRootFromParent_Done,
6763 /* 6080 */ // Label 340: @6080
6764 /* 6080 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6091), // Rule ID 153 //
6765 /* 6085 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6766 /* 6088 */ // MIs[0] root
6767 /* 6088 */ // No operand predicates
6768 /* 6088 */ // MIs[0] mi.shifted
6769 /* 6088 */ // No operand predicates
6770 /* 6088 */ // MIs[0] mi.amt
6771 /* 6088 */ // No operand predicates
6772 /* 6088 */ // Combiner Rule #110: shifts_too_big @ [mi[1]]
6773 /* 6088 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6774 /* 6091 */ // Label 341: @6091
6775 /* 6091 */ GIM_Reject,
6776 /* 6092 */ // Label 38: @6092
6777 /* 6092 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6103), // Rule ID 231 //
6778 /* 6097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6779 /* 6100 */ // Combiner Rule #168: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6780 /* 6100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6781 /* 6103 */ // Label 342: @6103
6782 /* 6103 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6114), // Rule ID 235 //
6783 /* 6108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6784 /* 6111 */ // Combiner Rule #171: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6785 /* 6111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6786 /* 6114 */ // Label 343: @6114
6787 /* 6114 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6134), // Rule ID 234 //
6788 /* 6119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
6789 /* 6122 */ // MIs[0] x
6790 /* 6122 */ // No operand predicates
6791 /* 6122 */ // MIs[0] y
6792 /* 6122 */ // No operand predicates
6793 /* 6122 */ // MIs[0] z
6794 /* 6122 */ // No operand predicates
6795 /* 6122 */ // MIs[0] Operand 3
6796 /* 6122 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6797 /* 6126 */ // Combiner Rule #170: funnel_shift_left_zero
6798 /* 6126 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6799 /* 6129 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6800 /* 6131 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6801 /* 6133 */ GIR_EraseRootFromParent_Done,
6802 /* 6134 */ // Label 344: @6134
6803 /* 6134 */ GIM_Reject,
6804 /* 6135 */ // Label 39: @6135
6805 /* 6135 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6146), // Rule ID 232 //
6806 /* 6140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6807 /* 6143 */ // Combiner Rule #168: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6808 /* 6143 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6809 /* 6146 */ // Label 345: @6146
6810 /* 6146 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6157), // Rule ID 236 //
6811 /* 6151 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6812 /* 6154 */ // Combiner Rule #171: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6813 /* 6154 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6814 /* 6157 */ // Label 346: @6157
6815 /* 6157 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6177), // Rule ID 233 //
6816 /* 6162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6817 /* 6165 */ // MIs[0] x
6818 /* 6165 */ // No operand predicates
6819 /* 6165 */ // MIs[0] y
6820 /* 6165 */ // No operand predicates
6821 /* 6165 */ // MIs[0] z
6822 /* 6165 */ // No operand predicates
6823 /* 6165 */ // MIs[0] Operand 3
6824 /* 6165 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6825 /* 6169 */ // Combiner Rule #169: funnel_shift_right_zero
6826 /* 6169 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6827 /* 6172 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6828 /* 6174 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6829 /* 6176 */ GIR_EraseRootFromParent_Done,
6830 /* 6177 */ // Label 347: @6177
6831 /* 6177 */ GIM_Reject,
6832 /* 6178 */ // Label 40: @6178
6833 /* 6178 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6201), // Rule ID 116 //
6834 /* 6183 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6835 /* 6186 */ // MIs[0] dst
6836 /* 6186 */ // No operand predicates
6837 /* 6186 */ // MIs[0] lhs
6838 /* 6186 */ // No operand predicates
6839 /* 6186 */ // MIs[0] Operand 2
6840 /* 6186 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6841 /* 6190 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6842 /* 6195 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[9]]
6843 /* 6195 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6844 /* 6200 */ GIR_EraseRootFromParent_Done,
6845 /* 6201 */ // Label 348: @6201
6846 /* 6201 */ GIM_Reject,
6847 /* 6202 */ // Label 41: @6202
6848 /* 6202 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6225), // Rule ID 115 //
6849 /* 6207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6850 /* 6210 */ // MIs[0] dst
6851 /* 6210 */ // No operand predicates
6852 /* 6210 */ // MIs[0] lhs
6853 /* 6210 */ // No operand predicates
6854 /* 6210 */ // MIs[0] Operand 2
6855 /* 6210 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6856 /* 6214 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6857 /* 6219 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[8]]
6858 /* 6219 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6859 /* 6224 */ GIR_EraseRootFromParent_Done,
6860 /* 6225 */ // Label 349: @6225
6861 /* 6225 */ GIM_Reject,
6862 /* 6226 */ // Label 42: @6226
6863 /* 6226 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6237), // Rule ID 160 //
6864 /* 6231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
6865 /* 6234 */ // Combiner Rule #116: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
6866 /* 6234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
6867 /* 6237 */ // Label 350: @6237
6868 /* 6237 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6248), // Rule ID 161 //
6869 /* 6242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
6870 /* 6245 */ // Combiner Rule #117: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
6871 /* 6245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
6872 /* 6248 */ // Label 351: @6248
6873 /* 6248 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6259), // Rule ID 164 //
6874 /* 6253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
6875 /* 6256 */ // Combiner Rule #120: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
6876 /* 6256 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
6877 /* 6259 */ // Label 352: @6259
6878 /* 6259 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6270), // Rule ID 158 //
6879 /* 6264 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
6880 /* 6267 */ // MIs[0] root
6881 /* 6267 */ // No operand predicates
6882 /* 6267 */ // MIs[0] pred
6883 /* 6267 */ // No operand predicates
6884 /* 6267 */ // MIs[0] lhs
6885 /* 6267 */ // No operand predicates
6886 /* 6267 */ // MIs[0] rhs
6887 /* 6267 */ // No operand predicates
6888 /* 6267 */ // Combiner Rule #114: canonicalize_icmp
6889 /* 6267 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6890 /* 6270 */ // Label 353: @6270
6891 /* 6270 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6281), // Rule ID 394 //
6892 /* 6275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
6893 /* 6278 */ // MIs[0] dst
6894 /* 6278 */ // No operand predicates
6895 /* 6278 */ // MIs[0] tst
6896 /* 6278 */ // No operand predicates
6897 /* 6278 */ // MIs[0] src1
6898 /* 6278 */ // No operand predicates
6899 /* 6278 */ // MIs[0] src2
6900 /* 6278 */ // No operand predicates
6901 /* 6278 */ // Combiner Rule #242: icmp_redundant_trunc
6902 /* 6278 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
6903 /* 6281 */ // Label 354: @6281
6904 /* 6281 */ GIM_Reject,
6905 /* 6282 */ // Label 43: @6282
6906 /* 6282 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6293), // Rule ID 159 //
6907 /* 6287 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
6908 /* 6290 */ // MIs[0] root
6909 /* 6290 */ // No operand predicates
6910 /* 6290 */ // MIs[0] pred
6911 /* 6290 */ // No operand predicates
6912 /* 6290 */ // MIs[0] lhs
6913 /* 6290 */ // No operand predicates
6914 /* 6290 */ // MIs[0] rhs
6915 /* 6290 */ // No operand predicates
6916 /* 6290 */ // Combiner Rule #115: canonicalize_fcmp
6917 /* 6290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
6918 /* 6293 */ // Label 355: @6293
6919 /* 6293 */ GIM_Reject,
6920 /* 6294 */ // Label 44: @6294
6921 /* 6294 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6305), // Rule ID 106 //
6922 /* 6299 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6923 /* 6302 */ // Combiner Rule #86: select_same_val; wip_match_opcode 'G_SELECT'
6924 /* 6302 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
6925 /* 6305 */ // Label 356: @6305
6926 /* 6305 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6316), // Rule ID 171 //
6927 /* 6310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6928 /* 6313 */ // Combiner Rule #127: select_constant_cmp; wip_match_opcode 'G_SELECT'
6929 /* 6313 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
6930 /* 6316 */ // Label 357: @6316
6931 /* 6316 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6327), // Rule ID 173 //
6932 /* 6321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6933 /* 6324 */ // Combiner Rule #129: match_selects; wip_match_opcode 'G_SELECT'
6934 /* 6324 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
6935 /* 6327 */ // Label 358: @6327
6936 /* 6327 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6338), // Rule ID 328 //
6937 /* 6332 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6938 /* 6335 */ // Combiner Rule #206: select_to_minmax; wip_match_opcode 'G_SELECT'
6939 /* 6335 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
6940 /* 6338 */ // Label 359: @6338
6941 /* 6338 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6359), // Rule ID 172 //
6942 /* 6343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
6943 /* 6346 */ // MIs[0] root
6944 /* 6346 */ // No operand predicates
6945 /* 6346 */ // MIs[0] tst
6946 /* 6346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6947 /* 6350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6948 /* 6354 */ // MIs[1] tst1
6949 /* 6354 */ // No operand predicates
6950 /* 6354 */ // MIs[1] a
6951 /* 6354 */ // No operand predicates
6952 /* 6354 */ // MIs[1] b
6953 /* 6354 */ // No operand predicates
6954 /* 6354 */ // MIs[0] x
6955 /* 6354 */ // No operand predicates
6956 /* 6354 */ // MIs[0] y
6957 /* 6354 */ // No operand predicates
6958 /* 6354 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6959 /* 6356 */ // Combiner Rule #128: select_to_iminmax
6960 /* 6356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
6961 /* 6359 */ // Label 360: @6359
6962 /* 6359 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6388), // Rule ID 170 //
6963 /* 6364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6964 /* 6367 */ // MIs[0] dst
6965 /* 6367 */ // No operand predicates
6966 /* 6367 */ // MIs[0] undef
6967 /* 6367 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6968 /* 6371 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6969 /* 6375 */ // MIs[0] x
6970 /* 6375 */ // No operand predicates
6971 /* 6375 */ // MIs[0] y
6972 /* 6375 */ // No operand predicates
6973 /* 6375 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6974 /* 6380 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6975 /* 6382 */ // Combiner Rule #126: select_undef_cmp
6976 /* 6382 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6977 /* 6387 */ GIR_EraseRootFromParent_Done,
6978 /* 6388 */ // Label 361: @6388
6979 /* 6388 */ GIM_Reject,
6980 /* 6389 */ // Label 45: @6389
6981 /* 6389 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6400), // Rule ID 339 //
6982 /* 6394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6983 /* 6397 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
6984 /* 6397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6985 /* 6400 */ // Label 362: @6400
6986 /* 6400 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6411), // Rule ID 381 //
6987 /* 6405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6988 /* 6408 */ // Combiner Rule #231: match_addos; wip_match_opcode 'G_UADDO'
6989 /* 6408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6990 /* 6411 */ // Label 363: @6411
6991 /* 6411 */ GIM_Reject,
6992 /* 6412 */ // Label 46: @6412
6993 /* 6412 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6423), // Rule ID 204 //
6994 /* 6417 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6995 /* 6420 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_UADDE'
6996 /* 6420 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6997 /* 6423 */ // Label 364: @6423
6998 /* 6423 */ GIM_Reject,
6999 /* 6424 */ // Label 47: @6424
7000 /* 6424 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6435), // Rule ID 383 //
7001 /* 6429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
7002 /* 6432 */ // Combiner Rule #232: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
7003 /* 6432 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7004 /* 6435 */ // Label 365: @6435
7005 /* 6435 */ GIM_Reject,
7006 /* 6436 */ // Label 48: @6436
7007 /* 6436 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6447), // Rule ID 206 //
7008 /* 6441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
7009 /* 6444 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_USUBE'
7010 /* 6444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7011 /* 6447 */ // Label 366: @6447
7012 /* 6447 */ GIM_Reject,
7013 /* 6448 */ // Label 49: @6448
7014 /* 6448 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6459), // Rule ID 340 //
7015 /* 6453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7016 /* 6456 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
7017 /* 6456 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7018 /* 6459 */ // Label 367: @6459
7019 /* 6459 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6470), // Rule ID 380 //
7020 /* 6464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
7021 /* 6467 */ // Combiner Rule #231: match_addos; wip_match_opcode 'G_SADDO'
7022 /* 6467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
7023 /* 6470 */ // Label 368: @6470
7024 /* 6470 */ GIM_Reject,
7025 /* 6471 */ // Label 50: @6471
7026 /* 6471 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6482), // Rule ID 205 //
7027 /* 6476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
7028 /* 6479 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_SADDE'
7029 /* 6479 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7030 /* 6482 */ // Label 369: @6482
7031 /* 6482 */ GIM_Reject,
7032 /* 6483 */ // Label 51: @6483
7033 /* 6483 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6494), // Rule ID 382 //
7034 /* 6488 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
7035 /* 6491 */ // Combiner Rule #232: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
7036 /* 6491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7037 /* 6494 */ // Label 370: @6494
7038 /* 6494 */ GIM_Reject,
7039 /* 6495 */ // Label 52: @6495
7040 /* 6495 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6506), // Rule ID 207 //
7041 /* 6500 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
7042 /* 6503 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_SSUBE'
7043 /* 6503 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7044 /* 6506 */ // Label 371: @6506
7045 /* 6506 */ GIM_Reject,
7046 /* 6507 */ // Label 53: @6507
7047 /* 6507 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6518), // Rule ID 200 //
7048 /* 6512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
7049 /* 6515 */ // Combiner Rule #156: mulo_by_2; wip_match_opcode 'G_UMULO'
7050 /* 6515 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7051 /* 6518 */ // Label 372: @6518
7052 /* 6518 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6529), // Rule ID 202 //
7053 /* 6523 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7054 /* 6526 */ // Combiner Rule #157: mulo_by_0; wip_match_opcode 'G_UMULO'
7055 /* 6526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7056 /* 6529 */ // Label 373: @6529
7057 /* 6529 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6540), // Rule ID 341 //
7058 /* 6534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7059 /* 6537 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
7060 /* 6537 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7061 /* 6540 */ // Label 374: @6540
7062 /* 6540 */ GIM_Reject,
7063 /* 6541 */ // Label 54: @6541
7064 /* 6541 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6552), // Rule ID 201 //
7065 /* 6546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
7066 /* 6549 */ // Combiner Rule #156: mulo_by_2; wip_match_opcode 'G_SMULO'
7067 /* 6549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7068 /* 6552 */ // Label 375: @6552
7069 /* 6552 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6563), // Rule ID 203 //
7070 /* 6557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7071 /* 6560 */ // Combiner Rule #157: mulo_by_0; wip_match_opcode 'G_SMULO'
7072 /* 6560 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7073 /* 6563 */ // Label 376: @6563
7074 /* 6563 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6574), // Rule ID 342 //
7075 /* 6568 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7076 /* 6571 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
7077 /* 6571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7078 /* 6574 */ // Label 377: @6574
7079 /* 6574 */ GIM_Reject,
7080 /* 6575 */ // Label 55: @6575
7081 /* 6575 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6586), // Rule ID 278 //
7082 /* 6580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7083 /* 6583 */ // Combiner Rule #186: mulh_to_lshr; wip_match_opcode 'G_UMULH'
7084 /* 6583 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7085 /* 6586 */ // Label 378: @6586
7086 /* 6586 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6597), // Rule ID 343 //
7087 /* 6591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7088 /* 6594 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
7089 /* 6594 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7090 /* 6597 */ // Label 379: @6597
7091 /* 6597 */ GIM_Reject,
7092 /* 6598 */ // Label 56: @6598
7093 /* 6598 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6609), // Rule ID 344 //
7094 /* 6603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7095 /* 6606 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
7096 /* 6606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7097 /* 6609 */ // Label 380: @6609
7098 /* 6609 */ GIM_Reject,
7099 /* 6610 */ // Label 57: @6610
7100 /* 6610 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6621), // Rule ID 345 //
7101 /* 6615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7102 /* 6618 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
7103 /* 6618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7104 /* 6621 */ // Label 381: @6621
7105 /* 6621 */ GIM_Reject,
7106 /* 6622 */ // Label 58: @6622
7107 /* 6622 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6633), // Rule ID 346 //
7108 /* 6627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7109 /* 6630 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
7110 /* 6630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7111 /* 6633 */ // Label 382: @6633
7112 /* 6633 */ GIM_Reject,
7113 /* 6634 */ // Label 59: @6634
7114 /* 6634 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6645), // Rule ID 219 //
7115 /* 6639 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7116 /* 6642 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
7117 /* 6642 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7118 /* 6645 */ // Label 383: @6645
7119 /* 6645 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6656), // Rule ID 223 //
7120 /* 6650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7121 /* 6653 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
7122 /* 6653 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7123 /* 6656 */ // Label 384: @6656
7124 /* 6656 */ GIM_Reject,
7125 /* 6657 */ // Label 60: @6657
7126 /* 6657 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6668), // Rule ID 218 //
7127 /* 6662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7128 /* 6665 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
7129 /* 6665 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7130 /* 6668 */ // Label 385: @6668
7131 /* 6668 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6679), // Rule ID 224 //
7132 /* 6673 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7133 /* 6676 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
7134 /* 6676 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7135 /* 6679 */ // Label 386: @6679
7136 /* 6679 */ GIM_Reject,
7137 /* 6680 */ // Label 61: @6680
7138 /* 6680 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6691), // Rule ID 347 //
7139 /* 6685 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7140 /* 6688 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
7141 /* 6688 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7142 /* 6691 */ // Label 387: @6691
7143 /* 6691 */ GIM_Reject,
7144 /* 6692 */ // Label 62: @6692
7145 /* 6692 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6703), // Rule ID 348 //
7146 /* 6697 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7147 /* 6700 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
7148 /* 6700 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7149 /* 6703 */ // Label 388: @6703
7150 /* 6703 */ GIM_Reject,
7151 /* 6704 */ // Label 63: @6704
7152 /* 6704 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6715), // Rule ID 349 //
7153 /* 6709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7154 /* 6712 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
7155 /* 6712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7156 /* 6715 */ // Label 389: @6715
7157 /* 6715 */ GIM_Reject,
7158 /* 6716 */ // Label 64: @6716
7159 /* 6716 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6727), // Rule ID 350 //
7160 /* 6721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7161 /* 6724 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
7162 /* 6724 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7163 /* 6727 */ // Label 390: @6727
7164 /* 6727 */ GIM_Reject,
7165 /* 6728 */ // Label 65: @6728
7166 /* 6728 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6739), // Rule ID 268 //
7167 /* 6733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7168 /* 6736 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
7169 /* 6736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7170 /* 6739 */ // Label 391: @6739
7171 /* 6739 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(6750), // Rule ID 279 //
7172 /* 6744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7173 /* 6747 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FADD'
7174 /* 6747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7175 /* 6750 */ // Label 392: @6750
7176 /* 6750 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(6761), // Rule ID 286 //
7177 /* 6755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7178 /* 6758 */ // Combiner Rule #189: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7179 /* 6758 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
7180 /* 6761 */ // Label 393: @6761
7181 /* 6761 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(6772), // Rule ID 287 //
7182 /* 6766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7183 /* 6769 */ // Combiner Rule #190: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7184 /* 6769 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
7185 /* 6772 */ // Label 394: @6772
7186 /* 6772 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(6783), // Rule ID 288 //
7187 /* 6777 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7188 /* 6780 */ // Combiner Rule #191: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7189 /* 6780 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7190 /* 6783 */ // Label 395: @6783
7191 /* 6783 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(6794), // Rule ID 289 //
7192 /* 6788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
7193 /* 6791 */ // Combiner Rule #192: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7194 /* 6791 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7195 /* 6794 */ // Label 396: @6794
7196 /* 6794 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(6805), // Rule ID 312 //
7197 /* 6799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7198 /* 6802 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FADD'
7199 /* 6802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7200 /* 6805 */ // Label 397: @6805
7201 /* 6805 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(6816), // Rule ID 351 //
7202 /* 6810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7203 /* 6813 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
7204 /* 6813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7205 /* 6816 */ // Label 398: @6816
7206 /* 6816 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(6839), // Rule ID 144 //
7207 /* 6821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7208 /* 6824 */ // MIs[0] dst
7209 /* 6824 */ // No operand predicates
7210 /* 6824 */ // MIs[0] x
7211 /* 6824 */ // No operand predicates
7212 /* 6824 */ // MIs[0] y
7213 /* 6824 */ // No operand predicates
7214 /* 6824 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7215 /* 6828 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7216 /* 6833 */ // Combiner Rule #104: right_identity_neg_zero_fp
7217 /* 6833 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7218 /* 6838 */ GIR_EraseRootFromParent_Done,
7219 /* 6839 */ // Label 399: @6839
7220 /* 6839 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(6868), // Rule ID 145 //
7221 /* 6844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
7222 /* 6847 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
7223 /* 6853 */ // MIs[0] dst
7224 /* 6853 */ // No operand predicates
7225 /* 6853 */ // MIs[0] x
7226 /* 6853 */ // No operand predicates
7227 /* 6853 */ // MIs[0] y
7228 /* 6853 */ // No operand predicates
7229 /* 6853 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
7230 /* 6857 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7231 /* 6862 */ // Combiner Rule #105: right_identity_neg_zero_fp_nsz
7232 /* 6862 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7233 /* 6867 */ GIR_EraseRootFromParent_Done,
7234 /* 6868 */ // Label 400: @6868
7235 /* 6868 */ GIM_Reject,
7236 /* 6869 */ // Label 66: @6869
7237 /* 6869 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(6880), // Rule ID 269 //
7238 /* 6874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7239 /* 6877 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
7240 /* 6877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7241 /* 6880 */ // Label 401: @6880
7242 /* 6880 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(6891), // Rule ID 280 //
7243 /* 6885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7244 /* 6888 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FSUB'
7245 /* 6888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7246 /* 6891 */ // Label 402: @6891
7247 /* 6891 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(6902), // Rule ID 290 //
7248 /* 6896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
7249 /* 6899 */ // Combiner Rule #193: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7250 /* 6899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7251 /* 6902 */ // Label 403: @6902
7252 /* 6902 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(6913), // Rule ID 291 //
7253 /* 6907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7254 /* 6910 */ // Combiner Rule #194: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7255 /* 6910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7256 /* 6913 */ // Label 404: @6913
7257 /* 6913 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(6924), // Rule ID 292 //
7258 /* 6918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7259 /* 6921 */ // Combiner Rule #195: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7260 /* 6921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7261 /* 6924 */ // Label 405: @6924
7262 /* 6924 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(6935), // Rule ID 293 //
7263 /* 6929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
7264 /* 6932 */ // Combiner Rule #196: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7265 /* 6932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7266 /* 6935 */ // Label 406: @6935
7267 /* 6935 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(6946), // Rule ID 313 //
7268 /* 6940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7269 /* 6943 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FSUB'
7270 /* 6943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7271 /* 6946 */ // Label 407: @6946
7272 /* 6946 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(6957), // Rule ID 329 //
7273 /* 6951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7274 /* 6954 */ // Combiner Rule #207: fsub_to_fneg; wip_match_opcode 'G_FSUB'
7275 /* 6954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
7276 /* 6957 */ // Label 408: @6957
7277 /* 6957 */ GIM_Reject,
7278 /* 6958 */ // Label 67: @6958
7279 /* 6958 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(6969), // Rule ID 270 //
7280 /* 6963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7281 /* 6966 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
7282 /* 6966 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7283 /* 6969 */ // Label 409: @6969
7284 /* 6969 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(6980), // Rule ID 281 //
7285 /* 6974 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7286 /* 6977 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMUL'
7287 /* 6977 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7288 /* 6980 */ // Label 410: @6980
7289 /* 6980 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(6991), // Rule ID 311 //
7290 /* 6985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7291 /* 6988 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMUL'
7292 /* 6988 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7293 /* 6991 */ // Label 411: @6991
7294 /* 6991 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(7002), // Rule ID 352 //
7295 /* 6996 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7296 /* 6999 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
7297 /* 6999 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7298 /* 7002 */ // Label 412: @7002
7299 /* 7002 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(7025), // Rule ID 135 //
7300 /* 7007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7301 /* 7010 */ // MIs[0] dst
7302 /* 7010 */ // No operand predicates
7303 /* 7010 */ // MIs[0] x
7304 /* 7010 */ // No operand predicates
7305 /* 7010 */ // MIs[0] y
7306 /* 7010 */ // No operand predicates
7307 /* 7010 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
7308 /* 7014 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7309 /* 7019 */ // Combiner Rule #97: right_identity_one_fp
7310 /* 7019 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7311 /* 7024 */ GIR_EraseRootFromParent_Done,
7312 /* 7025 */ // Label 413: @7025
7313 /* 7025 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(7045), // Rule ID 146 //
7314 /* 7030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7315 /* 7033 */ // MIs[0] dst
7316 /* 7033 */ // No operand predicates
7317 /* 7033 */ // MIs[0] x
7318 /* 7033 */ // No operand predicates
7319 /* 7033 */ // MIs[0] y
7320 /* 7033 */ // No operand predicates
7321 /* 7033 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7322 /* 7037 */ // Combiner Rule #106: right_identity_neg_one_fp
7323 /* 7037 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
7324 /* 7040 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7325 /* 7042 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7326 /* 7044 */ GIR_EraseRootFromParent_Done,
7327 /* 7045 */ // Label 414: @7045
7328 /* 7045 */ GIM_Reject,
7329 /* 7046 */ // Label 68: @7046
7330 /* 7046 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(7057), // Rule ID 273 //
7331 /* 7051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7332 /* 7054 */ // Combiner Rule #183: constant_fold_fma; wip_match_opcode 'G_FMA'
7333 /* 7054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7334 /* 7057 */ // Label 415: @7057
7335 /* 7057 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(7068), // Rule ID 284 //
7336 /* 7062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7337 /* 7065 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMA'
7338 /* 7065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7339 /* 7068 */ // Label 416: @7068
7340 /* 7068 */ GIM_Reject,
7341 /* 7069 */ // Label 69: @7069
7342 /* 7069 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(7080), // Rule ID 272 //
7343 /* 7074 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7344 /* 7077 */ // Combiner Rule #183: constant_fold_fma; wip_match_opcode 'G_FMAD'
7345 /* 7077 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7346 /* 7080 */ // Label 417: @7080
7347 /* 7080 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(7091), // Rule ID 283 //
7348 /* 7085 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7349 /* 7088 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMAD'
7350 /* 7088 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7351 /* 7091 */ // Label 418: @7091
7352 /* 7091 */ GIM_Reject,
7353 /* 7092 */ // Label 70: @7092
7354 /* 7092 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(7103), // Rule ID 271 //
7355 /* 7097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7356 /* 7100 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
7357 /* 7100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7358 /* 7103 */ // Label 419: @7103
7359 /* 7103 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(7114), // Rule ID 282 //
7360 /* 7108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7361 /* 7111 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FDIV'
7362 /* 7111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7363 /* 7114 */ // Label 420: @7114
7364 /* 7114 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(7125), // Rule ID 314 //
7365 /* 7119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7366 /* 7122 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FDIV'
7367 /* 7122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7368 /* 7125 */ // Label 421: @7125
7369 /* 7125 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(7136), // Rule ID 326 //
7370 /* 7130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7371 /* 7133 */ // MIs[0] dst
7372 /* 7133 */ // No operand predicates
7373 /* 7133 */ // MIs[0] src1
7374 /* 7133 */ // No operand predicates
7375 /* 7133 */ // MIs[0] src2
7376 /* 7133 */ // No operand predicates
7377 /* 7133 */ // Combiner Rule #204: fdiv_repeated_divison
7378 /* 7133 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7379 /* 7136 */ // Label 422: @7136
7380 /* 7136 */ GIM_Reject,
7381 /* 7137 */ // Label 71: @7137
7382 /* 7137 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7148), // Rule ID 315 //
7383 /* 7142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7384 /* 7145 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FREM'
7385 /* 7145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7386 /* 7148 */ // Label 423: @7148
7387 /* 7148 */ GIM_Reject,
7388 /* 7149 */ // Label 72: @7149
7389 /* 7149 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7170), // Rule ID 212 //
7390 /* 7154 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7391 /* 7157 */ // MIs[0] dst
7392 /* 7157 */ // No operand predicates
7393 /* 7157 */ // MIs[0] float
7394 /* 7157 */ // No operand predicates
7395 /* 7157 */ // MIs[0] int
7396 /* 7157 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7397 /* 7161 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7398 /* 7165 */ // MIs[1] imm
7399 /* 7165 */ // No operand predicates
7400 /* 7165 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7401 /* 7167 */ // Combiner Rule #160: expand_const_fpowi
7402 /* 7167 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7403 /* 7170 */ // Label 424: @7170
7404 /* 7170 */ GIM_Reject,
7405 /* 7171 */ // Label 73: @7171
7406 /* 7171 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7192), // Rule ID 186 //
7407 /* 7176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7408 /* 7179 */ // MIs[0] dst
7409 /* 7179 */ // No operand predicates
7410 /* 7179 */ // MIs[0] src0
7411 /* 7179 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7412 /* 7183 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7413 /* 7187 */ // MIs[1] cst
7414 /* 7187 */ // No operand predicates
7415 /* 7187 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7416 /* 7189 */ // Combiner Rule #142: constant_fold_flog2
7417 /* 7189 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7418 /* 7192 */ // Label 425: @7192
7419 /* 7192 */ GIM_Reject,
7420 /* 7193 */ // Label 74: @7193
7421 /* 7193 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7214), // Rule ID 183 //
7422 /* 7198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7423 /* 7201 */ // MIs[0] dst
7424 /* 7201 */ // No operand predicates
7425 /* 7201 */ // MIs[0] src0
7426 /* 7201 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7427 /* 7205 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7428 /* 7209 */ // MIs[1] cst
7429 /* 7209 */ // No operand predicates
7430 /* 7209 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7431 /* 7211 */ // Combiner Rule #139: constant_fold_fneg
7432 /* 7211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7433 /* 7214 */ // Label 426: @7214
7434 /* 7214 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7243), // Rule ID 133 //
7435 /* 7219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
7436 /* 7222 */ // MIs[0] dst
7437 /* 7222 */ // No operand predicates
7438 /* 7222 */ // MIs[0] t
7439 /* 7222 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7440 /* 7226 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7441 /* 7230 */ // MIs[1] src
7442 /* 7230 */ // No operand predicates
7443 /* 7230 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7444 /* 7235 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7445 /* 7237 */ // Combiner Rule #95: fneg_fneg_fold
7446 /* 7237 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7447 /* 7242 */ GIR_EraseRootFromParent_Done,
7448 /* 7243 */ // Label 427: @7243
7449 /* 7243 */ GIM_Reject,
7450 /* 7244 */ // Label 75: @7244
7451 /* 7244 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7265), // Rule ID 188 //
7452 /* 7249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7453 /* 7252 */ // MIs[0] dst
7454 /* 7252 */ // No operand predicates
7455 /* 7252 */ // MIs[0] src0
7456 /* 7252 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7457 /* 7256 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7458 /* 7260 */ // MIs[1] cst
7459 /* 7260 */ // No operand predicates
7460 /* 7260 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7461 /* 7262 */ // Combiner Rule #144: constant_fold_fpext
7462 /* 7262 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7463 /* 7265 */ // Label 428: @7265
7464 /* 7265 */ GIM_Reject,
7465 /* 7266 */ // Label 76: @7266
7466 /* 7266 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7287), // Rule ID 187 //
7467 /* 7271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
7468 /* 7274 */ // MIs[0] dst
7469 /* 7274 */ // No operand predicates
7470 /* 7274 */ // MIs[0] src0
7471 /* 7274 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7472 /* 7278 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7473 /* 7282 */ // MIs[1] cst
7474 /* 7282 */ // No operand predicates
7475 /* 7282 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7476 /* 7284 */ // Combiner Rule #143: constant_fold_fptrunc
7477 /* 7284 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7478 /* 7287 */ // Label 429: @7287
7479 /* 7287 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7308), // Rule ID 143 //
7480 /* 7292 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7481 /* 7295 */ // MIs[0] dst
7482 /* 7295 */ // No operand predicates
7483 /* 7295 */ // MIs[0] src1
7484 /* 7295 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7485 /* 7299 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7486 /* 7303 */ // MIs[1] src0
7487 /* 7303 */ // No operand predicates
7488 /* 7303 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7489 /* 7305 */ // Combiner Rule #103: fptrunc_fpext_fold
7490 /* 7305 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7491 /* 7308 */ // Label 430: @7308
7492 /* 7308 */ GIM_Reject,
7493 /* 7309 */ // Label 77: @7309
7494 /* 7309 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7330), // Rule ID 95 //
7495 /* 7314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7496 /* 7317 */ // MIs[0] dst
7497 /* 7317 */ // No operand predicates
7498 /* 7317 */ // MIs[0] __unary_undef_to_undef_match_0.x
7499 /* 7317 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7500 /* 7321 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7501 /* 7325 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7502 /* 7327 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7503 /* 7327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7504 /* 7330 */ // Label 431: @7330
7505 /* 7330 */ GIM_Reject,
7506 /* 7331 */ // Label 78: @7331
7507 /* 7331 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7352), // Rule ID 96 //
7508 /* 7336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7509 /* 7339 */ // MIs[0] dst
7510 /* 7339 */ // No operand predicates
7511 /* 7339 */ // MIs[0] __unary_undef_to_undef_match_0.x
7512 /* 7339 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7513 /* 7343 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7514 /* 7347 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7515 /* 7349 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7516 /* 7349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7517 /* 7352 */ // Label 432: @7352
7518 /* 7352 */ GIM_Reject,
7519 /* 7353 */ // Label 79: @7353
7520 /* 7353 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7364), // Rule ID 79 //
7521 /* 7358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7522 /* 7361 */ // Combiner Rule #74: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7523 /* 7361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7524 /* 7364 */ // Label 433: @7364
7525 /* 7364 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7379), // Rule ID 196 //
7526 /* 7369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
7527 /* 7372 */ // MIs[0] dst
7528 /* 7372 */ // No operand predicates
7529 /* 7372 */ // MIs[0] Operand 1
7530 /* 7372 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7531 /* 7376 */ // Combiner Rule #152: itof_const_zero_fold_si
7532 /* 7376 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7533 /* 7379 */ // Label 434: @7379
7534 /* 7379 */ GIM_Reject,
7535 /* 7380 */ // Label 80: @7380
7536 /* 7380 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7391), // Rule ID 78 //
7537 /* 7385 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7538 /* 7388 */ // Combiner Rule #74: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7539 /* 7388 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7540 /* 7391 */ // Label 435: @7391
7541 /* 7391 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7406), // Rule ID 197 //
7542 /* 7396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
7543 /* 7399 */ // MIs[0] dst
7544 /* 7399 */ // No operand predicates
7545 /* 7399 */ // MIs[0] Operand 1
7546 /* 7399 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7547 /* 7403 */ // Combiner Rule #153: itof_const_zero_fold_ui
7548 /* 7403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7549 /* 7406 */ // Label 436: @7406
7550 /* 7406 */ GIM_Reject,
7551 /* 7407 */ // Label 81: @7407
7552 /* 7407 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7436), // Rule ID 22 //
7553 /* 7412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7554 /* 7415 */ // MIs[0] dst
7555 /* 7415 */ // No operand predicates
7556 /* 7415 */ // MIs[0] src
7557 /* 7415 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7558 /* 7419 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7559 /* 7423 */ // MIs[1] __idempotent_prop_match_0.x
7560 /* 7423 */ // No operand predicates
7561 /* 7423 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7562 /* 7428 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7563 /* 7430 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[1]]
7564 /* 7430 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7565 /* 7435 */ GIR_EraseRootFromParent_Done,
7566 /* 7436 */ // Label 437: @7436
7567 /* 7436 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7457), // Rule ID 184 //
7568 /* 7441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7569 /* 7444 */ // MIs[0] dst
7570 /* 7444 */ // No operand predicates
7571 /* 7444 */ // MIs[0] src0
7572 /* 7444 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7573 /* 7448 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7574 /* 7452 */ // MIs[1] cst
7575 /* 7452 */ // No operand predicates
7576 /* 7452 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7577 /* 7454 */ // Combiner Rule #140: constant_fold_fabs
7578 /* 7454 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7579 /* 7457 */ // Label 438: @7457
7580 /* 7457 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7485), // Rule ID 277 //
7581 /* 7462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7582 /* 7465 */ // MIs[0] dst
7583 /* 7465 */ // No operand predicates
7584 /* 7465 */ // MIs[0] tmp
7585 /* 7465 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7586 /* 7469 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7587 /* 7473 */ // MIs[1] x
7588 /* 7473 */ // No operand predicates
7589 /* 7473 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7590 /* 7475 */ // Combiner Rule #185: fabs_fneg_fold
7591 /* 7475 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7592 /* 7478 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7593 /* 7480 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7594 /* 7484 */ GIR_EraseRootFromParent_Done,
7595 /* 7485 */ // Label 439: @7485
7596 /* 7485 */ GIM_Reject,
7597 /* 7486 */ // Label 82: @7486
7598 /* 7486 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7515), // Rule ID 23 //
7599 /* 7491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7600 /* 7494 */ // MIs[0] dst
7601 /* 7494 */ // No operand predicates
7602 /* 7494 */ // MIs[0] src
7603 /* 7494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7604 /* 7498 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7605 /* 7502 */ // MIs[1] __idempotent_prop_match_0.x
7606 /* 7502 */ // No operand predicates
7607 /* 7502 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7608 /* 7507 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7609 /* 7509 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[2]]
7610 /* 7509 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7611 /* 7514 */ GIR_EraseRootFromParent_Done,
7612 /* 7515 */ // Label 440: @7515
7613 /* 7515 */ GIM_Reject,
7614 /* 7516 */ // Label 83: @7516
7615 /* 7516 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7527), // Rule ID 208 //
7616 /* 7521 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7617 /* 7524 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7618 /* 7524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7619 /* 7527 */ // Label 441: @7527
7620 /* 7527 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7538), // Rule ID 316 //
7621 /* 7532 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7622 /* 7535 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7623 /* 7535 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7624 /* 7538 */ // Label 442: @7538
7625 /* 7538 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7549), // Rule ID 353 //
7626 /* 7543 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7627 /* 7546 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7628 /* 7546 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7629 /* 7549 */ // Label 443: @7549
7630 /* 7549 */ GIM_Reject,
7631 /* 7550 */ // Label 84: @7550
7632 /* 7550 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7561), // Rule ID 209 //
7633 /* 7555 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7634 /* 7558 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7635 /* 7558 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7636 /* 7561 */ // Label 444: @7561
7637 /* 7561 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7572), // Rule ID 317 //
7638 /* 7566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7639 /* 7569 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7640 /* 7569 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7641 /* 7572 */ // Label 445: @7572
7642 /* 7572 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7583), // Rule ID 354 //
7643 /* 7577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7644 /* 7580 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7645 /* 7580 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7646 /* 7583 */ // Label 446: @7583
7647 /* 7583 */ GIM_Reject,
7648 /* 7584 */ // Label 85: @7584
7649 /* 7584 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7595), // Rule ID 355 //
7650 /* 7589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7651 /* 7592 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7652 /* 7592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7653 /* 7595 */ // Label 447: @7595
7654 /* 7595 */ GIM_Reject,
7655 /* 7596 */ // Label 86: @7596
7656 /* 7596 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7607), // Rule ID 356 //
7657 /* 7601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7658 /* 7604 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7659 /* 7604 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7660 /* 7607 */ // Label 448: @7607
7661 /* 7607 */ GIM_Reject,
7662 /* 7608 */ // Label 87: @7608
7663 /* 7608 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7619), // Rule ID 210 //
7664 /* 7613 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7665 /* 7616 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7666 /* 7616 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7667 /* 7619 */ // Label 449: @7619
7668 /* 7619 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7630), // Rule ID 318 //
7669 /* 7624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7670 /* 7627 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7671 /* 7627 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7672 /* 7630 */ // Label 450: @7630
7673 /* 7630 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7641), // Rule ID 357 //
7674 /* 7635 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7675 /* 7638 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7676 /* 7638 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7677 /* 7641 */ // Label 451: @7641
7678 /* 7641 */ GIM_Reject,
7679 /* 7642 */ // Label 88: @7642
7680 /* 7642 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7653), // Rule ID 211 //
7681 /* 7647 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7682 /* 7650 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7683 /* 7650 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7684 /* 7653 */ // Label 452: @7653
7685 /* 7653 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7664), // Rule ID 319 //
7686 /* 7658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7687 /* 7661 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7688 /* 7661 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7689 /* 7664 */ // Label 453: @7664
7690 /* 7664 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7675), // Rule ID 358 //
7691 /* 7669 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7692 /* 7672 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7693 /* 7672 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7694 /* 7675 */ // Label 454: @7675
7695 /* 7675 */ GIM_Reject,
7696 /* 7676 */ // Label 89: @7676
7697 /* 7676 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7687), // Rule ID 155 //
7698 /* 7681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7699 /* 7684 */ // Combiner Rule #111: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7700 /* 7684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7701 /* 7687 */ // Label 455: @7687
7702 /* 7687 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7698), // Rule ID 157 //
7703 /* 7692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
7704 /* 7695 */ // Combiner Rule #113: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7705 /* 7695 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7706 /* 7698 */ // Label 456: @7698
7707 /* 7698 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7709), // Rule ID 198 //
7708 /* 7703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
7709 /* 7706 */ // Combiner Rule #154: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7710 /* 7706 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7711 /* 7709 */ // Label 457: @7709
7712 /* 7709 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7720), // Rule ID 214 //
7713 /* 7714 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7714 /* 7717 */ // Combiner Rule #162: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7715 /* 7717 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7716 /* 7720 */ // Label 458: @7720
7717 /* 7720 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(7731), // Rule ID 251 //
7718 /* 7725 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7719 /* 7728 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7720 /* 7728 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7721 /* 7731 */ // Label 459: @7731
7722 /* 7731 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(7742), // Rule ID 296 //
7723 /* 7736 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7724 /* 7739 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7725 /* 7739 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7726 /* 7742 */ // Label 460: @7742
7727 /* 7742 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(7765), // Rule ID 114 //
7728 /* 7747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
7729 /* 7750 */ // MIs[0] dst
7730 /* 7750 */ // No operand predicates
7731 /* 7750 */ // MIs[0] lhs
7732 /* 7750 */ // No operand predicates
7733 /* 7750 */ // MIs[0] Operand 2
7734 /* 7750 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7735 /* 7754 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7736 /* 7759 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[7]]
7737 /* 7759 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7738 /* 7764 */ GIR_EraseRootFromParent_Done,
7739 /* 7765 */ // Label 461: @7765
7740 /* 7765 */ GIM_Reject,
7741 /* 7766 */ // Label 90: @7766
7742 /* 7766 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(7777), // Rule ID 264 //
7743 /* 7771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7744 /* 7774 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SMIN'
7745 /* 7774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7746 /* 7777 */ // Label 462: @7777
7747 /* 7777 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(7788), // Rule ID 307 //
7748 /* 7782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7749 /* 7785 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7750 /* 7785 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7751 /* 7788 */ // Label 463: @7788
7752 /* 7788 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(7799), // Rule ID 335 //
7753 /* 7793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7754 /* 7796 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7755 /* 7796 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7756 /* 7799 */ // Label 464: @7799
7757 /* 7799 */ GIM_Reject,
7758 /* 7800 */ // Label 91: @7800
7759 /* 7800 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(7811), // Rule ID 265 //
7760 /* 7805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7761 /* 7808 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SMAX'
7762 /* 7808 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7763 /* 7811 */ // Label 465: @7811
7764 /* 7811 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(7822), // Rule ID 308 //
7765 /* 7816 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7766 /* 7819 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7767 /* 7819 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7768 /* 7822 */ // Label 466: @7822
7769 /* 7822 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(7833), // Rule ID 336 //
7770 /* 7827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7771 /* 7830 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7772 /* 7830 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7773 /* 7833 */ // Label 467: @7833
7774 /* 7833 */ GIM_Reject,
7775 /* 7834 */ // Label 92: @7834
7776 /* 7834 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(7845), // Rule ID 266 //
7777 /* 7839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7778 /* 7842 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UMIN'
7779 /* 7842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7780 /* 7845 */ // Label 468: @7845
7781 /* 7845 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(7856), // Rule ID 309 //
7782 /* 7850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7783 /* 7853 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7784 /* 7853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7785 /* 7856 */ // Label 469: @7856
7786 /* 7856 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(7867), // Rule ID 337 //
7787 /* 7861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7788 /* 7864 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7789 /* 7864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7790 /* 7867 */ // Label 470: @7867
7791 /* 7867 */ GIM_Reject,
7792 /* 7868 */ // Label 93: @7868
7793 /* 7868 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(7879), // Rule ID 267 //
7794 /* 7873 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7795 /* 7876 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UMAX'
7796 /* 7876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7797 /* 7879 */ // Label 471: @7879
7798 /* 7879 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(7890), // Rule ID 310 //
7799 /* 7884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7800 /* 7887 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7801 /* 7887 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7802 /* 7890 */ // Label 472: @7890
7803 /* 7890 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(7901), // Rule ID 338 //
7804 /* 7895 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7805 /* 7898 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7806 /* 7898 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7807 /* 7901 */ // Label 473: @7901
7808 /* 7901 */ GIM_Reject,
7809 /* 7902 */ // Label 94: @7902
7810 /* 7902 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(7913), // Rule ID 89 //
7811 /* 7907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7812 /* 7910 */ // Combiner Rule #79: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7813 /* 7910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7814 /* 7913 */ // Label 474: @7913
7815 /* 7913 */ GIM_Reject,
7816 /* 7914 */ // Label 95: @7914
7817 /* 7914 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(7925), // Rule ID 182 //
7818 /* 7919 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7819 /* 7922 */ // Combiner Rule #138: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7820 /* 7922 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7821 /* 7925 */ // Label 475: @7925
7822 /* 7925 */ GIM_Reject,
7823 /* 7926 */ // Label 96: @7926
7824 /* 7926 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(7937), // Rule ID 29 //
7825 /* 7931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
7826 /* 7934 */ // Combiner Rule #27: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7827 /* 7934 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7828 /* 7937 */ // Label 476: @7937
7829 /* 7937 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(7948), // Rule ID 70 //
7830 /* 7942 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7831 /* 7945 */ // Combiner Rule #68: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7832 /* 7945 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7833 /* 7948 */ // Label 477: @7948
7834 /* 7948 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(7959), // Rule ID 104 //
7835 /* 7953 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7836 /* 7956 */ // Combiner Rule #85: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7837 /* 7956 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7838 /* 7959 */ // Label 478: @7959
7839 /* 7959 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(7998), // Rule ID 41 //
7840 /* 7964 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
7841 /* 7967 */ // MIs[0] root
7842 /* 7967 */ // No operand predicates
7843 /* 7967 */ // MIs[0] src
7844 /* 7967 */ // No operand predicates
7845 /* 7967 */ // MIs[0] elt
7846 /* 7967 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7847 /* 7971 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
7848 /* 7975 */ // MIs[1] src
7849 /* 7975 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7850 /* 7980 */ // MIs[1] idx
7851 /* 7980 */ // No operand predicates
7852 /* 7980 */ // MIs[0] idx
7853 /* 7980 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
7854 /* 7985 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7855 /* 7990 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7856 /* 7992 */ // Combiner Rule #39: insert_vector_element_extract_vector_element
7857 /* 7992 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7858 /* 7997 */ GIR_EraseRootFromParent_Done,
7859 /* 7998 */ // Label 479: @7998
7860 /* 7998 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(8031), // Rule ID 27 //
7861 /* 8003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
7862 /* 8006 */ // MIs[0] root
7863 /* 8006 */ // No operand predicates
7864 /* 8006 */ // MIs[0] src
7865 /* 8006 */ // No operand predicates
7866 /* 8006 */ // MIs[0] elt
7867 /* 8006 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7868 /* 8010 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7869 /* 8014 */ // MIs[0] idx
7870 /* 8014 */ // No operand predicates
7871 /* 8014 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
7872 /* 8018 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7873 /* 8023 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7874 /* 8025 */ // Combiner Rule #25: insert_vector_element_elt_undef
7875 /* 8025 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7876 /* 8030 */ GIR_EraseRootFromParent_Done,
7877 /* 8031 */ // Label 480: @8031
7878 /* 8031 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(8055), // Rule ID 26 //
7879 /* 8036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7880 /* 8039 */ // MIs[0] root
7881 /* 8039 */ // No operand predicates
7882 /* 8039 */ // MIs[0] src
7883 /* 8039 */ // No operand predicates
7884 /* 8039 */ // MIs[0] elt
7885 /* 8039 */ // No operand predicates
7886 /* 8039 */ // MIs[0] idx
7887 /* 8039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
7888 /* 8043 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7889 /* 8047 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7890 /* 8049 */ // Combiner Rule #24: insert_vector_element_idx_undef
7891 /* 8049 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7892 /* 8052 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7893 /* 8054 */ GIR_EraseRootFromParent_Done,
7894 /* 8055 */ // Label 481: @8055
7895 /* 8055 */ GIM_Reject,
7896 /* 8056 */ // Label 97: @8056
7897 /* 8056 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(8067), // Rule ID 28 //
7898 /* 8061 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
7899 /* 8064 */ // Combiner Rule #26: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7900 /* 8064 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
7901 /* 8067 */ // Label 482: @8067
7902 /* 8067 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(8078), // Rule ID 71 //
7903 /* 8072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7904 /* 8075 */ // Combiner Rule #69: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7905 /* 8075 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7906 /* 8078 */ // Label 483: @8078
7907 /* 8078 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(8089), // Rule ID 77 //
7908 /* 8083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7909 /* 8086 */ // Combiner Rule #73: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7910 /* 8086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7911 /* 8089 */ // Label 484: @8089
7912 /* 8089 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8100), // Rule ID 105 //
7913 /* 8094 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7914 /* 8097 */ // Combiner Rule #85: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7915 /* 8097 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7916 /* 8100 */ // Label 485: @8100
7917 /* 8100 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8124), // Rule ID 39 //
7918 /* 8105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
7919 /* 8108 */ // MIs[0] root
7920 /* 8108 */ // No operand predicates
7921 /* 8108 */ // MIs[0] src
7922 /* 8108 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7923 /* 8112 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7924 /* 8116 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
7925 /* 8119 */ // MIs[1] x
7926 /* 8119 */ // No operand predicates
7927 /* 8119 */ // MIs[1] y
7928 /* 8119 */ // No operand predicates
7929 /* 8119 */ // MIs[1] z
7930 /* 8119 */ // No operand predicates
7931 /* 8119 */ // MIs[1] a
7932 /* 8119 */ // No operand predicates
7933 /* 8119 */ // MIs[1] b
7934 /* 8119 */ // No operand predicates
7935 /* 8119 */ // MIs[1] c
7936 /* 8119 */ // No operand predicates
7937 /* 8119 */ // MIs[1] d
7938 /* 8119 */ // No operand predicates
7939 /* 8119 */ // MIs[1] e
7940 /* 8119 */ // No operand predicates
7941 /* 8119 */ // MIs[0] idx
7942 /* 8119 */ // No operand predicates
7943 /* 8119 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7944 /* 8121 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc8
7945 /* 8121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7946 /* 8124 */ // Label 486: @8124
7947 /* 8124 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8148), // Rule ID 38 //
7948 /* 8129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
7949 /* 8132 */ // MIs[0] root
7950 /* 8132 */ // No operand predicates
7951 /* 8132 */ // MIs[0] src
7952 /* 8132 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7953 /* 8136 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7954 /* 8140 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
7955 /* 8143 */ // MIs[1] x
7956 /* 8143 */ // No operand predicates
7957 /* 8143 */ // MIs[1] y
7958 /* 8143 */ // No operand predicates
7959 /* 8143 */ // MIs[1] z
7960 /* 8143 */ // No operand predicates
7961 /* 8143 */ // MIs[1] a
7962 /* 8143 */ // No operand predicates
7963 /* 8143 */ // MIs[1] b
7964 /* 8143 */ // No operand predicates
7965 /* 8143 */ // MIs[1] c
7966 /* 8143 */ // No operand predicates
7967 /* 8143 */ // MIs[1] d
7968 /* 8143 */ // No operand predicates
7969 /* 8143 */ // MIs[0] idx
7970 /* 8143 */ // No operand predicates
7971 /* 8143 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7972 /* 8145 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc7
7973 /* 8145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7974 /* 8148 */ // Label 487: @8148
7975 /* 8148 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8172), // Rule ID 37 //
7976 /* 8153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
7977 /* 8156 */ // MIs[0] root
7978 /* 8156 */ // No operand predicates
7979 /* 8156 */ // MIs[0] src
7980 /* 8156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7981 /* 8160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7982 /* 8164 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
7983 /* 8167 */ // MIs[1] x
7984 /* 8167 */ // No operand predicates
7985 /* 8167 */ // MIs[1] y
7986 /* 8167 */ // No operand predicates
7987 /* 8167 */ // MIs[1] z
7988 /* 8167 */ // No operand predicates
7989 /* 8167 */ // MIs[1] a
7990 /* 8167 */ // No operand predicates
7991 /* 8167 */ // MIs[1] b
7992 /* 8167 */ // No operand predicates
7993 /* 8167 */ // MIs[1] c
7994 /* 8167 */ // No operand predicates
7995 /* 8167 */ // MIs[0] idx
7996 /* 8167 */ // No operand predicates
7997 /* 8167 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7998 /* 8169 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc6
7999 /* 8169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8000 /* 8172 */ // Label 488: @8172
8001 /* 8172 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8196), // Rule ID 36 //
8002 /* 8177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
8003 /* 8180 */ // MIs[0] root
8004 /* 8180 */ // No operand predicates
8005 /* 8180 */ // MIs[0] src
8006 /* 8180 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8007 /* 8184 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8008 /* 8188 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
8009 /* 8191 */ // MIs[1] x
8010 /* 8191 */ // No operand predicates
8011 /* 8191 */ // MIs[1] y
8012 /* 8191 */ // No operand predicates
8013 /* 8191 */ // MIs[1] z
8014 /* 8191 */ // No operand predicates
8015 /* 8191 */ // MIs[1] a
8016 /* 8191 */ // No operand predicates
8017 /* 8191 */ // MIs[1] b
8018 /* 8191 */ // No operand predicates
8019 /* 8191 */ // MIs[0] idx
8020 /* 8191 */ // No operand predicates
8021 /* 8191 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8022 /* 8193 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc5
8023 /* 8193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8024 /* 8196 */ // Label 489: @8196
8025 /* 8196 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8220), // Rule ID 35 //
8026 /* 8201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
8027 /* 8204 */ // MIs[0] root
8028 /* 8204 */ // No operand predicates
8029 /* 8204 */ // MIs[0] src
8030 /* 8204 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8031 /* 8208 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8032 /* 8212 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
8033 /* 8215 */ // MIs[1] x
8034 /* 8215 */ // No operand predicates
8035 /* 8215 */ // MIs[1] y
8036 /* 8215 */ // No operand predicates
8037 /* 8215 */ // MIs[1] z
8038 /* 8215 */ // No operand predicates
8039 /* 8215 */ // MIs[1] a
8040 /* 8215 */ // No operand predicates
8041 /* 8215 */ // MIs[0] idx
8042 /* 8215 */ // No operand predicates
8043 /* 8215 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8044 /* 8217 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc4
8045 /* 8217 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8046 /* 8220 */ // Label 490: @8220
8047 /* 8220 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8244), // Rule ID 34 //
8048 /* 8225 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
8049 /* 8228 */ // MIs[0] root
8050 /* 8228 */ // No operand predicates
8051 /* 8228 */ // MIs[0] src
8052 /* 8228 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8053 /* 8232 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8054 /* 8236 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
8055 /* 8239 */ // MIs[1] x
8056 /* 8239 */ // No operand predicates
8057 /* 8239 */ // MIs[1] y
8058 /* 8239 */ // No operand predicates
8059 /* 8239 */ // MIs[1] z
8060 /* 8239 */ // No operand predicates
8061 /* 8239 */ // MIs[0] idx
8062 /* 8239 */ // No operand predicates
8063 /* 8239 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8064 /* 8241 */ // Combiner Rule #32: extract_vector_element_build_vector_trunc3
8065 /* 8241 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8066 /* 8244 */ // Label 491: @8244
8067 /* 8244 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8278), // Rule ID 30 //
8068 /* 8249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
8069 /* 8252 */ // MIs[0] root
8070 /* 8252 */ // No operand predicates
8071 /* 8252 */ // MIs[0] src
8072 /* 8252 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8073 /* 8256 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8074 /* 8260 */ // MIs[1] x
8075 /* 8260 */ // No operand predicates
8076 /* 8260 */ // MIs[1] value
8077 /* 8260 */ // No operand predicates
8078 /* 8260 */ // MIs[1] idx
8079 /* 8260 */ // No operand predicates
8080 /* 8260 */ // MIs[0] idx
8081 /* 8260 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
8082 /* 8265 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8083 /* 8270 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8084 /* 8272 */ // Combiner Rule #28: extract_vector_element_not_const
8085 /* 8272 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8086 /* 8277 */ GIR_EraseRootFromParent_Done,
8087 /* 8278 */ // Label 492: @8278
8088 /* 8278 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8299), // Rule ID 31 //
8089 /* 8283 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
8090 /* 8286 */ // MIs[0] root
8091 /* 8286 */ // No operand predicates
8092 /* 8286 */ // MIs[0] src
8093 /* 8286 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8094 /* 8290 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8095 /* 8294 */ // MIs[1] x
8096 /* 8294 */ // No operand predicates
8097 /* 8294 */ // MIs[1] value
8098 /* 8294 */ // No operand predicates
8099 /* 8294 */ // MIs[1] idx2
8100 /* 8294 */ // No operand predicates
8101 /* 8294 */ // MIs[0] idx1
8102 /* 8294 */ // No operand predicates
8103 /* 8294 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8104 /* 8296 */ // Combiner Rule #29: extract_vector_element_different_indices
8105 /* 8296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
8106 /* 8299 */ // Label 493: @8299
8107 /* 8299 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8328), // Rule ID 40 //
8108 /* 8304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
8109 /* 8307 */ // MIs[0] root
8110 /* 8307 */ // No operand predicates
8111 /* 8307 */ // MIs[0] src
8112 /* 8307 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8113 /* 8311 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
8114 /* 8315 */ // MIs[1] src1
8115 /* 8315 */ // No operand predicates
8116 /* 8315 */ // MIs[1] src2
8117 /* 8315 */ // No operand predicates
8118 /* 8315 */ // MIs[1] mask
8119 /* 8315 */ // No operand predicates
8120 /* 8315 */ // MIs[0] idx
8121 /* 8315 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8122 /* 8319 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8123 /* 8323 */ // MIs[2] imm
8124 /* 8323 */ // No operand predicates
8125 /* 8323 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8126 /* 8325 */ // Combiner Rule #38: extract_vector_element_shuffle_vector
8127 /* 8325 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8128 /* 8328 */ // Label 494: @8328
8129 /* 8328 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8352), // Rule ID 33 //
8130 /* 8333 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
8131 /* 8336 */ // MIs[0] root
8132 /* 8336 */ // No operand predicates
8133 /* 8336 */ // MIs[0] src
8134 /* 8336 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8135 /* 8340 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8136 /* 8344 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
8137 /* 8347 */ // MIs[1] x
8138 /* 8347 */ // No operand predicates
8139 /* 8347 */ // MIs[1] y
8140 /* 8347 */ // No operand predicates
8141 /* 8347 */ // MIs[0] idx
8142 /* 8347 */ // No operand predicates
8143 /* 8347 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8144 /* 8349 */ // Combiner Rule #31: extract_vector_element_build_vector_trunc2
8145 /* 8349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8146 /* 8352 */ // Label 495: @8352
8147 /* 8352 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8384), // Rule ID 32 //
8148 /* 8357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
8149 /* 8360 */ // MIs[0] root
8150 /* 8360 */ // No operand predicates
8151 /* 8360 */ // MIs[0] src
8152 /* 8360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8153 /* 8364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
8154 /* 8368 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
8155 /* 8371 */ // MIs[1] unused
8156 /* 8371 */ // No operand predicates
8157 /* 8371 */ // MIs[0] idx
8158 /* 8371 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8159 /* 8375 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8160 /* 8379 */ // MIs[2] imm
8161 /* 8379 */ // No operand predicates
8162 /* 8379 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8163 /* 8381 */ // Combiner Rule #30: extract_vector_element_build_vector
8164 /* 8381 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
8165 /* 8384 */ // Label 496: @8384
8166 /* 8384 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8408), // Rule ID 24 //
8167 /* 8389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
8168 /* 8392 */ // MIs[0] root
8169 /* 8392 */ // No operand predicates
8170 /* 8392 */ // MIs[0] vector
8171 /* 8392 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8172 /* 8396 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8173 /* 8400 */ // MIs[0] idx
8174 /* 8400 */ // No operand predicates
8175 /* 8400 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8176 /* 8402 */ // Combiner Rule #22: match_extract_of_element_undef_vector
8177 /* 8402 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8178 /* 8405 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8179 /* 8407 */ GIR_EraseRootFromParent_Done,
8180 /* 8408 */ // Label 497: @8408
8181 /* 8408 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8432), // Rule ID 25 //
8182 /* 8413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
8183 /* 8416 */ // MIs[0] root
8184 /* 8416 */ // No operand predicates
8185 /* 8416 */ // MIs[0] vector
8186 /* 8416 */ // No operand predicates
8187 /* 8416 */ // MIs[0] idx
8188 /* 8416 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8189 /* 8420 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8190 /* 8424 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8191 /* 8426 */ // Combiner Rule #23: match_extract_of_element_undef_index
8192 /* 8426 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8193 /* 8429 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8194 /* 8431 */ GIR_EraseRootFromParent_Done,
8195 /* 8432 */ // Label 498: @8432
8196 /* 8432 */ GIM_Reject,
8197 /* 8433 */ // Label 98: @8433
8198 /* 8433 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8444), // Rule ID 100 //
8199 /* 8438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
8200 /* 8441 */ // Combiner Rule #82: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
8201 /* 8441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
8202 /* 8444 */ // Label 499: @8444
8203 /* 8444 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8455), // Rule ID 102 //
8204 /* 8449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8205 /* 8452 */ // Combiner Rule #83: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8206 /* 8452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
8207 /* 8455 */ // Label 500: @8455
8208 /* 8455 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(8466), // Rule ID 366 //
8209 /* 8460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8210 /* 8463 */ // Combiner Rule #217: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
8211 /* 8463 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
8212 /* 8466 */ // Label 501: @8466
8213 /* 8466 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(8477), // Rule ID 368 //
8214 /* 8471 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
8215 /* 8474 */ // Combiner Rule #219: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8216 /* 8474 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
8217 /* 8477 */ // Label 502: @8477
8218 /* 8477 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(8498), // Rule ID 367 //
8219 /* 8482 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
8220 /* 8485 */ // MIs[0] root
8221 /* 8485 */ // No operand predicates
8222 /* 8485 */ // MIs[0] src1
8223 /* 8485 */ // No operand predicates
8224 /* 8485 */ // MIs[0] undef
8225 /* 8485 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8226 /* 8489 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8227 /* 8493 */ // MIs[0] mask
8228 /* 8493 */ // No operand predicates
8229 /* 8493 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8230 /* 8495 */ // Combiner Rule #218: combine_shuffle_undef_rhs
8231 /* 8495 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
8232 /* 8498 */ // Label 503: @8498
8233 /* 8498 */ GIM_Reject,
8234 /* 8499 */ // Label 99: @8499
8235 /* 8499 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(8510), // Rule ID 389 //
8236 /* 8504 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
8237 /* 8507 */ // MIs[0] dst
8238 /* 8507 */ // No operand predicates
8239 /* 8507 */ // MIs[0] src
8240 /* 8507 */ // No operand predicates
8241 /* 8507 */ // Combiner Rule #238: ctlz_to_ctls
8242 /* 8507 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8243 /* 8510 */ // Label 504: @8510
8244 /* 8510 */ GIM_Reject,
8245 /* 8511 */ // Label 100: @8511
8246 /* 8511 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(8522), // Rule ID 390 //
8247 /* 8516 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
8248 /* 8519 */ // MIs[0] dst
8249 /* 8519 */ // No operand predicates
8250 /* 8519 */ // MIs[0] src
8251 /* 8519 */ // No operand predicates
8252 /* 8519 */ // Combiner Rule #239: ctlz_zero_undef_to_ctls
8253 /* 8519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8254 /* 8522 */ // Label 505: @8522
8255 /* 8522 */ GIM_Reject,
8256 /* 8523 */ // Label 101: @8523
8257 /* 8523 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(8567), // Rule ID 242 //
8258 /* 8528 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8259 /* 8531 */ // MIs[0] d
8260 /* 8531 */ // No operand predicates
8261 /* 8531 */ // MIs[0] src
8262 /* 8531 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8263 /* 8535 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
8264 /* 8539 */ // MIs[1] rev
8265 /* 8539 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8266 /* 8543 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8267 /* 8547 */ // MIs[2] val
8268 /* 8547 */ // No operand predicates
8269 /* 8547 */ // MIs[1] amt
8270 /* 8547 */ // No operand predicates
8271 /* 8547 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
8272 /* 8551 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8273 /* 8553 */ // Combiner Rule #175: bitreverse_lshr
8274 /* 8553 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8275 /* 8556 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8276 /* 8558 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8277 /* 8562 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8278 /* 8566 */ GIR_EraseRootFromParent_Done,
8279 /* 8567 */ // Label 506: @8567
8280 /* 8567 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(8611), // Rule ID 241 //
8281 /* 8572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8282 /* 8575 */ // MIs[0] d
8283 /* 8575 */ // No operand predicates
8284 /* 8575 */ // MIs[0] src
8285 /* 8575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8286 /* 8579 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
8287 /* 8583 */ // MIs[1] rev
8288 /* 8583 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8289 /* 8587 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8290 /* 8591 */ // MIs[2] val
8291 /* 8591 */ // No operand predicates
8292 /* 8591 */ // MIs[1] amt
8293 /* 8591 */ // No operand predicates
8294 /* 8591 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
8295 /* 8595 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8296 /* 8597 */ // Combiner Rule #174: bitreverse_shl
8297 /* 8597 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
8298 /* 8600 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8299 /* 8602 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8300 /* 8606 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8301 /* 8610 */ GIR_EraseRootFromParent_Done,
8302 /* 8611 */ // Label 507: @8611
8303 /* 8611 */ GIM_Reject,
8304 /* 8612 */ // Label 102: @8612
8305 /* 8612 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(8633), // Rule ID 189 //
8306 /* 8617 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
8307 /* 8620 */ // MIs[0] dst
8308 /* 8620 */ // No operand predicates
8309 /* 8620 */ // MIs[0] src0
8310 /* 8620 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8311 /* 8624 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8312 /* 8628 */ // MIs[1] cst
8313 /* 8628 */ // No operand predicates
8314 /* 8628 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8315 /* 8630 */ // Combiner Rule #145: constant_fold_fceil
8316 /* 8630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8317 /* 8633 */ // Label 508: @8633
8318 /* 8633 */ GIM_Reject,
8319 /* 8634 */ // Label 103: @8634
8320 /* 8634 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(8655), // Rule ID 185 //
8321 /* 8639 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
8322 /* 8642 */ // MIs[0] dst
8323 /* 8642 */ // No operand predicates
8324 /* 8642 */ // MIs[0] src0
8325 /* 8642 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8326 /* 8646 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8327 /* 8650 */ // MIs[1] cst
8328 /* 8650 */ // No operand predicates
8329 /* 8650 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8330 /* 8652 */ // Combiner Rule #141: constant_fold_fsqrt
8331 /* 8652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8332 /* 8655 */ // Label 509: @8655
8333 /* 8655 */ GIM_Reject,
8334 /* 8656 */ // Label 104: @8656
8335 /* 8656 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(8677), // Rule ID 190 //
8336 /* 8661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8337 /* 8664 */ // MIs[0] dst
8338 /* 8664 */ // No operand predicates
8339 /* 8664 */ // MIs[0] src0
8340 /* 8664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8341 /* 8668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8342 /* 8672 */ // MIs[1] cst
8343 /* 8672 */ // No operand predicates
8344 /* 8672 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8345 /* 8674 */ // Combiner Rule #146: constant_fold_ffloor
8346 /* 8674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8347 /* 8677 */ // Label 510: @8677
8348 /* 8677 */ GIM_Reject,
8349 /* 8678 */ // Label 105: @8678
8350 /* 8678 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(8699), // Rule ID 194 //
8351 /* 8683 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
8352 /* 8686 */ // MIs[0] dst
8353 /* 8686 */ // No operand predicates
8354 /* 8686 */ // MIs[0] src0
8355 /* 8686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8356 /* 8690 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8357 /* 8694 */ // MIs[1] cst
8358 /* 8694 */ // No operand predicates
8359 /* 8694 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8360 /* 8696 */ // Combiner Rule #150: constant_fold_frint
8361 /* 8696 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8362 /* 8699 */ // Label 511: @8699
8363 /* 8699 */ GIM_Reject,
8364 /* 8700 */ // Label 106: @8700
8365 /* 8700 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(8721), // Rule ID 195 //
8366 /* 8705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
8367 /* 8708 */ // MIs[0] dst
8368 /* 8708 */ // No operand predicates
8369 /* 8708 */ // MIs[0] src0
8370 /* 8708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8371 /* 8712 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8372 /* 8716 */ // MIs[1] cst
8373 /* 8716 */ // No operand predicates
8374 /* 8716 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8375 /* 8718 */ // Combiner Rule #151: constant_fold_fnearbyint
8376 /* 8718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8377 /* 8721 */ // Label 512: @8721
8378 /* 8721 */ GIM_Reject,
8379 /* 8722 */ // Label 107: @8722
8380 /* 8722 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(8736), // Rule ID 396 //
8381 /* 8727 */ GIM_CheckFeatures, GIMT_Encode2(GIFBS_HasDotProd),
8382 /* 8730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
8383 /* 8733 */ // Combiner Rule #244: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD'
8384 /* 8733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
8385 /* 8736 */ // Label 513: @8736
8386 /* 8736 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(8747), // Rule ID 397 //
8387 /* 8741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
8388 /* 8744 */ // Combiner Rule #245: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD'
8389 /* 8744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
8390 /* 8747 */ // Label 514: @8747
8391 /* 8747 */ GIM_Reject,
8392 /* 8748 */ // Label 108: @8748
8393 /* 8748 */ GIM_Reject,
8394 /* 8749 */ }; // Size: 8749 bytes
8395 return MatchTable0;
8396}
8397#undef GIMT_Encode2
8398#undef GIMT_Encode4
8399#undef GIMT_Encode8
8400
8401
8402#endif // GET_GICOMBINER_IMPL
8403
8404#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8405
8406AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
8407AvailableFunctionFeatures()
8408
8409#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8410
8411#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8412
8413, State(0),
8414ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
8415
8416#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8417
8418