1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* RISCVPreLegalizerCombinerImpl Combiner Match Table *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_GICOMBINER_DEPS
10
11#include "llvm/ADT/SparseBitVector.h"
12namespace llvm {
13
14extern cl::OptionCategory GICombinerOptionCategory;
15
16} // namespace llvm
17
18#endif // GET_GICOMBINER_DEPS
19
20#ifdef GET_GICOMBINER_TYPES
21
22struct RISCVPreLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 9: // 5 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 320; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 19; // "copy_prop"
52 case 'm': // 1 string to match.
53 if (memcmp(RuleIdentifier.data()+1, "atch_ors", 8) != 0)
54 break;
55 return 279; // "match_ors"
56 case 'n': // 1 string to match.
57 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
58 break;
59 return 290; // "nneg_zext"
60 case 'o': // 1 string to match.
61 if (memcmp(RuleIdentifier.data()+1, "r_xor_or", 8) != 0)
62 break;
63 return 284; // "or_xor_or"
64 }
65 break;
66 case 10: // 10 strings to match.
67 switch (RuleIdentifier[0]) {
68 default: break;
69 case 'S': // 2 strings to match.
70 if (memcmp(RuleIdentifier.data()+1, "ub", 2) != 0)
71 break;
72 switch (RuleIdentifier[3]) {
73 default: break;
74 case 'S': // 1 string to match.
75 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
76 break;
77 return 325; // "SubSmaxSub"
78 case 'U': // 1 string to match.
79 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
80 break;
81 return 326; // "SubUmaxSub"
82 }
83 break;
84 case 'm': // 2 strings to match.
85 switch (RuleIdentifier[1]) {
86 default: break;
87 case 'a': // 1 string to match.
88 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
89 break;
90 return 278; // "match_ands"
91 case 'u': // 1 string to match.
92 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
93 break;
94 return 20; // "mul_to_shl"
95 }
96 break;
97 case 'o': // 1 string to match.
98 if (memcmp(RuleIdentifier.data()+1, "r_xor_and", 9) != 0)
99 break;
100 return 285; // "or_xor_and"
101 case 'p': // 1 string to match.
102 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
103 break;
104 return 97; // "p2i_to_i2p"
105 case 's': // 3 strings to match.
106 switch (RuleIdentifier[1]) {
107 default: break;
108 case 'e': // 2 strings to match.
109 switch (RuleIdentifier[2]) {
110 default: break;
111 case 'l': // 1 string to match.
112 if (memcmp(RuleIdentifier.data()+3, "ect_not", 7) != 0)
113 break;
114 return 143; // "select_not"
115 case 'x': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+3, "t_trunc", 7) != 0)
117 break;
118 return 288; // "sext_trunc"
119 }
120 break;
121 case 'u': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
123 break;
124 return 21; // "sub_to_add"
125 }
126 break;
127 case 'z': // 1 string to match.
128 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
129 break;
130 return 289; // "zext_trunc"
131 }
132 break;
133 case 11: // 6 strings to match.
134 switch (RuleIdentifier[0]) {
135 default: break;
136 case 'a': // 1 string to match.
137 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
138 break;
139 return 105; // "add_sub_reg"
140 case 't': // 4 strings to match.
141 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
142 break;
143 switch (RuleIdentifier[6]) {
144 default: break;
145 case 's': // 3 strings to match.
146 switch (RuleIdentifier[7]) {
147 default: break;
148 case 'h': // 1 string to match.
149 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
150 break;
151 return 154; // "trunc_shift"
152 case 's': // 2 strings to match.
153 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
154 break;
155 switch (RuleIdentifier[10]) {
156 default: break;
157 case 's': // 1 string to match.
158 return 311; // "trunc_ssats"
159 case 'u': // 1 string to match.
160 return 312; // "trunc_ssatu"
161 }
162 break;
163 }
164 break;
165 case 'u': // 1 string to match.
166 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
167 break;
168 return 313; // "trunc_usatu"
169 }
170 break;
171 case 'u': // 1 string to match.
172 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
173 break;
174 return 298; // "unmerge_cst"
175 }
176 break;
177 case 12: // 11 strings to match.
178 switch (RuleIdentifier[0]) {
179 default: break;
180 case 'A': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
182 break;
183 return 4; // "APlusBMinusB"
184 case 'B': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
186 break;
187 return 5; // "BMinusAPlusA"
188 case 'c': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
190 break;
191 return 316; // "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 248; // "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 216; // "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 155; // "not_cmp_fold"
204 case 'r': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
206 break;
207 return 150; // "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 239; // "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 53; // "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 238; // "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 51; // "zext_of_zext"
229 }
230 break;
231 case 13: // 18 strings to match.
232 switch (RuleIdentifier[0]) {
233 default: break;
234 case 'A': // 2 strings to match.
235 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
236 break;
237 switch (RuleIdentifier[12]) {
238 default: break;
239 case 'A': // 1 string to match.
240 return 12; // "AMinusBMinusA"
241 case 'C': // 1 string to match.
242 return 9; // "AMinusBMinusC"
243 }
244 break;
245 case 'a': // 1 string to match.
246 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
247 break;
248 return 42; // "add_of_vscale"
249 case 'l': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
251 break;
252 return 74; // "load_and_mask"
253 case 'm': // 3 strings to match.
254 switch (RuleIdentifier[1]) {
255 default: break;
256 case 'a': // 1 string to match.
257 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
258 break;
259 return 141; // "match_selects"
260 case 'e': // 1 string to match.
261 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
262 break;
263 return 297; // "merge_unmerge"
264 case 'u': // 1 string to match.
265 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
266 break;
267 return 43; // "mul_of_vscale"
268 }
269 break;
270 case 'r': // 1 string to match.
271 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
272 break;
273 return 149; // "redundant_and"
274 case 's': // 6 strings to match.
275 switch (RuleIdentifier[1]) {
276 default: break;
277 case 'a': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
279 break;
280 return 94; // "same_val_zero"
281 case 'd': // 1 string to match.
282 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
283 break;
284 return 241; // "sdiv_by_const"
285 case 'h': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
287 break;
288 return 44; // "shl_of_vscale"
289 case 'r': // 1 string to match.
290 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
291 break;
292 return 237; // "srem_by_const"
293 case 'u': // 2 strings to match.
294 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
295 break;
296 switch (RuleIdentifier[4]) {
297 default: break;
298 case 'm': // 1 string to match.
299 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
300 break;
301 return 323; // "sub_minus_one"
302 case 'o': // 1 string to match.
303 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
304 break;
305 return 45; // "sub_of_vscale"
306 }
307 break;
308 }
309 break;
310 case 'u': // 4 strings to match.
311 switch (RuleIdentifier[1]) {
312 default: break;
313 case 'd': // 1 string to match.
314 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
315 break;
316 return 240; // "udiv_by_const"
317 case 'n': // 2 strings to match.
318 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
319 break;
320 switch (RuleIdentifier[8]) {
321 default: break;
322 case 'm': // 1 string to match.
323 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
324 break;
325 return 296; // "unmerge_merge"
326 case 'u': // 1 string to match.
327 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
328 break;
329 return 299; // "unmerge_undef"
330 }
331 break;
332 case 'r': // 1 string to match.
333 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
334 break;
335 return 236; // "urem_by_const"
336 }
337 break;
338 }
339 break;
340 case 14: // 17 strings to match.
341 switch (RuleIdentifier[0]) {
342 default: break;
343 case 'A': // 2 strings to match.
344 switch (RuleIdentifier[1]) {
345 default: break;
346 case 'M': // 1 string to match.
347 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
348 break;
349 return 18; // "AMinusC1PlusC2"
350 case 'P': // 1 string to match.
351 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
352 break;
353 return 14; // "APlusC1MinusC2"
354 }
355 break;
356 case 'C': // 1 string to match.
357 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
358 break;
359 return 15; // "C2MinusAPlusC1"
360 case 'N': // 1 string to match.
361 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
362 break;
363 return 13; // "NotAPlusNegOne"
364 case 'a': // 2 strings to match.
365 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
366 break;
367 switch (RuleIdentifier[10]) {
368 default: break;
369 case 's': // 1 string to match.
370 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
371 break;
372 return 57; // "anyext_of_sext"
373 case 'z': // 1 string to match.
374 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
375 break;
376 return 56; // "anyext_of_zext"
377 }
378 break;
379 case 'b': // 3 strings to match.
380 if (RuleIdentifier[1] != 'i')
381 break;
382 switch (RuleIdentifier[2]) {
383 default: break;
384 case 'n': // 2 strings to match.
385 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
386 break;
387 switch (RuleIdentifier[6]) {
388 default: break;
389 case 's': // 1 string to match.
390 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
391 break;
392 return 93; // "binop_same_val"
393 case 'w': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
395 break;
396 return 322; // "binop_with_neg"
397 }
398 break;
399 case 't': // 1 string to match.
400 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
401 break;
402 return 202; // "bitreverse_shl"
403 }
404 break;
405 case 'f': // 2 strings to match.
406 switch (RuleIdentifier[1]) {
407 default: break;
408 case 'a': // 1 string to match.
409 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
410 break;
411 return 215; // "fabs_fneg_fold"
412 case 'n': // 1 string to match.
413 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
414 break;
415 return 102; // "fneg_fneg_fold"
416 }
417 break;
418 case 'm': // 1 string to match.
419 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
420 break;
421 return 23; // "mul_by_neg_one"
422 case 'r': // 1 string to match.
423 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
424 break;
425 return 120; // "reassoc_ptradd"
426 case 's': // 3 strings to match.
427 switch (RuleIdentifier[1]) {
428 default: break;
429 case 'e': // 2 strings to match.
430 switch (RuleIdentifier[2]) {
431 default: break;
432 case 'l': // 1 string to match.
433 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
434 break;
435 return 59; // "select_of_zext"
436 case 'x': // 1 string to match.
437 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
438 break;
439 return 54; // "sext_of_anyext"
440 }
441 break;
442 case 'h': // 1 string to match.
443 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
444 break;
445 return 119; // "shifts_too_big"
446 }
447 break;
448 case 'z': // 1 string to match.
449 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
450 break;
451 return 52; // "zext_of_anyext"
452 }
453 break;
454 case 15: // 23 strings to match.
455 switch (RuleIdentifier[0]) {
456 default: break;
457 case 'A': // 2 strings to match.
458 switch (RuleIdentifier[1]) {
459 default: break;
460 case 'M': // 1 string to match.
461 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
462 break;
463 return 16; // "AMinusC1MinusC2"
464 case 'P': // 1 string to match.
465 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
466 break;
467 return 3; // "APlusZeroMinusB"
468 }
469 break;
470 case 'C': // 1 string to match.
471 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
472 break;
473 return 17; // "C1Minus2MinusC2"
474 case 'G': // 1 string to match.
475 if (memcmp(RuleIdentifier.data()+1, "_FMA_fneg_fneg", 14) != 0)
476 break;
477 return 223; // "G_FMA_fneg_fneg"
478 case 'Z': // 1 string to match.
479 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
480 break;
481 return 2; // "ZeroMinusAPlusB"
482 case 'a': // 2 strings to match.
483 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
484 break;
485 switch (RuleIdentifier[8]) {
486 default: break;
487 case 's': // 1 string to match.
488 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
489 break;
490 return 330; // "avgceil_s_match"
491 case 'u': // 1 string to match.
492 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
493 break;
494 return 329; // "avgceil_u_match"
495 }
496 break;
497 case 'b': // 1 string to match.
498 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
499 break;
500 return 203; // "bitreverse_lshr"
501 case 'e': // 1 string to match.
502 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
503 break;
504 return 73; // "extending_loads"
505 case 'i': // 2 strings to match.
506 switch (RuleIdentifier[1]) {
507 default: break;
508 case '2': // 1 string to match.
509 if (memcmp(RuleIdentifier.data()+2, "p_to_p2i_zext", 13) != 0)
510 break;
511 return 99; // "i2p_to_p2i_zext"
512 case 'd': // 1 string to match.
513 if (memcmp(RuleIdentifier.data()+2, "empotent_prop", 13) != 0)
514 break;
515 return 24; // "idempotent_prop"
516 }
517 break;
518 case 'l': // 1 string to match.
519 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
520 break;
521 return 192; // "load_or_combine"
522 case 'm': // 4 strings to match.
523 if (memcmp(RuleIdentifier.data()+1, "ulo_by_", 7) != 0)
524 break;
525 switch (RuleIdentifier[8]) {
526 default: break;
527 case '0': // 2 strings to match.
528 if (RuleIdentifier[9] != '_')
529 break;
530 switch (RuleIdentifier[10]) {
531 default: break;
532 case 's': // 1 string to match.
533 if (memcmp(RuleIdentifier.data()+11, "mulo", 4) != 0)
534 break;
535 return 177; // "mulo_by_0_smulo"
536 case 'u': // 1 string to match.
537 if (memcmp(RuleIdentifier.data()+11, "mulo", 4) != 0)
538 break;
539 return 176; // "mulo_by_0_umulo"
540 }
541 break;
542 case '2': // 2 strings to match.
543 if (RuleIdentifier[9] != '_')
544 break;
545 switch (RuleIdentifier[10]) {
546 default: break;
547 case 's': // 1 string to match.
548 if (memcmp(RuleIdentifier.data()+11, "mulo", 4) != 0)
549 break;
550 return 175; // "mulo_by_2_smulo"
551 case 'u': // 1 string to match.
552 if (memcmp(RuleIdentifier.data()+11, "mulo", 4) != 0)
553 break;
554 return 174; // "mulo_by_2_umulo"
555 }
556 break;
557 }
558 break;
559 case 'n': // 1 string to match.
560 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
561 break;
562 return 67; // "narrow_binop_or"
563 case 'o': // 1 string to match.
564 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
565 break;
566 return 173; // "overlapping_and"
567 case 's': // 4 strings to match.
568 if (memcmp(RuleIdentifier.data()+1, "ub_add_", 7) != 0)
569 break;
570 switch (RuleIdentifier[8]) {
571 default: break;
572 case 'n': // 2 strings to match.
573 if (memcmp(RuleIdentifier.data()+9, "eg_", 3) != 0)
574 break;
575 switch (RuleIdentifier[12]) {
576 default: break;
577 case 'l': // 1 string to match.
578 if (memcmp(RuleIdentifier.data()+13, "hs", 2) != 0)
579 break;
580 return 246; // "sub_add_neg_lhs"
581 case 'r': // 1 string to match.
582 if (memcmp(RuleIdentifier.data()+13, "hs", 2) != 0)
583 break;
584 return 245; // "sub_add_neg_rhs"
585 }
586 break;
587 case 'r': // 2 strings to match.
588 if (memcmp(RuleIdentifier.data()+9, "eg_", 3) != 0)
589 break;
590 switch (RuleIdentifier[12]) {
591 default: break;
592 case 'l': // 1 string to match.
593 if (memcmp(RuleIdentifier.data()+13, "hs", 2) != 0)
594 break;
595 return 244; // "sub_add_reg_lhs"
596 case 'r': // 1 string to match.
597 if (memcmp(RuleIdentifier.data()+13, "hs", 2) != 0)
598 break;
599 return 243; // "sub_add_reg_rhs"
600 }
601 break;
602 }
603 break;
604 case 'z': // 1 string to match.
605 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
606 break;
607 return 152; // "zext_trunc_fold"
608 }
609 break;
610 case 16: // 23 strings to match.
611 switch (RuleIdentifier[0]) {
612 default: break;
613 case 'A': // 1 string to match.
614 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
615 break;
616 return 11; // "AMinusZeroMinusB"
617 case 'G': // 3 strings to match.
618 if (memcmp(RuleIdentifier.data()+1, "_F", 2) != 0)
619 break;
620 switch (RuleIdentifier[3]) {
621 default: break;
622 case 'D': // 1 string to match.
623 if (memcmp(RuleIdentifier.data()+4, "IV_fneg_fneg", 12) != 0)
624 break;
625 return 221; // "G_FDIV_fneg_fneg"
626 case 'M': // 2 strings to match.
627 switch (RuleIdentifier[4]) {
628 default: break;
629 case 'A': // 1 string to match.
630 if (memcmp(RuleIdentifier.data()+5, "D_fneg_fneg", 11) != 0)
631 break;
632 return 222; // "G_FMAD_fneg_fneg"
633 case 'U': // 1 string to match.
634 if (memcmp(RuleIdentifier.data()+5, "L_fneg_fneg", 11) != 0)
635 break;
636 return 220; // "G_FMUL_fneg_fneg"
637 }
638 break;
639 }
640 break;
641 case 'a': // 3 strings to match.
642 switch (RuleIdentifier[1]) {
643 default: break;
644 case 'n': // 1 string to match.
645 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
646 break;
647 return 55; // "anyext_of_anyext"
648 case 'v': // 2 strings to match.
649 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
650 break;
651 switch (RuleIdentifier[9]) {
652 default: break;
653 case 's': // 1 string to match.
654 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
655 break;
656 return 328; // "avgfloor_s_match"
657 case 'u': // 1 string to match.
658 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
659 break;
660 return 327; // "avgfloor_u_match"
661 }
662 break;
663 }
664 break;
665 case 'c': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+1, "ommute_shift_or", 15) != 0)
667 break;
668 return 205; // "commute_shift_or"
669 case 'i': // 1 string to match.
670 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_trunc", 15) != 0)
671 break;
672 return 100; // "i2p_to_p2i_trunc"
673 case 'n': // 5 strings to match.
674 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
675 break;
676 switch (RuleIdentifier[13]) {
677 default: break;
678 case 'a': // 2 strings to match.
679 switch (RuleIdentifier[14]) {
680 default: break;
681 case 'd': // 1 string to match.
682 if (RuleIdentifier[15] != 'd')
683 break;
684 return 63; // "narrow_binop_add"
685 case 'n': // 1 string to match.
686 if (RuleIdentifier[15] != 'd')
687 break;
688 return 66; // "narrow_binop_and"
689 }
690 break;
691 case 'm': // 1 string to match.
692 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
693 break;
694 return 65; // "narrow_binop_mul"
695 case 's': // 1 string to match.
696 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
697 break;
698 return 64; // "narrow_binop_sub"
699 case 'x': // 1 string to match.
700 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
701 break;
702 return 68; // "narrow_binop_xor"
703 }
704 break;
705 case 'o': // 1 string to match.
706 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
707 break;
708 return 280; // "or_and_xor_to_or"
709 case 's': // 5 strings to match.
710 switch (RuleIdentifier[1]) {
711 default: break;
712 case 'e': // 3 strings to match.
713 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
714 break;
715 switch (RuleIdentifier[7]) {
716 default: break;
717 case 'o': // 1 string to match.
718 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
719 break;
720 return 60; // "select_of_anyext"
721 case 't': // 1 string to match.
722 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
723 break;
724 return 247; // "select_to_minmax"
725 case 'u': // 1 string to match.
726 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
727 break;
728 return 135; // "select_undef_cmp"
729 }
730 break;
731 case 'u': // 2 strings to match.
732 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
733 break;
734 switch (RuleIdentifier[5]) {
735 default: break;
736 case 'f': // 1 string to match.
737 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
738 break;
739 return 324; // "sub_of_mul_const"
740 case 'n': // 1 string to match.
741 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
742 break;
743 return 321; // "sub_one_from_sub"
744 }
745 break;
746 }
747 break;
748 case 't': // 2 strings to match.
749 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
750 break;
751 switch (RuleIdentifier[12]) {
752 default: break;
753 case 's': // 1 string to match.
754 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
755 break;
756 return 49; // "truncate_of_sext"
757 case 'z': // 1 string to match.
758 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
759 break;
760 return 48; // "truncate_of_zext"
761 }
762 break;
763 case 'u': // 1 string to match.
764 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
765 break;
766 return 76; // "undef_to_fp_zero"
767 }
768 break;
769 case 17: // 20 strings to match.
770 switch (RuleIdentifier[0]) {
771 default: break;
772 case 'A': // 2 strings to match.
773 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
774 break;
775 switch (RuleIdentifier[11]) {
776 default: break;
777 case 'A': // 1 string to match.
778 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
779 break;
780 return 8; // "APlusBMinusAplusC"
781 case 'C': // 1 string to match.
782 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
783 break;
784 return 10; // "APlusBMinusCPlusA"
785 }
786 break;
787 case 'a': // 3 strings to match.
788 switch (RuleIdentifier[1]) {
789 default: break;
790 case 'd': // 1 string to match.
791 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
792 break;
793 return 22; // "add_p2i_to_ptradd"
794 case 'n': // 2 strings to match.
795 switch (RuleIdentifier[2]) {
796 default: break;
797 case 'd': // 1 string to match.
798 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
799 break;
800 return 282; // "and_xor_or_to_and"
801 case 'y': // 1 string to match.
802 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
803 break;
804 return 101; // "anyext_trunc_fold"
805 }
806 break;
807 }
808 break;
809 case 'c': // 5 strings to match.
810 switch (RuleIdentifier[1]) {
811 default: break;
812 case 'a': // 2 strings to match.
813 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
814 break;
815 switch (RuleIdentifier[13]) {
816 default: break;
817 case 'f': // 1 string to match.
818 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
819 break;
820 return 124; // "canonicalize_fcmp"
821 case 'i': // 1 string to match.
822 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
823 break;
824 return 123; // "canonicalize_icmp"
825 }
826 break;
827 case 'o': // 3 strings to match.
828 switch (RuleIdentifier[2]) {
829 default: break;
830 case 'm': // 2 strings to match.
831 switch (RuleIdentifier[3]) {
832 default: break;
833 case 'b': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+4, "ine_or_of_and", 13) != 0)
835 break;
836 return 331; // "combine_or_of_and"
837 case 'm': // 1 string to match.
838 if (memcmp(RuleIdentifier.data()+4, "ute_shift_add", 13) != 0)
839 break;
840 return 204; // "commute_shift_add"
841 }
842 break;
843 case 'n': // 1 string to match.
844 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
845 break;
846 return 212; // "constant_fold_fma"
847 }
848 break;
849 }
850 break;
851 case 'd': // 1 string to match.
852 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
853 break;
854 return 193; // "div_rem_to_divrem"
855 case 'e': // 1 string to match.
856 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
857 break;
858 return 87; // "erase_undef_store"
859 case 'm': // 2 strings to match.
860 if (memcmp(RuleIdentifier.data()+1, "atch_addos_", 11) != 0)
861 break;
862 switch (RuleIdentifier[12]) {
863 default: break;
864 case 's': // 1 string to match.
865 if (memcmp(RuleIdentifier.data()+13, "addo", 4) != 0)
866 break;
867 return 307; // "match_addos_saddo"
868 case 'u': // 1 string to match.
869 if (memcmp(RuleIdentifier.data()+13, "addo", 4) != 0)
870 break;
871 return 308; // "match_addos_uaddo"
872 }
873 break;
874 case 's': // 4 strings to match.
875 switch (RuleIdentifier[1]) {
876 default: break;
877 case 'e': // 2 strings to match.
878 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
879 break;
880 switch (RuleIdentifier[7]) {
881 default: break;
882 case 't': // 1 string to match.
883 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
884 break;
885 return 140; // "select_to_iminmax"
886 case 'z': // 1 string to match.
887 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
888 break;
889 return 142; // "select_zero_false"
890 }
891 break;
892 case 'h': // 1 string to match.
893 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
894 break;
895 return 190; // "shift_immed_chain"
896 case 'r': // 1 string to match.
897 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
898 break;
899 return 235; // "srem_pow2_to_mask"
900 }
901 break;
902 case 'u': // 2 strings to match.
903 switch (RuleIdentifier[1]) {
904 default: break;
905 case 'n': // 1 string to match.
906 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
907 break;
908 return 77; // "undef_to_int_zero"
909 case 'r': // 1 string to match.
910 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
911 break;
912 return 151; // "urem_pow2_to_mask"
913 }
914 break;
915 }
916 break;
917 case 18: // 17 strings to match.
918 switch (RuleIdentifier[0]) {
919 default: break;
920 case 'A': // 3 strings to match.
921 switch (RuleIdentifier[1]) {
922 default: break;
923 case 'M': // 2 strings to match.
924 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
925 break;
926 switch (RuleIdentifier[11]) {
927 default: break;
928 case 'B': // 1 string to match.
929 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
930 break;
931 return 7; // "AMinusBPlusBMinusC"
932 case 'C': // 1 string to match.
933 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
934 break;
935 return 6; // "AMinusBPlusCMinusA"
936 }
937 break;
938 case 'P': // 1 string to match.
939 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
940 break;
941 return 0; // "APlusBMinusCMinusB"
942 }
943 break;
944 case 'a': // 4 strings to match.
945 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo_", 12) != 0)
946 break;
947 switch (RuleIdentifier[13]) {
948 default: break;
949 case 's': // 2 strings to match.
950 switch (RuleIdentifier[14]) {
951 default: break;
952 case 'a': // 1 string to match.
953 if (memcmp(RuleIdentifier.data()+15, "dde", 3) != 0)
954 break;
955 return 179; // "adde_to_addo_sadde"
956 case 's': // 1 string to match.
957 if (memcmp(RuleIdentifier.data()+15, "ube", 3) != 0)
958 break;
959 return 181; // "adde_to_addo_ssube"
960 }
961 break;
962 case 'u': // 2 strings to match.
963 switch (RuleIdentifier[14]) {
964 default: break;
965 case 'a': // 1 string to match.
966 if (memcmp(RuleIdentifier.data()+15, "dde", 3) != 0)
967 break;
968 return 178; // "adde_to_addo_uadde"
969 case 's': // 1 string to match.
970 if (memcmp(RuleIdentifier.data()+15, "ube", 3) != 0)
971 break;
972 return 180; // "adde_to_addo_usube"
973 }
974 break;
975 }
976 break;
977 case 'b': // 1 string to match.
978 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
979 break;
980 return 95; // "binop_left_to_zero"
981 case 'c': // 2 strings to match.
982 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
983 break;
984 switch (RuleIdentifier[15]) {
985 default: break;
986 case 'a': // 1 string to match.
987 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
988 break;
989 return 158; // "constant_fold_fabs"
990 case 'n': // 1 string to match.
991 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
992 break;
993 return 157; // "constant_fold_fneg"
994 }
995 break;
996 case 'e': // 1 string to match.
997 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
998 break;
999 return 186; // "expand_const_fpowi"
1000 case 'f': // 1 string to match.
1001 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
1002 break;
1003 return 112; // "fptrunc_fpext_fold"
1004 case 'm': // 2 strings to match.
1005 if (memcmp(RuleIdentifier.data()+1, "inmax_nan_num_", 14) != 0)
1006 break;
1007 switch (RuleIdentifier[15]) {
1008 default: break;
1009 case 'l': // 1 string to match.
1010 if (memcmp(RuleIdentifier.data()+16, "hs", 2) != 0)
1011 break;
1012 return 182; // "minmax_nan_num_lhs"
1013 case 'r': // 1 string to match.
1014 if (memcmp(RuleIdentifier.data()+16, "hs", 2) != 0)
1015 break;
1016 return 183; // "minmax_nan_num_rhs"
1017 }
1018 break;
1019 case 's': // 2 strings to match.
1020 if (RuleIdentifier[1] != 'e')
1021 break;
1022 switch (RuleIdentifier[2]) {
1023 default: break;
1024 case 'l': // 1 string to match.
1025 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
1026 break;
1027 return 61; // "select_of_truncate"
1028 case 'x': // 1 string to match.
1029 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
1030 break;
1031 return 132; // "sext_inreg_of_load"
1032 }
1033 break;
1034 case 't': // 1 string to match.
1035 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
1036 break;
1037 return 50; // "truncate_of_anyext"
1038 }
1039 break;
1040 case 19: // 20 strings to match.
1041 switch (RuleIdentifier[0]) {
1042 default: break;
1043 case 'A': // 1 string to match.
1044 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
1045 break;
1046 return 1; // "AMinusBMinusCMinusC"
1047 case 'b': // 1 string to match.
1048 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
1049 break;
1050 return 96; // "binop_right_to_zero"
1051 case 'c': // 7 strings to match.
1052 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
1053 break;
1054 switch (RuleIdentifier[5]) {
1055 default: break;
1056 case '_': // 1 string to match.
1057 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
1058 break;
1059 return 172; // "const_ptradd_to_i2p"
1060 case 'a': // 6 strings to match.
1061 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
1062 break;
1063 switch (RuleIdentifier[14]) {
1064 default: break;
1065 case 'b': // 1 string to match.
1066 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
1067 break;
1068 return 210; // "constant_fold_binop"
1069 case 'f': // 5 strings to match.
1070 switch (RuleIdentifier[15]) {
1071 default: break;
1072 case 'c': // 1 string to match.
1073 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
1074 break;
1075 return 163; // "constant_fold_fceil"
1076 case 'l': // 1 string to match.
1077 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
1078 break;
1079 return 160; // "constant_fold_flog2"
1080 case 'p': // 1 string to match.
1081 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
1082 break;
1083 return 162; // "constant_fold_fpext"
1084 case 'r': // 1 string to match.
1085 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
1086 break;
1087 return 168; // "constant_fold_frint"
1088 case 's': // 1 string to match.
1089 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
1090 break;
1091 return 159; // "constant_fold_fsqrt"
1092 }
1093 break;
1094 }
1095 break;
1096 }
1097 break;
1098 case 'e': // 1 string to match.
1099 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
1100 break;
1101 return 116; // "extend_through_phis"
1102 case 'i': // 1 string to match.
1103 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
1104 break;
1105 return 69; // "integer_of_truncate"
1106 case 'm': // 3 strings to match.
1107 switch (RuleIdentifier[1]) {
1108 default: break;
1109 case 'e': // 1 string to match.
1110 if (memcmp(RuleIdentifier.data()+2, "rge_of_x_and_zero", 17) != 0)
1111 break;
1112 return 303; // "merge_of_x_and_zero"
1113 case 'i': // 2 strings to match.
1114 if (memcmp(RuleIdentifier.data()+2, "nmax_nan_ieee_", 14) != 0)
1115 break;
1116 switch (RuleIdentifier[16]) {
1117 default: break;
1118 case 'l': // 1 string to match.
1119 if (memcmp(RuleIdentifier.data()+17, "hs", 2) != 0)
1120 break;
1121 return 184; // "minmax_nan_ieee_lhs"
1122 case 'r': // 1 string to match.
1123 if (memcmp(RuleIdentifier.data()+17, "hs", 2) != 0)
1124 break;
1125 return 185; // "minmax_nan_ieee_rhs"
1126 }
1127 break;
1128 }
1129 break;
1130 case 'p': // 1 string to match.
1131 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
1132 break;
1133 return 122; // "ptr_add_immed_chain"
1134 case 'r': // 2 strings to match.
1135 switch (RuleIdentifier[1]) {
1136 default: break;
1137 case 'e': // 1 string to match.
1138 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
1139 break;
1140 return 121; // "reassoc_comm_binops"
1141 case 'i': // 1 string to match.
1142 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
1143 break;
1144 return 92; // "right_identity_zero"
1145 }
1146 break;
1147 case 's': // 2 strings to match.
1148 if (memcmp(RuleIdentifier.data()+1, "implify_", 8) != 0)
1149 break;
1150 switch (RuleIdentifier[9]) {
1151 default: break;
1152 case 'a': // 1 string to match.
1153 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
1154 break;
1155 return 117; // "simplify_add_to_sub"
1156 case 'n': // 1 string to match.
1157 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1158 break;
1159 return 286; // "simplify_neg_minmax"
1160 }
1161 break;
1162 case 'u': // 1 string to match.
1163 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1164 break;
1165 return 81; // "unary_undef_to_zero"
1166 }
1167 break;
1168 case 20: // 10 strings to match.
1169 switch (RuleIdentifier[0]) {
1170 default: break;
1171 case 'a': // 1 string to match.
1172 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1173 break;
1174 return 224; // "and_or_disjoint_mask"
1175 case 'b': // 1 string to match.
1176 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1177 break;
1178 return 110; // "bitcast_bitcast_fold"
1179 case 'c': // 1 string to match.
1180 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1181 break;
1182 return 164; // "constant_fold_ffloor"
1183 case 'i': // 1 string to match.
1184 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i_same_size", 19) != 0)
1185 break;
1186 return 98; // "i2p_to_p2i_same_size"
1187 case 'm': // 1 string to match.
1188 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1189 break;
1190 return 302; // "merge_of_x_and_undef"
1191 case 'o': // 1 string to match.
1192 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1193 break;
1194 return 281; // "or_and_xor_to_xor_or"
1195 case 'r': // 2 strings to match.
1196 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1197 break;
1198 switch (RuleIdentifier[4]) {
1199 default: break;
1200 case 'c': // 1 string to match.
1201 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1202 break;
1203 return 133; // "reduce_shl_of_extend"
1204 case 'n': // 1 string to match.
1205 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1206 break;
1207 return 144; // "redundant_sext_inreg"
1208 }
1209 break;
1210 case 'u': // 2 strings to match.
1211 if (RuleIdentifier[1] != 'n')
1212 break;
1213 switch (RuleIdentifier[2]) {
1214 default: break;
1215 case 'a': // 1 string to match.
1216 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1217 break;
1218 return 82; // "unary_undef_to_undef"
1219 case 'm': // 1 string to match.
1220 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1221 break;
1222 return 301; // "unmerge_zext_to_zext"
1223 }
1224 break;
1225 }
1226 break;
1227 case 21: // 12 strings to match.
1228 switch (RuleIdentifier[0]) {
1229 default: break;
1230 case 'a': // 1 string to match.
1231 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1232 break;
1233 return 283; // "and_xor_or_to_xor_and"
1234 case 'c': // 4 strings to match.
1235 if (RuleIdentifier[1] != 'o')
1236 break;
1237 switch (RuleIdentifier[2]) {
1238 default: break;
1239 case 'm': // 2 strings to match.
1240 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1241 break;
1242 switch (RuleIdentifier[8]) {
1243 default: break;
1244 case 'b': // 1 string to match.
1245 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1246 break;
1247 return 304; // "combine_build_unmerge"
1248 case 'c': // 1 string to match.
1249 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1250 break;
1251 return 287; // "combine_concat_vector"
1252 }
1253 break;
1254 case 'n': // 2 strings to match.
1255 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1256 break;
1257 switch (RuleIdentifier[14]) {
1258 default: break;
1259 case 'c': // 1 string to match.
1260 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1261 break;
1262 return 213; // "constant_fold_cast_op"
1263 case 'f': // 1 string to match.
1264 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1265 break;
1266 return 161; // "constant_fold_fptrunc"
1267 }
1268 break;
1269 }
1270 break;
1271 case 'f': // 1 string to match.
1272 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1273 break;
1274 return 242; // "fdiv_repeated_divison"
1275 case 'i': // 1 string to match.
1276 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1277 break;
1278 return 29; // "insert_vector_elt_oob"
1279 case 'l': // 1 string to match.
1280 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1281 break;
1282 return 315; // "lshr_of_trunc_of_lshr"
1283 case 'r': // 1 string to match.
1284 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1285 break;
1286 return 104; // "right_identity_one_fp"
1287 case 's': // 1 string to match.
1288 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_equiv", 20) != 0)
1289 break;
1290 return 91; // "select_same_val_equiv"
1291 case 'u': // 2 strings to match.
1292 if (RuleIdentifier[1] != 'n')
1293 break;
1294 switch (RuleIdentifier[2]) {
1295 default: break;
1296 case 'd': // 1 string to match.
1297 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1298 break;
1299 return 78; // "undef_to_negative_one"
1300 case 'm': // 1 string to match.
1301 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1302 break;
1303 return 300; // "unmerge_dead_to_trunc"
1304 }
1305 break;
1306 }
1307 break;
1308 case 22: // 9 strings to match.
1309 switch (RuleIdentifier[0]) {
1310 default: break;
1311 case 'c': // 2 strings to match.
1312 if (RuleIdentifier[1] != 'o')
1313 break;
1314 switch (RuleIdentifier[2]) {
1315 default: break;
1316 case 'm': // 1 string to match.
1317 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1318 break;
1319 return 291; // "combine_shuffle_concat"
1320 case 'n': // 1 string to match.
1321 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1322 break;
1323 return 211; // "constant_fold_fp_binop"
1324 }
1325 break;
1326 case 'f': // 2 strings to match.
1327 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_", 12) != 0)
1328 break;
1329 switch (RuleIdentifier[13]) {
1330 default: break;
1331 case 'l': // 1 string to match.
1332 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1333 break;
1334 return 198; // "funnel_shift_left_zero"
1335 case 'o': // 1 string to match.
1336 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1337 break;
1338 return 199; // "funnel_shift_overshift"
1339 }
1340 break;
1341 case 'i': // 1 string to match.
1342 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1343 break;
1344 return 126; // "icmp_to_lhs_known_bits"
1345 case 'p': // 1 string to match.
1346 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1347 break;
1348 return 83; // "propagate_undef_any_op"
1349 case 'r': // 1 string to match.
1350 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
1351 break;
1352 return 103; // "right_identity_one_int"
1353 case 's': // 1 string to match.
1354 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1355 break;
1356 return 130; // "shl_ashr_to_sext_inreg"
1357 case 't': // 1 string to match.
1358 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1359 break;
1360 return 108; // "trunc_buildvector_fold"
1361 }
1362 break;
1363 case 23: // 6 strings to match.
1364 switch (RuleIdentifier[0]) {
1365 default: break;
1366 case 'b': // 1 string to match.
1367 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1368 break;
1369 return 62; // "buildvector_of_truncate"
1370 case 'f': // 1 string to match.
1371 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1372 break;
1373 return 197; // "funnel_shift_right_zero"
1374 case 'i': // 2 strings to match.
1375 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1376 break;
1377 switch (RuleIdentifier[21]) {
1378 default: break;
1379 case 's': // 1 string to match.
1380 if (RuleIdentifier[22] != 'i')
1381 break;
1382 return 170; // "itof_const_zero_fold_si"
1383 case 'u': // 1 string to match.
1384 if (RuleIdentifier[22] != 'i')
1385 break;
1386 return 171; // "itof_const_zero_fold_ui"
1387 }
1388 break;
1389 case 's': // 1 string to match.
1390 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_trivial", 22) != 0)
1391 break;
1392 return 90; // "select_same_val_trivial"
1393 case 't': // 1 string to match.
1394 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1395 break;
1396 return 314; // "truncusatu_to_fptouisat"
1397 }
1398 break;
1399 case 24: // 15 strings to match.
1400 switch (RuleIdentifier[0]) {
1401 default: break;
1402 case 'b': // 1 string to match.
1403 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1404 break;
1405 return 79; // "binop_left_undef_to_zero"
1406 case 'c': // 4 strings to match.
1407 switch (RuleIdentifier[1]) {
1408 default: break;
1409 case 'o': // 1 string to match.
1410 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1411 break;
1412 return 169; // "constant_fold_fnearbyint"
1413 case 't': // 3 strings to match.
1414 switch (RuleIdentifier[2]) {
1415 default: break;
1416 case 'l': // 2 strings to match.
1417 if (memcmp(RuleIdentifier.data()+3, "z_", 2) != 0)
1418 break;
1419 switch (RuleIdentifier[5]) {
1420 default: break;
1421 case 't': // 1 string to match.
1422 if (memcmp(RuleIdentifier.data()+6, "o_ctlz_zero_poison", 18) != 0)
1423 break;
1424 return 318; // "ctlz_to_ctlz_zero_poison"
1425 case 'z': // 1 string to match.
1426 if (memcmp(RuleIdentifier.data()+6, "ero_poison_to_ctls", 18) != 0)
1427 break;
1428 return 317; // "ctlz_zero_poison_to_ctls"
1429 }
1430 break;
1431 case 't': // 1 string to match.
1432 if (memcmp(RuleIdentifier.data()+3, "z_to_cttz_zero_poison", 21) != 0)
1433 break;
1434 return 319; // "cttz_to_cttz_zero_poison"
1435 }
1436 break;
1437 }
1438 break;
1439 case 'f': // 2 strings to match.
1440 if (memcmp(RuleIdentifier.data()+1, "old_binop_into_select_", 22) != 0)
1441 break;
1442 switch (RuleIdentifier[23]) {
1443 default: break;
1444 case 'a': // 1 string to match.
1445 return 233; // "fold_binop_into_select_a"
1446 case 'b': // 1 string to match.
1447 return 234; // "fold_binop_into_select_b"
1448 }
1449 break;
1450 case 'm': // 1 string to match.
1451 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1452 break;
1453 return 28; // "match_extract_of_element"
1454 case 'n': // 1 string to match.
1455 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1456 break;
1457 return 134; // "narrow_binop_feeding_and"
1458 case 'p': // 2 strings to match.
1459 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero_", 17) != 0)
1460 break;
1461 switch (RuleIdentifier[18]) {
1462 default: break;
1463 case 's': // 1 string to match.
1464 if (memcmp(RuleIdentifier.data()+19, "calar", 5) != 0)
1465 break;
1466 return 188; // "ptr_add_with_zero_scalar"
1467 case 'v': // 1 string to match.
1468 if (memcmp(RuleIdentifier.data()+19, "ector", 5) != 0)
1469 break;
1470 return 189; // "ptr_add_with_zero_vector"
1471 }
1472 break;
1473 case 's': // 3 strings to match.
1474 if (RuleIdentifier[1] != 'e')
1475 break;
1476 switch (RuleIdentifier[2]) {
1477 default: break;
1478 case 'l': // 1 string to match.
1479 if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp_true", 21) != 0)
1480 break;
1481 return 137; // "select_constant_cmp_true"
1482 case 'x': // 2 strings to match.
1483 if (memcmp(RuleIdentifier.data()+3, "t_inreg_", 8) != 0)
1484 break;
1485 switch (RuleIdentifier[11]) {
1486 default: break;
1487 case 'o': // 1 string to match.
1488 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1489 break;
1490 return 58; // "sext_inreg_of_sext_inreg"
1491 case 't': // 1 string to match.
1492 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1493 break;
1494 return 153; // "sext_inreg_to_zext_inreg"
1495 }
1496 break;
1497 }
1498 break;
1499 case 'x': // 1 string to match.
1500 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1501 break;
1502 return 187; // "xor_of_and_with_same_reg"
1503 }
1504 break;
1505 case 25: // 9 strings to match.
1506 switch (RuleIdentifier[0]) {
1507 default: break;
1508 case 'b': // 2 strings to match.
1509 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_", 21) != 0)
1510 break;
1511 switch (RuleIdentifier[22]) {
1512 default: break;
1513 case 'a': // 1 string to match.
1514 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1515 break;
1516 return 207; // "bitfield_extract_from_and"
1517 case 's': // 1 string to match.
1518 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1519 break;
1520 return 208; // "bitfield_extract_from_shr"
1521 }
1522 break;
1523 case 'c': // 1 string to match.
1524 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1525 break;
1526 return 292; // "combine_shuffle_undef_rhs"
1527 case 'e': // 1 string to match.
1528 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1529 break;
1530 return 71; // "extract_vec_elt_build_vec"
1531 case 'n': // 1 string to match.
1532 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1533 break;
1534 return 131; // "neg_and_one_to_sext_inreg"
1535 case 'r': // 3 strings to match.
1536 switch (RuleIdentifier[1]) {
1537 default: break;
1538 case 'e': // 2 strings to match.
1539 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
1540 break;
1541 switch (RuleIdentifier[10]) {
1542 default: break;
1543 case 'a': // 1 string to match.
1544 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1545 break;
1546 return 146; // "redundant_aext_sext_inreg"
1547 case 'z': // 1 string to match.
1548 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1549 break;
1550 return 145; // "redundant_zext_sext_inreg"
1551 }
1552 break;
1553 case 'i': // 1 string to match.
1554 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
1555 break;
1556 return 115; // "right_identity_neg_one_fp"
1557 }
1558 break;
1559 case 's': // 1 string to match.
1560 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_false", 24) != 0)
1561 break;
1562 return 136; // "select_constant_cmp_false"
1563 }
1564 break;
1565 case 26: // 5 strings to match.
1566 switch (RuleIdentifier[0]) {
1567 default: break;
1568 case 'b': // 2 strings to match.
1569 if (RuleIdentifier[1] != 'i')
1570 break;
1571 switch (RuleIdentifier[2]) {
1572 default: break;
1573 case 'n': // 1 string to match.
1574 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1575 break;
1576 return 80; // "binop_right_undef_to_undef"
1577 case 't': // 1 string to match.
1578 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1579 break;
1580 return 111; // "bitcast_bitcast_to_bitcast"
1581 }
1582 break;
1583 case 'c': // 1 string to match.
1584 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_unary_int_op", 25) != 0)
1585 break;
1586 return 214; // "constant_fold_unary_int_op"
1587 case 'f': // 1 string to match.
1588 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1589 break;
1590 return 194; // "funnel_shift_from_or_shift"
1591 case 'r': // 1 string to match.
1592 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1593 break;
1594 return 113; // "right_identity_neg_zero_fp"
1595 }
1596 break;
1597 case 27: // 7 strings to match.
1598 switch (RuleIdentifier[0]) {
1599 default: break;
1600 case 'c': // 1 string to match.
1601 if (memcmp(RuleIdentifier.data()+1, "ombine_use_vector_truncate", 26) != 0)
1602 break;
1603 return 294; // "combine_use_vector_truncate"
1604 case 'd': // 1 string to match.
1605 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1606 break;
1607 return 128; // "double_icmp_zero_or_combine"
1608 case 'f': // 1 string to match.
1609 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_to_rotate_left", 26) != 0)
1610 break;
1611 return 195; // "funnel_shift_to_rotate_left"
1612 case 'r': // 2 strings to match.
1613 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1614 break;
1615 switch (RuleIdentifier[10]) {
1616 default: break;
1617 case 'b': // 1 string to match.
1618 if (memcmp(RuleIdentifier.data()+11, "inop_in_equality", 16) != 0)
1619 break;
1620 return 129; // "redundant_binop_in_equality"
1621 case 'n': // 1 string to match.
1622 if (memcmp(RuleIdentifier.data()+11, "eg_operands_fsub", 16) != 0)
1623 break;
1624 return 219; // "redundant_neg_operands_fsub"
1625 }
1626 break;
1627 case 't': // 1 string to match.
1628 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1629 break;
1630 return 109; // "trunc_lshr_buildvector_fold"
1631 case 'u': // 1 string to match.
1632 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1633 break;
1634 return 295; // "unmerge_anyext_build_vector"
1635 }
1636 break;
1637 case 28: // 13 strings to match.
1638 switch (RuleIdentifier[0]) {
1639 default: break;
1640 case 'G': // 1 string to match.
1641 if (memcmp(RuleIdentifier.data()+1, "_OR_commute_constant_to_rhs", 27) != 0)
1642 break;
1643 return 252; // "G_OR_commute_constant_to_rhs"
1644 case 'b': // 1 string to match.
1645 if (memcmp(RuleIdentifier.data()+1, "uildvector_identity_fold_bv", 27) != 0)
1646 break;
1647 return 106; // "buildvector_identity_fold_bv"
1648 case 'd': // 1 string to match.
1649 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1650 break;
1651 return 127; // "double_icmp_zero_and_combine"
1652 case 'e': // 1 string to match.
1653 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_undef", 27) != 0)
1654 break;
1655 return 25; // "extract_vector_element_undef"
1656 case 'f': // 1 string to match.
1657 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_to_rotate_right", 27) != 0)
1658 break;
1659 return 196; // "funnel_shift_to_rotate_right"
1660 case 'i': // 1 string to match.
1661 if (memcmp(RuleIdentifier.data()+1, "nsert_vec_elt_out_of_bounds", 27) != 0)
1662 break;
1663 return 88; // "insert_vec_elt_out_of_bounds"
1664 case 'm': // 4 strings to match.
1665 if (memcmp(RuleIdentifier.data()+1, "atch_", 5) != 0)
1666 break;
1667 switch (RuleIdentifier[6]) {
1668 default: break;
1669 case 'a': // 2 strings to match.
1670 if (memcmp(RuleIdentifier.data()+7, "ddos_", 5) != 0)
1671 break;
1672 switch (RuleIdentifier[12]) {
1673 default: break;
1674 case 's': // 1 string to match.
1675 if (memcmp(RuleIdentifier.data()+13, "addo_dead_carry", 15) != 0)
1676 break;
1677 return 305; // "match_addos_saddo_dead_carry"
1678 case 'u': // 1 string to match.
1679 if (memcmp(RuleIdentifier.data()+13, "addo_dead_carry", 15) != 0)
1680 break;
1681 return 306; // "match_addos_uaddo_dead_carry"
1682 }
1683 break;
1684 case 's': // 2 strings to match.
1685 if (memcmp(RuleIdentifier.data()+7, "ubo_no_overflow_", 16) != 0)
1686 break;
1687 switch (RuleIdentifier[23]) {
1688 default: break;
1689 case 's': // 1 string to match.
1690 if (memcmp(RuleIdentifier.data()+24, "subo", 4) != 0)
1691 break;
1692 return 309; // "match_subo_no_overflow_ssubo"
1693 case 'u': // 1 string to match.
1694 if (memcmp(RuleIdentifier.data()+24, "subo", 4) != 0)
1695 break;
1696 return 310; // "match_subo_no_overflow_usubo"
1697 }
1698 break;
1699 }
1700 break;
1701 case 'o': // 1 string to match.
1702 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1703 break;
1704 return 156; // "opt_brcond_by_inverting_cond"
1705 case 'p': // 1 string to match.
1706 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1707 break;
1708 return 86; // "propagate_undef_shuffle_mask"
1709 case 's': // 1 string to match.
1710 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1711 break;
1712 return 191; // "shift_of_shifted_logic_chain"
1713 }
1714 break;
1715 case 29: // 12 strings to match.
1716 switch (RuleIdentifier[0]) {
1717 default: break;
1718 case 'G': // 4 strings to match.
1719 if (RuleIdentifier[1] != '_')
1720 break;
1721 switch (RuleIdentifier[2]) {
1722 default: break;
1723 case 'A': // 2 strings to match.
1724 switch (RuleIdentifier[3]) {
1725 default: break;
1726 case 'D': // 1 string to match.
1727 if (memcmp(RuleIdentifier.data()+4, "D_commute_constant_to_rhs", 25) != 0)
1728 break;
1729 return 249; // "G_ADD_commute_constant_to_rhs"
1730 case 'N': // 1 string to match.
1731 if (memcmp(RuleIdentifier.data()+4, "D_commute_constant_to_rhs", 25) != 0)
1732 break;
1733 return 251; // "G_AND_commute_constant_to_rhs"
1734 }
1735 break;
1736 case 'M': // 1 string to match.
1737 if (memcmp(RuleIdentifier.data()+3, "UL_commute_constant_to_rhs", 26) != 0)
1738 break;
1739 return 250; // "G_MUL_commute_constant_to_rhs"
1740 case 'X': // 1 string to match.
1741 if (memcmp(RuleIdentifier.data()+3, "OR_commute_constant_to_rhs", 26) != 0)
1742 break;
1743 return 253; // "G_XOR_commute_constant_to_rhs"
1744 }
1745 break;
1746 case 'b': // 2 strings to match.
1747 switch (RuleIdentifier[1]) {
1748 default: break;
1749 case 'i': // 1 string to match.
1750 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_shr_and", 27) != 0)
1751 break;
1752 return 209; // "bitfield_extract_from_shr_and"
1753 case 'u': // 1 string to match.
1754 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold_bvt", 27) != 0)
1755 break;
1756 return 107; // "buildvector_identity_fold_bvt"
1757 }
1758 break;
1759 case 'c': // 4 strings to match.
1760 if (RuleIdentifier[1] != 'o')
1761 break;
1762 switch (RuleIdentifier[2]) {
1763 default: break;
1764 case 'm': // 2 strings to match.
1765 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1766 break;
1767 switch (RuleIdentifier[8]) {
1768 default: break;
1769 case 'e': // 1 string to match.
1770 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1771 break;
1772 return 75; // "combine_extracted_vector_load"
1773 case 's': // 1 string to match.
1774 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1775 break;
1776 return 293; // "combine_shuffle_disjoint_mask"
1777 }
1778 break;
1779 case 'n': // 2 strings to match.
1780 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1781 break;
1782 switch (RuleIdentifier[24]) {
1783 default: break;
1784 case 'r': // 1 string to match.
1785 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1786 break;
1787 return 166; // "constant_fold_intrinsic_round"
1788 case 't': // 1 string to match.
1789 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1790 break;
1791 return 165; // "constant_fold_intrinsic_trunc"
1792 }
1793 break;
1794 }
1795 break;
1796 case 'e': // 1 string to match.
1797 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_out_of_bounds", 28) != 0)
1798 break;
1799 return 89; // "extract_vec_elt_out_of_bounds"
1800 case 'i': // 1 string to match.
1801 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1802 break;
1803 return 125; // "icmp_to_true_false_known_bits"
1804 }
1805 break;
1806 case 30: // 6 strings to match.
1807 switch (RuleIdentifier[0]) {
1808 default: break;
1809 case 'G': // 4 strings to match.
1810 if (RuleIdentifier[1] != '_')
1811 break;
1812 switch (RuleIdentifier[2]) {
1813 default: break;
1814 case 'S': // 2 strings to match.
1815 if (RuleIdentifier[3] != 'M')
1816 break;
1817 switch (RuleIdentifier[4]) {
1818 default: break;
1819 case 'A': // 1 string to match.
1820 if (memcmp(RuleIdentifier.data()+5, "X_commute_constant_to_rhs", 25) != 0)
1821 break;
1822 return 255; // "G_SMAX_commute_constant_to_rhs"
1823 case 'I': // 1 string to match.
1824 if (memcmp(RuleIdentifier.data()+5, "N_commute_constant_to_rhs", 25) != 0)
1825 break;
1826 return 254; // "G_SMIN_commute_constant_to_rhs"
1827 }
1828 break;
1829 case 'U': // 2 strings to match.
1830 if (RuleIdentifier[3] != 'M')
1831 break;
1832 switch (RuleIdentifier[4]) {
1833 default: break;
1834 case 'A': // 1 string to match.
1835 if (memcmp(RuleIdentifier.data()+5, "X_commute_constant_to_rhs", 25) != 0)
1836 break;
1837 return 257; // "G_UMAX_commute_constant_to_rhs"
1838 case 'I': // 1 string to match.
1839 if (memcmp(RuleIdentifier.data()+5, "N_commute_constant_to_rhs", 25) != 0)
1840 break;
1841 return 256; // "G_UMIN_commute_constant_to_rhs"
1842 }
1843 break;
1844 }
1845 break;
1846 case 'f': // 1 string to match.
1847 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1848 break;
1849 return 46; // "freeze_of_non_undef_non_poison"
1850 case 'r': // 1 string to match.
1851 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1852 break;
1853 return 114; // "right_identity_neg_zero_fp_nsz"
1854 }
1855 break;
1856 case 31: // 10 strings to match.
1857 switch (RuleIdentifier[0]) {
1858 default: break;
1859 case 'G': // 6 strings to match.
1860 if (RuleIdentifier[1] != '_')
1861 break;
1862 switch (RuleIdentifier[2]) {
1863 default: break;
1864 case 'S': // 3 strings to match.
1865 switch (RuleIdentifier[3]) {
1866 default: break;
1867 case 'A': // 1 string to match.
1868 if (memcmp(RuleIdentifier.data()+4, "DDO_commute_constant_to_rhs", 27) != 0)
1869 break;
1870 return 267; // "G_SADDO_commute_constant_to_rhs"
1871 case 'M': // 2 strings to match.
1872 if (memcmp(RuleIdentifier.data()+4, "UL", 2) != 0)
1873 break;
1874 switch (RuleIdentifier[6]) {
1875 default: break;
1876 case 'H': // 1 string to match.
1877 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
1878 break;
1879 return 259; // "G_SMULH_commute_constant_to_rhs"
1880 case 'O': // 1 string to match.
1881 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
1882 break;
1883 return 269; // "G_SMULO_commute_constant_to_rhs"
1884 }
1885 break;
1886 }
1887 break;
1888 case 'U': // 3 strings to match.
1889 switch (RuleIdentifier[3]) {
1890 default: break;
1891 case 'A': // 1 string to match.
1892 if (memcmp(RuleIdentifier.data()+4, "DDO_commute_constant_to_rhs", 27) != 0)
1893 break;
1894 return 266; // "G_UADDO_commute_constant_to_rhs"
1895 case 'M': // 2 strings to match.
1896 if (memcmp(RuleIdentifier.data()+4, "UL", 2) != 0)
1897 break;
1898 switch (RuleIdentifier[6]) {
1899 default: break;
1900 case 'H': // 1 string to match.
1901 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
1902 break;
1903 return 258; // "G_UMULH_commute_constant_to_rhs"
1904 case 'O': // 1 string to match.
1905 if (memcmp(RuleIdentifier.data()+7, "_commute_constant_to_rhs", 24) != 0)
1906 break;
1907 return 268; // "G_UMULO_commute_constant_to_rhs"
1908 }
1909 break;
1910 }
1911 break;
1912 }
1913 break;
1914 case 'i': // 2 strings to match.
1915 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_element_", 21) != 0)
1916 break;
1917 switch (RuleIdentifier[22]) {
1918 default: break;
1919 case 'e': // 1 string to match.
1920 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1921 break;
1922 return 27; // "insert_vector_element_elt_undef"
1923 case 'i': // 1 string to match.
1924 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1925 break;
1926 return 26; // "insert_vector_element_idx_undef"
1927 }
1928 break;
1929 case 'r': // 2 strings to match.
1930 if (memcmp(RuleIdentifier.data()+1, "edundant_neg_operands_fadd_", 27) != 0)
1931 break;
1932 switch (RuleIdentifier[28]) {
1933 default: break;
1934 case 'l': // 1 string to match.
1935 if (memcmp(RuleIdentifier.data()+29, "hs", 2) != 0)
1936 break;
1937 return 218; // "redundant_neg_operands_fadd_lhs"
1938 case 'r': // 1 string to match.
1939 if (memcmp(RuleIdentifier.data()+29, "hs", 2) != 0)
1940 break;
1941 return 217; // "redundant_neg_operands_fadd_rhs"
1942 }
1943 break;
1944 }
1945 break;
1946 case 32: // 5 strings to match.
1947 switch (RuleIdentifier[0]) {
1948 default: break;
1949 case 'b': // 1 string to match.
1950 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1951 break;
1952 return 206; // "bitfield_extract_from_sext_inreg"
1953 case 'c': // 2 strings to match.
1954 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1955 break;
1956 switch (RuleIdentifier[9]) {
1957 default: break;
1958 case 'a': // 1 string to match.
1959 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1960 break;
1961 return 225; // "combine_fadd_fmul_to_fmad_or_fma"
1962 case 's': // 1 string to match.
1963 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1964 break;
1965 return 229; // "combine_fsub_fmul_to_fmad_or_fma"
1966 }
1967 break;
1968 case 'e': // 1 string to match.
1969 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1970 break;
1971 return 30; // "extract_vector_element_not_const"
1972 case 's': // 1 string to match.
1973 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general_true", 31) != 0)
1974 break;
1975 return 139; // "select_constant_cmp_general_true"
1976 }
1977 break;
1978 case 33: // 10 strings to match.
1979 switch (RuleIdentifier[0]) {
1980 default: break;
1981 case 'G': // 6 strings to match.
1982 if (RuleIdentifier[1] != '_')
1983 break;
1984 switch (RuleIdentifier[2]) {
1985 default: break;
1986 case 'F': // 2 strings to match.
1987 switch (RuleIdentifier[3]) {
1988 default: break;
1989 case 'A': // 1 string to match.
1990 if (memcmp(RuleIdentifier.data()+4, "DD_commute_fp_constant_to_rhs", 29) != 0)
1991 break;
1992 return 270; // "G_FADD_commute_fp_constant_to_rhs"
1993 case 'M': // 1 string to match.
1994 if (memcmp(RuleIdentifier.data()+4, "UL_commute_fp_constant_to_rhs", 29) != 0)
1995 break;
1996 return 271; // "G_FMUL_commute_fp_constant_to_rhs"
1997 }
1998 break;
1999 case 'S': // 2 strings to match.
2000 switch (RuleIdentifier[3]) {
2001 default: break;
2002 case 'A': // 1 string to match.
2003 if (memcmp(RuleIdentifier.data()+4, "DDSAT_commute_constant_to_rhs", 29) != 0)
2004 break;
2005 return 261; // "G_SADDSAT_commute_constant_to_rhs"
2006 case 'M': // 1 string to match.
2007 if (memcmp(RuleIdentifier.data()+4, "ULFIX_commute_constant_to_rhs", 29) != 0)
2008 break;
2009 return 262; // "G_SMULFIX_commute_constant_to_rhs"
2010 }
2011 break;
2012 case 'U': // 2 strings to match.
2013 switch (RuleIdentifier[3]) {
2014 default: break;
2015 case 'A': // 1 string to match.
2016 if (memcmp(RuleIdentifier.data()+4, "DDSAT_commute_constant_to_rhs", 29) != 0)
2017 break;
2018 return 260; // "G_UADDSAT_commute_constant_to_rhs"
2019 case 'M': // 1 string to match.
2020 if (memcmp(RuleIdentifier.data()+4, "ULFIX_commute_constant_to_rhs", 29) != 0)
2021 break;
2022 return 263; // "G_UMULFIX_commute_constant_to_rhs"
2023 }
2024 break;
2025 }
2026 break;
2027 case 'c': // 1 string to match.
2028 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
2029 break;
2030 return 167; // "constant_fold_intrinsic_roundeven"
2031 case 'r': // 2 strings to match.
2032 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
2033 break;
2034 switch (RuleIdentifier[10]) {
2035 default: break;
2036 case 'a': // 1 string to match.
2037 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
2038 break;
2039 return 148; // "redundant_aext_unmerge_sext_inreg"
2040 case 'z': // 1 string to match.
2041 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
2042 break;
2043 return 147; // "redundant_zext_unmerge_sext_inreg"
2044 }
2045 break;
2046 case 's': // 1 string to match.
2047 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general_false", 32) != 0)
2048 break;
2049 return 138; // "select_constant_cmp_general_false"
2050 }
2051 break;
2052 case 34: // 1 string to match.
2053 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
2054 break;
2055 return 72; // "extract_all_elts_from_build_vector"
2056 case 35: // 1 string to match.
2057 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
2058 break;
2059 return 32; // "extract_vector_element_build_vector"
2060 case 36: // 7 strings to match.
2061 switch (RuleIdentifier[0]) {
2062 default: break;
2063 case 'G': // 4 strings to match.
2064 if (RuleIdentifier[1] != '_')
2065 break;
2066 switch (RuleIdentifier[2]) {
2067 default: break;
2068 case 'F': // 2 strings to match.
2069 if (RuleIdentifier[3] != 'M')
2070 break;
2071 switch (RuleIdentifier[4]) {
2072 default: break;
2073 case 'A': // 1 string to match.
2074 if (memcmp(RuleIdentifier.data()+5, "XNUM_commute_fp_constant_to_rhs", 31) != 0)
2075 break;
2076 return 273; // "G_FMAXNUM_commute_fp_constant_to_rhs"
2077 case 'I': // 1 string to match.
2078 if (memcmp(RuleIdentifier.data()+5, "NNUM_commute_fp_constant_to_rhs", 31) != 0)
2079 break;
2080 return 272; // "G_FMINNUM_commute_fp_constant_to_rhs"
2081 }
2082 break;
2083 case 'S': // 1 string to match.
2084 if (memcmp(RuleIdentifier.data()+3, "MULFIXSAT_commute_constant_to_rhs", 33) != 0)
2085 break;
2086 return 264; // "G_SMULFIXSAT_commute_constant_to_rhs"
2087 case 'U': // 1 string to match.
2088 if (memcmp(RuleIdentifier.data()+3, "MULFIXSAT_commute_constant_to_rhs", 33) != 0)
2089 break;
2090 return 265; // "G_UMULFIXSAT_commute_constant_to_rhs"
2091 }
2092 break;
2093 case 'c': // 2 strings to match.
2094 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
2095 break;
2096 switch (RuleIdentifier[8]) {
2097 default: break;
2098 case 'f': // 1 string to match.
2099 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
2100 break;
2101 return 227; // "combine_fadd_fma_fmul_to_fmad_or_fma"
2102 case 'i': // 1 string to match.
2103 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
2104 break;
2105 return 70; // "combine_insert_vec_elts_build_vector"
2106 }
2107 break;
2108 case 'p': // 1 string to match.
2109 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops_build_vector", 35) != 0)
2110 break;
2111 return 85; // "propagate_undef_all_ops_build_vector"
2112 }
2113 break;
2114 case 37: // 5 strings to match.
2115 switch (RuleIdentifier[0]) {
2116 default: break;
2117 case 'G': // 2 strings to match.
2118 if (memcmp(RuleIdentifier.data()+1, "_FM", 3) != 0)
2119 break;
2120 switch (RuleIdentifier[4]) {
2121 default: break;
2122 case 'A': // 1 string to match.
2123 if (memcmp(RuleIdentifier.data()+5, "XIMUM_commute_fp_constant_to_rhs", 32) != 0)
2124 break;
2125 return 277; // "G_FMAXIMUM_commute_fp_constant_to_rhs"
2126 case 'I': // 1 string to match.
2127 if (memcmp(RuleIdentifier.data()+5, "NIMUM_commute_fp_constant_to_rhs", 32) != 0)
2128 break;
2129 return 276; // "G_FMINIMUM_commute_fp_constant_to_rhs"
2130 }
2131 break;
2132 case 'c': // 1 string to match.
2133 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
2134 break;
2135 return 230; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
2136 case 'e': // 1 string to match.
2137 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
2138 break;
2139 return 40; // "extract_vector_element_shuffle_vector"
2140 case 'h': // 1 string to match.
2141 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
2142 break;
2143 return 118; // "hoist_logic_op_with_same_opcode_hands"
2144 }
2145 break;
2146 case 38: // 3 strings to match.
2147 switch (RuleIdentifier[0]) {
2148 default: break;
2149 case 'c': // 2 strings to match.
2150 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
2151 break;
2152 switch (RuleIdentifier[9]) {
2153 default: break;
2154 case 'a': // 1 string to match.
2155 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
2156 break;
2157 return 226; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
2158 case 's': // 1 string to match.
2159 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
2160 break;
2161 return 231; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
2162 }
2163 break;
2164 case 'p': // 1 string to match.
2165 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops_shuffle_vector", 37) != 0)
2166 break;
2167 return 84; // "propagate_undef_all_ops_shuffle_vector"
2168 }
2169 break;
2170 case 40: // 1 string to match.
2171 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
2172 break;
2173 return 31; // "extract_vector_element_different_indices"
2174 case 41: // 2 strings to match.
2175 if (memcmp(RuleIdentifier.data()+0, "G_FM", 4) != 0)
2176 break;
2177 switch (RuleIdentifier[4]) {
2178 default: break;
2179 case 'A': // 1 string to match.
2180 if (memcmp(RuleIdentifier.data()+5, "XNUM_IEEE_commute_fp_constant_to_rhs", 36) != 0)
2181 break;
2182 return 275; // "G_FMAXNUM_IEEE_commute_fp_constant_to_rhs"
2183 case 'I': // 1 string to match.
2184 if (memcmp(RuleIdentifier.data()+5, "NNUM_IEEE_commute_fp_constant_to_rhs", 36) != 0)
2185 break;
2186 return 274; // "G_FMINNUM_IEEE_commute_fp_constant_to_rhs"
2187 }
2188 break;
2189 case 42: // 9 strings to match.
2190 switch (RuleIdentifier[0]) {
2191 default: break;
2192 case 'c': // 1 string to match.
2193 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
2194 break;
2195 return 228; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
2196 case 'e': // 7 strings to match.
2197 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
2198 break;
2199 switch (RuleIdentifier[41]) {
2200 default: break;
2201 case '2': // 1 string to match.
2202 return 33; // "extract_vector_element_build_vector_trunc2"
2203 case '3': // 1 string to match.
2204 return 34; // "extract_vector_element_build_vector_trunc3"
2205 case '4': // 1 string to match.
2206 return 35; // "extract_vector_element_build_vector_trunc4"
2207 case '5': // 1 string to match.
2208 return 36; // "extract_vector_element_build_vector_trunc5"
2209 case '6': // 1 string to match.
2210 return 37; // "extract_vector_element_build_vector_trunc6"
2211 case '7': // 1 string to match.
2212 return 38; // "extract_vector_element_build_vector_trunc7"
2213 case '8': // 1 string to match.
2214 return 39; // "extract_vector_element_build_vector_trunc8"
2215 }
2216 break;
2217 case 'f': // 1 string to match.
2218 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
2219 break;
2220 return 200; // "funnel_shift_or_shift_to_funnel_shift_left"
2221 }
2222 break;
2223 case 43: // 2 strings to match.
2224 switch (RuleIdentifier[0]) {
2225 default: break;
2226 case 'c': // 1 string to match.
2227 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
2228 break;
2229 return 232; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
2230 case 'f': // 1 string to match.
2231 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
2232 break;
2233 return 201; // "funnel_shift_or_shift_to_funnel_shift_right"
2234 }
2235 break;
2236 case 44: // 1 string to match.
2237 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
2238 break;
2239 return 41; // "insert_vector_element_extract_vector_element"
2240 case 46: // 1 string to match.
2241 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
2242 break;
2243 return 47; // "push_freeze_to_prevent_poison_from_propagating"
2244 }
2245#endif // ifndef NDEBUG
2246
2247 return std::nullopt;
2248}
2249static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
2250 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
2251 if (!RangePair.second.empty()) {
2252 const auto First = getRuleIdxForIdentifier(RangePair.first);
2253 const auto Last = getRuleIdxForIdentifier(RangePair.second);
2254 if (!First || !Last)
2255 return std::nullopt;
2256 if (First >= Last)
2257 report_fatal_error("Beginning of range should be before end of range");
2258 return {{*First, *Last + 1}};
2259 }
2260 if (RangePair.first == "*") {
2261 return {{0, 332}};
2262 }
2263 const auto I = getRuleIdxForIdentifier(RangePair.first);
2264 if (!I)
2265 return std::nullopt;
2266 return {{*I, *I + 1}};
2267}
2268
2269bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
2270 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
2271 if (!MaybeRange)
2272 return false;
2273 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
2274 DisabledRules.reset(I);
2275 return true;
2276}
2277
2278bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
2279 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
2280 if (!MaybeRange)
2281 return false;
2282 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
2283 DisabledRules.set(I);
2284 return true;
2285}
2286
2287static std::vector<std::string> RISCVPreLegalizerCombinerOption;
2288static cl::list<std::string> RISCVPreLegalizerCombinerDisableOption(
2289 "riscvprelegalizercombiner-disable-rule",
2290 cl::desc("Disable one or more combiner rules temporarily in the RISCVPreLegalizerCombiner pass"),
2291 cl::CommaSeparated,
2292 cl::Hidden,
2293 cl::cat(GICombinerOptionCategory),
2294 cl::callback([](const std::string &Str) {
2295 RISCVPreLegalizerCombinerOption.push_back(Str);
2296 }));
2297static cl::list<std::string> RISCVPreLegalizerCombinerOnlyEnableOption(
2298 "riscvprelegalizercombiner-only-enable-rule",
2299 cl::desc("Disable all rules in the RISCVPreLegalizerCombiner pass then re-enable the specified ones"),
2300 cl::Hidden,
2301 cl::cat(GICombinerOptionCategory),
2302 cl::callback([](const std::string &CommaSeparatedArg) {
2303 StringRef Str = CommaSeparatedArg;
2304 RISCVPreLegalizerCombinerOption.push_back("*");
2305 do {
2306 auto X = Str.split(",");
2307 RISCVPreLegalizerCombinerOption.push_back(("!" + X.first).str());
2308 Str = X.second;
2309 } while (!Str.empty());
2310 }));
2311
2312
2313bool RISCVPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
2314 return !DisabledRules.test(RuleID);
2315}
2316bool RISCVPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
2317 for (StringRef Identifier : RISCVPreLegalizerCombinerOption) {
2318 bool Enabled = Identifier.consume_front("!");
2319 if (Enabled && !setRuleEnabled(Identifier))
2320 return false;
2321 if (!Enabled && !setRuleDisabled(Identifier))
2322 return false;
2323 }
2324 return true;
2325}
2326
2327
2328#endif // GET_GICOMBINER_TYPES
2329
2330#ifdef GET_GICOMBINER_TYPES
2331
2332const unsigned MAX_SUBTARGET_PREDICATES = 0;
2333using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
2334
2335#endif // GET_GICOMBINER_TYPES
2336
2337#ifdef GET_GICOMBINER_CLASS_MEMBERS
2338
2339 bool canMatchOpcode(unsigned Opc) const override;
2340 uint32_t getRootFlagsToDrop() const override;
2341
2342#endif // GET_GICOMBINER_CLASS_MEMBERS
2343
2344#ifdef GET_GICOMBINER_CLASS_MEMBERS
2345
2346PredicateBitset AvailableModuleFeatures;
2347mutable PredicateBitset AvailableFunctionFeatures;
2348PredicateBitset getAvailableFeatures() const {
2349 return AvailableModuleFeatures | AvailableFunctionFeatures;
2350}
2351PredicateBitset
2352computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
2353PredicateBitset
2354computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
2355 const MachineFunction *MF) const;
2356void setupGeneratedPerFunctionState(MachineFunction &MF) override;
2357
2358#endif // GET_GICOMBINER_CLASS_MEMBERS
2359
2360#ifdef GET_GICOMBINER_CLASS_MEMBERS
2361
2362 mutable MatcherState State;
2363 typedef ComplexRendererFns(RISCVPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
2364 typedef void(RISCVPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
2365 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
2366 static RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
2367 static RISCVPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
2368 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
2369 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
2370 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
2371 const uint8_t *getMatchTable() const override;
2372 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
2373 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
2374 bool testSimplePredicate(unsigned PredicateID) const override;
2375 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
2376
2377#endif // GET_GICOMBINER_CLASS_MEMBERS
2378
2379#ifdef GET_GICOMBINER_IMPL
2380
2381// LLT Objects.
2382enum {
2383 GILLT_s1,
2384};
2385const static size_t NumTypeObjects = 1;
2386const static LLT TypeObjects[] = {
2387 LLT::scalar(1),
2388};
2389
2390// Bits for subtarget features that participate in instruction matching.
2391enum SubtargetFeatureBits : uint8_t {
2392};
2393
2394PredicateBitset RISCVPreLegalizerCombinerImpl::
2395computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
2396 PredicateBitset Features{};
2397 return Features;
2398}
2399
2400void RISCVPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
2401 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
2402}
2403PredicateBitset RISCVPreLegalizerCombinerImpl::
2404computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
2405 PredicateBitset Features{};
2406 return Features;
2407}
2408
2409// Feature bitsets.
2410enum {
2411 GIFBS_Invalid,
2412};
2413constexpr static PredicateBitset FeatureBitsets[] {
2414 {}, // GIFBS_Invalid
2415};
2416
2417// ComplexPattern predicates.
2418enum {
2419 GICP_Invalid,
2420};
2421// See constructor for table contents
2422
2423RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn
2424RISCVPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
2425 nullptr, // GICP_Invalid
2426};
2427
2428enum {
2429 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
2430 GICXXPred_MI_Predicate_GICombiner1,
2431 GICXXPred_MI_Predicate_GICombiner2,
2432 GICXXPred_MI_Predicate_GICombiner3,
2433 GICXXPred_MI_Predicate_GICombiner4,
2434 GICXXPred_MI_Predicate_GICombiner5,
2435 GICXXPred_MI_Predicate_GICombiner6,
2436 GICXXPred_MI_Predicate_GICombiner7,
2437 GICXXPred_MI_Predicate_GICombiner8,
2438 GICXXPred_MI_Predicate_GICombiner9,
2439 GICXXPred_MI_Predicate_GICombiner10,
2440 GICXXPred_MI_Predicate_GICombiner11,
2441 GICXXPred_MI_Predicate_GICombiner12,
2442 GICXXPred_MI_Predicate_GICombiner13,
2443 GICXXPred_MI_Predicate_GICombiner14,
2444 GICXXPred_MI_Predicate_GICombiner15,
2445 GICXXPred_MI_Predicate_GICombiner16,
2446 GICXXPred_MI_Predicate_GICombiner17,
2447 GICXXPred_MI_Predicate_GICombiner18,
2448 GICXXPred_MI_Predicate_GICombiner19,
2449 GICXXPred_MI_Predicate_GICombiner20,
2450 GICXXPred_MI_Predicate_GICombiner21,
2451 GICXXPred_MI_Predicate_GICombiner22,
2452 GICXXPred_MI_Predicate_GICombiner23,
2453 GICXXPred_MI_Predicate_GICombiner24,
2454 GICXXPred_MI_Predicate_GICombiner25,
2455 GICXXPred_MI_Predicate_GICombiner26,
2456 GICXXPred_MI_Predicate_GICombiner27,
2457 GICXXPred_MI_Predicate_GICombiner28,
2458 GICXXPred_MI_Predicate_GICombiner29,
2459 GICXXPred_MI_Predicate_GICombiner30,
2460 GICXXPred_MI_Predicate_GICombiner31,
2461 GICXXPred_MI_Predicate_GICombiner32,
2462 GICXXPred_MI_Predicate_GICombiner33,
2463 GICXXPred_MI_Predicate_GICombiner34,
2464 GICXXPred_MI_Predicate_GICombiner35,
2465 GICXXPred_MI_Predicate_GICombiner36,
2466 GICXXPred_MI_Predicate_GICombiner37,
2467 GICXXPred_MI_Predicate_GICombiner38,
2468 GICXXPred_MI_Predicate_GICombiner39,
2469 GICXXPred_MI_Predicate_GICombiner40,
2470 GICXXPred_MI_Predicate_GICombiner41,
2471 GICXXPred_MI_Predicate_GICombiner42,
2472 GICXXPred_MI_Predicate_GICombiner43,
2473 GICXXPred_MI_Predicate_GICombiner44,
2474 GICXXPred_MI_Predicate_GICombiner45,
2475 GICXXPred_MI_Predicate_GICombiner46,
2476 GICXXPred_MI_Predicate_GICombiner47,
2477 GICXXPred_MI_Predicate_GICombiner48,
2478 GICXXPred_MI_Predicate_GICombiner49,
2479 GICXXPred_MI_Predicate_GICombiner50,
2480 GICXXPred_MI_Predicate_GICombiner51,
2481 GICXXPred_MI_Predicate_GICombiner52,
2482 GICXXPred_MI_Predicate_GICombiner53,
2483 GICXXPred_MI_Predicate_GICombiner54,
2484 GICXXPred_MI_Predicate_GICombiner55,
2485 GICXXPred_MI_Predicate_GICombiner56,
2486 GICXXPred_MI_Predicate_GICombiner57,
2487 GICXXPred_MI_Predicate_GICombiner58,
2488 GICXXPred_MI_Predicate_GICombiner59,
2489 GICXXPred_MI_Predicate_GICombiner60,
2490 GICXXPred_MI_Predicate_GICombiner61,
2491 GICXXPred_MI_Predicate_GICombiner62,
2492 GICXXPred_MI_Predicate_GICombiner63,
2493};
2494bool RISCVPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
2495 switch (PredicateID) {
2496 case GICXXPred_MI_Predicate_GICombiner0: {
2497 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2498 }
2499 case GICXXPred_MI_Predicate_GICombiner1: {
2500 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
2501 }
2502 case GICXXPred_MI_Predicate_GICombiner2: {
2503 return MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarSizeInBits() ==
2504 MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2505 }
2506 case GICXXPred_MI_Predicate_GICombiner3: {
2507 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2508 }
2509 case GICXXPred_MI_Predicate_GICombiner4: {
2510 return Helper.matchExtractVectorElement(*State.MIs[0]);
2511 }
2512 case GICXXPred_MI_Predicate_GICombiner5: {
2513 return Helper.matchInsertVectorElementOOB(*State.MIs[0]);
2514 }
2515 case GICXXPred_MI_Predicate_GICombiner6: {
2516 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2517 }
2518 case GICXXPred_MI_Predicate_GICombiner7: {
2519 return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);
2520 }
2521 case GICXXPred_MI_Predicate_GICombiner8: {
2522 return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
2523 }
2524 case GICXXPred_MI_Predicate_GICombiner9: {
2525 return cast<GStore>(State.MIs[0])->isUnordered();
2526 }
2527 case GICXXPred_MI_Predicate_GICombiner10: {
2528 return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);
2529 }
2530 case GICXXPred_MI_Predicate_GICombiner11: {
2531 return Helper.matchSelectSameVal(*State.MIs[0]);
2532 }
2533 case GICXXPred_MI_Predicate_GICombiner12: {
2534 return Helper.matchConstantOp(State.MIs[0]->getOperand(1), 0);
2535 }
2536 case GICXXPred_MI_Predicate_GICombiner13: {
2537 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
2538 }
2539 case GICXXPred_MI_Predicate_GICombiner14: {
2540 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() ==
2541 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
2542 }
2543 case GICXXPred_MI_Predicate_GICombiner15: {
2544 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() >
2545 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
2546 }
2547 case GICXXPred_MI_Predicate_GICombiner16: {
2548 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).getSizeInBits() <
2549 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getSizeInBits();
2550 }
2551 case GICXXPred_MI_Predicate_GICombiner17: {
2552 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
2553 }
2554 case GICXXPred_MI_Predicate_GICombiner18: {
2555 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
2556 }
2557 case GICXXPred_MI_Predicate_GICombiner19: {
2558 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
2559 }
2560 case GICXXPred_MI_Predicate_GICombiner20: {
2561 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
2562 }
2563 case GICXXPred_MI_Predicate_GICombiner21: {
2564 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
2565 }
2566 case GICXXPred_MI_Predicate_GICombiner22: {
2567 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
2568 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2569 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2570 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2571 }
2572 case GICXXPred_MI_Predicate_GICombiner23: {
2573 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
2574 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2575 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2576 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2577 }
2578 case GICXXPred_MI_Predicate_GICombiner24: {
2579 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2580 Helper.isLegalOrBeforeLegalizer({
2581 TargetOpcode::G_SEXT_INREG,
2582 {MRI.getType(State.MIs[1]->getOperand(1).getReg())},
2583 {},
2584 {1}
2585 });
2586 }
2587 case GICXXPred_MI_Predicate_GICombiner25: {
2588 auto C = isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI);
2589 return C && C->isZero();
2590 llvm_unreachable("GICombiner25 should have returned");
2591 }
2592 case GICXXPred_MI_Predicate_GICombiner26: {
2593 auto C = isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI);
2594 return C && !C->isZero();
2595 llvm_unreachable("GICombiner26 should have returned");
2596 }
2597 case GICXXPred_MI_Predicate_GICombiner27: {
2598 return !isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI) &&
2599 MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
2600 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2601 }
2602 case GICXXPred_MI_Predicate_GICombiner28: {
2603 return Helper.matchRedundantSExtInReg(*State.MIs[0]);
2604 }
2605 case GICXXPred_MI_Predicate_GICombiner29: {
2606 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
2607 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2608 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
2609 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
2610 llvm_unreachable("GICombiner29 should have returned");
2611 }
2612 case GICXXPred_MI_Predicate_GICombiner30: {
2613 return Helper.matchConstantOp(State.MIs[0]->getOperand(3), 2);
2614 }
2615 case GICXXPred_MI_Predicate_GICombiner31: {
2616 return Helper.matchConstantOp(State.MIs[0]->getOperand(4), 0);
2617 }
2618 case GICXXPred_MI_Predicate_GICombiner32: {
2619 return Helper.isConstantNaN(State.MIs[0]->getOperand(1).getReg());
2620 }
2621 case GICXXPred_MI_Predicate_GICombiner33: {
2622 return Helper.isConstantNaN(State.MIs[0]->getOperand(2).getReg()) &&
2623 !Helper.isConstantNaN(State.MIs[0]->getOperand(1).getReg());
2624 }
2625 case GICXXPred_MI_Predicate_GICombiner34: {
2626 LLT Ty = MRI.getType(State.MIs[0]->getOperand(0).getReg());
2627 return Ty.isPointer() &&
2628 !isConstantOrConstantSplatVector(State.MIs[0]->getOperand(2).getReg(), MRI) &&
2629 !State.MIs[0]->getMF()->getDataLayout().isNonIntegralAddressSpace(
2630 Ty.getAddressSpace());
2631 llvm_unreachable("GICombiner34 should have returned");
2632 }
2633 case GICXXPred_MI_Predicate_GICombiner35: {
2634 return Helper.matchPtrAddZeroVector(*State.MIs[0]);
2635 }
2636 case GICXXPred_MI_Predicate_GICombiner36: {
2637 return Helper.isLegalOrBeforeLegalizer(
2638 {TargetOpcode::G_ROTL,
2639 {MRI.getType(State.MIs[0]->getOperand(1).getReg()),
2640 MRI.getType(State.MIs[0]->getOperand(1).getReg())}});
2641 }
2642 case GICXXPred_MI_Predicate_GICombiner37: {
2643 return Helper.isLegalOrBeforeLegalizer(
2644 {TargetOpcode::G_ROTR,
2645 {MRI.getType(State.MIs[0]->getOperand(1).getReg()),
2646 MRI.getType(State.MIs[0]->getOperand(1).getReg())}});
2647 }
2648 case GICXXPred_MI_Predicate_GICombiner38: {
2649 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
2650 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2651 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2652 }
2653 case GICXXPred_MI_Predicate_GICombiner39: {
2654 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
2655 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2656 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2657 }
2658 case GICXXPred_MI_Predicate_GICombiner40: {
2659 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2660 isConstantOrConstantSplatVector(State.MIs[1]->getOperand(2).getReg(), MRI) &&
2661 isConstantOrConstantSplatVector(State.MIs[0]->getOperand(2).getReg(), MRI) &&
2662 Helper.isDesirableToCommuteWithShift(*State.MIs[0]);
2663 }
2664 case GICXXPred_MI_Predicate_GICombiner41: {
2665 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_FSUB,
2666 {MRI.getType(State.MIs[0]->getOperand(0).getReg())}});
2667 }
2668 case GICXXPred_MI_Predicate_GICombiner42: {
2669 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_FADD,
2670 {MRI.getType(State.MIs[0]->getOperand(0).getReg())}});
2671 }
2672 case GICXXPred_MI_Predicate_GICombiner43: {
2673 return Helper.matchSameRegOrICstOrSplat(State.MIs[1]->getOperand(2).getReg(),
2674 State.MIs[0]->getOperand(2).getReg());
2675 }
2676 case GICXXPred_MI_Predicate_GICombiner44: {
2677 return Helper.matchSameRegOrICstOrSplat(State.MIs[1]->getOperand(1).getReg(),
2678 State.MIs[0]->getOperand(2).getReg());
2679 }
2680 case GICXXPred_MI_Predicate_GICombiner45: {
2681 return Helper.matchSameRegOrICstOrSplat(State.MIs[0]->getOperand(1).getReg(),
2682 State.MIs[1]->getOperand(2).getReg());
2683 }
2684 case GICXXPred_MI_Predicate_GICombiner46: {
2685 return Helper.matchSameRegOrICstOrSplat(State.MIs[0]->getOperand(1).getReg(),
2686 State.MIs[1]->getOperand(1).getReg());
2687 }
2688 case GICXXPred_MI_Predicate_GICombiner47: {
2689 return Helper.matchFsubToFneg(*State.MIs[0]);
2690 }
2691 case GICXXPred_MI_Predicate_GICombiner48: {
2692 return Helper.matchCommuteConstantToRHS(*State.MIs[0]);
2693 }
2694 case GICXXPred_MI_Predicate_GICombiner49: {
2695 return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);
2696 }
2697 case GICXXPred_MI_Predicate_GICombiner50: {
2698 return Helper.isLegalOrBeforeLegalizer(
2699 {TargetOpcode::G_ANYEXT,
2700 {MRI.getType(State.MIs[0]->getOperand(0).getReg()),
2701 MRI.getType(State.MIs[0]->getOperand(1).getReg())}});
2702 }
2703 case GICXXPred_MI_Predicate_GICombiner51: {
2704 return Helper.isLegalOrBeforeLegalizer(
2705 {TargetOpcode::G_ZEXT,
2706 {MRI.getType(State.MIs[0]->getOperand(0).getReg()),
2707 MRI.getType(State.MIs[0]->getOperand(1).getReg())}});
2708 }
2709 case GICXXPred_MI_Predicate_GICombiner52: {
2710 return MRI.use_nodbg_empty(State.MIs[0]->getOperand(1).getReg()) &&
2711 Helper.isLegalOrBeforeLegalizer(
2712 {TargetOpcode::G_ADD,
2713 {MRI.getType(State.MIs[0]->getOperand(0).getReg())}});
2714 }
2715 case GICXXPred_MI_Predicate_GICombiner53: {
2716 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
2717 }
2718 case GICXXPred_MI_Predicate_GICombiner54: {
2719 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
2720 }
2721 case GICXXPred_MI_Predicate_GICombiner55: {
2722 return Helper.matchCountZeroToZeroPoison(*State.MIs[0],
2723 TargetOpcode::G_CTLZ, TargetOpcode::G_CTLZ_ZERO_POISON);
2724 }
2725 case GICXXPred_MI_Predicate_GICombiner56: {
2726 return Helper.matchCountZeroToZeroPoison(*State.MIs[0],
2727 TargetOpcode::G_CTTZ, TargetOpcode::G_CTTZ_ZERO_POISON);
2728 }
2729 case GICXXPred_MI_Predicate_GICombiner57: {
2730 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2731 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2732 }
2733 case GICXXPred_MI_Predicate_GICombiner58: {
2734 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2735 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2736 }
2737 case GICXXPred_MI_Predicate_GICombiner59: {
2738 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
2739 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2740 }
2741 case GICXXPred_MI_Predicate_GICombiner60: {
2742 return MRI.getType(State.MIs[2]->getOperand(1).getReg()) ==
2743 MRI.getType(State.MIs[3]->getOperand(1).getReg()) &&
2744 Helper.isLegal({TargetOpcode::G_UAVGFLOOR,
2745 {MRI.getType(State.MIs[2]->getOperand(1).getReg())}});
2746 }
2747 case GICXXPred_MI_Predicate_GICombiner61: {
2748 return MRI.getType(State.MIs[2]->getOperand(1).getReg()) ==
2749 MRI.getType(State.MIs[3]->getOperand(1).getReg()) &&
2750 Helper.isLegal({TargetOpcode::G_SAVGFLOOR,
2751 {MRI.getType(State.MIs[2]->getOperand(1).getReg())}});
2752 }
2753 case GICXXPred_MI_Predicate_GICombiner62: {
2754 return MRI.getType(State.MIs[3]->getOperand(1).getReg()) ==
2755 MRI.getType(State.MIs[4]->getOperand(1).getReg()) &&
2756 Helper.isLegal({TargetOpcode::G_UAVGCEIL,
2757 {MRI.getType(State.MIs[3]->getOperand(1).getReg())}});
2758 }
2759 case GICXXPred_MI_Predicate_GICombiner63: {
2760 return MRI.getType(State.MIs[3]->getOperand(1).getReg()) ==
2761 MRI.getType(State.MIs[4]->getOperand(1).getReg()) &&
2762 Helper.isLegal({TargetOpcode::G_SAVGCEIL,
2763 {MRI.getType(State.MIs[3]->getOperand(1).getReg())}});
2764 }
2765 }
2766 llvm_unreachable("Unknown predicate");
2767 return false;
2768}
2769bool RISCVPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
2770 llvm_unreachable("Unknown predicate");
2771 return false;
2772}
2773bool RISCVPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
2774 llvm_unreachable("Unknown predicate");
2775 return false;
2776}
2777bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2778 llvm_unreachable("Unknown predicate");
2779 return false;
2780}
2781bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2782 llvm_unreachable("Unknown predicate");
2783 return false;
2784}
2785enum {
2786 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2787 GICXXPred_Simple_IsRule1Enabled,
2788 GICXXPred_Simple_IsRule2Enabled,
2789 GICXXPred_Simple_IsRule3Enabled,
2790 GICXXPred_Simple_IsRule4Enabled,
2791 GICXXPred_Simple_IsRule5Enabled,
2792 GICXXPred_Simple_IsRule6Enabled,
2793 GICXXPred_Simple_IsRule7Enabled,
2794 GICXXPred_Simple_IsRule8Enabled,
2795 GICXXPred_Simple_IsRule9Enabled,
2796 GICXXPred_Simple_IsRule10Enabled,
2797 GICXXPred_Simple_IsRule11Enabled,
2798 GICXXPred_Simple_IsRule12Enabled,
2799 GICXXPred_Simple_IsRule13Enabled,
2800 GICXXPred_Simple_IsRule14Enabled,
2801 GICXXPred_Simple_IsRule15Enabled,
2802 GICXXPred_Simple_IsRule16Enabled,
2803 GICXXPred_Simple_IsRule17Enabled,
2804 GICXXPred_Simple_IsRule18Enabled,
2805 GICXXPred_Simple_IsRule19Enabled,
2806 GICXXPred_Simple_IsRule20Enabled,
2807 GICXXPred_Simple_IsRule21Enabled,
2808 GICXXPred_Simple_IsRule22Enabled,
2809 GICXXPred_Simple_IsRule23Enabled,
2810 GICXXPred_Simple_IsRule24Enabled,
2811 GICXXPred_Simple_IsRule25Enabled,
2812 GICXXPred_Simple_IsRule26Enabled,
2813 GICXXPred_Simple_IsRule27Enabled,
2814 GICXXPred_Simple_IsRule28Enabled,
2815 GICXXPred_Simple_IsRule29Enabled,
2816 GICXXPred_Simple_IsRule30Enabled,
2817 GICXXPred_Simple_IsRule31Enabled,
2818 GICXXPred_Simple_IsRule32Enabled,
2819 GICXXPred_Simple_IsRule33Enabled,
2820 GICXXPred_Simple_IsRule34Enabled,
2821 GICXXPred_Simple_IsRule35Enabled,
2822 GICXXPred_Simple_IsRule36Enabled,
2823 GICXXPred_Simple_IsRule37Enabled,
2824 GICXXPred_Simple_IsRule38Enabled,
2825 GICXXPred_Simple_IsRule39Enabled,
2826 GICXXPred_Simple_IsRule40Enabled,
2827 GICXXPred_Simple_IsRule41Enabled,
2828 GICXXPred_Simple_IsRule42Enabled,
2829 GICXXPred_Simple_IsRule43Enabled,
2830 GICXXPred_Simple_IsRule44Enabled,
2831 GICXXPred_Simple_IsRule45Enabled,
2832 GICXXPred_Simple_IsRule46Enabled,
2833 GICXXPred_Simple_IsRule47Enabled,
2834 GICXXPred_Simple_IsRule48Enabled,
2835 GICXXPred_Simple_IsRule49Enabled,
2836 GICXXPred_Simple_IsRule50Enabled,
2837 GICXXPred_Simple_IsRule51Enabled,
2838 GICXXPred_Simple_IsRule52Enabled,
2839 GICXXPred_Simple_IsRule53Enabled,
2840 GICXXPred_Simple_IsRule54Enabled,
2841 GICXXPred_Simple_IsRule55Enabled,
2842 GICXXPred_Simple_IsRule56Enabled,
2843 GICXXPred_Simple_IsRule57Enabled,
2844 GICXXPred_Simple_IsRule58Enabled,
2845 GICXXPred_Simple_IsRule59Enabled,
2846 GICXXPred_Simple_IsRule60Enabled,
2847 GICXXPred_Simple_IsRule61Enabled,
2848 GICXXPred_Simple_IsRule62Enabled,
2849 GICXXPred_Simple_IsRule63Enabled,
2850 GICXXPred_Simple_IsRule64Enabled,
2851 GICXXPred_Simple_IsRule65Enabled,
2852 GICXXPred_Simple_IsRule66Enabled,
2853 GICXXPred_Simple_IsRule67Enabled,
2854 GICXXPred_Simple_IsRule68Enabled,
2855 GICXXPred_Simple_IsRule69Enabled,
2856 GICXXPred_Simple_IsRule70Enabled,
2857 GICXXPred_Simple_IsRule71Enabled,
2858 GICXXPred_Simple_IsRule72Enabled,
2859 GICXXPred_Simple_IsRule73Enabled,
2860 GICXXPred_Simple_IsRule74Enabled,
2861 GICXXPred_Simple_IsRule75Enabled,
2862 GICXXPred_Simple_IsRule76Enabled,
2863 GICXXPred_Simple_IsRule77Enabled,
2864 GICXXPred_Simple_IsRule78Enabled,
2865 GICXXPred_Simple_IsRule79Enabled,
2866 GICXXPred_Simple_IsRule80Enabled,
2867 GICXXPred_Simple_IsRule81Enabled,
2868 GICXXPred_Simple_IsRule82Enabled,
2869 GICXXPred_Simple_IsRule83Enabled,
2870 GICXXPred_Simple_IsRule84Enabled,
2871 GICXXPred_Simple_IsRule85Enabled,
2872 GICXXPred_Simple_IsRule86Enabled,
2873 GICXXPred_Simple_IsRule87Enabled,
2874 GICXXPred_Simple_IsRule88Enabled,
2875 GICXXPred_Simple_IsRule89Enabled,
2876 GICXXPred_Simple_IsRule90Enabled,
2877 GICXXPred_Simple_IsRule91Enabled,
2878 GICXXPred_Simple_IsRule92Enabled,
2879 GICXXPred_Simple_IsRule93Enabled,
2880 GICXXPred_Simple_IsRule94Enabled,
2881 GICXXPred_Simple_IsRule95Enabled,
2882 GICXXPred_Simple_IsRule96Enabled,
2883 GICXXPred_Simple_IsRule97Enabled,
2884 GICXXPred_Simple_IsRule98Enabled,
2885 GICXXPred_Simple_IsRule99Enabled,
2886 GICXXPred_Simple_IsRule100Enabled,
2887 GICXXPred_Simple_IsRule101Enabled,
2888 GICXXPred_Simple_IsRule102Enabled,
2889 GICXXPred_Simple_IsRule103Enabled,
2890 GICXXPred_Simple_IsRule104Enabled,
2891 GICXXPred_Simple_IsRule105Enabled,
2892 GICXXPred_Simple_IsRule106Enabled,
2893 GICXXPred_Simple_IsRule107Enabled,
2894 GICXXPred_Simple_IsRule108Enabled,
2895 GICXXPred_Simple_IsRule109Enabled,
2896 GICXXPred_Simple_IsRule110Enabled,
2897 GICXXPred_Simple_IsRule111Enabled,
2898 GICXXPred_Simple_IsRule112Enabled,
2899 GICXXPred_Simple_IsRule113Enabled,
2900 GICXXPred_Simple_IsRule114Enabled,
2901 GICXXPred_Simple_IsRule115Enabled,
2902 GICXXPred_Simple_IsRule116Enabled,
2903 GICXXPred_Simple_IsRule117Enabled,
2904 GICXXPred_Simple_IsRule118Enabled,
2905 GICXXPred_Simple_IsRule119Enabled,
2906 GICXXPred_Simple_IsRule120Enabled,
2907 GICXXPred_Simple_IsRule121Enabled,
2908 GICXXPred_Simple_IsRule122Enabled,
2909 GICXXPred_Simple_IsRule123Enabled,
2910 GICXXPred_Simple_IsRule124Enabled,
2911 GICXXPred_Simple_IsRule125Enabled,
2912 GICXXPred_Simple_IsRule126Enabled,
2913 GICXXPred_Simple_IsRule127Enabled,
2914 GICXXPred_Simple_IsRule128Enabled,
2915 GICXXPred_Simple_IsRule129Enabled,
2916 GICXXPred_Simple_IsRule130Enabled,
2917 GICXXPred_Simple_IsRule131Enabled,
2918 GICXXPred_Simple_IsRule132Enabled,
2919 GICXXPred_Simple_IsRule133Enabled,
2920 GICXXPred_Simple_IsRule134Enabled,
2921 GICXXPred_Simple_IsRule135Enabled,
2922 GICXXPred_Simple_IsRule136Enabled,
2923 GICXXPred_Simple_IsRule137Enabled,
2924 GICXXPred_Simple_IsRule138Enabled,
2925 GICXXPred_Simple_IsRule139Enabled,
2926 GICXXPred_Simple_IsRule140Enabled,
2927 GICXXPred_Simple_IsRule141Enabled,
2928 GICXXPred_Simple_IsRule142Enabled,
2929 GICXXPred_Simple_IsRule143Enabled,
2930 GICXXPred_Simple_IsRule144Enabled,
2931 GICXXPred_Simple_IsRule145Enabled,
2932 GICXXPred_Simple_IsRule146Enabled,
2933 GICXXPred_Simple_IsRule147Enabled,
2934 GICXXPred_Simple_IsRule148Enabled,
2935 GICXXPred_Simple_IsRule149Enabled,
2936 GICXXPred_Simple_IsRule150Enabled,
2937 GICXXPred_Simple_IsRule151Enabled,
2938 GICXXPred_Simple_IsRule152Enabled,
2939 GICXXPred_Simple_IsRule153Enabled,
2940 GICXXPred_Simple_IsRule154Enabled,
2941 GICXXPred_Simple_IsRule155Enabled,
2942 GICXXPred_Simple_IsRule156Enabled,
2943 GICXXPred_Simple_IsRule157Enabled,
2944 GICXXPred_Simple_IsRule158Enabled,
2945 GICXXPred_Simple_IsRule159Enabled,
2946 GICXXPred_Simple_IsRule160Enabled,
2947 GICXXPred_Simple_IsRule161Enabled,
2948 GICXXPred_Simple_IsRule162Enabled,
2949 GICXXPred_Simple_IsRule163Enabled,
2950 GICXXPred_Simple_IsRule164Enabled,
2951 GICXXPred_Simple_IsRule165Enabled,
2952 GICXXPred_Simple_IsRule166Enabled,
2953 GICXXPred_Simple_IsRule167Enabled,
2954 GICXXPred_Simple_IsRule168Enabled,
2955 GICXXPred_Simple_IsRule169Enabled,
2956 GICXXPred_Simple_IsRule170Enabled,
2957 GICXXPred_Simple_IsRule171Enabled,
2958 GICXXPred_Simple_IsRule172Enabled,
2959 GICXXPred_Simple_IsRule173Enabled,
2960 GICXXPred_Simple_IsRule174Enabled,
2961 GICXXPred_Simple_IsRule175Enabled,
2962 GICXXPred_Simple_IsRule176Enabled,
2963 GICXXPred_Simple_IsRule177Enabled,
2964 GICXXPred_Simple_IsRule178Enabled,
2965 GICXXPred_Simple_IsRule179Enabled,
2966 GICXXPred_Simple_IsRule180Enabled,
2967 GICXXPred_Simple_IsRule181Enabled,
2968 GICXXPred_Simple_IsRule182Enabled,
2969 GICXXPred_Simple_IsRule183Enabled,
2970 GICXXPred_Simple_IsRule184Enabled,
2971 GICXXPred_Simple_IsRule185Enabled,
2972 GICXXPred_Simple_IsRule186Enabled,
2973 GICXXPred_Simple_IsRule187Enabled,
2974 GICXXPred_Simple_IsRule188Enabled,
2975 GICXXPred_Simple_IsRule189Enabled,
2976 GICXXPred_Simple_IsRule190Enabled,
2977 GICXXPred_Simple_IsRule191Enabled,
2978 GICXXPred_Simple_IsRule192Enabled,
2979 GICXXPred_Simple_IsRule193Enabled,
2980 GICXXPred_Simple_IsRule194Enabled,
2981 GICXXPred_Simple_IsRule195Enabled,
2982 GICXXPred_Simple_IsRule196Enabled,
2983 GICXXPred_Simple_IsRule197Enabled,
2984 GICXXPred_Simple_IsRule198Enabled,
2985 GICXXPred_Simple_IsRule199Enabled,
2986 GICXXPred_Simple_IsRule200Enabled,
2987 GICXXPred_Simple_IsRule201Enabled,
2988 GICXXPred_Simple_IsRule202Enabled,
2989 GICXXPred_Simple_IsRule203Enabled,
2990 GICXXPred_Simple_IsRule204Enabled,
2991 GICXXPred_Simple_IsRule205Enabled,
2992 GICXXPred_Simple_IsRule206Enabled,
2993 GICXXPred_Simple_IsRule207Enabled,
2994 GICXXPred_Simple_IsRule208Enabled,
2995 GICXXPred_Simple_IsRule209Enabled,
2996 GICXXPred_Simple_IsRule210Enabled,
2997 GICXXPred_Simple_IsRule211Enabled,
2998 GICXXPred_Simple_IsRule212Enabled,
2999 GICXXPred_Simple_IsRule213Enabled,
3000 GICXXPred_Simple_IsRule214Enabled,
3001 GICXXPred_Simple_IsRule215Enabled,
3002 GICXXPred_Simple_IsRule216Enabled,
3003 GICXXPred_Simple_IsRule217Enabled,
3004 GICXXPred_Simple_IsRule218Enabled,
3005 GICXXPred_Simple_IsRule219Enabled,
3006 GICXXPred_Simple_IsRule220Enabled,
3007 GICXXPred_Simple_IsRule221Enabled,
3008 GICXXPred_Simple_IsRule222Enabled,
3009 GICXXPred_Simple_IsRule223Enabled,
3010 GICXXPred_Simple_IsRule224Enabled,
3011 GICXXPred_Simple_IsRule225Enabled,
3012 GICXXPred_Simple_IsRule226Enabled,
3013 GICXXPred_Simple_IsRule227Enabled,
3014 GICXXPred_Simple_IsRule228Enabled,
3015 GICXXPred_Simple_IsRule229Enabled,
3016 GICXXPred_Simple_IsRule230Enabled,
3017 GICXXPred_Simple_IsRule231Enabled,
3018 GICXXPred_Simple_IsRule232Enabled,
3019 GICXXPred_Simple_IsRule233Enabled,
3020 GICXXPred_Simple_IsRule234Enabled,
3021 GICXXPred_Simple_IsRule235Enabled,
3022 GICXXPred_Simple_IsRule236Enabled,
3023 GICXXPred_Simple_IsRule237Enabled,
3024 GICXXPred_Simple_IsRule238Enabled,
3025 GICXXPred_Simple_IsRule239Enabled,
3026 GICXXPred_Simple_IsRule240Enabled,
3027 GICXXPred_Simple_IsRule241Enabled,
3028 GICXXPred_Simple_IsRule242Enabled,
3029 GICXXPred_Simple_IsRule243Enabled,
3030 GICXXPred_Simple_IsRule244Enabled,
3031 GICXXPred_Simple_IsRule245Enabled,
3032 GICXXPred_Simple_IsRule246Enabled,
3033 GICXXPred_Simple_IsRule247Enabled,
3034 GICXXPred_Simple_IsRule248Enabled,
3035 GICXXPred_Simple_IsRule249Enabled,
3036 GICXXPred_Simple_IsRule250Enabled,
3037 GICXXPred_Simple_IsRule251Enabled,
3038 GICXXPred_Simple_IsRule252Enabled,
3039 GICXXPred_Simple_IsRule253Enabled,
3040 GICXXPred_Simple_IsRule254Enabled,
3041 GICXXPred_Simple_IsRule255Enabled,
3042 GICXXPred_Simple_IsRule256Enabled,
3043 GICXXPred_Simple_IsRule257Enabled,
3044 GICXXPred_Simple_IsRule258Enabled,
3045 GICXXPred_Simple_IsRule259Enabled,
3046 GICXXPred_Simple_IsRule260Enabled,
3047 GICXXPred_Simple_IsRule261Enabled,
3048 GICXXPred_Simple_IsRule262Enabled,
3049 GICXXPred_Simple_IsRule263Enabled,
3050 GICXXPred_Simple_IsRule264Enabled,
3051 GICXXPred_Simple_IsRule265Enabled,
3052 GICXXPred_Simple_IsRule266Enabled,
3053 GICXXPred_Simple_IsRule267Enabled,
3054 GICXXPred_Simple_IsRule268Enabled,
3055 GICXXPred_Simple_IsRule269Enabled,
3056 GICXXPred_Simple_IsRule270Enabled,
3057 GICXXPred_Simple_IsRule271Enabled,
3058 GICXXPred_Simple_IsRule272Enabled,
3059 GICXXPred_Simple_IsRule273Enabled,
3060 GICXXPred_Simple_IsRule274Enabled,
3061 GICXXPred_Simple_IsRule275Enabled,
3062 GICXXPred_Simple_IsRule276Enabled,
3063 GICXXPred_Simple_IsRule277Enabled,
3064 GICXXPred_Simple_IsRule278Enabled,
3065 GICXXPred_Simple_IsRule279Enabled,
3066 GICXXPred_Simple_IsRule280Enabled,
3067 GICXXPred_Simple_IsRule281Enabled,
3068 GICXXPred_Simple_IsRule282Enabled,
3069 GICXXPred_Simple_IsRule283Enabled,
3070 GICXXPred_Simple_IsRule284Enabled,
3071 GICXXPred_Simple_IsRule285Enabled,
3072 GICXXPred_Simple_IsRule286Enabled,
3073 GICXXPred_Simple_IsRule287Enabled,
3074 GICXXPred_Simple_IsRule288Enabled,
3075 GICXXPred_Simple_IsRule289Enabled,
3076 GICXXPred_Simple_IsRule290Enabled,
3077 GICXXPred_Simple_IsRule291Enabled,
3078 GICXXPred_Simple_IsRule292Enabled,
3079 GICXXPred_Simple_IsRule293Enabled,
3080 GICXXPred_Simple_IsRule294Enabled,
3081 GICXXPred_Simple_IsRule295Enabled,
3082 GICXXPred_Simple_IsRule296Enabled,
3083 GICXXPred_Simple_IsRule297Enabled,
3084 GICXXPred_Simple_IsRule298Enabled,
3085 GICXXPred_Simple_IsRule299Enabled,
3086 GICXXPred_Simple_IsRule300Enabled,
3087 GICXXPred_Simple_IsRule301Enabled,
3088 GICXXPred_Simple_IsRule302Enabled,
3089 GICXXPred_Simple_IsRule303Enabled,
3090 GICXXPred_Simple_IsRule304Enabled,
3091 GICXXPred_Simple_IsRule305Enabled,
3092 GICXXPred_Simple_IsRule306Enabled,
3093 GICXXPred_Simple_IsRule307Enabled,
3094 GICXXPred_Simple_IsRule308Enabled,
3095 GICXXPred_Simple_IsRule309Enabled,
3096 GICXXPred_Simple_IsRule310Enabled,
3097 GICXXPred_Simple_IsRule311Enabled,
3098 GICXXPred_Simple_IsRule312Enabled,
3099 GICXXPred_Simple_IsRule313Enabled,
3100 GICXXPred_Simple_IsRule314Enabled,
3101 GICXXPred_Simple_IsRule315Enabled,
3102 GICXXPred_Simple_IsRule316Enabled,
3103 GICXXPred_Simple_IsRule317Enabled,
3104 GICXXPred_Simple_IsRule318Enabled,
3105 GICXXPred_Simple_IsRule319Enabled,
3106 GICXXPred_Simple_IsRule320Enabled,
3107 GICXXPred_Simple_IsRule321Enabled,
3108 GICXXPred_Simple_IsRule322Enabled,
3109 GICXXPred_Simple_IsRule323Enabled,
3110 GICXXPred_Simple_IsRule324Enabled,
3111 GICXXPred_Simple_IsRule325Enabled,
3112 GICXXPred_Simple_IsRule326Enabled,
3113 GICXXPred_Simple_IsRule327Enabled,
3114 GICXXPred_Simple_IsRule328Enabled,
3115 GICXXPred_Simple_IsRule329Enabled,
3116 GICXXPred_Simple_IsRule330Enabled,
3117 GICXXPred_Simple_IsRule331Enabled,
3118};
3119
3120bool RISCVPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
3121 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
3122}
3123// Custom renderers.
3124enum {
3125 GICR_Invalid,
3126};
3127RISCVPreLegalizerCombinerImpl::CustomRendererFn
3128RISCVPreLegalizerCombinerImpl::CustomRenderers[] = {
3129 nullptr, // GICR_Invalid
3130};
3131
3132bool RISCVPreLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
3133 switch (Opc) {
3134 case TargetOpcode::G_SADDE:
3135 case TargetOpcode::G_SSUBE:
3136 case TargetOpcode::G_UADDE:
3137 case TargetOpcode::G_USUBE:
3138 case TargetOpcode::G_FCMP:
3139 case TargetOpcode::G_FMA:
3140 case TargetOpcode::G_FMAD:
3141 case TargetOpcode::G_FSHL:
3142 case TargetOpcode::G_FSHR:
3143 case TargetOpcode::G_ICMP:
3144 case TargetOpcode::G_INSERT_VECTOR_ELT:
3145 case TargetOpcode::G_SADDO:
3146 case TargetOpcode::G_SELECT:
3147 case TargetOpcode::G_SHUFFLE_VECTOR:
3148 case TargetOpcode::G_SMULFIX:
3149 case TargetOpcode::G_SMULFIXSAT:
3150 case TargetOpcode::G_SMULO:
3151 case TargetOpcode::G_SSUBO:
3152 case TargetOpcode::G_UADDO:
3153 case TargetOpcode::G_UMULFIX:
3154 case TargetOpcode::G_UMULFIXSAT:
3155 case TargetOpcode::G_UMULO:
3156 case TargetOpcode::G_USUBO:
3157 case TargetOpcode::G_ADD:
3158 case TargetOpcode::G_AND:
3159 case TargetOpcode::G_ASHR:
3160 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
3161 case TargetOpcode::G_FADD:
3162 case TargetOpcode::G_FCOPYSIGN:
3163 case TargetOpcode::G_FDIV:
3164 case TargetOpcode::G_FMAXIMUM:
3165 case TargetOpcode::G_FMAXIMUMNUM:
3166 case TargetOpcode::G_FMAXNUM:
3167 case TargetOpcode::G_FMAXNUM_IEEE:
3168 case TargetOpcode::G_FMINIMUM:
3169 case TargetOpcode::G_FMINIMUMNUM:
3170 case TargetOpcode::G_FMINNUM:
3171 case TargetOpcode::G_FMINNUM_IEEE:
3172 case TargetOpcode::G_FMUL:
3173 case TargetOpcode::G_FPOWI:
3174 case TargetOpcode::G_FREM:
3175 case TargetOpcode::G_FSUB:
3176 case TargetOpcode::G_LSHR:
3177 case TargetOpcode::G_MERGE_VALUES:
3178 case TargetOpcode::G_MUL:
3179 case TargetOpcode::G_OR:
3180 case TargetOpcode::G_PTR_ADD:
3181 case TargetOpcode::G_ROTL:
3182 case TargetOpcode::G_ROTR:
3183 case TargetOpcode::G_SADDSAT:
3184 case TargetOpcode::G_SDIV:
3185 case TargetOpcode::G_SEXT_INREG:
3186 case TargetOpcode::G_SHL:
3187 case TargetOpcode::G_SMAX:
3188 case TargetOpcode::G_SMIN:
3189 case TargetOpcode::G_SMULH:
3190 case TargetOpcode::G_SREM:
3191 case TargetOpcode::G_SSHLSAT:
3192 case TargetOpcode::G_SUB:
3193 case TargetOpcode::G_UADDSAT:
3194 case TargetOpcode::G_UDIV:
3195 case TargetOpcode::G_UMAX:
3196 case TargetOpcode::G_UMIN:
3197 case TargetOpcode::G_UMULH:
3198 case TargetOpcode::G_UREM:
3199 case TargetOpcode::G_USHLSAT:
3200 case TargetOpcode::G_XOR:
3201 case TargetOpcode::COPY:
3202 case TargetOpcode::G_ABS:
3203 case TargetOpcode::G_ANYEXT:
3204 case TargetOpcode::G_BITCAST:
3205 case TargetOpcode::G_BITREVERSE:
3206 case TargetOpcode::G_BSWAP:
3207 case TargetOpcode::G_BUILD_VECTOR:
3208 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
3209 case TargetOpcode::G_CONCAT_VECTORS:
3210 case TargetOpcode::G_CTLZ:
3211 case TargetOpcode::G_CTLZ_ZERO_POISON:
3212 case TargetOpcode::G_CTPOP:
3213 case TargetOpcode::G_CTTZ:
3214 case TargetOpcode::G_CTTZ_ZERO_POISON:
3215 case TargetOpcode::G_FABS:
3216 case TargetOpcode::G_FCANONICALIZE:
3217 case TargetOpcode::G_FCEIL:
3218 case TargetOpcode::G_FFLOOR:
3219 case TargetOpcode::G_FLOG2:
3220 case TargetOpcode::G_FNEARBYINT:
3221 case TargetOpcode::G_FNEG:
3222 case TargetOpcode::G_FPEXT:
3223 case TargetOpcode::G_FPTOSI:
3224 case TargetOpcode::G_FPTOUI:
3225 case TargetOpcode::G_FPTRUNC:
3226 case TargetOpcode::G_FREEZE:
3227 case TargetOpcode::G_FRINT:
3228 case TargetOpcode::G_FSQRT:
3229 case TargetOpcode::G_INTRINSIC_ROUND:
3230 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
3231 case TargetOpcode::G_INTRINSIC_TRUNC:
3232 case TargetOpcode::G_INTTOPTR:
3233 case TargetOpcode::G_LOAD:
3234 case TargetOpcode::G_PHI:
3235 case TargetOpcode::G_PTRTOINT:
3236 case TargetOpcode::G_SEXT:
3237 case TargetOpcode::G_SEXTLOAD:
3238 case TargetOpcode::G_SITOFP:
3239 case TargetOpcode::G_STORE:
3240 case TargetOpcode::G_TRUNC:
3241 case TargetOpcode::G_TRUNC_USAT_U:
3242 case TargetOpcode::G_UITOFP:
3243 case TargetOpcode::G_ZEXT:
3244 case TargetOpcode::G_ZEXTLOAD:
3245 case TargetOpcode::G_BR:
3246 case TargetOpcode::G_UNMERGE_VALUES:
3247 return true;
3248 default:
3249 return false;
3250 }
3251}
3252
3253uint32_t RISCVPreLegalizerCombinerImpl::getRootFlagsToDrop() const {
3254 return MachineInstr::getPoisonGeneratingFlags();
3255}
3256
3257bool RISCVPreLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
3258 const PredicateBitset AvailableFeatures = getAvailableFeatures();
3259 State.MIs.clear();
3260 State.MIs.push_back(&I);
3261 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
3262 return true;
3263 }
3264
3265 return false;
3266}
3267
3268enum {
3269 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
3270 GICXXCustomAction_GICombiner1,
3271 GICXXCustomAction_GICombiner2,
3272 GICXXCustomAction_GICombiner3,
3273 GICXXCustomAction_GICombiner4,
3274 GICXXCustomAction_GICombiner5,
3275 GICXXCustomAction_GICombiner6,
3276 GICXXCustomAction_GICombiner7,
3277 GICXXCustomAction_GICombiner8,
3278 GICXXCustomAction_GICombiner9,
3279 GICXXCustomAction_GICombiner10,
3280 GICXXCustomAction_GICombiner11,
3281 GICXXCustomAction_GICombiner12,
3282 GICXXCustomAction_GICombiner13,
3283 GICXXCustomAction_GICombiner14,
3284 GICXXCustomAction_GICombiner15,
3285 GICXXCustomAction_GICombiner16,
3286 GICXXCustomAction_GICombiner17,
3287 GICXXCustomAction_GICombiner18,
3288 GICXXCustomAction_GICombiner19,
3289 GICXXCustomAction_GICombiner20,
3290 GICXXCustomAction_GICombiner21,
3291 GICXXCustomAction_GICombiner22,
3292 GICXXCustomAction_GICombiner23,
3293 GICXXCustomAction_GICombiner24,
3294 GICXXCustomAction_GICombiner25,
3295 GICXXCustomAction_GICombiner26,
3296 GICXXCustomAction_GICombiner27,
3297 GICXXCustomAction_GICombiner28,
3298 GICXXCustomAction_GICombiner29,
3299 GICXXCustomAction_GICombiner30,
3300 GICXXCustomAction_GICombiner31,
3301 GICXXCustomAction_GICombiner32,
3302 GICXXCustomAction_GICombiner33,
3303 GICXXCustomAction_GICombiner34,
3304 GICXXCustomAction_GICombiner35,
3305 GICXXCustomAction_GICombiner36,
3306 GICXXCustomAction_GICombiner37,
3307 GICXXCustomAction_GICombiner38,
3308 GICXXCustomAction_GICombiner39,
3309 GICXXCustomAction_GICombiner40,
3310 GICXXCustomAction_GICombiner41,
3311 GICXXCustomAction_GICombiner42,
3312 GICXXCustomAction_GICombiner43,
3313 GICXXCustomAction_GICombiner44,
3314 GICXXCustomAction_GICombiner45,
3315 GICXXCustomAction_GICombiner46,
3316 GICXXCustomAction_GICombiner47,
3317 GICXXCustomAction_GICombiner48,
3318 GICXXCustomAction_GICombiner49,
3319 GICXXCustomAction_GICombiner50,
3320 GICXXCustomAction_GICombiner51,
3321 GICXXCustomAction_GICombiner52,
3322 GICXXCustomAction_GICombiner53,
3323 GICXXCustomAction_GICombiner54,
3324 GICXXCustomAction_GICombiner55,
3325 GICXXCustomAction_GICombiner56,
3326 GICXXCustomAction_GICombiner57,
3327 GICXXCustomAction_GICombiner58,
3328 GICXXCustomAction_GICombiner59,
3329 GICXXCustomAction_GICombiner60,
3330 GICXXCustomAction_GICombiner61,
3331 GICXXCustomAction_GICombiner62,
3332 GICXXCustomAction_GICombiner63,
3333 GICXXCustomAction_GICombiner64,
3334 GICXXCustomAction_GICombiner65,
3335 GICXXCustomAction_GICombiner66,
3336 GICXXCustomAction_GICombiner67,
3337 GICXXCustomAction_GICombiner68,
3338 GICXXCustomAction_GICombiner69,
3339 GICXXCustomAction_GICombiner70,
3340 GICXXCustomAction_GICombiner71,
3341 GICXXCustomAction_GICombiner72,
3342 GICXXCustomAction_GICombiner73,
3343 GICXXCustomAction_GICombiner74,
3344 GICXXCustomAction_GICombiner75,
3345 GICXXCustomAction_GICombiner76,
3346 GICXXCustomAction_GICombiner77,
3347 GICXXCustomAction_GICombiner78,
3348 GICXXCustomAction_GICombiner79,
3349 GICXXCustomAction_GICombiner80,
3350 GICXXCustomAction_GICombiner81,
3351 GICXXCustomAction_GICombiner82,
3352 GICXXCustomAction_GICombiner83,
3353 GICXXCustomAction_GICombiner84,
3354 GICXXCustomAction_GICombiner85,
3355 GICXXCustomAction_GICombiner86,
3356 GICXXCustomAction_GICombiner87,
3357 GICXXCustomAction_GICombiner88,
3358 GICXXCustomAction_GICombiner89,
3359 GICXXCustomAction_GICombiner90,
3360 GICXXCustomAction_GICombiner91,
3361 GICXXCustomAction_GICombiner92,
3362 GICXXCustomAction_GICombiner93,
3363 GICXXCustomAction_GICombiner94,
3364 GICXXCustomAction_GICombiner95,
3365 GICXXCustomAction_GICombiner96,
3366 GICXXCustomAction_GICombiner97,
3367 GICXXCustomAction_GICombiner98,
3368 GICXXCustomAction_GICombiner99,
3369 GICXXCustomAction_GICombiner100,
3370 GICXXCustomAction_GICombiner101,
3371 GICXXCustomAction_GICombiner102,
3372 GICXXCustomAction_GICombiner103,
3373 GICXXCustomAction_GICombiner104,
3374 GICXXCustomAction_GICombiner105,
3375 GICXXCustomAction_GICombiner106,
3376 GICXXCustomAction_GICombiner107,
3377 GICXXCustomAction_GICombiner108,
3378 GICXXCustomAction_GICombiner109,
3379 GICXXCustomAction_GICombiner110,
3380 GICXXCustomAction_GICombiner111,
3381 GICXXCustomAction_GICombiner112,
3382 GICXXCustomAction_GICombiner113,
3383 GICXXCustomAction_GICombiner114,
3384 GICXXCustomAction_GICombiner115,
3385 GICXXCustomAction_GICombiner116,
3386 GICXXCustomAction_GICombiner117,
3387 GICXXCustomAction_GICombiner118,
3388 GICXXCustomAction_GICombiner119,
3389 GICXXCustomAction_GICombiner120,
3390 GICXXCustomAction_GICombiner121,
3391 GICXXCustomAction_GICombiner122,
3392 GICXXCustomAction_GICombiner123,
3393 GICXXCustomAction_GICombiner124,
3394 GICXXCustomAction_GICombiner125,
3395 GICXXCustomAction_GICombiner126,
3396 GICXXCustomAction_GICombiner127,
3397};
3398bool RISCVPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
3399 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3400 switch(ApplyID) {
3401 case GICXXCustomAction_GICombiner0:{
3402 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3403 // Match Patterns
3404 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3405 return false;
3406 }
3407 // Apply Patterns
3408 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3409 return true;
3410 }
3411 case GICXXCustomAction_GICombiner1:{
3412 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3413 // Match Patterns
3414 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
3415 return false;
3416 }
3417 // Apply Patterns
3418 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3419 return true;
3420 }
3421 case GICXXCustomAction_GICombiner2:{
3422 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3423 // Match Patterns
3424 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3425 return false;
3426 }
3427 // Apply Patterns
3428 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3429 return true;
3430 }
3431 case GICXXCustomAction_GICombiner3:{
3432 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3433 // Match Patterns
3434 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3435 return false;
3436 }
3437 // Apply Patterns
3438 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3439 return true;
3440 }
3441 case GICXXCustomAction_GICombiner4:{
3442 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3443 // Match Patterns
3444 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3445 return false;
3446 }
3447 // Apply Patterns
3448 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3449 return true;
3450 }
3451 case GICXXCustomAction_GICombiner5:{
3452 // Match Patterns
3453 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
3454 return false;
3455 }
3456 // Apply Patterns
3457 Helper.applyCombineCopy(*State.MIs[0]);
3458 return true;
3459 }
3460 case GICXXCustomAction_GICombiner6:{
3461 unsigned GIMatchData_matchinfo;
3462 // Match Patterns
3463 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
3464 return false;
3465 }
3466 // Apply Patterns
3467 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
3468 return true;
3469 }
3470 case GICXXCustomAction_GICombiner7:{
3471 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3472 // Match Patterns
3473 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3474 return false;
3475 }
3476 // Apply Patterns
3477 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3478 return true;
3479 }
3480 case GICXXCustomAction_GICombiner8:{
3481 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3482 // Match Patterns
3483 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3484 return false;
3485 }
3486 // Apply Patterns
3487 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3488 return true;
3489 }
3490 case GICXXCustomAction_GICombiner9:{
3491 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3492 // Match Patterns
3493 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
3494 GIMatchData_matchinfo);}()) {
3495 return false;
3496 }
3497 // Apply Patterns
3498 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3499 return true;
3500 }
3501 case GICXXCustomAction_GICombiner10:{
3502 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3503 // Match Patterns
3504 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3505 return false;
3506 }
3507 // Apply Patterns
3508 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3509 return true;
3510 }
3511 case GICXXCustomAction_GICombiner11:{
3512 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3513 // Match Patterns
3514 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
3515 GIMatchData_matchinfo);}()) {
3516 return false;
3517 }
3518 // Apply Patterns
3519 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3520 return true;
3521 }
3522 case GICXXCustomAction_GICombiner12:{
3523 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3524 // Match Patterns
3525 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3526 return false;
3527 }
3528 // Apply Patterns
3529 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3530 return true;
3531 }
3532 case GICXXCustomAction_GICombiner13:{
3533 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3534 // Match Patterns
3535 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3536 return false;
3537 }
3538 // Apply Patterns
3539 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3540 return true;
3541 }
3542 case GICXXCustomAction_GICombiner14:{
3543 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3544 // Match Patterns
3545 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3546 return false;
3547 }
3548 // Apply Patterns
3549 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3550 return true;
3551 }
3552 case GICXXCustomAction_GICombiner15:{
3553 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3554 // Match Patterns
3555 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3556 return false;
3557 }
3558 // Apply Patterns
3559 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3560 return true;
3561 }
3562 case GICXXCustomAction_GICombiner16:{
3563 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3564 // Match Patterns
3565 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
3566 return false;
3567 }
3568 // Apply Patterns
3569 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3570 return true;
3571 }
3572 case GICXXCustomAction_GICombiner17:{
3573 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3574 // Match Patterns
3575 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3576 return false;
3577 }
3578 // Apply Patterns
3579 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3580 return true;
3581 }
3582 case GICXXCustomAction_GICombiner18:{
3583 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3584 // Match Patterns
3585 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3586 return false;
3587 }
3588 // Apply Patterns
3589 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3590 return true;
3591 }
3592 case GICXXCustomAction_GICombiner19:{
3593 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3594 // Match Patterns
3595 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3596 return false;
3597 }
3598 // Apply Patterns
3599 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3600 return true;
3601 }
3602 case GICXXCustomAction_GICombiner20:{
3603 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3604 // Match Patterns
3605 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3606 return false;
3607 }
3608 // Apply Patterns
3609 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3610 return true;
3611 }
3612 case GICXXCustomAction_GICombiner21:{
3613 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3614 // Match Patterns
3615 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3616 return false;
3617 }
3618 // Apply Patterns
3619 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3620 return true;
3621 }
3622 case GICXXCustomAction_GICombiner22:{
3623 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3624 // Match Patterns
3625 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3626 return false;
3627 }
3628 // Apply Patterns
3629 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3630 return true;
3631 }
3632 case GICXXCustomAction_GICombiner23:{
3633 APInt GIMatchData_matchinfo;
3634 // Match Patterns
3635 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
3636 return false;
3637 }
3638 // Apply Patterns
3639 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3640 return true;
3641 }
3642 case GICXXCustomAction_GICombiner24:{
3643 SmallVector<Register> GIMatchData_info;
3644 // Match Patterns
3645 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
3646 return false;
3647 }
3648 // Apply Patterns
3649 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
3650 return true;
3651 }
3652 case GICXXCustomAction_GICombiner25:{
3653 Register GIMatchData_matchinfo;
3654 // Match Patterns
3655 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
3656 return false;
3657 }
3658 // Apply Patterns
3659 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
3660 return true;
3661 }
3662 case GICXXCustomAction_GICombiner26:{
3663 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
3664 // Match Patterns
3665 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3666 return false;
3667 }
3668 // Apply Patterns
3669 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
3670 return true;
3671 }
3672 case GICXXCustomAction_GICombiner27:{
3673 PreferredTuple GIMatchData_matchinfo;
3674 // Match Patterns
3675 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
3676 return false;
3677 }
3678 // Apply Patterns
3679 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
3680 return true;
3681 }
3682 case GICXXCustomAction_GICombiner28:{
3683 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3684 // Match Patterns
3685 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3686 return false;
3687 }
3688 // Apply Patterns
3689 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3690 return true;
3691 }
3692 case GICXXCustomAction_GICombiner29:{
3693 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3694 // Match Patterns
3695 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3696 return false;
3697 }
3698 // Apply Patterns
3699 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3700 return true;
3701 }
3702 case GICXXCustomAction_GICombiner30:{
3703 // Apply Patterns
3704 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3705 return true;
3706 }
3707 case GICXXCustomAction_GICombiner31:{
3708 // Apply Patterns
3709 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), 0);
3710 return true;
3711 }
3712 case GICXXCustomAction_GICombiner32:{
3713 // Apply Patterns
3714 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), -1);
3715 return true;
3716 }
3717 case GICXXCustomAction_GICombiner33:{
3718 Register GIMatchData_matchinfo;
3719 // Match Patterns
3720 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3721 return false;
3722 }
3723 // Apply Patterns
3724 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3725 return true;
3726 }
3727 case GICXXCustomAction_GICombiner34:{
3728 Register GIMatchData_matchinfo;
3729 // Match Patterns
3730 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3731 return false;
3732 }
3733 // Apply Patterns
3734 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3735 return true;
3736 }
3737 case GICXXCustomAction_GICombiner35:{
3738 Register GIMatchData_matchinfo;
3739 // Match Patterns
3740 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3741 return false;
3742 }
3743 // Apply Patterns
3744 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3745 return true;
3746 }
3747 case GICXXCustomAction_GICombiner36:{
3748 Register GIMatchData_matchinfo;
3749 // Match Patterns
3750 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3751 return false;
3752 }
3753 // Apply Patterns
3754 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3755 return true;
3756 }
3757 case GICXXCustomAction_GICombiner37:{
3758 MachineInstr* GIMatchData_matchinfo;
3759 // Match Patterns
3760 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3761 return false;
3762 }
3763 // Apply Patterns
3764 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3765 return true;
3766 }
3767 case GICXXCustomAction_GICombiner38:{
3768 InstructionStepsMatchInfo GIMatchData_info;
3769 // Match Patterns
3770 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3771 return false;
3772 }
3773 // Apply Patterns
3774 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3775 return true;
3776 }
3777 case GICXXCustomAction_GICombiner39:{
3778 std::optional<int64_t> GIMatchData_matchinfo;
3779 // Match Patterns
3780 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3781 return false;
3782 }
3783 // Apply Patterns
3784 if (GIMatchData_matchinfo) {
3785 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3786 } else {
3787 Helper.replaceInstWithUndef(*State.MIs[0]);
3788 }
3789 return true;
3790 }
3791 case GICXXCustomAction_GICombiner40:{
3792 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3793 // Match Patterns
3794 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3795 return false;
3796 }
3797 // Apply Patterns
3798 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3799 return true;
3800 }
3801 case GICXXCustomAction_GICombiner41:{
3802 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3803 // Match Patterns
3804 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3805 return false;
3806 }
3807 // Apply Patterns
3808 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3809 return true;
3810 }
3811 case GICXXCustomAction_GICombiner42:{
3812 PtrAddChain GIMatchData_matchinfo;
3813 // Match Patterns
3814 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3815 return false;
3816 }
3817 // Apply Patterns
3818 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3819 return true;
3820 }
3821 case GICXXCustomAction_GICombiner43:{
3822 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3823 // Match Patterns
3824 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3825 return false;
3826 }
3827 // Apply Patterns
3828 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3829 return true;
3830 }
3831 case GICXXCustomAction_GICombiner44:{
3832 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3833 // Match Patterns
3834 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3835 return false;
3836 }
3837 // Apply Patterns
3838 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3839 return true;
3840 }
3841 case GICXXCustomAction_GICombiner45:{
3842 int64_t GIMatchData_matchinfo;
3843 // Match Patterns
3844 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3845 return false;
3846 }
3847 // Apply Patterns
3848 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3849 return true;
3850 }
3851 case GICXXCustomAction_GICombiner46:{
3852 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3853 // Match Patterns
3854 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
3855 return false;
3856 }
3857 // Apply Patterns
3858 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3859 return true;
3860 }
3861 case GICXXCustomAction_GICombiner47:{
3862 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3863 // Match Patterns
3864 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3865 return false;
3866 }
3867 // Apply Patterns
3868 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3869 return true;
3870 }
3871 case GICXXCustomAction_GICombiner48:{
3872 std::tuple<Register, int64_t> GIMatchData_info;
3873 // Match Patterns
3874 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3875 return false;
3876 }
3877 // Apply Patterns
3878 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3879 return true;
3880 }
3881 case GICXXCustomAction_GICombiner49:{
3882 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3883 // Match Patterns
3884 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3885 return false;
3886 }
3887 // Apply Patterns
3888 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3889 return true;
3890 }
3891 case GICXXCustomAction_GICombiner50:{
3892 RegisterImmPair GIMatchData_matchinfo;
3893 // Match Patterns
3894 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3895 return false;
3896 }
3897 // Apply Patterns
3898 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3899 return true;
3900 }
3901 case GICXXCustomAction_GICombiner51:{
3902 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3903 // Match Patterns
3904 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3905 return false;
3906 }
3907 // Apply Patterns
3908 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3909 return true;
3910 }
3911 case GICXXCustomAction_GICombiner52:{
3912 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3913 // Match Patterns
3914 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3915 return false;
3916 }
3917 // Apply Patterns
3918 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3919 return true;
3920 }
3921 case GICXXCustomAction_GICombiner53:{
3922 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3923 // Match Patterns
3924 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3925 return false;
3926 }
3927 // Apply Patterns
3928 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3929 return true;
3930 }
3931 case GICXXCustomAction_GICombiner54:{
3932 // Match Patterns
3933 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
3934 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
3935 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
3936 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
3937 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
3938 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
3939 return false;
3940 }
3941 // Apply Patterns
3942 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
3943 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
3944 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
3945 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
3946 State.MIs[0]->eraseFromParent();
3947 return true;
3948 }
3949 case GICXXCustomAction_GICombiner55:{
3950 Register GIMatchData_matchinfo;
3951 // Match Patterns
3952 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3953 return false;
3954 }
3955 // Apply Patterns
3956 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3957 return true;
3958 }
3959 case GICXXCustomAction_GICombiner56:{
3960 Register GIMatchData_matchinfo;
3961 // Match Patterns
3962 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3963 return false;
3964 }
3965 // Apply Patterns
3966 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3967 return true;
3968 }
3969 case GICXXCustomAction_GICombiner57:{
3970 // Match Patterns
3971 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3972 return false;
3973 }
3974 // Apply Patterns
3975 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3976 return true;
3977 }
3978 case GICXXCustomAction_GICombiner58:{
3979 Register GIMatchData_matchinfo;
3980 // Match Patterns
3981 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3982 return false;
3983 }
3984 // Apply Patterns
3985 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3986 return true;
3987 }
3988 case GICXXCustomAction_GICombiner59:{
3989 // Match Patterns
3990 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3991 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3992 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3993 return false;
3994 }
3995 // Apply Patterns
3996 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3997 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3998 State.MIs[0]->eraseFromParent();
3999 return true;
4000 }
4001 case GICXXCustomAction_GICombiner60:{
4002 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
4003 // Match Patterns
4004 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
4005 return false;
4006 }
4007 // Apply Patterns
4008 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
4009 return true;
4010 }
4011 case GICXXCustomAction_GICombiner61:{
4012 SmallVector<Register> GIMatchData_info;
4013 // Match Patterns
4014 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
4015 return false;
4016 }
4017 // Apply Patterns
4018 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
4019 return true;
4020 }
4021 case GICXXCustomAction_GICombiner62:{
4022 MachineInstr * GIMatchData_matchinfo;
4023 // Match Patterns
4024 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
4025 return false;
4026 }
4027 // Apply Patterns
4028 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
4029 return true;
4030 }
4031 case GICXXCustomAction_GICombiner63:{
4032 // Apply Patterns
4033 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
4034 return true;
4035 }
4036 case GICXXCustomAction_GICombiner64:{
4037 APInt GIMatchData_info;
4038 // Match Patterns
4039 if(![&](){LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4040 APInt NewCst = State.MIs[2]->getOperand(1).getCImm()->getValue().zextOrTrunc(
4041 DstTy.getSizeInBits());
4042 NewCst += State.MIs[3]->getOperand(1).getCImm()->getValue().sextOrTrunc(
4043 DstTy.getSizeInBits());
4044 GIMatchData_info = NewCst;
4045 return true;}()) {
4046 return false;
4047 }
4048 // Apply Patterns
4049 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4050 Helper.getBuilder().buildConstant(State.MIs[0]->getOperand(0), GIMatchData_info);
4051 State.MIs[0]->eraseFromParent();
4052 return true;
4053 }
4054 case GICXXCustomAction_GICombiner65:{
4055 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4056 // Match Patterns
4057 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
4058 return false;
4059 }
4060 // Apply Patterns
4061 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4062 return true;
4063 }
4064 case GICXXCustomAction_GICombiner66:{
4065 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4066 // Match Patterns
4067 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
4068 return false;
4069 }
4070 // Apply Patterns
4071 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4072 return true;
4073 }
4074 case GICXXCustomAction_GICombiner67:{
4075 // Match Patterns
4076 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
4077 return false;
4078 }
4079 // Apply Patterns
4080 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
4081 return true;
4082 }
4083 case GICXXCustomAction_GICombiner68:{
4084 std::pair<Register, Register> GIMatchData_matchinfo;
4085 // Match Patterns
4086 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4087 return false;
4088 }
4089 // Apply Patterns
4090 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
4091 return true;
4092 }
4093 case GICXXCustomAction_GICombiner69:{
4094 RegisterImmPair GIMatchData_matchinfo;
4095 // Match Patterns
4096 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
4097 return false;
4098 }
4099 // Apply Patterns
4100 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
4101 return true;
4102 }
4103 case GICXXCustomAction_GICombiner70:{
4104 ShiftOfShiftedLogic GIMatchData_matchinfo;
4105 // Match Patterns
4106 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
4107 return false;
4108 }
4109 // Apply Patterns
4110 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
4111 return true;
4112 }
4113 case GICXXCustomAction_GICombiner71:{
4114 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4115 // Match Patterns
4116 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
4117 return false;
4118 }
4119 // Apply Patterns
4120 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4121 return true;
4122 }
4123 case GICXXCustomAction_GICombiner72:{
4124 MachineInstr * GIMatchData_matchinfo;
4125 // Match Patterns
4126 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
4127 return false;
4128 }
4129 // Apply Patterns
4130 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
4131 return true;
4132 }
4133 case GICXXCustomAction_GICombiner73:{
4134 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4135 // Match Patterns
4136 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
4137 return false;
4138 }
4139 // Apply Patterns
4140 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4141 return true;
4142 }
4143 case GICXXCustomAction_GICombiner74:{
4144 // Match Patterns
4145 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
4146 return false;
4147 }
4148 // Apply Patterns
4149 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
4150 return true;
4151 }
4152 case GICXXCustomAction_GICombiner75:{
4153 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4154 // Match Patterns
4155 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
4156 return false;
4157 }
4158 // Apply Patterns
4159 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4160 return true;
4161 }
4162 case GICXXCustomAction_GICombiner76:{
4163 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4164 // Match Patterns
4165 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
4166 return false;
4167 }
4168 // Apply Patterns
4169 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4170 return true;
4171 }
4172 case GICXXCustomAction_GICombiner77:{
4173 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4174 // Match Patterns
4175 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
4176 return false;
4177 }
4178 // Apply Patterns
4179 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4180 return true;
4181 }
4182 case GICXXCustomAction_GICombiner78:{
4183 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4184 // Match Patterns
4185 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
4186 return false;
4187 }
4188 // Apply Patterns
4189 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4190 return true;
4191 }
4192 case GICXXCustomAction_GICombiner79:{
4193 APInt GIMatchData_matchinfo;
4194 // Match Patterns
4195 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
4196 return false;
4197 }
4198 // Apply Patterns
4199 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
4200 return true;
4201 }
4202 case GICXXCustomAction_GICombiner80:{
4203 ConstantFP* GIMatchData_matchinfo;
4204 // Match Patterns
4205 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
4206 return false;
4207 }
4208 // Apply Patterns
4209 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
4210 return true;
4211 }
4212 case GICXXCustomAction_GICombiner81:{
4213 ConstantFP* GIMatchData_matchinfo;
4214 // Match Patterns
4215 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
4216 return false;
4217 }
4218 // Apply Patterns
4219 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
4220 return true;
4221 }
4222 case GICXXCustomAction_GICombiner82:{
4223 APInt GIMatchData_matchinfo;
4224 // Match Patterns
4225 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
4226 return false;
4227 }
4228 // Apply Patterns
4229 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
4230 return true;
4231 }
4232 case GICXXCustomAction_GICombiner83:{
4233 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4234 // Match Patterns
4235 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
4236 return false;
4237 }
4238 // Apply Patterns
4239 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4240 return true;
4241 }
4242 case GICXXCustomAction_GICombiner84:{
4243 // Match Patterns
4244 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
4245 return false;
4246 }
4247 // Apply Patterns
4248 Helper.applyUMulHToLShr(*State.MIs[0]);
4249 return true;
4250 }
4251 case GICXXCustomAction_GICombiner85:{
4252 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4253 // Match Patterns
4254 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
4255 return false;
4256 }
4257 // Apply Patterns
4258 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
4259 return true;
4260 }
4261 case GICXXCustomAction_GICombiner86:{
4262 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4263 // Match Patterns
4264 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
4265 GIMatchData_info);}()) {
4266 return false;
4267 }
4268 // Apply Patterns
4269 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4270 return true;
4271 }
4272 case GICXXCustomAction_GICombiner87:{
4273 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4274 // Match Patterns
4275 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
4276 GIMatchData_info);}()) {
4277 return false;
4278 }
4279 // Apply Patterns
4280 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4281 return true;
4282 }
4283 case GICXXCustomAction_GICombiner88:{
4284 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4285 // Match Patterns
4286 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
4287 GIMatchData_info);}()) {
4288 return false;
4289 }
4290 // Apply Patterns
4291 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4292 return true;
4293 }
4294 case GICXXCustomAction_GICombiner89:{
4295 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4296 // Match Patterns
4297 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
4298 *State.MIs[0], GIMatchData_info);}()) {
4299 return false;
4300 }
4301 // Apply Patterns
4302 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4303 return true;
4304 }
4305 case GICXXCustomAction_GICombiner90:{
4306 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4307 // Match Patterns
4308 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
4309 GIMatchData_info);}()) {
4310 return false;
4311 }
4312 // Apply Patterns
4313 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4314 return true;
4315 }
4316 case GICXXCustomAction_GICombiner91:{
4317 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4318 // Match Patterns
4319 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
4320 GIMatchData_info);}()) {
4321 return false;
4322 }
4323 // Apply Patterns
4324 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4325 return true;
4326 }
4327 case GICXXCustomAction_GICombiner92:{
4328 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4329 // Match Patterns
4330 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
4331 GIMatchData_info);}()) {
4332 return false;
4333 }
4334 // Apply Patterns
4335 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4336 return true;
4337 }
4338 case GICXXCustomAction_GICombiner93:{
4339 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4340 // Match Patterns
4341 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
4342 *State.MIs[0], GIMatchData_info);}()) {
4343 return false;
4344 }
4345 // Apply Patterns
4346 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4347 return true;
4348 }
4349 case GICXXCustomAction_GICombiner94:{
4350 unsigned GIMatchData_select_op_no;
4351 // Match Patterns
4352 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
4353 return false;
4354 }
4355 // Apply Patterns
4356 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
4357 return true;
4358 }
4359 case GICXXCustomAction_GICombiner95:{
4360 // Match Patterns
4361 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
4362 /*OrNegative=*/true);}()) {
4363 return false;
4364 }
4365 // Apply Patterns
4366 Helper.applySimplifySRemByPow2(*State.MIs[0]);
4367 return true;
4368 }
4369 case GICXXCustomAction_GICombiner96:{
4370 // Match Patterns
4371 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
4372 return false;
4373 }
4374 // Apply Patterns
4375 Helper.applyUDivOrURemByConst(*State.MIs[0]);
4376 return true;
4377 }
4378 case GICXXCustomAction_GICombiner97:{
4379 // Match Patterns
4380 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
4381 return false;
4382 }
4383 // Apply Patterns
4384 Helper.applySDivOrSRemByConst(*State.MIs[0]);
4385 return true;
4386 }
4387 case GICXXCustomAction_GICombiner98:{
4388 // Match Patterns
4389 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
4390 return false;
4391 }
4392 // Apply Patterns
4393 Helper.applyUDivByPow2(*State.MIs[0]);
4394 return true;
4395 }
4396 case GICXXCustomAction_GICombiner99:{
4397 // Match Patterns
4398 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
4399 return false;
4400 }
4401 // Apply Patterns
4402 Helper.applySDivByPow2(*State.MIs[0]);
4403 return true;
4404 }
4405 case GICXXCustomAction_GICombiner100:{
4406 SmallVector<MachineInstr *> GIMatchData_matchinfo;
4407 // Match Patterns
4408 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
4409 return false;
4410 }
4411 // Apply Patterns
4412 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
4413 return true;
4414 }
4415 case GICXXCustomAction_GICombiner101:{
4416 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4417 // Match Patterns
4418 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
4419 return false;
4420 }
4421 // Apply Patterns
4422 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4423 return true;
4424 }
4425 case GICXXCustomAction_GICombiner102:{
4426 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4427 // Match Patterns
4428 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
4429 return false;
4430 }
4431 // Apply Patterns
4432 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4433 return true;
4434 }
4435 case GICXXCustomAction_GICombiner103:{
4436 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4437 // Match Patterns
4438 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
4439 return false;
4440 }
4441 // Apply Patterns
4442 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4443 return true;
4444 }
4445 case GICXXCustomAction_GICombiner104:{
4446 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4447 // Match Patterns
4448 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
4449 return false;
4450 }
4451 // Apply Patterns
4452 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4453 return true;
4454 }
4455 case GICXXCustomAction_GICombiner105:{
4456 SmallVector<Register> GIMatchData_matchinfo;
4457 // Match Patterns
4458 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
4459 return false;
4460 }
4461 // Apply Patterns
4462 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
4463 return true;
4464 }
4465 case GICXXCustomAction_GICombiner106:{
4466 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4467 // Match Patterns
4468 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4469 return false;
4470 }
4471 // Apply Patterns
4472 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4473 return true;
4474 }
4475 case GICXXCustomAction_GICombiner107:{
4476 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4477 // Match Patterns
4478 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4479 return false;
4480 }
4481 // Apply Patterns
4482 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4483 return true;
4484 }
4485 case GICXXCustomAction_GICombiner108:{
4486 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4487 // Match Patterns
4488 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4489 return false;
4490 }
4491 // Apply Patterns
4492 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4493 return true;
4494 }
4495 case GICXXCustomAction_GICombiner109:{
4496 SmallVector<Register> GIMatchData_matchinfo;
4497 // Match Patterns
4498 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
4499 return false;
4500 }
4501 // Apply Patterns
4502 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
4503 return true;
4504 }
4505 case GICXXCustomAction_GICombiner110:{
4506 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4507 // Match Patterns
4508 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4509 return false;
4510 }
4511 // Apply Patterns
4512 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4513 return true;
4514 }
4515 case GICXXCustomAction_GICombiner111:{
4516 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4517 // Match Patterns
4518 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
4519 return false;
4520 }
4521 // Apply Patterns
4522 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4523 return true;
4524 }
4525 case GICXXCustomAction_GICombiner112:{
4526 Register GIMatchData_matchinfo;
4527 // Match Patterns
4528 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
4529 return false;
4530 }
4531 // Apply Patterns
4532 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
4533 return true;
4534 }
4535 case GICXXCustomAction_GICombiner113:{
4536 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4537 // Match Patterns
4538 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4539 return false;
4540 }
4541 // Apply Patterns
4542 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4543 return true;
4544 }
4545 case GICXXCustomAction_GICombiner114:{
4546 SmallVector<Register> GIMatchData_info;
4547 // Match Patterns
4548 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
4549 return false;
4550 }
4551 // Apply Patterns
4552 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4553 return true;
4554 }
4555 case GICXXCustomAction_GICombiner115:{
4556 Register GIMatchData_src;
4557 // Match Patterns
4558 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4559 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4560 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4561 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4562 return false;
4563
4564 // Check counts match.
4565 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4566 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4567 if (NumMergeSrcs != NumUnmergeDefs)
4568 return false;
4569
4570 // Verify all merge sources match unmerge defs in order.
4571 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4572 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4573 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4574
4575 if (MergeSrc != UnmergeDef)
4576 return false;
4577
4578 if (!MRI.hasOneNonDBGUse(MergeSrc))
4579 return false;
4580 }
4581
4582 // Check size compatibility.
4583 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4584 LLT SrcTy = MRI.getType(GIMatchData_src);
4585 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4586 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4587 return false;
4588
4589 // Check bitcast legality.
4590 if (SrcTy != DstTy) {
4591 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4592 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4593 if (!Helper.isLegalOrBeforeLegalizer(Query))
4594 return false;
4595 }
4596
4597 return true;}()) {
4598 return false;
4599 }
4600 // Apply Patterns
4601 LLT SrcTy = MRI.getType(GIMatchData_src);
4602 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4603
4604 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4605
4606 if (SrcTy == DstTy) {
4607 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4608 } else {
4609 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4610 }
4611
4612 State.MIs[0]->eraseFromParent();
4613 return true;
4614 }
4615 case GICXXCustomAction_GICombiner116:{
4616 SmallVector<APInt, 8> GIMatchData_info;
4617 // Match Patterns
4618 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4619 return false;
4620 }
4621 // Apply Patterns
4622 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4623 return true;
4624 }
4625 case GICXXCustomAction_GICombiner117:{
4626 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4627 // Match Patterns
4628 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4629 return false;
4630 }
4631 // Apply Patterns
4632 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4633 return true;
4634 }
4635 case GICXXCustomAction_GICombiner118:{
4636 // Match Patterns
4637 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4638 return false;
4639 }
4640 // Apply Patterns
4641 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4642 return true;
4643 }
4644 case GICXXCustomAction_GICombiner119:{
4645 // Match Patterns
4646 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4647 return false;
4648 }
4649 // Apply Patterns
4650 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4651 return true;
4652 }
4653 case GICXXCustomAction_GICombiner120:{
4654 Register GIMatchData_unmergeSrc;
4655 // Match Patterns
4656 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4657 return false;
4658 }
4659 // Apply Patterns
4660 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4661 return true;
4662 }
4663 case GICXXCustomAction_GICombiner121:{
4664 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4665 // Match Patterns
4666 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4667 return false;
4668 }
4669 // Apply Patterns
4670 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4671 return true;
4672 }
4673 case GICXXCustomAction_GICombiner122:{
4674 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4675 // Match Patterns
4676 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4677 return false;
4678 }
4679 // Apply Patterns
4680 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4681 return true;
4682 }
4683 case GICXXCustomAction_GICombiner123:{
4684 Register GIMatchData_matchinfo;
4685 // Match Patterns
4686 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4687 return false;
4688 }
4689 // Apply Patterns
4690 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4691 return true;
4692 }
4693 case GICXXCustomAction_GICombiner124:{
4694 Register GIMatchData_matchinfo;
4695 // Match Patterns
4696 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4697 return false;
4698 }
4699 // Apply Patterns
4700 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4701 return true;
4702 }
4703 case GICXXCustomAction_GICombiner125:{
4704 LshrOfTruncOfLshr GIMatchData_matchinfo;
4705 // Match Patterns
4706 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4707 return false;
4708 }
4709 // Apply Patterns
4710 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4711 return true;
4712 }
4713 case GICXXCustomAction_GICombiner126:{
4714 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4715 // Match Patterns
4716 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4717 return false;
4718 }
4719 // Apply Patterns
4720 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4721 return true;
4722 }
4723 case GICXXCustomAction_GICombiner127:{
4724 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4725 // Match Patterns
4726 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4727 return false;
4728 }
4729 // Apply Patterns
4730 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4731 return true;
4732 }
4733 }
4734 llvm_unreachable("Unknown Apply Action");
4735}
4736#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4737#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4738#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4739#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)
4740#else
4741#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4742#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4743#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)
4744#endif
4745const uint8_t *RISCVPreLegalizerCombinerImpl::getMatchTable() const {
4746 constexpr static uint8_t MatchTable0[] = {
4747 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(287), /*)*//*default:*//*Label 113*/ GIMT_Encode4(12375),
4748 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1078), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4749 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1090),
4750 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(2060),
4751 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(3235),
4752 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3469),
4753 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3554),
4754 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3660),
4755 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3739), GIMT_Encode4(0), GIMT_Encode4(0),
4756 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3839),
4757 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(4311),
4758 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(5171), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4759 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(5433), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4760 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(5448), GIMT_Encode4(0),
4761 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(5515),
4762 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(5610),
4763 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(5682),
4764 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(5697),
4765 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(5712),
4766 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(5833),
4767 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(5891),
4768 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(5981), GIMT_Encode4(0), GIMT_Encode4(0),
4769 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(6045),
4770 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(6067), GIMT_Encode4(0), GIMT_Encode4(0),
4771 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(6089), GIMT_Encode4(0), GIMT_Encode4(0),
4772 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(6111),
4773 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(6123),
4774 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(6135), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4775 /* 354 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(6147), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4776 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(6171),
4777 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(6302), GIMT_Encode4(0), GIMT_Encode4(0),
4778 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(6717), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4779 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(6750),
4780 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(6825),
4781 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(7047),
4782 /* 550 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(7177),
4783 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(7526),
4784 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(7869),
4785 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(8194),
4786 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(8253),
4787 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(8312),
4788 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(8336),
4789 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(8360),
4790 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(8405), GIMT_Encode4(0), GIMT_Encode4(0),
4791 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(8417),
4792 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(8748),
4793 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(8817),
4794 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(8845),
4795 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(8857),
4796 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(8885),
4797 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(8954),
4798 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(8982),
4799 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(8994),
4800 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(9022),
4801 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(9088),
4802 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(9154),
4803 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(9191),
4804 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(9217),
4805 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(9243), GIMT_Encode4(0), GIMT_Encode4(0),
4806 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(9269),
4807 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(9292),
4808 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(9315),
4809 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(9343),
4810 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(9371),
4811 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(9399), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4812 /* 702 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(9427),
4813 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(9645),
4814 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(9790),
4815 /* 714 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(9924),
4816 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(9981),
4817 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(10038),
4818 /* 726 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(10115), GIMT_Encode4(0), GIMT_Encode4(0),
4819 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(10138), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4820 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(10160), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4821 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(10182),
4822 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(10233),
4823 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(10255),
4824 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(10310),
4825 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(10335),
4826 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(10360),
4827 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(10397), GIMT_Encode4(0), GIMT_Encode4(0),
4828 /* 810 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(10434),
4829 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 81*/ GIMT_Encode4(10513), GIMT_Encode4(0),
4830 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(10525),
4831 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(10555),
4832 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(10649),
4833 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(10743),
4834 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(10769),
4835 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(10795),
4836 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(10889),
4837 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 89*/ GIMT_Encode4(10983),
4838 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 90*/ GIMT_Encode4(10995), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4839 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 91*/ GIMT_Encode4(11007), GIMT_Encode4(0),
4840 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 92*/ GIMT_Encode4(11173),
4841 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 93*/ GIMT_Encode4(11221),
4842 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 94*/ GIMT_Encode4(11269),
4843 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 95*/ GIMT_Encode4(11317),
4844 /* 914 */ /*TargetOpcode::G_ABS*//*Label 96*/ GIMT_Encode4(11365), GIMT_Encode4(0), GIMT_Encode4(0),
4845 /* 926 */ /*TargetOpcode::G_BR*//*Label 97*/ GIMT_Encode4(11398), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4846 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 98*/ GIMT_Encode4(11410),
4847 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(11554),
4848 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 100*/ GIMT_Encode4(11945), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4849 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 101*/ GIMT_Encode4(12025),
4850 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 102*/ GIMT_Encode4(12060),
4851 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 103*/ GIMT_Encode4(12072),
4852 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 104*/ GIMT_Encode4(12118), GIMT_Encode4(0),
4853 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 105*/ GIMT_Encode4(12141),
4854 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 106*/ GIMT_Encode4(12153),
4855 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 107*/ GIMT_Encode4(12165), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4856 /* 1014 */ /*TargetOpcode::G_FCEIL*//*Label 108*/ GIMT_Encode4(12265), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4857 /* 1062 */ /*TargetOpcode::G_FSQRT*//*Label 109*/ GIMT_Encode4(12287),
4858 /* 1066 */ /*TargetOpcode::G_FFLOOR*//*Label 110*/ GIMT_Encode4(12309),
4859 /* 1070 */ /*TargetOpcode::G_FRINT*//*Label 111*/ GIMT_Encode4(12331),
4860 /* 1074 */ /*TargetOpcode::G_FNEARBYINT*//*Label 112*/ GIMT_Encode4(12353),
4861 /* 1078 */ // Label 0: @1078
4862 /* 1078 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1089), // Rule ID 19 //
4863 /* 1083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4864 /* 1086 */ // MIs[0] d
4865 /* 1086 */ // No operand predicates
4866 /* 1086 */ // MIs[0] s
4867 /* 1086 */ // No operand predicates
4868 /* 1086 */ // Combiner Rule #19: copy_prop
4869 /* 1086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4870 /* 1089 */ // Label 114: @1089
4871 /* 1089 */ GIM_Reject,
4872 /* 1090 */ // Label 1: @1090
4873 /* 1090 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1178), // Rule ID 453 //
4874 /* 1095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule320Enabled),
4875 /* 1098 */ // MIs[0] dst
4876 /* 1098 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4877 /* 1102 */ // MIs[0] __add_shift_match_0.shl_neg
4878 /* 1102 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4879 /* 1106 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4880 /* 1110 */ // MIs[1] __add_shift_match_0.neg_y
4881 /* 1110 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4882 /* 1114 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4883 /* 1118 */ // MIs[2] __add_shift_match_0.zero
4884 /* 1118 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4885 /* 1122 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4886 /* 1126 */ // MIs[3] Operand 1
4887 /* 1126 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4888 /* 1137 */ // MIs[2] y
4889 /* 1137 */ // No operand predicates
4890 /* 1137 */ // MIs[1] n
4891 /* 1137 */ // No operand predicates
4892 /* 1137 */ // MIs[0] x
4893 /* 1137 */ // No operand predicates
4894 /* 1137 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner58),
4895 /* 1141 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4896 /* 1143 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4897 /* 1146 */ // Combiner Rule #320: add_shift @ [__add_shift_match_0[1]]
4898 /* 1146 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4899 /* 1149 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4900 /* 1154 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4901 /* 1158 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4902 /* 1162 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4903 /* 1166 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4904 /* 1170 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4905 /* 1174 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4906 /* 1177 */ GIR_EraseRootFromParent_Done,
4907 /* 1178 */ // Label 115: @1178
4908 /* 1178 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1266), // Rule ID 452 //
4909 /* 1183 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule320Enabled),
4910 /* 1186 */ // MIs[0] dst
4911 /* 1186 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4912 /* 1190 */ // MIs[0] x
4913 /* 1190 */ // No operand predicates
4914 /* 1190 */ // MIs[0] __add_shift_match_0.shl_neg
4915 /* 1190 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4916 /* 1194 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4917 /* 1198 */ // MIs[1] __add_shift_match_0.neg_y
4918 /* 1198 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4919 /* 1202 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4920 /* 1206 */ // MIs[2] __add_shift_match_0.zero
4921 /* 1206 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4922 /* 1210 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4923 /* 1214 */ // MIs[3] Operand 1
4924 /* 1214 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4925 /* 1225 */ // MIs[2] y
4926 /* 1225 */ // No operand predicates
4927 /* 1225 */ // MIs[1] n
4928 /* 1225 */ // No operand predicates
4929 /* 1225 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner57),
4930 /* 1229 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4931 /* 1231 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4932 /* 1234 */ // Combiner Rule #320: add_shift @ [__add_shift_match_0[0]]
4933 /* 1234 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4934 /* 1237 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4935 /* 1242 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4936 /* 1246 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4937 /* 1250 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4938 /* 1254 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4939 /* 1258 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4940 /* 1262 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4941 /* 1265 */ GIR_EraseRootFromParent_Done,
4942 /* 1266 */ // Label 116: @1266
4943 /* 1266 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1300), // Rule ID 2 //
4944 /* 1271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4945 /* 1274 */ // MIs[0] root
4946 /* 1274 */ // No operand predicates
4947 /* 1274 */ // MIs[0] sub
4948 /* 1274 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4949 /* 1278 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4950 /* 1282 */ // MIs[1] Operand 1
4951 /* 1282 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4952 /* 1286 */ // MIs[1] A
4953 /* 1286 */ // No operand predicates
4954 /* 1286 */ // MIs[0] B
4955 /* 1286 */ // No operand predicates
4956 /* 1286 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4957 /* 1288 */ // Combiner Rule #2: ZeroMinusAPlusB
4958 /* 1288 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4959 /* 1291 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4960 /* 1293 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4961 /* 1295 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4962 /* 1299 */ GIR_EraseRootFromParent_Done,
4963 /* 1300 */ // Label 117: @1300
4964 /* 1300 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1349), // Rule ID 162 //
4965 /* 1305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
4966 /* 1308 */ // MIs[0] dst
4967 /* 1308 */ // No operand predicates
4968 /* 1308 */ // MIs[0] __simplify_add_to_sub_match_0.neg
4969 /* 1308 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4970 /* 1312 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4971 /* 1316 */ // MIs[1] __simplify_add_to_sub_match_0.zero
4972 /* 1316 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4973 /* 1320 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4974 /* 1324 */ // MIs[2] Operand 1
4975 /* 1324 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(0),
4976 /* 1335 */ // MIs[1] newrhs
4977 /* 1335 */ // No operand predicates
4978 /* 1335 */ // MIs[0] newlhs
4979 /* 1335 */ // No operand predicates
4980 /* 1335 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4981 /* 1337 */ // Combiner Rule #117: simplify_add_to_sub @ [__simplify_add_to_sub_match_0[0]]
4982 /* 1337 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4983 /* 1340 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4984 /* 1342 */ GIR_RootToRootCopy, /*OpIdx*/2, // newlhs
4985 /* 1344 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // newrhs
4986 /* 1348 */ GIR_EraseRootFromParent_Done,
4987 /* 1349 */ // Label 118: @1349
4988 /* 1349 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1386), // Rule ID 18 //
4989 /* 1354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4990 /* 1357 */ // MIs[0] root
4991 /* 1357 */ // No operand predicates
4992 /* 1357 */ // MIs[0] sub
4993 /* 1357 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4994 /* 1361 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4995 /* 1365 */ // MIs[1] A
4996 /* 1365 */ // No operand predicates
4997 /* 1365 */ // MIs[1] c1
4998 /* 1365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4999 /* 1369 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5000 /* 1373 */ // MIs[2] imm1
5001 /* 1373 */ // No operand predicates
5002 /* 1373 */ // MIs[0] c2
5003 /* 1373 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5004 /* 1377 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5005 /* 1381 */ // MIs[3] imm2
5006 /* 1381 */ // No operand predicates
5007 /* 1381 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5008 /* 1383 */ // Combiner Rule #18: AMinusC1PlusC2
5009 /* 1383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5010 /* 1386 */ // Label 119: @1386
5011 /* 1386 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1420), // Rule ID 5 //
5012 /* 1391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
5013 /* 1394 */ // MIs[0] root
5014 /* 1394 */ // No operand predicates
5015 /* 1394 */ // MIs[0] sub
5016 /* 1394 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5017 /* 1398 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5018 /* 1402 */ // MIs[1] B
5019 /* 1402 */ // No operand predicates
5020 /* 1402 */ // MIs[1] A
5021 /* 1402 */ // No operand predicates
5022 /* 1402 */ // MIs[0] A
5023 /* 1402 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
5024 /* 1407 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5025 /* 1412 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5026 /* 1414 */ // Combiner Rule #5: BMinusAPlusA
5027 /* 1414 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5028 /* 1419 */ GIR_EraseRootFromParent_Done,
5029 /* 1420 */ // Label 120: @1420
5030 /* 1420 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1454), // Rule ID 150 //
5031 /* 1425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5032 /* 1428 */ // MIs[0] dst
5033 /* 1428 */ // No operand predicates
5034 /* 1428 */ // MIs[0] __add_sub_reg_match_0.tmp
5035 /* 1428 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5036 /* 1432 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5037 /* 1436 */ // MIs[1] src
5038 /* 1436 */ // No operand predicates
5039 /* 1436 */ // MIs[1] __add_sub_reg_match_0.x
5040 /* 1436 */ // No operand predicates
5041 /* 1436 */ // MIs[0] __add_sub_reg_match_0.x
5042 /* 1436 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
5043 /* 1441 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5044 /* 1446 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5045 /* 1448 */ // Combiner Rule #105: add_sub_reg @ [__add_sub_reg_match_0[1]]
5046 /* 1448 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5047 /* 1453 */ GIR_EraseRootFromParent_Done,
5048 /* 1454 */ // Label 121: @1454
5049 /* 1454 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1499), // Rule ID 7 //
5050 /* 1459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
5051 /* 1462 */ // MIs[0] root
5052 /* 1462 */ // No operand predicates
5053 /* 1462 */ // MIs[0] sub1
5054 /* 1462 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5055 /* 1466 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5056 /* 1470 */ // MIs[1] A
5057 /* 1470 */ // No operand predicates
5058 /* 1470 */ // MIs[1] B
5059 /* 1470 */ // No operand predicates
5060 /* 1470 */ // MIs[0] sub2
5061 /* 1470 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5062 /* 1474 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5063 /* 1478 */ // MIs[2] B
5064 /* 1478 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5065 /* 1483 */ // MIs[2] C
5066 /* 1483 */ // No operand predicates
5067 /* 1483 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5068 /* 1485 */ // Combiner Rule #7: AMinusBPlusBMinusC
5069 /* 1485 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5070 /* 1488 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5071 /* 1490 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5072 /* 1494 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5073 /* 1498 */ GIR_EraseRootFromParent_Done,
5074 /* 1499 */ // Label 122: @1499
5075 /* 1499 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1544), // Rule ID 6 //
5076 /* 1504 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
5077 /* 1507 */ // MIs[0] root
5078 /* 1507 */ // No operand predicates
5079 /* 1507 */ // MIs[0] sub1
5080 /* 1507 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5081 /* 1511 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5082 /* 1515 */ // MIs[1] A
5083 /* 1515 */ // No operand predicates
5084 /* 1515 */ // MIs[1] B
5085 /* 1515 */ // No operand predicates
5086 /* 1515 */ // MIs[0] sub2
5087 /* 1515 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5088 /* 1519 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5089 /* 1523 */ // MIs[2] C
5090 /* 1523 */ // No operand predicates
5091 /* 1523 */ // MIs[2] A
5092 /* 1523 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5093 /* 1528 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5094 /* 1530 */ // Combiner Rule #6: AMinusBPlusCMinusA
5095 /* 1530 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5096 /* 1533 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5097 /* 1535 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
5098 /* 1539 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5099 /* 1543 */ GIR_EraseRootFromParent_Done,
5100 /* 1544 */ // Label 123: @1544
5101 /* 1544 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1599), // Rule ID 22 //
5102 /* 1549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
5103 /* 1552 */ // MIs[0] dst
5104 /* 1552 */ // No operand predicates
5105 /* 1552 */ // MIs[0] __add_p2i_to_ptradd_match_0.x
5106 /* 1552 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5107 /* 1556 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5108 /* 1560 */ // MIs[1] ptr
5109 /* 1560 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5110 /* 1564 */ // MIs[0] other
5111 /* 1564 */ // No operand predicates
5112 /* 1564 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5113 /* 1568 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5114 /* 1570 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5115 /* 1573 */ // Combiner Rule #22: add_p2i_to_ptradd @ [__add_p2i_to_ptradd_match_0[0]]
5116 /* 1573 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTR_ADD),
5117 /* 1576 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5118 /* 1581 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
5119 /* 1585 */ GIR_RootToRootCopy, /*OpIdx*/2, // other
5120 /* 1587 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5121 /* 1591 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5122 /* 1595 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5123 /* 1598 */ GIR_EraseRootFromParent_Done,
5124 /* 1599 */ // Label 124: @1599
5125 /* 1599 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1624), // Rule ID 381 //
5126 /* 1604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
5127 /* 1607 */ // MIs[0] dst
5128 /* 1607 */ // No operand predicates
5129 /* 1607 */ // MIs[0] lhs
5130 /* 1607 */ // No operand predicates
5131 /* 1607 */ // MIs[0] rhs
5132 /* 1607 */ // No operand predicates
5133 /* 1607 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
5134 /* 1611 */ // Combiner Rule #249: G_ADD_commute_constant_to_rhs
5135 /* 1611 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5136 /* 1614 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5137 /* 1616 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
5138 /* 1618 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
5139 /* 1620 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
5140 /* 1623 */ GIR_EraseRootFromParent_Done,
5141 /* 1624 */ // Label 125: @1624
5142 /* 1624 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1659), // Rule ID 46 //
5143 /* 1629 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
5144 /* 1632 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5145 /* 1638 */ // MIs[0] root
5146 /* 1638 */ // No operand predicates
5147 /* 1638 */ // MIs[0] left
5148 /* 1638 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5149 /* 1642 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5150 /* 1646 */ // MIs[1] imm1
5151 /* 1646 */ // No operand predicates
5152 /* 1646 */ // MIs[0] right
5153 /* 1646 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5154 /* 1650 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
5155 /* 1654 */ // MIs[2] imm2
5156 /* 1654 */ // No operand predicates
5157 /* 1654 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5158 /* 1656 */ // Combiner Rule #42: add_of_vscale
5159 /* 1656 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
5160 /* 1659 */ // Label 126: @1659
5161 /* 1659 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1683), // Rule ID 104 //
5162 /* 1664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5163 /* 1667 */ // MIs[0] dst
5164 /* 1667 */ // No operand predicates
5165 /* 1667 */ // MIs[0] __propagate_undef_any_op_match_0.x
5166 /* 1667 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5167 /* 1671 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5168 /* 1675 */ // MIs[0] __propagate_undef_any_op_match_0.y
5169 /* 1675 */ // No operand predicates
5170 /* 1675 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5171 /* 1677 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[0]]
5172 /* 1677 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5173 /* 1680 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5174 /* 1682 */ GIR_EraseRootFromParent_Done,
5175 /* 1683 */ // Label 127: @1683
5176 /* 1683 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1717), // Rule ID 3 //
5177 /* 1688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
5178 /* 1691 */ // MIs[0] root
5179 /* 1691 */ // No operand predicates
5180 /* 1691 */ // MIs[0] A
5181 /* 1691 */ // No operand predicates
5182 /* 1691 */ // MIs[0] sub
5183 /* 1691 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5184 /* 1695 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5185 /* 1699 */ // MIs[1] Operand 1
5186 /* 1699 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5187 /* 1703 */ // MIs[1] B
5188 /* 1703 */ // No operand predicates
5189 /* 1703 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5190 /* 1705 */ // Combiner Rule #3: APlusZeroMinusB
5191 /* 1705 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5192 /* 1708 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5193 /* 1710 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5194 /* 1712 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5195 /* 1716 */ GIR_EraseRootFromParent_Done,
5196 /* 1717 */ // Label 128: @1717
5197 /* 1717 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1766), // Rule ID 163 //
5198 /* 1722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
5199 /* 1725 */ // MIs[0] dst
5200 /* 1725 */ // No operand predicates
5201 /* 1725 */ // MIs[0] newlhs
5202 /* 1725 */ // No operand predicates
5203 /* 1725 */ // MIs[0] __simplify_add_to_sub_match_0.neg
5204 /* 1725 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5205 /* 1729 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5206 /* 1733 */ // MIs[1] __simplify_add_to_sub_match_0.zero
5207 /* 1733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5208 /* 1737 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5209 /* 1741 */ // MIs[2] Operand 1
5210 /* 1741 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(0),
5211 /* 1752 */ // MIs[1] newrhs
5212 /* 1752 */ // No operand predicates
5213 /* 1752 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5214 /* 1754 */ // Combiner Rule #117: simplify_add_to_sub @ [__simplify_add_to_sub_match_0[1]]
5215 /* 1754 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5216 /* 1757 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5217 /* 1759 */ GIR_RootToRootCopy, /*OpIdx*/1, // newlhs
5218 /* 1761 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // newrhs
5219 /* 1765 */ GIR_EraseRootFromParent_Done,
5220 /* 1766 */ // Label 129: @1766
5221 /* 1766 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1800), // Rule ID 4 //
5222 /* 1771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
5223 /* 1774 */ // MIs[0] root
5224 /* 1774 */ // No operand predicates
5225 /* 1774 */ // MIs[0] A
5226 /* 1774 */ // No operand predicates
5227 /* 1774 */ // MIs[0] sub
5228 /* 1774 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5229 /* 1778 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5230 /* 1782 */ // MIs[1] B
5231 /* 1782 */ // No operand predicates
5232 /* 1782 */ // MIs[1] A
5233 /* 1782 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5234 /* 1787 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5235 /* 1792 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5236 /* 1794 */ // Combiner Rule #4: APlusBMinusB
5237 /* 1794 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5238 /* 1799 */ GIR_EraseRootFromParent_Done,
5239 /* 1800 */ // Label 130: @1800
5240 /* 1800 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1834), // Rule ID 149 //
5241 /* 1805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5242 /* 1808 */ // MIs[0] dst
5243 /* 1808 */ // No operand predicates
5244 /* 1808 */ // MIs[0] __add_sub_reg_match_0.x
5245 /* 1808 */ // No operand predicates
5246 /* 1808 */ // MIs[0] __add_sub_reg_match_0.tmp
5247 /* 1808 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5248 /* 1812 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5249 /* 1816 */ // MIs[1] src
5250 /* 1816 */ // No operand predicates
5251 /* 1816 */ // MIs[1] __add_sub_reg_match_0.x
5252 /* 1816 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5253 /* 1821 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5254 /* 1826 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5255 /* 1828 */ // Combiner Rule #105: add_sub_reg @ [__add_sub_reg_match_0[0]]
5256 /* 1828 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5257 /* 1833 */ GIR_EraseRootFromParent_Done,
5258 /* 1834 */ // Label 131: @1834
5259 /* 1834 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1879), // Rule ID 8 //
5260 /* 1839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
5261 /* 1842 */ // MIs[0] root
5262 /* 1842 */ // No operand predicates
5263 /* 1842 */ // MIs[0] A
5264 /* 1842 */ // No operand predicates
5265 /* 1842 */ // MIs[0] sub1
5266 /* 1842 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5267 /* 1846 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5268 /* 1850 */ // MIs[1] B
5269 /* 1850 */ // No operand predicates
5270 /* 1850 */ // MIs[1] add1
5271 /* 1850 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5272 /* 1854 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5273 /* 1858 */ // MIs[2] A
5274 /* 1858 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5275 /* 1863 */ // MIs[2] C
5276 /* 1863 */ // No operand predicates
5277 /* 1863 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5278 /* 1865 */ // Combiner Rule #8: APlusBMinusAplusC
5279 /* 1865 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5280 /* 1868 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5281 /* 1870 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5282 /* 1874 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5283 /* 1878 */ GIR_EraseRootFromParent_Done,
5284 /* 1879 */ // Label 132: @1879
5285 /* 1879 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1924), // Rule ID 10 //
5286 /* 1884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5287 /* 1887 */ // MIs[0] root
5288 /* 1887 */ // No operand predicates
5289 /* 1887 */ // MIs[0] A
5290 /* 1887 */ // No operand predicates
5291 /* 1887 */ // MIs[0] sub1
5292 /* 1887 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5293 /* 1891 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5294 /* 1895 */ // MIs[1] B
5295 /* 1895 */ // No operand predicates
5296 /* 1895 */ // MIs[1] add1
5297 /* 1895 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5298 /* 1899 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5299 /* 1903 */ // MIs[2] C
5300 /* 1903 */ // No operand predicates
5301 /* 1903 */ // MIs[2] A
5302 /* 1903 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5303 /* 1908 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5304 /* 1910 */ // Combiner Rule #10: APlusBMinusCPlusA
5305 /* 1910 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5306 /* 1913 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5307 /* 1915 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5308 /* 1919 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
5309 /* 1923 */ GIR_EraseRootFromParent_Done,
5310 /* 1924 */ // Label 133: @1924
5311 /* 1924 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1979), // Rule ID 23 //
5312 /* 1929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
5313 /* 1932 */ // MIs[0] dst
5314 /* 1932 */ // No operand predicates
5315 /* 1932 */ // MIs[0] other
5316 /* 1932 */ // No operand predicates
5317 /* 1932 */ // MIs[0] __add_p2i_to_ptradd_match_0.x
5318 /* 1932 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5319 /* 1936 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5320 /* 1940 */ // MIs[1] ptr
5321 /* 1940 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5322 /* 1944 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5323 /* 1948 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5324 /* 1950 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5325 /* 1953 */ // Combiner Rule #22: add_p2i_to_ptradd @ [__add_p2i_to_ptradd_match_0[1]]
5326 /* 1953 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTR_ADD),
5327 /* 1956 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5328 /* 1961 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
5329 /* 1965 */ GIR_RootToRootCopy, /*OpIdx*/1, // other
5330 /* 1967 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5331 /* 1971 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5332 /* 1975 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5333 /* 1978 */ GIR_EraseRootFromParent_Done,
5334 /* 1979 */ // Label 134: @1979
5335 /* 1979 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2003), // Rule ID 107 //
5336 /* 1984 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5337 /* 1987 */ // MIs[0] dst
5338 /* 1987 */ // No operand predicates
5339 /* 1987 */ // MIs[0] __propagate_undef_any_op_match_0.x
5340 /* 1987 */ // No operand predicates
5341 /* 1987 */ // MIs[0] __propagate_undef_any_op_match_0.y
5342 /* 1987 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5343 /* 1991 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5344 /* 1995 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5345 /* 1997 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[3]]
5346 /* 1997 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5347 /* 2000 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5348 /* 2002 */ GIR_EraseRootFromParent_Done,
5349 /* 2003 */ // Label 135: @2003
5350 /* 2003 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2026), // Rule ID 119 //
5351 /* 2008 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5352 /* 2011 */ // MIs[0] dst
5353 /* 2011 */ // No operand predicates
5354 /* 2011 */ // MIs[0] lhs
5355 /* 2011 */ // No operand predicates
5356 /* 2011 */ // MIs[0] Operand 2
5357 /* 2011 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5358 /* 2015 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5359 /* 2020 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[1]]
5360 /* 2020 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5361 /* 2025 */ GIR_EraseRootFromParent_Done,
5362 /* 2026 */ // Label 136: @2026
5363 /* 2026 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2037), // Rule ID 171 //
5364 /* 2031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
5365 /* 2034 */ // MIs[0] root
5366 /* 2034 */ // No operand predicates
5367 /* 2034 */ // MIs[0] src1
5368 /* 2034 */ // No operand predicates
5369 /* 2034 */ // MIs[0] src2
5370 /* 2034 */ // No operand predicates
5371 /* 2034 */ // Combiner Rule #121: reassoc_comm_binops
5372 /* 2034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
5373 /* 2037 */ // Label 137: @2037
5374 /* 2037 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2048), // Rule ID 280 //
5375 /* 2042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5376 /* 2045 */ // MIs[0] d
5377 /* 2045 */ // No operand predicates
5378 /* 2045 */ // MIs[0] mi.src0
5379 /* 2045 */ // No operand predicates
5380 /* 2045 */ // MIs[0] mi.src1
5381 /* 2045 */ // No operand predicates
5382 /* 2045 */ // Combiner Rule #210: constant_fold_binop @ [mi[0]]
5383 /* 2045 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
5384 /* 2048 */ // Label 138: @2048
5385 /* 2048 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2059), // Rule ID 341 //
5386 /* 2053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
5387 /* 2056 */ // MIs[0] root
5388 /* 2056 */ // No operand predicates
5389 /* 2056 */ // MIs[0] mi.x
5390 /* 2056 */ // No operand predicates
5391 /* 2056 */ // MIs[0] mi.y
5392 /* 2056 */ // No operand predicates
5393 /* 2056 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[0]]
5394 /* 2056 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5395 /* 2059 */ // Label 139: @2059
5396 /* 2059 */ GIM_Reject,
5397 /* 2060 */ // Label 2: @2060
5398 /* 2060 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2137), // Rule ID 454 //
5399 /* 2065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule321Enabled),
5400 /* 2068 */ // MIs[0] dst
5401 /* 2068 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5402 /* 2072 */ // MIs[0] sub1
5403 /* 2072 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5404 /* 2076 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5405 /* 2080 */ // MIs[1] a
5406 /* 2080 */ // No operand predicates
5407 /* 2080 */ // MIs[1] b
5408 /* 2080 */ // No operand predicates
5409 /* 2080 */ // MIs[0] Operand 2
5410 /* 2080 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5411 /* 2084 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5412 /* 2088 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5413 /* 2090 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5414 /* 2093 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5415 /* 2103 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5416 /* 2106 */ // Combiner Rule #321: sub_one_from_sub
5417 /* 2106 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5418 /* 2109 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5419 /* 2114 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
5420 /* 2118 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5421 /* 2121 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5422 /* 2125 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5423 /* 2129 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5424 /* 2132 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
5425 /* 2136 */ GIR_EraseRootFromParent_Done,
5426 /* 2137 */ // Label 140: @2137
5427 /* 2137 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2231), // Rule ID 460 //
5428 /* 2142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule325Enabled),
5429 /* 2145 */ // MIs[0] root
5430 /* 2145 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5431 /* 2149 */ // MIs[0] Operand 1
5432 /* 2149 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5433 /* 2153 */ // MIs[0] max
5434 /* 2153 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5435 /* 2157 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
5436 /* 2161 */ // MIs[1] A
5437 /* 2161 */ // No operand predicates
5438 /* 2161 */ // MIs[1] sub
5439 /* 2161 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5440 /* 2165 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5441 /* 2169 */ // MIs[2] Operand 1
5442 /* 2169 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5443 /* 2173 */ // MIs[2] A
5444 /* 2173 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5445 /* 2178 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner59),
5446 /* 2182 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5447 /* 2184 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5448 /* 2187 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5449 /* 2197 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5450 /* 2200 */ // Combiner Rule #325: SubSmaxSub
5451 /* 2200 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5452 /* 2203 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5453 /* 2208 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5454 /* 2211 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5455 /* 2215 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
5456 /* 2219 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5457 /* 2223 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5458 /* 2227 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5459 /* 2230 */ GIR_EraseRootFromParent_Done,
5460 /* 2231 */ // Label 141: @2231
5461 /* 2231 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2325), // Rule ID 461 //
5462 /* 2236 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule326Enabled),
5463 /* 2239 */ // MIs[0] root
5464 /* 2239 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5465 /* 2243 */ // MIs[0] Operand 1
5466 /* 2243 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5467 /* 2247 */ // MIs[0] max
5468 /* 2247 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5469 /* 2251 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
5470 /* 2255 */ // MIs[1] A
5471 /* 2255 */ // No operand predicates
5472 /* 2255 */ // MIs[1] sub
5473 /* 2255 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5474 /* 2259 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5475 /* 2263 */ // MIs[2] Operand 1
5476 /* 2263 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5477 /* 2267 */ // MIs[2] A
5478 /* 2267 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5479 /* 2272 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner59),
5480 /* 2276 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5481 /* 2278 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5482 /* 2281 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5483 /* 2291 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5484 /* 2294 */ // Combiner Rule #326: SubUmaxSub
5485 /* 2294 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5486 /* 2297 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5487 /* 2302 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5488 /* 2305 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5489 /* 2309 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
5490 /* 2313 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5491 /* 2317 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5492 /* 2321 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5493 /* 2324 */ GIR_EraseRootFromParent_Done,
5494 /* 2325 */ // Label 142: @2325
5495 /* 2325 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2365), // Rule ID 458 //
5496 /* 2330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule323Enabled),
5497 /* 2333 */ // MIs[0] root
5498 /* 2333 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5499 /* 2337 */ // MIs[0] Operand 1
5500 /* 2337 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
5501 /* 2341 */ // MIs[0] op1
5502 /* 2341 */ // No operand predicates
5503 /* 2341 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5504 /* 2344 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
5505 /* 2354 */ // Combiner Rule #323: sub_minus_one
5506 /* 2354 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5507 /* 2357 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5508 /* 2359 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
5509 /* 2361 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5510 /* 2364 */ GIR_EraseRootFromParent_Done,
5511 /* 2365 */ // Label 143: @2365
5512 /* 2365 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2417), // Rule ID 377 //
5513 /* 2370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5514 /* 2373 */ // MIs[0] dst
5515 /* 2373 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5516 /* 2377 */ // MIs[0] x
5517 /* 2377 */ // No operand predicates
5518 /* 2377 */ // MIs[0] sum
5519 /* 2377 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5520 /* 2381 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5521 /* 2385 */ // MIs[1] y
5522 /* 2385 */ // No operand predicates
5523 /* 2385 */ // MIs[1] z
5524 /* 2385 */ // No operand predicates
5525 /* 2385 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner45),
5526 /* 2389 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5527 /* 2391 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5528 /* 2394 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5529 /* 2404 */ // Combiner Rule #245: sub_add_neg_rhs
5530 /* 2404 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5531 /* 2407 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5532 /* 2409 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5533 /* 2412 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // y
5534 /* 2416 */ GIR_EraseRootFromParent_Done,
5535 /* 2417 */ // Label 144: @2417
5536 /* 2417 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2469), // Rule ID 378 //
5537 /* 2422 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
5538 /* 2425 */ // MIs[0] dst
5539 /* 2425 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5540 /* 2429 */ // MIs[0] x
5541 /* 2429 */ // No operand predicates
5542 /* 2429 */ // MIs[0] sum
5543 /* 2429 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5544 /* 2433 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5545 /* 2437 */ // MIs[1] y
5546 /* 2437 */ // No operand predicates
5547 /* 2437 */ // MIs[1] z
5548 /* 2437 */ // No operand predicates
5549 /* 2437 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner46),
5550 /* 2441 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5551 /* 2443 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5552 /* 2446 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5553 /* 2456 */ // Combiner Rule #246: sub_add_neg_lhs
5554 /* 2456 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5555 /* 2459 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5556 /* 2461 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5557 /* 2464 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // z
5558 /* 2468 */ GIR_EraseRootFromParent_Done,
5559 /* 2469 */ // Label 145: @2469
5560 /* 2469 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2567), // Rule ID 459 //
5561 /* 2474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule324Enabled),
5562 /* 2477 */ // MIs[0] d
5563 /* 2477 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5564 /* 2481 */ // MIs[0] a
5565 /* 2481 */ // No operand predicates
5566 /* 2481 */ // MIs[0] mul
5567 /* 2481 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5568 /* 2485 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5569 /* 2489 */ GIM_CheckHasOneUse, /*MI*/1,
5570 /* 2491 */ // MIs[1] x
5571 /* 2491 */ // No operand predicates
5572 /* 2491 */ // MIs[1] c
5573 /* 2491 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5574 /* 2495 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5575 /* 2499 */ // MIs[2] imm
5576 /* 2499 */ // No operand predicates
5577 /* 2499 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5578 /* 2501 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5579 /* 2504 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5580 /* 2507 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5581 /* 2517 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5582 /* 2520 */ // Combiner Rule #324: sub_of_mul_const
5583 /* 2520 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5584 /* 2523 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5585 /* 2528 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5586 /* 2531 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
5587 /* 2535 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
5588 /* 2539 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5589 /* 2544 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5590 /* 2548 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5591 /* 2551 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5592 /* 2555 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
5593 /* 2559 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
5594 /* 2563 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5595 /* 2566 */ GIR_EraseRootFromParent_Done,
5596 /* 2567 */ // Label 146: @2567
5597 /* 2567 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2628), // Rule ID 9 //
5598 /* 2572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
5599 /* 2575 */ // MIs[0] root
5600 /* 2575 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5601 /* 2579 */ // MIs[0] A
5602 /* 2579 */ // No operand predicates
5603 /* 2579 */ // MIs[0] sub1
5604 /* 2579 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5605 /* 2583 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5606 /* 2587 */ // MIs[1] B
5607 /* 2587 */ // No operand predicates
5608 /* 2587 */ // MIs[1] C
5609 /* 2587 */ // No operand predicates
5610 /* 2587 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5611 /* 2591 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5612 /* 2593 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5613 /* 2596 */ // Combiner Rule #9: AMinusBMinusC
5614 /* 2596 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5615 /* 2599 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5616 /* 2604 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
5617 /* 2608 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5618 /* 2612 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5619 /* 2616 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5620 /* 2620 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
5621 /* 2624 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5622 /* 2627 */ GIR_EraseRootFromParent_Done,
5623 /* 2628 */ // Label 147: @2628
5624 /* 2628 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2673), // Rule ID 0 //
5625 /* 2633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
5626 /* 2636 */ // MIs[0] root
5627 /* 2636 */ // No operand predicates
5628 /* 2636 */ // MIs[0] add1
5629 /* 2636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5630 /* 2640 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5631 /* 2644 */ // MIs[1] A
5632 /* 2644 */ // No operand predicates
5633 /* 2644 */ // MIs[1] sub1
5634 /* 2644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5635 /* 2648 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5636 /* 2652 */ // MIs[2] B
5637 /* 2652 */ // No operand predicates
5638 /* 2652 */ // MIs[2] C
5639 /* 2652 */ // No operand predicates
5640 /* 2652 */ // MIs[0] B
5641 /* 2652 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5642 /* 2657 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5643 /* 2659 */ // Combiner Rule #0: APlusBMinusCMinusB
5644 /* 2659 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5645 /* 2662 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5646 /* 2664 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5647 /* 2668 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5648 /* 2672 */ GIR_EraseRootFromParent_Done,
5649 /* 2673 */ // Label 148: @2673
5650 /* 2673 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2710), // Rule ID 14 //
5651 /* 2678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5652 /* 2681 */ // MIs[0] root
5653 /* 2681 */ // No operand predicates
5654 /* 2681 */ // MIs[0] add
5655 /* 2681 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5656 /* 2685 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5657 /* 2689 */ // MIs[1] A
5658 /* 2689 */ // No operand predicates
5659 /* 2689 */ // MIs[1] c1
5660 /* 2689 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5661 /* 2693 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5662 /* 2697 */ // MIs[2] imm1
5663 /* 2697 */ // No operand predicates
5664 /* 2697 */ // MIs[0] c2
5665 /* 2697 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5666 /* 2701 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5667 /* 2705 */ // MIs[3] imm2
5668 /* 2705 */ // No operand predicates
5669 /* 2705 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5670 /* 2707 */ // Combiner Rule #14: APlusC1MinusC2
5671 /* 2707 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
5672 /* 2710 */ // Label 149: @2710
5673 /* 2710 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2743), // Rule ID 375 //
5674 /* 2715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
5675 /* 2718 */ // MIs[0] dst
5676 /* 2718 */ // No operand predicates
5677 /* 2718 */ // MIs[0] sum
5678 /* 2718 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5679 /* 2722 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5680 /* 2726 */ // MIs[1] x
5681 /* 2726 */ // No operand predicates
5682 /* 2726 */ // MIs[1] y
5683 /* 2726 */ // No operand predicates
5684 /* 2726 */ // MIs[0] z
5685 /* 2726 */ // No operand predicates
5686 /* 2726 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner43),
5687 /* 2730 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5688 /* 2735 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5689 /* 2737 */ // Combiner Rule #243: sub_add_reg_rhs
5690 /* 2737 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5691 /* 2742 */ GIR_EraseRootFromParent_Done,
5692 /* 2743 */ // Label 150: @2743
5693 /* 2743 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2776), // Rule ID 376 //
5694 /* 2748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
5695 /* 2751 */ // MIs[0] dst
5696 /* 2751 */ // No operand predicates
5697 /* 2751 */ // MIs[0] sum
5698 /* 2751 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5699 /* 2755 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5700 /* 2759 */ // MIs[1] x
5701 /* 2759 */ // No operand predicates
5702 /* 2759 */ // MIs[1] y
5703 /* 2759 */ // No operand predicates
5704 /* 2759 */ // MIs[0] z
5705 /* 2759 */ // No operand predicates
5706 /* 2759 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner44),
5707 /* 2763 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5708 /* 2768 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5709 /* 2770 */ // Combiner Rule #244: sub_add_reg_lhs
5710 /* 2770 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5711 /* 2775 */ GIR_EraseRootFromParent_Done,
5712 /* 2776 */ // Label 151: @2776
5713 /* 2776 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2813), // Rule ID 17 //
5714 /* 2781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5715 /* 2784 */ // MIs[0] root
5716 /* 2784 */ // No operand predicates
5717 /* 2784 */ // MIs[0] sub1
5718 /* 2784 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5719 /* 2788 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5720 /* 2792 */ // MIs[1] c1
5721 /* 2792 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5722 /* 2796 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5723 /* 2800 */ // MIs[2] imm1
5724 /* 2800 */ // No operand predicates
5725 /* 2800 */ // MIs[1] A
5726 /* 2800 */ // No operand predicates
5727 /* 2800 */ // MIs[0] c2
5728 /* 2800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5729 /* 2804 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5730 /* 2808 */ // MIs[3] imm2
5731 /* 2808 */ // No operand predicates
5732 /* 2808 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5733 /* 2810 */ // Combiner Rule #17: C1Minus2MinusC2
5734 /* 2810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5735 /* 2813 */ // Label 152: @2813
5736 /* 2813 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2858), // Rule ID 1 //
5737 /* 2818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5738 /* 2821 */ // MIs[0] root
5739 /* 2821 */ // No operand predicates
5740 /* 2821 */ // MIs[0] sub2
5741 /* 2821 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5742 /* 2825 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5743 /* 2829 */ // MIs[1] A
5744 /* 2829 */ // No operand predicates
5745 /* 2829 */ // MIs[1] sub1
5746 /* 2829 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5747 /* 2833 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5748 /* 2837 */ // MIs[2] B
5749 /* 2837 */ // No operand predicates
5750 /* 2837 */ // MIs[2] C
5751 /* 2837 */ // No operand predicates
5752 /* 2837 */ // MIs[0] C
5753 /* 2837 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5754 /* 2842 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5755 /* 2844 */ // Combiner Rule #1: AMinusBMinusCMinusC
5756 /* 2844 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5757 /* 2847 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5758 /* 2849 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5759 /* 2853 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5760 /* 2857 */ GIR_EraseRootFromParent_Done,
5761 /* 2858 */ // Label 153: @2858
5762 /* 2858 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2895), // Rule ID 16 //
5763 /* 2863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5764 /* 2866 */ // MIs[0] root
5765 /* 2866 */ // No operand predicates
5766 /* 2866 */ // MIs[0] sub1
5767 /* 2866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5768 /* 2870 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5769 /* 2874 */ // MIs[1] A
5770 /* 2874 */ // No operand predicates
5771 /* 2874 */ // MIs[1] c1
5772 /* 2874 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5773 /* 2878 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5774 /* 2882 */ // MIs[2] imm1
5775 /* 2882 */ // No operand predicates
5776 /* 2882 */ // MIs[0] c2
5777 /* 2882 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5778 /* 2886 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5779 /* 2890 */ // MIs[3] imm2
5780 /* 2890 */ // No operand predicates
5781 /* 2890 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5782 /* 2892 */ // Combiner Rule #16: AMinusC1MinusC2
5783 /* 2892 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5784 /* 2895 */ // Label 154: @2895
5785 /* 2895 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2919), // Rule ID 105 //
5786 /* 2900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5787 /* 2903 */ // MIs[0] dst
5788 /* 2903 */ // No operand predicates
5789 /* 2903 */ // MIs[0] __propagate_undef_any_op_match_0.x
5790 /* 2903 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5791 /* 2907 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5792 /* 2911 */ // MIs[0] __propagate_undef_any_op_match_0.y
5793 /* 2911 */ // No operand predicates
5794 /* 2911 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5795 /* 2913 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[1]]
5796 /* 2913 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5797 /* 2916 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5798 /* 2918 */ GIR_EraseRootFromParent_Done,
5799 /* 2919 */ // Label 155: @2919
5800 /* 2919 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2962), // Rule ID 181 //
5801 /* 2924 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
5802 /* 2927 */ // MIs[0] dst
5803 /* 2927 */ // No operand predicates
5804 /* 2927 */ // MIs[0] Operand 1
5805 /* 2927 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5806 /* 2931 */ // MIs[0] and
5807 /* 2931 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5808 /* 2935 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5809 /* 2939 */ // MIs[1] x
5810 /* 2939 */ // No operand predicates
5811 /* 2939 */ // MIs[1] Operand 2
5812 /* 2939 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5813 /* 2943 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
5814 /* 2947 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5815 /* 2949 */ // Combiner Rule #131: neg_and_one_to_sext_inreg
5816 /* 2949 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5817 /* 2952 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5818 /* 2954 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5819 /* 2958 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5820 /* 2961 */ GIR_EraseRootFromParent_Done,
5821 /* 2962 */ // Label 156: @2962
5822 /* 2962 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2999), // Rule ID 15 //
5823 /* 2967 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5824 /* 2970 */ // MIs[0] root
5825 /* 2970 */ // No operand predicates
5826 /* 2970 */ // MIs[0] c2
5827 /* 2970 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5828 /* 2974 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5829 /* 2978 */ // MIs[1] imm2
5830 /* 2978 */ // No operand predicates
5831 /* 2978 */ // MIs[0] add
5832 /* 2978 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5833 /* 2982 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5834 /* 2986 */ // MIs[2] A
5835 /* 2986 */ // No operand predicates
5836 /* 2986 */ // MIs[2] c1
5837 /* 2986 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5838 /* 2990 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5839 /* 2994 */ // MIs[3] imm1
5840 /* 2994 */ // No operand predicates
5841 /* 2994 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5842 /* 2996 */ // Combiner Rule #15: C2MinusAPlusC1
5843 /* 2996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5844 /* 2999 */ // Label 157: @2999
5845 /* 2999 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(3038), // Rule ID 130 //
5846 /* 3004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5847 /* 3007 */ // MIs[0] dst
5848 /* 3007 */ // No operand predicates
5849 /* 3007 */ // MIs[0] x
5850 /* 3007 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5851 /* 3011 */ // MIs[0] x
5852 /* 3011 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5853 /* 3016 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5854 /* 3019 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5855 /* 3029 */ // Combiner Rule #94: same_val_zero @ [__same_val_zero_match_0[0]]
5856 /* 3029 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5857 /* 3032 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5858 /* 3034 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5859 /* 3037 */ GIR_EraseRootFromParent_Done,
5860 /* 3038 */ // Label 158: @3038
5861 /* 3038 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(3072), // Rule ID 12 //
5862 /* 3043 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5863 /* 3046 */ // MIs[0] root
5864 /* 3046 */ // No operand predicates
5865 /* 3046 */ // MIs[0] A
5866 /* 3046 */ // No operand predicates
5867 /* 3046 */ // MIs[0] add
5868 /* 3046 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5869 /* 3050 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5870 /* 3054 */ // MIs[1] A
5871 /* 3054 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5872 /* 3059 */ // MIs[1] B
5873 /* 3059 */ // No operand predicates
5874 /* 3059 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5875 /* 3064 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5876 /* 3066 */ // Combiner Rule #12: AMinusBMinusA
5877 /* 3066 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5878 /* 3071 */ GIR_EraseRootFromParent_Done,
5879 /* 3072 */ // Label 159: @3072
5880 /* 3072 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(3106), // Rule ID 11 //
5881 /* 3077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5882 /* 3080 */ // MIs[0] root
5883 /* 3080 */ // No operand predicates
5884 /* 3080 */ // MIs[0] A
5885 /* 3080 */ // No operand predicates
5886 /* 3080 */ // MIs[0] sub1
5887 /* 3080 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5888 /* 3084 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5889 /* 3088 */ // MIs[1] Operand 1
5890 /* 3088 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5891 /* 3092 */ // MIs[1] B
5892 /* 3092 */ // No operand predicates
5893 /* 3092 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5894 /* 3094 */ // Combiner Rule #11: AMinusZeroMinusB
5895 /* 3094 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5896 /* 3097 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5897 /* 3099 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5898 /* 3101 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5899 /* 3105 */ GIR_EraseRootFromParent_Done,
5900 /* 3106 */ // Label 160: @3106
5901 /* 3106 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(3133), // Rule ID 49 //
5902 /* 3111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5903 /* 3114 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5904 /* 3120 */ // MIs[0] root
5905 /* 3120 */ // No operand predicates
5906 /* 3120 */ // MIs[0] x
5907 /* 3120 */ // No operand predicates
5908 /* 3120 */ // MIs[0] right
5909 /* 3120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5910 /* 3124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5911 /* 3128 */ // MIs[1] imm
5912 /* 3128 */ // No operand predicates
5913 /* 3128 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5914 /* 3130 */ // Combiner Rule #45: sub_of_vscale
5915 /* 3130 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
5916 /* 3133 */ // Label 161: @3133
5917 /* 3133 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(3157), // Rule ID 108 //
5918 /* 3138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5919 /* 3141 */ // MIs[0] dst
5920 /* 3141 */ // No operand predicates
5921 /* 3141 */ // MIs[0] __propagate_undef_any_op_match_0.x
5922 /* 3141 */ // No operand predicates
5923 /* 3141 */ // MIs[0] __propagate_undef_any_op_match_0.y
5924 /* 3141 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5925 /* 3145 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5926 /* 3149 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5927 /* 3151 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[4]]
5928 /* 3151 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5929 /* 3154 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5930 /* 3156 */ GIR_EraseRootFromParent_Done,
5931 /* 3157 */ // Label 162: @3157
5932 /* 3157 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(3180), // Rule ID 118 //
5933 /* 3162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5934 /* 3165 */ // MIs[0] dst
5935 /* 3165 */ // No operand predicates
5936 /* 3165 */ // MIs[0] lhs
5937 /* 3165 */ // No operand predicates
5938 /* 3165 */ // MIs[0] Operand 2
5939 /* 3165 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5940 /* 3169 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5941 /* 3174 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[0]]
5942 /* 3174 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5943 /* 3179 */ GIR_EraseRootFromParent_Done,
5944 /* 3180 */ // Label 163: @3180
5945 /* 3180 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(3201), // Rule ID 21 //
5946 /* 3185 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5947 /* 3188 */ // MIs[0] d
5948 /* 3188 */ // No operand predicates
5949 /* 3188 */ // MIs[0] op1
5950 /* 3188 */ // No operand predicates
5951 /* 3188 */ // MIs[0] c
5952 /* 3188 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5953 /* 3192 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5954 /* 3196 */ // MIs[1] imm
5955 /* 3196 */ // No operand predicates
5956 /* 3196 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5957 /* 3198 */ // Combiner Rule #21: sub_to_add
5958 /* 3198 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5959 /* 3201 */ // Label 164: @3201
5960 /* 3201 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(3212), // Rule ID 288 //
5961 /* 3206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5962 /* 3209 */ // MIs[0] d
5963 /* 3209 */ // No operand predicates
5964 /* 3209 */ // MIs[0] mi.src0
5965 /* 3209 */ // No operand predicates
5966 /* 3209 */ // MIs[0] mi.src1
5967 /* 3209 */ // No operand predicates
5968 /* 3209 */ // Combiner Rule #210: constant_fold_binop @ [mi[8]]
5969 /* 3209 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
5970 /* 3212 */ // Label 165: @3212
5971 /* 3212 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(3223), // Rule ID 342 //
5972 /* 3217 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
5973 /* 3220 */ // MIs[0] root
5974 /* 3220 */ // No operand predicates
5975 /* 3220 */ // MIs[0] mi.x
5976 /* 3220 */ // No operand predicates
5977 /* 3220 */ // MIs[0] mi.y
5978 /* 3220 */ // No operand predicates
5979 /* 3220 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[1]]
5980 /* 3220 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5981 /* 3223 */ // Label 166: @3223
5982 /* 3223 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(3234), // Rule ID 418 //
5983 /* 3228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule286Enabled),
5984 /* 3231 */ // MIs[0] dst
5985 /* 3231 */ // No operand predicates
5986 /* 3231 */ // MIs[0] src1
5987 /* 3231 */ // No operand predicates
5988 /* 3231 */ // MIs[0] src2
5989 /* 3231 */ // No operand predicates
5990 /* 3231 */ // Combiner Rule #286: simplify_neg_minmax
5991 /* 3231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
5992 /* 3234 */ // Label 167: @3234
5993 /* 3234 */ GIM_Reject,
5994 /* 3235 */ // Label 3: @3235
5995 /* 3235 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(3275), // Rule ID 24 //
5996 /* 3240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5997 /* 3243 */ // MIs[0] dst
5998 /* 3243 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5999 /* 3247 */ // MIs[0] x
6000 /* 3247 */ // No operand predicates
6001 /* 3247 */ // MIs[0] Operand 2
6002 /* 3247 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6003 /* 3251 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6004 /* 3254 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6005 /* 3264 */ // Combiner Rule #23: mul_by_neg_one
6006 /* 3264 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6007 /* 3267 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6008 /* 3269 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6009 /* 3272 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6010 /* 3274 */ GIR_EraseRootFromParent_Done,
6011 /* 3275 */ // Label 168: @3275
6012 /* 3275 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3300), // Rule ID 382 //
6013 /* 3280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
6014 /* 3283 */ // MIs[0] dst
6015 /* 3283 */ // No operand predicates
6016 /* 3283 */ // MIs[0] lhs
6017 /* 3283 */ // No operand predicates
6018 /* 3283 */ // MIs[0] rhs
6019 /* 3283 */ // No operand predicates
6020 /* 3283 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
6021 /* 3287 */ // Combiner Rule #250: G_MUL_commute_constant_to_rhs
6022 /* 3287 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
6023 /* 3290 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6024 /* 3292 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
6025 /* 3294 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
6026 /* 3296 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
6027 /* 3299 */ GIR_EraseRootFromParent_Done,
6028 /* 3300 */ // Label 169: @3300
6029 /* 3300 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3335), // Rule ID 47 //
6030 /* 3305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
6031 /* 3308 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6032 /* 3314 */ // MIs[0] root
6033 /* 3314 */ // No operand predicates
6034 /* 3314 */ // MIs[0] left
6035 /* 3314 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6036 /* 3318 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6037 /* 3322 */ // MIs[1] scale
6038 /* 3322 */ // No operand predicates
6039 /* 3322 */ // MIs[0] x
6040 /* 3322 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6041 /* 3326 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6042 /* 3330 */ // MIs[2] imm1
6043 /* 3330 */ // No operand predicates
6044 /* 3330 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6045 /* 3332 */ // Combiner Rule #43: mul_of_vscale
6046 /* 3332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
6047 /* 3335 */ // Label 170: @3335
6048 /* 3335 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3356), // Rule ID 85 //
6049 /* 3340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6050 /* 3343 */ // MIs[0] dst
6051 /* 3343 */ // No operand predicates
6052 /* 3343 */ // MIs[0] __undef_to_int_zero_match_0.x
6053 /* 3343 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6054 /* 3347 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6055 /* 3351 */ // MIs[0] __undef_to_int_zero_match_0.y
6056 /* 3351 */ // No operand predicates
6057 /* 3351 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6058 /* 3353 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[1]]
6059 /* 3353 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6060 /* 3356 */ // Label 171: @3356
6061 /* 3356 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3377), // Rule ID 87 //
6062 /* 3361 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6063 /* 3364 */ // MIs[0] dst
6064 /* 3364 */ // No operand predicates
6065 /* 3364 */ // MIs[0] __undef_to_int_zero_match_0.x
6066 /* 3364 */ // No operand predicates
6067 /* 3364 */ // MIs[0] __undef_to_int_zero_match_0.y
6068 /* 3364 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6069 /* 3368 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6070 /* 3372 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6071 /* 3374 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[3]]
6072 /* 3374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6073 /* 3377 */ // Label 172: @3377
6074 /* 3377 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3400), // Rule ID 140 //
6075 /* 3382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
6076 /* 3385 */ // MIs[0] dst
6077 /* 3385 */ // No operand predicates
6078 /* 3385 */ // MIs[0] lhs
6079 /* 3385 */ // No operand predicates
6080 /* 3385 */ // MIs[0] zero
6081 /* 3385 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6082 /* 3389 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6083 /* 3394 */ // Combiner Rule #96: binop_right_to_zero
6084 /* 3394 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6085 /* 3399 */ GIR_EraseRootFromParent_Done,
6086 /* 3400 */ // Label 173: @3400
6087 /* 3400 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3423), // Rule ID 147 //
6088 /* 3405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
6089 /* 3408 */ // MIs[0] dst
6090 /* 3408 */ // No operand predicates
6091 /* 3408 */ // MIs[0] x
6092 /* 3408 */ // No operand predicates
6093 /* 3408 */ // MIs[0] Operand 2
6094 /* 3408 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
6095 /* 3412 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6096 /* 3417 */ // Combiner Rule #103: right_identity_one_int
6097 /* 3417 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6098 /* 3422 */ GIR_EraseRootFromParent_Done,
6099 /* 3423 */ // Label 174: @3423
6100 /* 3423 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3446), // Rule ID 139 //
6101 /* 3428 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6102 /* 3431 */ // MIs[0] dst
6103 /* 3431 */ // No operand predicates
6104 /* 3431 */ // MIs[0] zero
6105 /* 3431 */ // No operand predicates
6106 /* 3431 */ // MIs[0] rhs
6107 /* 3431 */ // No operand predicates
6108 /* 3431 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6109 /* 3435 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6110 /* 3440 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
6111 /* 3440 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6112 /* 3445 */ GIR_EraseRootFromParent_Done,
6113 /* 3446 */ // Label 175: @3446
6114 /* 3446 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3457), // Rule ID 20 //
6115 /* 3451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
6116 /* 3454 */ // MIs[0] d
6117 /* 3454 */ // No operand predicates
6118 /* 3454 */ // MIs[0] op1
6119 /* 3454 */ // No operand predicates
6120 /* 3454 */ // MIs[0] op2
6121 /* 3454 */ // No operand predicates
6122 /* 3454 */ // Combiner Rule #20: mul_to_shl
6123 /* 3454 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
6124 /* 3457 */ // Label 176: @3457
6125 /* 3457 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3468), // Rule ID 285 //
6126 /* 3462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6127 /* 3465 */ // MIs[0] d
6128 /* 3465 */ // No operand predicates
6129 /* 3465 */ // MIs[0] mi.src0
6130 /* 3465 */ // No operand predicates
6131 /* 3465 */ // MIs[0] mi.src1
6132 /* 3465 */ // No operand predicates
6133 /* 3465 */ // Combiner Rule #210: constant_fold_binop @ [mi[5]]
6134 /* 3465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6135 /* 3468 */ // Label 177: @3468
6136 /* 3468 */ GIM_Reject,
6137 /* 3469 */ // Label 4: @3469
6138 /* 3469 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3492), // Rule ID 135 //
6139 /* 3474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6140 /* 3477 */ // MIs[0] dst
6141 /* 3477 */ // No operand predicates
6142 /* 3477 */ // MIs[0] zero
6143 /* 3477 */ // No operand predicates
6144 /* 3477 */ // MIs[0] rhs
6145 /* 3477 */ // No operand predicates
6146 /* 3477 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6147 /* 3481 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6148 /* 3486 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
6149 /* 3486 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6150 /* 3491 */ GIR_EraseRootFromParent_Done,
6151 /* 3492 */ // Label 178: @3492
6152 /* 3492 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3509), // Rule ID 371 //
6153 /* 3497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6154 /* 3500 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
6155 /* 3506 */ // MIs[0] dst
6156 /* 3506 */ // No operand predicates
6157 /* 3506 */ // MIs[0] x
6158 /* 3506 */ // No operand predicates
6159 /* 3506 */ // MIs[0] y
6160 /* 3506 */ // No operand predicates
6161 /* 3506 */ // Combiner Rule #239: sdiv_by_pow2
6162 /* 3506 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6163 /* 3509 */ // Label 179: @3509
6164 /* 3509 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3520), // Rule ID 255 //
6165 /* 3514 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
6166 /* 3517 */ // MIs[0] root
6167 /* 3517 */ // No operand predicates
6168 /* 3517 */ // MIs[0] mi.x
6169 /* 3517 */ // No operand predicates
6170 /* 3517 */ // MIs[0] mi.y
6171 /* 3517 */ // No operand predicates
6172 /* 3517 */ // Combiner Rule #193: div_rem_to_divrem @ [mi[0]]
6173 /* 3517 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6174 /* 3520 */ // Label 180: @3520
6175 /* 3520 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3531), // Rule ID 291 //
6176 /* 3525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6177 /* 3528 */ // MIs[0] d
6178 /* 3528 */ // No operand predicates
6179 /* 3528 */ // MIs[0] mi.src0
6180 /* 3528 */ // No operand predicates
6181 /* 3528 */ // MIs[0] mi.src1
6182 /* 3528 */ // No operand predicates
6183 /* 3528 */ // Combiner Rule #210: constant_fold_binop @ [mi[11]]
6184 /* 3528 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6185 /* 3531 */ // Label 181: @3531
6186 /* 3531 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3542), // Rule ID 347 //
6187 /* 3536 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6188 /* 3539 */ // MIs[0] root
6189 /* 3539 */ // No operand predicates
6190 /* 3539 */ // MIs[0] mi.x
6191 /* 3539 */ // No operand predicates
6192 /* 3539 */ // MIs[0] mi.y
6193 /* 3539 */ // No operand predicates
6194 /* 3539 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[6]]
6195 /* 3539 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6196 /* 3542 */ // Label 182: @3542
6197 /* 3542 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3553), // Rule ID 373 //
6198 /* 3547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
6199 /* 3550 */ // MIs[0] dst
6200 /* 3550 */ // No operand predicates
6201 /* 3550 */ // MIs[0] x
6202 /* 3550 */ // No operand predicates
6203 /* 3550 */ // MIs[0] y
6204 /* 3550 */ // No operand predicates
6205 /* 3550 */ // Combiner Rule #241: sdiv_by_const
6206 /* 3550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6207 /* 3553 */ // Label 183: @3553
6208 /* 3553 */ GIM_Reject,
6209 /* 3554 */ // Label 5: @3554
6210 /* 3554 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3575), // Rule ID 91 //
6211 /* 3559 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6212 /* 3562 */ // MIs[0] dst
6213 /* 3562 */ // No operand predicates
6214 /* 3562 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
6215 /* 3562 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6216 /* 3566 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6217 /* 3570 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
6218 /* 3570 */ // No operand predicates
6219 /* 3570 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6220 /* 3572 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[1]]
6221 /* 3572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6222 /* 3575 */ // Label 184: @3575
6223 /* 3575 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3598), // Rule ID 136 //
6224 /* 3580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6225 /* 3583 */ // MIs[0] dst
6226 /* 3583 */ // No operand predicates
6227 /* 3583 */ // MIs[0] zero
6228 /* 3583 */ // No operand predicates
6229 /* 3583 */ // MIs[0] rhs
6230 /* 3583 */ // No operand predicates
6231 /* 3583 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6232 /* 3587 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6233 /* 3592 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
6234 /* 3592 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6235 /* 3597 */ GIR_EraseRootFromParent_Done,
6236 /* 3598 */ // Label 185: @3598
6237 /* 3598 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3615), // Rule ID 370 //
6238 /* 3603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6239 /* 3606 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
6240 /* 3612 */ // MIs[0] dst
6241 /* 3612 */ // No operand predicates
6242 /* 3612 */ // MIs[0] x
6243 /* 3612 */ // No operand predicates
6244 /* 3612 */ // MIs[0] y
6245 /* 3612 */ // No operand predicates
6246 /* 3612 */ // Combiner Rule #238: udiv_by_pow2
6247 /* 3612 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6248 /* 3615 */ // Label 186: @3615
6249 /* 3615 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3626), // Rule ID 256 //
6250 /* 3620 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
6251 /* 3623 */ // MIs[0] root
6252 /* 3623 */ // No operand predicates
6253 /* 3623 */ // MIs[0] mi.x
6254 /* 3623 */ // No operand predicates
6255 /* 3623 */ // MIs[0] mi.y
6256 /* 3623 */ // No operand predicates
6257 /* 3623 */ // Combiner Rule #193: div_rem_to_divrem @ [mi[1]]
6258 /* 3623 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6259 /* 3626 */ // Label 187: @3626
6260 /* 3626 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3637), // Rule ID 290 //
6261 /* 3631 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6262 /* 3634 */ // MIs[0] d
6263 /* 3634 */ // No operand predicates
6264 /* 3634 */ // MIs[0] mi.src0
6265 /* 3634 */ // No operand predicates
6266 /* 3634 */ // MIs[0] mi.src1
6267 /* 3634 */ // No operand predicates
6268 /* 3634 */ // Combiner Rule #210: constant_fold_binop @ [mi[10]]
6269 /* 3634 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6270 /* 3637 */ // Label 188: @3637
6271 /* 3637 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3648), // Rule ID 349 //
6272 /* 3642 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6273 /* 3645 */ // MIs[0] root
6274 /* 3645 */ // No operand predicates
6275 /* 3645 */ // MIs[0] mi.x
6276 /* 3645 */ // No operand predicates
6277 /* 3645 */ // MIs[0] mi.y
6278 /* 3645 */ // No operand predicates
6279 /* 3645 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[8]]
6280 /* 3645 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6281 /* 3648 */ // Label 189: @3648
6282 /* 3648 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3659), // Rule ID 372 //
6283 /* 3653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6284 /* 3656 */ // MIs[0] dst
6285 /* 3656 */ // No operand predicates
6286 /* 3656 */ // MIs[0] x
6287 /* 3656 */ // No operand predicates
6288 /* 3656 */ // MIs[0] y
6289 /* 3656 */ // No operand predicates
6290 /* 3656 */ // Combiner Rule #240: udiv_by_const
6291 /* 3656 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6292 /* 3659 */ // Label 190: @3659
6293 /* 3659 */ GIM_Reject,
6294 /* 3660 */ // Label 6: @3660
6295 /* 3660 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3683), // Rule ID 137 //
6296 /* 3665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6297 /* 3668 */ // MIs[0] dst
6298 /* 3668 */ // No operand predicates
6299 /* 3668 */ // MIs[0] zero
6300 /* 3668 */ // No operand predicates
6301 /* 3668 */ // MIs[0] rhs
6302 /* 3668 */ // No operand predicates
6303 /* 3668 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6304 /* 3672 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6305 /* 3677 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
6306 /* 3677 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6307 /* 3682 */ GIR_EraseRootFromParent_Done,
6308 /* 3683 */ // Label 191: @3683
6309 /* 3683 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3694), // Rule ID 257 //
6310 /* 3688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
6311 /* 3691 */ // MIs[0] root
6312 /* 3691 */ // No operand predicates
6313 /* 3691 */ // MIs[0] mi.x
6314 /* 3691 */ // No operand predicates
6315 /* 3691 */ // MIs[0] mi.y
6316 /* 3691 */ // No operand predicates
6317 /* 3691 */ // Combiner Rule #193: div_rem_to_divrem @ [mi[2]]
6318 /* 3691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6319 /* 3694 */ // Label 192: @3694
6320 /* 3694 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3705), // Rule ID 293 //
6321 /* 3699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6322 /* 3702 */ // MIs[0] d
6323 /* 3702 */ // No operand predicates
6324 /* 3702 */ // MIs[0] mi.src0
6325 /* 3702 */ // No operand predicates
6326 /* 3702 */ // MIs[0] mi.src1
6327 /* 3702 */ // No operand predicates
6328 /* 3702 */ // Combiner Rule #210: constant_fold_binop @ [mi[13]]
6329 /* 3702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6330 /* 3705 */ // Label 193: @3705
6331 /* 3705 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3716), // Rule ID 348 //
6332 /* 3710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6333 /* 3713 */ // MIs[0] root
6334 /* 3713 */ // No operand predicates
6335 /* 3713 */ // MIs[0] mi.x
6336 /* 3713 */ // No operand predicates
6337 /* 3713 */ // MIs[0] mi.y
6338 /* 3713 */ // No operand predicates
6339 /* 3713 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[7]]
6340 /* 3713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6341 /* 3716 */ // Label 194: @3716
6342 /* 3716 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3727), // Rule ID 367 //
6343 /* 3721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6344 /* 3724 */ // MIs[0] dst
6345 /* 3724 */ // No operand predicates
6346 /* 3724 */ // MIs[0] x
6347 /* 3724 */ // No operand predicates
6348 /* 3724 */ // MIs[0] y
6349 /* 3724 */ // No operand predicates
6350 /* 3724 */ // Combiner Rule #235: srem_pow2_to_mask
6351 /* 3724 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
6352 /* 3727 */ // Label 195: @3727
6353 /* 3727 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3738), // Rule ID 369 //
6354 /* 3732 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6355 /* 3735 */ // MIs[0] dst
6356 /* 3735 */ // No operand predicates
6357 /* 3735 */ // MIs[0] x
6358 /* 3735 */ // No operand predicates
6359 /* 3735 */ // MIs[0] y
6360 /* 3735 */ // No operand predicates
6361 /* 3735 */ // Combiner Rule #237: srem_by_const
6362 /* 3735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6363 /* 3738 */ // Label 196: @3738
6364 /* 3738 */ GIM_Reject,
6365 /* 3739 */ // Label 7: @3739
6366 /* 3739 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3760), // Rule ID 92 //
6367 /* 3744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6368 /* 3747 */ // MIs[0] dst
6369 /* 3747 */ // No operand predicates
6370 /* 3747 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
6371 /* 3747 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6372 /* 3751 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6373 /* 3755 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
6374 /* 3755 */ // No operand predicates
6375 /* 3755 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6376 /* 3757 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[2]]
6377 /* 3757 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6378 /* 3760 */ // Label 197: @3760
6379 /* 3760 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3783), // Rule ID 138 //
6380 /* 3765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6381 /* 3768 */ // MIs[0] dst
6382 /* 3768 */ // No operand predicates
6383 /* 3768 */ // MIs[0] zero
6384 /* 3768 */ // No operand predicates
6385 /* 3768 */ // MIs[0] rhs
6386 /* 3768 */ // No operand predicates
6387 /* 3768 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6388 /* 3772 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6389 /* 3777 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
6390 /* 3777 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6391 /* 3782 */ GIR_EraseRootFromParent_Done,
6392 /* 3783 */ // Label 198: @3783
6393 /* 3783 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3794), // Rule ID 201 //
6394 /* 3788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
6395 /* 3791 */ // MIs[0] dst
6396 /* 3791 */ // No operand predicates
6397 /* 3791 */ // MIs[0] x
6398 /* 3791 */ // No operand predicates
6399 /* 3791 */ // MIs[0] y
6400 /* 3791 */ // No operand predicates
6401 /* 3791 */ // Combiner Rule #151: urem_pow2_to_mask
6402 /* 3791 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
6403 /* 3794 */ // Label 199: @3794
6404 /* 3794 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3805), // Rule ID 258 //
6405 /* 3799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
6406 /* 3802 */ // MIs[0] root
6407 /* 3802 */ // No operand predicates
6408 /* 3802 */ // MIs[0] mi.x
6409 /* 3802 */ // No operand predicates
6410 /* 3802 */ // MIs[0] mi.y
6411 /* 3802 */ // No operand predicates
6412 /* 3802 */ // Combiner Rule #193: div_rem_to_divrem @ [mi[3]]
6413 /* 3802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6414 /* 3805 */ // Label 200: @3805
6415 /* 3805 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3816), // Rule ID 292 //
6416 /* 3810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6417 /* 3813 */ // MIs[0] d
6418 /* 3813 */ // No operand predicates
6419 /* 3813 */ // MIs[0] mi.src0
6420 /* 3813 */ // No operand predicates
6421 /* 3813 */ // MIs[0] mi.src1
6422 /* 3813 */ // No operand predicates
6423 /* 3813 */ // Combiner Rule #210: constant_fold_binop @ [mi[12]]
6424 /* 3813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6425 /* 3816 */ // Label 201: @3816
6426 /* 3816 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3827), // Rule ID 350 //
6427 /* 3821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6428 /* 3824 */ // MIs[0] root
6429 /* 3824 */ // No operand predicates
6430 /* 3824 */ // MIs[0] mi.x
6431 /* 3824 */ // No operand predicates
6432 /* 3824 */ // MIs[0] mi.y
6433 /* 3824 */ // No operand predicates
6434 /* 3824 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[9]]
6435 /* 3824 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6436 /* 3827 */ // Label 202: @3827
6437 /* 3827 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3838), // Rule ID 368 //
6438 /* 3832 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6439 /* 3835 */ // MIs[0] dst
6440 /* 3835 */ // No operand predicates
6441 /* 3835 */ // MIs[0] x
6442 /* 3835 */ // No operand predicates
6443 /* 3835 */ // MIs[0] y
6444 /* 3835 */ // No operand predicates
6445 /* 3835 */ // Combiner Rule #236: urem_by_const
6446 /* 3835 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6447 /* 3838 */ // Label 203: @3838
6448 /* 3838 */ GIM_Reject,
6449 /* 3839 */ // Label 8: @3839
6450 /* 3839 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3925), // Rule ID 415 //
6451 /* 3844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule283Enabled),
6452 /* 3847 */ // MIs[0] root
6453 /* 3847 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6454 /* 3851 */ // MIs[0] or
6455 /* 3851 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6456 /* 3855 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6457 /* 3859 */ // MIs[1] x
6458 /* 3859 */ // No operand predicates
6459 /* 3859 */ // MIs[1] y
6460 /* 3859 */ // No operand predicates
6461 /* 3859 */ // MIs[0] not
6462 /* 3859 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6463 /* 3863 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6464 /* 3867 */ // MIs[2] y
6465 /* 3867 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6466 /* 3872 */ // MIs[2] Operand 2
6467 /* 3872 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6468 /* 3876 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6469 /* 3878 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6470 /* 3881 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6471 /* 3891 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6472 /* 3894 */ // Combiner Rule #283: and_xor_or_to_xor_and
6473 /* 3894 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6474 /* 3897 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6475 /* 3902 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6476 /* 3906 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6477 /* 3909 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6478 /* 3913 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6479 /* 3917 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6480 /* 3921 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6481 /* 3924 */ GIR_EraseRootFromParent_Done,
6482 /* 3925 */ // Label 204: @3925
6483 /* 3925 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(4023), // Rule ID 177 //
6484 /* 3930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6485 /* 3933 */ // MIs[0] root
6486 /* 3933 */ // No operand predicates
6487 /* 3933 */ // MIs[0] d1
6488 /* 3933 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6489 /* 3937 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6490 /* 3941 */ // MIs[1] p
6491 /* 3941 */ // No operand predicates
6492 /* 3941 */ // MIs[1] s1
6493 /* 3941 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6494 /* 3945 */ // MIs[1] Operand 3
6495 /* 3945 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6496 /* 3949 */ // MIs[0] d2
6497 /* 3949 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6498 /* 3953 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6499 /* 3957 */ // MIs[2] p
6500 /* 3957 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6501 /* 3962 */ // MIs[2] s2
6502 /* 3962 */ // No operand predicates
6503 /* 3962 */ // MIs[2] Operand 3
6504 /* 3962 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6505 /* 3966 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
6506 /* 3970 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6507 /* 3972 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6508 /* 3975 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6509 /* 3985 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6510 /* 3988 */ // Combiner Rule #127: double_icmp_zero_and_combine
6511 /* 3988 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6512 /* 3991 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6513 /* 3996 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6514 /* 4000 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6515 /* 4004 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6516 /* 4008 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6517 /* 4012 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6518 /* 4016 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6519 /* 4019 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6520 /* 4022 */ GIR_EraseRootFromParent_Done,
6521 /* 4023 */ // Label 205: @4023
6522 /* 4023 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(4060), // Rule ID 275 //
6523 /* 4028 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
6524 /* 4031 */ // MIs[0] root
6525 /* 4031 */ // No operand predicates
6526 /* 4031 */ // MIs[0] shift
6527 /* 4031 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6528 /* 4035 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6529 /* 4039 */ // MIs[1] x
6530 /* 4039 */ // No operand predicates
6531 /* 4039 */ // MIs[1] lsb
6532 /* 4039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6533 /* 4043 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6534 /* 4047 */ // MIs[2] imm1
6535 /* 4047 */ // No operand predicates
6536 /* 4047 */ // MIs[0] mask
6537 /* 4047 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
6538 /* 4051 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6539 /* 4055 */ // MIs[3] imm2
6540 /* 4055 */ // No operand predicates
6541 /* 4055 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
6542 /* 4057 */ // Combiner Rule #207: bitfield_extract_from_and
6543 /* 4057 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6544 /* 4060 */ // Label 206: @4060
6545 /* 4060 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(4109), // Rule ID 414 //
6546 /* 4065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule282Enabled),
6547 /* 4068 */ // MIs[0] root
6548 /* 4068 */ // No operand predicates
6549 /* 4068 */ // MIs[0] or
6550 /* 4068 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6551 /* 4072 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6552 /* 4076 */ // MIs[1] x
6553 /* 4076 */ // No operand predicates
6554 /* 4076 */ // MIs[1] not
6555 /* 4076 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6556 /* 4080 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6557 /* 4084 */ // MIs[2] y
6558 /* 4084 */ // No operand predicates
6559 /* 4084 */ // MIs[2] Operand 2
6560 /* 4084 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6561 /* 4088 */ // MIs[0] y
6562 /* 4088 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6563 /* 4093 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6564 /* 4095 */ // Combiner Rule #282: and_xor_or_to_and
6565 /* 4095 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6566 /* 4098 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6567 /* 4100 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6568 /* 4104 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6569 /* 4108 */ GIR_EraseRootFromParent_Done,
6570 /* 4109 */ // Label 207: @4109
6571 /* 4109 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(4130), // Rule ID 84 //
6572 /* 4114 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6573 /* 4117 */ // MIs[0] dst
6574 /* 4117 */ // No operand predicates
6575 /* 4117 */ // MIs[0] __undef_to_int_zero_match_0.x
6576 /* 4117 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6577 /* 4121 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6578 /* 4125 */ // MIs[0] __undef_to_int_zero_match_0.y
6579 /* 4125 */ // No operand predicates
6580 /* 4125 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6581 /* 4127 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[0]]
6582 /* 4127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6583 /* 4130 */ // Label 208: @4130
6584 /* 4130 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(4154), // Rule ID 128 //
6585 /* 4135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6586 /* 4138 */ // MIs[0] dst
6587 /* 4138 */ // No operand predicates
6588 /* 4138 */ // MIs[0] src
6589 /* 4138 */ // No operand predicates
6590 /* 4138 */ // MIs[0] src
6591 /* 4138 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6592 /* 4143 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6593 /* 4148 */ // Combiner Rule #93: binop_same_val @ [__binop_same_val_match_0[0]]
6594 /* 4148 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6595 /* 4153 */ GIR_EraseRootFromParent_Done,
6596 /* 4154 */ // Label 209: @4154
6597 /* 4154 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(4175), // Rule ID 86 //
6598 /* 4159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6599 /* 4162 */ // MIs[0] dst
6600 /* 4162 */ // No operand predicates
6601 /* 4162 */ // MIs[0] __undef_to_int_zero_match_0.x
6602 /* 4162 */ // No operand predicates
6603 /* 4162 */ // MIs[0] __undef_to_int_zero_match_0.y
6604 /* 4162 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6605 /* 4166 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6606 /* 4170 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6607 /* 4172 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[2]]
6608 /* 4172 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
6609 /* 4175 */ // Label 210: @4175
6610 /* 4175 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(4200), // Rule ID 383 //
6611 /* 4180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
6612 /* 4183 */ // MIs[0] dst
6613 /* 4183 */ // No operand predicates
6614 /* 4183 */ // MIs[0] lhs
6615 /* 4183 */ // No operand predicates
6616 /* 4183 */ // MIs[0] rhs
6617 /* 4183 */ // No operand predicates
6618 /* 4183 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
6619 /* 4187 */ // Combiner Rule #251: G_AND_commute_constant_to_rhs
6620 /* 4187 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6621 /* 4190 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6622 /* 4192 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
6623 /* 4194 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
6624 /* 4196 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
6625 /* 4199 */ GIR_EraseRootFromParent_Done,
6626 /* 4200 */ // Label 211: @4200
6627 /* 4200 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(4211), // Rule ID 80 //
6628 /* 4205 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6629 /* 4208 */ // MIs[0] dst
6630 /* 4208 */ // No operand predicates
6631 /* 4208 */ // MIs[0] src1
6632 /* 4208 */ // No operand predicates
6633 /* 4208 */ // MIs[0] src2
6634 /* 4208 */ // No operand predicates
6635 /* 4208 */ // Combiner Rule #74: load_and_mask
6636 /* 4208 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
6637 /* 4211 */ // Label 212: @4211
6638 /* 4211 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(4222), // Rule ID 164 //
6639 /* 4216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
6640 /* 4219 */ // MIs[0] root
6641 /* 4219 */ // No operand predicates
6642 /* 4219 */ // MIs[0] mi.x
6643 /* 4219 */ // No operand predicates
6644 /* 4219 */ // MIs[0] mi.y
6645 /* 4219 */ // No operand predicates
6646 /* 4219 */ // Combiner Rule #118: hoist_logic_op_with_same_opcode_hands @ [mi[0]]
6647 /* 4219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6648 /* 4222 */ // Label 213: @4222
6649 /* 4222 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(4233), // Rule ID 184 //
6650 /* 4227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
6651 /* 4230 */ // MIs[0] dst
6652 /* 4230 */ // No operand predicates
6653 /* 4230 */ // MIs[0] src1
6654 /* 4230 */ // No operand predicates
6655 /* 4230 */ // MIs[0] src2
6656 /* 4230 */ // No operand predicates
6657 /* 4230 */ // Combiner Rule #134: narrow_binop_feeding_and
6658 /* 4230 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
6659 /* 4233 */ // Label 214: @4233
6660 /* 4233 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(4244), // Rule ID 199 //
6661 /* 4238 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
6662 /* 4241 */ // MIs[0] dst
6663 /* 4241 */ // No operand predicates
6664 /* 4241 */ // MIs[0] src1
6665 /* 4241 */ // No operand predicates
6666 /* 4241 */ // MIs[0] src2
6667 /* 4241 */ // No operand predicates
6668 /* 4241 */ // Combiner Rule #149: redundant_and
6669 /* 4241 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6670 /* 4244 */ // Label 215: @4244
6671 /* 4244 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(4255), // Rule ID 223 //
6672 /* 4249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
6673 /* 4252 */ // MIs[0] dst
6674 /* 4252 */ // No operand predicates
6675 /* 4252 */ // MIs[0] x
6676 /* 4252 */ // No operand predicates
6677 /* 4252 */ // MIs[0] y
6678 /* 4252 */ // No operand predicates
6679 /* 4252 */ // Combiner Rule #173: overlapping_and
6680 /* 4252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6681 /* 4255 */ // Label 216: @4255
6682 /* 4255 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(4266), // Rule ID 282 //
6683 /* 4260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
6684 /* 4263 */ // MIs[0] d
6685 /* 4263 */ // No operand predicates
6686 /* 4263 */ // MIs[0] mi.src0
6687 /* 4263 */ // No operand predicates
6688 /* 4263 */ // MIs[0] mi.src1
6689 /* 4263 */ // No operand predicates
6690 /* 4263 */ // Combiner Rule #210: constant_fold_binop @ [mi[2]]
6691 /* 4263 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
6692 /* 4266 */ // Label 217: @4266
6693 /* 4266 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(4277), // Rule ID 332 //
6694 /* 4271 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
6695 /* 4274 */ // MIs[0] dst
6696 /* 4274 */ // No operand predicates
6697 /* 4274 */ // MIs[0] src1
6698 /* 4274 */ // No operand predicates
6699 /* 4274 */ // MIs[0] src2
6700 /* 4274 */ // No operand predicates
6701 /* 4274 */ // Combiner Rule #224: and_or_disjoint_mask
6702 /* 4274 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6703 /* 4277 */ // Label 218: @4277
6704 /* 4277 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(4288), // Rule ID 344 //
6705 /* 4282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6706 /* 4285 */ // MIs[0] root
6707 /* 4285 */ // No operand predicates
6708 /* 4285 */ // MIs[0] mi.x
6709 /* 4285 */ // No operand predicates
6710 /* 4285 */ // MIs[0] mi.y
6711 /* 4285 */ // No operand predicates
6712 /* 4285 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[3]]
6713 /* 4285 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
6714 /* 4288 */ // Label 219: @4288
6715 /* 4288 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4299), // Rule ID 410 //
6716 /* 4293 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6717 /* 4296 */ // MIs[0] dst
6718 /* 4296 */ // No operand predicates
6719 /* 4296 */ // MIs[0] src1
6720 /* 4296 */ // No operand predicates
6721 /* 4296 */ // MIs[0] src2
6722 /* 4296 */ // No operand predicates
6723 /* 4296 */ // Combiner Rule #278: match_ands
6724 /* 4296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6725 /* 4299 */ // Label 220: @4299
6726 /* 4299 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4310), // Rule ID 455 //
6727 /* 4304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule322Enabled),
6728 /* 4307 */ // MIs[0] root
6729 /* 4307 */ // No operand predicates
6730 /* 4307 */ // MIs[0] mi.x
6731 /* 4307 */ // No operand predicates
6732 /* 4307 */ // MIs[0] mi.y
6733 /* 4307 */ // No operand predicates
6734 /* 4307 */ // Combiner Rule #322: binop_with_neg @ [mi[0]]
6735 /* 4307 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6736 /* 4310 */ // Label 221: @4310
6737 /* 4310 */ GIM_Reject,
6738 /* 4311 */ // Label 9: @4311
6739 /* 4311 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4397), // Rule ID 413 //
6740 /* 4316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule281Enabled),
6741 /* 4319 */ // MIs[0] root
6742 /* 4319 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6743 /* 4323 */ // MIs[0] and
6744 /* 4323 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6745 /* 4327 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6746 /* 4331 */ // MIs[1] x
6747 /* 4331 */ // No operand predicates
6748 /* 4331 */ // MIs[1] y
6749 /* 4331 */ // No operand predicates
6750 /* 4331 */ // MIs[0] not
6751 /* 4331 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6752 /* 4335 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6753 /* 4339 */ // MIs[2] y
6754 /* 4339 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6755 /* 4344 */ // MIs[2] Operand 2
6756 /* 4344 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6757 /* 4348 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6758 /* 4350 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6759 /* 4353 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6760 /* 4363 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6761 /* 4366 */ // Combiner Rule #281: or_and_xor_to_xor_or
6762 /* 4366 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6763 /* 4369 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6764 /* 4374 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6765 /* 4378 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6766 /* 4381 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6767 /* 4385 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6768 /* 4389 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6769 /* 4393 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6770 /* 4396 */ GIR_EraseRootFromParent_Done,
6771 /* 4397 */ // Label 222: @4397
6772 /* 4397 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4444), // Rule ID 266 //
6773 /* 4402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6774 /* 4405 */ // MIs[0] root
6775 /* 4405 */ // No operand predicates
6776 /* 4405 */ // MIs[0] out1
6777 /* 4405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6778 /* 4409 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
6779 /* 4413 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6780 /* 4413 */ // No operand predicates
6781 /* 4413 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6782 /* 4413 */ // No operand predicates
6783 /* 4413 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6784 /* 4413 */ // No operand predicates
6785 /* 4413 */ // MIs[0] out2
6786 /* 4413 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6787 /* 4417 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
6788 /* 4421 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6789 /* 4421 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6790 /* 4426 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6791 /* 4426 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6792 /* 4431 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6793 /* 4436 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6794 /* 4438 */ // Combiner Rule #200: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
6795 /* 4438 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6796 /* 4443 */ GIR_EraseRootFromParent_Done,
6797 /* 4444 */ // Label 223: @4444
6798 /* 4444 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4491), // Rule ID 268 //
6799 /* 4449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
6800 /* 4452 */ // MIs[0] root
6801 /* 4452 */ // No operand predicates
6802 /* 4452 */ // MIs[0] out1
6803 /* 4452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6804 /* 4456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
6805 /* 4460 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6806 /* 4460 */ // No operand predicates
6807 /* 4460 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6808 /* 4460 */ // No operand predicates
6809 /* 4460 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6810 /* 4460 */ // No operand predicates
6811 /* 4460 */ // MIs[0] out2
6812 /* 4460 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6813 /* 4464 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6814 /* 4468 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6815 /* 4468 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6816 /* 4473 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6817 /* 4473 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6818 /* 4478 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6819 /* 4483 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6820 /* 4485 */ // Combiner Rule #201: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
6821 /* 4485 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6822 /* 4490 */ GIR_EraseRootFromParent_Done,
6823 /* 4491 */ // Label 224: @4491
6824 /* 4491 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4589), // Rule ID 178 //
6825 /* 4496 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
6826 /* 4499 */ // MIs[0] root
6827 /* 4499 */ // No operand predicates
6828 /* 4499 */ // MIs[0] d1
6829 /* 4499 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6830 /* 4503 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6831 /* 4507 */ // MIs[1] p
6832 /* 4507 */ // No operand predicates
6833 /* 4507 */ // MIs[1] s1
6834 /* 4507 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6835 /* 4511 */ // MIs[1] Operand 3
6836 /* 4511 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6837 /* 4515 */ // MIs[0] d2
6838 /* 4515 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6839 /* 4519 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6840 /* 4523 */ // MIs[2] p
6841 /* 4523 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6842 /* 4528 */ // MIs[2] s2
6843 /* 4528 */ // No operand predicates
6844 /* 4528 */ // MIs[2] Operand 3
6845 /* 4528 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6846 /* 4532 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
6847 /* 4536 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6848 /* 4538 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6849 /* 4541 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6850 /* 4551 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6851 /* 4554 */ // Combiner Rule #128: double_icmp_zero_or_combine
6852 /* 4554 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6853 /* 4557 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6854 /* 4562 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6855 /* 4566 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6856 /* 4570 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6857 /* 4574 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6858 /* 4578 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6859 /* 4582 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6860 /* 4585 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6861 /* 4588 */ GIR_EraseRootFromParent_Done,
6862 /* 4589 */ // Label 225: @4589
6863 /* 4589 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4638), // Rule ID 412 //
6864 /* 4594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule280Enabled),
6865 /* 4597 */ // MIs[0] root
6866 /* 4597 */ // No operand predicates
6867 /* 4597 */ // MIs[0] and
6868 /* 4597 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6869 /* 4601 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6870 /* 4605 */ // MIs[1] x
6871 /* 4605 */ // No operand predicates
6872 /* 4605 */ // MIs[1] not
6873 /* 4605 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6874 /* 4609 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6875 /* 4613 */ // MIs[2] y
6876 /* 4613 */ // No operand predicates
6877 /* 4613 */ // MIs[2] Operand 2
6878 /* 4613 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6879 /* 4617 */ // MIs[0] y
6880 /* 4617 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6881 /* 4622 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6882 /* 4624 */ // Combiner Rule #280: or_and_xor_to_or
6883 /* 4624 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6884 /* 4627 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6885 /* 4629 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6886 /* 4633 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6887 /* 4637 */ GIR_EraseRootFromParent_Done,
6888 /* 4638 */ // Label 226: @4638
6889 /* 4638 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4672), // Rule ID 466 //
6890 /* 4643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule331Enabled),
6891 /* 4646 */ // MIs[0] dst
6892 /* 4646 */ // No operand predicates
6893 /* 4646 */ // MIs[0] __combine_or_of_and_match_0.and
6894 /* 4646 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6895 /* 4650 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6896 /* 4654 */ // MIs[1] x
6897 /* 4654 */ // No operand predicates
6898 /* 4654 */ // MIs[1] y
6899 /* 4654 */ // No operand predicates
6900 /* 4654 */ // MIs[0] x
6901 /* 4654 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6902 /* 4659 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6903 /* 4664 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6904 /* 4666 */ // Combiner Rule #331: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
6905 /* 4666 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6906 /* 4671 */ GIR_EraseRootFromParent_Done,
6907 /* 4672 */ // Label 227: @4672
6908 /* 4672 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4706), // Rule ID 467 //
6909 /* 4677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule331Enabled),
6910 /* 4680 */ // MIs[0] dst
6911 /* 4680 */ // No operand predicates
6912 /* 4680 */ // MIs[0] __combine_or_of_and_match_0.and
6913 /* 4680 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6914 /* 4684 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6915 /* 4688 */ // MIs[1] y
6916 /* 4688 */ // No operand predicates
6917 /* 4688 */ // MIs[1] x
6918 /* 4688 */ // No operand predicates
6919 /* 4688 */ // MIs[0] x
6920 /* 4688 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6921 /* 4693 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6922 /* 4698 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6923 /* 4700 */ // Combiner Rule #331: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
6924 /* 4700 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6925 /* 4705 */ GIR_EraseRootFromParent_Done,
6926 /* 4706 */ // Label 228: @4706
6927 /* 4706 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4753), // Rule ID 269 //
6928 /* 4711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
6929 /* 4714 */ // MIs[0] root
6930 /* 4714 */ // No operand predicates
6931 /* 4714 */ // MIs[0] out2
6932 /* 4714 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6933 /* 4718 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6934 /* 4722 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6935 /* 4722 */ // No operand predicates
6936 /* 4722 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6937 /* 4722 */ // No operand predicates
6938 /* 4722 */ // MIs[0] out1
6939 /* 4722 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6940 /* 4726 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
6941 /* 4730 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6942 /* 4730 */ // No operand predicates
6943 /* 4730 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6944 /* 4730 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6945 /* 4735 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6946 /* 4735 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6947 /* 4740 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6948 /* 4745 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6949 /* 4747 */ // Combiner Rule #201: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6950 /* 4747 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6951 /* 4752 */ GIR_EraseRootFromParent_Done,
6952 /* 4753 */ // Label 229: @4753
6953 /* 4753 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4800), // Rule ID 267 //
6954 /* 4758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6955 /* 4761 */ // MIs[0] root
6956 /* 4761 */ // No operand predicates
6957 /* 4761 */ // MIs[0] out2
6958 /* 4761 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6959 /* 4765 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6960 /* 4769 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6961 /* 4769 */ // No operand predicates
6962 /* 4769 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6963 /* 4769 */ // No operand predicates
6964 /* 4769 */ // MIs[0] out1
6965 /* 4769 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6966 /* 4773 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6967 /* 4777 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6968 /* 4777 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6969 /* 4782 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6970 /* 4782 */ // No operand predicates
6971 /* 4782 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6972 /* 4782 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6973 /* 4787 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6974 /* 4792 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6975 /* 4794 */ // Combiner Rule #200: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6976 /* 4794 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6977 /* 4799 */ GIR_EraseRootFromParent_Done,
6978 /* 4800 */ // Label 230: @4800
6979 /* 4800 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4850), // Rule ID 417 //
6980 /* 4805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule285Enabled),
6981 /* 4808 */ // MIs[0] root
6982 /* 4808 */ // No operand predicates
6983 /* 4808 */ // MIs[0] xor
6984 /* 4808 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6985 /* 4812 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6986 /* 4816 */ // MIs[1] x
6987 /* 4816 */ // No operand predicates
6988 /* 4816 */ // MIs[1] y
6989 /* 4816 */ // No operand predicates
6990 /* 4816 */ // MIs[0] and
6991 /* 4816 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6992 /* 4820 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_AND),
6993 /* 4824 */ // MIs[2] x
6994 /* 4824 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6995 /* 4829 */ // MIs[2] y
6996 /* 4829 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6997 /* 4834 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6998 /* 4836 */ // Combiner Rule #285: or_xor_and
6999 /* 4836 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
7000 /* 4839 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7001 /* 4841 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7002 /* 4845 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
7003 /* 4849 */ GIR_EraseRootFromParent_Done,
7004 /* 4850 */ // Label 231: @4850
7005 /* 4850 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4900), // Rule ID 416 //
7006 /* 4855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule284Enabled),
7007 /* 4858 */ // MIs[0] root
7008 /* 4858 */ // No operand predicates
7009 /* 4858 */ // MIs[0] xor
7010 /* 4858 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7011 /* 4862 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7012 /* 4866 */ // MIs[1] x
7013 /* 4866 */ // No operand predicates
7014 /* 4866 */ // MIs[1] y
7015 /* 4866 */ // No operand predicates
7016 /* 4866 */ // MIs[0] or
7017 /* 4866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7018 /* 4870 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_OR),
7019 /* 4874 */ // MIs[2] x
7020 /* 4874 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
7021 /* 4879 */ // MIs[2] y
7022 /* 4879 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
7023 /* 4884 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7024 /* 4886 */ // Combiner Rule #284: or_xor_or
7025 /* 4886 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
7026 /* 4889 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7027 /* 4891 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7028 /* 4895 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
7029 /* 4899 */ GIR_EraseRootFromParent_Done,
7030 /* 4900 */ // Label 232: @4900
7031 /* 4900 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4921), // Rule ID 88 //
7032 /* 4905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
7033 /* 4908 */ // MIs[0] dst
7034 /* 4908 */ // No operand predicates
7035 /* 4908 */ // MIs[0] __undef_to_negative_one_match_0.x
7036 /* 4908 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7037 /* 4912 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7038 /* 4916 */ // MIs[0] __undef_to_negative_one_match_0.y
7039 /* 4916 */ // No operand predicates
7040 /* 4916 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7041 /* 4918 */ // Combiner Rule #78: undef_to_negative_one @ [__undef_to_negative_one_match_0[0]]
7042 /* 4918 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7043 /* 4921 */ // Label 233: @4921
7044 /* 4921 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4945), // Rule ID 129 //
7045 /* 4926 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7046 /* 4929 */ // MIs[0] dst
7047 /* 4929 */ // No operand predicates
7048 /* 4929 */ // MIs[0] src
7049 /* 4929 */ // No operand predicates
7050 /* 4929 */ // MIs[0] src
7051 /* 4929 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
7052 /* 4934 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7053 /* 4939 */ // Combiner Rule #93: binop_same_val @ [__binop_same_val_match_0[1]]
7054 /* 4939 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7055 /* 4944 */ GIR_EraseRootFromParent_Done,
7056 /* 4945 */ // Label 234: @4945
7057 /* 4945 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4979), // Rule ID 468 //
7058 /* 4950 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule331Enabled),
7059 /* 4953 */ // MIs[0] dst
7060 /* 4953 */ // No operand predicates
7061 /* 4953 */ // MIs[0] x
7062 /* 4953 */ // No operand predicates
7063 /* 4953 */ // MIs[0] __combine_or_of_and_match_0.and
7064 /* 4953 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7065 /* 4957 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7066 /* 4961 */ // MIs[1] x
7067 /* 4961 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7068 /* 4966 */ // MIs[1] y
7069 /* 4966 */ // No operand predicates
7070 /* 4966 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7071 /* 4971 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7072 /* 4973 */ // Combiner Rule #331: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
7073 /* 4973 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7074 /* 4978 */ GIR_EraseRootFromParent_Done,
7075 /* 4979 */ // Label 235: @4979
7076 /* 4979 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(5013), // Rule ID 469 //
7077 /* 4984 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule331Enabled),
7078 /* 4987 */ // MIs[0] dst
7079 /* 4987 */ // No operand predicates
7080 /* 4987 */ // MIs[0] x
7081 /* 4987 */ // No operand predicates
7082 /* 4987 */ // MIs[0] __combine_or_of_and_match_0.and
7083 /* 4987 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7084 /* 4991 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7085 /* 4995 */ // MIs[1] y
7086 /* 4995 */ // No operand predicates
7087 /* 4995 */ // MIs[1] x
7088 /* 4995 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
7089 /* 5000 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7090 /* 5005 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7091 /* 5007 */ // Combiner Rule #331: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
7092 /* 5007 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7093 /* 5012 */ GIR_EraseRootFromParent_Done,
7094 /* 5013 */ // Label 236: @5013
7095 /* 5013 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(5034), // Rule ID 89 //
7096 /* 5018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
7097 /* 5021 */ // MIs[0] dst
7098 /* 5021 */ // No operand predicates
7099 /* 5021 */ // MIs[0] __undef_to_negative_one_match_0.x
7100 /* 5021 */ // No operand predicates
7101 /* 5021 */ // MIs[0] __undef_to_negative_one_match_0.y
7102 /* 5021 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7103 /* 5025 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7104 /* 5029 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7105 /* 5031 */ // Combiner Rule #78: undef_to_negative_one @ [__undef_to_negative_one_match_0[1]]
7106 /* 5031 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7107 /* 5034 */ // Label 237: @5034
7108 /* 5034 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(5057), // Rule ID 120 //
7109 /* 5039 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
7110 /* 5042 */ // MIs[0] dst
7111 /* 5042 */ // No operand predicates
7112 /* 5042 */ // MIs[0] lhs
7113 /* 5042 */ // No operand predicates
7114 /* 5042 */ // MIs[0] Operand 2
7115 /* 5042 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7116 /* 5046 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7117 /* 5051 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[2]]
7118 /* 5051 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7119 /* 5056 */ GIR_EraseRootFromParent_Done,
7120 /* 5057 */ // Label 238: @5057
7121 /* 5057 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(5082), // Rule ID 384 //
7122 /* 5062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
7123 /* 5065 */ // MIs[0] dst
7124 /* 5065 */ // No operand predicates
7125 /* 5065 */ // MIs[0] lhs
7126 /* 5065 */ // No operand predicates
7127 /* 5065 */ // MIs[0] rhs
7128 /* 5065 */ // No operand predicates
7129 /* 5065 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
7130 /* 5069 */ // Combiner Rule #252: G_OR_commute_constant_to_rhs
7131 /* 5069 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
7132 /* 5072 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7133 /* 5074 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
7134 /* 5076 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
7135 /* 5078 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
7136 /* 5081 */ GIR_EraseRootFromParent_Done,
7137 /* 5082 */ // Label 239: @5082
7138 /* 5082 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(5093), // Rule ID 165 //
7139 /* 5087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
7140 /* 5090 */ // MIs[0] root
7141 /* 5090 */ // No operand predicates
7142 /* 5090 */ // MIs[0] mi.x
7143 /* 5090 */ // No operand predicates
7144 /* 5090 */ // MIs[0] mi.y
7145 /* 5090 */ // No operand predicates
7146 /* 5090 */ // Combiner Rule #118: hoist_logic_op_with_same_opcode_hands @ [mi[1]]
7147 /* 5090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7148 /* 5093 */ // Label 240: @5093
7149 /* 5093 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(5104), // Rule ID 200 //
7150 /* 5098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
7151 /* 5101 */ // MIs[0] dst
7152 /* 5101 */ // No operand predicates
7153 /* 5101 */ // MIs[0] src1
7154 /* 5101 */ // No operand predicates
7155 /* 5101 */ // MIs[0] src2
7156 /* 5101 */ // No operand predicates
7157 /* 5101 */ // Combiner Rule #150: redundant_or
7158 /* 5101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7159 /* 5104 */ // Label 241: @5104
7160 /* 5104 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(5115), // Rule ID 254 //
7161 /* 5109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
7162 /* 5112 */ // MIs[0] dst
7163 /* 5112 */ // No operand predicates
7164 /* 5112 */ // MIs[0] src1
7165 /* 5112 */ // No operand predicates
7166 /* 5112 */ // MIs[0] src2
7167 /* 5112 */ // No operand predicates
7168 /* 5112 */ // Combiner Rule #192: load_or_combine
7169 /* 5112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
7170 /* 5115 */ // Label 242: @5115
7171 /* 5115 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(5126), // Rule ID 259 //
7172 /* 5120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7173 /* 5123 */ // MIs[0] dst
7174 /* 5123 */ // No operand predicates
7175 /* 5123 */ // MIs[0] src1
7176 /* 5123 */ // No operand predicates
7177 /* 5123 */ // MIs[0] src2
7178 /* 5123 */ // No operand predicates
7179 /* 5123 */ // Combiner Rule #194: funnel_shift_from_or_shift
7180 /* 5123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
7181 /* 5126 */ // Label 243: @5126
7182 /* 5126 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(5137), // Rule ID 286 //
7183 /* 5131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
7184 /* 5134 */ // MIs[0] d
7185 /* 5134 */ // No operand predicates
7186 /* 5134 */ // MIs[0] mi.src0
7187 /* 5134 */ // No operand predicates
7188 /* 5134 */ // MIs[0] mi.src1
7189 /* 5134 */ // No operand predicates
7190 /* 5134 */ // Combiner Rule #210: constant_fold_binop @ [mi[6]]
7191 /* 5134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7192 /* 5137 */ // Label 244: @5137
7193 /* 5137 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(5148), // Rule ID 345 //
7194 /* 5142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
7195 /* 5145 */ // MIs[0] root
7196 /* 5145 */ // No operand predicates
7197 /* 5145 */ // MIs[0] mi.x
7198 /* 5145 */ // No operand predicates
7199 /* 5145 */ // MIs[0] mi.y
7200 /* 5145 */ // No operand predicates
7201 /* 5145 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[4]]
7202 /* 5145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
7203 /* 5148 */ // Label 245: @5148
7204 /* 5148 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(5159), // Rule ID 411 //
7205 /* 5153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule279Enabled),
7206 /* 5156 */ // MIs[0] dst
7207 /* 5156 */ // No operand predicates
7208 /* 5156 */ // MIs[0] src1
7209 /* 5156 */ // No operand predicates
7210 /* 5156 */ // MIs[0] src2
7211 /* 5156 */ // No operand predicates
7212 /* 5156 */ // Combiner Rule #279: match_ors
7213 /* 5156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7214 /* 5159 */ // Label 246: @5159
7215 /* 5159 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(5170), // Rule ID 456 //
7216 /* 5164 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule322Enabled),
7217 /* 5167 */ // MIs[0] root
7218 /* 5167 */ // No operand predicates
7219 /* 5167 */ // MIs[0] mi.x
7220 /* 5167 */ // No operand predicates
7221 /* 5167 */ // MIs[0] mi.y
7222 /* 5167 */ // No operand predicates
7223 /* 5167 */ // Combiner Rule #322: binop_with_neg @ [mi[1]]
7224 /* 5167 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7225 /* 5170 */ // Label 247: @5170
7226 /* 5170 */ GIM_Reject,
7227 /* 5171 */ // Label 10: @5171
7228 /* 5171 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(5231), // Rule ID 13 //
7229 /* 5176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
7230 /* 5179 */ // MIs[0] root
7231 /* 5179 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
7232 /* 5183 */ // MIs[0] add
7233 /* 5183 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7234 /* 5187 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7235 /* 5191 */ // MIs[1] A
7236 /* 5191 */ // No operand predicates
7237 /* 5191 */ // MIs[1] Operand 2
7238 /* 5191 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
7239 /* 5195 */ // MIs[0] Operand 2
7240 /* 5195 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
7241 /* 5199 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
7242 /* 5203 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7243 /* 5205 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7244 /* 5208 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
7245 /* 5218 */ // Combiner Rule #13: NotAPlusNegOne
7246 /* 5218 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
7247 /* 5221 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7248 /* 5223 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
7249 /* 5226 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
7250 /* 5230 */ GIR_EraseRootFromParent_Done,
7251 /* 5231 */ // Label 248: @5231
7252 /* 5231 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(5255), // Rule ID 106 //
7253 /* 5236 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7254 /* 5239 */ // MIs[0] dst
7255 /* 5239 */ // No operand predicates
7256 /* 5239 */ // MIs[0] __propagate_undef_any_op_match_0.x
7257 /* 5239 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7258 /* 5243 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7259 /* 5247 */ // MIs[0] __propagate_undef_any_op_match_0.y
7260 /* 5247 */ // No operand predicates
7261 /* 5247 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7262 /* 5249 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[2]]
7263 /* 5249 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7264 /* 5252 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7265 /* 5254 */ GIR_EraseRootFromParent_Done,
7266 /* 5255 */ // Label 249: @5255
7267 /* 5255 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(5294), // Rule ID 131 //
7268 /* 5260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
7269 /* 5263 */ // MIs[0] dst
7270 /* 5263 */ // No operand predicates
7271 /* 5263 */ // MIs[0] x
7272 /* 5263 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
7273 /* 5267 */ // MIs[0] x
7274 /* 5267 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
7275 /* 5272 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7276 /* 5275 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
7277 /* 5285 */ // Combiner Rule #94: same_val_zero @ [__same_val_zero_match_0[1]]
7278 /* 5285 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
7279 /* 5288 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7280 /* 5290 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
7281 /* 5293 */ GIR_EraseRootFromParent_Done,
7282 /* 5294 */ // Label 250: @5294
7283 /* 5294 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(5318), // Rule ID 109 //
7284 /* 5299 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7285 /* 5302 */ // MIs[0] dst
7286 /* 5302 */ // No operand predicates
7287 /* 5302 */ // MIs[0] __propagate_undef_any_op_match_0.x
7288 /* 5302 */ // No operand predicates
7289 /* 5302 */ // MIs[0] __propagate_undef_any_op_match_0.y
7290 /* 5302 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7291 /* 5306 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7292 /* 5310 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7293 /* 5312 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[5]]
7294 /* 5312 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7295 /* 5315 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7296 /* 5317 */ GIR_EraseRootFromParent_Done,
7297 /* 5318 */ // Label 251: @5318
7298 /* 5318 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(5341), // Rule ID 121 //
7299 /* 5323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
7300 /* 5326 */ // MIs[0] dst
7301 /* 5326 */ // No operand predicates
7302 /* 5326 */ // MIs[0] lhs
7303 /* 5326 */ // No operand predicates
7304 /* 5326 */ // MIs[0] Operand 2
7305 /* 5326 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7306 /* 5330 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7307 /* 5335 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[3]]
7308 /* 5335 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7309 /* 5340 */ GIR_EraseRootFromParent_Done,
7310 /* 5341 */ // Label 252: @5341
7311 /* 5341 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(5366), // Rule ID 385 //
7312 /* 5346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
7313 /* 5349 */ // MIs[0] dst
7314 /* 5349 */ // No operand predicates
7315 /* 5349 */ // MIs[0] lhs
7316 /* 5349 */ // No operand predicates
7317 /* 5349 */ // MIs[0] rhs
7318 /* 5349 */ // No operand predicates
7319 /* 5349 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
7320 /* 5353 */ // Combiner Rule #253: G_XOR_commute_constant_to_rhs
7321 /* 5353 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
7322 /* 5356 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7323 /* 5358 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
7324 /* 5360 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
7325 /* 5362 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
7326 /* 5365 */ GIR_EraseRootFromParent_Done,
7327 /* 5366 */ // Label 253: @5366
7328 /* 5366 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(5377), // Rule ID 166 //
7329 /* 5371 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
7330 /* 5374 */ // MIs[0] root
7331 /* 5374 */ // No operand predicates
7332 /* 5374 */ // MIs[0] mi.x
7333 /* 5374 */ // No operand predicates
7334 /* 5374 */ // MIs[0] mi.y
7335 /* 5374 */ // No operand predicates
7336 /* 5374 */ // Combiner Rule #118: hoist_logic_op_with_same_opcode_hands @ [mi[2]]
7337 /* 5374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7338 /* 5377 */ // Label 254: @5377
7339 /* 5377 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(5388), // Rule ID 205 //
7340 /* 5382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
7341 /* 5385 */ // MIs[0] dst
7342 /* 5385 */ // No operand predicates
7343 /* 5385 */ // MIs[0] src1
7344 /* 5385 */ // No operand predicates
7345 /* 5385 */ // MIs[0] src2
7346 /* 5385 */ // No operand predicates
7347 /* 5385 */ // Combiner Rule #155: not_cmp_fold
7348 /* 5385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
7349 /* 5388 */ // Label 255: @5388
7350 /* 5388 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(5399), // Rule ID 241 //
7351 /* 5393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7352 /* 5396 */ // MIs[0] dst
7353 /* 5396 */ // No operand predicates
7354 /* 5396 */ // MIs[0] src1
7355 /* 5396 */ // No operand predicates
7356 /* 5396 */ // MIs[0] src2
7357 /* 5396 */ // No operand predicates
7358 /* 5396 */ // Combiner Rule #187: xor_of_and_with_same_reg
7359 /* 5396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7360 /* 5399 */ // Label 256: @5399
7361 /* 5399 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(5410), // Rule ID 289 //
7362 /* 5404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
7363 /* 5407 */ // MIs[0] d
7364 /* 5407 */ // No operand predicates
7365 /* 5407 */ // MIs[0] mi.src0
7366 /* 5407 */ // No operand predicates
7367 /* 5407 */ // MIs[0] mi.src1
7368 /* 5407 */ // No operand predicates
7369 /* 5407 */ // Combiner Rule #210: constant_fold_binop @ [mi[9]]
7370 /* 5407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7371 /* 5410 */ // Label 257: @5410
7372 /* 5410 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(5421), // Rule ID 346 //
7373 /* 5415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
7374 /* 5418 */ // MIs[0] root
7375 /* 5418 */ // No operand predicates
7376 /* 5418 */ // MIs[0] mi.x
7377 /* 5418 */ // No operand predicates
7378 /* 5418 */ // MIs[0] mi.y
7379 /* 5418 */ // No operand predicates
7380 /* 5418 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[5]]
7381 /* 5418 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
7382 /* 5421 */ // Label 258: @5421
7383 /* 5421 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(5432), // Rule ID 457 //
7384 /* 5426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule322Enabled),
7385 /* 5429 */ // MIs[0] root
7386 /* 5429 */ // No operand predicates
7387 /* 5429 */ // MIs[0] mi.x
7388 /* 5429 */ // No operand predicates
7389 /* 5429 */ // MIs[0] mi.y
7390 /* 5429 */ // No operand predicates
7391 /* 5429 */ // Combiner Rule #322: binop_with_neg @ [mi[2]]
7392 /* 5429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7393 /* 5432 */ // Label 259: @5432
7394 /* 5432 */ GIM_Reject,
7395 /* 5433 */ // Label 11: @5433
7396 /* 5433 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(5447), // Rule ID 161 //
7397 /* 5438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
7398 /* 5441 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7399 /* 5444 */ // MIs[0] dst
7400 /* 5444 */ // No operand predicates
7401 /* 5444 */ // MIs[0] srcs
7402 /* 5444 */ // No operand predicates
7403 /* 5444 */ // Combiner Rule #116: extend_through_phis
7404 /* 5444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7405 /* 5447 */ // Label 260: @5447
7406 /* 5447 */ GIM_Reject,
7407 /* 5448 */ // Label 12: @5448
7408 /* 5448 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(5459), // Rule ID 427 //
7409 /* 5453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule295Enabled),
7410 /* 5456 */ // Combiner Rule #295: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
7411 /* 5456 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7412 /* 5459 */ // Label 261: @5459
7413 /* 5459 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(5470), // Rule ID 428 //
7414 /* 5464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule296Enabled),
7415 /* 5467 */ // Combiner Rule #296: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
7416 /* 5467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7417 /* 5470 */ // Label 262: @5470
7418 /* 5470 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(5481), // Rule ID 430 //
7419 /* 5475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule298Enabled),
7420 /* 5478 */ // Combiner Rule #298: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
7421 /* 5478 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7422 /* 5481 */ // Label 263: @5481
7423 /* 5481 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5492), // Rule ID 431 //
7424 /* 5486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule299Enabled),
7425 /* 5489 */ // Combiner Rule #299: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
7426 /* 5489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7427 /* 5492 */ // Label 264: @5492
7428 /* 5492 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5503), // Rule ID 432 //
7429 /* 5497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule300Enabled),
7430 /* 5500 */ // Combiner Rule #300: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
7431 /* 5500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7432 /* 5503 */ // Label 265: @5503
7433 /* 5503 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5514), // Rule ID 433 //
7434 /* 5508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule301Enabled),
7435 /* 5511 */ // Combiner Rule #301: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
7436 /* 5511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
7437 /* 5514 */ // Label 266: @5514
7438 /* 5514 */ GIM_Reject,
7439 /* 5515 */ // Label 13: @5515
7440 /* 5515 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5529), // Rule ID 429 //
7441 /* 5520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule297Enabled),
7442 /* 5523 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7443 /* 5526 */ // MIs[0] dst
7444 /* 5526 */ // No operand predicates
7445 /* 5526 */ // MIs[0] merge_srcs
7446 /* 5526 */ // No operand predicates
7447 /* 5526 */ // Combiner Rule #297: merge_unmerge
7448 /* 5526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7449 /* 5529 */ // Label 267: @5529
7450 /* 5529 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5609),
7451 /* 5534 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
7452 /* 5537 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5567), // Rule ID 434 //
7453 /* 5542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule302Enabled),
7454 /* 5545 */ // MIs[0] root
7455 /* 5545 */ // No operand predicates
7456 /* 5545 */ // MIs[0] x
7457 /* 5545 */ // No operand predicates
7458 /* 5545 */ // MIs[0] undef
7459 /* 5545 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7460 /* 5549 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7461 /* 5553 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner50),
7462 /* 5557 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7463 /* 5559 */ // Combiner Rule #302: merge_of_x_and_undef
7464 /* 5559 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ANYEXT),
7465 /* 5562 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7466 /* 5564 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7467 /* 5566 */ GIR_EraseRootFromParent_Done,
7468 /* 5567 */ // Label 269: @5567
7469 /* 5567 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5608), // Rule ID 435 //
7470 /* 5572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule303Enabled),
7471 /* 5575 */ // MIs[0] root
7472 /* 5575 */ // No operand predicates
7473 /* 5575 */ // MIs[0] x
7474 /* 5575 */ // No operand predicates
7475 /* 5575 */ // MIs[0] zero
7476 /* 5575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7477 /* 5579 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7478 /* 5583 */ // MIs[1] Operand 1
7479 /* 5583 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7480 /* 5594 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner51),
7481 /* 5598 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7482 /* 5600 */ // Combiner Rule #303: merge_of_x_and_zero
7483 /* 5600 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7484 /* 5603 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7485 /* 5605 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7486 /* 5607 */ GIR_EraseRootFromParent_Done,
7487 /* 5608 */ // Label 270: @5608
7488 /* 5608 */ GIM_Reject,
7489 /* 5609 */ // Label 268: @5609
7490 /* 5609 */ GIM_Reject,
7491 /* 5610 */ // Label 14: @5610
7492 /* 5610 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5681),
7493 /* 5615 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7494 /* 5618 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5636), // Rule ID 111 //
7495 /* 5623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7496 /* 5626 */ // MIs[0] root
7497 /* 5626 */ // No operand predicates
7498 /* 5626 */ // MIs[0] srcs
7499 /* 5626 */ // No operand predicates
7500 /* 5626 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
7501 /* 5630 */ // Combiner Rule #85: propagate_undef_all_ops_build_vector
7502 /* 5630 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7503 /* 5633 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7504 /* 5635 */ GIR_EraseRootFromParent_Done,
7505 /* 5636 */ // Label 272: @5636
7506 /* 5636 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5647), // Rule ID 76 //
7507 /* 5641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
7508 /* 5644 */ // MIs[0] dst
7509 /* 5644 */ // No operand predicates
7510 /* 5644 */ // MIs[0] srcs
7511 /* 5644 */ // No operand predicates
7512 /* 5644 */ // Combiner Rule #72: extract_all_elts_from_build_vector
7513 /* 5644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
7514 /* 5647 */ // Label 273: @5647
7515 /* 5647 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5658), // Rule ID 151 //
7516 /* 5652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7517 /* 5655 */ // MIs[0] build_vector
7518 /* 5655 */ // No operand predicates
7519 /* 5655 */ // MIs[0] srcs
7520 /* 5655 */ // No operand predicates
7521 /* 5655 */ // Combiner Rule #106: buildvector_identity_fold_bv
7522 /* 5655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
7523 /* 5658 */ // Label 274: @5658
7524 /* 5658 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5669), // Rule ID 426 //
7525 /* 5663 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule294Enabled),
7526 /* 5666 */ // MIs[0] dst
7527 /* 5666 */ // No operand predicates
7528 /* 5666 */ // MIs[0] unused
7529 /* 5666 */ // No operand predicates
7530 /* 5666 */ // Combiner Rule #294: combine_use_vector_truncate
7531 /* 5666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7532 /* 5669 */ // Label 275: @5669
7533 /* 5669 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5680), // Rule ID 436 //
7534 /* 5674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule304Enabled),
7535 /* 5677 */ // MIs[0] dst
7536 /* 5677 */ // No operand predicates
7537 /* 5677 */ // MIs[0] unused
7538 /* 5677 */ // No operand predicates
7539 /* 5677 */ // Combiner Rule #304: combine_build_unmerge
7540 /* 5677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
7541 /* 5680 */ // Label 276: @5680
7542 /* 5680 */ GIM_Reject,
7543 /* 5681 */ // Label 271: @5681
7544 /* 5681 */ GIM_Reject,
7545 /* 5682 */ // Label 15: @5682
7546 /* 5682 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5696), // Rule ID 152 //
7547 /* 5687 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
7548 /* 5690 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7549 /* 5693 */ // MIs[0] build_vector
7550 /* 5693 */ // No operand predicates
7551 /* 5693 */ // MIs[0] srcs
7552 /* 5693 */ // No operand predicates
7553 /* 5693 */ // Combiner Rule #107: buildvector_identity_fold_bvt
7554 /* 5693 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
7555 /* 5696 */ // Label 277: @5696
7556 /* 5696 */ GIM_Reject,
7557 /* 5697 */ // Label 16: @5697
7558 /* 5697 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5711), // Rule ID 419 //
7559 /* 5702 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule287Enabled),
7560 /* 5705 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7561 /* 5708 */ // MIs[0] dst
7562 /* 5708 */ // No operand predicates
7563 /* 5708 */ // MIs[0] srcs
7564 /* 5708 */ // No operand predicates
7565 /* 5708 */ // Combiner Rule #287: combine_concat_vector
7566 /* 5708 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7567 /* 5711 */ // Label 278: @5711
7568 /* 5711 */ GIM_Reject,
7569 /* 5712 */ // Label 17: @5712
7570 /* 5712 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5744), // Rule ID 142 //
7571 /* 5717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
7572 /* 5720 */ // MIs[0] dst
7573 /* 5720 */ // No operand predicates
7574 /* 5720 */ // MIs[0] t
7575 /* 5720 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7576 /* 5724 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
7577 /* 5728 */ // MIs[1] ptr
7578 /* 5728 */ // No operand predicates
7579 /* 5728 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
7580 /* 5732 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7581 /* 5734 */ // Combiner Rule #98: i2p_to_p2i_same_size
7582 /* 5734 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
7583 /* 5737 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7584 /* 5739 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
7585 /* 5743 */ GIR_EraseRootFromParent_Done,
7586 /* 5744 */ // Label 279: @5744
7587 /* 5744 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5776), // Rule ID 143 //
7588 /* 5749 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
7589 /* 5752 */ // MIs[0] dst
7590 /* 5752 */ // No operand predicates
7591 /* 5752 */ // MIs[0] t
7592 /* 5752 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7593 /* 5756 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
7594 /* 5760 */ // MIs[1] ptr
7595 /* 5760 */ // No operand predicates
7596 /* 5760 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
7597 /* 5764 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7598 /* 5766 */ // Combiner Rule #99: i2p_to_p2i_zext
7599 /* 5766 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7600 /* 5769 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7601 /* 5771 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
7602 /* 5775 */ GIR_EraseRootFromParent_Done,
7603 /* 5776 */ // Label 280: @5776
7604 /* 5776 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5808), // Rule ID 144 //
7605 /* 5781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
7606 /* 5784 */ // MIs[0] dst
7607 /* 5784 */ // No operand predicates
7608 /* 5784 */ // MIs[0] t
7609 /* 5784 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7610 /* 5788 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
7611 /* 5792 */ // MIs[1] ptr
7612 /* 5792 */ // No operand predicates
7613 /* 5792 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
7614 /* 5796 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7615 /* 5798 */ // Combiner Rule #100: i2p_to_p2i_trunc
7616 /* 5798 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC),
7617 /* 5801 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7618 /* 5803 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
7619 /* 5807 */ GIR_EraseRootFromParent_Done,
7620 /* 5808 */ // Label 281: @5808
7621 /* 5808 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5832), // Rule ID 100 //
7622 /* 5813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7623 /* 5816 */ // MIs[0] dst
7624 /* 5816 */ // No operand predicates
7625 /* 5816 */ // MIs[0] __unary_undef_to_undef_match_0.x
7626 /* 5816 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7627 /* 5820 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7628 /* 5824 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7629 /* 5826 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
7630 /* 5826 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7631 /* 5829 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7632 /* 5831 */ GIR_EraseRootFromParent_Done,
7633 /* 5832 */ // Label 282: @5832
7634 /* 5832 */ GIM_Reject,
7635 /* 5833 */ // Label 18: @5833
7636 /* 5833 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5866), // Rule ID 141 //
7637 /* 5838 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7638 /* 5841 */ // MIs[0] dst
7639 /* 5841 */ // No operand predicates
7640 /* 5841 */ // MIs[0] mid
7641 /* 5841 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7642 /* 5845 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
7643 /* 5849 */ // MIs[1] x
7644 /* 5849 */ // No operand predicates
7645 /* 5849 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7646 /* 5853 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7647 /* 5858 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7648 /* 5860 */ // Combiner Rule #97: p2i_to_i2p
7649 /* 5860 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7650 /* 5865 */ GIR_EraseRootFromParent_Done,
7651 /* 5866 */ // Label 283: @5866
7652 /* 5866 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5890), // Rule ID 101 //
7653 /* 5871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7654 /* 5874 */ // MIs[0] dst
7655 /* 5874 */ // No operand predicates
7656 /* 5874 */ // MIs[0] __unary_undef_to_undef_match_0.x
7657 /* 5874 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7658 /* 5878 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7659 /* 5882 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7660 /* 5884 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
7661 /* 5884 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7662 /* 5887 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7663 /* 5889 */ GIR_EraseRootFromParent_Done,
7664 /* 5890 */ // Label 284: @5890
7665 /* 5890 */ GIM_Reject,
7666 /* 5891 */ // Label 19: @5891
7667 /* 5891 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5924), // Rule ID 155 //
7668 /* 5896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
7669 /* 5899 */ // MIs[0] dst
7670 /* 5899 */ // No operand predicates
7671 /* 5899 */ // MIs[0] src1
7672 /* 5899 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7673 /* 5903 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
7674 /* 5907 */ // MIs[1] src0
7675 /* 5907 */ // No operand predicates
7676 /* 5907 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
7677 /* 5911 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7678 /* 5916 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7679 /* 5918 */ // Combiner Rule #110: bitcast_bitcast_fold
7680 /* 5918 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7681 /* 5923 */ GIR_EraseRootFromParent_Done,
7682 /* 5924 */ // Label 285: @5924
7683 /* 5924 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5956), // Rule ID 156 //
7684 /* 5929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7685 /* 5932 */ // MIs[0] dst
7686 /* 5932 */ // No operand predicates
7687 /* 5932 */ // MIs[0] src1
7688 /* 5932 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7689 /* 5936 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
7690 /* 5940 */ // MIs[1] src0
7691 /* 5940 */ // No operand predicates
7692 /* 5940 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
7693 /* 5944 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7694 /* 5946 */ // Combiner Rule #111: bitcast_bitcast_to_bitcast
7695 /* 5946 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
7696 /* 5949 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7697 /* 5951 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
7698 /* 5955 */ GIR_EraseRootFromParent_Done,
7699 /* 5956 */ // Label 286: @5956
7700 /* 5956 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5980), // Rule ID 98 //
7701 /* 5961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7702 /* 5964 */ // MIs[0] dst
7703 /* 5964 */ // No operand predicates
7704 /* 5964 */ // MIs[0] __unary_undef_to_undef_match_0.x
7705 /* 5964 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7706 /* 5968 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7707 /* 5972 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7708 /* 5974 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
7709 /* 5974 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7710 /* 5977 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7711 /* 5979 */ GIR_EraseRootFromParent_Done,
7712 /* 5980 */ // Label 287: @5980
7713 /* 5980 */ GIM_Reject,
7714 /* 5981 */ // Label 20: @5981
7715 /* 5981 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(6010), // Rule ID 25 //
7716 /* 5986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7717 /* 5989 */ // MIs[0] dst
7718 /* 5989 */ // No operand predicates
7719 /* 5989 */ // MIs[0] src
7720 /* 5989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7721 /* 5993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
7722 /* 5997 */ // MIs[1] __idempotent_prop_match_0.x
7723 /* 5997 */ // No operand predicates
7724 /* 5997 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7725 /* 6002 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7726 /* 6004 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
7727 /* 6004 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7728 /* 6009 */ GIR_EraseRootFromParent_Done,
7729 /* 6010 */ // Label 288: @6010
7730 /* 6010 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(6033), // Rule ID 50 //
7731 /* 6015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
7732 /* 6018 */ // MIs[0] root
7733 /* 6018 */ // No operand predicates
7734 /* 6018 */ // MIs[0] src
7735 /* 6018 */ // No operand predicates
7736 /* 6018 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7737 /* 6022 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7738 /* 6027 */ // Combiner Rule #46: freeze_of_non_undef_non_poison
7739 /* 6027 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7740 /* 6032 */ GIR_EraseRootFromParent_Done,
7741 /* 6033 */ // Label 289: @6033
7742 /* 6033 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(6044), // Rule ID 51 //
7743 /* 6038 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
7744 /* 6041 */ // MIs[0] dst
7745 /* 6041 */ // No operand predicates
7746 /* 6041 */ // MIs[0] src
7747 /* 6041 */ // No operand predicates
7748 /* 6041 */ // Combiner Rule #47: push_freeze_to_prevent_poison_from_propagating
7749 /* 6041 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
7750 /* 6044 */ // Label 290: @6044
7751 /* 6044 */ GIM_Reject,
7752 /* 6045 */ // Label 21: @6045
7753 /* 6045 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(6066), // Rule ID 215 //
7754 /* 6050 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
7755 /* 6053 */ // MIs[0] dst
7756 /* 6053 */ // No operand predicates
7757 /* 6053 */ // MIs[0] src0
7758 /* 6053 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7759 /* 6057 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7760 /* 6061 */ // MIs[1] cst
7761 /* 6061 */ // No operand predicates
7762 /* 6061 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7763 /* 6063 */ // Combiner Rule #165: constant_fold_intrinsic_trunc
7764 /* 6063 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7765 /* 6066 */ // Label 291: @6066
7766 /* 6066 */ GIM_Reject,
7767 /* 6067 */ // Label 22: @6067
7768 /* 6067 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(6088), // Rule ID 216 //
7769 /* 6072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
7770 /* 6075 */ // MIs[0] dst
7771 /* 6075 */ // No operand predicates
7772 /* 6075 */ // MIs[0] src0
7773 /* 6075 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7774 /* 6079 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7775 /* 6083 */ // MIs[1] cst
7776 /* 6083 */ // No operand predicates
7777 /* 6083 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7778 /* 6085 */ // Combiner Rule #166: constant_fold_intrinsic_round
7779 /* 6085 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7780 /* 6088 */ // Label 292: @6088
7781 /* 6088 */ GIM_Reject,
7782 /* 6089 */ // Label 23: @6089
7783 /* 6089 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(6110), // Rule ID 217 //
7784 /* 6094 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
7785 /* 6097 */ // MIs[0] dst
7786 /* 6097 */ // No operand predicates
7787 /* 6097 */ // MIs[0] src0
7788 /* 6097 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7789 /* 6101 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7790 /* 6105 */ // MIs[1] cst
7791 /* 6105 */ // No operand predicates
7792 /* 6105 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7793 /* 6107 */ // Combiner Rule #167: constant_fold_intrinsic_roundeven
7794 /* 6107 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7795 /* 6110 */ // Label 293: @6110
7796 /* 6110 */ GIM_Reject,
7797 /* 6111 */ // Label 24: @6111
7798 /* 6111 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(6122), // Rule ID 77 //
7799 /* 6116 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7800 /* 6119 */ // MIs[0] root
7801 /* 6119 */ // No operand predicates
7802 /* 6119 */ // MIs[0] mi.ptr
7803 /* 6119 */ // No operand predicates
7804 /* 6119 */ // Combiner Rule #73: extending_loads @ [mi[0]]
7805 /* 6119 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7806 /* 6122 */ // Label 294: @6122
7807 /* 6122 */ GIM_Reject,
7808 /* 6123 */ // Label 25: @6123
7809 /* 6123 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(6134), // Rule ID 78 //
7810 /* 6128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7811 /* 6131 */ // MIs[0] root
7812 /* 6131 */ // No operand predicates
7813 /* 6131 */ // MIs[0] mi.ptr
7814 /* 6131 */ // No operand predicates
7815 /* 6131 */ // Combiner Rule #73: extending_loads @ [mi[1]]
7816 /* 6131 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7817 /* 6134 */ // Label 295: @6134
7818 /* 6134 */ GIM_Reject,
7819 /* 6135 */ // Label 26: @6135
7820 /* 6135 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(6146), // Rule ID 79 //
7821 /* 6140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7822 /* 6143 */ // MIs[0] root
7823 /* 6143 */ // No operand predicates
7824 /* 6143 */ // MIs[0] mi.ptr
7825 /* 6143 */ // No operand predicates
7826 /* 6143 */ // Combiner Rule #73: extending_loads @ [mi[2]]
7827 /* 6143 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7828 /* 6146 */ // Label 296: @6146
7829 /* 6146 */ GIM_Reject,
7830 /* 6147 */ // Label 27: @6147
7831 /* 6147 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(6170), // Rule ID 113 //
7832 /* 6152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
7833 /* 6155 */ // MIs[0] val
7834 /* 6155 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/0, // MIs[1]
7835 /* 6159 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7836 /* 6163 */ // MIs[0] ptr
7837 /* 6163 */ // No operand predicates
7838 /* 6163 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
7839 /* 6167 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7840 /* 6169 */ // Combiner Rule #87: erase_undef_store
7841 /* 6169 */ GIR_EraseRootFromParent_Done,
7842 /* 6170 */ // Label 297: @6170
7843 /* 6170 */ GIM_Reject,
7844 /* 6171 */ // Label 28: @6171
7845 /* 6171 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(6192), // Rule ID 64 //
7846 /* 6176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
7847 /* 6179 */ // MIs[0] root
7848 /* 6179 */ // No operand predicates
7849 /* 6179 */ // MIs[0] select
7850 /* 6179 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7851 /* 6183 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7852 /* 6187 */ // MIs[1] cond
7853 /* 6187 */ // No operand predicates
7854 /* 6187 */ // MIs[1] true
7855 /* 6187 */ // No operand predicates
7856 /* 6187 */ // MIs[1] false
7857 /* 6187 */ // No operand predicates
7858 /* 6187 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7859 /* 6189 */ // Combiner Rule #60: select_of_anyext
7860 /* 6189 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7861 /* 6192 */ // Label 298: @6192
7862 /* 6192 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(6213), // Rule ID 59 //
7863 /* 6197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
7864 /* 6200 */ // MIs[0] root
7865 /* 6200 */ // No operand predicates
7866 /* 6200 */ // MIs[0] second
7867 /* 6200 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7868 /* 6204 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7869 /* 6208 */ // MIs[1] src
7870 /* 6208 */ // No operand predicates
7871 /* 6208 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7872 /* 6210 */ // Combiner Rule #55: anyext_of_anyext
7873 /* 6210 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
7874 /* 6213 */ // Label 299: @6213
7875 /* 6213 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(6234), // Rule ID 61 //
7876 /* 6218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
7877 /* 6221 */ // MIs[0] root
7878 /* 6221 */ // No operand predicates
7879 /* 6221 */ // MIs[0] second
7880 /* 6221 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7881 /* 6225 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7882 /* 6229 */ // MIs[1] src
7883 /* 6229 */ // No operand predicates
7884 /* 6229 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7885 /* 6231 */ // Combiner Rule #57: anyext_of_sext
7886 /* 6231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
7887 /* 6234 */ // Label 300: @6234
7888 /* 6234 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(6255), // Rule ID 60 //
7889 /* 6239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
7890 /* 6242 */ // MIs[0] root
7891 /* 6242 */ // No operand predicates
7892 /* 6242 */ // MIs[0] second
7893 /* 6242 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7894 /* 6246 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7895 /* 6250 */ // MIs[1] src
7896 /* 6250 */ // No operand predicates
7897 /* 6250 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7898 /* 6252 */ // Combiner Rule #56: anyext_of_zext
7899 /* 6252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
7900 /* 6255 */ // Label 301: @6255
7901 /* 6255 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(6279), // Rule ID 99 //
7902 /* 6260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7903 /* 6263 */ // MIs[0] dst
7904 /* 6263 */ // No operand predicates
7905 /* 6263 */ // MIs[0] __unary_undef_to_undef_match_0.x
7906 /* 6263 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7907 /* 6267 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7908 /* 6271 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7909 /* 6273 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
7910 /* 6273 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7911 /* 6276 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7912 /* 6278 */ GIR_EraseRootFromParent_Done,
7913 /* 6279 */ // Label 302: @6279
7914 /* 6279 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(6290), // Rule ID 145 //
7915 /* 6284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
7916 /* 6287 */ // MIs[0] dst
7917 /* 6287 */ // No operand predicates
7918 /* 6287 */ // MIs[0] src
7919 /* 6287 */ // No operand predicates
7920 /* 6287 */ // Combiner Rule #101: anyext_trunc_fold
7921 /* 6287 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7922 /* 6290 */ // Label 303: @6290
7923 /* 6290 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(6301), // Rule ID 314 //
7924 /* 6295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
7925 /* 6298 */ // MIs[0] dst
7926 /* 6298 */ // No operand predicates
7927 /* 6298 */ // MIs[0] d.src
7928 /* 6298 */ // No operand predicates
7929 /* 6298 */ // Combiner Rule #213: constant_fold_cast_op @ [d[2]]
7930 /* 6298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7931 /* 6301 */ // Label 304: @6301
7932 /* 6301 */ GIM_Reject,
7933 /* 6302 */ // Label 29: @6302
7934 /* 6302 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(6323), // Rule ID 65 //
7935 /* 6307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
7936 /* 6310 */ // MIs[0] root
7937 /* 6310 */ // No operand predicates
7938 /* 6310 */ // MIs[0] select
7939 /* 6310 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7940 /* 6314 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7941 /* 6318 */ // MIs[1] cond
7942 /* 6318 */ // No operand predicates
7943 /* 6318 */ // MIs[1] true
7944 /* 6318 */ // No operand predicates
7945 /* 6318 */ // MIs[1] false
7946 /* 6318 */ // No operand predicates
7947 /* 6318 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7948 /* 6320 */ // Combiner Rule #61: select_of_truncate
7949 /* 6320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7950 /* 6323 */ // Label 305: @6323
7951 /* 6323 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(6352), // Rule ID 67 //
7952 /* 6328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
7953 /* 6331 */ // MIs[0] root
7954 /* 6331 */ // No operand predicates
7955 /* 6331 */ // MIs[0] binop
7956 /* 6331 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7957 /* 6335 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7958 /* 6339 */ // MIs[1] x
7959 /* 6339 */ // No operand predicates
7960 /* 6339 */ // MIs[1] const
7961 /* 6339 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7962 /* 6343 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7963 /* 6347 */ // MIs[2] imm
7964 /* 6347 */ // No operand predicates
7965 /* 6347 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7966 /* 6349 */ // Combiner Rule #63: narrow_binop_add
7967 /* 6349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7968 /* 6352 */ // Label 306: @6352
7969 /* 6352 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(6381), // Rule ID 70 //
7970 /* 6357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
7971 /* 6360 */ // MIs[0] root
7972 /* 6360 */ // No operand predicates
7973 /* 6360 */ // MIs[0] binop
7974 /* 6360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7975 /* 6364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7976 /* 6368 */ // MIs[1] x
7977 /* 6368 */ // No operand predicates
7978 /* 6368 */ // MIs[1] const
7979 /* 6368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7980 /* 6372 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7981 /* 6376 */ // MIs[2] imm
7982 /* 6376 */ // No operand predicates
7983 /* 6376 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7984 /* 6378 */ // Combiner Rule #66: narrow_binop_and
7985 /* 6378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7986 /* 6381 */ // Label 307: @6381
7987 /* 6381 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(6410), // Rule ID 69 //
7988 /* 6386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
7989 /* 6389 */ // MIs[0] root
7990 /* 6389 */ // No operand predicates
7991 /* 6389 */ // MIs[0] binop
7992 /* 6389 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7993 /* 6393 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
7994 /* 6397 */ // MIs[1] x
7995 /* 6397 */ // No operand predicates
7996 /* 6397 */ // MIs[1] const
7997 /* 6397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7998 /* 6401 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7999 /* 6405 */ // MIs[2] imm
8000 /* 6405 */ // No operand predicates
8001 /* 6405 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8002 /* 6407 */ // Combiner Rule #65: narrow_binop_mul
8003 /* 6407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
8004 /* 6410 */ // Label 308: @6410
8005 /* 6410 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(6439), // Rule ID 71 //
8006 /* 6415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
8007 /* 6418 */ // MIs[0] root
8008 /* 6418 */ // No operand predicates
8009 /* 6418 */ // MIs[0] binop
8010 /* 6418 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8011 /* 6422 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
8012 /* 6426 */ // MIs[1] x
8013 /* 6426 */ // No operand predicates
8014 /* 6426 */ // MIs[1] const
8015 /* 6426 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
8016 /* 6430 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8017 /* 6434 */ // MIs[2] imm
8018 /* 6434 */ // No operand predicates
8019 /* 6434 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8020 /* 6436 */ // Combiner Rule #67: narrow_binop_or
8021 /* 6436 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
8022 /* 6439 */ // Label 309: @6439
8023 /* 6439 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(6468), // Rule ID 68 //
8024 /* 6444 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
8025 /* 6447 */ // MIs[0] root
8026 /* 6447 */ // No operand predicates
8027 /* 6447 */ // MIs[0] binop
8028 /* 6447 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8029 /* 6451 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
8030 /* 6455 */ // MIs[1] x
8031 /* 6455 */ // No operand predicates
8032 /* 6455 */ // MIs[1] const
8033 /* 6455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
8034 /* 6459 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8035 /* 6463 */ // MIs[2] imm
8036 /* 6463 */ // No operand predicates
8037 /* 6463 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8038 /* 6465 */ // Combiner Rule #64: narrow_binop_sub
8039 /* 6465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
8040 /* 6468 */ // Label 310: @6468
8041 /* 6468 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(6500), // Rule ID 445 //
8042 /* 6473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule313Enabled),
8043 /* 6476 */ // MIs[0] dst
8044 /* 6476 */ // No operand predicates
8045 /* 6476 */ // MIs[0] min
8046 /* 6476 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8047 /* 6480 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
8048 /* 6484 */ // MIs[1] x
8049 /* 6484 */ // No operand predicates
8050 /* 6484 */ // MIs[1] y
8051 /* 6484 */ // No operand predicates
8052 /* 6484 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner53),
8053 /* 6488 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8054 /* 6490 */ // Combiner Rule #313: trunc_usatu
8055 /* 6490 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
8056 /* 6493 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8057 /* 6495 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8058 /* 6499 */ GIR_EraseRootFromParent_Done,
8059 /* 6500 */ // Label 311: @6500
8060 /* 6500 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(6529), // Rule ID 72 //
8061 /* 6505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
8062 /* 6508 */ // MIs[0] root
8063 /* 6508 */ // No operand predicates
8064 /* 6508 */ // MIs[0] binop
8065 /* 6508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8066 /* 6512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
8067 /* 6516 */ // MIs[1] x
8068 /* 6516 */ // No operand predicates
8069 /* 6516 */ // MIs[1] const
8070 /* 6516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
8071 /* 6520 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8072 /* 6524 */ // MIs[2] imm
8073 /* 6524 */ // No operand predicates
8074 /* 6524 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8075 /* 6526 */ // Combiner Rule #68: narrow_binop_xor
8076 /* 6526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
8077 /* 6529 */ // Label 312: @6529
8078 /* 6529 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(6550), // Rule ID 54 //
8079 /* 6534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
8080 /* 6537 */ // MIs[0] root
8081 /* 6537 */ // No operand predicates
8082 /* 6537 */ // MIs[0] ext
8083 /* 6537 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8084 /* 6541 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
8085 /* 6545 */ // MIs[1] src
8086 /* 6545 */ // No operand predicates
8087 /* 6545 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8088 /* 6547 */ // Combiner Rule #50: truncate_of_anyext
8089 /* 6547 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
8090 /* 6550 */ // Label 313: @6550
8091 /* 6550 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6574), // Rule ID 66 //
8092 /* 6555 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
8093 /* 6558 */ // MIs[0] root
8094 /* 6558 */ // No operand predicates
8095 /* 6558 */ // MIs[0] bv
8096 /* 6558 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8097 /* 6562 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
8098 /* 6566 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
8099 /* 6569 */ // MIs[1] unused
8100 /* 6569 */ // No operand predicates
8101 /* 6569 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8102 /* 6571 */ // Combiner Rule #62: buildvector_of_truncate
8103 /* 6571 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
8104 /* 6574 */ // Label 314: @6574
8105 /* 6574 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6595), // Rule ID 53 //
8106 /* 6579 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
8107 /* 6582 */ // MIs[0] root
8108 /* 6582 */ // No operand predicates
8109 /* 6582 */ // MIs[0] ext
8110 /* 6582 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8111 /* 6586 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
8112 /* 6590 */ // MIs[1] src
8113 /* 6590 */ // No operand predicates
8114 /* 6590 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8115 /* 6592 */ // Combiner Rule #49: truncate_of_sext
8116 /* 6592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
8117 /* 6595 */ // Label 315: @6595
8118 /* 6595 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6616), // Rule ID 52 //
8119 /* 6600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
8120 /* 6603 */ // MIs[0] root
8121 /* 6603 */ // No operand predicates
8122 /* 6603 */ // MIs[0] ext
8123 /* 6603 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8124 /* 6607 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
8125 /* 6611 */ // MIs[1] src
8126 /* 6611 */ // No operand predicates
8127 /* 6611 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8128 /* 6613 */ // Combiner Rule #48: truncate_of_zext
8129 /* 6613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
8130 /* 6616 */ // Label 316: @6616
8131 /* 6616 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6640), // Rule ID 97 //
8132 /* 6621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
8133 /* 6624 */ // MIs[0] dst
8134 /* 6624 */ // No operand predicates
8135 /* 6624 */ // MIs[0] __unary_undef_to_undef_match_0.x
8136 /* 6624 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8137 /* 6628 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8138 /* 6632 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8139 /* 6634 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
8140 /* 6634 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8141 /* 6637 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8142 /* 6639 */ GIR_EraseRootFromParent_Done,
8143 /* 6640 */ // Label 317: @6640
8144 /* 6640 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6661), // Rule ID 73 //
8145 /* 6645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
8146 /* 6648 */ // MIs[0] root
8147 /* 6648 */ // No operand predicates
8148 /* 6648 */ // MIs[0] int
8149 /* 6648 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8150 /* 6652 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8151 /* 6656 */ // MIs[1] imm
8152 /* 6656 */ // No operand predicates
8153 /* 6656 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8154 /* 6658 */ // Combiner Rule #69: integer_of_truncate
8155 /* 6658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
8156 /* 6661 */ // Label 318: @6661
8157 /* 6661 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6672), // Rule ID 153 //
8158 /* 6666 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
8159 /* 6669 */ // MIs[0] dst
8160 /* 6669 */ // No operand predicates
8161 /* 6669 */ // MIs[0] src
8162 /* 6669 */ // No operand predicates
8163 /* 6669 */ // Combiner Rule #108: trunc_buildvector_fold
8164 /* 6669 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8165 /* 6672 */ // Label 319: @6672
8166 /* 6672 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6683), // Rule ID 154 //
8167 /* 6677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
8168 /* 6680 */ // MIs[0] dst
8169 /* 6680 */ // No operand predicates
8170 /* 6680 */ // MIs[0] src
8171 /* 6680 */ // No operand predicates
8172 /* 6680 */ // Combiner Rule #109: trunc_lshr_buildvector_fold
8173 /* 6680 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
8174 /* 6683 */ // Label 320: @6683
8175 /* 6683 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6694), // Rule ID 204 //
8176 /* 6688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
8177 /* 6691 */ // MIs[0] dst
8178 /* 6691 */ // No operand predicates
8179 /* 6691 */ // MIs[0] src
8180 /* 6691 */ // No operand predicates
8181 /* 6691 */ // Combiner Rule #154: trunc_shift
8182 /* 6691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
8183 /* 6694 */ // Label 321: @6694
8184 /* 6694 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6705), // Rule ID 443 //
8185 /* 6699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule311Enabled),
8186 /* 6702 */ // MIs[0] dst
8187 /* 6702 */ // No operand predicates
8188 /* 6702 */ // MIs[0] src
8189 /* 6702 */ // No operand predicates
8190 /* 6702 */ // Combiner Rule #311: trunc_ssats
8191 /* 6702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
8192 /* 6705 */ // Label 322: @6705
8193 /* 6705 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6716), // Rule ID 444 //
8194 /* 6710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule312Enabled),
8195 /* 6713 */ // MIs[0] dst
8196 /* 6713 */ // No operand predicates
8197 /* 6713 */ // MIs[0] src
8198 /* 6713 */ // No operand predicates
8199 /* 6713 */ // Combiner Rule #312: trunc_ssatu
8200 /* 6713 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
8201 /* 6716 */ // Label 323: @6716
8202 /* 6716 */ GIM_Reject,
8203 /* 6717 */ // Label 30: @6717
8204 /* 6717 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6749), // Rule ID 446 //
8205 /* 6722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule314Enabled),
8206 /* 6725 */ // MIs[0] dst
8207 /* 6725 */ // No operand predicates
8208 /* 6725 */ // MIs[0] src
8209 /* 6725 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8210 /* 6729 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
8211 /* 6733 */ // MIs[1] x
8212 /* 6733 */ // No operand predicates
8213 /* 6733 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner54),
8214 /* 6737 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8215 /* 6739 */ // Combiner Rule #314: truncusatu_to_fptouisat
8216 /* 6739 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
8217 /* 6742 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8218 /* 6744 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8219 /* 6748 */ GIR_EraseRootFromParent_Done,
8220 /* 6749 */ // Label 324: @6749
8221 /* 6749 */ GIM_Reject,
8222 /* 6750 */ // Label 31: @6750
8223 /* 6750 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6771), // Rule ID 58 //
8224 /* 6755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
8225 /* 6758 */ // MIs[0] root
8226 /* 6758 */ // No operand predicates
8227 /* 6758 */ // MIs[0] second
8228 /* 6758 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8229 /* 6762 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
8230 /* 6766 */ // MIs[1] src
8231 /* 6766 */ // No operand predicates
8232 /* 6766 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8233 /* 6768 */ // Combiner Rule #54: sext_of_anyext
8234 /* 6768 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
8235 /* 6771 */ // Label 325: @6771
8236 /* 6771 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6792), // Rule ID 57 //
8237 /* 6776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
8238 /* 6779 */ // MIs[0] root
8239 /* 6779 */ // No operand predicates
8240 /* 6779 */ // MIs[0] second
8241 /* 6779 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8242 /* 6783 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
8243 /* 6787 */ // MIs[1] src
8244 /* 6787 */ // No operand predicates
8245 /* 6787 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8246 /* 6789 */ // Combiner Rule #53: sext_of_sext
8247 /* 6789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
8248 /* 6792 */ // Label 326: @6792
8249 /* 6792 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6813), // Rule ID 420 //
8250 /* 6797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule288Enabled),
8251 /* 6800 */ // MIs[0] root
8252 /* 6800 */ // No operand predicates
8253 /* 6800 */ // MIs[0] src
8254 /* 6800 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8255 /* 6804 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8256 /* 6808 */ // MIs[1] x
8257 /* 6808 */ // No operand predicates
8258 /* 6808 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8259 /* 6810 */ // Combiner Rule #288: sext_trunc
8260 /* 6810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
8261 /* 6813 */ // Label 327: @6813
8262 /* 6813 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6824), // Rule ID 313 //
8263 /* 6818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
8264 /* 6821 */ // MIs[0] dst
8265 /* 6821 */ // No operand predicates
8266 /* 6821 */ // MIs[0] d.src
8267 /* 6821 */ // No operand predicates
8268 /* 6821 */ // Combiner Rule #213: constant_fold_cast_op @ [d[1]]
8269 /* 6821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8270 /* 6824 */ // Label 328: @6824
8271 /* 6824 */ GIM_Reject,
8272 /* 6825 */ // Label 32: @6825
8273 /* 6825 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6846), // Rule ID 62 //
8274 /* 6830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
8275 /* 6833 */ // MIs[0] dst
8276 /* 6833 */ // No operand predicates
8277 /* 6833 */ // MIs[0] x
8278 /* 6833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8279 /* 6837 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
8280 /* 6841 */ // MIs[1] src
8281 /* 6841 */ // No operand predicates
8282 /* 6841 */ // MIs[1] a
8283 /* 6841 */ // No operand predicates
8284 /* 6841 */ // MIs[0] b
8285 /* 6841 */ // No operand predicates
8286 /* 6841 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8287 /* 6843 */ // Combiner Rule #58: sext_inreg_of_sext_inreg
8288 /* 6843 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
8289 /* 6846 */ // Label 329: @6846
8290 /* 6846 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6886), // Rule ID 198 //
8291 /* 6851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
8292 /* 6854 */ // MIs[0] dst
8293 /* 6854 */ // No operand predicates
8294 /* 6854 */ // MIs[0] tmp4
8295 /* 6854 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8296 /* 6858 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
8297 /* 6862 */ // MIs[1] tmp2
8298 /* 6862 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8299 /* 6866 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
8300 /* 6870 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
8301 /* 6873 */ // MIs[2] tmp3
8302 /* 6873 */ // No operand predicates
8303 /* 6873 */ // MIs[2] tmp1
8304 /* 6873 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
8305 /* 6877 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
8306 /* 6881 */ // MIs[3] src
8307 /* 6881 */ // No operand predicates
8308 /* 6881 */ // MIs[0] amt
8309 /* 6881 */ // No operand predicates
8310 /* 6881 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8311 /* 6883 */ // Combiner Rule #148: redundant_aext_unmerge_sext_inreg
8312 /* 6883 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
8313 /* 6886 */ // Label 330: @6886
8314 /* 6886 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6918), // Rule ID 196 //
8315 /* 6891 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8316 /* 6894 */ // MIs[0] dst
8317 /* 6894 */ // No operand predicates
8318 /* 6894 */ // MIs[0] tmp
8319 /* 6894 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8320 /* 6898 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
8321 /* 6902 */ // MIs[1] src
8322 /* 6902 */ // No operand predicates
8323 /* 6902 */ // MIs[0] amt
8324 /* 6902 */ // No operand predicates
8325 /* 6902 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
8326 /* 6906 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8327 /* 6908 */ // Combiner Rule #146: redundant_aext_sext_inreg
8328 /* 6908 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8329 /* 6911 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8330 /* 6913 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
8331 /* 6917 */ GIR_EraseRootFromParent_Done,
8332 /* 6918 */ // Label 331: @6918
8333 /* 6918 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6958), // Rule ID 197 //
8334 /* 6923 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
8335 /* 6926 */ // MIs[0] dst
8336 /* 6926 */ // No operand predicates
8337 /* 6926 */ // MIs[0] tmp4
8338 /* 6926 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8339 /* 6930 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
8340 /* 6934 */ // MIs[1] tmp2
8341 /* 6934 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8342 /* 6938 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
8343 /* 6942 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
8344 /* 6945 */ // MIs[2] tmp3
8345 /* 6945 */ // No operand predicates
8346 /* 6945 */ // MIs[2] tmp1
8347 /* 6945 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
8348 /* 6949 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8349 /* 6953 */ // MIs[3] src
8350 /* 6953 */ // No operand predicates
8351 /* 6953 */ // MIs[0] amt
8352 /* 6953 */ // No operand predicates
8353 /* 6953 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8354 /* 6955 */ // Combiner Rule #147: redundant_zext_unmerge_sext_inreg
8355 /* 6955 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
8356 /* 6958 */ // Label 332: @6958
8357 /* 6958 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6990), // Rule ID 195 //
8358 /* 6963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
8359 /* 6966 */ // MIs[0] dst
8360 /* 6966 */ // No operand predicates
8361 /* 6966 */ // MIs[0] tmp
8362 /* 6966 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8363 /* 6970 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
8364 /* 6974 */ // MIs[1] src
8365 /* 6974 */ // No operand predicates
8366 /* 6974 */ // MIs[0] amt
8367 /* 6974 */ // No operand predicates
8368 /* 6974 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
8369 /* 6978 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8370 /* 6980 */ // Combiner Rule #145: redundant_zext_sext_inreg
8371 /* 6980 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8372 /* 6983 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8373 /* 6985 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
8374 /* 6989 */ GIR_EraseRootFromParent_Done,
8375 /* 6990 */ // Label 333: @6990
8376 /* 6990 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(7013), // Rule ID 194 //
8377 /* 6995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
8378 /* 6998 */ // MIs[0] dst
8379 /* 6998 */ // No operand predicates
8380 /* 6998 */ // MIs[0] src
8381 /* 6998 */ // No operand predicates
8382 /* 6998 */ // MIs[0] sz
8383 /* 6998 */ // No operand predicates
8384 /* 6998 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
8385 /* 7002 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8386 /* 7007 */ // Combiner Rule #144: redundant_sext_inreg
8387 /* 7007 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8388 /* 7012 */ GIR_EraseRootFromParent_Done,
8389 /* 7013 */ // Label 334: @7013
8390 /* 7013 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(7024), // Rule ID 182 //
8391 /* 7018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
8392 /* 7021 */ // MIs[0] dst
8393 /* 7021 */ // No operand predicates
8394 /* 7021 */ // MIs[0] src
8395 /* 7021 */ // No operand predicates
8396 /* 7021 */ // MIs[0] sz
8397 /* 7021 */ // No operand predicates
8398 /* 7021 */ // Combiner Rule #132: sext_inreg_of_load
8399 /* 7021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
8400 /* 7024 */ // Label 335: @7024
8401 /* 7024 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(7035), // Rule ID 203 //
8402 /* 7029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
8403 /* 7032 */ // MIs[0] dst
8404 /* 7032 */ // No operand predicates
8405 /* 7032 */ // MIs[0] src
8406 /* 7032 */ // No operand predicates
8407 /* 7032 */ // MIs[0] imm
8408 /* 7032 */ // No operand predicates
8409 /* 7032 */ // Combiner Rule #153: sext_inreg_to_zext_inreg
8410 /* 7032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
8411 /* 7035 */ // Label 336: @7035
8412 /* 7035 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(7046), // Rule ID 274 //
8413 /* 7040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
8414 /* 7043 */ // MIs[0] dst
8415 /* 7043 */ // No operand predicates
8416 /* 7043 */ // MIs[0] src
8417 /* 7043 */ // No operand predicates
8418 /* 7043 */ // MIs[0] sz
8419 /* 7043 */ // No operand predicates
8420 /* 7043 */ // Combiner Rule #206: bitfield_extract_from_sext_inreg
8421 /* 7043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
8422 /* 7046 */ // Label 337: @7046
8423 /* 7046 */ GIM_Reject,
8424 /* 7047 */ // Label 33: @7047
8425 /* 7047 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(7068), // Rule ID 63 //
8426 /* 7052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
8427 /* 7055 */ // MIs[0] root
8428 /* 7055 */ // No operand predicates
8429 /* 7055 */ // MIs[0] select
8430 /* 7055 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8431 /* 7059 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
8432 /* 7063 */ // MIs[1] cond
8433 /* 7063 */ // No operand predicates
8434 /* 7063 */ // MIs[1] true
8435 /* 7063 */ // No operand predicates
8436 /* 7063 */ // MIs[1] false
8437 /* 7063 */ // No operand predicates
8438 /* 7063 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8439 /* 7065 */ // Combiner Rule #59: select_of_zext
8440 /* 7065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
8441 /* 7068 */ // Label 338: @7068
8442 /* 7068 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(7089), // Rule ID 56 //
8443 /* 7073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
8444 /* 7076 */ // MIs[0] root
8445 /* 7076 */ // No operand predicates
8446 /* 7076 */ // MIs[0] second
8447 /* 7076 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8448 /* 7080 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
8449 /* 7084 */ // MIs[1] src
8450 /* 7084 */ // No operand predicates
8451 /* 7084 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8452 /* 7086 */ // Combiner Rule #52: zext_of_anyext
8453 /* 7086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
8454 /* 7089 */ // Label 339: @7089
8455 /* 7089 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(7116), // Rule ID 421 //
8456 /* 7094 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule289Enabled),
8457 /* 7097 */ // MIs[0] root
8458 /* 7097 */ // No operand predicates
8459 /* 7097 */ // MIs[0] src
8460 /* 7097 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8461 /* 7101 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8462 /* 7105 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
8463 /* 7111 */ // MIs[1] x
8464 /* 7111 */ // No operand predicates
8465 /* 7111 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8466 /* 7113 */ // Combiner Rule #289: zext_trunc
8467 /* 7113 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
8468 /* 7116 */ // Label 340: @7116
8469 /* 7116 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(7137), // Rule ID 55 //
8470 /* 7121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
8471 /* 7124 */ // MIs[0] root
8472 /* 7124 */ // No operand predicates
8473 /* 7124 */ // MIs[0] second
8474 /* 7124 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8475 /* 7128 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
8476 /* 7132 */ // MIs[1] src
8477 /* 7132 */ // No operand predicates
8478 /* 7132 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8479 /* 7134 */ // Combiner Rule #51: zext_of_zext
8480 /* 7134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
8481 /* 7137 */ // Label 341: @7137
8482 /* 7137 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(7154), // Rule ID 422 //
8483 /* 7142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule290Enabled),
8484 /* 7145 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
8485 /* 7151 */ // MIs[0] root
8486 /* 7151 */ // No operand predicates
8487 /* 7151 */ // MIs[0] x
8488 /* 7151 */ // No operand predicates
8489 /* 7151 */ // Combiner Rule #290: nneg_zext
8490 /* 7151 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8491 /* 7154 */ // Label 342: @7154
8492 /* 7154 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(7165), // Rule ID 202 //
8493 /* 7159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
8494 /* 7162 */ // MIs[0] dst
8495 /* 7162 */ // No operand predicates
8496 /* 7162 */ // MIs[0] src
8497 /* 7162 */ // No operand predicates
8498 /* 7162 */ // Combiner Rule #152: zext_trunc_fold
8499 /* 7162 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
8500 /* 7165 */ // Label 343: @7165
8501 /* 7165 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(7176), // Rule ID 312 //
8502 /* 7170 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
8503 /* 7173 */ // MIs[0] dst
8504 /* 7173 */ // No operand predicates
8505 /* 7173 */ // MIs[0] d.src
8506 /* 7173 */ // No operand predicates
8507 /* 7173 */ // Combiner Rule #213: constant_fold_cast_op @ [d[0]]
8508 /* 7173 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8509 /* 7176 */ // Label 344: @7176
8510 /* 7176 */ GIM_Reject,
8511 /* 7177 */ // Label 34: @7177
8512 /* 7177 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(7255), // Rule ID 272 //
8513 /* 7182 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8514 /* 7185 */ // MIs[0] dst
8515 /* 7185 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8516 /* 7189 */ // MIs[0] binop_dst
8517 /* 7189 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8518 /* 7193 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8519 /* 7197 */ // MIs[1] x
8520 /* 7197 */ // No operand predicates
8521 /* 7197 */ // MIs[1] c1
8522 /* 7197 */ // No operand predicates
8523 /* 7197 */ // MIs[0] c2
8524 /* 7197 */ // No operand predicates
8525 /* 7197 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
8526 /* 7201 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8527 /* 7203 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8528 /* 7206 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8529 /* 7209 */ // Combiner Rule #204: commute_shift_add
8530 /* 7209 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8531 /* 7212 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8532 /* 7217 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8533 /* 7221 */ GIR_RootToRootCopy, /*OpIdx*/2, // c2
8534 /* 7223 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8535 /* 7227 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8536 /* 7232 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // c1
8537 /* 7236 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // c2
8538 /* 7240 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
8539 /* 7244 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8540 /* 7248 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8541 /* 7251 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
8542 /* 7254 */ GIR_EraseRootFromParent_Done,
8543 /* 7255 */ // Label 345: @7255
8544 /* 7255 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(7333), // Rule ID 273 //
8545 /* 7260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
8546 /* 7263 */ // MIs[0] dst
8547 /* 7263 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8548 /* 7267 */ // MIs[0] binop_dst
8549 /* 7267 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8550 /* 7271 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
8551 /* 7275 */ // MIs[1] x
8552 /* 7275 */ // No operand predicates
8553 /* 7275 */ // MIs[1] c1
8554 /* 7275 */ // No operand predicates
8555 /* 7275 */ // MIs[0] c2
8556 /* 7275 */ // No operand predicates
8557 /* 7275 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner40),
8558 /* 7279 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8559 /* 7281 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8560 /* 7284 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8561 /* 7287 */ // Combiner Rule #205: commute_shift_or
8562 /* 7287 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8563 /* 7290 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8564 /* 7295 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8565 /* 7299 */ GIR_RootToRootCopy, /*OpIdx*/2, // c2
8566 /* 7301 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8567 /* 7305 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8568 /* 7310 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // c1
8569 /* 7314 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // c2
8570 /* 7318 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
8571 /* 7322 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8572 /* 7326 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8573 /* 7329 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
8574 /* 7332 */ GIR_EraseRootFromParent_Done,
8575 /* 7333 */ // Label 346: @7333
8576 /* 7333 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(7368), // Rule ID 48 //
8577 /* 7338 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
8578 /* 7341 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
8579 /* 7347 */ // MIs[0] root
8580 /* 7347 */ // No operand predicates
8581 /* 7347 */ // MIs[0] left
8582 /* 7347 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8583 /* 7351 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
8584 /* 7355 */ // MIs[1] imm
8585 /* 7355 */ // No operand predicates
8586 /* 7355 */ // MIs[0] x
8587 /* 7355 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8588 /* 7359 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8589 /* 7363 */ // MIs[2] imm1
8590 /* 7363 */ // No operand predicates
8591 /* 7363 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8592 /* 7365 */ // Combiner Rule #44: shl_of_vscale
8593 /* 7365 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8594 /* 7368 */ // Label 347: @7368
8595 /* 7368 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(7389), // Rule ID 90 //
8596 /* 7373 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
8597 /* 7376 */ // MIs[0] dst
8598 /* 7376 */ // No operand predicates
8599 /* 7376 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
8600 /* 7376 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8601 /* 7380 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8602 /* 7384 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
8603 /* 7384 */ // No operand predicates
8604 /* 7384 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8605 /* 7386 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[0]]
8606 /* 7386 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
8607 /* 7389 */ // Label 348: @7389
8608 /* 7389 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(7413), // Rule ID 93 //
8609 /* 7394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8610 /* 7397 */ // MIs[0] dst
8611 /* 7397 */ // No operand predicates
8612 /* 7397 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8613 /* 7397 */ // No operand predicates
8614 /* 7397 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8615 /* 7397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8616 /* 7401 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8617 /* 7405 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8618 /* 7407 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[0]]
8619 /* 7407 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8620 /* 7410 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8621 /* 7412 */ GIR_EraseRootFromParent_Done,
8622 /* 7413 */ // Label 349: @7413
8623 /* 7413 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(7436), // Rule ID 122 //
8624 /* 7418 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
8625 /* 7421 */ // MIs[0] dst
8626 /* 7421 */ // No operand predicates
8627 /* 7421 */ // MIs[0] lhs
8628 /* 7421 */ // No operand predicates
8629 /* 7421 */ // MIs[0] Operand 2
8630 /* 7421 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8631 /* 7425 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8632 /* 7430 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[4]]
8633 /* 7430 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8634 /* 7435 */ GIR_EraseRootFromParent_Done,
8635 /* 7436 */ // Label 350: @7436
8636 /* 7436 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(7459), // Rule ID 132 //
8637 /* 7441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
8638 /* 7444 */ // MIs[0] dst
8639 /* 7444 */ // No operand predicates
8640 /* 7444 */ // MIs[0] zero
8641 /* 7444 */ // No operand predicates
8642 /* 7444 */ // MIs[0] rhs
8643 /* 7444 */ // No operand predicates
8644 /* 7444 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8645 /* 7448 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8646 /* 7453 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
8647 /* 7453 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8648 /* 7458 */ GIR_EraseRootFromParent_Done,
8649 /* 7459 */ // Label 351: @7459
8650 /* 7459 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(7470), // Rule ID 167 //
8651 /* 7464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
8652 /* 7467 */ // MIs[0] root
8653 /* 7467 */ // No operand predicates
8654 /* 7467 */ // MIs[0] mi.shifted
8655 /* 7467 */ // No operand predicates
8656 /* 7467 */ // MIs[0] mi.amt
8657 /* 7467 */ // No operand predicates
8658 /* 7467 */ // Combiner Rule #119: shifts_too_big @ [mi[0]]
8659 /* 7467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
8660 /* 7470 */ // Label 352: @7470
8661 /* 7470 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(7481), // Rule ID 183 //
8662 /* 7475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
8663 /* 7478 */ // MIs[0] dst
8664 /* 7478 */ // No operand predicates
8665 /* 7478 */ // MIs[0] src0
8666 /* 7478 */ // No operand predicates
8667 /* 7478 */ // MIs[0] src1
8668 /* 7478 */ // No operand predicates
8669 /* 7478 */ // Combiner Rule #133: reduce_shl_of_extend
8670 /* 7478 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
8671 /* 7481 */ // Label 353: @7481
8672 /* 7481 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(7492), // Rule ID 244 //
8673 /* 7486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
8674 /* 7489 */ // MIs[0] d
8675 /* 7489 */ // No operand predicates
8676 /* 7489 */ // MIs[0] mi.base
8677 /* 7489 */ // No operand predicates
8678 /* 7489 */ // MIs[0] mi.amt
8679 /* 7489 */ // No operand predicates
8680 /* 7489 */ // Combiner Rule #190: shift_immed_chain @ [mi[0]]
8681 /* 7489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
8682 /* 7492 */ // Label 354: @7492
8683 /* 7492 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(7503), // Rule ID 249 //
8684 /* 7497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8685 /* 7500 */ // MIs[0] d
8686 /* 7500 */ // No operand predicates
8687 /* 7500 */ // MIs[0] mi.base
8688 /* 7500 */ // No operand predicates
8689 /* 7500 */ // MIs[0] mi.amt
8690 /* 7500 */ // No operand predicates
8691 /* 7500 */ // Combiner Rule #191: shift_of_shifted_logic_chain @ [mi[0]]
8692 /* 7500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
8693 /* 7503 */ // Label 355: @7503
8694 /* 7503 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(7514), // Rule ID 287 //
8695 /* 7508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
8696 /* 7511 */ // MIs[0] d
8697 /* 7511 */ // No operand predicates
8698 /* 7511 */ // MIs[0] mi.src0
8699 /* 7511 */ // No operand predicates
8700 /* 7511 */ // MIs[0] mi.src1
8701 /* 7511 */ // No operand predicates
8702 /* 7511 */ // Combiner Rule #210: constant_fold_binop @ [mi[7]]
8703 /* 7511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
8704 /* 7514 */ // Label 356: @7514
8705 /* 7514 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(7525), // Rule ID 353 //
8706 /* 7519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
8707 /* 7522 */ // MIs[0] root
8708 /* 7522 */ // No operand predicates
8709 /* 7522 */ // MIs[0] mi.x
8710 /* 7522 */ // No operand predicates
8711 /* 7522 */ // MIs[0] mi.y
8712 /* 7522 */ // No operand predicates
8713 /* 7522 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[12]]
8714 /* 7522 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
8715 /* 7525 */ // Label 357: @7525
8716 /* 7525 */ GIM_Reject,
8717 /* 7526 */ // Label 35: @7526
8718 /* 7526 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(7615), // Rule ID 464 //
8719 /* 7531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule329Enabled),
8720 /* 7534 */ // MIs[0] dst
8721 /* 7534 */ // No operand predicates
8722 /* 7534 */ // MIs[0] sum
8723 /* 7534 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8724 /* 7538 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8725 /* 7542 */ // MIs[1] inner
8726 /* 7542 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8727 /* 7546 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8728 /* 7550 */ // MIs[2] ext1
8729 /* 7550 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8730 /* 7554 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8731 /* 7558 */ // MIs[3] x
8732 /* 7558 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8733 /* 7562 */ // MIs[2] ext2
8734 /* 7562 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8735 /* 7566 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
8736 /* 7570 */ // MIs[4] y
8737 /* 7570 */ // No operand predicates
8738 /* 7570 */ // MIs[1] Operand 2
8739 /* 7570 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8740 /* 7574 */ // MIs[0] Operand 2
8741 /* 7574 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8742 /* 7578 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner62),
8743 /* 7582 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8744 /* 7584 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8745 /* 7587 */ // Combiner Rule #329: avgceil_u_match
8746 /* 7587 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
8747 /* 7590 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8748 /* 7595 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8749 /* 7599 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8750 /* 7603 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
8751 /* 7607 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8752 /* 7611 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8753 /* 7614 */ GIR_EraseRootFromParent_Done,
8754 /* 7615 */ // Label 358: @7615
8755 /* 7615 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(7692), // Rule ID 462 //
8756 /* 7620 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule327Enabled),
8757 /* 7623 */ // MIs[0] dst
8758 /* 7623 */ // No operand predicates
8759 /* 7623 */ // MIs[0] sum
8760 /* 7623 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8761 /* 7627 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8762 /* 7631 */ // MIs[1] ext1
8763 /* 7631 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8764 /* 7635 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
8765 /* 7639 */ // MIs[2] x
8766 /* 7639 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8767 /* 7643 */ // MIs[1] ext2
8768 /* 7643 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8769 /* 7647 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8770 /* 7651 */ // MIs[3] y
8771 /* 7651 */ // No operand predicates
8772 /* 7651 */ // MIs[0] Operand 2
8773 /* 7651 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8774 /* 7655 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner60),
8775 /* 7659 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8776 /* 7661 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8777 /* 7664 */ // Combiner Rule #327: avgfloor_u_match
8778 /* 7664 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
8779 /* 7667 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8780 /* 7672 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8781 /* 7676 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8782 /* 7680 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
8783 /* 7684 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8784 /* 7688 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8785 /* 7691 */ GIR_EraseRootFromParent_Done,
8786 /* 7692 */ // Label 359: @7692
8787 /* 7692 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(7721), // Rule ID 447 //
8788 /* 7697 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule315Enabled),
8789 /* 7700 */ // MIs[0] dst
8790 /* 7700 */ // No operand predicates
8791 /* 7700 */ // MIs[0] d2
8792 /* 7700 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8793 /* 7704 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8794 /* 7708 */ // MIs[1] d1
8795 /* 7708 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8796 /* 7712 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
8797 /* 7716 */ // MIs[2] x
8798 /* 7716 */ // No operand predicates
8799 /* 7716 */ // MIs[2] y
8800 /* 7716 */ // No operand predicates
8801 /* 7716 */ // MIs[0] z
8802 /* 7716 */ // No operand predicates
8803 /* 7716 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8804 /* 7718 */ // Combiner Rule #315: lshr_of_trunc_of_lshr
8805 /* 7718 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
8806 /* 7721 */ // Label 360: @7721
8807 /* 7721 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7745), // Rule ID 95 //
8808 /* 7726 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8809 /* 7729 */ // MIs[0] dst
8810 /* 7729 */ // No operand predicates
8811 /* 7729 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8812 /* 7729 */ // No operand predicates
8813 /* 7729 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8814 /* 7729 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8815 /* 7733 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8816 /* 7737 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8817 /* 7739 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[2]]
8818 /* 7739 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8819 /* 7742 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8820 /* 7744 */ GIR_EraseRootFromParent_Done,
8821 /* 7745 */ // Label 361: @7745
8822 /* 7745 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7768), // Rule ID 124 //
8823 /* 7750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
8824 /* 7753 */ // MIs[0] dst
8825 /* 7753 */ // No operand predicates
8826 /* 7753 */ // MIs[0] lhs
8827 /* 7753 */ // No operand predicates
8828 /* 7753 */ // MIs[0] Operand 2
8829 /* 7753 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8830 /* 7757 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8831 /* 7762 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[6]]
8832 /* 7762 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8833 /* 7767 */ GIR_EraseRootFromParent_Done,
8834 /* 7768 */ // Label 362: @7768
8835 /* 7768 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7791), // Rule ID 133 //
8836 /* 7773 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
8837 /* 7776 */ // MIs[0] dst
8838 /* 7776 */ // No operand predicates
8839 /* 7776 */ // MIs[0] zero
8840 /* 7776 */ // No operand predicates
8841 /* 7776 */ // MIs[0] rhs
8842 /* 7776 */ // No operand predicates
8843 /* 7776 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8844 /* 7780 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8845 /* 7785 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
8846 /* 7785 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8847 /* 7790 */ GIR_EraseRootFromParent_Done,
8848 /* 7791 */ // Label 363: @7791
8849 /* 7791 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7802), // Rule ID 169 //
8850 /* 7796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
8851 /* 7799 */ // MIs[0] root
8852 /* 7799 */ // No operand predicates
8853 /* 7799 */ // MIs[0] mi.shifted
8854 /* 7799 */ // No operand predicates
8855 /* 7799 */ // MIs[0] mi.amt
8856 /* 7799 */ // No operand predicates
8857 /* 7799 */ // Combiner Rule #119: shifts_too_big @ [mi[2]]
8858 /* 7799 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
8859 /* 7802 */ // Label 364: @7802
8860 /* 7802 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7813), // Rule ID 246 //
8861 /* 7807 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
8862 /* 7810 */ // MIs[0] d
8863 /* 7810 */ // No operand predicates
8864 /* 7810 */ // MIs[0] mi.base
8865 /* 7810 */ // No operand predicates
8866 /* 7810 */ // MIs[0] mi.amt
8867 /* 7810 */ // No operand predicates
8868 /* 7810 */ // Combiner Rule #190: shift_immed_chain @ [mi[2]]
8869 /* 7810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
8870 /* 7813 */ // Label 365: @7813
8871 /* 7813 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7824), // Rule ID 251 //
8872 /* 7818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8873 /* 7821 */ // MIs[0] d
8874 /* 7821 */ // No operand predicates
8875 /* 7821 */ // MIs[0] mi.base
8876 /* 7821 */ // No operand predicates
8877 /* 7821 */ // MIs[0] mi.amt
8878 /* 7821 */ // No operand predicates
8879 /* 7821 */ // Combiner Rule #191: shift_of_shifted_logic_chain @ [mi[2]]
8880 /* 7821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
8881 /* 7824 */ // Label 366: @7824
8882 /* 7824 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7835), // Rule ID 277 //
8883 /* 7829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
8884 /* 7832 */ // MIs[0] dst
8885 /* 7832 */ // No operand predicates
8886 /* 7832 */ // MIs[0] root.src
8887 /* 7832 */ // No operand predicates
8888 /* 7832 */ // MIs[0] root.amt
8889 /* 7832 */ // No operand predicates
8890 /* 7832 */ // Combiner Rule #208: bitfield_extract_from_shr @ [root[1]]
8891 /* 7832 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
8892 /* 7835 */ // Label 367: @7835
8893 /* 7835 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7846), // Rule ID 279 //
8894 /* 7840 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
8895 /* 7843 */ // MIs[0] dst
8896 /* 7843 */ // No operand predicates
8897 /* 7843 */ // MIs[0] root.src
8898 /* 7843 */ // No operand predicates
8899 /* 7843 */ // MIs[0] root.amt
8900 /* 7843 */ // No operand predicates
8901 /* 7843 */ // Combiner Rule #209: bitfield_extract_from_shr_and @ [root[1]]
8902 /* 7843 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
8903 /* 7846 */ // Label 368: @7846
8904 /* 7846 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7857), // Rule ID 284 //
8905 /* 7851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
8906 /* 7854 */ // MIs[0] d
8907 /* 7854 */ // No operand predicates
8908 /* 7854 */ // MIs[0] mi.src0
8909 /* 7854 */ // No operand predicates
8910 /* 7854 */ // MIs[0] mi.src1
8911 /* 7854 */ // No operand predicates
8912 /* 7854 */ // Combiner Rule #210: constant_fold_binop @ [mi[4]]
8913 /* 7854 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
8914 /* 7857 */ // Label 369: @7857
8915 /* 7857 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(7868), // Rule ID 351 //
8916 /* 7862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
8917 /* 7865 */ // MIs[0] root
8918 /* 7865 */ // No operand predicates
8919 /* 7865 */ // MIs[0] mi.x
8920 /* 7865 */ // No operand predicates
8921 /* 7865 */ // MIs[0] mi.y
8922 /* 7865 */ // No operand predicates
8923 /* 7865 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[10]]
8924 /* 7865 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
8925 /* 7868 */ // Label 370: @7868
8926 /* 7868 */ GIM_Reject,
8927 /* 7869 */ // Label 36: @7869
8928 /* 7869 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(7958), // Rule ID 465 //
8929 /* 7874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule330Enabled),
8930 /* 7877 */ // MIs[0] dst
8931 /* 7877 */ // No operand predicates
8932 /* 7877 */ // MIs[0] sum
8933 /* 7877 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8934 /* 7881 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8935 /* 7885 */ // MIs[1] inner
8936 /* 7885 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8937 /* 7889 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8938 /* 7893 */ // MIs[2] ext1
8939 /* 7893 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8940 /* 7897 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8941 /* 7901 */ // MIs[3] x
8942 /* 7901 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8943 /* 7905 */ // MIs[2] ext2
8944 /* 7905 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8945 /* 7909 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
8946 /* 7913 */ // MIs[4] y
8947 /* 7913 */ // No operand predicates
8948 /* 7913 */ // MIs[1] Operand 2
8949 /* 7913 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8950 /* 7917 */ // MIs[0] Operand 2
8951 /* 7917 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8952 /* 7921 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner63),
8953 /* 7925 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8954 /* 7927 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8955 /* 7930 */ // Combiner Rule #330: avgceil_s_match
8956 /* 7930 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
8957 /* 7933 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8958 /* 7938 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8959 /* 7942 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8960 /* 7946 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8961 /* 7950 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8962 /* 7954 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8963 /* 7957 */ GIR_EraseRootFromParent_Done,
8964 /* 7958 */ // Label 371: @7958
8965 /* 7958 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(8035), // Rule ID 463 //
8966 /* 7963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule328Enabled),
8967 /* 7966 */ // MIs[0] dst
8968 /* 7966 */ // No operand predicates
8969 /* 7966 */ // MIs[0] sum
8970 /* 7966 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8971 /* 7970 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8972 /* 7974 */ // MIs[1] ext1
8973 /* 7974 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8974 /* 7978 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
8975 /* 7982 */ // MIs[2] x
8976 /* 7982 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8977 /* 7986 */ // MIs[1] ext2
8978 /* 7986 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8979 /* 7990 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8980 /* 7994 */ // MIs[3] y
8981 /* 7994 */ // No operand predicates
8982 /* 7994 */ // MIs[0] Operand 2
8983 /* 7994 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8984 /* 7998 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner61),
8985 /* 8002 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8986 /* 8004 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8987 /* 8007 */ // Combiner Rule #328: avgfloor_s_match
8988 /* 8007 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
8989 /* 8010 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8990 /* 8015 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8991 /* 8019 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8992 /* 8023 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8993 /* 8027 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8994 /* 8031 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8995 /* 8034 */ GIR_EraseRootFromParent_Done,
8996 /* 8035 */ // Label 372: @8035
8997 /* 8035 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(8059), // Rule ID 94 //
8998 /* 8040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8999 /* 8043 */ // MIs[0] dst
9000 /* 8043 */ // No operand predicates
9001 /* 8043 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
9002 /* 8043 */ // No operand predicates
9003 /* 8043 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
9004 /* 8043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9005 /* 8047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9006 /* 8051 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9007 /* 8053 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[1]]
9008 /* 8053 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9009 /* 8056 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9010 /* 8058 */ GIR_EraseRootFromParent_Done,
9011 /* 8059 */ // Label 373: @8059
9012 /* 8059 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(8082), // Rule ID 123 //
9013 /* 8064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
9014 /* 8067 */ // MIs[0] dst
9015 /* 8067 */ // No operand predicates
9016 /* 8067 */ // MIs[0] lhs
9017 /* 8067 */ // No operand predicates
9018 /* 8067 */ // MIs[0] Operand 2
9019 /* 8067 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
9020 /* 8071 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9021 /* 8076 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[5]]
9022 /* 8076 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9023 /* 8081 */ GIR_EraseRootFromParent_Done,
9024 /* 8082 */ // Label 374: @8082
9025 /* 8082 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(8105), // Rule ID 134 //
9026 /* 8087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
9027 /* 8090 */ // MIs[0] dst
9028 /* 8090 */ // No operand predicates
9029 /* 8090 */ // MIs[0] zero
9030 /* 8090 */ // No operand predicates
9031 /* 8090 */ // MIs[0] rhs
9032 /* 8090 */ // No operand predicates
9033 /* 8090 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
9034 /* 8094 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9035 /* 8099 */ // Combiner Rule #95: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
9036 /* 8099 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9037 /* 8104 */ GIR_EraseRootFromParent_Done,
9038 /* 8105 */ // Label 375: @8105
9039 /* 8105 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(8116), // Rule ID 168 //
9040 /* 8110 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
9041 /* 8113 */ // MIs[0] root
9042 /* 8113 */ // No operand predicates
9043 /* 8113 */ // MIs[0] mi.shifted
9044 /* 8113 */ // No operand predicates
9045 /* 8113 */ // MIs[0] mi.amt
9046 /* 8113 */ // No operand predicates
9047 /* 8113 */ // Combiner Rule #119: shifts_too_big @ [mi[1]]
9048 /* 8113 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
9049 /* 8116 */ // Label 376: @8116
9050 /* 8116 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(8127), // Rule ID 180 //
9051 /* 8121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
9052 /* 8124 */ // MIs[0] dst
9053 /* 8124 */ // No operand predicates
9054 /* 8124 */ // MIs[0] src1
9055 /* 8124 */ // No operand predicates
9056 /* 8124 */ // MIs[0] src2
9057 /* 8124 */ // No operand predicates
9058 /* 8124 */ // Combiner Rule #130: shl_ashr_to_sext_inreg
9059 /* 8124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
9060 /* 8127 */ // Label 377: @8127
9061 /* 8127 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(8138), // Rule ID 245 //
9062 /* 8132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
9063 /* 8135 */ // MIs[0] d
9064 /* 8135 */ // No operand predicates
9065 /* 8135 */ // MIs[0] mi.base
9066 /* 8135 */ // No operand predicates
9067 /* 8135 */ // MIs[0] mi.amt
9068 /* 8135 */ // No operand predicates
9069 /* 8135 */ // Combiner Rule #190: shift_immed_chain @ [mi[1]]
9070 /* 8135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
9071 /* 8138 */ // Label 378: @8138
9072 /* 8138 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(8149), // Rule ID 250 //
9073 /* 8143 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9074 /* 8146 */ // MIs[0] d
9075 /* 8146 */ // No operand predicates
9076 /* 8146 */ // MIs[0] mi.base
9077 /* 8146 */ // No operand predicates
9078 /* 8146 */ // MIs[0] mi.amt
9079 /* 8146 */ // No operand predicates
9080 /* 8146 */ // Combiner Rule #191: shift_of_shifted_logic_chain @ [mi[1]]
9081 /* 8146 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
9082 /* 8149 */ // Label 379: @8149
9083 /* 8149 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(8160), // Rule ID 276 //
9084 /* 8154 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9085 /* 8157 */ // MIs[0] dst
9086 /* 8157 */ // No operand predicates
9087 /* 8157 */ // MIs[0] root.src
9088 /* 8157 */ // No operand predicates
9089 /* 8157 */ // MIs[0] root.amt
9090 /* 8157 */ // No operand predicates
9091 /* 8157 */ // Combiner Rule #208: bitfield_extract_from_shr @ [root[0]]
9092 /* 8157 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9093 /* 8160 */ // Label 380: @8160
9094 /* 8160 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(8171), // Rule ID 278 //
9095 /* 8165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
9096 /* 8168 */ // MIs[0] dst
9097 /* 8168 */ // No operand predicates
9098 /* 8168 */ // MIs[0] root.src
9099 /* 8168 */ // No operand predicates
9100 /* 8168 */ // MIs[0] root.amt
9101 /* 8168 */ // No operand predicates
9102 /* 8168 */ // Combiner Rule #209: bitfield_extract_from_shr_and @ [root[0]]
9103 /* 8168 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9104 /* 8171 */ // Label 381: @8171
9105 /* 8171 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(8182), // Rule ID 283 //
9106 /* 8176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
9107 /* 8179 */ // MIs[0] d
9108 /* 8179 */ // No operand predicates
9109 /* 8179 */ // MIs[0] mi.src0
9110 /* 8179 */ // No operand predicates
9111 /* 8179 */ // MIs[0] mi.src1
9112 /* 8179 */ // No operand predicates
9113 /* 8179 */ // Combiner Rule #210: constant_fold_binop @ [mi[3]]
9114 /* 8179 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
9115 /* 8182 */ // Label 382: @8182
9116 /* 8182 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(8193), // Rule ID 352 //
9117 /* 8187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
9118 /* 8190 */ // MIs[0] root
9119 /* 8190 */ // No operand predicates
9120 /* 8190 */ // MIs[0] mi.x
9121 /* 8190 */ // No operand predicates
9122 /* 8190 */ // MIs[0] mi.y
9123 /* 8190 */ // No operand predicates
9124 /* 8190 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[11]]
9125 /* 8190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
9126 /* 8193 */ // Label 383: @8193
9127 /* 8193 */ GIM_Reject,
9128 /* 8194 */ // Label 37: @8194
9129 /* 8194 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(8221), // Rule ID 260 //
9130 /* 8199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9131 /* 8202 */ // MIs[0] dst
9132 /* 8202 */ // No operand predicates
9133 /* 8202 */ // MIs[0] x
9134 /* 8202 */ // No operand predicates
9135 /* 8202 */ // MIs[0] x
9136 /* 8202 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
9137 /* 8207 */ // MIs[0] amt
9138 /* 8207 */ // No operand predicates
9139 /* 8207 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner36),
9140 /* 8211 */ // Combiner Rule #195: funnel_shift_to_rotate_left
9141 /* 8211 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ROTL),
9142 /* 8214 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9143 /* 8216 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
9144 /* 8218 */ GIR_RootToRootCopy, /*OpIdx*/3, // amt
9145 /* 8220 */ GIR_EraseRootFromParent_Done,
9146 /* 8221 */ // Label 384: @8221
9147 /* 8221 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(8241), // Rule ID 263 //
9148 /* 8226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
9149 /* 8229 */ // MIs[0] x
9150 /* 8229 */ // No operand predicates
9151 /* 8229 */ // MIs[0] y
9152 /* 8229 */ // No operand predicates
9153 /* 8229 */ // MIs[0] z
9154 /* 8229 */ // No operand predicates
9155 /* 8229 */ // MIs[0] Operand 3
9156 /* 8229 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
9157 /* 8233 */ // Combiner Rule #198: funnel_shift_left_zero
9158 /* 8233 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
9159 /* 8236 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
9160 /* 8238 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
9161 /* 8240 */ GIR_EraseRootFromParent_Done,
9162 /* 8241 */ // Label 385: @8241
9163 /* 8241 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(8252), // Rule ID 264 //
9164 /* 8246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
9165 /* 8249 */ // MIs[0] dst
9166 /* 8249 */ // No operand predicates
9167 /* 8249 */ // MIs[0] root.x
9168 /* 8249 */ // No operand predicates
9169 /* 8249 */ // MIs[0] root.y
9170 /* 8249 */ // No operand predicates
9171 /* 8249 */ // MIs[0] root.amt
9172 /* 8249 */ // No operand predicates
9173 /* 8249 */ // Combiner Rule #199: funnel_shift_overshift @ [root[0]]
9174 /* 8249 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
9175 /* 8252 */ // Label 386: @8252
9176 /* 8252 */ GIM_Reject,
9177 /* 8253 */ // Label 38: @8253
9178 /* 8253 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(8280), // Rule ID 261 //
9179 /* 8258 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
9180 /* 8261 */ // MIs[0] dst
9181 /* 8261 */ // No operand predicates
9182 /* 8261 */ // MIs[0] x
9183 /* 8261 */ // No operand predicates
9184 /* 8261 */ // MIs[0] x
9185 /* 8261 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
9186 /* 8266 */ // MIs[0] amt
9187 /* 8266 */ // No operand predicates
9188 /* 8266 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner37),
9189 /* 8270 */ // Combiner Rule #196: funnel_shift_to_rotate_right
9190 /* 8270 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ROTR),
9191 /* 8273 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9192 /* 8275 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
9193 /* 8277 */ GIR_RootToRootCopy, /*OpIdx*/3, // amt
9194 /* 8279 */ GIR_EraseRootFromParent_Done,
9195 /* 8280 */ // Label 387: @8280
9196 /* 8280 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(8300), // Rule ID 262 //
9197 /* 8285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
9198 /* 8288 */ // MIs[0] x
9199 /* 8288 */ // No operand predicates
9200 /* 8288 */ // MIs[0] y
9201 /* 8288 */ // No operand predicates
9202 /* 8288 */ // MIs[0] z
9203 /* 8288 */ // No operand predicates
9204 /* 8288 */ // MIs[0] Operand 3
9205 /* 8288 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
9206 /* 8292 */ // Combiner Rule #197: funnel_shift_right_zero
9207 /* 8292 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
9208 /* 8295 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
9209 /* 8297 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
9210 /* 8299 */ GIR_EraseRootFromParent_Done,
9211 /* 8300 */ // Label 388: @8300
9212 /* 8300 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(8311), // Rule ID 265 //
9213 /* 8305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
9214 /* 8308 */ // MIs[0] dst
9215 /* 8308 */ // No operand predicates
9216 /* 8308 */ // MIs[0] root.x
9217 /* 8308 */ // No operand predicates
9218 /* 8308 */ // MIs[0] root.y
9219 /* 8308 */ // No operand predicates
9220 /* 8308 */ // MIs[0] root.amt
9221 /* 8308 */ // No operand predicates
9222 /* 8308 */ // Combiner Rule #199: funnel_shift_overshift @ [root[1]]
9223 /* 8308 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
9224 /* 8311 */ // Label 389: @8311
9225 /* 8311 */ GIM_Reject,
9226 /* 8312 */ // Label 39: @8312
9227 /* 8312 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(8335), // Rule ID 127 //
9228 /* 8317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
9229 /* 8320 */ // MIs[0] dst
9230 /* 8320 */ // No operand predicates
9231 /* 8320 */ // MIs[0] lhs
9232 /* 8320 */ // No operand predicates
9233 /* 8320 */ // MIs[0] Operand 2
9234 /* 8320 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
9235 /* 8324 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9236 /* 8329 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[9]]
9237 /* 8329 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9238 /* 8334 */ GIR_EraseRootFromParent_Done,
9239 /* 8335 */ // Label 390: @8335
9240 /* 8335 */ GIM_Reject,
9241 /* 8336 */ // Label 40: @8336
9242 /* 8336 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(8359), // Rule ID 126 //
9243 /* 8341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
9244 /* 8344 */ // MIs[0] dst
9245 /* 8344 */ // No operand predicates
9246 /* 8344 */ // MIs[0] lhs
9247 /* 8344 */ // No operand predicates
9248 /* 8344 */ // MIs[0] Operand 2
9249 /* 8344 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
9250 /* 8348 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9251 /* 8353 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[8]]
9252 /* 8353 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9253 /* 8358 */ GIR_EraseRootFromParent_Done,
9254 /* 8359 */ // Label 391: @8359
9255 /* 8359 */ GIM_Reject,
9256 /* 8360 */ // Label 41: @8360
9257 /* 8360 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(8371), // Rule ID 173 //
9258 /* 8365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
9259 /* 8368 */ // MIs[0] root
9260 /* 8368 */ // No operand predicates
9261 /* 8368 */ // MIs[0] pred
9262 /* 8368 */ // No operand predicates
9263 /* 8368 */ // MIs[0] lhs
9264 /* 8368 */ // No operand predicates
9265 /* 8368 */ // MIs[0] rhs
9266 /* 8368 */ // No operand predicates
9267 /* 8368 */ // Combiner Rule #123: canonicalize_icmp
9268 /* 8368 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
9269 /* 8371 */ // Label 392: @8371
9270 /* 8371 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(8382), // Rule ID 175 //
9271 /* 8376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
9272 /* 8379 */ // MIs[0] dst
9273 /* 8379 */ // No operand predicates
9274 /* 8379 */ // MIs[0] pred
9275 /* 8379 */ // No operand predicates
9276 /* 8379 */ // MIs[0] src1
9277 /* 8379 */ // No operand predicates
9278 /* 8379 */ // MIs[0] src2
9279 /* 8379 */ // No operand predicates
9280 /* 8379 */ // Combiner Rule #125: icmp_to_true_false_known_bits
9281 /* 8379 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
9282 /* 8382 */ // Label 393: @8382
9283 /* 8382 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(8393), // Rule ID 176 //
9284 /* 8387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
9285 /* 8390 */ // MIs[0] dst
9286 /* 8390 */ // No operand predicates
9287 /* 8390 */ // MIs[0] pred
9288 /* 8390 */ // No operand predicates
9289 /* 8390 */ // MIs[0] src1
9290 /* 8390 */ // No operand predicates
9291 /* 8390 */ // MIs[0] src2
9292 /* 8390 */ // No operand predicates
9293 /* 8390 */ // Combiner Rule #126: icmp_to_lhs_known_bits
9294 /* 8390 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
9295 /* 8393 */ // Label 394: @8393
9296 /* 8393 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(8404), // Rule ID 179 //
9297 /* 8398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
9298 /* 8401 */ // MIs[0] dst
9299 /* 8401 */ // No operand predicates
9300 /* 8401 */ // MIs[0] pred
9301 /* 8401 */ // No operand predicates
9302 /* 8401 */ // MIs[0] src1
9303 /* 8401 */ // No operand predicates
9304 /* 8401 */ // MIs[0] src2
9305 /* 8401 */ // No operand predicates
9306 /* 8401 */ // Combiner Rule #129: redundant_binop_in_equality
9307 /* 8401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
9308 /* 8404 */ // Label 395: @8404
9309 /* 8404 */ GIM_Reject,
9310 /* 8405 */ // Label 42: @8405
9311 /* 8405 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(8416), // Rule ID 174 //
9312 /* 8410 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
9313 /* 8413 */ // MIs[0] root
9314 /* 8413 */ // No operand predicates
9315 /* 8413 */ // MIs[0] pred
9316 /* 8413 */ // No operand predicates
9317 /* 8413 */ // MIs[0] lhs
9318 /* 8413 */ // No operand predicates
9319 /* 8413 */ // MIs[0] rhs
9320 /* 8413 */ // No operand predicates
9321 /* 8413 */ // Combiner Rule #124: canonicalize_fcmp
9322 /* 8413 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
9323 /* 8416 */ // Label 396: @8416
9324 /* 8416 */ GIM_Reject,
9325 /* 8417 */ // Label 43: @8417
9326 /* 8417 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(8466), // Rule ID 192 //
9327 /* 8422 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
9328 /* 8425 */ // MIs[0] dst
9329 /* 8425 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
9330 /* 8429 */ // MIs[0] c
9331 /* 8429 */ // No operand predicates
9332 /* 8429 */ // MIs[0] x
9333 /* 8429 */ // No operand predicates
9334 /* 8429 */ // MIs[0] Operand 3
9335 /* 8429 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
9336 /* 8433 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
9337 /* 8437 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
9338 /* 8440 */ // Combiner Rule #142: select_zero_false
9339 /* 8440 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
9340 /* 8443 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
9341 /* 8448 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9342 /* 8450 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
9343 /* 8454 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
9344 /* 8458 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
9345 /* 8462 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
9346 /* 8465 */ GIR_EraseRootFromParent_Done,
9347 /* 8466 */ // Label 397: @8466
9348 /* 8466 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(8487), // Rule ID 190 //
9349 /* 8471 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
9350 /* 8474 */ // MIs[0] root
9351 /* 8474 */ // No operand predicates
9352 /* 8474 */ // MIs[0] tst
9353 /* 8474 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9354 /* 8478 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
9355 /* 8482 */ // MIs[1] tst1
9356 /* 8482 */ // No operand predicates
9357 /* 8482 */ // MIs[1] a
9358 /* 8482 */ // No operand predicates
9359 /* 8482 */ // MIs[1] b
9360 /* 8482 */ // No operand predicates
9361 /* 8482 */ // MIs[0] x
9362 /* 8482 */ // No operand predicates
9363 /* 8482 */ // MIs[0] y
9364 /* 8482 */ // No operand predicates
9365 /* 8482 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9366 /* 8484 */ // Combiner Rule #140: select_to_iminmax
9367 /* 8484 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
9368 /* 8487 */ // Label 398: @8487
9369 /* 8487 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(8523), // Rule ID 193 //
9370 /* 8492 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
9371 /* 8495 */ // MIs[0] dst
9372 /* 8495 */ // No operand predicates
9373 /* 8495 */ // MIs[0] c
9374 /* 8495 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9375 /* 8499 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
9376 /* 8503 */ // MIs[1] src
9377 /* 8503 */ // No operand predicates
9378 /* 8503 */ // MIs[1] Operand 2
9379 /* 8503 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
9380 /* 8507 */ // MIs[0] x
9381 /* 8507 */ // No operand predicates
9382 /* 8507 */ // MIs[0] y
9383 /* 8507 */ // No operand predicates
9384 /* 8507 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9385 /* 8509 */ // Combiner Rule #143: select_not
9386 /* 8509 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
9387 /* 8512 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9388 /* 8514 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
9389 /* 8518 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9390 /* 8520 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9391 /* 8522 */ GIR_EraseRootFromParent_Done,
9392 /* 8523 */ // Label 399: @8523
9393 /* 8523 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(8552), // Rule ID 185 //
9394 /* 8528 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
9395 /* 8531 */ // MIs[0] dst
9396 /* 8531 */ // No operand predicates
9397 /* 8531 */ // MIs[0] undef
9398 /* 8531 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9399 /* 8535 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9400 /* 8539 */ // MIs[0] x
9401 /* 8539 */ // No operand predicates
9402 /* 8539 */ // MIs[0] y
9403 /* 8539 */ // No operand predicates
9404 /* 8539 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
9405 /* 8544 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9406 /* 8546 */ // Combiner Rule #135: select_undef_cmp
9407 /* 8546 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
9408 /* 8551 */ GIR_EraseRootFromParent_Done,
9409 /* 8552 */ // Label 400: @8552
9410 /* 8552 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(8592), // Rule ID 186 //
9411 /* 8557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
9412 /* 8560 */ // MIs[0] dst
9413 /* 8560 */ // No operand predicates
9414 /* 8560 */ // MIs[0] cond
9415 /* 8560 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9416 /* 8564 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9417 /* 8568 */ // MIs[1] Operand 1
9418 /* 8568 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
9419 /* 8579 */ // MIs[0] tval
9420 /* 8579 */ // No operand predicates
9421 /* 8579 */ // MIs[0] fval
9422 /* 8579 */ // No operand predicates
9423 /* 8579 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
9424 /* 8584 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9425 /* 8586 */ // Combiner Rule #136: select_constant_cmp_false
9426 /* 8586 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
9427 /* 8591 */ GIR_EraseRootFromParent_Done,
9428 /* 8592 */ // Label 401: @8592
9429 /* 8592 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(8632), // Rule ID 187 //
9430 /* 8597 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
9431 /* 8600 */ // MIs[0] dst
9432 /* 8600 */ // No operand predicates
9433 /* 8600 */ // MIs[0] cond
9434 /* 8600 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9435 /* 8604 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9436 /* 8608 */ // MIs[1] Operand 1
9437 /* 8608 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(1),
9438 /* 8619 */ // MIs[0] tval
9439 /* 8619 */ // No operand predicates
9440 /* 8619 */ // MIs[0] fval
9441 /* 8619 */ // No operand predicates
9442 /* 8619 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9443 /* 8624 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9444 /* 8626 */ // Combiner Rule #137: select_constant_cmp_true
9445 /* 8626 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9446 /* 8631 */ GIR_EraseRootFromParent_Done,
9447 /* 8632 */ // Label 402: @8632
9448 /* 8632 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(8656), // Rule ID 116 //
9449 /* 8637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
9450 /* 8640 */ // MIs[0] dst
9451 /* 8640 */ // No operand predicates
9452 /* 8640 */ // MIs[0] cond
9453 /* 8640 */ // No operand predicates
9454 /* 8640 */ // MIs[0] x
9455 /* 8640 */ // No operand predicates
9456 /* 8640 */ // MIs[0] x
9457 /* 8640 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/0, /*OtherOpIdx*/2,
9458 /* 8645 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9459 /* 8650 */ // Combiner Rule #90: select_same_val_trivial
9460 /* 8650 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9461 /* 8655 */ GIR_EraseRootFromParent_Done,
9462 /* 8656 */ // Label 403: @8656
9463 /* 8656 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(8679), // Rule ID 117 //
9464 /* 8661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
9465 /* 8664 */ // MIs[0] dst
9466 /* 8664 */ // No operand predicates
9467 /* 8664 */ // MIs[0] cond
9468 /* 8664 */ // No operand predicates
9469 /* 8664 */ // MIs[0] tval
9470 /* 8664 */ // No operand predicates
9471 /* 8664 */ // MIs[0] fval
9472 /* 8664 */ // No operand predicates
9473 /* 8664 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
9474 /* 8668 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9475 /* 8673 */ // Combiner Rule #91: select_same_val_equiv
9476 /* 8673 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9477 /* 8678 */ GIR_EraseRootFromParent_Done,
9478 /* 8679 */ // Label 404: @8679
9479 /* 8679 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(8702), // Rule ID 188 //
9480 /* 8684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
9481 /* 8687 */ // MIs[0] dst
9482 /* 8687 */ // No operand predicates
9483 /* 8687 */ // MIs[0] cond
9484 /* 8687 */ // No operand predicates
9485 /* 8687 */ // MIs[0] tval
9486 /* 8687 */ // No operand predicates
9487 /* 8687 */ // MIs[0] fval
9488 /* 8687 */ // No operand predicates
9489 /* 8687 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
9490 /* 8691 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
9491 /* 8696 */ // Combiner Rule #138: select_constant_cmp_general_false
9492 /* 8696 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
9493 /* 8701 */ GIR_EraseRootFromParent_Done,
9494 /* 8702 */ // Label 405: @8702
9495 /* 8702 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(8725), // Rule ID 189 //
9496 /* 8707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
9497 /* 8710 */ // MIs[0] dst
9498 /* 8710 */ // No operand predicates
9499 /* 8710 */ // MIs[0] cond
9500 /* 8710 */ // No operand predicates
9501 /* 8710 */ // MIs[0] tval
9502 /* 8710 */ // No operand predicates
9503 /* 8710 */ // MIs[0] fval
9504 /* 8710 */ // No operand predicates
9505 /* 8710 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
9506 /* 8714 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9507 /* 8719 */ // Combiner Rule #139: select_constant_cmp_general_true
9508 /* 8719 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
9509 /* 8724 */ GIR_EraseRootFromParent_Done,
9510 /* 8725 */ // Label 406: @8725
9511 /* 8725 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(8736), // Rule ID 191 //
9512 /* 8730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
9513 /* 8733 */ // MIs[0] dst
9514 /* 8733 */ // No operand predicates
9515 /* 8733 */ // MIs[0] cond
9516 /* 8733 */ // No operand predicates
9517 /* 8733 */ // MIs[0] tval
9518 /* 8733 */ // No operand predicates
9519 /* 8733 */ // MIs[0] fval
9520 /* 8733 */ // No operand predicates
9521 /* 8733 */ // Combiner Rule #141: match_selects
9522 /* 8733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
9523 /* 8736 */ // Label 407: @8736
9524 /* 8736 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(8747), // Rule ID 379 //
9525 /* 8741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
9526 /* 8744 */ // MIs[0] dst
9527 /* 8744 */ // No operand predicates
9528 /* 8744 */ // MIs[0] cond
9529 /* 8744 */ // No operand predicates
9530 /* 8744 */ // MIs[0] tval
9531 /* 8744 */ // No operand predicates
9532 /* 8744 */ // MIs[0] fval
9533 /* 8744 */ // No operand predicates
9534 /* 8744 */ // Combiner Rule #247: select_to_minmax
9535 /* 8744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
9536 /* 8747 */ // Label 408: @8747
9537 /* 8747 */ GIM_Reject,
9538 /* 8748 */ // Label 44: @8748
9539 /* 8748 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(8775), // Rule ID 398 //
9540 /* 8753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule266Enabled),
9541 /* 8756 */ // MIs[0] dst
9542 /* 8756 */ // No operand predicates
9543 /* 8756 */ // MIs[0] carry
9544 /* 8756 */ // No operand predicates
9545 /* 8756 */ // MIs[0] lhs
9546 /* 8756 */ // No operand predicates
9547 /* 8756 */ // MIs[0] rhs
9548 /* 8756 */ // No operand predicates
9549 /* 8756 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9550 /* 8760 */ // Combiner Rule #266: G_UADDO_commute_constant_to_rhs
9551 /* 8760 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDO),
9552 /* 8763 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9553 /* 8765 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
9554 /* 8767 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
9555 /* 8769 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
9556 /* 8771 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9557 /* 8774 */ GIR_EraseRootFromParent_Done,
9558 /* 8775 */ // Label 409: @8775
9559 /* 8775 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(8805), // Rule ID 438 //
9560 /* 8780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule306Enabled),
9561 /* 8783 */ // MIs[0] dst
9562 /* 8783 */ // No operand predicates
9563 /* 8783 */ // MIs[0] carry
9564 /* 8783 */ // No operand predicates
9565 /* 8783 */ // MIs[0] x
9566 /* 8783 */ // No operand predicates
9567 /* 8783 */ // MIs[0] y
9568 /* 8783 */ // No operand predicates
9569 /* 8783 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner52),
9570 /* 8787 */ // Combiner Rule #306: match_addos_uaddo_dead_carry
9571 /* 8787 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
9572 /* 8790 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9573 /* 8792 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9574 /* 8794 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9575 /* 8796 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9576 /* 8800 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // carry
9577 /* 8804 */ GIR_EraseRootFromParent_Done,
9578 /* 8805 */ // Label 410: @8805
9579 /* 8805 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(8816), // Rule ID 440 //
9580 /* 8810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule308Enabled),
9581 /* 8813 */ // MIs[0] dst
9582 /* 8813 */ // No operand predicates
9583 /* 8813 */ // MIs[0] carry
9584 /* 8813 */ // No operand predicates
9585 /* 8813 */ // MIs[0] x
9586 /* 8813 */ // No operand predicates
9587 /* 8813 */ // MIs[0] y
9588 /* 8813 */ // No operand predicates
9589 /* 8813 */ // Combiner Rule #308: match_addos_uaddo
9590 /* 8813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
9591 /* 8816 */ // Label 411: @8816
9592 /* 8816 */ GIM_Reject,
9593 /* 8817 */ // Label 45: @8817
9594 /* 8817 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(8844), // Rule ID 228 //
9595 /* 8822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
9596 /* 8825 */ // MIs[0] dst
9597 /* 8825 */ // No operand predicates
9598 /* 8825 */ // MIs[0] carry_out
9599 /* 8825 */ // No operand predicates
9600 /* 8825 */ // MIs[0] x
9601 /* 8825 */ // No operand predicates
9602 /* 8825 */ // MIs[0] y
9603 /* 8825 */ // No operand predicates
9604 /* 8825 */ // MIs[0] carry_in
9605 /* 8825 */ // No operand predicates
9606 /* 8825 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
9607 /* 8829 */ // Combiner Rule #178: adde_to_addo_uadde
9608 /* 8829 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDO),
9609 /* 8832 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9610 /* 8834 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry_out
9611 /* 8836 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9612 /* 8838 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9613 /* 8840 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9614 /* 8843 */ GIR_EraseRootFromParent_Done,
9615 /* 8844 */ // Label 412: @8844
9616 /* 8844 */ GIM_Reject,
9617 /* 8845 */ // Label 46: @8845
9618 /* 8845 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(8856), // Rule ID 442 //
9619 /* 8850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule310Enabled),
9620 /* 8853 */ // MIs[0] dst
9621 /* 8853 */ // No operand predicates
9622 /* 8853 */ // MIs[0] carry
9623 /* 8853 */ // No operand predicates
9624 /* 8853 */ // MIs[0] x
9625 /* 8853 */ // No operand predicates
9626 /* 8853 */ // MIs[0] y
9627 /* 8853 */ // No operand predicates
9628 /* 8853 */ // Combiner Rule #310: match_subo_no_overflow_usubo
9629 /* 8853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
9630 /* 8856 */ // Label 413: @8856
9631 /* 8856 */ GIM_Reject,
9632 /* 8857 */ // Label 47: @8857
9633 /* 8857 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(8884), // Rule ID 230 //
9634 /* 8862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
9635 /* 8865 */ // MIs[0] dst
9636 /* 8865 */ // No operand predicates
9637 /* 8865 */ // MIs[0] carry_out
9638 /* 8865 */ // No operand predicates
9639 /* 8865 */ // MIs[0] x
9640 /* 8865 */ // No operand predicates
9641 /* 8865 */ // MIs[0] y
9642 /* 8865 */ // No operand predicates
9643 /* 8865 */ // MIs[0] carry_in
9644 /* 8865 */ // No operand predicates
9645 /* 8865 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
9646 /* 8869 */ // Combiner Rule #180: adde_to_addo_usube
9647 /* 8869 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_USUBO),
9648 /* 8872 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9649 /* 8874 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry_out
9650 /* 8876 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9651 /* 8878 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9652 /* 8880 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9653 /* 8883 */ GIR_EraseRootFromParent_Done,
9654 /* 8884 */ // Label 414: @8884
9655 /* 8884 */ GIM_Reject,
9656 /* 8885 */ // Label 48: @8885
9657 /* 8885 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(8912), // Rule ID 399 //
9658 /* 8890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
9659 /* 8893 */ // MIs[0] dst
9660 /* 8893 */ // No operand predicates
9661 /* 8893 */ // MIs[0] carry
9662 /* 8893 */ // No operand predicates
9663 /* 8893 */ // MIs[0] lhs
9664 /* 8893 */ // No operand predicates
9665 /* 8893 */ // MIs[0] rhs
9666 /* 8893 */ // No operand predicates
9667 /* 8893 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9668 /* 8897 */ // Combiner Rule #267: G_SADDO_commute_constant_to_rhs
9669 /* 8897 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDO),
9670 /* 8900 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9671 /* 8902 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
9672 /* 8904 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
9673 /* 8906 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
9674 /* 8908 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9675 /* 8911 */ GIR_EraseRootFromParent_Done,
9676 /* 8912 */ // Label 415: @8912
9677 /* 8912 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(8942), // Rule ID 437 //
9678 /* 8917 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule305Enabled),
9679 /* 8920 */ // MIs[0] dst
9680 /* 8920 */ // No operand predicates
9681 /* 8920 */ // MIs[0] carry
9682 /* 8920 */ // No operand predicates
9683 /* 8920 */ // MIs[0] x
9684 /* 8920 */ // No operand predicates
9685 /* 8920 */ // MIs[0] y
9686 /* 8920 */ // No operand predicates
9687 /* 8920 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner52),
9688 /* 8924 */ // Combiner Rule #305: match_addos_saddo_dead_carry
9689 /* 8924 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
9690 /* 8927 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9691 /* 8929 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9692 /* 8931 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9693 /* 8933 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9694 /* 8937 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // carry
9695 /* 8941 */ GIR_EraseRootFromParent_Done,
9696 /* 8942 */ // Label 416: @8942
9697 /* 8942 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(8953), // Rule ID 439 //
9698 /* 8947 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule307Enabled),
9699 /* 8950 */ // MIs[0] dst
9700 /* 8950 */ // No operand predicates
9701 /* 8950 */ // MIs[0] carry
9702 /* 8950 */ // No operand predicates
9703 /* 8950 */ // MIs[0] x
9704 /* 8950 */ // No operand predicates
9705 /* 8950 */ // MIs[0] y
9706 /* 8950 */ // No operand predicates
9707 /* 8950 */ // Combiner Rule #307: match_addos_saddo
9708 /* 8950 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
9709 /* 8953 */ // Label 417: @8953
9710 /* 8953 */ GIM_Reject,
9711 /* 8954 */ // Label 49: @8954
9712 /* 8954 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(8981), // Rule ID 229 //
9713 /* 8959 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
9714 /* 8962 */ // MIs[0] dst
9715 /* 8962 */ // No operand predicates
9716 /* 8962 */ // MIs[0] carry_out
9717 /* 8962 */ // No operand predicates
9718 /* 8962 */ // MIs[0] x
9719 /* 8962 */ // No operand predicates
9720 /* 8962 */ // MIs[0] y
9721 /* 8962 */ // No operand predicates
9722 /* 8962 */ // MIs[0] carry_in
9723 /* 8962 */ // No operand predicates
9724 /* 8962 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
9725 /* 8966 */ // Combiner Rule #179: adde_to_addo_sadde
9726 /* 8966 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDO),
9727 /* 8969 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9728 /* 8971 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry_out
9729 /* 8973 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9730 /* 8975 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9731 /* 8977 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9732 /* 8980 */ GIR_EraseRootFromParent_Done,
9733 /* 8981 */ // Label 418: @8981
9734 /* 8981 */ GIM_Reject,
9735 /* 8982 */ // Label 50: @8982
9736 /* 8982 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(8993), // Rule ID 441 //
9737 /* 8987 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule309Enabled),
9738 /* 8990 */ // MIs[0] dst
9739 /* 8990 */ // No operand predicates
9740 /* 8990 */ // MIs[0] carry
9741 /* 8990 */ // No operand predicates
9742 /* 8990 */ // MIs[0] x
9743 /* 8990 */ // No operand predicates
9744 /* 8990 */ // MIs[0] y
9745 /* 8990 */ // No operand predicates
9746 /* 8990 */ // Combiner Rule #309: match_subo_no_overflow_ssubo
9747 /* 8990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
9748 /* 8993 */ // Label 419: @8993
9749 /* 8993 */ GIM_Reject,
9750 /* 8994 */ // Label 51: @8994
9751 /* 8994 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(9021), // Rule ID 231 //
9752 /* 8999 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
9753 /* 9002 */ // MIs[0] dst
9754 /* 9002 */ // No operand predicates
9755 /* 9002 */ // MIs[0] carry_out
9756 /* 9002 */ // No operand predicates
9757 /* 9002 */ // MIs[0] x
9758 /* 9002 */ // No operand predicates
9759 /* 9002 */ // MIs[0] y
9760 /* 9002 */ // No operand predicates
9761 /* 9002 */ // MIs[0] carry_in
9762 /* 9002 */ // No operand predicates
9763 /* 9002 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
9764 /* 9006 */ // Combiner Rule #181: adde_to_addo_ssube
9765 /* 9006 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SSUBO),
9766 /* 9009 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9767 /* 9011 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry_out
9768 /* 9013 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9769 /* 9015 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
9770 /* 9017 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9771 /* 9020 */ GIR_EraseRootFromParent_Done,
9772 /* 9021 */ // Label 420: @9021
9773 /* 9021 */ GIM_Reject,
9774 /* 9022 */ // Label 52: @9022
9775 /* 9022 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(9049), // Rule ID 224 //
9776 /* 9027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
9777 /* 9030 */ // MIs[0] dst
9778 /* 9030 */ // No operand predicates
9779 /* 9030 */ // MIs[0] carry
9780 /* 9030 */ // No operand predicates
9781 /* 9030 */ // MIs[0] x
9782 /* 9030 */ // No operand predicates
9783 /* 9030 */ // MIs[0] rhs
9784 /* 9030 */ // No operand predicates
9785 /* 9030 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
9786 /* 9034 */ // Combiner Rule #174: mulo_by_2_umulo
9787 /* 9034 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDO),
9788 /* 9037 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9789 /* 9039 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
9790 /* 9041 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9791 /* 9043 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9792 /* 9045 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9793 /* 9048 */ GIR_EraseRootFromParent_Done,
9794 /* 9049 */ // Label 421: @9049
9795 /* 9049 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(9076), // Rule ID 400 //
9796 /* 9054 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule268Enabled),
9797 /* 9057 */ // MIs[0] dst
9798 /* 9057 */ // No operand predicates
9799 /* 9057 */ // MIs[0] carry
9800 /* 9057 */ // No operand predicates
9801 /* 9057 */ // MIs[0] lhs
9802 /* 9057 */ // No operand predicates
9803 /* 9057 */ // MIs[0] rhs
9804 /* 9057 */ // No operand predicates
9805 /* 9057 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9806 /* 9061 */ // Combiner Rule #268: G_UMULO_commute_constant_to_rhs
9807 /* 9061 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULO),
9808 /* 9064 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9809 /* 9066 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
9810 /* 9068 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
9811 /* 9070 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
9812 /* 9072 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9813 /* 9075 */ GIR_EraseRootFromParent_Done,
9814 /* 9076 */ // Label 422: @9076
9815 /* 9076 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(9087), // Rule ID 226 //
9816 /* 9081 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
9817 /* 9084 */ // MIs[0] dst
9818 /* 9084 */ // No operand predicates
9819 /* 9084 */ // MIs[0] carry
9820 /* 9084 */ // No operand predicates
9821 /* 9084 */ // MIs[0] x
9822 /* 9084 */ // No operand predicates
9823 /* 9084 */ // MIs[0] y
9824 /* 9084 */ // No operand predicates
9825 /* 9084 */ // Combiner Rule #176: mulo_by_0_umulo
9826 /* 9084 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
9827 /* 9087 */ // Label 423: @9087
9828 /* 9087 */ GIM_Reject,
9829 /* 9088 */ // Label 53: @9088
9830 /* 9088 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(9115), // Rule ID 225 //
9831 /* 9093 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
9832 /* 9096 */ // MIs[0] dst
9833 /* 9096 */ // No operand predicates
9834 /* 9096 */ // MIs[0] carry
9835 /* 9096 */ // No operand predicates
9836 /* 9096 */ // MIs[0] x
9837 /* 9096 */ // No operand predicates
9838 /* 9096 */ // MIs[0] rhs
9839 /* 9096 */ // No operand predicates
9840 /* 9096 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
9841 /* 9100 */ // Combiner Rule #175: mulo_by_2_smulo
9842 /* 9100 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDO),
9843 /* 9103 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9844 /* 9105 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
9845 /* 9107 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9846 /* 9109 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
9847 /* 9111 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9848 /* 9114 */ GIR_EraseRootFromParent_Done,
9849 /* 9115 */ // Label 424: @9115
9850 /* 9115 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(9142), // Rule ID 401 //
9851 /* 9120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
9852 /* 9123 */ // MIs[0] dst
9853 /* 9123 */ // No operand predicates
9854 /* 9123 */ // MIs[0] carry
9855 /* 9123 */ // No operand predicates
9856 /* 9123 */ // MIs[0] lhs
9857 /* 9123 */ // No operand predicates
9858 /* 9123 */ // MIs[0] rhs
9859 /* 9123 */ // No operand predicates
9860 /* 9123 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9861 /* 9127 */ // Combiner Rule #269: G_SMULO_commute_constant_to_rhs
9862 /* 9127 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULO),
9863 /* 9130 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9864 /* 9132 */ GIR_RootToRootCopy, /*OpIdx*/1, // carry
9865 /* 9134 */ GIR_RootToRootCopy, /*OpIdx*/3, // rhs
9866 /* 9136 */ GIR_RootToRootCopy, /*OpIdx*/2, // lhs
9867 /* 9138 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9868 /* 9141 */ GIR_EraseRootFromParent_Done,
9869 /* 9142 */ // Label 425: @9142
9870 /* 9142 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(9153), // Rule ID 227 //
9871 /* 9147 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
9872 /* 9150 */ // MIs[0] dst
9873 /* 9150 */ // No operand predicates
9874 /* 9150 */ // MIs[0] carry
9875 /* 9150 */ // No operand predicates
9876 /* 9150 */ // MIs[0] x
9877 /* 9150 */ // No operand predicates
9878 /* 9150 */ // MIs[0] y
9879 /* 9150 */ // No operand predicates
9880 /* 9150 */ // Combiner Rule #177: mulo_by_0_smulo
9881 /* 9150 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
9882 /* 9153 */ // Label 426: @9153
9883 /* 9153 */ GIM_Reject,
9884 /* 9154 */ // Label 54: @9154
9885 /* 9154 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(9179), // Rule ID 390 //
9886 /* 9159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
9887 /* 9162 */ // MIs[0] dst
9888 /* 9162 */ // No operand predicates
9889 /* 9162 */ // MIs[0] lhs
9890 /* 9162 */ // No operand predicates
9891 /* 9162 */ // MIs[0] rhs
9892 /* 9162 */ // No operand predicates
9893 /* 9162 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9894 /* 9166 */ // Combiner Rule #258: G_UMULH_commute_constant_to_rhs
9895 /* 9166 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULH),
9896 /* 9169 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9897 /* 9171 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
9898 /* 9173 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
9899 /* 9175 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9900 /* 9178 */ GIR_EraseRootFromParent_Done,
9901 /* 9179 */ // Label 427: @9179
9902 /* 9179 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(9190), // Rule ID 324 //
9903 /* 9184 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
9904 /* 9187 */ // MIs[0] dst
9905 /* 9187 */ // No operand predicates
9906 /* 9187 */ // MIs[0] src1
9907 /* 9187 */ // No operand predicates
9908 /* 9187 */ // MIs[0] src2
9909 /* 9187 */ // No operand predicates
9910 /* 9187 */ // Combiner Rule #216: mulh_to_lshr
9911 /* 9187 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
9912 /* 9190 */ // Label 428: @9190
9913 /* 9190 */ GIM_Reject,
9914 /* 9191 */ // Label 55: @9191
9915 /* 9191 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(9216), // Rule ID 391 //
9916 /* 9196 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
9917 /* 9199 */ // MIs[0] dst
9918 /* 9199 */ // No operand predicates
9919 /* 9199 */ // MIs[0] lhs
9920 /* 9199 */ // No operand predicates
9921 /* 9199 */ // MIs[0] rhs
9922 /* 9199 */ // No operand predicates
9923 /* 9199 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9924 /* 9203 */ // Combiner Rule #259: G_SMULH_commute_constant_to_rhs
9925 /* 9203 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULH),
9926 /* 9206 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9927 /* 9208 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
9928 /* 9210 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
9929 /* 9212 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9930 /* 9215 */ GIR_EraseRootFromParent_Done,
9931 /* 9216 */ // Label 429: @9216
9932 /* 9216 */ GIM_Reject,
9933 /* 9217 */ // Label 56: @9217
9934 /* 9217 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(9242), // Rule ID 392 //
9935 /* 9222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
9936 /* 9225 */ // MIs[0] dst
9937 /* 9225 */ // No operand predicates
9938 /* 9225 */ // MIs[0] lhs
9939 /* 9225 */ // No operand predicates
9940 /* 9225 */ // MIs[0] rhs
9941 /* 9225 */ // No operand predicates
9942 /* 9225 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9943 /* 9229 */ // Combiner Rule #260: G_UADDSAT_commute_constant_to_rhs
9944 /* 9229 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UADDSAT),
9945 /* 9232 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9946 /* 9234 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
9947 /* 9236 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
9948 /* 9238 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9949 /* 9241 */ GIR_EraseRootFromParent_Done,
9950 /* 9242 */ // Label 430: @9242
9951 /* 9242 */ GIM_Reject,
9952 /* 9243 */ // Label 57: @9243
9953 /* 9243 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(9268), // Rule ID 393 //
9954 /* 9248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
9955 /* 9251 */ // MIs[0] dst
9956 /* 9251 */ // No operand predicates
9957 /* 9251 */ // MIs[0] lhs
9958 /* 9251 */ // No operand predicates
9959 /* 9251 */ // MIs[0] rhs
9960 /* 9251 */ // No operand predicates
9961 /* 9251 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
9962 /* 9255 */ // Combiner Rule #261: G_SADDSAT_commute_constant_to_rhs
9963 /* 9255 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SADDSAT),
9964 /* 9258 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9965 /* 9260 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
9966 /* 9262 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
9967 /* 9264 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9968 /* 9267 */ GIR_EraseRootFromParent_Done,
9969 /* 9268 */ // Label 431: @9268
9970 /* 9268 */ GIM_Reject,
9971 /* 9269 */ // Label 58: @9269
9972 /* 9269 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(9280), // Rule ID 248 //
9973 /* 9274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
9974 /* 9277 */ // MIs[0] d
9975 /* 9277 */ // No operand predicates
9976 /* 9277 */ // MIs[0] mi.base
9977 /* 9277 */ // No operand predicates
9978 /* 9277 */ // MIs[0] mi.amt
9979 /* 9277 */ // No operand predicates
9980 /* 9277 */ // Combiner Rule #190: shift_immed_chain @ [mi[4]]
9981 /* 9277 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
9982 /* 9280 */ // Label 432: @9280
9983 /* 9280 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(9291), // Rule ID 253 //
9984 /* 9285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9985 /* 9288 */ // MIs[0] d
9986 /* 9288 */ // No operand predicates
9987 /* 9288 */ // MIs[0] mi.base
9988 /* 9288 */ // No operand predicates
9989 /* 9288 */ // MIs[0] mi.amt
9990 /* 9288 */ // No operand predicates
9991 /* 9288 */ // Combiner Rule #191: shift_of_shifted_logic_chain @ [mi[4]]
9992 /* 9288 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
9993 /* 9291 */ // Label 433: @9291
9994 /* 9291 */ GIM_Reject,
9995 /* 9292 */ // Label 59: @9292
9996 /* 9292 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(9303), // Rule ID 247 //
9997 /* 9297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
9998 /* 9300 */ // MIs[0] d
9999 /* 9300 */ // No operand predicates
10000 /* 9300 */ // MIs[0] mi.base
10001 /* 9300 */ // No operand predicates
10002 /* 9300 */ // MIs[0] mi.amt
10003 /* 9300 */ // No operand predicates
10004 /* 9300 */ // Combiner Rule #190: shift_immed_chain @ [mi[3]]
10005 /* 9300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
10006 /* 9303 */ // Label 434: @9303
10007 /* 9303 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(9314), // Rule ID 252 //
10008 /* 9308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
10009 /* 9311 */ // MIs[0] d
10010 /* 9311 */ // No operand predicates
10011 /* 9311 */ // MIs[0] mi.base
10012 /* 9311 */ // No operand predicates
10013 /* 9311 */ // MIs[0] mi.amt
10014 /* 9311 */ // No operand predicates
10015 /* 9311 */ // Combiner Rule #191: shift_of_shifted_logic_chain @ [mi[3]]
10016 /* 9311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
10017 /* 9314 */ // Label 435: @9314
10018 /* 9314 */ GIM_Reject,
10019 /* 9315 */ // Label 60: @9315
10020 /* 9315 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(9342), // Rule ID 394 //
10021 /* 9320 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
10022 /* 9323 */ // MIs[0] dst
10023 /* 9323 */ // No operand predicates
10024 /* 9323 */ // MIs[0] lhs
10025 /* 9323 */ // No operand predicates
10026 /* 9323 */ // MIs[0] rhs
10027 /* 9323 */ // No operand predicates
10028 /* 9323 */ // MIs[0] scale
10029 /* 9323 */ // No operand predicates
10030 /* 9323 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
10031 /* 9327 */ // Combiner Rule #262: G_SMULFIX_commute_constant_to_rhs
10032 /* 9327 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULFIX),
10033 /* 9330 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10034 /* 9332 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10035 /* 9334 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10036 /* 9336 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
10037 /* 9338 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10038 /* 9341 */ GIR_EraseRootFromParent_Done,
10039 /* 9342 */ // Label 436: @9342
10040 /* 9342 */ GIM_Reject,
10041 /* 9343 */ // Label 61: @9343
10042 /* 9343 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(9370), // Rule ID 395 //
10043 /* 9348 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
10044 /* 9351 */ // MIs[0] dst
10045 /* 9351 */ // No operand predicates
10046 /* 9351 */ // MIs[0] lhs
10047 /* 9351 */ // No operand predicates
10048 /* 9351 */ // MIs[0] rhs
10049 /* 9351 */ // No operand predicates
10050 /* 9351 */ // MIs[0] scale
10051 /* 9351 */ // No operand predicates
10052 /* 9351 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
10053 /* 9355 */ // Combiner Rule #263: G_UMULFIX_commute_constant_to_rhs
10054 /* 9355 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULFIX),
10055 /* 9358 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10056 /* 9360 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10057 /* 9362 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10058 /* 9364 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
10059 /* 9366 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10060 /* 9369 */ GIR_EraseRootFromParent_Done,
10061 /* 9370 */ // Label 437: @9370
10062 /* 9370 */ GIM_Reject,
10063 /* 9371 */ // Label 62: @9371
10064 /* 9371 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(9398), // Rule ID 396 //
10065 /* 9376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule264Enabled),
10066 /* 9379 */ // MIs[0] dst
10067 /* 9379 */ // No operand predicates
10068 /* 9379 */ // MIs[0] lhs
10069 /* 9379 */ // No operand predicates
10070 /* 9379 */ // MIs[0] rhs
10071 /* 9379 */ // No operand predicates
10072 /* 9379 */ // MIs[0] scale
10073 /* 9379 */ // No operand predicates
10074 /* 9379 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
10075 /* 9383 */ // Combiner Rule #264: G_SMULFIXSAT_commute_constant_to_rhs
10076 /* 9383 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMULFIXSAT),
10077 /* 9386 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10078 /* 9388 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10079 /* 9390 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10080 /* 9392 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
10081 /* 9394 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10082 /* 9397 */ GIR_EraseRootFromParent_Done,
10083 /* 9398 */ // Label 438: @9398
10084 /* 9398 */ GIM_Reject,
10085 /* 9399 */ // Label 63: @9399
10086 /* 9399 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(9426), // Rule ID 397 //
10087 /* 9404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule265Enabled),
10088 /* 9407 */ // MIs[0] dst
10089 /* 9407 */ // No operand predicates
10090 /* 9407 */ // MIs[0] lhs
10091 /* 9407 */ // No operand predicates
10092 /* 9407 */ // MIs[0] rhs
10093 /* 9407 */ // No operand predicates
10094 /* 9407 */ // MIs[0] scale
10095 /* 9407 */ // No operand predicates
10096 /* 9407 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
10097 /* 9411 */ // Combiner Rule #265: G_UMULFIXSAT_commute_constant_to_rhs
10098 /* 9411 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMULFIXSAT),
10099 /* 9414 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10100 /* 9416 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10101 /* 9418 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10102 /* 9420 */ GIR_RootToRootCopy, /*OpIdx*/3, // scale
10103 /* 9422 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10104 /* 9425 */ GIR_EraseRootFromParent_Done,
10105 /* 9426 */ // Label 439: @9426
10106 /* 9426 */ GIM_Reject,
10107 /* 9427 */ // Label 64: @9427
10108 /* 9427 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(9464), // Rule ID 326 //
10109 /* 9432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
10110 /* 9435 */ // MIs[0] dst
10111 /* 9435 */ // No operand predicates
10112 /* 9435 */ // MIs[0] negy
10113 /* 9435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10114 /* 9439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10115 /* 9443 */ // MIs[1] y
10116 /* 9443 */ // No operand predicates
10117 /* 9443 */ // MIs[0] x
10118 /* 9443 */ // No operand predicates
10119 /* 9443 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41),
10120 /* 9447 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10121 /* 9449 */ // Combiner Rule #218: redundant_neg_operands_fadd_lhs
10122 /* 9449 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FSUB),
10123 /* 9452 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10124 /* 9454 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
10125 /* 9456 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // y
10126 /* 9460 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10127 /* 9463 */ GIR_EraseRootFromParent_Done,
10128 /* 9464 */ // Label 440: @9464
10129 /* 9464 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(9501), // Rule ID 325 //
10130 /* 9469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
10131 /* 9472 */ // MIs[0] dst
10132 /* 9472 */ // No operand predicates
10133 /* 9472 */ // MIs[0] x
10134 /* 9472 */ // No operand predicates
10135 /* 9472 */ // MIs[0] negy
10136 /* 9472 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10137 /* 9476 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10138 /* 9480 */ // MIs[1] y
10139 /* 9480 */ // No operand predicates
10140 /* 9480 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner41),
10141 /* 9484 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10142 /* 9486 */ // Combiner Rule #217: redundant_neg_operands_fadd_rhs
10143 /* 9486 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FSUB),
10144 /* 9489 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10145 /* 9491 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
10146 /* 9493 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // y
10147 /* 9497 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10148 /* 9500 */ GIR_EraseRootFromParent_Done,
10149 /* 9501 */ // Label 441: @9501
10150 /* 9501 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(9524), // Rule ID 158 //
10151 /* 9506 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
10152 /* 9509 */ // MIs[0] dst
10153 /* 9509 */ // No operand predicates
10154 /* 9509 */ // MIs[0] x
10155 /* 9509 */ // No operand predicates
10156 /* 9509 */ // MIs[0] y
10157 /* 9509 */ // No operand predicates
10158 /* 9509 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
10159 /* 9513 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10160 /* 9518 */ // Combiner Rule #113: right_identity_neg_zero_fp
10161 /* 9518 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10162 /* 9523 */ GIR_EraseRootFromParent_Done,
10163 /* 9524 */ // Label 442: @9524
10164 /* 9524 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(9549), // Rule ID 402 //
10165 /* 9529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule270Enabled),
10166 /* 9532 */ // MIs[0] dst
10167 /* 9532 */ // No operand predicates
10168 /* 9532 */ // MIs[0] lhs
10169 /* 9532 */ // No operand predicates
10170 /* 9532 */ // MIs[0] rhs
10171 /* 9532 */ // No operand predicates
10172 /* 9532 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
10173 /* 9536 */ // Combiner Rule #270: G_FADD_commute_fp_constant_to_rhs
10174 /* 9536 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FADD),
10175 /* 9539 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10176 /* 9541 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10177 /* 9543 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10178 /* 9545 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10179 /* 9548 */ GIR_EraseRootFromParent_Done,
10180 /* 9549 */ // Label 443: @9549
10181 /* 9549 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(9578), // Rule ID 159 //
10182 /* 9554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
10183 /* 9557 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
10184 /* 9563 */ // MIs[0] dst
10185 /* 9563 */ // No operand predicates
10186 /* 9563 */ // MIs[0] x
10187 /* 9563 */ // No operand predicates
10188 /* 9563 */ // MIs[0] y
10189 /* 9563 */ // No operand predicates
10190 /* 9563 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
10191 /* 9567 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10192 /* 9572 */ // Combiner Rule #114: right_identity_neg_zero_fp_nsz
10193 /* 9572 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10194 /* 9577 */ GIR_EraseRootFromParent_Done,
10195 /* 9578 */ // Label 444: @9578
10196 /* 9578 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(9589), // Rule ID 298 //
10197 /* 9583 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10198 /* 9586 */ // MIs[0] d
10199 /* 9586 */ // No operand predicates
10200 /* 9586 */ // MIs[0] mi.src0
10201 /* 9586 */ // No operand predicates
10202 /* 9586 */ // MIs[0] mi.src1
10203 /* 9586 */ // No operand predicates
10204 /* 9586 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[0]]
10205 /* 9586 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10206 /* 9589 */ // Label 445: @9589
10207 /* 9589 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(9600), // Rule ID 333 //
10208 /* 9594 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
10209 /* 9597 */ // MIs[0] dst
10210 /* 9597 */ // No operand predicates
10211 /* 9597 */ // MIs[0] src1
10212 /* 9597 */ // No operand predicates
10213 /* 9597 */ // MIs[0] src2
10214 /* 9597 */ // No operand predicates
10215 /* 9597 */ // Combiner Rule #225: combine_fadd_fmul_to_fmad_or_fma
10216 /* 9597 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
10217 /* 9600 */ // Label 446: @9600
10218 /* 9600 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(9611), // Rule ID 334 //
10219 /* 9605 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
10220 /* 9608 */ // MIs[0] dst
10221 /* 9608 */ // No operand predicates
10222 /* 9608 */ // MIs[0] src1
10223 /* 9608 */ // No operand predicates
10224 /* 9608 */ // MIs[0] src2
10225 /* 9608 */ // No operand predicates
10226 /* 9608 */ // Combiner Rule #226: combine_fadd_fpext_fmul_to_fmad_or_fma
10227 /* 9608 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
10228 /* 9611 */ // Label 447: @9611
10229 /* 9611 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(9622), // Rule ID 335 //
10230 /* 9616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10231 /* 9619 */ // MIs[0] dst
10232 /* 9619 */ // No operand predicates
10233 /* 9619 */ // MIs[0] src1
10234 /* 9619 */ // No operand predicates
10235 /* 9619 */ // MIs[0] src2
10236 /* 9619 */ // No operand predicates
10237 /* 9619 */ // Combiner Rule #227: combine_fadd_fma_fmul_to_fmad_or_fma
10238 /* 9619 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
10239 /* 9622 */ // Label 448: @9622
10240 /* 9622 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(9633), // Rule ID 336 //
10241 /* 9627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
10242 /* 9630 */ // MIs[0] dst
10243 /* 9630 */ // No operand predicates
10244 /* 9630 */ // MIs[0] src1
10245 /* 9630 */ // No operand predicates
10246 /* 9630 */ // MIs[0] src2
10247 /* 9630 */ // No operand predicates
10248 /* 9630 */ // Combiner Rule #228: combine_fadd_fpext_fma_fmul_to_fmad_or_fma
10249 /* 9630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
10250 /* 9633 */ // Label 449: @9633
10251 /* 9633 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(9644), // Rule ID 359 //
10252 /* 9638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
10253 /* 9641 */ // MIs[0] root
10254 /* 9641 */ // No operand predicates
10255 /* 9641 */ // MIs[0] mi.x
10256 /* 9641 */ // No operand predicates
10257 /* 9641 */ // MIs[0] mi.y
10258 /* 9641 */ // No operand predicates
10259 /* 9641 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[5]]
10260 /* 9641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
10261 /* 9644 */ // Label 450: @9644
10262 /* 9644 */ GIM_Reject,
10263 /* 9645 */ // Label 65: @9645
10264 /* 9645 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(9686), // Rule ID 380 //
10265 /* 9650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
10266 /* 9653 */ // MIs[0] dst
10267 /* 9653 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
10268 /* 9657 */ // MIs[0] lhs
10269 /* 9657 */ // No operand predicates
10270 /* 9657 */ // MIs[0] rhs
10271 /* 9657 */ // No operand predicates
10272 /* 9657 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner47),
10273 /* 9661 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
10274 /* 9664 */ // Combiner Rule #248: fsub_to_fneg
10275 /* 9664 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
10276 /* 9667 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
10277 /* 9672 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10278 /* 9674 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
10279 /* 9678 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
10280 /* 9682 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
10281 /* 9685 */ GIR_EraseRootFromParent_Done,
10282 /* 9686 */ // Label 451: @9686
10283 /* 9686 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(9723), // Rule ID 327 //
10284 /* 9691 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
10285 /* 9694 */ // MIs[0] dst
10286 /* 9694 */ // No operand predicates
10287 /* 9694 */ // MIs[0] x
10288 /* 9694 */ // No operand predicates
10289 /* 9694 */ // MIs[0] negy
10290 /* 9694 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10291 /* 9698 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10292 /* 9702 */ // MIs[1] y
10293 /* 9702 */ // No operand predicates
10294 /* 9702 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner42),
10295 /* 9706 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10296 /* 9708 */ // Combiner Rule #219: redundant_neg_operands_fsub
10297 /* 9708 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FADD),
10298 /* 9711 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10299 /* 9713 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
10300 /* 9715 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // y
10301 /* 9719 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10302 /* 9722 */ GIR_EraseRootFromParent_Done,
10303 /* 9723 */ // Label 452: @9723
10304 /* 9723 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(9734), // Rule ID 299 //
10305 /* 9728 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10306 /* 9731 */ // MIs[0] d
10307 /* 9731 */ // No operand predicates
10308 /* 9731 */ // MIs[0] mi.src0
10309 /* 9731 */ // No operand predicates
10310 /* 9731 */ // MIs[0] mi.src1
10311 /* 9731 */ // No operand predicates
10312 /* 9731 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[1]]
10313 /* 9731 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10314 /* 9734 */ // Label 453: @9734
10315 /* 9734 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(9745), // Rule ID 337 //
10316 /* 9739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
10317 /* 9742 */ // MIs[0] dst
10318 /* 9742 */ // No operand predicates
10319 /* 9742 */ // MIs[0] src1
10320 /* 9742 */ // No operand predicates
10321 /* 9742 */ // MIs[0] src2
10322 /* 9742 */ // No operand predicates
10323 /* 9742 */ // Combiner Rule #229: combine_fsub_fmul_to_fmad_or_fma
10324 /* 9742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
10325 /* 9745 */ // Label 454: @9745
10326 /* 9745 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(9756), // Rule ID 338 //
10327 /* 9750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
10328 /* 9753 */ // MIs[0] dst
10329 /* 9753 */ // No operand predicates
10330 /* 9753 */ // MIs[0] src1
10331 /* 9753 */ // No operand predicates
10332 /* 9753 */ // MIs[0] src2
10333 /* 9753 */ // No operand predicates
10334 /* 9753 */ // Combiner Rule #230: combine_fsub_fneg_fmul_to_fmad_or_fma
10335 /* 9753 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
10336 /* 9756 */ // Label 455: @9756
10337 /* 9756 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(9767), // Rule ID 339 //
10338 /* 9761 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
10339 /* 9764 */ // MIs[0] dst
10340 /* 9764 */ // No operand predicates
10341 /* 9764 */ // MIs[0] src1
10342 /* 9764 */ // No operand predicates
10343 /* 9764 */ // MIs[0] src2
10344 /* 9764 */ // No operand predicates
10345 /* 9764 */ // Combiner Rule #231: combine_fsub_fpext_fmul_to_fmad_or_fma
10346 /* 9764 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10347 /* 9767 */ // Label 456: @9767
10348 /* 9767 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(9778), // Rule ID 340 //
10349 /* 9772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
10350 /* 9775 */ // MIs[0] dst
10351 /* 9775 */ // No operand predicates
10352 /* 9775 */ // MIs[0] src1
10353 /* 9775 */ // No operand predicates
10354 /* 9775 */ // MIs[0] src2
10355 /* 9775 */ // No operand predicates
10356 /* 9775 */ // Combiner Rule #232: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma
10357 /* 9775 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10358 /* 9778 */ // Label 457: @9778
10359 /* 9778 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(9789), // Rule ID 360 //
10360 /* 9783 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
10361 /* 9786 */ // MIs[0] root
10362 /* 9786 */ // No operand predicates
10363 /* 9786 */ // MIs[0] mi.x
10364 /* 9786 */ // No operand predicates
10365 /* 9786 */ // MIs[0] mi.y
10366 /* 9786 */ // No operand predicates
10367 /* 9786 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[6]]
10368 /* 9786 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
10369 /* 9789 */ // Label 458: @9789
10370 /* 9789 */ GIM_Reject,
10371 /* 9790 */ // Label 66: @9790
10372 /* 9790 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(9833), // Rule ID 328 //
10373 /* 9795 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
10374 /* 9798 */ // MIs[0] dst
10375 /* 9798 */ // No operand predicates
10376 /* 9798 */ // MIs[0] nx
10377 /* 9798 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10378 /* 9802 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10379 /* 9806 */ // MIs[1] x
10380 /* 9806 */ // No operand predicates
10381 /* 9806 */ // MIs[0] ny
10382 /* 9806 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10383 /* 9810 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
10384 /* 9814 */ // MIs[2] y
10385 /* 9814 */ // No operand predicates
10386 /* 9814 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10387 /* 9816 */ // Combiner Rule #220: G_FMUL_fneg_fneg
10388 /* 9816 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMUL),
10389 /* 9819 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10390 /* 9821 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
10391 /* 9825 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
10392 /* 9829 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10393 /* 9832 */ GIR_EraseRootFromParent_Done,
10394 /* 9833 */ // Label 459: @9833
10395 /* 9833 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(9856), // Rule ID 148 //
10396 /* 9838 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
10397 /* 9841 */ // MIs[0] dst
10398 /* 9841 */ // No operand predicates
10399 /* 9841 */ // MIs[0] x
10400 /* 9841 */ // No operand predicates
10401 /* 9841 */ // MIs[0] y
10402 /* 9841 */ // No operand predicates
10403 /* 9841 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
10404 /* 9845 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10405 /* 9850 */ // Combiner Rule #104: right_identity_one_fp
10406 /* 9850 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10407 /* 9855 */ GIR_EraseRootFromParent_Done,
10408 /* 9856 */ // Label 460: @9856
10409 /* 9856 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(9876), // Rule ID 160 //
10410 /* 9861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
10411 /* 9864 */ // MIs[0] dst
10412 /* 9864 */ // No operand predicates
10413 /* 9864 */ // MIs[0] x
10414 /* 9864 */ // No operand predicates
10415 /* 9864 */ // MIs[0] y
10416 /* 9864 */ // No operand predicates
10417 /* 9864 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
10418 /* 9868 */ // Combiner Rule #115: right_identity_neg_one_fp
10419 /* 9868 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
10420 /* 9871 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10421 /* 9873 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
10422 /* 9875 */ GIR_EraseRootFromParent_Done,
10423 /* 9876 */ // Label 461: @9876
10424 /* 9876 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(9901), // Rule ID 403 //
10425 /* 9881 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
10426 /* 9884 */ // MIs[0] dst
10427 /* 9884 */ // No operand predicates
10428 /* 9884 */ // MIs[0] lhs
10429 /* 9884 */ // No operand predicates
10430 /* 9884 */ // MIs[0] rhs
10431 /* 9884 */ // No operand predicates
10432 /* 9884 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
10433 /* 9888 */ // Combiner Rule #271: G_FMUL_commute_fp_constant_to_rhs
10434 /* 9888 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMUL),
10435 /* 9891 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10436 /* 9893 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10437 /* 9895 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10438 /* 9897 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10439 /* 9900 */ GIR_EraseRootFromParent_Done,
10440 /* 9901 */ // Label 462: @9901
10441 /* 9901 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(9912), // Rule ID 300 //
10442 /* 9906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10443 /* 9909 */ // MIs[0] d
10444 /* 9909 */ // No operand predicates
10445 /* 9909 */ // MIs[0] mi.src0
10446 /* 9909 */ // No operand predicates
10447 /* 9909 */ // MIs[0] mi.src1
10448 /* 9909 */ // No operand predicates
10449 /* 9909 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[2]]
10450 /* 9909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10451 /* 9912 */ // Label 463: @9912
10452 /* 9912 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(9923), // Rule ID 358 //
10453 /* 9917 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
10454 /* 9920 */ // MIs[0] root
10455 /* 9920 */ // No operand predicates
10456 /* 9920 */ // MIs[0] mi.x
10457 /* 9920 */ // No operand predicates
10458 /* 9920 */ // MIs[0] mi.y
10459 /* 9920 */ // No operand predicates
10460 /* 9920 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[4]]
10461 /* 9920 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
10462 /* 9923 */ // Label 464: @9923
10463 /* 9923 */ GIM_Reject,
10464 /* 9924 */ // Label 67: @9924
10465 /* 9924 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(9969), // Rule ID 331 //
10466 /* 9929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
10467 /* 9932 */ // MIs[0] dst
10468 /* 9932 */ // No operand predicates
10469 /* 9932 */ // MIs[0] nx
10470 /* 9932 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10471 /* 9936 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10472 /* 9940 */ // MIs[1] x
10473 /* 9940 */ // No operand predicates
10474 /* 9940 */ // MIs[0] ny
10475 /* 9940 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10476 /* 9944 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
10477 /* 9948 */ // MIs[2] y
10478 /* 9948 */ // No operand predicates
10479 /* 9948 */ // MIs[0] z
10480 /* 9948 */ // No operand predicates
10481 /* 9948 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10482 /* 9950 */ // Combiner Rule #223: G_FMA_fneg_fneg
10483 /* 9950 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMA),
10484 /* 9953 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10485 /* 9955 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
10486 /* 9959 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
10487 /* 9963 */ GIR_RootToRootCopy, /*OpIdx*/3, // z
10488 /* 9965 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10489 /* 9968 */ GIR_EraseRootFromParent_Done,
10490 /* 9969 */ // Label 465: @9969
10491 /* 9969 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(9980), // Rule ID 311 //
10492 /* 9974 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
10493 /* 9977 */ // MIs[0] dst
10494 /* 9977 */ // No operand predicates
10495 /* 9977 */ // MIs[0] d.src0
10496 /* 9977 */ // No operand predicates
10497 /* 9977 */ // MIs[0] d.src1
10498 /* 9977 */ // No operand predicates
10499 /* 9977 */ // MIs[0] d.src2
10500 /* 9977 */ // No operand predicates
10501 /* 9977 */ // Combiner Rule #212: constant_fold_fma @ [d[1]]
10502 /* 9977 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
10503 /* 9980 */ // Label 466: @9980
10504 /* 9980 */ GIM_Reject,
10505 /* 9981 */ // Label 68: @9981
10506 /* 9981 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(10026), // Rule ID 330 //
10507 /* 9986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
10508 /* 9989 */ // MIs[0] dst
10509 /* 9989 */ // No operand predicates
10510 /* 9989 */ // MIs[0] nx
10511 /* 9989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10512 /* 9993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10513 /* 9997 */ // MIs[1] x
10514 /* 9997 */ // No operand predicates
10515 /* 9997 */ // MIs[0] ny
10516 /* 9997 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10517 /* 10001 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
10518 /* 10005 */ // MIs[2] y
10519 /* 10005 */ // No operand predicates
10520 /* 10005 */ // MIs[0] z
10521 /* 10005 */ // No operand predicates
10522 /* 10005 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10523 /* 10007 */ // Combiner Rule #222: G_FMAD_fneg_fneg
10524 /* 10007 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAD),
10525 /* 10010 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10526 /* 10012 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
10527 /* 10016 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
10528 /* 10020 */ GIR_RootToRootCopy, /*OpIdx*/3, // z
10529 /* 10022 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10530 /* 10025 */ GIR_EraseRootFromParent_Done,
10531 /* 10026 */ // Label 467: @10026
10532 /* 10026 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(10037), // Rule ID 310 //
10533 /* 10031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
10534 /* 10034 */ // MIs[0] dst
10535 /* 10034 */ // No operand predicates
10536 /* 10034 */ // MIs[0] d.src0
10537 /* 10034 */ // No operand predicates
10538 /* 10034 */ // MIs[0] d.src1
10539 /* 10034 */ // No operand predicates
10540 /* 10034 */ // MIs[0] d.src2
10541 /* 10034 */ // No operand predicates
10542 /* 10034 */ // Combiner Rule #212: constant_fold_fma @ [d[0]]
10543 /* 10034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
10544 /* 10037 */ // Label 468: @10037
10545 /* 10037 */ GIM_Reject,
10546 /* 10038 */ // Label 69: @10038
10547 /* 10038 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(10081), // Rule ID 329 //
10548 /* 10043 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
10549 /* 10046 */ // MIs[0] dst
10550 /* 10046 */ // No operand predicates
10551 /* 10046 */ // MIs[0] nx
10552 /* 10046 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10553 /* 10050 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10554 /* 10054 */ // MIs[1] x
10555 /* 10054 */ // No operand predicates
10556 /* 10054 */ // MIs[0] ny
10557 /* 10054 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10558 /* 10058 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
10559 /* 10062 */ // MIs[2] y
10560 /* 10062 */ // No operand predicates
10561 /* 10062 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10562 /* 10064 */ // Combiner Rule #221: G_FDIV_fneg_fneg
10563 /* 10064 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FDIV),
10564 /* 10067 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10565 /* 10069 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
10566 /* 10073 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
10567 /* 10077 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10568 /* 10080 */ GIR_EraseRootFromParent_Done,
10569 /* 10081 */ // Label 469: @10081
10570 /* 10081 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(10092), // Rule ID 301 //
10571 /* 10086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10572 /* 10089 */ // MIs[0] d
10573 /* 10089 */ // No operand predicates
10574 /* 10089 */ // MIs[0] mi.src0
10575 /* 10089 */ // No operand predicates
10576 /* 10089 */ // MIs[0] mi.src1
10577 /* 10089 */ // No operand predicates
10578 /* 10089 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[3]]
10579 /* 10089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10580 /* 10092 */ // Label 470: @10092
10581 /* 10092 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(10103), // Rule ID 361 //
10582 /* 10097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
10583 /* 10100 */ // MIs[0] root
10584 /* 10100 */ // No operand predicates
10585 /* 10100 */ // MIs[0] mi.x
10586 /* 10100 */ // No operand predicates
10587 /* 10100 */ // MIs[0] mi.y
10588 /* 10100 */ // No operand predicates
10589 /* 10100 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[7]]
10590 /* 10100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
10591 /* 10103 */ // Label 471: @10103
10592 /* 10103 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(10114), // Rule ID 374 //
10593 /* 10108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
10594 /* 10111 */ // MIs[0] dst
10595 /* 10111 */ // No operand predicates
10596 /* 10111 */ // MIs[0] src1
10597 /* 10111 */ // No operand predicates
10598 /* 10111 */ // MIs[0] src2
10599 /* 10111 */ // No operand predicates
10600 /* 10111 */ // Combiner Rule #242: fdiv_repeated_divison
10601 /* 10111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
10602 /* 10114 */ // Label 472: @10114
10603 /* 10114 */ GIM_Reject,
10604 /* 10115 */ // Label 70: @10115
10605 /* 10115 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(10126), // Rule ID 302 //
10606 /* 10120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10607 /* 10123 */ // MIs[0] d
10608 /* 10123 */ // No operand predicates
10609 /* 10123 */ // MIs[0] mi.src0
10610 /* 10123 */ // No operand predicates
10611 /* 10123 */ // MIs[0] mi.src1
10612 /* 10123 */ // No operand predicates
10613 /* 10123 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[4]]
10614 /* 10123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10615 /* 10126 */ // Label 473: @10126
10616 /* 10126 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(10137), // Rule ID 362 //
10617 /* 10131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
10618 /* 10134 */ // MIs[0] root
10619 /* 10134 */ // No operand predicates
10620 /* 10134 */ // MIs[0] mi.x
10621 /* 10134 */ // No operand predicates
10622 /* 10134 */ // MIs[0] mi.y
10623 /* 10134 */ // No operand predicates
10624 /* 10134 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[8]]
10625 /* 10134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
10626 /* 10137 */ // Label 474: @10137
10627 /* 10137 */ GIM_Reject,
10628 /* 10138 */ // Label 71: @10138
10629 /* 10138 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(10159), // Rule ID 240 //
10630 /* 10143 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
10631 /* 10146 */ // MIs[0] dst
10632 /* 10146 */ // No operand predicates
10633 /* 10146 */ // MIs[0] float
10634 /* 10146 */ // No operand predicates
10635 /* 10146 */ // MIs[0] int
10636 /* 10146 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10637 /* 10150 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10638 /* 10154 */ // MIs[1] imm
10639 /* 10154 */ // No operand predicates
10640 /* 10154 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10641 /* 10156 */ // Combiner Rule #186: expand_const_fpowi
10642 /* 10156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
10643 /* 10159 */ // Label 475: @10159
10644 /* 10159 */ GIM_Reject,
10645 /* 10160 */ // Label 72: @10160
10646 /* 10160 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(10181), // Rule ID 210 //
10647 /* 10165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
10648 /* 10168 */ // MIs[0] dst
10649 /* 10168 */ // No operand predicates
10650 /* 10168 */ // MIs[0] src0
10651 /* 10168 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10652 /* 10172 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10653 /* 10176 */ // MIs[1] cst
10654 /* 10176 */ // No operand predicates
10655 /* 10176 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10656 /* 10178 */ // Combiner Rule #160: constant_fold_flog2
10657 /* 10178 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
10658 /* 10181 */ // Label 476: @10181
10659 /* 10181 */ GIM_Reject,
10660 /* 10182 */ // Label 73: @10182
10661 /* 10182 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(10203), // Rule ID 207 //
10662 /* 10187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
10663 /* 10190 */ // MIs[0] dst
10664 /* 10190 */ // No operand predicates
10665 /* 10190 */ // MIs[0] src0
10666 /* 10190 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10667 /* 10194 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10668 /* 10198 */ // MIs[1] cst
10669 /* 10198 */ // No operand predicates
10670 /* 10198 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10671 /* 10200 */ // Combiner Rule #157: constant_fold_fneg
10672 /* 10200 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
10673 /* 10203 */ // Label 477: @10203
10674 /* 10203 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(10232), // Rule ID 146 //
10675 /* 10208 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
10676 /* 10211 */ // MIs[0] dst
10677 /* 10211 */ // No operand predicates
10678 /* 10211 */ // MIs[0] t
10679 /* 10211 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10680 /* 10215 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10681 /* 10219 */ // MIs[1] src
10682 /* 10219 */ // No operand predicates
10683 /* 10219 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
10684 /* 10224 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10685 /* 10226 */ // Combiner Rule #102: fneg_fneg_fold
10686 /* 10226 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
10687 /* 10231 */ GIR_EraseRootFromParent_Done,
10688 /* 10232 */ // Label 478: @10232
10689 /* 10232 */ GIM_Reject,
10690 /* 10233 */ // Label 74: @10233
10691 /* 10233 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(10254), // Rule ID 212 //
10692 /* 10238 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
10693 /* 10241 */ // MIs[0] dst
10694 /* 10241 */ // No operand predicates
10695 /* 10241 */ // MIs[0] src0
10696 /* 10241 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10697 /* 10245 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10698 /* 10249 */ // MIs[1] cst
10699 /* 10249 */ // No operand predicates
10700 /* 10249 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10701 /* 10251 */ // Combiner Rule #162: constant_fold_fpext
10702 /* 10251 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
10703 /* 10254 */ // Label 479: @10254
10704 /* 10254 */ GIM_Reject,
10705 /* 10255 */ // Label 75: @10255
10706 /* 10255 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(10276), // Rule ID 211 //
10707 /* 10260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
10708 /* 10263 */ // MIs[0] dst
10709 /* 10263 */ // No operand predicates
10710 /* 10263 */ // MIs[0] src0
10711 /* 10263 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10712 /* 10267 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10713 /* 10271 */ // MIs[1] cst
10714 /* 10271 */ // No operand predicates
10715 /* 10271 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10716 /* 10273 */ // Combiner Rule #161: constant_fold_fptrunc
10717 /* 10273 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
10718 /* 10276 */ // Label 480: @10276
10719 /* 10276 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(10309), // Rule ID 157 //
10720 /* 10281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
10721 /* 10284 */ // MIs[0] dst
10722 /* 10284 */ // No operand predicates
10723 /* 10284 */ // MIs[0] src1
10724 /* 10284 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10725 /* 10288 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
10726 /* 10292 */ // MIs[1] src0
10727 /* 10292 */ // No operand predicates
10728 /* 10292 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
10729 /* 10296 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
10730 /* 10301 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10731 /* 10303 */ // Combiner Rule #112: fptrunc_fpext_fold
10732 /* 10303 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
10733 /* 10308 */ GIR_EraseRootFromParent_Done,
10734 /* 10309 */ // Label 481: @10309
10735 /* 10309 */ GIM_Reject,
10736 /* 10310 */ // Label 76: @10310
10737 /* 10310 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(10334), // Rule ID 102 //
10738 /* 10315 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
10739 /* 10318 */ // MIs[0] dst
10740 /* 10318 */ // No operand predicates
10741 /* 10318 */ // MIs[0] __unary_undef_to_undef_match_0.x
10742 /* 10318 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10743 /* 10322 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10744 /* 10326 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10745 /* 10328 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
10746 /* 10328 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10747 /* 10331 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10748 /* 10333 */ GIR_EraseRootFromParent_Done,
10749 /* 10334 */ // Label 482: @10334
10750 /* 10334 */ GIM_Reject,
10751 /* 10335 */ // Label 77: @10335
10752 /* 10335 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(10359), // Rule ID 103 //
10753 /* 10340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
10754 /* 10343 */ // MIs[0] dst
10755 /* 10343 */ // No operand predicates
10756 /* 10343 */ // MIs[0] __unary_undef_to_undef_match_0.x
10757 /* 10343 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10758 /* 10347 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10759 /* 10351 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10760 /* 10353 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
10761 /* 10353 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10762 /* 10356 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10763 /* 10358 */ GIR_EraseRootFromParent_Done,
10764 /* 10359 */ // Label 483: @10359
10765 /* 10359 */ GIM_Reject,
10766 /* 10360 */ // Label 78: @10360
10767 /* 10360 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(10381), // Rule ID 83 //
10768 /* 10365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
10769 /* 10368 */ // MIs[0] dst
10770 /* 10368 */ // No operand predicates
10771 /* 10368 */ // MIs[0] __undef_to_fp_zero_match_0.x
10772 /* 10368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10773 /* 10372 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10774 /* 10376 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10775 /* 10378 */ // Combiner Rule #76: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[1]]
10776 /* 10378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
10777 /* 10381 */ // Label 484: @10381
10778 /* 10381 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(10396), // Rule ID 220 //
10779 /* 10386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
10780 /* 10389 */ // MIs[0] dst
10781 /* 10389 */ // No operand predicates
10782 /* 10389 */ // MIs[0] Operand 1
10783 /* 10389 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
10784 /* 10393 */ // Combiner Rule #170: itof_const_zero_fold_si
10785 /* 10393 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
10786 /* 10396 */ // Label 485: @10396
10787 /* 10396 */ GIM_Reject,
10788 /* 10397 */ // Label 79: @10397
10789 /* 10397 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(10418), // Rule ID 82 //
10790 /* 10402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
10791 /* 10405 */ // MIs[0] dst
10792 /* 10405 */ // No operand predicates
10793 /* 10405 */ // MIs[0] __undef_to_fp_zero_match_0.x
10794 /* 10405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10795 /* 10409 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10796 /* 10413 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10797 /* 10415 */ // Combiner Rule #76: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[0]]
10798 /* 10415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
10799 /* 10418 */ // Label 486: @10418
10800 /* 10418 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(10433), // Rule ID 221 //
10801 /* 10423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
10802 /* 10426 */ // MIs[0] dst
10803 /* 10426 */ // No operand predicates
10804 /* 10426 */ // MIs[0] Operand 1
10805 /* 10426 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
10806 /* 10430 */ // Combiner Rule #171: itof_const_zero_fold_ui
10807 /* 10430 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
10808 /* 10433 */ // Label 487: @10433
10809 /* 10433 */ GIM_Reject,
10810 /* 10434 */ // Label 80: @10434
10811 /* 10434 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(10463), // Rule ID 26 //
10812 /* 10439 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
10813 /* 10442 */ // MIs[0] dst
10814 /* 10442 */ // No operand predicates
10815 /* 10442 */ // MIs[0] src
10816 /* 10442 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10817 /* 10446 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
10818 /* 10450 */ // MIs[1] __idempotent_prop_match_0.x
10819 /* 10450 */ // No operand predicates
10820 /* 10450 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10821 /* 10455 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10822 /* 10457 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
10823 /* 10457 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10824 /* 10462 */ GIR_EraseRootFromParent_Done,
10825 /* 10463 */ // Label 488: @10463
10826 /* 10463 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(10484), // Rule ID 208 //
10827 /* 10468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
10828 /* 10471 */ // MIs[0] dst
10829 /* 10471 */ // No operand predicates
10830 /* 10471 */ // MIs[0] src0
10831 /* 10471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10832 /* 10475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10833 /* 10479 */ // MIs[1] cst
10834 /* 10479 */ // No operand predicates
10835 /* 10479 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10836 /* 10481 */ // Combiner Rule #158: constant_fold_fabs
10837 /* 10481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
10838 /* 10484 */ // Label 489: @10484
10839 /* 10484 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(10512), // Rule ID 323 //
10840 /* 10489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10841 /* 10492 */ // MIs[0] dst
10842 /* 10492 */ // No operand predicates
10843 /* 10492 */ // MIs[0] tmp
10844 /* 10492 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10845 /* 10496 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
10846 /* 10500 */ // MIs[1] x
10847 /* 10500 */ // No operand predicates
10848 /* 10500 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10849 /* 10502 */ // Combiner Rule #215: fabs_fneg_fold
10850 /* 10502 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
10851 /* 10505 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10852 /* 10507 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
10853 /* 10511 */ GIR_EraseRootFromParent_Done,
10854 /* 10512 */ // Label 490: @10512
10855 /* 10512 */ GIM_Reject,
10856 /* 10513 */ // Label 81: @10513
10857 /* 10513 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(10524), // Rule ID 303 //
10858 /* 10518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10859 /* 10521 */ // MIs[0] d
10860 /* 10521 */ // No operand predicates
10861 /* 10521 */ // MIs[0] mi.src0
10862 /* 10521 */ // No operand predicates
10863 /* 10521 */ // MIs[0] mi.src1
10864 /* 10521 */ // No operand predicates
10865 /* 10521 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[5]]
10866 /* 10521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10867 /* 10524 */ // Label 491: @10524
10868 /* 10524 */ GIM_Reject,
10869 /* 10525 */ // Label 82: @10525
10870 /* 10525 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(10554), // Rule ID 27 //
10871 /* 10530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
10872 /* 10533 */ // MIs[0] dst
10873 /* 10533 */ // No operand predicates
10874 /* 10533 */ // MIs[0] src
10875 /* 10533 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10876 /* 10537 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
10877 /* 10541 */ // MIs[1] __idempotent_prop_match_0.x
10878 /* 10541 */ // No operand predicates
10879 /* 10541 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10880 /* 10546 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10881 /* 10548 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
10882 /* 10548 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10883 /* 10553 */ GIR_EraseRootFromParent_Done,
10884 /* 10554 */ // Label 492: @10554
10885 /* 10554 */ GIM_Reject,
10886 /* 10555 */ // Label 83: @10555
10887 /* 10555 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(10578), // Rule ID 232 //
10888 /* 10560 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
10889 /* 10563 */ // MIs[0] dst
10890 /* 10563 */ // No operand predicates
10891 /* 10563 */ // MIs[0] lhs
10892 /* 10563 */ // No operand predicates
10893 /* 10563 */ // MIs[0] rhs
10894 /* 10563 */ // No operand predicates
10895 /* 10563 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
10896 /* 10567 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
10897 /* 10572 */ // Combiner Rule #182: minmax_nan_num_lhs @ [__minmax_nan_num_lhs_match_0[0]]
10898 /* 10572 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
10899 /* 10577 */ GIR_EraseRootFromParent_Done,
10900 /* 10578 */ // Label 493: @10578
10901 /* 10578 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(10601), // Rule ID 234 //
10902 /* 10583 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
10903 /* 10586 */ // MIs[0] dst
10904 /* 10586 */ // No operand predicates
10905 /* 10586 */ // MIs[0] lhs
10906 /* 10586 */ // No operand predicates
10907 /* 10586 */ // MIs[0] rhs
10908 /* 10586 */ // No operand predicates
10909 /* 10586 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
10910 /* 10590 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10911 /* 10595 */ // Combiner Rule #183: minmax_nan_num_rhs @ [__minmax_nan_num_rhs_match_0[0]]
10912 /* 10595 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10913 /* 10600 */ GIR_EraseRootFromParent_Done,
10914 /* 10601 */ // Label 494: @10601
10915 /* 10601 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(10626), // Rule ID 404 //
10916 /* 10606 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule272Enabled),
10917 /* 10609 */ // MIs[0] dst
10918 /* 10609 */ // No operand predicates
10919 /* 10609 */ // MIs[0] lhs
10920 /* 10609 */ // No operand predicates
10921 /* 10609 */ // MIs[0] rhs
10922 /* 10609 */ // No operand predicates
10923 /* 10609 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
10924 /* 10613 */ // Combiner Rule #272: G_FMINNUM_commute_fp_constant_to_rhs
10925 /* 10613 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINNUM),
10926 /* 10616 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10927 /* 10618 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10928 /* 10620 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10929 /* 10622 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10930 /* 10625 */ GIR_EraseRootFromParent_Done,
10931 /* 10626 */ // Label 495: @10626
10932 /* 10626 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(10637), // Rule ID 304 //
10933 /* 10631 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
10934 /* 10634 */ // MIs[0] d
10935 /* 10634 */ // No operand predicates
10936 /* 10634 */ // MIs[0] mi.src0
10937 /* 10634 */ // No operand predicates
10938 /* 10634 */ // MIs[0] mi.src1
10939 /* 10634 */ // No operand predicates
10940 /* 10634 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[6]]
10941 /* 10634 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
10942 /* 10637 */ // Label 496: @10637
10943 /* 10637 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(10648), // Rule ID 363 //
10944 /* 10642 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
10945 /* 10645 */ // MIs[0] root
10946 /* 10645 */ // No operand predicates
10947 /* 10645 */ // MIs[0] mi.x
10948 /* 10645 */ // No operand predicates
10949 /* 10645 */ // MIs[0] mi.y
10950 /* 10645 */ // No operand predicates
10951 /* 10645 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[9]]
10952 /* 10645 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
10953 /* 10648 */ // Label 497: @10648
10954 /* 10648 */ GIM_Reject,
10955 /* 10649 */ // Label 84: @10649
10956 /* 10649 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(10672), // Rule ID 233 //
10957 /* 10654 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
10958 /* 10657 */ // MIs[0] dst
10959 /* 10657 */ // No operand predicates
10960 /* 10657 */ // MIs[0] lhs
10961 /* 10657 */ // No operand predicates
10962 /* 10657 */ // MIs[0] rhs
10963 /* 10657 */ // No operand predicates
10964 /* 10657 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
10965 /* 10661 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
10966 /* 10666 */ // Combiner Rule #182: minmax_nan_num_lhs @ [__minmax_nan_num_lhs_match_0[1]]
10967 /* 10666 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
10968 /* 10671 */ GIR_EraseRootFromParent_Done,
10969 /* 10672 */ // Label 498: @10672
10970 /* 10672 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(10695), // Rule ID 235 //
10971 /* 10677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
10972 /* 10680 */ // MIs[0] dst
10973 /* 10680 */ // No operand predicates
10974 /* 10680 */ // MIs[0] lhs
10975 /* 10680 */ // No operand predicates
10976 /* 10680 */ // MIs[0] rhs
10977 /* 10680 */ // No operand predicates
10978 /* 10680 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
10979 /* 10684 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10980 /* 10689 */ // Combiner Rule #183: minmax_nan_num_rhs @ [__minmax_nan_num_rhs_match_0[1]]
10981 /* 10689 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10982 /* 10694 */ GIR_EraseRootFromParent_Done,
10983 /* 10695 */ // Label 499: @10695
10984 /* 10695 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(10720), // Rule ID 405 //
10985 /* 10700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule273Enabled),
10986 /* 10703 */ // MIs[0] dst
10987 /* 10703 */ // No operand predicates
10988 /* 10703 */ // MIs[0] lhs
10989 /* 10703 */ // No operand predicates
10990 /* 10703 */ // MIs[0] rhs
10991 /* 10703 */ // No operand predicates
10992 /* 10703 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
10993 /* 10707 */ // Combiner Rule #273: G_FMAXNUM_commute_fp_constant_to_rhs
10994 /* 10707 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXNUM),
10995 /* 10710 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10996 /* 10712 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
10997 /* 10714 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
10998 /* 10716 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
10999 /* 10719 */ GIR_EraseRootFromParent_Done,
11000 /* 10720 */ // Label 500: @10720
11001 /* 10720 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(10731), // Rule ID 305 //
11002 /* 10725 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
11003 /* 10728 */ // MIs[0] d
11004 /* 10728 */ // No operand predicates
11005 /* 10728 */ // MIs[0] mi.src0
11006 /* 10728 */ // No operand predicates
11007 /* 10728 */ // MIs[0] mi.src1
11008 /* 10728 */ // No operand predicates
11009 /* 10728 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[7]]
11010 /* 10728 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
11011 /* 10731 */ // Label 501: @10731
11012 /* 10731 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(10742), // Rule ID 364 //
11013 /* 10736 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11014 /* 10739 */ // MIs[0] root
11015 /* 10739 */ // No operand predicates
11016 /* 10739 */ // MIs[0] mi.x
11017 /* 10739 */ // No operand predicates
11018 /* 10739 */ // MIs[0] mi.y
11019 /* 10739 */ // No operand predicates
11020 /* 10739 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[10]]
11021 /* 10739 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11022 /* 10742 */ // Label 502: @10742
11023 /* 10742 */ GIM_Reject,
11024 /* 10743 */ // Label 85: @10743
11025 /* 10743 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(10768), // Rule ID 406 //
11026 /* 10748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule274Enabled),
11027 /* 10751 */ // MIs[0] dst
11028 /* 10751 */ // No operand predicates
11029 /* 10751 */ // MIs[0] lhs
11030 /* 10751 */ // No operand predicates
11031 /* 10751 */ // MIs[0] rhs
11032 /* 10751 */ // No operand predicates
11033 /* 10751 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
11034 /* 10755 */ // Combiner Rule #274: G_FMINNUM_IEEE_commute_fp_constant_to_rhs
11035 /* 10755 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINNUM_IEEE),
11036 /* 10758 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11037 /* 10760 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11038 /* 10762 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11039 /* 10764 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11040 /* 10767 */ GIR_EraseRootFromParent_Done,
11041 /* 10768 */ // Label 503: @10768
11042 /* 10768 */ GIM_Reject,
11043 /* 10769 */ // Label 86: @10769
11044 /* 10769 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(10794), // Rule ID 407 //
11045 /* 10774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule275Enabled),
11046 /* 10777 */ // MIs[0] dst
11047 /* 10777 */ // No operand predicates
11048 /* 10777 */ // MIs[0] lhs
11049 /* 10777 */ // No operand predicates
11050 /* 10777 */ // MIs[0] rhs
11051 /* 10777 */ // No operand predicates
11052 /* 10777 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
11053 /* 10781 */ // Combiner Rule #275: G_FMAXNUM_IEEE_commute_fp_constant_to_rhs
11054 /* 10781 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXNUM_IEEE),
11055 /* 10784 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11056 /* 10786 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11057 /* 10788 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11058 /* 10790 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11059 /* 10793 */ GIR_EraseRootFromParent_Done,
11060 /* 10794 */ // Label 504: @10794
11061 /* 10794 */ GIM_Reject,
11062 /* 10795 */ // Label 87: @10795
11063 /* 10795 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(10818), // Rule ID 236 //
11064 /* 10800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
11065 /* 10803 */ // MIs[0] dst
11066 /* 10803 */ // No operand predicates
11067 /* 10803 */ // MIs[0] lhs
11068 /* 10803 */ // No operand predicates
11069 /* 10803 */ // MIs[0] rhs
11070 /* 10803 */ // No operand predicates
11071 /* 10803 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
11072 /* 10807 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11073 /* 10812 */ // Combiner Rule #184: minmax_nan_ieee_lhs @ [__minmax_nan_ieee_lhs_match_0[0]]
11074 /* 10812 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11075 /* 10817 */ GIR_EraseRootFromParent_Done,
11076 /* 10818 */ // Label 505: @10818
11077 /* 10818 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(10841), // Rule ID 238 //
11078 /* 10823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
11079 /* 10826 */ // MIs[0] dst
11080 /* 10826 */ // No operand predicates
11081 /* 10826 */ // MIs[0] lhs
11082 /* 10826 */ // No operand predicates
11083 /* 10826 */ // MIs[0] rhs
11084 /* 10826 */ // No operand predicates
11085 /* 10826 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
11086 /* 10830 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
11087 /* 10835 */ // Combiner Rule #185: minmax_nan_ieee_rhs @ [__minmax_nan_ieee_rhs_match_0[0]]
11088 /* 10835 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
11089 /* 10840 */ GIR_EraseRootFromParent_Done,
11090 /* 10841 */ // Label 506: @10841
11091 /* 10841 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(10866), // Rule ID 408 //
11092 /* 10846 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule276Enabled),
11093 /* 10849 */ // MIs[0] dst
11094 /* 10849 */ // No operand predicates
11095 /* 10849 */ // MIs[0] lhs
11096 /* 10849 */ // No operand predicates
11097 /* 10849 */ // MIs[0] rhs
11098 /* 10849 */ // No operand predicates
11099 /* 10849 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
11100 /* 10853 */ // Combiner Rule #276: G_FMINIMUM_commute_fp_constant_to_rhs
11101 /* 10853 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMINIMUM),
11102 /* 10856 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11103 /* 10858 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11104 /* 10860 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11105 /* 10862 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11106 /* 10865 */ GIR_EraseRootFromParent_Done,
11107 /* 10866 */ // Label 507: @10866
11108 /* 10866 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(10877), // Rule ID 306 //
11109 /* 10871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
11110 /* 10874 */ // MIs[0] d
11111 /* 10874 */ // No operand predicates
11112 /* 10874 */ // MIs[0] mi.src0
11113 /* 10874 */ // No operand predicates
11114 /* 10874 */ // MIs[0] mi.src1
11115 /* 10874 */ // No operand predicates
11116 /* 10874 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[8]]
11117 /* 10874 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
11118 /* 10877 */ // Label 508: @10877
11119 /* 10877 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(10888), // Rule ID 365 //
11120 /* 10882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11121 /* 10885 */ // MIs[0] root
11122 /* 10885 */ // No operand predicates
11123 /* 10885 */ // MIs[0] mi.x
11124 /* 10885 */ // No operand predicates
11125 /* 10885 */ // MIs[0] mi.y
11126 /* 10885 */ // No operand predicates
11127 /* 10885 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[11]]
11128 /* 10885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11129 /* 10888 */ // Label 509: @10888
11130 /* 10888 */ GIM_Reject,
11131 /* 10889 */ // Label 88: @10889
11132 /* 10889 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(10912), // Rule ID 237 //
11133 /* 10894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
11134 /* 10897 */ // MIs[0] dst
11135 /* 10897 */ // No operand predicates
11136 /* 10897 */ // MIs[0] lhs
11137 /* 10897 */ // No operand predicates
11138 /* 10897 */ // MIs[0] rhs
11139 /* 10897 */ // No operand predicates
11140 /* 10897 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
11141 /* 10901 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11142 /* 10906 */ // Combiner Rule #184: minmax_nan_ieee_lhs @ [__minmax_nan_ieee_lhs_match_0[1]]
11143 /* 10906 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11144 /* 10911 */ GIR_EraseRootFromParent_Done,
11145 /* 10912 */ // Label 510: @10912
11146 /* 10912 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(10935), // Rule ID 239 //
11147 /* 10917 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
11148 /* 10920 */ // MIs[0] dst
11149 /* 10920 */ // No operand predicates
11150 /* 10920 */ // MIs[0] lhs
11151 /* 10920 */ // No operand predicates
11152 /* 10920 */ // MIs[0] rhs
11153 /* 10920 */ // No operand predicates
11154 /* 10920 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
11155 /* 10924 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
11156 /* 10929 */ // Combiner Rule #185: minmax_nan_ieee_rhs @ [__minmax_nan_ieee_rhs_match_0[1]]
11157 /* 10929 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
11158 /* 10934 */ GIR_EraseRootFromParent_Done,
11159 /* 10935 */ // Label 511: @10935
11160 /* 10935 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(10960), // Rule ID 409 //
11161 /* 10940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule277Enabled),
11162 /* 10943 */ // MIs[0] dst
11163 /* 10943 */ // No operand predicates
11164 /* 10943 */ // MIs[0] lhs
11165 /* 10943 */ // No operand predicates
11166 /* 10943 */ // MIs[0] rhs
11167 /* 10943 */ // No operand predicates
11168 /* 10943 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner49),
11169 /* 10947 */ // Combiner Rule #277: G_FMAXIMUM_commute_fp_constant_to_rhs
11170 /* 10947 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAXIMUM),
11171 /* 10950 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11172 /* 10952 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11173 /* 10954 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11174 /* 10956 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11175 /* 10959 */ GIR_EraseRootFromParent_Done,
11176 /* 10960 */ // Label 512: @10960
11177 /* 10960 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(10971), // Rule ID 307 //
11178 /* 10965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
11179 /* 10968 */ // MIs[0] d
11180 /* 10968 */ // No operand predicates
11181 /* 10968 */ // MIs[0] mi.src0
11182 /* 10968 */ // No operand predicates
11183 /* 10968 */ // MIs[0] mi.src1
11184 /* 10968 */ // No operand predicates
11185 /* 10968 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[9]]
11186 /* 10968 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
11187 /* 10971 */ // Label 513: @10971
11188 /* 10971 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(10982), // Rule ID 366 //
11189 /* 10976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11190 /* 10979 */ // MIs[0] root
11191 /* 10979 */ // No operand predicates
11192 /* 10979 */ // MIs[0] mi.x
11193 /* 10979 */ // No operand predicates
11194 /* 10979 */ // MIs[0] mi.y
11195 /* 10979 */ // No operand predicates
11196 /* 10979 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[12]]
11197 /* 10979 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11198 /* 10982 */ // Label 514: @10982
11199 /* 10982 */ GIM_Reject,
11200 /* 10983 */ // Label 89: @10983
11201 /* 10983 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(10994), // Rule ID 308 //
11202 /* 10988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
11203 /* 10991 */ // MIs[0] d
11204 /* 10991 */ // No operand predicates
11205 /* 10991 */ // MIs[0] mi.src0
11206 /* 10991 */ // No operand predicates
11207 /* 10991 */ // MIs[0] mi.src1
11208 /* 10991 */ // No operand predicates
11209 /* 10991 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[10]]
11210 /* 10991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
11211 /* 10994 */ // Label 515: @10994
11212 /* 10994 */ GIM_Reject,
11213 /* 10995 */ // Label 90: @10995
11214 /* 10995 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(11006), // Rule ID 309 //
11215 /* 11000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
11216 /* 11003 */ // MIs[0] d
11217 /* 11003 */ // No operand predicates
11218 /* 11003 */ // MIs[0] mi.src0
11219 /* 11003 */ // No operand predicates
11220 /* 11003 */ // MIs[0] mi.src1
11221 /* 11003 */ // No operand predicates
11222 /* 11003 */ // Combiner Rule #211: constant_fold_fp_binop @ [mi[11]]
11223 /* 11003 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
11224 /* 11006 */ // Label 516: @11006
11225 /* 11006 */ GIM_Reject,
11226 /* 11007 */ // Label 91: @11007
11227 /* 11007 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(11044), // Rule ID 222 //
11228 /* 11012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
11229 /* 11015 */ // MIs[0] dst
11230 /* 11015 */ // No operand predicates
11231 /* 11015 */ // MIs[0] base
11232 /* 11015 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11233 /* 11019 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
11234 /* 11023 */ // MIs[1] c1reg
11235 /* 11023 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
11236 /* 11027 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
11237 /* 11031 */ // MIs[2] c1imm
11238 /* 11031 */ // No operand predicates
11239 /* 11031 */ // MIs[0] c2reg
11240 /* 11031 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
11241 /* 11035 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
11242 /* 11039 */ // MIs[3] c2imm
11243 /* 11039 */ // No operand predicates
11244 /* 11039 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
11245 /* 11041 */ // Combiner Rule #172: const_ptradd_to_i2p
11246 /* 11041 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
11247 /* 11044 */ // Label 517: @11044
11248 /* 11044 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(11085), // Rule ID 242 //
11249 /* 11049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
11250 /* 11052 */ // MIs[0] dst
11251 /* 11052 */ // No operand predicates
11252 /* 11052 */ // MIs[0] base
11253 /* 11052 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11254 /* 11056 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
11255 /* 11060 */ // MIs[1] Operand 1
11256 /* 11060 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
11257 /* 11071 */ // MIs[0] offset
11258 /* 11071 */ // No operand predicates
11259 /* 11071 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner34),
11260 /* 11075 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11261 /* 11077 */ // Combiner Rule #188: ptr_add_with_zero_scalar
11262 /* 11077 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_INTTOPTR),
11263 /* 11080 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11264 /* 11082 */ GIR_RootToRootCopy, /*OpIdx*/2, // offset
11265 /* 11084 */ GIR_EraseRootFromParent_Done,
11266 /* 11085 */ // Label 518: @11085
11267 /* 11085 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(11108), // Rule ID 125 //
11268 /* 11090 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
11269 /* 11093 */ // MIs[0] dst
11270 /* 11093 */ // No operand predicates
11271 /* 11093 */ // MIs[0] lhs
11272 /* 11093 */ // No operand predicates
11273 /* 11093 */ // MIs[0] Operand 2
11274 /* 11093 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
11275 /* 11097 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11276 /* 11102 */ // Combiner Rule #92: right_identity_zero @ [__right_identity_zero_match_0[7]]
11277 /* 11102 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11278 /* 11107 */ GIR_EraseRootFromParent_Done,
11279 /* 11108 */ // Label 519: @11108
11280 /* 11108 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(11128), // Rule ID 243 //
11281 /* 11113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
11282 /* 11116 */ // MIs[0] dst
11283 /* 11116 */ // No operand predicates
11284 /* 11116 */ // MIs[0] base
11285 /* 11116 */ // No operand predicates
11286 /* 11116 */ // MIs[0] offset
11287 /* 11116 */ // No operand predicates
11288 /* 11116 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner35),
11289 /* 11120 */ // Combiner Rule #189: ptr_add_with_zero_vector
11290 /* 11120 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_INTTOPTR),
11291 /* 11123 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11292 /* 11125 */ GIR_RootToRootCopy, /*OpIdx*/2, // offset
11293 /* 11127 */ GIR_EraseRootFromParent_Done,
11294 /* 11128 */ // Label 520: @11128
11295 /* 11128 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(11139), // Rule ID 170 //
11296 /* 11133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
11297 /* 11136 */ // MIs[0] dst
11298 /* 11136 */ // No operand predicates
11299 /* 11136 */ // MIs[0] base
11300 /* 11136 */ // No operand predicates
11301 /* 11136 */ // MIs[0] offset
11302 /* 11136 */ // No operand predicates
11303 /* 11136 */ // Combiner Rule #120: reassoc_ptradd
11304 /* 11136 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
11305 /* 11139 */ // Label 521: @11139
11306 /* 11139 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(11150), // Rule ID 172 //
11307 /* 11144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
11308 /* 11147 */ // MIs[0] dst
11309 /* 11147 */ // No operand predicates
11310 /* 11147 */ // MIs[0] base
11311 /* 11147 */ // No operand predicates
11312 /* 11147 */ // MIs[0] offset
11313 /* 11147 */ // No operand predicates
11314 /* 11147 */ // Combiner Rule #122: ptr_add_immed_chain
11315 /* 11147 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
11316 /* 11150 */ // Label 522: @11150
11317 /* 11150 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(11161), // Rule ID 281 //
11318 /* 11155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
11319 /* 11158 */ // MIs[0] d
11320 /* 11158 */ // No operand predicates
11321 /* 11158 */ // MIs[0] mi.src0
11322 /* 11158 */ // No operand predicates
11323 /* 11158 */ // MIs[0] mi.src1
11324 /* 11158 */ // No operand predicates
11325 /* 11158 */ // Combiner Rule #210: constant_fold_binop @ [mi[1]]
11326 /* 11158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
11327 /* 11161 */ // Label 523: @11161
11328 /* 11161 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(11172), // Rule ID 343 //
11329 /* 11166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
11330 /* 11169 */ // MIs[0] root
11331 /* 11169 */ // No operand predicates
11332 /* 11169 */ // MIs[0] mi.x
11333 /* 11169 */ // No operand predicates
11334 /* 11169 */ // MIs[0] mi.y
11335 /* 11169 */ // No operand predicates
11336 /* 11169 */ // Combiner Rule #233: fold_binop_into_select_a @ [mi[2]]
11337 /* 11169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11338 /* 11172 */ // Label 524: @11172
11339 /* 11172 */ GIM_Reject,
11340 /* 11173 */ // Label 92: @11173
11341 /* 11173 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(11198), // Rule ID 386 //
11342 /* 11178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
11343 /* 11181 */ // MIs[0] dst
11344 /* 11181 */ // No operand predicates
11345 /* 11181 */ // MIs[0] lhs
11346 /* 11181 */ // No operand predicates
11347 /* 11181 */ // MIs[0] rhs
11348 /* 11181 */ // No operand predicates
11349 /* 11181 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
11350 /* 11185 */ // Combiner Rule #254: G_SMIN_commute_constant_to_rhs
11351 /* 11185 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
11352 /* 11188 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11353 /* 11190 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11354 /* 11192 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11355 /* 11194 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11356 /* 11197 */ GIR_EraseRootFromParent_Done,
11357 /* 11198 */ // Label 525: @11198
11358 /* 11198 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(11209), // Rule ID 294 //
11359 /* 11203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
11360 /* 11206 */ // MIs[0] d
11361 /* 11206 */ // No operand predicates
11362 /* 11206 */ // MIs[0] mi.src0
11363 /* 11206 */ // No operand predicates
11364 /* 11206 */ // MIs[0] mi.src1
11365 /* 11206 */ // No operand predicates
11366 /* 11206 */ // Combiner Rule #210: constant_fold_binop @ [mi[14]]
11367 /* 11206 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
11368 /* 11209 */ // Label 526: @11209
11369 /* 11209 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(11220), // Rule ID 354 //
11370 /* 11214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11371 /* 11217 */ // MIs[0] root
11372 /* 11217 */ // No operand predicates
11373 /* 11217 */ // MIs[0] mi.x
11374 /* 11217 */ // No operand predicates
11375 /* 11217 */ // MIs[0] mi.y
11376 /* 11217 */ // No operand predicates
11377 /* 11217 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[0]]
11378 /* 11217 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11379 /* 11220 */ // Label 527: @11220
11380 /* 11220 */ GIM_Reject,
11381 /* 11221 */ // Label 93: @11221
11382 /* 11221 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(11246), // Rule ID 387 //
11383 /* 11226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
11384 /* 11229 */ // MIs[0] dst
11385 /* 11229 */ // No operand predicates
11386 /* 11229 */ // MIs[0] lhs
11387 /* 11229 */ // No operand predicates
11388 /* 11229 */ // MIs[0] rhs
11389 /* 11229 */ // No operand predicates
11390 /* 11229 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
11391 /* 11233 */ // Combiner Rule #255: G_SMAX_commute_constant_to_rhs
11392 /* 11233 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMAX),
11393 /* 11236 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11394 /* 11238 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11395 /* 11240 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11396 /* 11242 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11397 /* 11245 */ GIR_EraseRootFromParent_Done,
11398 /* 11246 */ // Label 528: @11246
11399 /* 11246 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(11257), // Rule ID 295 //
11400 /* 11251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
11401 /* 11254 */ // MIs[0] d
11402 /* 11254 */ // No operand predicates
11403 /* 11254 */ // MIs[0] mi.src0
11404 /* 11254 */ // No operand predicates
11405 /* 11254 */ // MIs[0] mi.src1
11406 /* 11254 */ // No operand predicates
11407 /* 11254 */ // Combiner Rule #210: constant_fold_binop @ [mi[15]]
11408 /* 11254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
11409 /* 11257 */ // Label 529: @11257
11410 /* 11257 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(11268), // Rule ID 355 //
11411 /* 11262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11412 /* 11265 */ // MIs[0] root
11413 /* 11265 */ // No operand predicates
11414 /* 11265 */ // MIs[0] mi.x
11415 /* 11265 */ // No operand predicates
11416 /* 11265 */ // MIs[0] mi.y
11417 /* 11265 */ // No operand predicates
11418 /* 11265 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[1]]
11419 /* 11265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11420 /* 11268 */ // Label 530: @11268
11421 /* 11268 */ GIM_Reject,
11422 /* 11269 */ // Label 94: @11269
11423 /* 11269 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(11294), // Rule ID 388 //
11424 /* 11274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
11425 /* 11277 */ // MIs[0] dst
11426 /* 11277 */ // No operand predicates
11427 /* 11277 */ // MIs[0] lhs
11428 /* 11277 */ // No operand predicates
11429 /* 11277 */ // MIs[0] rhs
11430 /* 11277 */ // No operand predicates
11431 /* 11277 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
11432 /* 11281 */ // Combiner Rule #256: G_UMIN_commute_constant_to_rhs
11433 /* 11281 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
11434 /* 11284 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11435 /* 11286 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11436 /* 11288 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11437 /* 11290 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11438 /* 11293 */ GIR_EraseRootFromParent_Done,
11439 /* 11294 */ // Label 531: @11294
11440 /* 11294 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(11305), // Rule ID 296 //
11441 /* 11299 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
11442 /* 11302 */ // MIs[0] d
11443 /* 11302 */ // No operand predicates
11444 /* 11302 */ // MIs[0] mi.src0
11445 /* 11302 */ // No operand predicates
11446 /* 11302 */ // MIs[0] mi.src1
11447 /* 11302 */ // No operand predicates
11448 /* 11302 */ // Combiner Rule #210: constant_fold_binop @ [mi[16]]
11449 /* 11302 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
11450 /* 11305 */ // Label 532: @11305
11451 /* 11305 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(11316), // Rule ID 356 //
11452 /* 11310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11453 /* 11313 */ // MIs[0] root
11454 /* 11313 */ // No operand predicates
11455 /* 11313 */ // MIs[0] mi.x
11456 /* 11313 */ // No operand predicates
11457 /* 11313 */ // MIs[0] mi.y
11458 /* 11313 */ // No operand predicates
11459 /* 11313 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[2]]
11460 /* 11313 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11461 /* 11316 */ // Label 533: @11316
11462 /* 11316 */ GIM_Reject,
11463 /* 11317 */ // Label 95: @11317
11464 /* 11317 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(11342), // Rule ID 389 //
11465 /* 11322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
11466 /* 11325 */ // MIs[0] dst
11467 /* 11325 */ // No operand predicates
11468 /* 11325 */ // MIs[0] lhs
11469 /* 11325 */ // No operand predicates
11470 /* 11325 */ // MIs[0] rhs
11471 /* 11325 */ // No operand predicates
11472 /* 11325 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner48),
11473 /* 11329 */ // Combiner Rule #257: G_UMAX_commute_constant_to_rhs
11474 /* 11329 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMAX),
11475 /* 11332 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11476 /* 11334 */ GIR_RootToRootCopy, /*OpIdx*/2, // rhs
11477 /* 11336 */ GIR_RootToRootCopy, /*OpIdx*/1, // lhs
11478 /* 11338 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
11479 /* 11341 */ GIR_EraseRootFromParent_Done,
11480 /* 11342 */ // Label 534: @11342
11481 /* 11342 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(11353), // Rule ID 297 //
11482 /* 11347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
11483 /* 11350 */ // MIs[0] d
11484 /* 11350 */ // No operand predicates
11485 /* 11350 */ // MIs[0] mi.src0
11486 /* 11350 */ // No operand predicates
11487 /* 11350 */ // MIs[0] mi.src1
11488 /* 11350 */ // No operand predicates
11489 /* 11350 */ // Combiner Rule #210: constant_fold_binop @ [mi[17]]
11490 /* 11350 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
11491 /* 11353 */ // Label 535: @11353
11492 /* 11353 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(11364), // Rule ID 357 //
11493 /* 11358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
11494 /* 11361 */ // MIs[0] root
11495 /* 11361 */ // No operand predicates
11496 /* 11361 */ // MIs[0] mi.x
11497 /* 11361 */ // No operand predicates
11498 /* 11361 */ // MIs[0] mi.y
11499 /* 11361 */ // No operand predicates
11500 /* 11361 */ // Combiner Rule #234: fold_binop_into_select_b @ [mi[3]]
11501 /* 11361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
11502 /* 11364 */ // Label 536: @11364
11503 /* 11364 */ GIM_Reject,
11504 /* 11365 */ // Label 96: @11365
11505 /* 11365 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(11386), // Rule ID 96 //
11506 /* 11370 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
11507 /* 11373 */ // MIs[0] dst
11508 /* 11373 */ // No operand predicates
11509 /* 11373 */ // MIs[0] __unary_undef_to_zero_match_0.x
11510 /* 11373 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11511 /* 11377 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11512 /* 11381 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11513 /* 11383 */ // Combiner Rule #81: unary_undef_to_zero @ [__unary_undef_to_zero_match_0[0]]
11514 /* 11383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
11515 /* 11386 */ // Label 537: @11386
11516 /* 11386 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(11397), // Rule ID 320 //
11517 /* 11391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
11518 /* 11394 */ // MIs[0] dst
11519 /* 11394 */ // No operand predicates
11520 /* 11394 */ // MIs[0] mi.src
11521 /* 11394 */ // No operand predicates
11522 /* 11394 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[5]]
11523 /* 11394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
11524 /* 11397 */ // Label 538: @11397
11525 /* 11397 */ GIM_Reject,
11526 /* 11398 */ // Label 97: @11398
11527 /* 11398 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(11409), // Rule ID 206 //
11528 /* 11403 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
11529 /* 11406 */ // MIs[0] tgt
11530 /* 11406 */ // No operand predicates
11531 /* 11406 */ // Combiner Rule #156: opt_brcond_by_inverting_cond
11532 /* 11406 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
11533 /* 11409 */ // Label 539: @11409
11534 /* 11409 */ GIM_Reject,
11535 /* 11410 */ // Label 98: @11410
11536 /* 11410 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(11449), // Rule ID 45 //
11537 /* 11415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
11538 /* 11418 */ // MIs[0] root
11539 /* 11418 */ // No operand predicates
11540 /* 11418 */ // MIs[0] src
11541 /* 11418 */ // No operand predicates
11542 /* 11418 */ // MIs[0] elt
11543 /* 11418 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
11544 /* 11422 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
11545 /* 11426 */ // MIs[1] src
11546 /* 11426 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
11547 /* 11431 */ // MIs[1] idx
11548 /* 11431 */ // No operand predicates
11549 /* 11431 */ // MIs[0] idx
11550 /* 11431 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
11551 /* 11436 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11552 /* 11441 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11553 /* 11443 */ // Combiner Rule #41: insert_vector_element_extract_vector_element
11554 /* 11443 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11555 /* 11448 */ GIR_EraseRootFromParent_Done,
11556 /* 11449 */ // Label 540: @11449
11557 /* 11449 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(11482), // Rule ID 31 //
11558 /* 11454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
11559 /* 11457 */ // MIs[0] root
11560 /* 11457 */ // No operand predicates
11561 /* 11457 */ // MIs[0] src
11562 /* 11457 */ // No operand predicates
11563 /* 11457 */ // MIs[0] elt
11564 /* 11457 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
11565 /* 11461 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11566 /* 11465 */ // MIs[0] idx
11567 /* 11465 */ // No operand predicates
11568 /* 11465 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
11569 /* 11469 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11570 /* 11474 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11571 /* 11476 */ // Combiner Rule #27: insert_vector_element_elt_undef
11572 /* 11476 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
11573 /* 11481 */ GIR_EraseRootFromParent_Done,
11574 /* 11482 */ // Label 541: @11482
11575 /* 11482 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(11506), // Rule ID 30 //
11576 /* 11487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
11577 /* 11490 */ // MIs[0] root
11578 /* 11490 */ // No operand predicates
11579 /* 11490 */ // MIs[0] src
11580 /* 11490 */ // No operand predicates
11581 /* 11490 */ // MIs[0] elt
11582 /* 11490 */ // No operand predicates
11583 /* 11490 */ // MIs[0] idx
11584 /* 11490 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
11585 /* 11494 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11586 /* 11498 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11587 /* 11500 */ // Combiner Rule #26: insert_vector_element_idx_undef
11588 /* 11500 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11589 /* 11503 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
11590 /* 11505 */ GIR_EraseRootFromParent_Done,
11591 /* 11506 */ // Label 542: @11506
11592 /* 11506 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(11524), // Rule ID 33 //
11593 /* 11511 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
11594 /* 11514 */ // MIs[0] dst
11595 /* 11514 */ // No operand predicates
11596 /* 11514 */ // MIs[0] src
11597 /* 11514 */ // No operand predicates
11598 /* 11514 */ // MIs[0] elt
11599 /* 11514 */ // No operand predicates
11600 /* 11514 */ // MIs[0] idx
11601 /* 11514 */ // No operand predicates
11602 /* 11514 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
11603 /* 11518 */ // Combiner Rule #29: insert_vector_elt_oob
11604 /* 11518 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11605 /* 11521 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11606 /* 11523 */ GIR_EraseRootFromParent_Done,
11607 /* 11524 */ // Label 543: @11524
11608 /* 11524 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(11542), // Rule ID 114 //
11609 /* 11529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
11610 /* 11532 */ // MIs[0] root
11611 /* 11532 */ // No operand predicates
11612 /* 11532 */ // MIs[0] vec
11613 /* 11532 */ // No operand predicates
11614 /* 11532 */ // MIs[0] elt
11615 /* 11532 */ // No operand predicates
11616 /* 11532 */ // MIs[0] idx
11617 /* 11532 */ // No operand predicates
11618 /* 11532 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
11619 /* 11536 */ // Combiner Rule #88: insert_vec_elt_out_of_bounds
11620 /* 11536 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11621 /* 11539 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
11622 /* 11541 */ GIR_EraseRootFromParent_Done,
11623 /* 11542 */ // Label 544: @11542
11624 /* 11542 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(11553), // Rule ID 74 //
11625 /* 11547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
11626 /* 11550 */ // MIs[0] dst
11627 /* 11550 */ // No operand predicates
11628 /* 11550 */ // MIs[0] src
11629 /* 11550 */ // No operand predicates
11630 /* 11550 */ // MIs[0] elt
11631 /* 11550 */ // No operand predicates
11632 /* 11550 */ // MIs[0] idx
11633 /* 11550 */ // No operand predicates
11634 /* 11550 */ // Combiner Rule #70: combine_insert_vec_elts_build_vector
11635 /* 11550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
11636 /* 11553 */ // Label 545: @11553
11637 /* 11553 */ GIM_Reject,
11638 /* 11554 */ // Label 99: @11554
11639 /* 11554 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(11578), // Rule ID 43 //
11640 /* 11559 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
11641 /* 11562 */ // MIs[0] root
11642 /* 11562 */ // No operand predicates
11643 /* 11562 */ // MIs[0] src
11644 /* 11562 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11645 /* 11566 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11646 /* 11570 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
11647 /* 11573 */ // MIs[1] x
11648 /* 11573 */ // No operand predicates
11649 /* 11573 */ // MIs[1] y
11650 /* 11573 */ // No operand predicates
11651 /* 11573 */ // MIs[1] z
11652 /* 11573 */ // No operand predicates
11653 /* 11573 */ // MIs[1] a
11654 /* 11573 */ // No operand predicates
11655 /* 11573 */ // MIs[1] b
11656 /* 11573 */ // No operand predicates
11657 /* 11573 */ // MIs[1] c
11658 /* 11573 */ // No operand predicates
11659 /* 11573 */ // MIs[1] d
11660 /* 11573 */ // No operand predicates
11661 /* 11573 */ // MIs[1] e
11662 /* 11573 */ // No operand predicates
11663 /* 11573 */ // MIs[0] idx
11664 /* 11573 */ // No operand predicates
11665 /* 11573 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11666 /* 11575 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc8
11667 /* 11575 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11668 /* 11578 */ // Label 546: @11578
11669 /* 11578 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(11602), // Rule ID 42 //
11670 /* 11583 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
11671 /* 11586 */ // MIs[0] root
11672 /* 11586 */ // No operand predicates
11673 /* 11586 */ // MIs[0] src
11674 /* 11586 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11675 /* 11590 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11676 /* 11594 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
11677 /* 11597 */ // MIs[1] x
11678 /* 11597 */ // No operand predicates
11679 /* 11597 */ // MIs[1] y
11680 /* 11597 */ // No operand predicates
11681 /* 11597 */ // MIs[1] z
11682 /* 11597 */ // No operand predicates
11683 /* 11597 */ // MIs[1] a
11684 /* 11597 */ // No operand predicates
11685 /* 11597 */ // MIs[1] b
11686 /* 11597 */ // No operand predicates
11687 /* 11597 */ // MIs[1] c
11688 /* 11597 */ // No operand predicates
11689 /* 11597 */ // MIs[1] d
11690 /* 11597 */ // No operand predicates
11691 /* 11597 */ // MIs[0] idx
11692 /* 11597 */ // No operand predicates
11693 /* 11597 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11694 /* 11599 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc7
11695 /* 11599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11696 /* 11602 */ // Label 547: @11602
11697 /* 11602 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(11626), // Rule ID 41 //
11698 /* 11607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
11699 /* 11610 */ // MIs[0] root
11700 /* 11610 */ // No operand predicates
11701 /* 11610 */ // MIs[0] src
11702 /* 11610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11703 /* 11614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11704 /* 11618 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
11705 /* 11621 */ // MIs[1] x
11706 /* 11621 */ // No operand predicates
11707 /* 11621 */ // MIs[1] y
11708 /* 11621 */ // No operand predicates
11709 /* 11621 */ // MIs[1] z
11710 /* 11621 */ // No operand predicates
11711 /* 11621 */ // MIs[1] a
11712 /* 11621 */ // No operand predicates
11713 /* 11621 */ // MIs[1] b
11714 /* 11621 */ // No operand predicates
11715 /* 11621 */ // MIs[1] c
11716 /* 11621 */ // No operand predicates
11717 /* 11621 */ // MIs[0] idx
11718 /* 11621 */ // No operand predicates
11719 /* 11621 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11720 /* 11623 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc6
11721 /* 11623 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11722 /* 11626 */ // Label 548: @11626
11723 /* 11626 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(11650), // Rule ID 40 //
11724 /* 11631 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
11725 /* 11634 */ // MIs[0] root
11726 /* 11634 */ // No operand predicates
11727 /* 11634 */ // MIs[0] src
11728 /* 11634 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11729 /* 11638 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11730 /* 11642 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
11731 /* 11645 */ // MIs[1] x
11732 /* 11645 */ // No operand predicates
11733 /* 11645 */ // MIs[1] y
11734 /* 11645 */ // No operand predicates
11735 /* 11645 */ // MIs[1] z
11736 /* 11645 */ // No operand predicates
11737 /* 11645 */ // MIs[1] a
11738 /* 11645 */ // No operand predicates
11739 /* 11645 */ // MIs[1] b
11740 /* 11645 */ // No operand predicates
11741 /* 11645 */ // MIs[0] idx
11742 /* 11645 */ // No operand predicates
11743 /* 11645 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11744 /* 11647 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc5
11745 /* 11647 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11746 /* 11650 */ // Label 549: @11650
11747 /* 11650 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(11674), // Rule ID 39 //
11748 /* 11655 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
11749 /* 11658 */ // MIs[0] root
11750 /* 11658 */ // No operand predicates
11751 /* 11658 */ // MIs[0] src
11752 /* 11658 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11753 /* 11662 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11754 /* 11666 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
11755 /* 11669 */ // MIs[1] x
11756 /* 11669 */ // No operand predicates
11757 /* 11669 */ // MIs[1] y
11758 /* 11669 */ // No operand predicates
11759 /* 11669 */ // MIs[1] z
11760 /* 11669 */ // No operand predicates
11761 /* 11669 */ // MIs[1] a
11762 /* 11669 */ // No operand predicates
11763 /* 11669 */ // MIs[0] idx
11764 /* 11669 */ // No operand predicates
11765 /* 11669 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11766 /* 11671 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc4
11767 /* 11671 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11768 /* 11674 */ // Label 550: @11674
11769 /* 11674 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(11698), // Rule ID 38 //
11770 /* 11679 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
11771 /* 11682 */ // MIs[0] root
11772 /* 11682 */ // No operand predicates
11773 /* 11682 */ // MIs[0] src
11774 /* 11682 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11775 /* 11686 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11776 /* 11690 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
11777 /* 11693 */ // MIs[1] x
11778 /* 11693 */ // No operand predicates
11779 /* 11693 */ // MIs[1] y
11780 /* 11693 */ // No operand predicates
11781 /* 11693 */ // MIs[1] z
11782 /* 11693 */ // No operand predicates
11783 /* 11693 */ // MIs[0] idx
11784 /* 11693 */ // No operand predicates
11785 /* 11693 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11786 /* 11695 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc3
11787 /* 11695 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11788 /* 11698 */ // Label 551: @11698
11789 /* 11698 */ GIM_Try, /*On fail goto*//*Label 552*/ GIMT_Encode4(11732), // Rule ID 34 //
11790 /* 11703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
11791 /* 11706 */ // MIs[0] root
11792 /* 11706 */ // No operand predicates
11793 /* 11706 */ // MIs[0] src
11794 /* 11706 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11795 /* 11710 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
11796 /* 11714 */ // MIs[1] x
11797 /* 11714 */ // No operand predicates
11798 /* 11714 */ // MIs[1] value
11799 /* 11714 */ // No operand predicates
11800 /* 11714 */ // MIs[1] idx
11801 /* 11714 */ // No operand predicates
11802 /* 11714 */ // MIs[0] idx
11803 /* 11714 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
11804 /* 11719 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
11805 /* 11724 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11806 /* 11726 */ // Combiner Rule #30: extract_vector_element_not_const
11807 /* 11726 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
11808 /* 11731 */ GIR_EraseRootFromParent_Done,
11809 /* 11732 */ // Label 552: @11732
11810 /* 11732 */ GIM_Try, /*On fail goto*//*Label 553*/ GIMT_Encode4(11753), // Rule ID 35 //
11811 /* 11737 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
11812 /* 11740 */ // MIs[0] root
11813 /* 11740 */ // No operand predicates
11814 /* 11740 */ // MIs[0] src
11815 /* 11740 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11816 /* 11744 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
11817 /* 11748 */ // MIs[1] x
11818 /* 11748 */ // No operand predicates
11819 /* 11748 */ // MIs[1] value
11820 /* 11748 */ // No operand predicates
11821 /* 11748 */ // MIs[1] idx2
11822 /* 11748 */ // No operand predicates
11823 /* 11748 */ // MIs[0] idx1
11824 /* 11748 */ // No operand predicates
11825 /* 11748 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11826 /* 11750 */ // Combiner Rule #31: extract_vector_element_different_indices
11827 /* 11750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
11828 /* 11753 */ // Label 553: @11753
11829 /* 11753 */ GIM_Try, /*On fail goto*//*Label 554*/ GIMT_Encode4(11782), // Rule ID 44 //
11830 /* 11758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
11831 /* 11761 */ // MIs[0] root
11832 /* 11761 */ // No operand predicates
11833 /* 11761 */ // MIs[0] src
11834 /* 11761 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11835 /* 11765 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
11836 /* 11769 */ // MIs[1] src1
11837 /* 11769 */ // No operand predicates
11838 /* 11769 */ // MIs[1] src2
11839 /* 11769 */ // No operand predicates
11840 /* 11769 */ // MIs[1] mask
11841 /* 11769 */ // No operand predicates
11842 /* 11769 */ // MIs[0] idx
11843 /* 11769 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
11844 /* 11773 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
11845 /* 11777 */ // MIs[2] imm
11846 /* 11777 */ // No operand predicates
11847 /* 11777 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
11848 /* 11779 */ // Combiner Rule #40: extract_vector_element_shuffle_vector
11849 /* 11779 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
11850 /* 11782 */ // Label 554: @11782
11851 /* 11782 */ GIM_Try, /*On fail goto*//*Label 555*/ GIMT_Encode4(11806), // Rule ID 37 //
11852 /* 11787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
11853 /* 11790 */ // MIs[0] root
11854 /* 11790 */ // No operand predicates
11855 /* 11790 */ // MIs[0] src
11856 /* 11790 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11857 /* 11794 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
11858 /* 11798 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
11859 /* 11801 */ // MIs[1] x
11860 /* 11801 */ // No operand predicates
11861 /* 11801 */ // MIs[1] y
11862 /* 11801 */ // No operand predicates
11863 /* 11801 */ // MIs[0] idx
11864 /* 11801 */ // No operand predicates
11865 /* 11801 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11866 /* 11803 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc2
11867 /* 11803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
11868 /* 11806 */ // Label 555: @11806
11869 /* 11806 */ GIM_Try, /*On fail goto*//*Label 556*/ GIMT_Encode4(11838), // Rule ID 36 //
11870 /* 11811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
11871 /* 11814 */ // MIs[0] root
11872 /* 11814 */ // No operand predicates
11873 /* 11814 */ // MIs[0] src
11874 /* 11814 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11875 /* 11818 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
11876 /* 11822 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
11877 /* 11825 */ // MIs[1] unused
11878 /* 11825 */ // No operand predicates
11879 /* 11825 */ // MIs[0] idx
11880 /* 11825 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
11881 /* 11829 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
11882 /* 11833 */ // MIs[2] imm
11883 /* 11833 */ // No operand predicates
11884 /* 11833 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
11885 /* 11835 */ // Combiner Rule #32: extract_vector_element_build_vector
11886 /* 11835 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
11887 /* 11838 */ // Label 556: @11838
11888 /* 11838 */ GIM_Try, /*On fail goto*//*Label 557*/ GIMT_Encode4(11862), // Rule ID 28 //
11889 /* 11843 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
11890 /* 11846 */ // MIs[0] root
11891 /* 11846 */ // No operand predicates
11892 /* 11846 */ // MIs[0] __extract_vector_element_undef_match_0.x
11893 /* 11846 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
11894 /* 11850 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11895 /* 11854 */ // MIs[0] __extract_vector_element_undef_match_0.y
11896 /* 11854 */ // No operand predicates
11897 /* 11854 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11898 /* 11856 */ // Combiner Rule #25: extract_vector_element_undef @ [__extract_vector_element_undef_match_0[0]]
11899 /* 11856 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11900 /* 11859 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
11901 /* 11861 */ GIR_EraseRootFromParent_Done,
11902 /* 11862 */ // Label 557: @11862
11903 /* 11862 */ GIM_Try, /*On fail goto*//*Label 558*/ GIMT_Encode4(11886), // Rule ID 29 //
11904 /* 11867 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
11905 /* 11870 */ // MIs[0] root
11906 /* 11870 */ // No operand predicates
11907 /* 11870 */ // MIs[0] __extract_vector_element_undef_match_0.x
11908 /* 11870 */ // No operand predicates
11909 /* 11870 */ // MIs[0] __extract_vector_element_undef_match_0.y
11910 /* 11870 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
11911 /* 11874 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11912 /* 11878 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11913 /* 11880 */ // Combiner Rule #25: extract_vector_element_undef @ [__extract_vector_element_undef_match_0[1]]
11914 /* 11880 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11915 /* 11883 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
11916 /* 11885 */ GIR_EraseRootFromParent_Done,
11917 /* 11886 */ // Label 558: @11886
11918 /* 11886 */ GIM_Try, /*On fail goto*//*Label 559*/ GIMT_Encode4(11904), // Rule ID 32 //
11919 /* 11891 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
11920 /* 11894 */ // MIs[0] dst
11921 /* 11894 */ // No operand predicates
11922 /* 11894 */ // MIs[0] src
11923 /* 11894 */ // No operand predicates
11924 /* 11894 */ // MIs[0] idx
11925 /* 11894 */ // No operand predicates
11926 /* 11894 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
11927 /* 11898 */ // Combiner Rule #28: match_extract_of_element
11928 /* 11898 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11929 /* 11901 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
11930 /* 11903 */ GIR_EraseRootFromParent_Done,
11931 /* 11904 */ // Label 559: @11904
11932 /* 11904 */ GIM_Try, /*On fail goto*//*Label 560*/ GIMT_Encode4(11922), // Rule ID 115 //
11933 /* 11909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
11934 /* 11912 */ // MIs[0] root
11935 /* 11912 */ // No operand predicates
11936 /* 11912 */ // MIs[0] vec
11937 /* 11912 */ // No operand predicates
11938 /* 11912 */ // MIs[0] idx
11939 /* 11912 */ // No operand predicates
11940 /* 11912 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
11941 /* 11916 */ // Combiner Rule #89: extract_vec_elt_out_of_bounds
11942 /* 11916 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11943 /* 11919 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
11944 /* 11921 */ GIR_EraseRootFromParent_Done,
11945 /* 11922 */ // Label 560: @11922
11946 /* 11922 */ GIM_Try, /*On fail goto*//*Label 561*/ GIMT_Encode4(11933), // Rule ID 75 //
11947 /* 11927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
11948 /* 11930 */ // MIs[0] dst
11949 /* 11930 */ // No operand predicates
11950 /* 11930 */ // MIs[0] src
11951 /* 11930 */ // No operand predicates
11952 /* 11930 */ // MIs[0] idx
11953 /* 11930 */ // No operand predicates
11954 /* 11930 */ // Combiner Rule #71: extract_vec_elt_build_vec
11955 /* 11930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
11956 /* 11933 */ // Label 561: @11933
11957 /* 11933 */ GIM_Try, /*On fail goto*//*Label 562*/ GIMT_Encode4(11944), // Rule ID 81 //
11958 /* 11938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
11959 /* 11941 */ // MIs[0] dst
11960 /* 11941 */ // No operand predicates
11961 /* 11941 */ // MIs[0] src
11962 /* 11941 */ // No operand predicates
11963 /* 11941 */ // MIs[0] idx
11964 /* 11941 */ // No operand predicates
11965 /* 11941 */ // Combiner Rule #75: combine_extracted_vector_load
11966 /* 11941 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
11967 /* 11944 */ // Label 562: @11944
11968 /* 11944 */ GIM_Reject,
11969 /* 11945 */ // Label 100: @11945
11970 /* 11945 */ GIM_Try, /*On fail goto*//*Label 563*/ GIMT_Encode4(11966), // Rule ID 424 //
11971 /* 11950 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule292Enabled),
11972 /* 11953 */ // MIs[0] root
11973 /* 11953 */ // No operand predicates
11974 /* 11953 */ // MIs[0] src1
11975 /* 11953 */ // No operand predicates
11976 /* 11953 */ // MIs[0] undef
11977 /* 11953 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
11978 /* 11957 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11979 /* 11961 */ // MIs[0] mask
11980 /* 11961 */ // No operand predicates
11981 /* 11961 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
11982 /* 11963 */ // Combiner Rule #292: combine_shuffle_undef_rhs
11983 /* 11963 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
11984 /* 11966 */ // Label 563: @11966
11985 /* 11966 */ GIM_Try, /*On fail goto*//*Label 564*/ GIMT_Encode4(11984), // Rule ID 110 //
11986 /* 11971 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
11987 /* 11974 */ // MIs[0] root
11988 /* 11974 */ // No operand predicates
11989 /* 11974 */ // MIs[0] src1
11990 /* 11974 */ // No operand predicates
11991 /* 11974 */ // MIs[0] src2
11992 /* 11974 */ // No operand predicates
11993 /* 11974 */ // MIs[0] mask
11994 /* 11974 */ // No operand predicates
11995 /* 11974 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
11996 /* 11978 */ // Combiner Rule #84: propagate_undef_all_ops_shuffle_vector
11997 /* 11978 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
11998 /* 11981 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
11999 /* 11983 */ GIR_EraseRootFromParent_Done,
12000 /* 11984 */ // Label 564: @11984
12001 /* 11984 */ GIM_Try, /*On fail goto*//*Label 565*/ GIMT_Encode4(12002), // Rule ID 112 //
12002 /* 11989 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
12003 /* 11992 */ // MIs[0] dst
12004 /* 11992 */ // No operand predicates
12005 /* 11992 */ // MIs[0] src1
12006 /* 11992 */ // No operand predicates
12007 /* 11992 */ // MIs[0] src2
12008 /* 11992 */ // No operand predicates
12009 /* 11992 */ // MIs[0] mask
12010 /* 11992 */ // No operand predicates
12011 /* 11992 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
12012 /* 11996 */ // Combiner Rule #86: propagate_undef_shuffle_mask
12013 /* 11996 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
12014 /* 11999 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
12015 /* 12001 */ GIR_EraseRootFromParent_Done,
12016 /* 12002 */ // Label 565: @12002
12017 /* 12002 */ GIM_Try, /*On fail goto*//*Label 566*/ GIMT_Encode4(12013), // Rule ID 423 //
12018 /* 12007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule291Enabled),
12019 /* 12010 */ // MIs[0] dst
12020 /* 12010 */ // No operand predicates
12021 /* 12010 */ // MIs[0] src1
12022 /* 12010 */ // No operand predicates
12023 /* 12010 */ // MIs[0] src2
12024 /* 12010 */ // No operand predicates
12025 /* 12010 */ // MIs[0] mask
12026 /* 12010 */ // No operand predicates
12027 /* 12010 */ // Combiner Rule #291: combine_shuffle_concat
12028 /* 12010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
12029 /* 12013 */ // Label 566: @12013
12030 /* 12013 */ GIM_Try, /*On fail goto*//*Label 567*/ GIMT_Encode4(12024), // Rule ID 425 //
12031 /* 12018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule293Enabled),
12032 /* 12021 */ // MIs[0] dst
12033 /* 12021 */ // No operand predicates
12034 /* 12021 */ // MIs[0] src1
12035 /* 12021 */ // No operand predicates
12036 /* 12021 */ // MIs[0] src2
12037 /* 12021 */ // No operand predicates
12038 /* 12021 */ // MIs[0] mask
12039 /* 12021 */ // No operand predicates
12040 /* 12021 */ // Combiner Rule #293: combine_shuffle_disjoint_mask
12041 /* 12021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
12042 /* 12024 */ // Label 567: @12024
12043 /* 12024 */ GIM_Reject,
12044 /* 12025 */ // Label 101: @12025
12045 /* 12025 */ GIM_Try, /*On fail goto*//*Label 568*/ GIMT_Encode4(12048), // Rule ID 451 //
12046 /* 12030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule319Enabled),
12047 /* 12033 */ // MIs[0] dst
12048 /* 12033 */ // No operand predicates
12049 /* 12033 */ // MIs[0] src
12050 /* 12033 */ // No operand predicates
12051 /* 12033 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner56),
12052 /* 12037 */ // Combiner Rule #319: cttz_to_cttz_zero_poison
12053 /* 12037 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_CTTZ_ZERO_POISON),
12054 /* 12040 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
12055 /* 12042 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
12056 /* 12044 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
12057 /* 12047 */ GIR_EraseRootFromParent_Done,
12058 /* 12048 */ // Label 568: @12048
12059 /* 12048 */ GIM_Try, /*On fail goto*//*Label 569*/ GIMT_Encode4(12059), // Rule ID 317 //
12060 /* 12053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12061 /* 12056 */ // MIs[0] dst
12062 /* 12056 */ // No operand predicates
12063 /* 12056 */ // MIs[0] mi.src
12064 /* 12056 */ // No operand predicates
12065 /* 12056 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[2]]
12066 /* 12056 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12067 /* 12059 */ // Label 569: @12059
12068 /* 12059 */ GIM_Reject,
12069 /* 12060 */ // Label 102: @12060
12070 /* 12060 */ GIM_Try, /*On fail goto*//*Label 570*/ GIMT_Encode4(12071), // Rule ID 318 //
12071 /* 12065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12072 /* 12068 */ // MIs[0] dst
12073 /* 12068 */ // No operand predicates
12074 /* 12068 */ // MIs[0] mi.src
12075 /* 12068 */ // No operand predicates
12076 /* 12068 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[3]]
12077 /* 12068 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12078 /* 12071 */ // Label 570: @12071
12079 /* 12071 */ GIM_Reject,
12080 /* 12072 */ // Label 103: @12072
12081 /* 12072 */ GIM_Try, /*On fail goto*//*Label 571*/ GIMT_Encode4(12095), // Rule ID 450 //
12082 /* 12077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule318Enabled),
12083 /* 12080 */ // MIs[0] dst
12084 /* 12080 */ // No operand predicates
12085 /* 12080 */ // MIs[0] src
12086 /* 12080 */ // No operand predicates
12087 /* 12080 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner55),
12088 /* 12084 */ // Combiner Rule #318: ctlz_to_ctlz_zero_poison
12089 /* 12084 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_CTLZ_ZERO_POISON),
12090 /* 12087 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
12091 /* 12089 */ GIR_RootToRootCopy, /*OpIdx*/1, // src
12092 /* 12091 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
12093 /* 12094 */ GIR_EraseRootFromParent_Done,
12094 /* 12095 */ // Label 571: @12095
12095 /* 12095 */ GIM_Try, /*On fail goto*//*Label 572*/ GIMT_Encode4(12106), // Rule ID 315 //
12096 /* 12100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12097 /* 12103 */ // MIs[0] dst
12098 /* 12103 */ // No operand predicates
12099 /* 12103 */ // MIs[0] mi.src
12100 /* 12103 */ // No operand predicates
12101 /* 12103 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[0]]
12102 /* 12103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12103 /* 12106 */ // Label 572: @12106
12104 /* 12106 */ GIM_Try, /*On fail goto*//*Label 573*/ GIMT_Encode4(12117), // Rule ID 448 //
12105 /* 12111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule316Enabled),
12106 /* 12114 */ // MIs[0] dst
12107 /* 12114 */ // No operand predicates
12108 /* 12114 */ // MIs[0] src
12109 /* 12114 */ // No operand predicates
12110 /* 12114 */ // Combiner Rule #316: ctlz_to_ctls
12111 /* 12114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
12112 /* 12117 */ // Label 573: @12117
12113 /* 12117 */ GIM_Reject,
12114 /* 12118 */ // Label 104: @12118
12115 /* 12118 */ GIM_Try, /*On fail goto*//*Label 574*/ GIMT_Encode4(12129), // Rule ID 316 //
12116 /* 12123 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12117 /* 12126 */ // MIs[0] dst
12118 /* 12126 */ // No operand predicates
12119 /* 12126 */ // MIs[0] mi.src
12120 /* 12126 */ // No operand predicates
12121 /* 12126 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[1]]
12122 /* 12126 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12123 /* 12129 */ // Label 574: @12129
12124 /* 12129 */ GIM_Try, /*On fail goto*//*Label 575*/ GIMT_Encode4(12140), // Rule ID 449 //
12125 /* 12134 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule317Enabled),
12126 /* 12137 */ // MIs[0] dst
12127 /* 12137 */ // No operand predicates
12128 /* 12137 */ // MIs[0] src
12129 /* 12137 */ // No operand predicates
12130 /* 12137 */ // Combiner Rule #317: ctlz_zero_poison_to_ctls
12131 /* 12137 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
12132 /* 12140 */ // Label 575: @12140
12133 /* 12140 */ GIM_Reject,
12134 /* 12141 */ // Label 105: @12141
12135 /* 12141 */ GIM_Try, /*On fail goto*//*Label 576*/ GIMT_Encode4(12152), // Rule ID 319 //
12136 /* 12146 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12137 /* 12149 */ // MIs[0] dst
12138 /* 12149 */ // No operand predicates
12139 /* 12149 */ // MIs[0] mi.src
12140 /* 12149 */ // No operand predicates
12141 /* 12149 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[4]]
12142 /* 12149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12143 /* 12152 */ // Label 576: @12152
12144 /* 12152 */ GIM_Reject,
12145 /* 12153 */ // Label 106: @12153
12146 /* 12153 */ GIM_Try, /*On fail goto*//*Label 577*/ GIMT_Encode4(12164), // Rule ID 321 //
12147 /* 12158 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12148 /* 12161 */ // MIs[0] dst
12149 /* 12161 */ // No operand predicates
12150 /* 12161 */ // MIs[0] mi.src
12151 /* 12161 */ // No operand predicates
12152 /* 12161 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[6]]
12153 /* 12161 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12154 /* 12164 */ // Label 577: @12164
12155 /* 12164 */ GIM_Reject,
12156 /* 12165 */ // Label 107: @12165
12157 /* 12165 */ GIM_Try, /*On fail goto*//*Label 578*/ GIMT_Encode4(12209), // Rule ID 271 //
12158 /* 12170 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
12159 /* 12173 */ // MIs[0] d
12160 /* 12173 */ // No operand predicates
12161 /* 12173 */ // MIs[0] src
12162 /* 12173 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12163 /* 12177 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
12164 /* 12181 */ // MIs[1] rev
12165 /* 12181 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
12166 /* 12185 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
12167 /* 12189 */ // MIs[2] val
12168 /* 12189 */ // No operand predicates
12169 /* 12189 */ // MIs[1] amt
12170 /* 12189 */ // No operand predicates
12171 /* 12189 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner39),
12172 /* 12193 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
12173 /* 12195 */ // Combiner Rule #203: bitreverse_lshr
12174 /* 12195 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
12175 /* 12198 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
12176 /* 12200 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
12177 /* 12204 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
12178 /* 12208 */ GIR_EraseRootFromParent_Done,
12179 /* 12209 */ // Label 578: @12209
12180 /* 12209 */ GIM_Try, /*On fail goto*//*Label 579*/ GIMT_Encode4(12253), // Rule ID 270 //
12181 /* 12214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
12182 /* 12217 */ // MIs[0] d
12183 /* 12217 */ // No operand predicates
12184 /* 12217 */ // MIs[0] src
12185 /* 12217 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12186 /* 12221 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
12187 /* 12225 */ // MIs[1] rev
12188 /* 12225 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
12189 /* 12229 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
12190 /* 12233 */ // MIs[2] val
12191 /* 12233 */ // No operand predicates
12192 /* 12233 */ // MIs[1] amt
12193 /* 12233 */ // No operand predicates
12194 /* 12233 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner38),
12195 /* 12237 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
12196 /* 12239 */ // Combiner Rule #202: bitreverse_shl
12197 /* 12239 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
12198 /* 12242 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
12199 /* 12244 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
12200 /* 12248 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
12201 /* 12252 */ GIR_EraseRootFromParent_Done,
12202 /* 12253 */ // Label 579: @12253
12203 /* 12253 */ GIM_Try, /*On fail goto*//*Label 580*/ GIMT_Encode4(12264), // Rule ID 322 //
12204 /* 12258 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
12205 /* 12261 */ // MIs[0] dst
12206 /* 12261 */ // No operand predicates
12207 /* 12261 */ // MIs[0] mi.src
12208 /* 12261 */ // No operand predicates
12209 /* 12261 */ // Combiner Rule #214: constant_fold_unary_int_op @ [mi[7]]
12210 /* 12261 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
12211 /* 12264 */ // Label 580: @12264
12212 /* 12264 */ GIM_Reject,
12213 /* 12265 */ // Label 108: @12265
12214 /* 12265 */ GIM_Try, /*On fail goto*//*Label 581*/ GIMT_Encode4(12286), // Rule ID 213 //
12215 /* 12270 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
12216 /* 12273 */ // MIs[0] dst
12217 /* 12273 */ // No operand predicates
12218 /* 12273 */ // MIs[0] src0
12219 /* 12273 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12220 /* 12277 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
12221 /* 12281 */ // MIs[1] cst
12222 /* 12281 */ // No operand predicates
12223 /* 12281 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
12224 /* 12283 */ // Combiner Rule #163: constant_fold_fceil
12225 /* 12283 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
12226 /* 12286 */ // Label 581: @12286
12227 /* 12286 */ GIM_Reject,
12228 /* 12287 */ // Label 109: @12287
12229 /* 12287 */ GIM_Try, /*On fail goto*//*Label 582*/ GIMT_Encode4(12308), // Rule ID 209 //
12230 /* 12292 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
12231 /* 12295 */ // MIs[0] dst
12232 /* 12295 */ // No operand predicates
12233 /* 12295 */ // MIs[0] src0
12234 /* 12295 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12235 /* 12299 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
12236 /* 12303 */ // MIs[1] cst
12237 /* 12303 */ // No operand predicates
12238 /* 12303 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
12239 /* 12305 */ // Combiner Rule #159: constant_fold_fsqrt
12240 /* 12305 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
12241 /* 12308 */ // Label 582: @12308
12242 /* 12308 */ GIM_Reject,
12243 /* 12309 */ // Label 110: @12309
12244 /* 12309 */ GIM_Try, /*On fail goto*//*Label 583*/ GIMT_Encode4(12330), // Rule ID 214 //
12245 /* 12314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
12246 /* 12317 */ // MIs[0] dst
12247 /* 12317 */ // No operand predicates
12248 /* 12317 */ // MIs[0] src0
12249 /* 12317 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12250 /* 12321 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
12251 /* 12325 */ // MIs[1] cst
12252 /* 12325 */ // No operand predicates
12253 /* 12325 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
12254 /* 12327 */ // Combiner Rule #164: constant_fold_ffloor
12255 /* 12327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
12256 /* 12330 */ // Label 583: @12330
12257 /* 12330 */ GIM_Reject,
12258 /* 12331 */ // Label 111: @12331
12259 /* 12331 */ GIM_Try, /*On fail goto*//*Label 584*/ GIMT_Encode4(12352), // Rule ID 218 //
12260 /* 12336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
12261 /* 12339 */ // MIs[0] dst
12262 /* 12339 */ // No operand predicates
12263 /* 12339 */ // MIs[0] src0
12264 /* 12339 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12265 /* 12343 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
12266 /* 12347 */ // MIs[1] cst
12267 /* 12347 */ // No operand predicates
12268 /* 12347 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
12269 /* 12349 */ // Combiner Rule #168: constant_fold_frint
12270 /* 12349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
12271 /* 12352 */ // Label 584: @12352
12272 /* 12352 */ GIM_Reject,
12273 /* 12353 */ // Label 112: @12353
12274 /* 12353 */ GIM_Try, /*On fail goto*//*Label 585*/ GIMT_Encode4(12374), // Rule ID 219 //
12275 /* 12358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
12276 /* 12361 */ // MIs[0] dst
12277 /* 12361 */ // No operand predicates
12278 /* 12361 */ // MIs[0] src0
12279 /* 12361 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
12280 /* 12365 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
12281 /* 12369 */ // MIs[1] cst
12282 /* 12369 */ // No operand predicates
12283 /* 12369 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
12284 /* 12371 */ // Combiner Rule #169: constant_fold_fnearbyint
12285 /* 12371 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
12286 /* 12374 */ // Label 585: @12374
12287 /* 12374 */ GIM_Reject,
12288 /* 12375 */ // Label 113: @12375
12289 /* 12375 */ GIM_Reject,
12290 /* 12376 */ }; // Size: 12376 bytes
12291 return MatchTable0;
12292}
12293#undef GIMT_Encode2
12294#undef GIMT_Encode4
12295#undef GIMT_Encode8
12296
12297
12298#endif // GET_GICOMBINER_IMPL
12299
12300#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
12301
12302AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
12303AvailableFunctionFeatures()
12304
12305#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
12306
12307#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
12308
12309, State(0),
12310ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
12311
12312#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
12313
12314