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: // 6 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'a': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "dd_shift", 8) != 0)
46 break;
47 return 252; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 19; // "copy_prop"
52 case 'm': // 3 strings to match.
53 switch (RuleIdentifier[1]) {
54 default: break;
55 case 'a': // 1 string to match.
56 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
57 break;
58 return 219; // "match_ors"
59 case 'u': // 2 strings to match.
60 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
61 break;
62 switch (RuleIdentifier[8]) {
63 default: break;
64 case '0': // 1 string to match.
65 return 163; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 162; // "mulo_by_2"
68 }
69 break;
70 }
71 break;
72 case 'n': // 1 string to match.
73 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
74 break;
75 return 228; // "nneg_zext"
76 }
77 break;
78 case 10: // 10 strings to match.
79 switch (RuleIdentifier[0]) {
80 default: break;
81 case 'S': // 2 strings to match.
82 if (memcmp(RuleIdentifier.data()+1, "ub", 2) != 0)
83 break;
84 switch (RuleIdentifier[3]) {
85 default: break;
86 case 'S': // 1 string to match.
87 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
88 break;
89 return 257; // "SubSmaxSub"
90 case 'U': // 1 string to match.
91 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
92 break;
93 return 258; // "SubUmaxSub"
94 }
95 break;
96 case 'i': // 1 string to match.
97 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
98 break;
99 return 96; // "i2p_to_p2i"
100 case 'm': // 2 strings to match.
101 switch (RuleIdentifier[1]) {
102 default: break;
103 case 'a': // 1 string to match.
104 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
105 break;
106 return 218; // "match_ands"
107 case 'u': // 1 string to match.
108 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
109 break;
110 return 20; // "mul_to_shl"
111 }
112 break;
113 case 'p': // 1 string to match.
114 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
115 break;
116 return 95; // "p2i_to_i2p"
117 case 's': // 3 strings to match.
118 switch (RuleIdentifier[1]) {
119 default: break;
120 case 'e': // 2 strings to match.
121 switch (RuleIdentifier[2]) {
122 default: break;
123 case 'l': // 1 string to match.
124 if (memcmp(RuleIdentifier.data()+3, "ect_not", 7) != 0)
125 break;
126 return 135; // "select_not"
127 case 'x': // 1 string to match.
128 if (memcmp(RuleIdentifier.data()+3, "t_trunc", 7) != 0)
129 break;
130 return 226; // "sext_trunc"
131 }
132 break;
133 case 'u': // 1 string to match.
134 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
135 break;
136 return 21; // "sub_to_add"
137 }
138 break;
139 case 'z': // 1 string to match.
140 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
141 break;
142 return 227; // "zext_trunc"
143 }
144 break;
145 case 11: // 8 strings to match.
146 switch (RuleIdentifier[0]) {
147 default: break;
148 case 'a': // 1 string to match.
149 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
150 break;
151 return 101; // "add_sub_reg"
152 case 'm': // 1 string to match.
153 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
154 break;
155 return 243; // "match_addos"
156 case 's': // 1 string to match.
157 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
158 break;
159 return 213; // "sub_add_reg"
160 case 't': // 4 strings to match.
161 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
162 break;
163 switch (RuleIdentifier[6]) {
164 default: break;
165 case 's': // 3 strings to match.
166 switch (RuleIdentifier[7]) {
167 default: break;
168 case 'h': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
170 break;
171 return 142; // "trunc_shift"
172 case 's': // 2 strings to match.
173 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
174 break;
175 switch (RuleIdentifier[10]) {
176 default: break;
177 case 's': // 1 string to match.
178 return 245; // "trunc_ssats"
179 case 'u': // 1 string to match.
180 return 246; // "trunc_ssatu"
181 }
182 break;
183 }
184 break;
185 case 'u': // 1 string to match.
186 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
187 break;
188 return 247; // "trunc_usatu"
189 }
190 break;
191 case 'u': // 1 string to match.
192 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
193 break;
194 return 236; // "unmerge_cst"
195 }
196 break;
197 case 12: // 12 strings to match.
198 switch (RuleIdentifier[0]) {
199 default: break;
200 case 'A': // 1 string to match.
201 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
202 break;
203 return 4; // "APlusBMinusB"
204 case 'B': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
206 break;
207 return 5; // "BMinusAPlusA"
208 case 'a': // 1 string to match.
209 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
210 break;
211 return 164; // "adde_to_addo"
212 case 'c': // 1 string to match.
213 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
214 break;
215 return 250; // "ctlz_to_ctls"
216 case 'f': // 1 string to match.
217 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
218 break;
219 return 215; // "fsub_to_fneg"
220 case 'm': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
222 break;
223 return 193; // "mulh_to_lshr"
224 case 'n': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
226 break;
227 return 143; // "not_cmp_fold"
228 case 'r': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
230 break;
231 return 138; // "redundant_or"
232 case 's': // 2 strings to match.
233 switch (RuleIdentifier[1]) {
234 default: break;
235 case 'd': // 1 string to match.
236 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
237 break;
238 return 209; // "sdiv_by_pow2"
239 case 'e': // 1 string to match.
240 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
241 break;
242 return 54; // "sext_of_sext"
243 }
244 break;
245 case 'u': // 1 string to match.
246 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
247 break;
248 return 208; // "udiv_by_pow2"
249 case 'z': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
251 break;
252 return 52; // "zext_of_zext"
253 }
254 break;
255 case 13: // 19 strings to match.
256 switch (RuleIdentifier[0]) {
257 default: break;
258 case 'A': // 2 strings to match.
259 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
260 break;
261 switch (RuleIdentifier[12]) {
262 default: break;
263 case 'A': // 1 string to match.
264 return 12; // "AMinusBMinusA"
265 case 'C': // 1 string to match.
266 return 9; // "AMinusBMinusC"
267 }
268 break;
269 case 'a': // 1 string to match.
270 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
271 break;
272 return 43; // "add_of_vscale"
273 case 'c': // 1 string to match.
274 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
275 break;
276 return 182; // "commute_shift"
277 case 'l': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
279 break;
280 return 75; // "load_and_mask"
281 case 'm': // 3 strings to match.
282 switch (RuleIdentifier[1]) {
283 default: break;
284 case 'a': // 1 string to match.
285 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
286 break;
287 return 133; // "match_selects"
288 case 'e': // 1 string to match.
289 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
290 break;
291 return 235; // "merge_unmerge"
292 case 'u': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
294 break;
295 return 44; // "mul_of_vscale"
296 }
297 break;
298 case 'r': // 1 string to match.
299 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
300 break;
301 return 136; // "redundant_and"
302 case 's': // 6 strings to match.
303 switch (RuleIdentifier[1]) {
304 default: break;
305 case 'a': // 1 string to match.
306 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
307 break;
308 return 92; // "same_val_zero"
309 case 'd': // 1 string to match.
310 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
311 break;
312 return 211; // "sdiv_by_const"
313 case 'h': // 1 string to match.
314 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
315 break;
316 return 45; // "shl_of_vscale"
317 case 'r': // 1 string to match.
318 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
319 break;
320 return 207; // "srem_by_const"
321 case 'u': // 2 strings to match.
322 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
323 break;
324 switch (RuleIdentifier[4]) {
325 default: break;
326 case 'm': // 1 string to match.
327 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
328 break;
329 return 255; // "sub_minus_one"
330 case 'o': // 1 string to match.
331 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
332 break;
333 return 46; // "sub_of_vscale"
334 }
335 break;
336 }
337 break;
338 case 'u': // 4 strings to match.
339 switch (RuleIdentifier[1]) {
340 default: break;
341 case 'd': // 1 string to match.
342 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
343 break;
344 return 210; // "udiv_by_const"
345 case 'n': // 2 strings to match.
346 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
347 break;
348 switch (RuleIdentifier[8]) {
349 default: break;
350 case 'm': // 1 string to match.
351 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
352 break;
353 return 234; // "unmerge_merge"
354 case 'u': // 1 string to match.
355 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
356 break;
357 return 237; // "unmerge_undef"
358 }
359 break;
360 case 'r': // 1 string to match.
361 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
362 break;
363 return 206; // "urem_by_const"
364 }
365 break;
366 }
367 break;
368 case 14: // 17 strings to match.
369 switch (RuleIdentifier[0]) {
370 default: break;
371 case 'A': // 2 strings to match.
372 switch (RuleIdentifier[1]) {
373 default: break;
374 case 'M': // 1 string to match.
375 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
376 break;
377 return 18; // "AMinusC1PlusC2"
378 case 'P': // 1 string to match.
379 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
380 break;
381 return 14; // "APlusC1MinusC2"
382 }
383 break;
384 case 'C': // 1 string to match.
385 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
386 break;
387 return 15; // "C2MinusAPlusC1"
388 case 'N': // 1 string to match.
389 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
390 break;
391 return 13; // "NotAPlusNegOne"
392 case 'a': // 2 strings to match.
393 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
394 break;
395 switch (RuleIdentifier[10]) {
396 default: break;
397 case 's': // 1 string to match.
398 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
399 break;
400 return 58; // "anyext_of_sext"
401 case 'z': // 1 string to match.
402 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
403 break;
404 return 57; // "anyext_of_zext"
405 }
406 break;
407 case 'b': // 3 strings to match.
408 if (RuleIdentifier[1] != 'i')
409 break;
410 switch (RuleIdentifier[2]) {
411 default: break;
412 case 'n': // 2 strings to match.
413 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
414 break;
415 switch (RuleIdentifier[6]) {
416 default: break;
417 case 's': // 1 string to match.
418 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
419 break;
420 return 91; // "binop_same_val"
421 case 'w': // 1 string to match.
422 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
423 break;
424 return 254; // "binop_with_neg"
425 }
426 break;
427 case 't': // 1 string to match.
428 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
429 break;
430 return 180; // "bitreverse_shl"
431 }
432 break;
433 case 'f': // 2 strings to match.
434 switch (RuleIdentifier[1]) {
435 default: break;
436 case 'a': // 1 string to match.
437 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
438 break;
439 return 192; // "fabs_fneg_fold"
440 case 'n': // 1 string to match.
441 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
442 break;
443 return 98; // "fneg_fneg_fold"
444 }
445 break;
446 case 'm': // 1 string to match.
447 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
448 break;
449 return 23; // "mul_by_neg_one"
450 case 'r': // 1 string to match.
451 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
452 break;
453 return 115; // "reassoc_ptradd"
454 case 's': // 3 strings to match.
455 switch (RuleIdentifier[1]) {
456 default: break;
457 case 'e': // 2 strings to match.
458 switch (RuleIdentifier[2]) {
459 default: break;
460 case 'l': // 1 string to match.
461 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
462 break;
463 return 60; // "select_of_zext"
464 case 'x': // 1 string to match.
465 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
466 break;
467 return 55; // "sext_of_anyext"
468 }
469 break;
470 case 'h': // 1 string to match.
471 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
472 break;
473 return 114; // "shifts_too_big"
474 }
475 break;
476 case 'z': // 1 string to match.
477 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
478 break;
479 return 53; // "zext_of_anyext"
480 }
481 break;
482 case 15: // 14 strings to match.
483 switch (RuleIdentifier[0]) {
484 default: break;
485 case 'A': // 2 strings to match.
486 switch (RuleIdentifier[1]) {
487 default: break;
488 case 'M': // 1 string to match.
489 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
490 break;
491 return 16; // "AMinusC1MinusC2"
492 case 'P': // 1 string to match.
493 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
494 break;
495 return 3; // "APlusZeroMinusB"
496 }
497 break;
498 case 'C': // 1 string to match.
499 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
500 break;
501 return 17; // "C1Minus2MinusC2"
502 case 'Z': // 1 string to match.
503 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
504 break;
505 return 2; // "ZeroMinusAPlusB"
506 case 'a': // 2 strings to match.
507 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
508 break;
509 switch (RuleIdentifier[8]) {
510 default: break;
511 case 's': // 1 string to match.
512 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
513 break;
514 return 262; // "avgceil_s_match"
515 case 'u': // 1 string to match.
516 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
517 break;
518 return 261; // "avgceil_u_match"
519 }
520 break;
521 case 'b': // 1 string to match.
522 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
523 break;
524 return 181; // "bitreverse_lshr"
525 case 'e': // 1 string to match.
526 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
527 break;
528 return 74; // "extending_loads"
529 case 'i': // 1 string to match.
530 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
531 break;
532 return 24; // "idempotent_prop"
533 case 'l': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
535 break;
536 return 171; // "load_or_combine"
537 case 'n': // 1 string to match.
538 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
539 break;
540 return 68; // "narrow_binop_or"
541 case 'o': // 1 string to match.
542 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
543 break;
544 return 161; // "overlapping_and"
545 case 's': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
547 break;
548 return 89; // "select_same_val"
549 case 'z': // 1 string to match.
550 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
551 break;
552 return 140; // "zext_trunc_fold"
553 }
554 break;
555 case 16: // 18 strings to match.
556 switch (RuleIdentifier[0]) {
557 default: break;
558 case 'A': // 1 string to match.
559 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
560 break;
561 return 11; // "AMinusZeroMinusB"
562 case 'a': // 3 strings to match.
563 switch (RuleIdentifier[1]) {
564 default: break;
565 case 'n': // 1 string to match.
566 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
567 break;
568 return 56; // "anyext_of_anyext"
569 case 'v': // 2 strings to match.
570 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
571 break;
572 switch (RuleIdentifier[9]) {
573 default: break;
574 case 's': // 1 string to match.
575 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
576 break;
577 return 260; // "avgfloor_s_match"
578 case 'u': // 1 string to match.
579 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
580 break;
581 return 259; // "avgfloor_u_match"
582 }
583 break;
584 }
585 break;
586 case 'n': // 5 strings to match.
587 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
588 break;
589 switch (RuleIdentifier[13]) {
590 default: break;
591 case 'a': // 2 strings to match.
592 switch (RuleIdentifier[14]) {
593 default: break;
594 case 'd': // 1 string to match.
595 if (RuleIdentifier[15] != 'd')
596 break;
597 return 64; // "narrow_binop_add"
598 case 'n': // 1 string to match.
599 if (RuleIdentifier[15] != 'd')
600 break;
601 return 67; // "narrow_binop_and"
602 }
603 break;
604 case 'm': // 1 string to match.
605 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
606 break;
607 return 66; // "narrow_binop_mul"
608 case 's': // 1 string to match.
609 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
610 break;
611 return 65; // "narrow_binop_sub"
612 case 'x': // 1 string to match.
613 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
614 break;
615 return 69; // "narrow_binop_xor"
616 }
617 break;
618 case 'o': // 1 string to match.
619 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
620 break;
621 return 220; // "or_and_xor_to_or"
622 case 's': // 5 strings to match.
623 switch (RuleIdentifier[1]) {
624 default: break;
625 case 'e': // 3 strings to match.
626 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
627 break;
628 switch (RuleIdentifier[7]) {
629 default: break;
630 case 'o': // 1 string to match.
631 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
632 break;
633 return 61; // "select_of_anyext"
634 case 't': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
636 break;
637 return 214; // "select_to_minmax"
638 case 'u': // 1 string to match.
639 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
640 break;
641 return 130; // "select_undef_cmp"
642 }
643 break;
644 case 'u': // 2 strings to match.
645 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
646 break;
647 switch (RuleIdentifier[5]) {
648 default: break;
649 case 'f': // 1 string to match.
650 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
651 break;
652 return 256; // "sub_of_mul_const"
653 case 'n': // 1 string to match.
654 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
655 break;
656 return 253; // "sub_one_from_sub"
657 }
658 break;
659 }
660 break;
661 case 't': // 2 strings to match.
662 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
663 break;
664 switch (RuleIdentifier[12]) {
665 default: break;
666 case 's': // 1 string to match.
667 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
668 break;
669 return 50; // "truncate_of_sext"
670 case 'z': // 1 string to match.
671 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
672 break;
673 return 49; // "truncate_of_zext"
674 }
675 break;
676 case 'u': // 1 string to match.
677 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
678 break;
679 return 77; // "undef_to_fp_zero"
680 }
681 break;
682 case 17: // 18 strings to match.
683 switch (RuleIdentifier[0]) {
684 default: break;
685 case 'A': // 2 strings to match.
686 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
687 break;
688 switch (RuleIdentifier[11]) {
689 default: break;
690 case 'A': // 1 string to match.
691 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
692 break;
693 return 8; // "APlusBMinusAplusC"
694 case 'C': // 1 string to match.
695 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
696 break;
697 return 10; // "APlusBMinusCPlusA"
698 }
699 break;
700 case 'a': // 3 strings to match.
701 switch (RuleIdentifier[1]) {
702 default: break;
703 case 'd': // 1 string to match.
704 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
705 break;
706 return 22; // "add_p2i_to_ptradd"
707 case 'n': // 2 strings to match.
708 switch (RuleIdentifier[2]) {
709 default: break;
710 case 'd': // 1 string to match.
711 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
712 break;
713 return 222; // "and_xor_or_to_and"
714 case 'y': // 1 string to match.
715 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
716 break;
717 return 97; // "anyext_trunc_fold"
718 }
719 break;
720 }
721 break;
722 case 'c': // 4 strings to match.
723 switch (RuleIdentifier[1]) {
724 default: break;
725 case 'a': // 2 strings to match.
726 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
727 break;
728 switch (RuleIdentifier[13]) {
729 default: break;
730 case 'f': // 1 string to match.
731 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
732 break;
733 return 119; // "canonicalize_fcmp"
734 case 'i': // 1 string to match.
735 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
736 break;
737 return 118; // "canonicalize_icmp"
738 }
739 break;
740 case 'o': // 2 strings to match.
741 switch (RuleIdentifier[2]) {
742 default: break;
743 case 'm': // 1 string to match.
744 if (memcmp(RuleIdentifier.data()+3, "bine_or_of_and", 14) != 0)
745 break;
746 return 263; // "combine_or_of_and"
747 case 'n': // 1 string to match.
748 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
749 break;
750 return 189; // "constant_fold_fma"
751 }
752 break;
753 }
754 break;
755 case 'd': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
757 break;
758 return 172; // "div_rem_to_divrem"
759 case 'e': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
761 break;
762 return 87; // "erase_undef_store"
763 case 'p': // 1 string to match.
764 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
765 break;
766 return 168; // "ptr_add_with_zero"
767 case 's': // 4 strings to match.
768 switch (RuleIdentifier[1]) {
769 default: break;
770 case 'e': // 2 strings to match.
771 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
772 break;
773 switch (RuleIdentifier[7]) {
774 default: break;
775 case 't': // 1 string to match.
776 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
777 break;
778 return 132; // "select_to_iminmax"
779 case 'z': // 1 string to match.
780 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
781 break;
782 return 134; // "select_zero_false"
783 }
784 break;
785 case 'h': // 1 string to match.
786 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
787 break;
788 return 169; // "shift_immed_chain"
789 case 'r': // 1 string to match.
790 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
791 break;
792 return 205; // "srem_pow2_to_mask"
793 }
794 break;
795 case 'u': // 2 strings to match.
796 switch (RuleIdentifier[1]) {
797 default: break;
798 case 'n': // 1 string to match.
799 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
800 break;
801 return 78; // "undef_to_int_zero"
802 case 'r': // 1 string to match.
803 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
804 break;
805 return 139; // "urem_pow2_to_mask"
806 }
807 break;
808 }
809 break;
810 case 18: // 12 strings to match.
811 switch (RuleIdentifier[0]) {
812 default: break;
813 case 'A': // 3 strings to match.
814 switch (RuleIdentifier[1]) {
815 default: break;
816 case 'M': // 2 strings to match.
817 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
818 break;
819 switch (RuleIdentifier[11]) {
820 default: break;
821 case 'B': // 1 string to match.
822 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
823 break;
824 return 7; // "AMinusBPlusBMinusC"
825 case 'C': // 1 string to match.
826 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
827 break;
828 return 6; // "AMinusBPlusCMinusA"
829 }
830 break;
831 case 'P': // 1 string to match.
832 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
833 break;
834 return 0; // "APlusBMinusCMinusB"
835 }
836 break;
837 case 'b': // 1 string to match.
838 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
839 break;
840 return 93; // "binop_left_to_zero"
841 case 'c': // 3 strings to match.
842 if (RuleIdentifier[1] != 'o')
843 break;
844 switch (RuleIdentifier[2]) {
845 default: break;
846 case 'm': // 1 string to match.
847 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
848 break;
849 return 165; // "combine_minmax_nan"
850 case 'n': // 2 strings to match.
851 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
852 break;
853 switch (RuleIdentifier[15]) {
854 default: break;
855 case 'a': // 1 string to match.
856 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
857 break;
858 return 146; // "constant_fold_fabs"
859 case 'n': // 1 string to match.
860 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
861 break;
862 return 145; // "constant_fold_fneg"
863 }
864 break;
865 }
866 break;
867 case 'e': // 1 string to match.
868 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
869 break;
870 return 166; // "expand_const_fpowi"
871 case 'f': // 1 string to match.
872 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
873 break;
874 return 107; // "fptrunc_fpext_fold"
875 case 's': // 2 strings to match.
876 if (RuleIdentifier[1] != 'e')
877 break;
878 switch (RuleIdentifier[2]) {
879 default: break;
880 case 'l': // 1 string to match.
881 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
882 break;
883 return 62; // "select_of_truncate"
884 case 'x': // 1 string to match.
885 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
886 break;
887 return 127; // "sext_inreg_of_load"
888 }
889 break;
890 case 't': // 1 string to match.
891 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
892 break;
893 return 51; // "truncate_of_anyext"
894 }
895 break;
896 case 19: // 19 strings to match.
897 switch (RuleIdentifier[0]) {
898 default: break;
899 case 'A': // 1 string to match.
900 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
901 break;
902 return 1; // "AMinusBMinusCMinusC"
903 case 'b': // 1 string to match.
904 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
905 break;
906 return 94; // "binop_right_to_zero"
907 case 'c': // 7 strings to match.
908 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
909 break;
910 switch (RuleIdentifier[5]) {
911 default: break;
912 case '_': // 1 string to match.
913 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
914 break;
915 return 160; // "const_ptradd_to_i2p"
916 case 'a': // 6 strings to match.
917 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
918 break;
919 switch (RuleIdentifier[14]) {
920 default: break;
921 case 'b': // 1 string to match.
922 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
923 break;
924 return 187; // "constant_fold_binop"
925 case 'f': // 5 strings to match.
926 switch (RuleIdentifier[15]) {
927 default: break;
928 case 'c': // 1 string to match.
929 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
930 break;
931 return 151; // "constant_fold_fceil"
932 case 'l': // 1 string to match.
933 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
934 break;
935 return 148; // "constant_fold_flog2"
936 case 'p': // 1 string to match.
937 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
938 break;
939 return 150; // "constant_fold_fpext"
940 case 'r': // 1 string to match.
941 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
942 break;
943 return 156; // "constant_fold_frint"
944 case 's': // 1 string to match.
945 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
946 break;
947 return 147; // "constant_fold_fsqrt"
948 }
949 break;
950 }
951 break;
952 }
953 break;
954 case 'e': // 1 string to match.
955 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
956 break;
957 return 111; // "extend_through_phis"
958 case 'i': // 1 string to match.
959 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
960 break;
961 return 70; // "integer_of_truncate"
962 case 'm': // 1 string to match.
963 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
964 break;
965 return 241; // "merge_of_x_and_zero"
966 case 'p': // 1 string to match.
967 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
968 break;
969 return 117; // "ptr_add_immed_chain"
970 case 'r': // 2 strings to match.
971 switch (RuleIdentifier[1]) {
972 default: break;
973 case 'e': // 1 string to match.
974 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
975 break;
976 return 116; // "reassoc_comm_binops"
977 case 'i': // 1 string to match.
978 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
979 break;
980 return 90; // "right_identity_zero"
981 }
982 break;
983 case 's': // 3 strings to match.
984 switch (RuleIdentifier[1]) {
985 default: break;
986 case 'e': // 1 string to match.
987 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
988 break;
989 return 131; // "select_constant_cmp"
990 case 'i': // 2 strings to match.
991 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
992 break;
993 switch (RuleIdentifier[9]) {
994 default: break;
995 case 'a': // 1 string to match.
996 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
997 break;
998 return 112; // "simplify_add_to_sub"
999 case 'n': // 1 string to match.
1000 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1001 break;
1002 return 224; // "simplify_neg_minmax"
1003 }
1004 break;
1005 }
1006 break;
1007 case 'u': // 1 string to match.
1008 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1009 break;
1010 return 82; // "unary_undef_to_zero"
1011 }
1012 break;
1013 case 20: // 9 strings to match.
1014 switch (RuleIdentifier[0]) {
1015 default: break;
1016 case 'a': // 1 string to match.
1017 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1018 break;
1019 return 195; // "and_or_disjoint_mask"
1020 case 'b': // 1 string to match.
1021 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1022 break;
1023 return 105; // "bitcast_bitcast_fold"
1024 case 'c': // 1 string to match.
1025 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1026 break;
1027 return 152; // "constant_fold_ffloor"
1028 case 'm': // 1 string to match.
1029 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1030 break;
1031 return 240; // "merge_of_x_and_undef"
1032 case 'o': // 1 string to match.
1033 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1034 break;
1035 return 221; // "or_and_xor_to_xor_or"
1036 case 'r': // 2 strings to match.
1037 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1038 break;
1039 switch (RuleIdentifier[4]) {
1040 default: break;
1041 case 'c': // 1 string to match.
1042 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1043 break;
1044 return 128; // "reduce_shl_of_extend"
1045 case 'n': // 1 string to match.
1046 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1047 break;
1048 return 137; // "redundant_sext_inreg"
1049 }
1050 break;
1051 case 'u': // 2 strings to match.
1052 if (RuleIdentifier[1] != 'n')
1053 break;
1054 switch (RuleIdentifier[2]) {
1055 default: break;
1056 case 'a': // 1 string to match.
1057 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1058 break;
1059 return 83; // "unary_undef_to_undef"
1060 case 'm': // 1 string to match.
1061 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1062 break;
1063 return 239; // "unmerge_zext_to_zext"
1064 }
1065 break;
1066 }
1067 break;
1068 case 21: // 11 strings to match.
1069 switch (RuleIdentifier[0]) {
1070 default: break;
1071 case 'a': // 1 string to match.
1072 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1073 break;
1074 return 223; // "and_xor_or_to_xor_and"
1075 case 'c': // 4 strings to match.
1076 if (RuleIdentifier[1] != 'o')
1077 break;
1078 switch (RuleIdentifier[2]) {
1079 default: break;
1080 case 'm': // 2 strings to match.
1081 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1082 break;
1083 switch (RuleIdentifier[8]) {
1084 default: break;
1085 case 'b': // 1 string to match.
1086 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1087 break;
1088 return 242; // "combine_build_unmerge"
1089 case 'c': // 1 string to match.
1090 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1091 break;
1092 return 225; // "combine_concat_vector"
1093 }
1094 break;
1095 case 'n': // 2 strings to match.
1096 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1097 break;
1098 switch (RuleIdentifier[14]) {
1099 default: break;
1100 case 'c': // 1 string to match.
1101 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1102 break;
1103 return 190; // "constant_fold_cast_op"
1104 case 'f': // 1 string to match.
1105 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1106 break;
1107 return 149; // "constant_fold_fptrunc"
1108 }
1109 break;
1110 }
1111 break;
1112 case 'f': // 1 string to match.
1113 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1114 break;
1115 return 212; // "fdiv_repeated_divison"
1116 case 'i': // 1 string to match.
1117 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1118 break;
1119 return 30; // "insert_vector_elt_oob"
1120 case 'l': // 1 string to match.
1121 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1122 break;
1123 return 249; // "lshr_of_trunc_of_lshr"
1124 case 'r': // 1 string to match.
1125 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1126 break;
1127 return 100; // "right_identity_one_fp"
1128 case 'u': // 2 strings to match.
1129 if (RuleIdentifier[1] != 'n')
1130 break;
1131 switch (RuleIdentifier[2]) {
1132 default: break;
1133 case 'd': // 1 string to match.
1134 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1135 break;
1136 return 79; // "undef_to_negative_one"
1137 case 'm': // 1 string to match.
1138 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1139 break;
1140 return 238; // "unmerge_dead_to_trunc"
1141 }
1142 break;
1143 }
1144 break;
1145 case 22: // 13 strings to match.
1146 switch (RuleIdentifier[0]) {
1147 default: break;
1148 case 'c': // 2 strings to match.
1149 if (RuleIdentifier[1] != 'o')
1150 break;
1151 switch (RuleIdentifier[2]) {
1152 default: break;
1153 case 'm': // 1 string to match.
1154 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1155 break;
1156 return 229; // "combine_shuffle_concat"
1157 case 'n': // 1 string to match.
1158 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1159 break;
1160 return 188; // "constant_fold_fp_binop"
1161 }
1162 break;
1163 case 'f': // 4 strings to match.
1164 switch (RuleIdentifier[1]) {
1165 default: break;
1166 case 'o': // 1 string to match.
1167 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1168 break;
1169 return 204; // "fold_binop_into_select"
1170 case 'u': // 3 strings to match.
1171 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1172 break;
1173 switch (RuleIdentifier[13]) {
1174 default: break;
1175 case 'l': // 1 string to match.
1176 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1177 break;
1178 return 176; // "funnel_shift_left_zero"
1179 case 'o': // 1 string to match.
1180 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1181 break;
1182 return 177; // "funnel_shift_overshift"
1183 case 't': // 1 string to match.
1184 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1185 break;
1186 return 174; // "funnel_shift_to_rotate"
1187 }
1188 break;
1189 }
1190 break;
1191 case 'i': // 1 string to match.
1192 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1193 break;
1194 return 121; // "icmp_to_lhs_known_bits"
1195 case 'm': // 1 string to match.
1196 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1197 break;
1198 return 244; // "match_subo_no_overflow"
1199 case 'p': // 1 string to match.
1200 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1201 break;
1202 return 84; // "propagate_undef_any_op"
1203 case 'r': // 2 strings to match.
1204 switch (RuleIdentifier[1]) {
1205 default: break;
1206 case 'e': // 1 string to match.
1207 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1208 break;
1209 return 194; // "redundant_neg_operands"
1210 case 'i': // 1 string to match.
1211 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1212 break;
1213 return 99; // "right_identity_one_int"
1214 }
1215 break;
1216 case 's': // 1 string to match.
1217 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1218 break;
1219 return 125; // "shl_ashr_to_sext_inreg"
1220 case 't': // 1 string to match.
1221 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1222 break;
1223 return 103; // "trunc_buildvector_fold"
1224 }
1225 break;
1226 case 23: // 6 strings to match.
1227 switch (RuleIdentifier[0]) {
1228 default: break;
1229 case 'b': // 1 string to match.
1230 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1231 break;
1232 return 63; // "buildvector_of_truncate"
1233 case 'f': // 1 string to match.
1234 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1235 break;
1236 return 175; // "funnel_shift_right_zero"
1237 case 'i': // 2 strings to match.
1238 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1239 break;
1240 switch (RuleIdentifier[21]) {
1241 default: break;
1242 case 's': // 1 string to match.
1243 if (RuleIdentifier[22] != 'i')
1244 break;
1245 return 158; // "itof_const_zero_fold_si"
1246 case 'u': // 1 string to match.
1247 if (RuleIdentifier[22] != 'i')
1248 break;
1249 return 159; // "itof_const_zero_fold_ui"
1250 }
1251 break;
1252 case 'p': // 1 string to match.
1253 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1254 break;
1255 return 85; // "propagate_undef_all_ops"
1256 case 't': // 1 string to match.
1257 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1258 break;
1259 return 248; // "truncusatu_to_fptouisat"
1260 }
1261 break;
1262 case 24: // 8 strings to match.
1263 switch (RuleIdentifier[0]) {
1264 default: break;
1265 case 'b': // 1 string to match.
1266 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1267 break;
1268 return 80; // "binop_left_undef_to_zero"
1269 case 'c': // 2 strings to match.
1270 switch (RuleIdentifier[1]) {
1271 default: break;
1272 case 'o': // 1 string to match.
1273 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1274 break;
1275 return 157; // "constant_fold_fnearbyint"
1276 case 't': // 1 string to match.
1277 if (memcmp(RuleIdentifier.data()+2, "lz_zero_poison_to_ctls", 22) != 0)
1278 break;
1279 return 251; // "ctlz_zero_poison_to_ctls"
1280 }
1281 break;
1282 case 'm': // 1 string to match.
1283 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1284 break;
1285 return 29; // "match_extract_of_element"
1286 case 'n': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1288 break;
1289 return 129; // "narrow_binop_feeding_and"
1290 case 's': // 2 strings to match.
1291 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1292 break;
1293 switch (RuleIdentifier[11]) {
1294 default: break;
1295 case 'o': // 1 string to match.
1296 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1297 break;
1298 return 59; // "sext_inreg_of_sext_inreg"
1299 case 't': // 1 string to match.
1300 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1301 break;
1302 return 141; // "sext_inreg_to_zext_inreg"
1303 }
1304 break;
1305 case 'x': // 1 string to match.
1306 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1307 break;
1308 return 167; // "xor_of_and_with_same_reg"
1309 }
1310 break;
1311 case 25: // 7 strings to match.
1312 switch (RuleIdentifier[0]) {
1313 default: break;
1314 case 'b': // 3 strings to match.
1315 switch (RuleIdentifier[1]) {
1316 default: break;
1317 case 'i': // 2 strings to match.
1318 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1319 break;
1320 switch (RuleIdentifier[22]) {
1321 default: break;
1322 case 'a': // 1 string to match.
1323 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1324 break;
1325 return 184; // "bitfield_extract_from_and"
1326 case 's': // 1 string to match.
1327 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1328 break;
1329 return 185; // "bitfield_extract_from_shr"
1330 }
1331 break;
1332 case 'u': // 1 string to match.
1333 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1334 break;
1335 return 102; // "buildvector_identity_fold"
1336 }
1337 break;
1338 case 'c': // 1 string to match.
1339 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1340 break;
1341 return 230; // "combine_shuffle_undef_rhs"
1342 case 'e': // 1 string to match.
1343 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1344 break;
1345 return 72; // "extract_vec_elt_build_vec"
1346 case 'n': // 1 string to match.
1347 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1348 break;
1349 return 126; // "neg_and_one_to_sext_inreg"
1350 case 'r': // 1 string to match.
1351 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1352 break;
1353 return 110; // "right_identity_neg_one_fp"
1354 }
1355 break;
1356 case 26: // 6 strings to match.
1357 switch (RuleIdentifier[0]) {
1358 default: break;
1359 case 'b': // 2 strings to match.
1360 if (RuleIdentifier[1] != 'i')
1361 break;
1362 switch (RuleIdentifier[2]) {
1363 default: break;
1364 case 'n': // 1 string to match.
1365 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1366 break;
1367 return 81; // "binop_right_undef_to_undef"
1368 case 't': // 1 string to match.
1369 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1370 break;
1371 return 106; // "bitcast_bitcast_to_bitcast"
1372 }
1373 break;
1374 case 'c': // 2 strings to match.
1375 if (RuleIdentifier[1] != 'o')
1376 break;
1377 switch (RuleIdentifier[2]) {
1378 default: break;
1379 case 'm': // 1 string to match.
1380 if (memcmp(RuleIdentifier.data()+3, "mute_fp_constant_to_rhs", 23) != 0)
1381 break;
1382 return 217; // "commute_fp_constant_to_rhs"
1383 case 'n': // 1 string to match.
1384 if (memcmp(RuleIdentifier.data()+3, "stant_fold_unary_int_op", 23) != 0)
1385 break;
1386 return 191; // "constant_fold_unary_int_op"
1387 }
1388 break;
1389 case 'f': // 1 string to match.
1390 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1391 break;
1392 return 173; // "funnel_shift_from_or_shift"
1393 case 'r': // 1 string to match.
1394 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1395 break;
1396 return 108; // "right_identity_neg_zero_fp"
1397 }
1398 break;
1399 case 27: // 6 strings to match.
1400 switch (RuleIdentifier[0]) {
1401 default: break;
1402 case 'c': // 2 strings to match.
1403 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1404 break;
1405 switch (RuleIdentifier[3]) {
1406 default: break;
1407 case 'b': // 1 string to match.
1408 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1409 break;
1410 return 232; // "combine_use_vector_truncate"
1411 case 'm': // 1 string to match.
1412 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1413 break;
1414 return 216; // "commute_int_constant_to_rhs"
1415 }
1416 break;
1417 case 'd': // 1 string to match.
1418 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1419 break;
1420 return 123; // "double_icmp_zero_or_combine"
1421 case 'r': // 1 string to match.
1422 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1423 break;
1424 return 124; // "redundant_binop_in_equality"
1425 case 't': // 1 string to match.
1426 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1427 break;
1428 return 104; // "trunc_lshr_buildvector_fold"
1429 case 'u': // 1 string to match.
1430 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1431 break;
1432 return 233; // "unmerge_anyext_build_vector"
1433 }
1434 break;
1435 case 28: // 4 strings to match.
1436 switch (RuleIdentifier[0]) {
1437 default: break;
1438 case 'd': // 1 string to match.
1439 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1440 break;
1441 return 122; // "double_icmp_zero_and_combine"
1442 case 'o': // 1 string to match.
1443 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1444 break;
1445 return 144; // "opt_brcond_by_inverting_cond"
1446 case 'p': // 1 string to match.
1447 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1448 break;
1449 return 86; // "propagate_undef_shuffle_mask"
1450 case 's': // 1 string to match.
1451 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1452 break;
1453 return 170; // "shift_of_shifted_logic_chain"
1454 }
1455 break;
1456 case 29: // 6 strings to match.
1457 switch (RuleIdentifier[0]) {
1458 default: break;
1459 case 'b': // 1 string to match.
1460 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1461 break;
1462 return 186; // "bitfield_extract_from_shr_and"
1463 case 'c': // 4 strings to match.
1464 if (RuleIdentifier[1] != 'o')
1465 break;
1466 switch (RuleIdentifier[2]) {
1467 default: break;
1468 case 'm': // 2 strings to match.
1469 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1470 break;
1471 switch (RuleIdentifier[8]) {
1472 default: break;
1473 case 'e': // 1 string to match.
1474 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1475 break;
1476 return 76; // "combine_extracted_vector_load"
1477 case 's': // 1 string to match.
1478 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1479 break;
1480 return 231; // "combine_shuffle_disjoint_mask"
1481 }
1482 break;
1483 case 'n': // 2 strings to match.
1484 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1485 break;
1486 switch (RuleIdentifier[24]) {
1487 default: break;
1488 case 'r': // 1 string to match.
1489 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1490 break;
1491 return 154; // "constant_fold_intrinsic_round"
1492 case 't': // 1 string to match.
1493 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1494 break;
1495 return 153; // "constant_fold_intrinsic_trunc"
1496 }
1497 break;
1498 }
1499 break;
1500 case 'i': // 1 string to match.
1501 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1502 break;
1503 return 120; // "icmp_to_true_false_known_bits"
1504 }
1505 break;
1506 case 30: // 2 strings to match.
1507 switch (RuleIdentifier[0]) {
1508 default: break;
1509 case 'f': // 1 string to match.
1510 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1511 break;
1512 return 47; // "freeze_of_non_undef_non_poison"
1513 case 'r': // 1 string to match.
1514 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1515 break;
1516 return 109; // "right_identity_neg_zero_fp_nsz"
1517 }
1518 break;
1519 case 31: // 2 strings to match.
1520 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1521 break;
1522 switch (RuleIdentifier[22]) {
1523 default: break;
1524 case 'e': // 1 string to match.
1525 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1526 break;
1527 return 28; // "insert_vector_element_elt_undef"
1528 case 'i': // 1 string to match.
1529 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1530 break;
1531 return 27; // "insert_vector_element_idx_undef"
1532 }
1533 break;
1534 case 32: // 4 strings to match.
1535 switch (RuleIdentifier[0]) {
1536 default: break;
1537 case 'b': // 1 string to match.
1538 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1539 break;
1540 return 183; // "bitfield_extract_from_sext_inreg"
1541 case 'c': // 2 strings to match.
1542 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1543 break;
1544 switch (RuleIdentifier[9]) {
1545 default: break;
1546 case 'a': // 1 string to match.
1547 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1548 break;
1549 return 196; // "combine_fadd_fmul_to_fmad_or_fma"
1550 case 's': // 1 string to match.
1551 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1552 break;
1553 return 200; // "combine_fsub_fmul_to_fmad_or_fma"
1554 }
1555 break;
1556 case 'e': // 1 string to match.
1557 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1558 break;
1559 return 31; // "extract_vector_element_not_const"
1560 }
1561 break;
1562 case 33: // 1 string to match.
1563 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1564 break;
1565 return 155; // "constant_fold_intrinsic_roundeven"
1566 case 34: // 1 string to match.
1567 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1568 break;
1569 return 73; // "extract_all_elts_from_build_vector"
1570 case 35: // 1 string to match.
1571 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1572 break;
1573 return 33; // "extract_vector_element_build_vector"
1574 case 36: // 4 strings to match.
1575 switch (RuleIdentifier[0]) {
1576 default: break;
1577 case 'c': // 2 strings to match.
1578 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1579 break;
1580 switch (RuleIdentifier[8]) {
1581 default: break;
1582 case 'f': // 1 string to match.
1583 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1584 break;
1585 return 198; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1586 case 'i': // 1 string to match.
1587 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1588 break;
1589 return 71; // "combine_insert_vec_elts_build_vector"
1590 }
1591 break;
1592 case 'i': // 1 string to match.
1593 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1594 break;
1595 return 88; // "insert_extract_vec_elt_out_of_bounds"
1596 case 'm': // 1 string to match.
1597 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1598 break;
1599 return 26; // "match_extract_of_element_undef_index"
1600 }
1601 break;
1602 case 37: // 4 strings to match.
1603 switch (RuleIdentifier[0]) {
1604 default: break;
1605 case 'c': // 1 string to match.
1606 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1607 break;
1608 return 201; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1609 case 'e': // 1 string to match.
1610 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1611 break;
1612 return 41; // "extract_vector_element_shuffle_vector"
1613 case 'h': // 1 string to match.
1614 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1615 break;
1616 return 113; // "hoist_logic_op_with_same_opcode_hands"
1617 case 'm': // 1 string to match.
1618 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1619 break;
1620 return 25; // "match_extract_of_element_undef_vector"
1621 }
1622 break;
1623 case 38: // 2 strings to match.
1624 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1625 break;
1626 switch (RuleIdentifier[9]) {
1627 default: break;
1628 case 'a': // 1 string to match.
1629 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1630 break;
1631 return 197; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1632 case 's': // 1 string to match.
1633 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1634 break;
1635 return 202; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1636 }
1637 break;
1638 case 40: // 1 string to match.
1639 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1640 break;
1641 return 32; // "extract_vector_element_different_indices"
1642 case 42: // 9 strings to match.
1643 switch (RuleIdentifier[0]) {
1644 default: break;
1645 case 'c': // 1 string to match.
1646 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1647 break;
1648 return 199; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1649 case 'e': // 7 strings to match.
1650 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1651 break;
1652 switch (RuleIdentifier[41]) {
1653 default: break;
1654 case '2': // 1 string to match.
1655 return 34; // "extract_vector_element_build_vector_trunc2"
1656 case '3': // 1 string to match.
1657 return 35; // "extract_vector_element_build_vector_trunc3"
1658 case '4': // 1 string to match.
1659 return 36; // "extract_vector_element_build_vector_trunc4"
1660 case '5': // 1 string to match.
1661 return 37; // "extract_vector_element_build_vector_trunc5"
1662 case '6': // 1 string to match.
1663 return 38; // "extract_vector_element_build_vector_trunc6"
1664 case '7': // 1 string to match.
1665 return 39; // "extract_vector_element_build_vector_trunc7"
1666 case '8': // 1 string to match.
1667 return 40; // "extract_vector_element_build_vector_trunc8"
1668 }
1669 break;
1670 case 'f': // 1 string to match.
1671 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1672 break;
1673 return 178; // "funnel_shift_or_shift_to_funnel_shift_left"
1674 }
1675 break;
1676 case 43: // 2 strings to match.
1677 switch (RuleIdentifier[0]) {
1678 default: break;
1679 case 'c': // 1 string to match.
1680 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1681 break;
1682 return 203; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1683 case 'f': // 1 string to match.
1684 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1685 break;
1686 return 179; // "funnel_shift_or_shift_to_funnel_shift_right"
1687 }
1688 break;
1689 case 44: // 1 string to match.
1690 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1691 break;
1692 return 42; // "insert_vector_element_extract_vector_element"
1693 case 46: // 1 string to match.
1694 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1695 break;
1696 return 48; // "push_freeze_to_prevent_poison_from_propagating"
1697 }
1698#endif // ifndef NDEBUG
1699
1700 return std::nullopt;
1701}
1702static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1703 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1704 if (!RangePair.second.empty()) {
1705 const auto First = getRuleIdxForIdentifier(RangePair.first);
1706 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1707 if (!First || !Last)
1708 return std::nullopt;
1709 if (First >= Last)
1710 report_fatal_error("Beginning of range should be before end of range");
1711 return {{*First, *Last + 1}};
1712 }
1713 if (RangePair.first == "*") {
1714 return {{0, 264}};
1715 }
1716 const auto I = getRuleIdxForIdentifier(RangePair.first);
1717 if (!I)
1718 return std::nullopt;
1719 return {{*I, *I + 1}};
1720}
1721
1722bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1723 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1724 if (!MaybeRange)
1725 return false;
1726 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1727 DisabledRules.reset(I);
1728 return true;
1729}
1730
1731bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1732 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1733 if (!MaybeRange)
1734 return false;
1735 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1736 DisabledRules.set(I);
1737 return true;
1738}
1739
1740static std::vector<std::string> RISCVPreLegalizerCombinerOption;
1741static cl::list<std::string> RISCVPreLegalizerCombinerDisableOption(
1742 "riscvprelegalizercombiner-disable-rule",
1743 cl::desc("Disable one or more combiner rules temporarily in the RISCVPreLegalizerCombiner pass"),
1744 cl::CommaSeparated,
1745 cl::Hidden,
1746 cl::cat(GICombinerOptionCategory),
1747 cl::callback([](const std::string &Str) {
1748 RISCVPreLegalizerCombinerOption.push_back(Str);
1749 }));
1750static cl::list<std::string> RISCVPreLegalizerCombinerOnlyEnableOption(
1751 "riscvprelegalizercombiner-only-enable-rule",
1752 cl::desc("Disable all rules in the RISCVPreLegalizerCombiner pass then re-enable the specified ones"),
1753 cl::Hidden,
1754 cl::cat(GICombinerOptionCategory),
1755 cl::callback([](const std::string &CommaSeparatedArg) {
1756 StringRef Str = CommaSeparatedArg;
1757 RISCVPreLegalizerCombinerOption.push_back("*");
1758 do {
1759 auto X = Str.split(",");
1760 RISCVPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1761 Str = X.second;
1762 } while (!Str.empty());
1763 }));
1764
1765
1766bool RISCVPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1767 return !DisabledRules.test(RuleID);
1768}
1769bool RISCVPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1770 for (StringRef Identifier : RISCVPreLegalizerCombinerOption) {
1771 bool Enabled = Identifier.consume_front("!");
1772 if (Enabled && !setRuleEnabled(Identifier))
1773 return false;
1774 if (!Enabled && !setRuleDisabled(Identifier))
1775 return false;
1776 }
1777 return true;
1778}
1779
1780
1781#endif // GET_GICOMBINER_TYPES
1782
1783#ifdef GET_GICOMBINER_TYPES
1784
1785const unsigned MAX_SUBTARGET_PREDICATES = 0;
1786using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1787
1788#endif // GET_GICOMBINER_TYPES
1789
1790#ifdef GET_GICOMBINER_CLASS_MEMBERS
1791
1792PredicateBitset AvailableModuleFeatures;
1793mutable PredicateBitset AvailableFunctionFeatures;
1794PredicateBitset getAvailableFeatures() const {
1795 return AvailableModuleFeatures | AvailableFunctionFeatures;
1796}
1797PredicateBitset
1798computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
1799PredicateBitset
1800computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
1801 const MachineFunction *MF) const;
1802void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1803
1804#endif // GET_GICOMBINER_CLASS_MEMBERS
1805
1806#ifdef GET_GICOMBINER_CLASS_MEMBERS
1807
1808 mutable MatcherState State;
1809 typedef ComplexRendererFns(RISCVPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1810 typedef void(RISCVPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1811 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1812 static RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1813 static RISCVPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1814 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1815 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1816 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1817 const uint8_t *getMatchTable() const override;
1818 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1819 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1820 bool testSimplePredicate(unsigned PredicateID) const override;
1821 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1822
1823#endif // GET_GICOMBINER_CLASS_MEMBERS
1824
1825#ifdef GET_GICOMBINER_IMPL
1826
1827// LLT Objects.
1828enum {
1829 GILLT_s1,
1830};
1831const static size_t NumTypeObjects = 1;
1832const static LLT TypeObjects[] = {
1833 LLT::scalar(1),
1834};
1835
1836// Bits for subtarget features that participate in instruction matching.
1837enum SubtargetFeatureBits : uint8_t {
1838};
1839
1840PredicateBitset RISCVPreLegalizerCombinerImpl::
1841computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
1842 PredicateBitset Features{};
1843 return Features;
1844}
1845
1846void RISCVPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1847 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
1848}
1849PredicateBitset RISCVPreLegalizerCombinerImpl::
1850computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
1851 PredicateBitset Features{};
1852 return Features;
1853}
1854
1855// Feature bitsets.
1856enum {
1857 GIFBS_Invalid,
1858};
1859constexpr static PredicateBitset FeatureBitsets[] {
1860 {}, // GIFBS_Invalid
1861};
1862
1863// ComplexPattern predicates.
1864enum {
1865 GICP_Invalid,
1866};
1867// See constructor for table contents
1868
1869RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn
1870RISCVPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1871 nullptr, // GICP_Invalid
1872};
1873
1874enum {
1875 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1876 GICXXPred_MI_Predicate_GICombiner1,
1877 GICXXPred_MI_Predicate_GICombiner2,
1878 GICXXPred_MI_Predicate_GICombiner3,
1879 GICXXPred_MI_Predicate_GICombiner4,
1880 GICXXPred_MI_Predicate_GICombiner5,
1881 GICXXPred_MI_Predicate_GICombiner6,
1882 GICXXPred_MI_Predicate_GICombiner7,
1883 GICXXPred_MI_Predicate_GICombiner8,
1884 GICXXPred_MI_Predicate_GICombiner9,
1885 GICXXPred_MI_Predicate_GICombiner10,
1886 GICXXPred_MI_Predicate_GICombiner11,
1887 GICXXPred_MI_Predicate_GICombiner12,
1888 GICXXPred_MI_Predicate_GICombiner13,
1889 GICXXPred_MI_Predicate_GICombiner14,
1890 GICXXPred_MI_Predicate_GICombiner15,
1891 GICXXPred_MI_Predicate_GICombiner16,
1892 GICXXPred_MI_Predicate_GICombiner17,
1893 GICXXPred_MI_Predicate_GICombiner18,
1894 GICXXPred_MI_Predicate_GICombiner19,
1895 GICXXPred_MI_Predicate_GICombiner20,
1896 GICXXPred_MI_Predicate_GICombiner21,
1897 GICXXPred_MI_Predicate_GICombiner22,
1898 GICXXPred_MI_Predicate_GICombiner23,
1899};
1900bool RISCVPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1901 switch (PredicateID) {
1902 case GICXXPred_MI_Predicate_GICombiner0: {
1903 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
1904 }
1905 case GICXXPred_MI_Predicate_GICombiner1: {
1906 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1907 }
1908 case GICXXPred_MI_Predicate_GICombiner2: {
1909 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1910 }
1911 case GICXXPred_MI_Predicate_GICombiner3: {
1912 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1913 }
1914 case GICXXPred_MI_Predicate_GICombiner4: {
1915 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1916 }
1917 case GICXXPred_MI_Predicate_GICombiner5: {
1918 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
1919 }
1920 case GICXXPred_MI_Predicate_GICombiner6: {
1921 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1922 }
1923 case GICXXPred_MI_Predicate_GICombiner7: {
1924 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1925 }
1926 case GICXXPred_MI_Predicate_GICombiner8: {
1927 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1928 }
1929 case GICXXPred_MI_Predicate_GICombiner9: {
1930 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1931 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1932 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1933 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1934 }
1935 case GICXXPred_MI_Predicate_GICombiner10: {
1936 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1937 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1938 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1939 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1940 }
1941 case GICXXPred_MI_Predicate_GICombiner11: {
1942 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1943 Helper.isLegalOrBeforeLegalizer(
1944 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1945 }
1946 case GICXXPred_MI_Predicate_GICombiner12: {
1947 return MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
1948 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
1949 }
1950 case GICXXPred_MI_Predicate_GICombiner13: {
1951 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1952 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1953 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1954 }
1955 case GICXXPred_MI_Predicate_GICombiner14: {
1956 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1957 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1958 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1959 }
1960 case GICXXPred_MI_Predicate_GICombiner15: {
1961 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1962 }
1963 case GICXXPred_MI_Predicate_GICombiner16: {
1964 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1965 }
1966 case GICXXPred_MI_Predicate_GICombiner17: {
1967 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1968 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1969 }
1970 case GICXXPred_MI_Predicate_GICombiner18: {
1971 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1972 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1973 }
1974 case GICXXPred_MI_Predicate_GICombiner19: {
1975 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
1976 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
1977 }
1978 case GICXXPred_MI_Predicate_GICombiner20: {
1979 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_UAVGFLOOR);
1980 }
1981 case GICXXPred_MI_Predicate_GICombiner21: {
1982 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_SAVGFLOOR);
1983 }
1984 case GICXXPred_MI_Predicate_GICombiner22: {
1985 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_UAVGCEIL);
1986 }
1987 case GICXXPred_MI_Predicate_GICombiner23: {
1988 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_SAVGCEIL);
1989 }
1990 }
1991 llvm_unreachable("Unknown predicate");
1992 return false;
1993}
1994bool RISCVPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1995 llvm_unreachable("Unknown predicate");
1996 return false;
1997}
1998bool RISCVPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1999 llvm_unreachable("Unknown predicate");
2000 return false;
2001}
2002bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2003 llvm_unreachable("Unknown predicate");
2004 return false;
2005}
2006bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2007 llvm_unreachable("Unknown predicate");
2008 return false;
2009}
2010enum {
2011 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2012 GICXXPred_Simple_IsRule1Enabled,
2013 GICXXPred_Simple_IsRule2Enabled,
2014 GICXXPred_Simple_IsRule3Enabled,
2015 GICXXPred_Simple_IsRule4Enabled,
2016 GICXXPred_Simple_IsRule5Enabled,
2017 GICXXPred_Simple_IsRule6Enabled,
2018 GICXXPred_Simple_IsRule7Enabled,
2019 GICXXPred_Simple_IsRule8Enabled,
2020 GICXXPred_Simple_IsRule9Enabled,
2021 GICXXPred_Simple_IsRule10Enabled,
2022 GICXXPred_Simple_IsRule11Enabled,
2023 GICXXPred_Simple_IsRule12Enabled,
2024 GICXXPred_Simple_IsRule13Enabled,
2025 GICXXPred_Simple_IsRule14Enabled,
2026 GICXXPred_Simple_IsRule15Enabled,
2027 GICXXPred_Simple_IsRule16Enabled,
2028 GICXXPred_Simple_IsRule17Enabled,
2029 GICXXPred_Simple_IsRule18Enabled,
2030 GICXXPred_Simple_IsRule19Enabled,
2031 GICXXPred_Simple_IsRule20Enabled,
2032 GICXXPred_Simple_IsRule21Enabled,
2033 GICXXPred_Simple_IsRule22Enabled,
2034 GICXXPred_Simple_IsRule23Enabled,
2035 GICXXPred_Simple_IsRule24Enabled,
2036 GICXXPred_Simple_IsRule25Enabled,
2037 GICXXPred_Simple_IsRule26Enabled,
2038 GICXXPred_Simple_IsRule27Enabled,
2039 GICXXPred_Simple_IsRule28Enabled,
2040 GICXXPred_Simple_IsRule29Enabled,
2041 GICXXPred_Simple_IsRule30Enabled,
2042 GICXXPred_Simple_IsRule31Enabled,
2043 GICXXPred_Simple_IsRule32Enabled,
2044 GICXXPred_Simple_IsRule33Enabled,
2045 GICXXPred_Simple_IsRule34Enabled,
2046 GICXXPred_Simple_IsRule35Enabled,
2047 GICXXPred_Simple_IsRule36Enabled,
2048 GICXXPred_Simple_IsRule37Enabled,
2049 GICXXPred_Simple_IsRule38Enabled,
2050 GICXXPred_Simple_IsRule39Enabled,
2051 GICXXPred_Simple_IsRule40Enabled,
2052 GICXXPred_Simple_IsRule41Enabled,
2053 GICXXPred_Simple_IsRule42Enabled,
2054 GICXXPred_Simple_IsRule43Enabled,
2055 GICXXPred_Simple_IsRule44Enabled,
2056 GICXXPred_Simple_IsRule45Enabled,
2057 GICXXPred_Simple_IsRule46Enabled,
2058 GICXXPred_Simple_IsRule47Enabled,
2059 GICXXPred_Simple_IsRule48Enabled,
2060 GICXXPred_Simple_IsRule49Enabled,
2061 GICXXPred_Simple_IsRule50Enabled,
2062 GICXXPred_Simple_IsRule51Enabled,
2063 GICXXPred_Simple_IsRule52Enabled,
2064 GICXXPred_Simple_IsRule53Enabled,
2065 GICXXPred_Simple_IsRule54Enabled,
2066 GICXXPred_Simple_IsRule55Enabled,
2067 GICXXPred_Simple_IsRule56Enabled,
2068 GICXXPred_Simple_IsRule57Enabled,
2069 GICXXPred_Simple_IsRule58Enabled,
2070 GICXXPred_Simple_IsRule59Enabled,
2071 GICXXPred_Simple_IsRule60Enabled,
2072 GICXXPred_Simple_IsRule61Enabled,
2073 GICXXPred_Simple_IsRule62Enabled,
2074 GICXXPred_Simple_IsRule63Enabled,
2075 GICXXPred_Simple_IsRule64Enabled,
2076 GICXXPred_Simple_IsRule65Enabled,
2077 GICXXPred_Simple_IsRule66Enabled,
2078 GICXXPred_Simple_IsRule67Enabled,
2079 GICXXPred_Simple_IsRule68Enabled,
2080 GICXXPred_Simple_IsRule69Enabled,
2081 GICXXPred_Simple_IsRule70Enabled,
2082 GICXXPred_Simple_IsRule71Enabled,
2083 GICXXPred_Simple_IsRule72Enabled,
2084 GICXXPred_Simple_IsRule73Enabled,
2085 GICXXPred_Simple_IsRule74Enabled,
2086 GICXXPred_Simple_IsRule75Enabled,
2087 GICXXPred_Simple_IsRule76Enabled,
2088 GICXXPred_Simple_IsRule77Enabled,
2089 GICXXPred_Simple_IsRule78Enabled,
2090 GICXXPred_Simple_IsRule79Enabled,
2091 GICXXPred_Simple_IsRule80Enabled,
2092 GICXXPred_Simple_IsRule81Enabled,
2093 GICXXPred_Simple_IsRule82Enabled,
2094 GICXXPred_Simple_IsRule83Enabled,
2095 GICXXPred_Simple_IsRule84Enabled,
2096 GICXXPred_Simple_IsRule85Enabled,
2097 GICXXPred_Simple_IsRule86Enabled,
2098 GICXXPred_Simple_IsRule87Enabled,
2099 GICXXPred_Simple_IsRule88Enabled,
2100 GICXXPred_Simple_IsRule89Enabled,
2101 GICXXPred_Simple_IsRule90Enabled,
2102 GICXXPred_Simple_IsRule91Enabled,
2103 GICXXPred_Simple_IsRule92Enabled,
2104 GICXXPred_Simple_IsRule93Enabled,
2105 GICXXPred_Simple_IsRule94Enabled,
2106 GICXXPred_Simple_IsRule95Enabled,
2107 GICXXPred_Simple_IsRule96Enabled,
2108 GICXXPred_Simple_IsRule97Enabled,
2109 GICXXPred_Simple_IsRule98Enabled,
2110 GICXXPred_Simple_IsRule99Enabled,
2111 GICXXPred_Simple_IsRule100Enabled,
2112 GICXXPred_Simple_IsRule101Enabled,
2113 GICXXPred_Simple_IsRule102Enabled,
2114 GICXXPred_Simple_IsRule103Enabled,
2115 GICXXPred_Simple_IsRule104Enabled,
2116 GICXXPred_Simple_IsRule105Enabled,
2117 GICXXPred_Simple_IsRule106Enabled,
2118 GICXXPred_Simple_IsRule107Enabled,
2119 GICXXPred_Simple_IsRule108Enabled,
2120 GICXXPred_Simple_IsRule109Enabled,
2121 GICXXPred_Simple_IsRule110Enabled,
2122 GICXXPred_Simple_IsRule111Enabled,
2123 GICXXPred_Simple_IsRule112Enabled,
2124 GICXXPred_Simple_IsRule113Enabled,
2125 GICXXPred_Simple_IsRule114Enabled,
2126 GICXXPred_Simple_IsRule115Enabled,
2127 GICXXPred_Simple_IsRule116Enabled,
2128 GICXXPred_Simple_IsRule117Enabled,
2129 GICXXPred_Simple_IsRule118Enabled,
2130 GICXXPred_Simple_IsRule119Enabled,
2131 GICXXPred_Simple_IsRule120Enabled,
2132 GICXXPred_Simple_IsRule121Enabled,
2133 GICXXPred_Simple_IsRule122Enabled,
2134 GICXXPred_Simple_IsRule123Enabled,
2135 GICXXPred_Simple_IsRule124Enabled,
2136 GICXXPred_Simple_IsRule125Enabled,
2137 GICXXPred_Simple_IsRule126Enabled,
2138 GICXXPred_Simple_IsRule127Enabled,
2139 GICXXPred_Simple_IsRule128Enabled,
2140 GICXXPred_Simple_IsRule129Enabled,
2141 GICXXPred_Simple_IsRule130Enabled,
2142 GICXXPred_Simple_IsRule131Enabled,
2143 GICXXPred_Simple_IsRule132Enabled,
2144 GICXXPred_Simple_IsRule133Enabled,
2145 GICXXPred_Simple_IsRule134Enabled,
2146 GICXXPred_Simple_IsRule135Enabled,
2147 GICXXPred_Simple_IsRule136Enabled,
2148 GICXXPred_Simple_IsRule137Enabled,
2149 GICXXPred_Simple_IsRule138Enabled,
2150 GICXXPred_Simple_IsRule139Enabled,
2151 GICXXPred_Simple_IsRule140Enabled,
2152 GICXXPred_Simple_IsRule141Enabled,
2153 GICXXPred_Simple_IsRule142Enabled,
2154 GICXXPred_Simple_IsRule143Enabled,
2155 GICXXPred_Simple_IsRule144Enabled,
2156 GICXXPred_Simple_IsRule145Enabled,
2157 GICXXPred_Simple_IsRule146Enabled,
2158 GICXXPred_Simple_IsRule147Enabled,
2159 GICXXPred_Simple_IsRule148Enabled,
2160 GICXXPred_Simple_IsRule149Enabled,
2161 GICXXPred_Simple_IsRule150Enabled,
2162 GICXXPred_Simple_IsRule151Enabled,
2163 GICXXPred_Simple_IsRule152Enabled,
2164 GICXXPred_Simple_IsRule153Enabled,
2165 GICXXPred_Simple_IsRule154Enabled,
2166 GICXXPred_Simple_IsRule155Enabled,
2167 GICXXPred_Simple_IsRule156Enabled,
2168 GICXXPred_Simple_IsRule157Enabled,
2169 GICXXPred_Simple_IsRule158Enabled,
2170 GICXXPred_Simple_IsRule159Enabled,
2171 GICXXPred_Simple_IsRule160Enabled,
2172 GICXXPred_Simple_IsRule161Enabled,
2173 GICXXPred_Simple_IsRule162Enabled,
2174 GICXXPred_Simple_IsRule163Enabled,
2175 GICXXPred_Simple_IsRule164Enabled,
2176 GICXXPred_Simple_IsRule165Enabled,
2177 GICXXPred_Simple_IsRule166Enabled,
2178 GICXXPred_Simple_IsRule167Enabled,
2179 GICXXPred_Simple_IsRule168Enabled,
2180 GICXXPred_Simple_IsRule169Enabled,
2181 GICXXPred_Simple_IsRule170Enabled,
2182 GICXXPred_Simple_IsRule171Enabled,
2183 GICXXPred_Simple_IsRule172Enabled,
2184 GICXXPred_Simple_IsRule173Enabled,
2185 GICXXPred_Simple_IsRule174Enabled,
2186 GICXXPred_Simple_IsRule175Enabled,
2187 GICXXPred_Simple_IsRule176Enabled,
2188 GICXXPred_Simple_IsRule177Enabled,
2189 GICXXPred_Simple_IsRule178Enabled,
2190 GICXXPred_Simple_IsRule179Enabled,
2191 GICXXPred_Simple_IsRule180Enabled,
2192 GICXXPred_Simple_IsRule181Enabled,
2193 GICXXPred_Simple_IsRule182Enabled,
2194 GICXXPred_Simple_IsRule183Enabled,
2195 GICXXPred_Simple_IsRule184Enabled,
2196 GICXXPred_Simple_IsRule185Enabled,
2197 GICXXPred_Simple_IsRule186Enabled,
2198 GICXXPred_Simple_IsRule187Enabled,
2199 GICXXPred_Simple_IsRule188Enabled,
2200 GICXXPred_Simple_IsRule189Enabled,
2201 GICXXPred_Simple_IsRule190Enabled,
2202 GICXXPred_Simple_IsRule191Enabled,
2203 GICXXPred_Simple_IsRule192Enabled,
2204 GICXXPred_Simple_IsRule193Enabled,
2205 GICXXPred_Simple_IsRule194Enabled,
2206 GICXXPred_Simple_IsRule195Enabled,
2207 GICXXPred_Simple_IsRule196Enabled,
2208 GICXXPred_Simple_IsRule197Enabled,
2209 GICXXPred_Simple_IsRule198Enabled,
2210 GICXXPred_Simple_IsRule199Enabled,
2211 GICXXPred_Simple_IsRule200Enabled,
2212 GICXXPred_Simple_IsRule201Enabled,
2213 GICXXPred_Simple_IsRule202Enabled,
2214 GICXXPred_Simple_IsRule203Enabled,
2215 GICXXPred_Simple_IsRule204Enabled,
2216 GICXXPred_Simple_IsRule205Enabled,
2217 GICXXPred_Simple_IsRule206Enabled,
2218 GICXXPred_Simple_IsRule207Enabled,
2219 GICXXPred_Simple_IsRule208Enabled,
2220 GICXXPred_Simple_IsRule209Enabled,
2221 GICXXPred_Simple_IsRule210Enabled,
2222 GICXXPred_Simple_IsRule211Enabled,
2223 GICXXPred_Simple_IsRule212Enabled,
2224 GICXXPred_Simple_IsRule213Enabled,
2225 GICXXPred_Simple_IsRule214Enabled,
2226 GICXXPred_Simple_IsRule215Enabled,
2227 GICXXPred_Simple_IsRule216Enabled,
2228 GICXXPred_Simple_IsRule217Enabled,
2229 GICXXPred_Simple_IsRule218Enabled,
2230 GICXXPred_Simple_IsRule219Enabled,
2231 GICXXPred_Simple_IsRule220Enabled,
2232 GICXXPred_Simple_IsRule221Enabled,
2233 GICXXPred_Simple_IsRule222Enabled,
2234 GICXXPred_Simple_IsRule223Enabled,
2235 GICXXPred_Simple_IsRule224Enabled,
2236 GICXXPred_Simple_IsRule225Enabled,
2237 GICXXPred_Simple_IsRule226Enabled,
2238 GICXXPred_Simple_IsRule227Enabled,
2239 GICXXPred_Simple_IsRule228Enabled,
2240 GICXXPred_Simple_IsRule229Enabled,
2241 GICXXPred_Simple_IsRule230Enabled,
2242 GICXXPred_Simple_IsRule231Enabled,
2243 GICXXPred_Simple_IsRule232Enabled,
2244 GICXXPred_Simple_IsRule233Enabled,
2245 GICXXPred_Simple_IsRule234Enabled,
2246 GICXXPred_Simple_IsRule235Enabled,
2247 GICXXPred_Simple_IsRule236Enabled,
2248 GICXXPred_Simple_IsRule237Enabled,
2249 GICXXPred_Simple_IsRule238Enabled,
2250 GICXXPred_Simple_IsRule239Enabled,
2251 GICXXPred_Simple_IsRule240Enabled,
2252 GICXXPred_Simple_IsRule241Enabled,
2253 GICXXPred_Simple_IsRule242Enabled,
2254 GICXXPred_Simple_IsRule243Enabled,
2255 GICXXPred_Simple_IsRule244Enabled,
2256 GICXXPred_Simple_IsRule245Enabled,
2257 GICXXPred_Simple_IsRule246Enabled,
2258 GICXXPred_Simple_IsRule247Enabled,
2259 GICXXPred_Simple_IsRule248Enabled,
2260 GICXXPred_Simple_IsRule249Enabled,
2261 GICXXPred_Simple_IsRule250Enabled,
2262 GICXXPred_Simple_IsRule251Enabled,
2263 GICXXPred_Simple_IsRule252Enabled,
2264 GICXXPred_Simple_IsRule253Enabled,
2265 GICXXPred_Simple_IsRule254Enabled,
2266 GICXXPred_Simple_IsRule255Enabled,
2267 GICXXPred_Simple_IsRule256Enabled,
2268 GICXXPred_Simple_IsRule257Enabled,
2269 GICXXPred_Simple_IsRule258Enabled,
2270 GICXXPred_Simple_IsRule259Enabled,
2271 GICXXPred_Simple_IsRule260Enabled,
2272 GICXXPred_Simple_IsRule261Enabled,
2273 GICXXPred_Simple_IsRule262Enabled,
2274 GICXXPred_Simple_IsRule263Enabled,
2275};
2276
2277bool RISCVPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2278 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2279}
2280// Custom renderers.
2281enum {
2282 GICR_Invalid,
2283};
2284RISCVPreLegalizerCombinerImpl::CustomRendererFn
2285RISCVPreLegalizerCombinerImpl::CustomRenderers[] = {
2286 nullptr, // GICR_Invalid
2287};
2288
2289static bool RISCVPreLegalizerCombinerImpl_canMatchOpcode(unsigned Opc) {
2290 switch (Opc) {
2291 case TargetOpcode::G_FCMP:
2292 case TargetOpcode::G_FSHL:
2293 case TargetOpcode::G_FSHR:
2294 case TargetOpcode::G_ICMP:
2295 case TargetOpcode::G_INSERT_VECTOR_ELT:
2296 case TargetOpcode::G_SELECT:
2297 case TargetOpcode::G_SHUFFLE_VECTOR:
2298 case TargetOpcode::G_ADD:
2299 case TargetOpcode::G_AND:
2300 case TargetOpcode::G_ASHR:
2301 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
2302 case TargetOpcode::G_FADD:
2303 case TargetOpcode::G_FCOPYSIGN:
2304 case TargetOpcode::G_FDIV:
2305 case TargetOpcode::G_FMAXIMUM:
2306 case TargetOpcode::G_FMAXIMUMNUM:
2307 case TargetOpcode::G_FMAXNUM:
2308 case TargetOpcode::G_FMINIMUM:
2309 case TargetOpcode::G_FMINIMUMNUM:
2310 case TargetOpcode::G_FMINNUM:
2311 case TargetOpcode::G_FMUL:
2312 case TargetOpcode::G_FPOWI:
2313 case TargetOpcode::G_FREM:
2314 case TargetOpcode::G_FSUB:
2315 case TargetOpcode::G_LSHR:
2316 case TargetOpcode::G_MERGE_VALUES:
2317 case TargetOpcode::G_MUL:
2318 case TargetOpcode::G_OR:
2319 case TargetOpcode::G_PTR_ADD:
2320 case TargetOpcode::G_ROTL:
2321 case TargetOpcode::G_ROTR:
2322 case TargetOpcode::G_SDIV:
2323 case TargetOpcode::G_SEXT_INREG:
2324 case TargetOpcode::G_SHL:
2325 case TargetOpcode::G_SREM:
2326 case TargetOpcode::G_SUB:
2327 case TargetOpcode::G_UDIV:
2328 case TargetOpcode::G_UREM:
2329 case TargetOpcode::G_XOR:
2330 case TargetOpcode::COPY:
2331 case TargetOpcode::G_ABS:
2332 case TargetOpcode::G_ANYEXT:
2333 case TargetOpcode::G_BITCAST:
2334 case TargetOpcode::G_BITREVERSE:
2335 case TargetOpcode::G_BSWAP:
2336 case TargetOpcode::G_BUILD_VECTOR:
2337 case TargetOpcode::G_CTLZ:
2338 case TargetOpcode::G_CTLZ_ZERO_POISON:
2339 case TargetOpcode::G_CTPOP:
2340 case TargetOpcode::G_CTTZ:
2341 case TargetOpcode::G_CTTZ_ZERO_POISON:
2342 case TargetOpcode::G_FABS:
2343 case TargetOpcode::G_FCANONICALIZE:
2344 case TargetOpcode::G_FCEIL:
2345 case TargetOpcode::G_FFLOOR:
2346 case TargetOpcode::G_FLOG2:
2347 case TargetOpcode::G_FNEARBYINT:
2348 case TargetOpcode::G_FNEG:
2349 case TargetOpcode::G_FPEXT:
2350 case TargetOpcode::G_FPTOSI:
2351 case TargetOpcode::G_FPTOUI:
2352 case TargetOpcode::G_FPTRUNC:
2353 case TargetOpcode::G_FREEZE:
2354 case TargetOpcode::G_FRINT:
2355 case TargetOpcode::G_FSQRT:
2356 case TargetOpcode::G_INTRINSIC_ROUND:
2357 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
2358 case TargetOpcode::G_INTRINSIC_TRUNC:
2359 case TargetOpcode::G_INTTOPTR:
2360 case TargetOpcode::G_PTRTOINT:
2361 case TargetOpcode::G_SEXT:
2362 case TargetOpcode::G_SITOFP:
2363 case TargetOpcode::G_TRUNC:
2364 case TargetOpcode::G_TRUNC_USAT_U:
2365 case TargetOpcode::G_UITOFP:
2366 case TargetOpcode::G_ZEXT:
2367 case TargetOpcode::G_BR:
2368 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
2369 case TargetOpcode::G_CONCAT_VECTORS:
2370 case TargetOpcode::G_FMA:
2371 case TargetOpcode::G_FMAD:
2372 case TargetOpcode::G_FMAXNUM_IEEE:
2373 case TargetOpcode::G_FMINNUM_IEEE:
2374 case TargetOpcode::G_LOAD:
2375 case TargetOpcode::G_PHI:
2376 case TargetOpcode::G_SADDE:
2377 case TargetOpcode::G_SADDO:
2378 case TargetOpcode::G_SADDSAT:
2379 case TargetOpcode::G_SEXTLOAD:
2380 case TargetOpcode::G_SMAX:
2381 case TargetOpcode::G_SMIN:
2382 case TargetOpcode::G_SMULFIX:
2383 case TargetOpcode::G_SMULFIXSAT:
2384 case TargetOpcode::G_SMULH:
2385 case TargetOpcode::G_SMULO:
2386 case TargetOpcode::G_SSHLSAT:
2387 case TargetOpcode::G_SSUBE:
2388 case TargetOpcode::G_SSUBO:
2389 case TargetOpcode::G_STORE:
2390 case TargetOpcode::G_UADDE:
2391 case TargetOpcode::G_UADDO:
2392 case TargetOpcode::G_UADDSAT:
2393 case TargetOpcode::G_UMAX:
2394 case TargetOpcode::G_UMIN:
2395 case TargetOpcode::G_UMULFIX:
2396 case TargetOpcode::G_UMULFIXSAT:
2397 case TargetOpcode::G_UMULH:
2398 case TargetOpcode::G_UMULO:
2399 case TargetOpcode::G_UNMERGE_VALUES:
2400 case TargetOpcode::G_USHLSAT:
2401 case TargetOpcode::G_USUBE:
2402 case TargetOpcode::G_USUBO:
2403 case TargetOpcode::G_ZEXTLOAD:
2404 return true;
2405 default:
2406 return false;
2407 }
2408}
2409
2410bool RISCVPreLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
2411 if (!RISCVPreLegalizerCombinerImpl_canMatchOpcode(I.getOpcode()))
2412 return false;
2413 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2414 State.MIs.clear();
2415 State.MIs.push_back(&I);
2416 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2417 return true;
2418 }
2419
2420 return false;
2421}
2422
2423enum {
2424 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2425 GICXXCustomAction_GICombiner1,
2426 GICXXCustomAction_GICombiner2,
2427 GICXXCustomAction_GICombiner3,
2428 GICXXCustomAction_GICombiner4,
2429 GICXXCustomAction_GICombiner5,
2430 GICXXCustomAction_GICombiner6,
2431 GICXXCustomAction_GICombiner7,
2432 GICXXCustomAction_GICombiner8,
2433 GICXXCustomAction_GICombiner9,
2434 GICXXCustomAction_GICombiner10,
2435 GICXXCustomAction_GICombiner11,
2436 GICXXCustomAction_GICombiner12,
2437 GICXXCustomAction_GICombiner13,
2438 GICXXCustomAction_GICombiner14,
2439 GICXXCustomAction_GICombiner15,
2440 GICXXCustomAction_GICombiner16,
2441 GICXXCustomAction_GICombiner17,
2442 GICXXCustomAction_GICombiner18,
2443 GICXXCustomAction_GICombiner19,
2444 GICXXCustomAction_GICombiner20,
2445 GICXXCustomAction_GICombiner21,
2446 GICXXCustomAction_GICombiner22,
2447 GICXXCustomAction_GICombiner23,
2448 GICXXCustomAction_GICombiner24,
2449 GICXXCustomAction_GICombiner25,
2450 GICXXCustomAction_GICombiner26,
2451 GICXXCustomAction_GICombiner27,
2452 GICXXCustomAction_GICombiner28,
2453 GICXXCustomAction_GICombiner29,
2454 GICXXCustomAction_GICombiner30,
2455 GICXXCustomAction_GICombiner31,
2456 GICXXCustomAction_GICombiner32,
2457 GICXXCustomAction_GICombiner33,
2458 GICXXCustomAction_GICombiner34,
2459 GICXXCustomAction_GICombiner35,
2460 GICXXCustomAction_GICombiner36,
2461 GICXXCustomAction_GICombiner37,
2462 GICXXCustomAction_GICombiner38,
2463 GICXXCustomAction_GICombiner39,
2464 GICXXCustomAction_GICombiner40,
2465 GICXXCustomAction_GICombiner41,
2466 GICXXCustomAction_GICombiner42,
2467 GICXXCustomAction_GICombiner43,
2468 GICXXCustomAction_GICombiner44,
2469 GICXXCustomAction_GICombiner45,
2470 GICXXCustomAction_GICombiner46,
2471 GICXXCustomAction_GICombiner47,
2472 GICXXCustomAction_GICombiner48,
2473 GICXXCustomAction_GICombiner49,
2474 GICXXCustomAction_GICombiner50,
2475 GICXXCustomAction_GICombiner51,
2476 GICXXCustomAction_GICombiner52,
2477 GICXXCustomAction_GICombiner53,
2478 GICXXCustomAction_GICombiner54,
2479 GICXXCustomAction_GICombiner55,
2480 GICXXCustomAction_GICombiner56,
2481 GICXXCustomAction_GICombiner57,
2482 GICXXCustomAction_GICombiner58,
2483 GICXXCustomAction_GICombiner59,
2484 GICXXCustomAction_GICombiner60,
2485 GICXXCustomAction_GICombiner61,
2486 GICXXCustomAction_GICombiner62,
2487 GICXXCustomAction_GICombiner63,
2488 GICXXCustomAction_GICombiner64,
2489 GICXXCustomAction_GICombiner65,
2490 GICXXCustomAction_GICombiner66,
2491 GICXXCustomAction_GICombiner67,
2492 GICXXCustomAction_GICombiner68,
2493 GICXXCustomAction_GICombiner69,
2494 GICXXCustomAction_GICombiner70,
2495 GICXXCustomAction_GICombiner71,
2496 GICXXCustomAction_GICombiner72,
2497 GICXXCustomAction_GICombiner73,
2498 GICXXCustomAction_GICombiner74,
2499 GICXXCustomAction_GICombiner75,
2500 GICXXCustomAction_GICombiner76,
2501 GICXXCustomAction_GICombiner77,
2502 GICXXCustomAction_GICombiner78,
2503 GICXXCustomAction_GICombiner79,
2504 GICXXCustomAction_GICombiner80,
2505 GICXXCustomAction_GICombiner81,
2506 GICXXCustomAction_GICombiner82,
2507 GICXXCustomAction_GICombiner83,
2508 GICXXCustomAction_GICombiner84,
2509 GICXXCustomAction_GICombiner85,
2510 GICXXCustomAction_GICombiner86,
2511 GICXXCustomAction_GICombiner87,
2512 GICXXCustomAction_GICombiner88,
2513 GICXXCustomAction_GICombiner89,
2514 GICXXCustomAction_GICombiner90,
2515 GICXXCustomAction_GICombiner91,
2516 GICXXCustomAction_GICombiner92,
2517 GICXXCustomAction_GICombiner93,
2518 GICXXCustomAction_GICombiner94,
2519 GICXXCustomAction_GICombiner95,
2520 GICXXCustomAction_GICombiner96,
2521 GICXXCustomAction_GICombiner97,
2522 GICXXCustomAction_GICombiner98,
2523 GICXXCustomAction_GICombiner99,
2524 GICXXCustomAction_GICombiner100,
2525 GICXXCustomAction_GICombiner101,
2526 GICXXCustomAction_GICombiner102,
2527 GICXXCustomAction_GICombiner103,
2528 GICXXCustomAction_GICombiner104,
2529 GICXXCustomAction_GICombiner105,
2530 GICXXCustomAction_GICombiner106,
2531 GICXXCustomAction_GICombiner107,
2532 GICXXCustomAction_GICombiner108,
2533 GICXXCustomAction_GICombiner109,
2534 GICXXCustomAction_GICombiner110,
2535 GICXXCustomAction_GICombiner111,
2536 GICXXCustomAction_GICombiner112,
2537 GICXXCustomAction_GICombiner113,
2538 GICXXCustomAction_GICombiner114,
2539 GICXXCustomAction_GICombiner115,
2540 GICXXCustomAction_GICombiner116,
2541 GICXXCustomAction_GICombiner117,
2542 GICXXCustomAction_GICombiner118,
2543 GICXXCustomAction_GICombiner119,
2544 GICXXCustomAction_GICombiner120,
2545 GICXXCustomAction_GICombiner121,
2546 GICXXCustomAction_GICombiner122,
2547 GICXXCustomAction_GICombiner123,
2548 GICXXCustomAction_GICombiner124,
2549 GICXXCustomAction_GICombiner125,
2550 GICXXCustomAction_GICombiner126,
2551 GICXXCustomAction_GICombiner127,
2552 GICXXCustomAction_GICombiner128,
2553 GICXXCustomAction_GICombiner129,
2554 GICXXCustomAction_GICombiner130,
2555 GICXXCustomAction_GICombiner131,
2556 GICXXCustomAction_GICombiner132,
2557 GICXXCustomAction_GICombiner133,
2558 GICXXCustomAction_GICombiner134,
2559 GICXXCustomAction_GICombiner135,
2560 GICXXCustomAction_GICombiner136,
2561 GICXXCustomAction_GICombiner137,
2562 GICXXCustomAction_GICombiner138,
2563 GICXXCustomAction_GICombiner139,
2564 GICXXCustomAction_GICombiner140,
2565 GICXXCustomAction_GICombiner141,
2566 GICXXCustomAction_GICombiner142,
2567 GICXXCustomAction_GICombiner143,
2568 GICXXCustomAction_GICombiner144,
2569 GICXXCustomAction_GICombiner145,
2570 GICXXCustomAction_GICombiner146,
2571 GICXXCustomAction_GICombiner147,
2572 GICXXCustomAction_GICombiner148,
2573 GICXXCustomAction_GICombiner149,
2574 GICXXCustomAction_GICombiner150,
2575 GICXXCustomAction_GICombiner151,
2576 GICXXCustomAction_GICombiner152,
2577 GICXXCustomAction_GICombiner153,
2578 GICXXCustomAction_GICombiner154,
2579 GICXXCustomAction_GICombiner155,
2580 GICXXCustomAction_GICombiner156,
2581 GICXXCustomAction_GICombiner157,
2582 GICXXCustomAction_GICombiner158,
2583};
2584bool RISCVPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2585 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2586 switch(ApplyID) {
2587 case GICXXCustomAction_GICombiner0:{
2588 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2589 // Match Patterns
2590 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2591 return false;
2592 }
2593 // Apply Patterns
2594 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2595 return true;
2596 }
2597 case GICXXCustomAction_GICombiner1:{
2598 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2599 // Match Patterns
2600 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2601 return false;
2602 }
2603 // Apply Patterns
2604 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2605 return true;
2606 }
2607 case GICXXCustomAction_GICombiner2:{
2608 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2609 // Match Patterns
2610 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2611 return false;
2612 }
2613 // Apply Patterns
2614 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2615 return true;
2616 }
2617 case GICXXCustomAction_GICombiner3:{
2618 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2619 // Match Patterns
2620 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2621 return false;
2622 }
2623 // Apply Patterns
2624 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2625 return true;
2626 }
2627 case GICXXCustomAction_GICombiner4:{
2628 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2629 // Match Patterns
2630 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2631 return false;
2632 }
2633 // Apply Patterns
2634 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2635 return true;
2636 }
2637 case GICXXCustomAction_GICombiner5:{
2638 // Match Patterns
2639 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2640 return false;
2641 }
2642 // Apply Patterns
2643 Helper.applyCombineCopy(*State.MIs[0]);
2644 return true;
2645 }
2646 case GICXXCustomAction_GICombiner6:{
2647 unsigned GIMatchData_matchinfo;
2648 // Match Patterns
2649 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2650 return false;
2651 }
2652 // Apply Patterns
2653 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2654 return true;
2655 }
2656 case GICXXCustomAction_GICombiner7:{
2657 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2658 // Match Patterns
2659 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2660 return false;
2661 }
2662 // Apply Patterns
2663 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2664 return true;
2665 }
2666 case GICXXCustomAction_GICombiner8:{
2667 std::pair<Register, bool> GIMatchData_info;
2668 // Match Patterns
2669 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2670 return false;
2671 }
2672 // Apply Patterns
2673 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2674 return true;
2675 }
2676 case GICXXCustomAction_GICombiner9:{
2677 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2678 // Match Patterns
2679 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2680 return false;
2681 }
2682 // Apply Patterns
2683 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2684 return true;
2685 }
2686 case GICXXCustomAction_GICombiner10:{
2687 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2688 // Match Patterns
2689 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2690 return false;
2691 }
2692 // Apply Patterns
2693 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2694 return true;
2695 }
2696 case GICXXCustomAction_GICombiner11:{
2697 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2698 // Match Patterns
2699 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2700 return false;
2701 }
2702 // Apply Patterns
2703 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2704 return true;
2705 }
2706 case GICXXCustomAction_GICombiner12:{
2707 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2708 // Match Patterns
2709 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2710 GIMatchData_matchinfo);}()) {
2711 return false;
2712 }
2713 // Apply Patterns
2714 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2715 return true;
2716 }
2717 case GICXXCustomAction_GICombiner13:{
2718 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2719 // Match Patterns
2720 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2721 return false;
2722 }
2723 // Apply Patterns
2724 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2725 return true;
2726 }
2727 case GICXXCustomAction_GICombiner14:{
2728 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2729 // Match Patterns
2730 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2731 GIMatchData_matchinfo);}()) {
2732 return false;
2733 }
2734 // Apply Patterns
2735 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2736 return true;
2737 }
2738 case GICXXCustomAction_GICombiner15:{
2739 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2740 // Match Patterns
2741 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2742 return false;
2743 }
2744 // Apply Patterns
2745 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2746 return true;
2747 }
2748 case GICXXCustomAction_GICombiner16:{
2749 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2750 // Match Patterns
2751 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2752 return false;
2753 }
2754 // Apply Patterns
2755 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2756 return true;
2757 }
2758 case GICXXCustomAction_GICombiner17:{
2759 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2760 // Match Patterns
2761 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2762 return false;
2763 }
2764 // Apply Patterns
2765 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2766 return true;
2767 }
2768 case GICXXCustomAction_GICombiner18:{
2769 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2770 // Match Patterns
2771 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2772 return false;
2773 }
2774 // Apply Patterns
2775 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2776 return true;
2777 }
2778 case GICXXCustomAction_GICombiner19:{
2779 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2780 // Match Patterns
2781 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2782 return false;
2783 }
2784 // Apply Patterns
2785 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2786 return true;
2787 }
2788 case GICXXCustomAction_GICombiner20:{
2789 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2790 // Match Patterns
2791 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2792 return false;
2793 }
2794 // Apply Patterns
2795 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2796 return true;
2797 }
2798 case GICXXCustomAction_GICombiner21:{
2799 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2800 // Match Patterns
2801 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2802 return false;
2803 }
2804 // Apply Patterns
2805 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2806 return true;
2807 }
2808 case GICXXCustomAction_GICombiner22:{
2809 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2810 // Match Patterns
2811 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2812 return false;
2813 }
2814 // Apply Patterns
2815 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2816 return true;
2817 }
2818 case GICXXCustomAction_GICombiner23:{
2819 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2820 // Match Patterns
2821 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2822 return false;
2823 }
2824 // Apply Patterns
2825 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2826 return true;
2827 }
2828 case GICXXCustomAction_GICombiner24:{
2829 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2830 // Match Patterns
2831 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2832 return false;
2833 }
2834 // Apply Patterns
2835 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2836 return true;
2837 }
2838 case GICXXCustomAction_GICombiner25:{
2839 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2840 // Match Patterns
2841 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2842 return false;
2843 }
2844 // Apply Patterns
2845 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2846 return true;
2847 }
2848 case GICXXCustomAction_GICombiner26:{
2849 APInt GIMatchData_matchinfo;
2850 // Match Patterns
2851 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2852 return false;
2853 }
2854 // Apply Patterns
2855 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2856 return true;
2857 }
2858 case GICXXCustomAction_GICombiner27:{
2859 SmallVector<Register> GIMatchData_info;
2860 // Match Patterns
2861 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2862 return false;
2863 }
2864 // Apply Patterns
2865 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2866 return true;
2867 }
2868 case GICXXCustomAction_GICombiner28:{
2869 Register GIMatchData_matchinfo;
2870 // Match Patterns
2871 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2872 return false;
2873 }
2874 // Apply Patterns
2875 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2876 return true;
2877 }
2878 case GICXXCustomAction_GICombiner29:{
2879 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2880 // Match Patterns
2881 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2882 return false;
2883 }
2884 // Apply Patterns
2885 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2886 return true;
2887 }
2888 case GICXXCustomAction_GICombiner30:{
2889 PreferredTuple GIMatchData_matchinfo;
2890 // Match Patterns
2891 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2892 return false;
2893 }
2894 // Apply Patterns
2895 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2896 return true;
2897 }
2898 case GICXXCustomAction_GICombiner31:{
2899 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2900 // Match Patterns
2901 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2902 return false;
2903 }
2904 // Apply Patterns
2905 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2906 return true;
2907 }
2908 case GICXXCustomAction_GICombiner32:{
2909 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2910 // Match Patterns
2911 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2912 return false;
2913 }
2914 // Apply Patterns
2915 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2916 return true;
2917 }
2918 case GICXXCustomAction_GICombiner33:{
2919 // Match Patterns
2920 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2921 return false;
2922 }
2923 // Apply Patterns
2924 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2925 return true;
2926 }
2927 case GICXXCustomAction_GICombiner34:{
2928 // Match Patterns
2929 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2930 return false;
2931 }
2932 // Apply Patterns
2933 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2934 return true;
2935 }
2936 case GICXXCustomAction_GICombiner35:{
2937 // Match Patterns
2938 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2939 return false;
2940 }
2941 // Apply Patterns
2942 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2943 return true;
2944 }
2945 case GICXXCustomAction_GICombiner36:{
2946 // Match Patterns
2947 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2948 return false;
2949 }
2950 // Apply Patterns
2951 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2952 return true;
2953 }
2954 case GICXXCustomAction_GICombiner37:{
2955 // Match Patterns
2956 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2957 return false;
2958 }
2959 // Apply Patterns
2960 Helper.replaceInstWithUndef(*State.MIs[0]);
2961 return true;
2962 }
2963 case GICXXCustomAction_GICombiner38:{
2964 // Apply Patterns
2965 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2966 return true;
2967 }
2968 case GICXXCustomAction_GICombiner39:{
2969 // Match Patterns
2970 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2971 return false;
2972 }
2973 // Apply Patterns
2974 Helper.replaceInstWithUndef(*State.MIs[0]);
2975 return true;
2976 }
2977 case GICXXCustomAction_GICombiner40:{
2978 // Match Patterns
2979 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2980 return false;
2981 }
2982 // Apply Patterns
2983 Helper.replaceInstWithUndef(*State.MIs[0]);
2984 return true;
2985 }
2986 case GICXXCustomAction_GICombiner41:{
2987 // Match Patterns
2988 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2989 return false;
2990 }
2991 // Apply Patterns
2992 Helper.replaceInstWithUndef(*State.MIs[0]);
2993 return true;
2994 }
2995 case GICXXCustomAction_GICombiner42:{
2996 // Match Patterns
2997 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2998 return false;
2999 }
3000 // Apply Patterns
3001 Helper.eraseInst(*State.MIs[0]);
3002 return true;
3003 }
3004 case GICXXCustomAction_GICombiner43:{
3005 // Match Patterns
3006 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
3007 return false;
3008 }
3009 // Apply Patterns
3010 Helper.replaceInstWithUndef(*State.MIs[0]);
3011 return true;
3012 }
3013 case GICXXCustomAction_GICombiner44:{
3014 // Match Patterns
3015 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
3016 return false;
3017 }
3018 // Apply Patterns
3019 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
3020 return true;
3021 }
3022 case GICXXCustomAction_GICombiner45:{
3023 Register GIMatchData_info;
3024 // Match Patterns
3025 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
3026 return false;
3027 }
3028 // Apply Patterns
3029 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
3030 return true;
3031 }
3032 case GICXXCustomAction_GICombiner46:{
3033 Register GIMatchData_info;
3034 // Match Patterns
3035 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
3036 return false;
3037 }
3038 // Apply Patterns
3039 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
3040 return true;
3041 }
3042 case GICXXCustomAction_GICombiner47:{
3043 Register GIMatchData_matchinfo;
3044 // Match Patterns
3045 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3046 return false;
3047 }
3048 // Apply Patterns
3049 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3050 return true;
3051 }
3052 case GICXXCustomAction_GICombiner48:{
3053 Register GIMatchData_matchinfo;
3054 // Match Patterns
3055 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3056 return false;
3057 }
3058 // Apply Patterns
3059 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3060 return true;
3061 }
3062 case GICXXCustomAction_GICombiner49:{
3063 Register GIMatchData_matchinfo;
3064 // Match Patterns
3065 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3066 return false;
3067 }
3068 // Apply Patterns
3069 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3070 return true;
3071 }
3072 case GICXXCustomAction_GICombiner50:{
3073 Register GIMatchData_matchinfo;
3074 // Match Patterns
3075 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3076 return false;
3077 }
3078 // Apply Patterns
3079 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3080 return true;
3081 }
3082 case GICXXCustomAction_GICombiner51:{
3083 // Match Patterns
3084 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
3085 return false;
3086 }
3087 // Apply Patterns
3088 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3089 return true;
3090 }
3091 case GICXXCustomAction_GICombiner52:{
3092 MachineInstr* GIMatchData_matchinfo;
3093 // Match Patterns
3094 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3095 return false;
3096 }
3097 // Apply Patterns
3098 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3099 return true;
3100 }
3101 case GICXXCustomAction_GICombiner53:{
3102 std::tuple<Register, Register> GIMatchData_info;
3103 // Match Patterns
3104 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
3105 return false;
3106 }
3107 // Apply Patterns
3108 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
3109 return true;
3110 }
3111 case GICXXCustomAction_GICombiner54:{
3112 InstructionStepsMatchInfo GIMatchData_info;
3113 // Match Patterns
3114 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3115 return false;
3116 }
3117 // Apply Patterns
3118 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3119 return true;
3120 }
3121 case GICXXCustomAction_GICombiner55:{
3122 std::optional<int64_t> GIMatchData_matchinfo;
3123 // Match Patterns
3124 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3125 return false;
3126 }
3127 // Apply Patterns
3128 if (GIMatchData_matchinfo) {
3129 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3130 } else {
3131 Helper.replaceInstWithUndef(*State.MIs[0]);
3132 }
3133 return true;
3134 }
3135 case GICXXCustomAction_GICombiner56:{
3136 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3137 // Match Patterns
3138 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3139 return false;
3140 }
3141 // Apply Patterns
3142 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3143 return true;
3144 }
3145 case GICXXCustomAction_GICombiner57:{
3146 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3147 // Match Patterns
3148 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3149 return false;
3150 }
3151 // Apply Patterns
3152 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3153 return true;
3154 }
3155 case GICXXCustomAction_GICombiner58:{
3156 PtrAddChain GIMatchData_matchinfo;
3157 // Match Patterns
3158 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3159 return false;
3160 }
3161 // Apply Patterns
3162 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3163 return true;
3164 }
3165 case GICXXCustomAction_GICombiner59:{
3166 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3167 // Match Patterns
3168 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3169 return false;
3170 }
3171 // Apply Patterns
3172 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3173 return true;
3174 }
3175 case GICXXCustomAction_GICombiner60:{
3176 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3177 // Match Patterns
3178 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3179 return false;
3180 }
3181 // Apply Patterns
3182 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3183 return true;
3184 }
3185 case GICXXCustomAction_GICombiner61:{
3186 int64_t GIMatchData_matchinfo;
3187 // Match Patterns
3188 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3189 return false;
3190 }
3191 // Apply Patterns
3192 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3193 return true;
3194 }
3195 case GICXXCustomAction_GICombiner62:{
3196 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3197 // Match Patterns
3198 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
3199 return false;
3200 }
3201 // Apply Patterns
3202 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3203 return true;
3204 }
3205 case GICXXCustomAction_GICombiner63:{
3206 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3207 // Match Patterns
3208 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3209 return false;
3210 }
3211 // Apply Patterns
3212 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3213 return true;
3214 }
3215 case GICXXCustomAction_GICombiner64:{
3216 std::tuple<Register, int64_t> GIMatchData_info;
3217 // Match Patterns
3218 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3219 return false;
3220 }
3221 // Apply Patterns
3222 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3223 return true;
3224 }
3225 case GICXXCustomAction_GICombiner65:{
3226 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3227 // Match Patterns
3228 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3229 return false;
3230 }
3231 // Apply Patterns
3232 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3233 return true;
3234 }
3235 case GICXXCustomAction_GICombiner66:{
3236 RegisterImmPair GIMatchData_matchinfo;
3237 // Match Patterns
3238 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3239 return false;
3240 }
3241 // Apply Patterns
3242 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3243 return true;
3244 }
3245 case GICXXCustomAction_GICombiner67:{
3246 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3247 // Match Patterns
3248 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3249 return false;
3250 }
3251 // Apply Patterns
3252 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3253 return true;
3254 }
3255 case GICXXCustomAction_GICombiner68:{
3256 unsigned GIMatchData_matchinfo;
3257 // Match Patterns
3258 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3259 return false;
3260 }
3261 // Apply Patterns
3262 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3263 return true;
3264 }
3265 case GICXXCustomAction_GICombiner69:{
3266 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3267 // Match Patterns
3268 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3269 return false;
3270 }
3271 // Apply Patterns
3272 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3273 return true;
3274 }
3275 case GICXXCustomAction_GICombiner70:{
3276 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3277 // Match Patterns
3278 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3279 return false;
3280 }
3281 // Apply Patterns
3282 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3283 return true;
3284 }
3285 case GICXXCustomAction_GICombiner71:{
3286 Register GIMatchData_matchinfo;
3287 // Match Patterns
3288 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3289 return false;
3290 }
3291 // Apply Patterns
3292 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3293 return true;
3294 }
3295 case GICXXCustomAction_GICombiner72:{
3296 // Match Patterns
3297 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3298 return false;
3299 }
3300 // Apply Patterns
3301 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3302 return true;
3303 }
3304 case GICXXCustomAction_GICombiner73:{
3305 Register GIMatchData_matchinfo;
3306 // Match Patterns
3307 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3308 return false;
3309 }
3310 // Apply Patterns
3311 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3312 return true;
3313 }
3314 case GICXXCustomAction_GICombiner74:{
3315 // Match Patterns
3316 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3317 return false;
3318 }
3319 // Apply Patterns
3320 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3321 return true;
3322 }
3323 case GICXXCustomAction_GICombiner75:{
3324 Register GIMatchData_matchinfo;
3325 // Match Patterns
3326 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3327 return false;
3328 }
3329 // Apply Patterns
3330 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3331 return true;
3332 }
3333 case GICXXCustomAction_GICombiner76:{
3334 // Match Patterns
3335 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3336 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3337 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3338 return false;
3339 }
3340 // Apply Patterns
3341 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3342 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3343 State.MIs[0]->eraseFromParent();
3344 return true;
3345 }
3346 case GICXXCustomAction_GICombiner77:{
3347 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3348 // Match Patterns
3349 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3350 return false;
3351 }
3352 // Apply Patterns
3353 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3354 return true;
3355 }
3356 case GICXXCustomAction_GICombiner78:{
3357 SmallVector<Register> GIMatchData_info;
3358 // Match Patterns
3359 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3360 return false;
3361 }
3362 // Apply Patterns
3363 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3364 return true;
3365 }
3366 case GICXXCustomAction_GICombiner79:{
3367 MachineInstr * GIMatchData_matchinfo;
3368 // Match Patterns
3369 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3370 return false;
3371 }
3372 // Apply Patterns
3373 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3374 return true;
3375 }
3376 case GICXXCustomAction_GICombiner80:{
3377 // Apply Patterns
3378 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3379 return true;
3380 }
3381 case GICXXCustomAction_GICombiner81:{
3382 // Apply Patterns
3383 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3384 return true;
3385 }
3386 case GICXXCustomAction_GICombiner82:{
3387 APInt GIMatchData_info;
3388 // Match Patterns
3389 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3390 return false;
3391 }
3392 // Apply Patterns
3393 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3394 return true;
3395 }
3396 case GICXXCustomAction_GICombiner83:{
3397 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3398 // Match Patterns
3399 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3400 return false;
3401 }
3402 // Apply Patterns
3403 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3404 return true;
3405 }
3406 case GICXXCustomAction_GICombiner84:{
3407 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3408 // Match Patterns
3409 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3410 return false;
3411 }
3412 // Apply Patterns
3413 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3414 return true;
3415 }
3416 case GICXXCustomAction_GICombiner85:{
3417 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3418 // Match Patterns
3419 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3420 return false;
3421 }
3422 // Apply Patterns
3423 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3424 return true;
3425 }
3426 case GICXXCustomAction_GICombiner86:{
3427 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3428 // Match Patterns
3429 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3430 return false;
3431 }
3432 // Apply Patterns
3433 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3434 return true;
3435 }
3436 case GICXXCustomAction_GICombiner87:{
3437 unsigned GIMatchData_info;
3438 // Match Patterns
3439 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3440 return false;
3441 }
3442 // Apply Patterns
3443 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3444 return true;
3445 }
3446 case GICXXCustomAction_GICombiner88:{
3447 // Match Patterns
3448 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3449 return false;
3450 }
3451 // Apply Patterns
3452 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3453 return true;
3454 }
3455 case GICXXCustomAction_GICombiner89:{
3456 std::pair<Register, Register> GIMatchData_matchinfo;
3457 // Match Patterns
3458 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3459 return false;
3460 }
3461 // Apply Patterns
3462 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3463 return true;
3464 }
3465 case GICXXCustomAction_GICombiner90:{
3466 // Match Patterns
3467 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3468 return false;
3469 }
3470 // Apply Patterns
3471 Helper.applyPtrAddZero(*State.MIs[0]);
3472 return true;
3473 }
3474 case GICXXCustomAction_GICombiner91:{
3475 RegisterImmPair GIMatchData_matchinfo;
3476 // Match Patterns
3477 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3478 return false;
3479 }
3480 // Apply Patterns
3481 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3482 return true;
3483 }
3484 case GICXXCustomAction_GICombiner92:{
3485 ShiftOfShiftedLogic GIMatchData_matchinfo;
3486 // Match Patterns
3487 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3488 return false;
3489 }
3490 // Apply Patterns
3491 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3492 return true;
3493 }
3494 case GICXXCustomAction_GICombiner93:{
3495 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3496 // Match Patterns
3497 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3498 return false;
3499 }
3500 // Apply Patterns
3501 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3502 return true;
3503 }
3504 case GICXXCustomAction_GICombiner94:{
3505 MachineInstr * GIMatchData_matchinfo;
3506 // Match Patterns
3507 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3508 return false;
3509 }
3510 // Apply Patterns
3511 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3512 return true;
3513 }
3514 case GICXXCustomAction_GICombiner95:{
3515 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3516 // Match Patterns
3517 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3518 return false;
3519 }
3520 // Apply Patterns
3521 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3522 return true;
3523 }
3524 case GICXXCustomAction_GICombiner96:{
3525 // Match Patterns
3526 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3527 return false;
3528 }
3529 // Apply Patterns
3530 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3531 return true;
3532 }
3533 case GICXXCustomAction_GICombiner97:{
3534 // Match Patterns
3535 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3536 return false;
3537 }
3538 // Apply Patterns
3539 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3540 return true;
3541 }
3542 case GICXXCustomAction_GICombiner98:{
3543 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3544 // Match Patterns
3545 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3546 return false;
3547 }
3548 // Apply Patterns
3549 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3550 return true;
3551 }
3552 case GICXXCustomAction_GICombiner99:{
3553 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3554 // Match Patterns
3555 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3556 return false;
3557 }
3558 // Apply Patterns
3559 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3560 return true;
3561 }
3562 case GICXXCustomAction_GICombiner100:{
3563 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3564 // Match Patterns
3565 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3566 return false;
3567 }
3568 // Apply Patterns
3569 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3570 return true;
3571 }
3572 case GICXXCustomAction_GICombiner101:{
3573 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3574 // Match Patterns
3575 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3576 return false;
3577 }
3578 // Apply Patterns
3579 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3580 return true;
3581 }
3582 case GICXXCustomAction_GICombiner102:{
3583 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3584 // Match Patterns
3585 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3586 return false;
3587 }
3588 // Apply Patterns
3589 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3590 return true;
3591 }
3592 case GICXXCustomAction_GICombiner103:{
3593 APInt GIMatchData_matchinfo;
3594 // Match Patterns
3595 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3596 return false;
3597 }
3598 // Apply Patterns
3599 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3600 return true;
3601 }
3602 case GICXXCustomAction_GICombiner104:{
3603 ConstantFP* GIMatchData_matchinfo;
3604 // Match Patterns
3605 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3606 return false;
3607 }
3608 // Apply Patterns
3609 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3610 return true;
3611 }
3612 case GICXXCustomAction_GICombiner105:{
3613 ConstantFP* GIMatchData_matchinfo;
3614 // Match Patterns
3615 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3616 return false;
3617 }
3618 // Apply Patterns
3619 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3620 return true;
3621 }
3622 case GICXXCustomAction_GICombiner106:{
3623 APInt GIMatchData_matchinfo;
3624 // Match Patterns
3625 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3626 return false;
3627 }
3628 // Apply Patterns
3629 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3630 return true;
3631 }
3632 case GICXXCustomAction_GICombiner107:{
3633 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3634 // Match Patterns
3635 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3636 return false;
3637 }
3638 // Apply Patterns
3639 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3640 return true;
3641 }
3642 case GICXXCustomAction_GICombiner108:{
3643 // Match Patterns
3644 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3645 return false;
3646 }
3647 // Apply Patterns
3648 Helper.applyUMulHToLShr(*State.MIs[0]);
3649 return true;
3650 }
3651 case GICXXCustomAction_GICombiner109:{
3652 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3653 // Match Patterns
3654 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3655 return false;
3656 }
3657 // Apply Patterns
3658 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3659 return true;
3660 }
3661 case GICXXCustomAction_GICombiner110:{
3662 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3663 // Match Patterns
3664 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3665 return false;
3666 }
3667 // Apply Patterns
3668 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3669 return true;
3670 }
3671 case GICXXCustomAction_GICombiner111:{
3672 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3673 // Match Patterns
3674 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3675 GIMatchData_info);}()) {
3676 return false;
3677 }
3678 // Apply Patterns
3679 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3680 return true;
3681 }
3682 case GICXXCustomAction_GICombiner112:{
3683 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3684 // Match Patterns
3685 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3686 GIMatchData_info);}()) {
3687 return false;
3688 }
3689 // Apply Patterns
3690 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3691 return true;
3692 }
3693 case GICXXCustomAction_GICombiner113:{
3694 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3695 // Match Patterns
3696 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3697 GIMatchData_info);}()) {
3698 return false;
3699 }
3700 // Apply Patterns
3701 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3702 return true;
3703 }
3704 case GICXXCustomAction_GICombiner114:{
3705 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3706 // Match Patterns
3707 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3708 *State.MIs[0], GIMatchData_info);}()) {
3709 return false;
3710 }
3711 // Apply Patterns
3712 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3713 return true;
3714 }
3715 case GICXXCustomAction_GICombiner115:{
3716 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3717 // Match Patterns
3718 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3719 GIMatchData_info);}()) {
3720 return false;
3721 }
3722 // Apply Patterns
3723 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3724 return true;
3725 }
3726 case GICXXCustomAction_GICombiner116:{
3727 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3728 // Match Patterns
3729 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3730 GIMatchData_info);}()) {
3731 return false;
3732 }
3733 // Apply Patterns
3734 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3735 return true;
3736 }
3737 case GICXXCustomAction_GICombiner117:{
3738 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3739 // Match Patterns
3740 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3741 GIMatchData_info);}()) {
3742 return false;
3743 }
3744 // Apply Patterns
3745 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3746 return true;
3747 }
3748 case GICXXCustomAction_GICombiner118:{
3749 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3750 // Match Patterns
3751 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3752 *State.MIs[0], GIMatchData_info);}()) {
3753 return false;
3754 }
3755 // Apply Patterns
3756 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3757 return true;
3758 }
3759 case GICXXCustomAction_GICombiner119:{
3760 unsigned GIMatchData_select_op_no;
3761 // Match Patterns
3762 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3763 return false;
3764 }
3765 // Apply Patterns
3766 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3767 return true;
3768 }
3769 case GICXXCustomAction_GICombiner120:{
3770 // Match Patterns
3771 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
3772 /*OrNegative=*/true);}()) {
3773 return false;
3774 }
3775 // Apply Patterns
3776 Helper.applySimplifySRemByPow2(*State.MIs[0]);
3777 return true;
3778 }
3779 case GICXXCustomAction_GICombiner121:{
3780 // Match Patterns
3781 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3782 return false;
3783 }
3784 // Apply Patterns
3785 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3786 return true;
3787 }
3788 case GICXXCustomAction_GICombiner122:{
3789 // Match Patterns
3790 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3791 return false;
3792 }
3793 // Apply Patterns
3794 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3795 return true;
3796 }
3797 case GICXXCustomAction_GICombiner123:{
3798 // Match Patterns
3799 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3800 return false;
3801 }
3802 // Apply Patterns
3803 Helper.applyUDivByPow2(*State.MIs[0]);
3804 return true;
3805 }
3806 case GICXXCustomAction_GICombiner124:{
3807 // Match Patterns
3808 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3809 return false;
3810 }
3811 // Apply Patterns
3812 Helper.applySDivByPow2(*State.MIs[0]);
3813 return true;
3814 }
3815 case GICXXCustomAction_GICombiner125:{
3816 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3817 // Match Patterns
3818 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3819 return false;
3820 }
3821 // Apply Patterns
3822 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3823 return true;
3824 }
3825 case GICXXCustomAction_GICombiner126:{
3826 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3827 // Match Patterns
3828 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3829 return false;
3830 }
3831 // Apply Patterns
3832 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3833 return true;
3834 }
3835 case GICXXCustomAction_GICombiner127:{
3836 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3837 // Match Patterns
3838 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3839 return false;
3840 }
3841 // Apply Patterns
3842 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3843 return true;
3844 }
3845 case GICXXCustomAction_GICombiner128:{
3846 Register GIMatchData_matchinfo;
3847 // Match Patterns
3848 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3849 return false;
3850 }
3851 // Apply Patterns
3852 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3853 return true;
3854 }
3855 case GICXXCustomAction_GICombiner129:{
3856 // Match Patterns
3857 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3858 return false;
3859 }
3860 // Apply Patterns
3861 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3862 return true;
3863 }
3864 case GICXXCustomAction_GICombiner130:{
3865 // Match Patterns
3866 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3867 return false;
3868 }
3869 // Apply Patterns
3870 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3871 return true;
3872 }
3873 case GICXXCustomAction_GICombiner131:{
3874 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3875 // Match Patterns
3876 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3877 return false;
3878 }
3879 // Apply Patterns
3880 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3881 return true;
3882 }
3883 case GICXXCustomAction_GICombiner132:{
3884 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3885 // Match Patterns
3886 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3887 return false;
3888 }
3889 // Apply Patterns
3890 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3891 return true;
3892 }
3893 case GICXXCustomAction_GICombiner133:{
3894 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3895 // Match Patterns
3896 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3897 return false;
3898 }
3899 // Apply Patterns
3900 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3901 return true;
3902 }
3903 case GICXXCustomAction_GICombiner134:{
3904 SmallVector<Register> GIMatchData_matchinfo;
3905 // Match Patterns
3906 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3907 return false;
3908 }
3909 // Apply Patterns
3910 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3911 return true;
3912 }
3913 case GICXXCustomAction_GICombiner135:{
3914 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3915 // Match Patterns
3916 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3917 return false;
3918 }
3919 // Apply Patterns
3920 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3921 return true;
3922 }
3923 case GICXXCustomAction_GICombiner136:{
3924 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3925 // Match Patterns
3926 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3927 return false;
3928 }
3929 // Apply Patterns
3930 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3931 return true;
3932 }
3933 case GICXXCustomAction_GICombiner137:{
3934 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3935 // Match Patterns
3936 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3937 return false;
3938 }
3939 // Apply Patterns
3940 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3941 return true;
3942 }
3943 case GICXXCustomAction_GICombiner138:{
3944 SmallVector<Register> GIMatchData_matchinfo;
3945 // Match Patterns
3946 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3947 return false;
3948 }
3949 // Apply Patterns
3950 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3951 return true;
3952 }
3953 case GICXXCustomAction_GICombiner139:{
3954 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3955 // Match Patterns
3956 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3957 return false;
3958 }
3959 // Apply Patterns
3960 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3961 return true;
3962 }
3963 case GICXXCustomAction_GICombiner140:{
3964 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3965 // Match Patterns
3966 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3967 return false;
3968 }
3969 // Apply Patterns
3970 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3971 return true;
3972 }
3973 case GICXXCustomAction_GICombiner141:{
3974 Register GIMatchData_matchinfo;
3975 // Match Patterns
3976 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3977 return false;
3978 }
3979 // Apply Patterns
3980 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3981 return true;
3982 }
3983 case GICXXCustomAction_GICombiner142:{
3984 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3985 // Match Patterns
3986 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3987 return false;
3988 }
3989 // Apply Patterns
3990 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3991 return true;
3992 }
3993 case GICXXCustomAction_GICombiner143:{
3994 SmallVector<Register> GIMatchData_info;
3995 // Match Patterns
3996 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3997 return false;
3998 }
3999 // Apply Patterns
4000 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4001 return true;
4002 }
4003 case GICXXCustomAction_GICombiner144:{
4004 Register GIMatchData_src;
4005 // Match Patterns
4006 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4007 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4008 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4009 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4010 return false;
4011
4012 // Check counts match.
4013 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4014 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4015 if (NumMergeSrcs != NumUnmergeDefs)
4016 return false;
4017
4018 // Verify all merge sources match unmerge defs in order.
4019 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4020 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4021 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4022
4023 if (MergeSrc != UnmergeDef)
4024 return false;
4025
4026 if (!MRI.hasOneNonDBGUse(MergeSrc))
4027 return false;
4028 }
4029
4030 // Check size compatibility.
4031 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4032 LLT SrcTy = MRI.getType(GIMatchData_src);
4033 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4034 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4035 return false;
4036
4037 // Check bitcast legality.
4038 if (SrcTy != DstTy) {
4039 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4040 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4041 if (!Helper.isLegalOrBeforeLegalizer(Query))
4042 return false;
4043 }
4044
4045 return true;}()) {
4046 return false;
4047 }
4048 // Apply Patterns
4049 LLT SrcTy = MRI.getType(GIMatchData_src);
4050 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4051
4052 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4053
4054 if (SrcTy == DstTy) {
4055 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4056 } else {
4057 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4058 }
4059
4060 State.MIs[0]->eraseFromParent();
4061 return true;
4062 }
4063 case GICXXCustomAction_GICombiner145:{
4064 SmallVector<APInt, 8> GIMatchData_info;
4065 // Match Patterns
4066 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4067 return false;
4068 }
4069 // Apply Patterns
4070 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4071 return true;
4072 }
4073 case GICXXCustomAction_GICombiner146:{
4074 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4075 // Match Patterns
4076 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4077 return false;
4078 }
4079 // Apply Patterns
4080 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4081 return true;
4082 }
4083 case GICXXCustomAction_GICombiner147:{
4084 // Match Patterns
4085 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4086 return false;
4087 }
4088 // Apply Patterns
4089 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4090 return true;
4091 }
4092 case GICXXCustomAction_GICombiner148:{
4093 // Match Patterns
4094 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4095 return false;
4096 }
4097 // Apply Patterns
4098 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4099 return true;
4100 }
4101 case GICXXCustomAction_GICombiner149:{
4102 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4103 // Match Patterns
4104 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
4105 return false;
4106 }
4107 // Apply Patterns
4108 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4109 return true;
4110 }
4111 case GICXXCustomAction_GICombiner150:{
4112 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4113 // Match Patterns
4114 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
4115 return false;
4116 }
4117 // Apply Patterns
4118 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4119 return true;
4120 }
4121 case GICXXCustomAction_GICombiner151:{
4122 Register GIMatchData_unmergeSrc;
4123 // Match Patterns
4124 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4125 return false;
4126 }
4127 // Apply Patterns
4128 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4129 return true;
4130 }
4131 case GICXXCustomAction_GICombiner152:{
4132 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4133 // Match Patterns
4134 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4135 return false;
4136 }
4137 // Apply Patterns
4138 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4139 return true;
4140 }
4141 case GICXXCustomAction_GICombiner153:{
4142 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4143 // Match Patterns
4144 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4145 return false;
4146 }
4147 // Apply Patterns
4148 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4149 return true;
4150 }
4151 case GICXXCustomAction_GICombiner154:{
4152 Register GIMatchData_matchinfo;
4153 // Match Patterns
4154 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4155 return false;
4156 }
4157 // Apply Patterns
4158 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4159 return true;
4160 }
4161 case GICXXCustomAction_GICombiner155:{
4162 Register GIMatchData_matchinfo;
4163 // Match Patterns
4164 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4165 return false;
4166 }
4167 // Apply Patterns
4168 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4169 return true;
4170 }
4171 case GICXXCustomAction_GICombiner156:{
4172 LshrOfTruncOfLshr GIMatchData_matchinfo;
4173 // Match Patterns
4174 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4175 return false;
4176 }
4177 // Apply Patterns
4178 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4179 return true;
4180 }
4181 case GICXXCustomAction_GICombiner157:{
4182 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4183 // Match Patterns
4184 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4185 return false;
4186 }
4187 // Apply Patterns
4188 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4189 return true;
4190 }
4191 case GICXXCustomAction_GICombiner158:{
4192 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4193 // Match Patterns
4194 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4195 return false;
4196 }
4197 // Apply Patterns
4198 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4199 return true;
4200 }
4201 }
4202 llvm_unreachable("Unknown Apply Action");
4203}
4204#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4205#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4206#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4207#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)
4208#else
4209#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4210#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4211#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)
4212#endif
4213const uint8_t *RISCVPreLegalizerCombinerImpl::getMatchTable() const {
4214 constexpr static uint8_t MatchTable0[] = {
4215 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(285), /*)*//*default:*//*Label 113*/ GIMT_Encode4(9952),
4216 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1070), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4217 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1082),
4218 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1815),
4219 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2796),
4220 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3002),
4221 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3104),
4222 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3217),
4223 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3313), GIMT_Encode4(0), GIMT_Encode4(0),
4224 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3420),
4225 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3847),
4226 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(4562), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4227 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(4773), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4228 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(4785), GIMT_Encode4(0),
4229 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(4852),
4230 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(4929),
4231 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(4994),
4232 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(5006),
4233 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(5018),
4234 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(5061),
4235 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(5094),
4236 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(5169), GIMT_Encode4(0), GIMT_Encode4(0),
4237 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(5233),
4238 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(5255), GIMT_Encode4(0), GIMT_Encode4(0),
4239 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(5277), GIMT_Encode4(0), GIMT_Encode4(0),
4240 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(5299),
4241 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(5311),
4242 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(5323), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4243 /* 354 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(5335), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4244 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(5347),
4245 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(5475), GIMT_Encode4(0), GIMT_Encode4(0),
4246 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(5887), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4247 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(5920),
4248 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(5995),
4249 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(6061),
4250 /* 550 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(6191),
4251 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(6389),
4252 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(6736),
4253 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(7065),
4254 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(7108),
4255 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(7151),
4256 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(7175),
4257 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(7199),
4258 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(7244), GIMT_Encode4(0), GIMT_Encode4(0),
4259 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(7256),
4260 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(7436),
4261 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(7459),
4262 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(7471),
4263 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(7483),
4264 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(7495),
4265 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(7518),
4266 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(7530),
4267 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(7542),
4268 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(7554),
4269 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(7588),
4270 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(7622),
4271 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(7645),
4272 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(7657),
4273 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(7669), GIMT_Encode4(0), GIMT_Encode4(0),
4274 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(7681),
4275 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(7704),
4276 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(7727),
4277 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(7739),
4278 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(7751),
4279 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(7763), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4280 /* 702 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(7775),
4281 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(7916),
4282 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(8005),
4283 /* 714 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(8093),
4284 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(8116),
4285 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(8139),
4286 /* 726 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(8184), GIMT_Encode4(0), GIMT_Encode4(0),
4287 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(8207), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4288 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(8229), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4289 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(8251),
4290 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(8302),
4291 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(8324),
4292 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(8367),
4293 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(8389),
4294 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(8411),
4295 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(8438), GIMT_Encode4(0), GIMT_Encode4(0),
4296 /* 810 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(8465),
4297 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 81*/ GIMT_Encode4(8544), GIMT_Encode4(0),
4298 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(8556),
4299 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(8586),
4300 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(8631),
4301 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(8676),
4302 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(8688),
4303 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(8700),
4304 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(8745),
4305 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 89*/ GIMT_Encode4(8790),
4306 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 90*/ GIMT_Encode4(8802), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4307 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 91*/ GIMT_Encode4(8814), GIMT_Encode4(0),
4308 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 92*/ GIMT_Encode4(8904),
4309 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 93*/ GIMT_Encode4(8938),
4310 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 94*/ GIMT_Encode4(8972),
4311 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 95*/ GIMT_Encode4(9006),
4312 /* 914 */ /*TargetOpcode::G_ABS*//*Label 96*/ GIMT_Encode4(9040), GIMT_Encode4(0), GIMT_Encode4(0),
4313 /* 926 */ /*TargetOpcode::G_BR*//*Label 97*/ GIMT_Encode4(9063), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4314 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 98*/ GIMT_Encode4(9075),
4315 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(9205),
4316 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 100*/ GIMT_Encode4(9582), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4317 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 101*/ GIMT_Encode4(9648),
4318 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 102*/ GIMT_Encode4(9660),
4319 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 103*/ GIMT_Encode4(9672),
4320 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 104*/ GIMT_Encode4(9695), GIMT_Encode4(0),
4321 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 105*/ GIMT_Encode4(9718),
4322 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 106*/ GIMT_Encode4(9730),
4323 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 107*/ GIMT_Encode4(9742), GIMT_Encode4(0),
4324 /* 1006 */ /*TargetOpcode::G_FCEIL*//*Label 108*/ GIMT_Encode4(9842), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4325 /* 1054 */ /*TargetOpcode::G_FSQRT*//*Label 109*/ GIMT_Encode4(9864),
4326 /* 1058 */ /*TargetOpcode::G_FFLOOR*//*Label 110*/ GIMT_Encode4(9886),
4327 /* 1062 */ /*TargetOpcode::G_FRINT*//*Label 111*/ GIMT_Encode4(9908),
4328 /* 1066 */ /*TargetOpcode::G_FNEARBYINT*//*Label 112*/ GIMT_Encode4(9930),
4329 /* 1070 */ // Label 0: @1070
4330 /* 1070 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1081), // Rule ID 19 //
4331 /* 1075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4332 /* 1078 */ // MIs[0] d
4333 /* 1078 */ // No operand predicates
4334 /* 1078 */ // MIs[0] s
4335 /* 1078 */ // No operand predicates
4336 /* 1078 */ // Combiner Rule #19: copy_prop
4337 /* 1078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4338 /* 1081 */ // Label 114: @1081
4339 /* 1081 */ GIM_Reject,
4340 /* 1082 */ // Label 1: @1082
4341 /* 1082 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1093), // Rule ID 22 //
4342 /* 1087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4343 /* 1090 */ // Combiner Rule #22: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4344 /* 1090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4345 /* 1093 */ // Label 115: @1093
4346 /* 1093 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1104), // Rule ID 100 //
4347 /* 1098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4348 /* 1101 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4349 /* 1101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4350 /* 1104 */ // Label 116: @1104
4351 /* 1104 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1115), // Rule ID 152 //
4352 /* 1109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4353 /* 1112 */ // Combiner Rule #112: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4354 /* 1112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4355 /* 1115 */ // Label 117: @1115
4356 /* 1115 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1126), // Rule ID 256 //
4357 /* 1120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
4358 /* 1123 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_ADD'
4359 /* 1123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4360 /* 1126 */ // Label 118: @1126
4361 /* 1126 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1137), // Rule ID 316 //
4362 /* 1131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
4363 /* 1134 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_ADD'
4364 /* 1134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4365 /* 1137 */ // Label 119: @1137
4366 /* 1137 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1148), // Rule ID 353 //
4367 /* 1142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
4368 /* 1145 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4369 /* 1145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
4370 /* 1148 */ // Label 120: @1148
4371 /* 1148 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1236), // Rule ID 419 //
4372 /* 1153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
4373 /* 1156 */ // MIs[0] dst
4374 /* 1156 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4375 /* 1160 */ // MIs[0] __add_shift_match_0.shl_neg
4376 /* 1160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4377 /* 1164 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4378 /* 1168 */ // MIs[1] __add_shift_match_0.neg_y
4379 /* 1168 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4380 /* 1172 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4381 /* 1176 */ // MIs[2] __add_shift_match_0.zero
4382 /* 1176 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4383 /* 1180 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4384 /* 1184 */ // MIs[3] Operand 1
4385 /* 1184 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4386 /* 1195 */ // MIs[2] y
4387 /* 1195 */ // No operand predicates
4388 /* 1195 */ // MIs[1] n
4389 /* 1195 */ // No operand predicates
4390 /* 1195 */ // MIs[0] x
4391 /* 1195 */ // No operand predicates
4392 /* 1195 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
4393 /* 1199 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4394 /* 1201 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4395 /* 1204 */ // Combiner Rule #252: add_shift @ [__add_shift_match_0[1]]
4396 /* 1204 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4397 /* 1207 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4398 /* 1212 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4399 /* 1216 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4400 /* 1220 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4401 /* 1224 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4402 /* 1228 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4403 /* 1232 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4404 /* 1235 */ GIR_EraseRootFromParent_Done,
4405 /* 1236 */ // Label 121: @1236
4406 /* 1236 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1324), // Rule ID 418 //
4407 /* 1241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
4408 /* 1244 */ // MIs[0] dst
4409 /* 1244 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4410 /* 1248 */ // MIs[0] x
4411 /* 1248 */ // No operand predicates
4412 /* 1248 */ // MIs[0] __add_shift_match_0.shl_neg
4413 /* 1248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4414 /* 1252 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4415 /* 1256 */ // MIs[1] __add_shift_match_0.neg_y
4416 /* 1256 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4417 /* 1260 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4418 /* 1264 */ // MIs[2] __add_shift_match_0.zero
4419 /* 1264 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4420 /* 1268 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4421 /* 1272 */ // MIs[3] Operand 1
4422 /* 1272 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4423 /* 1283 */ // MIs[2] y
4424 /* 1283 */ // No operand predicates
4425 /* 1283 */ // MIs[1] n
4426 /* 1283 */ // No operand predicates
4427 /* 1283 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
4428 /* 1287 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4429 /* 1289 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4430 /* 1292 */ // Combiner Rule #252: add_shift @ [__add_shift_match_0[0]]
4431 /* 1292 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4432 /* 1295 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4433 /* 1300 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4434 /* 1304 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4435 /* 1308 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4436 /* 1312 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4437 /* 1316 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4438 /* 1320 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4439 /* 1323 */ GIR_EraseRootFromParent_Done,
4440 /* 1324 */ // Label 122: @1324
4441 /* 1324 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1358), // Rule ID 2 //
4442 /* 1329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4443 /* 1332 */ // MIs[0] root
4444 /* 1332 */ // No operand predicates
4445 /* 1332 */ // MIs[0] sub
4446 /* 1332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4447 /* 1336 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4448 /* 1340 */ // MIs[1] Operand 1
4449 /* 1340 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4450 /* 1344 */ // MIs[1] A
4451 /* 1344 */ // No operand predicates
4452 /* 1344 */ // MIs[0] B
4453 /* 1344 */ // No operand predicates
4454 /* 1344 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4455 /* 1346 */ // Combiner Rule #2: ZeroMinusAPlusB
4456 /* 1346 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4457 /* 1349 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4458 /* 1351 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4459 /* 1353 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4460 /* 1357 */ GIR_EraseRootFromParent_Done,
4461 /* 1358 */ // Label 123: @1358
4462 /* 1358 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1395), // Rule ID 18 //
4463 /* 1363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4464 /* 1366 */ // MIs[0] root
4465 /* 1366 */ // No operand predicates
4466 /* 1366 */ // MIs[0] sub
4467 /* 1366 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4468 /* 1370 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4469 /* 1374 */ // MIs[1] A
4470 /* 1374 */ // No operand predicates
4471 /* 1374 */ // MIs[1] c1
4472 /* 1374 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4473 /* 1378 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4474 /* 1382 */ // MIs[2] imm1
4475 /* 1382 */ // No operand predicates
4476 /* 1382 */ // MIs[0] c2
4477 /* 1382 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4478 /* 1386 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4479 /* 1390 */ // MIs[3] imm2
4480 /* 1390 */ // No operand predicates
4481 /* 1390 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4482 /* 1392 */ // Combiner Rule #18: AMinusC1PlusC2
4483 /* 1392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4484 /* 1395 */ // Label 124: @1395
4485 /* 1395 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1429), // Rule ID 5 //
4486 /* 1400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4487 /* 1403 */ // MIs[0] root
4488 /* 1403 */ // No operand predicates
4489 /* 1403 */ // MIs[0] sub
4490 /* 1403 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4491 /* 1407 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4492 /* 1411 */ // MIs[1] B
4493 /* 1411 */ // No operand predicates
4494 /* 1411 */ // MIs[1] A
4495 /* 1411 */ // No operand predicates
4496 /* 1411 */ // MIs[0] A
4497 /* 1411 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4498 /* 1416 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4499 /* 1421 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4500 /* 1423 */ // Combiner Rule #5: BMinusAPlusA
4501 /* 1423 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4502 /* 1428 */ GIR_EraseRootFromParent_Done,
4503 /* 1429 */ // Label 125: @1429
4504 /* 1429 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1463), // Rule ID 140 //
4505 /* 1434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4506 /* 1437 */ // MIs[0] dst
4507 /* 1437 */ // No operand predicates
4508 /* 1437 */ // MIs[0] __add_sub_reg_match_0.tmp
4509 /* 1437 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4510 /* 1441 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4511 /* 1445 */ // MIs[1] src
4512 /* 1445 */ // No operand predicates
4513 /* 1445 */ // MIs[1] __add_sub_reg_match_0.x
4514 /* 1445 */ // No operand predicates
4515 /* 1445 */ // MIs[0] __add_sub_reg_match_0.x
4516 /* 1445 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4517 /* 1450 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4518 /* 1455 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4519 /* 1457 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4520 /* 1457 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4521 /* 1462 */ GIR_EraseRootFromParent_Done,
4522 /* 1463 */ // Label 126: @1463
4523 /* 1463 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1508), // Rule ID 7 //
4524 /* 1468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4525 /* 1471 */ // MIs[0] root
4526 /* 1471 */ // No operand predicates
4527 /* 1471 */ // MIs[0] sub1
4528 /* 1471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4529 /* 1475 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4530 /* 1479 */ // MIs[1] A
4531 /* 1479 */ // No operand predicates
4532 /* 1479 */ // MIs[1] B
4533 /* 1479 */ // No operand predicates
4534 /* 1479 */ // MIs[0] sub2
4535 /* 1479 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4536 /* 1483 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4537 /* 1487 */ // MIs[2] B
4538 /* 1487 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4539 /* 1492 */ // MIs[2] C
4540 /* 1492 */ // No operand predicates
4541 /* 1492 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4542 /* 1494 */ // Combiner Rule #7: AMinusBPlusBMinusC
4543 /* 1494 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4544 /* 1497 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4545 /* 1499 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4546 /* 1503 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4547 /* 1507 */ GIR_EraseRootFromParent_Done,
4548 /* 1508 */ // Label 127: @1508
4549 /* 1508 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1553), // Rule ID 6 //
4550 /* 1513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4551 /* 1516 */ // MIs[0] root
4552 /* 1516 */ // No operand predicates
4553 /* 1516 */ // MIs[0] sub1
4554 /* 1516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4555 /* 1520 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4556 /* 1524 */ // MIs[1] A
4557 /* 1524 */ // No operand predicates
4558 /* 1524 */ // MIs[1] B
4559 /* 1524 */ // No operand predicates
4560 /* 1524 */ // MIs[0] sub2
4561 /* 1524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4562 /* 1528 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4563 /* 1532 */ // MIs[2] C
4564 /* 1532 */ // No operand predicates
4565 /* 1532 */ // MIs[2] A
4566 /* 1532 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4567 /* 1537 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4568 /* 1539 */ // Combiner Rule #6: AMinusBPlusCMinusA
4569 /* 1539 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4570 /* 1542 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4571 /* 1544 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4572 /* 1548 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4573 /* 1552 */ GIR_EraseRootFromParent_Done,
4574 /* 1553 */ // Label 128: @1553
4575 /* 1553 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1588), // Rule ID 45 //
4576 /* 1558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4577 /* 1561 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4578 /* 1567 */ // MIs[0] root
4579 /* 1567 */ // No operand predicates
4580 /* 1567 */ // MIs[0] left
4581 /* 1567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4582 /* 1571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4583 /* 1575 */ // MIs[1] imm1
4584 /* 1575 */ // No operand predicates
4585 /* 1575 */ // MIs[0] right
4586 /* 1575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4587 /* 1579 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4588 /* 1583 */ // MIs[2] imm2
4589 /* 1583 */ // No operand predicates
4590 /* 1583 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4591 /* 1585 */ // Combiner Rule #43: add_of_vscale
4592 /* 1585 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4593 /* 1588 */ // Label 129: @1588
4594 /* 1588 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1622), // Rule ID 3 //
4595 /* 1593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4596 /* 1596 */ // MIs[0] root
4597 /* 1596 */ // No operand predicates
4598 /* 1596 */ // MIs[0] A
4599 /* 1596 */ // No operand predicates
4600 /* 1596 */ // MIs[0] sub
4601 /* 1596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4602 /* 1600 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4603 /* 1604 */ // MIs[1] Operand 1
4604 /* 1604 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4605 /* 1608 */ // MIs[1] B
4606 /* 1608 */ // No operand predicates
4607 /* 1608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4608 /* 1610 */ // Combiner Rule #3: APlusZeroMinusB
4609 /* 1610 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4610 /* 1613 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4611 /* 1615 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4612 /* 1617 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4613 /* 1621 */ GIR_EraseRootFromParent_Done,
4614 /* 1622 */ // Label 130: @1622
4615 /* 1622 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1656), // Rule ID 4 //
4616 /* 1627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4617 /* 1630 */ // MIs[0] root
4618 /* 1630 */ // No operand predicates
4619 /* 1630 */ // MIs[0] A
4620 /* 1630 */ // No operand predicates
4621 /* 1630 */ // MIs[0] sub
4622 /* 1630 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4623 /* 1634 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4624 /* 1638 */ // MIs[1] B
4625 /* 1638 */ // No operand predicates
4626 /* 1638 */ // MIs[1] A
4627 /* 1638 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4628 /* 1643 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4629 /* 1648 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4630 /* 1650 */ // Combiner Rule #4: APlusBMinusB
4631 /* 1650 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4632 /* 1655 */ GIR_EraseRootFromParent_Done,
4633 /* 1656 */ // Label 131: @1656
4634 /* 1656 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1690), // Rule ID 139 //
4635 /* 1661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4636 /* 1664 */ // MIs[0] dst
4637 /* 1664 */ // No operand predicates
4638 /* 1664 */ // MIs[0] __add_sub_reg_match_0.x
4639 /* 1664 */ // No operand predicates
4640 /* 1664 */ // MIs[0] __add_sub_reg_match_0.tmp
4641 /* 1664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4642 /* 1668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4643 /* 1672 */ // MIs[1] src
4644 /* 1672 */ // No operand predicates
4645 /* 1672 */ // MIs[1] __add_sub_reg_match_0.x
4646 /* 1672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4647 /* 1677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4648 /* 1682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4649 /* 1684 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
4650 /* 1684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4651 /* 1689 */ GIR_EraseRootFromParent_Done,
4652 /* 1690 */ // Label 132: @1690
4653 /* 1690 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1735), // Rule ID 8 //
4654 /* 1695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4655 /* 1698 */ // MIs[0] root
4656 /* 1698 */ // No operand predicates
4657 /* 1698 */ // MIs[0] A
4658 /* 1698 */ // No operand predicates
4659 /* 1698 */ // MIs[0] sub1
4660 /* 1698 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4661 /* 1702 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4662 /* 1706 */ // MIs[1] B
4663 /* 1706 */ // No operand predicates
4664 /* 1706 */ // MIs[1] add1
4665 /* 1706 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4666 /* 1710 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4667 /* 1714 */ // MIs[2] A
4668 /* 1714 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4669 /* 1719 */ // MIs[2] C
4670 /* 1719 */ // No operand predicates
4671 /* 1719 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4672 /* 1721 */ // Combiner Rule #8: APlusBMinusAplusC
4673 /* 1721 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4674 /* 1724 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4675 /* 1726 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4676 /* 1730 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4677 /* 1734 */ GIR_EraseRootFromParent_Done,
4678 /* 1735 */ // Label 133: @1735
4679 /* 1735 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1780), // Rule ID 10 //
4680 /* 1740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4681 /* 1743 */ // MIs[0] root
4682 /* 1743 */ // No operand predicates
4683 /* 1743 */ // MIs[0] A
4684 /* 1743 */ // No operand predicates
4685 /* 1743 */ // MIs[0] sub1
4686 /* 1743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4687 /* 1747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4688 /* 1751 */ // MIs[1] B
4689 /* 1751 */ // No operand predicates
4690 /* 1751 */ // MIs[1] add1
4691 /* 1751 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4692 /* 1755 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4693 /* 1759 */ // MIs[2] C
4694 /* 1759 */ // No operand predicates
4695 /* 1759 */ // MIs[2] A
4696 /* 1759 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4697 /* 1764 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4698 /* 1766 */ // Combiner Rule #10: APlusBMinusCPlusA
4699 /* 1766 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4700 /* 1769 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4701 /* 1771 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4702 /* 1775 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4703 /* 1779 */ GIR_EraseRootFromParent_Done,
4704 /* 1780 */ // Label 134: @1780
4705 /* 1780 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1803), // Rule ID 111 //
4706 /* 1785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4707 /* 1788 */ // MIs[0] dst
4708 /* 1788 */ // No operand predicates
4709 /* 1788 */ // MIs[0] lhs
4710 /* 1788 */ // No operand predicates
4711 /* 1788 */ // MIs[0] Operand 2
4712 /* 1788 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4713 /* 1792 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4714 /* 1797 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
4715 /* 1797 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4716 /* 1802 */ GIR_EraseRootFromParent_Done,
4717 /* 1803 */ // Label 135: @1803
4718 /* 1803 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1814), // Rule ID 160 //
4719 /* 1808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
4720 /* 1811 */ // MIs[0] root
4721 /* 1811 */ // No operand predicates
4722 /* 1811 */ // MIs[0] src1
4723 /* 1811 */ // No operand predicates
4724 /* 1811 */ // MIs[0] src2
4725 /* 1811 */ // No operand predicates
4726 /* 1811 */ // Combiner Rule #116: reassoc_comm_binops
4727 /* 1811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4728 /* 1814 */ // Label 136: @1814
4729 /* 1814 */ GIM_Reject,
4730 /* 1815 */ // Label 2: @1815
4731 /* 1815 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1826), // Rule ID 101 //
4732 /* 1820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4733 /* 1823 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4734 /* 1823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4735 /* 1826 */ // Label 137: @1826
4736 /* 1826 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1837), // Rule ID 264 //
4737 /* 1831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
4738 /* 1834 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_SUB'
4739 /* 1834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4740 /* 1837 */ // Label 138: @1837
4741 /* 1837 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1848), // Rule ID 317 //
4742 /* 1842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
4743 /* 1845 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_SUB'
4744 /* 1845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4745 /* 1848 */ // Label 139: @1848
4746 /* 1848 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1859), // Rule ID 350 //
4747 /* 1853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
4748 /* 1856 */ // Combiner Rule #213: sub_add_reg; wip_match_opcode 'G_SUB'
4749 /* 1856 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
4750 /* 1859 */ // Label 140: @1859
4751 /* 1859 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(1870), // Rule ID 388 //
4752 /* 1864 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
4753 /* 1867 */ // Combiner Rule #224: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4754 /* 1867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
4755 /* 1870 */ // Label 141: @1870
4756 /* 1870 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(1947), // Rule ID 420 //
4757 /* 1875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
4758 /* 1878 */ // MIs[0] dst
4759 /* 1878 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4760 /* 1882 */ // MIs[0] sub1
4761 /* 1882 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4762 /* 1886 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4763 /* 1890 */ // MIs[1] a
4764 /* 1890 */ // No operand predicates
4765 /* 1890 */ // MIs[1] b
4766 /* 1890 */ // No operand predicates
4767 /* 1890 */ // MIs[0] Operand 2
4768 /* 1890 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4769 /* 1894 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
4770 /* 1898 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4771 /* 1900 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4772 /* 1903 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4773 /* 1913 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4774 /* 1916 */ // Combiner Rule #253: sub_one_from_sub
4775 /* 1916 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4776 /* 1919 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4777 /* 1924 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4778 /* 1928 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4779 /* 1931 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4780 /* 1935 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4781 /* 1939 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4782 /* 1942 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4783 /* 1946 */ GIR_EraseRootFromParent_Done,
4784 /* 1947 */ // Label 142: @1947
4785 /* 1947 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2041), // Rule ID 426 //
4786 /* 1952 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
4787 /* 1955 */ // MIs[0] root
4788 /* 1955 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4789 /* 1959 */ // MIs[0] Operand 1
4790 /* 1959 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4791 /* 1963 */ // MIs[0] max
4792 /* 1963 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4793 /* 1967 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
4794 /* 1971 */ // MIs[1] A
4795 /* 1971 */ // No operand predicates
4796 /* 1971 */ // MIs[1] sub
4797 /* 1971 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4798 /* 1975 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4799 /* 1979 */ // MIs[2] Operand 1
4800 /* 1979 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
4801 /* 1983 */ // MIs[2] A
4802 /* 1983 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4803 /* 1988 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
4804 /* 1992 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4805 /* 1994 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4806 /* 1997 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4807 /* 2007 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4808 /* 2010 */ // Combiner Rule #257: SubSmaxSub
4809 /* 2010 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4810 /* 2013 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4811 /* 2018 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4812 /* 2021 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4813 /* 2025 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
4814 /* 2029 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4815 /* 2033 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
4816 /* 2037 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4817 /* 2040 */ GIR_EraseRootFromParent_Done,
4818 /* 2041 */ // Label 143: @2041
4819 /* 2041 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2135), // Rule ID 427 //
4820 /* 2046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
4821 /* 2049 */ // MIs[0] root
4822 /* 2049 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4823 /* 2053 */ // MIs[0] Operand 1
4824 /* 2053 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4825 /* 2057 */ // MIs[0] max
4826 /* 2057 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4827 /* 2061 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
4828 /* 2065 */ // MIs[1] A
4829 /* 2065 */ // No operand predicates
4830 /* 2065 */ // MIs[1] sub
4831 /* 2065 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4832 /* 2069 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4833 /* 2073 */ // MIs[2] Operand 1
4834 /* 2073 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
4835 /* 2077 */ // MIs[2] A
4836 /* 2077 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4837 /* 2082 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
4838 /* 2086 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4839 /* 2088 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4840 /* 2091 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4841 /* 2101 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4842 /* 2104 */ // Combiner Rule #258: SubUmaxSub
4843 /* 2104 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4844 /* 2107 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4845 /* 2112 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4846 /* 2115 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4847 /* 2119 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
4848 /* 2123 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4849 /* 2127 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
4850 /* 2131 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4851 /* 2134 */ GIR_EraseRootFromParent_Done,
4852 /* 2135 */ // Label 144: @2135
4853 /* 2135 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2175), // Rule ID 424 //
4854 /* 2140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
4855 /* 2143 */ // MIs[0] root
4856 /* 2143 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4857 /* 2147 */ // MIs[0] Operand 1
4858 /* 2147 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
4859 /* 2151 */ // MIs[0] op1
4860 /* 2151 */ // No operand predicates
4861 /* 2151 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4862 /* 2154 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
4863 /* 2164 */ // Combiner Rule #255: sub_minus_one
4864 /* 2164 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4865 /* 2167 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4866 /* 2169 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
4867 /* 2171 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4868 /* 2174 */ GIR_EraseRootFromParent_Done,
4869 /* 2175 */ // Label 145: @2175
4870 /* 2175 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2275), // Rule ID 425 //
4871 /* 2180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
4872 /* 2183 */ // MIs[0] d
4873 /* 2183 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4874 /* 2187 */ // MIs[0] a
4875 /* 2187 */ // No operand predicates
4876 /* 2187 */ // MIs[0] mul
4877 /* 2187 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4878 /* 2191 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
4879 /* 2195 */ // MIs[1] x
4880 /* 2195 */ // No operand predicates
4881 /* 2195 */ // MIs[1] c
4882 /* 2195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4883 /* 2199 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4884 /* 2203 */ // MIs[2] imm
4885 /* 2203 */ // No operand predicates
4886 /* 2203 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4887 /* 2207 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4888 /* 2209 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
4889 /* 2212 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4890 /* 2215 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
4891 /* 2225 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4892 /* 2228 */ // Combiner Rule #256: sub_of_mul_const
4893 /* 2228 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4894 /* 2231 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4895 /* 2236 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4896 /* 2239 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
4897 /* 2243 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
4898 /* 2247 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4899 /* 2252 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
4900 /* 2256 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4901 /* 2259 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4902 /* 2263 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
4903 /* 2267 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
4904 /* 2271 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
4905 /* 2274 */ GIR_EraseRootFromParent_Done,
4906 /* 2275 */ // Label 146: @2275
4907 /* 2275 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2336), // Rule ID 9 //
4908 /* 2280 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4909 /* 2283 */ // MIs[0] root
4910 /* 2283 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4911 /* 2287 */ // MIs[0] A
4912 /* 2287 */ // No operand predicates
4913 /* 2287 */ // MIs[0] sub1
4914 /* 2287 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4915 /* 2291 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4916 /* 2295 */ // MIs[1] B
4917 /* 2295 */ // No operand predicates
4918 /* 2295 */ // MIs[1] C
4919 /* 2295 */ // No operand predicates
4920 /* 2295 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4921 /* 2299 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4922 /* 2301 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4923 /* 2304 */ // Combiner Rule #9: AMinusBMinusC
4924 /* 2304 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4925 /* 2307 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4926 /* 2312 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
4927 /* 2316 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4928 /* 2320 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4929 /* 2324 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4930 /* 2328 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
4931 /* 2332 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4932 /* 2335 */ GIR_EraseRootFromParent_Done,
4933 /* 2336 */ // Label 147: @2336
4934 /* 2336 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2381), // Rule ID 0 //
4935 /* 2341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4936 /* 2344 */ // MIs[0] root
4937 /* 2344 */ // No operand predicates
4938 /* 2344 */ // MIs[0] add1
4939 /* 2344 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4940 /* 2348 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4941 /* 2352 */ // MIs[1] A
4942 /* 2352 */ // No operand predicates
4943 /* 2352 */ // MIs[1] sub1
4944 /* 2352 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4945 /* 2356 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4946 /* 2360 */ // MIs[2] B
4947 /* 2360 */ // No operand predicates
4948 /* 2360 */ // MIs[2] C
4949 /* 2360 */ // No operand predicates
4950 /* 2360 */ // MIs[0] B
4951 /* 2360 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4952 /* 2365 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4953 /* 2367 */ // Combiner Rule #0: APlusBMinusCMinusB
4954 /* 2367 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4955 /* 2370 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4956 /* 2372 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4957 /* 2376 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4958 /* 2380 */ GIR_EraseRootFromParent_Done,
4959 /* 2381 */ // Label 148: @2381
4960 /* 2381 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2418), // Rule ID 14 //
4961 /* 2386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4962 /* 2389 */ // MIs[0] root
4963 /* 2389 */ // No operand predicates
4964 /* 2389 */ // MIs[0] add
4965 /* 2389 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4966 /* 2393 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4967 /* 2397 */ // MIs[1] A
4968 /* 2397 */ // No operand predicates
4969 /* 2397 */ // MIs[1] c1
4970 /* 2397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4971 /* 2401 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4972 /* 2405 */ // MIs[2] imm1
4973 /* 2405 */ // No operand predicates
4974 /* 2405 */ // MIs[0] c2
4975 /* 2405 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4976 /* 2409 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4977 /* 2413 */ // MIs[3] imm2
4978 /* 2413 */ // No operand predicates
4979 /* 2413 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4980 /* 2415 */ // Combiner Rule #14: APlusC1MinusC2
4981 /* 2415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4982 /* 2418 */ // Label 149: @2418
4983 /* 2418 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2455), // Rule ID 17 //
4984 /* 2423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4985 /* 2426 */ // MIs[0] root
4986 /* 2426 */ // No operand predicates
4987 /* 2426 */ // MIs[0] sub1
4988 /* 2426 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4989 /* 2430 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4990 /* 2434 */ // MIs[1] c1
4991 /* 2434 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4992 /* 2438 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4993 /* 2442 */ // MIs[2] imm1
4994 /* 2442 */ // No operand predicates
4995 /* 2442 */ // MIs[1] A
4996 /* 2442 */ // No operand predicates
4997 /* 2442 */ // MIs[0] c2
4998 /* 2442 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4999 /* 2446 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5000 /* 2450 */ // MIs[3] imm2
5001 /* 2450 */ // No operand predicates
5002 /* 2450 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5003 /* 2452 */ // Combiner Rule #17: C1Minus2MinusC2
5004 /* 2452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5005 /* 2455 */ // Label 150: @2455
5006 /* 2455 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2500), // Rule ID 1 //
5007 /* 2460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5008 /* 2463 */ // MIs[0] root
5009 /* 2463 */ // No operand predicates
5010 /* 2463 */ // MIs[0] sub2
5011 /* 2463 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5012 /* 2467 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5013 /* 2471 */ // MIs[1] A
5014 /* 2471 */ // No operand predicates
5015 /* 2471 */ // MIs[1] sub1
5016 /* 2471 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5017 /* 2475 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5018 /* 2479 */ // MIs[2] B
5019 /* 2479 */ // No operand predicates
5020 /* 2479 */ // MIs[2] C
5021 /* 2479 */ // No operand predicates
5022 /* 2479 */ // MIs[0] C
5023 /* 2479 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5024 /* 2484 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5025 /* 2486 */ // Combiner Rule #1: AMinusBMinusCMinusC
5026 /* 2486 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5027 /* 2489 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5028 /* 2491 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5029 /* 2495 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5030 /* 2499 */ GIR_EraseRootFromParent_Done,
5031 /* 2500 */ // Label 151: @2500
5032 /* 2500 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2537), // Rule ID 16 //
5033 /* 2505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5034 /* 2508 */ // MIs[0] root
5035 /* 2508 */ // No operand predicates
5036 /* 2508 */ // MIs[0] sub1
5037 /* 2508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5038 /* 2512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5039 /* 2516 */ // MIs[1] A
5040 /* 2516 */ // No operand predicates
5041 /* 2516 */ // MIs[1] c1
5042 /* 2516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5043 /* 2520 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5044 /* 2524 */ // MIs[2] imm1
5045 /* 2524 */ // No operand predicates
5046 /* 2524 */ // MIs[0] c2
5047 /* 2524 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5048 /* 2528 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5049 /* 2532 */ // MIs[3] imm2
5050 /* 2532 */ // No operand predicates
5051 /* 2532 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5052 /* 2534 */ // Combiner Rule #16: AMinusC1MinusC2
5053 /* 2534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5054 /* 2537 */ // Label 152: @2537
5055 /* 2537 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2580), // Rule ID 170 //
5056 /* 2542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5057 /* 2545 */ // MIs[0] dst
5058 /* 2545 */ // No operand predicates
5059 /* 2545 */ // MIs[0] Operand 1
5060 /* 2545 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5061 /* 2549 */ // MIs[0] and
5062 /* 2549 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5063 /* 2553 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5064 /* 2557 */ // MIs[1] x
5065 /* 2557 */ // No operand predicates
5066 /* 2557 */ // MIs[1] Operand 2
5067 /* 2557 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5068 /* 2561 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
5069 /* 2565 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5070 /* 2567 */ // Combiner Rule #126: neg_and_one_to_sext_inreg
5071 /* 2567 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5072 /* 2570 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5073 /* 2572 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5074 /* 2576 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5075 /* 2579 */ GIR_EraseRootFromParent_Done,
5076 /* 2580 */ // Label 153: @2580
5077 /* 2580 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2617), // Rule ID 15 //
5078 /* 2585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5079 /* 2588 */ // MIs[0] root
5080 /* 2588 */ // No operand predicates
5081 /* 2588 */ // MIs[0] c2
5082 /* 2588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5083 /* 2592 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5084 /* 2596 */ // MIs[1] imm2
5085 /* 2596 */ // No operand predicates
5086 /* 2596 */ // MIs[0] add
5087 /* 2596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5088 /* 2600 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5089 /* 2604 */ // MIs[2] A
5090 /* 2604 */ // No operand predicates
5091 /* 2604 */ // MIs[2] c1
5092 /* 2604 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5093 /* 2608 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5094 /* 2612 */ // MIs[3] imm1
5095 /* 2612 */ // No operand predicates
5096 /* 2612 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5097 /* 2614 */ // Combiner Rule #15: C2MinusAPlusC1
5098 /* 2614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5099 /* 2617 */ // Label 154: @2617
5100 /* 2617 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2656), // Rule ID 122 //
5101 /* 2622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5102 /* 2625 */ // MIs[0] dst
5103 /* 2625 */ // No operand predicates
5104 /* 2625 */ // MIs[0] x
5105 /* 2625 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5106 /* 2629 */ // MIs[0] x
5107 /* 2629 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5108 /* 2634 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5109 /* 2637 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5110 /* 2647 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
5111 /* 2647 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5112 /* 2650 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5113 /* 2652 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5114 /* 2655 */ GIR_EraseRootFromParent_Done,
5115 /* 2656 */ // Label 155: @2656
5116 /* 2656 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2690), // Rule ID 12 //
5117 /* 2661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5118 /* 2664 */ // MIs[0] root
5119 /* 2664 */ // No operand predicates
5120 /* 2664 */ // MIs[0] A
5121 /* 2664 */ // No operand predicates
5122 /* 2664 */ // MIs[0] add
5123 /* 2664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5124 /* 2668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5125 /* 2672 */ // MIs[1] A
5126 /* 2672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5127 /* 2677 */ // MIs[1] B
5128 /* 2677 */ // No operand predicates
5129 /* 2677 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5130 /* 2682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5131 /* 2684 */ // Combiner Rule #12: AMinusBMinusA
5132 /* 2684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5133 /* 2689 */ GIR_EraseRootFromParent_Done,
5134 /* 2690 */ // Label 156: @2690
5135 /* 2690 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2724), // Rule ID 11 //
5136 /* 2695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5137 /* 2698 */ // MIs[0] root
5138 /* 2698 */ // No operand predicates
5139 /* 2698 */ // MIs[0] A
5140 /* 2698 */ // No operand predicates
5141 /* 2698 */ // MIs[0] sub1
5142 /* 2698 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5143 /* 2702 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5144 /* 2706 */ // MIs[1] Operand 1
5145 /* 2706 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5146 /* 2710 */ // MIs[1] B
5147 /* 2710 */ // No operand predicates
5148 /* 2710 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5149 /* 2712 */ // Combiner Rule #11: AMinusZeroMinusB
5150 /* 2712 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5151 /* 2715 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5152 /* 2717 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5153 /* 2719 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5154 /* 2723 */ GIR_EraseRootFromParent_Done,
5155 /* 2724 */ // Label 157: @2724
5156 /* 2724 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2751), // Rule ID 48 //
5157 /* 2729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
5158 /* 2732 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5159 /* 2738 */ // MIs[0] root
5160 /* 2738 */ // No operand predicates
5161 /* 2738 */ // MIs[0] x
5162 /* 2738 */ // No operand predicates
5163 /* 2738 */ // MIs[0] right
5164 /* 2738 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5165 /* 2742 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5166 /* 2746 */ // MIs[1] imm
5167 /* 2746 */ // No operand predicates
5168 /* 2746 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5169 /* 2748 */ // Combiner Rule #46: sub_of_vscale
5170 /* 2748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
5171 /* 2751 */ // Label 158: @2751
5172 /* 2751 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2774), // Rule ID 110 //
5173 /* 2756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5174 /* 2759 */ // MIs[0] dst
5175 /* 2759 */ // No operand predicates
5176 /* 2759 */ // MIs[0] lhs
5177 /* 2759 */ // No operand predicates
5178 /* 2759 */ // MIs[0] Operand 2
5179 /* 2759 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5180 /* 2763 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5181 /* 2768 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
5182 /* 2768 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5183 /* 2773 */ GIR_EraseRootFromParent_Done,
5184 /* 2774 */ // Label 159: @2774
5185 /* 2774 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2795), // Rule ID 21 //
5186 /* 2779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5187 /* 2782 */ // MIs[0] d
5188 /* 2782 */ // No operand predicates
5189 /* 2782 */ // MIs[0] op1
5190 /* 2782 */ // No operand predicates
5191 /* 2782 */ // MIs[0] c
5192 /* 2782 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5193 /* 2786 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5194 /* 2790 */ // MIs[1] imm
5195 /* 2790 */ // No operand predicates
5196 /* 2790 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5197 /* 2792 */ // Combiner Rule #21: sub_to_add
5198 /* 2792 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5199 /* 2795 */ // Label 160: @2795
5200 /* 2795 */ GIM_Reject,
5201 /* 2796 */ // Label 3: @2796
5202 /* 2796 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2807), // Rule ID 84 //
5203 /* 2801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5204 /* 2804 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_MUL'
5205 /* 2804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5206 /* 2807 */ // Label 161: @2807
5207 /* 2807 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2818), // Rule ID 261 //
5208 /* 2812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5209 /* 2815 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_MUL'
5210 /* 2815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5211 /* 2818 */ // Label 162: @2818
5212 /* 2818 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2829), // Rule ID 354 //
5213 /* 2823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
5214 /* 2826 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
5215 /* 2826 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5216 /* 2829 */ // Label 163: @2829
5217 /* 2829 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2869), // Rule ID 23 //
5218 /* 2834 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5219 /* 2837 */ // MIs[0] dst
5220 /* 2837 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5221 /* 2841 */ // MIs[0] x
5222 /* 2841 */ // No operand predicates
5223 /* 2841 */ // MIs[0] Operand 2
5224 /* 2841 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5225 /* 2845 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5226 /* 2848 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5227 /* 2858 */ // Combiner Rule #23: mul_by_neg_one
5228 /* 2858 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5229 /* 2861 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5230 /* 2863 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5231 /* 2866 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5232 /* 2868 */ GIR_EraseRootFromParent_Done,
5233 /* 2869 */ // Label 164: @2869
5234 /* 2869 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2904), // Rule ID 46 //
5235 /* 2874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5236 /* 2877 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5237 /* 2883 */ // MIs[0] root
5238 /* 2883 */ // No operand predicates
5239 /* 2883 */ // MIs[0] left
5240 /* 2883 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5241 /* 2887 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5242 /* 2891 */ // MIs[1] scale
5243 /* 2891 */ // No operand predicates
5244 /* 2891 */ // MIs[0] x
5245 /* 2891 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5246 /* 2895 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5247 /* 2899 */ // MIs[2] imm1
5248 /* 2899 */ // No operand predicates
5249 /* 2899 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5250 /* 2901 */ // Combiner Rule #44: mul_of_vscale
5251 /* 2901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
5252 /* 2904 */ // Label 165: @2904
5253 /* 2904 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2944), // Rule ID 131 //
5254 /* 2909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5255 /* 2912 */ // MIs[0] dst
5256 /* 2912 */ // No operand predicates
5257 /* 2912 */ // MIs[0] zero
5258 /* 2912 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5259 /* 2916 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5260 /* 2920 */ // MIs[1] Operand 1
5261 /* 2920 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5262 /* 2931 */ // MIs[0] rhs
5263 /* 2931 */ // No operand predicates
5264 /* 2931 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5265 /* 2936 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5266 /* 2938 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5267 /* 2938 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5268 /* 2943 */ GIR_EraseRootFromParent_Done,
5269 /* 2944 */ // Label 166: @2944
5270 /* 2944 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2967), // Rule ID 132 //
5271 /* 2949 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5272 /* 2952 */ // MIs[0] dst
5273 /* 2952 */ // No operand predicates
5274 /* 2952 */ // MIs[0] lhs
5275 /* 2952 */ // No operand predicates
5276 /* 2952 */ // MIs[0] zero
5277 /* 2952 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5278 /* 2956 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5279 /* 2961 */ // Combiner Rule #94: binop_right_to_zero
5280 /* 2961 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5281 /* 2966 */ GIR_EraseRootFromParent_Done,
5282 /* 2967 */ // Label 167: @2967
5283 /* 2967 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2990), // Rule ID 137 //
5284 /* 2972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5285 /* 2975 */ // MIs[0] dst
5286 /* 2975 */ // No operand predicates
5287 /* 2975 */ // MIs[0] x
5288 /* 2975 */ // No operand predicates
5289 /* 2975 */ // MIs[0] Operand 2
5290 /* 2975 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5291 /* 2979 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5292 /* 2984 */ // Combiner Rule #99: right_identity_one_int
5293 /* 2984 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5294 /* 2989 */ GIR_EraseRootFromParent_Done,
5295 /* 2990 */ // Label 168: @2990
5296 /* 2990 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3001), // Rule ID 20 //
5297 /* 2995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5298 /* 2998 */ // MIs[0] d
5299 /* 2998 */ // No operand predicates
5300 /* 2998 */ // MIs[0] op1
5301 /* 2998 */ // No operand predicates
5302 /* 2998 */ // MIs[0] op2
5303 /* 2998 */ // No operand predicates
5304 /* 2998 */ // Combiner Rule #20: mul_to_shl
5305 /* 2998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5306 /* 3001 */ // Label 169: @3001
5307 /* 3001 */ GIM_Reject,
5308 /* 3002 */ // Label 4: @3002
5309 /* 3002 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3013), // Rule ID 232 //
5310 /* 3007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5311 /* 3010 */ // Combiner Rule #172: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5312 /* 3010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5313 /* 3013 */ // Label 170: @3013
5314 /* 3013 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3024), // Rule ID 267 //
5315 /* 3018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5316 /* 3021 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_SDIV'
5317 /* 3021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5318 /* 3024 */ // Label 171: @3024
5319 /* 3024 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3035), // Rule ID 322 //
5320 /* 3029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5321 /* 3032 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5322 /* 3032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5323 /* 3035 */ // Label 172: @3035
5324 /* 3035 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3075), // Rule ID 127 //
5325 /* 3040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5326 /* 3043 */ // MIs[0] dst
5327 /* 3043 */ // No operand predicates
5328 /* 3043 */ // MIs[0] zero
5329 /* 3043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5330 /* 3047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5331 /* 3051 */ // MIs[1] Operand 1
5332 /* 3051 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5333 /* 3062 */ // MIs[0] rhs
5334 /* 3062 */ // No operand predicates
5335 /* 3062 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5336 /* 3067 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5337 /* 3069 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5338 /* 3069 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5339 /* 3074 */ GIR_EraseRootFromParent_Done,
5340 /* 3075 */ // Label 173: @3075
5341 /* 3075 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3092), // Rule ID 346 //
5342 /* 3080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
5343 /* 3083 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5344 /* 3089 */ // MIs[0] dst
5345 /* 3089 */ // No operand predicates
5346 /* 3089 */ // MIs[0] x
5347 /* 3089 */ // No operand predicates
5348 /* 3089 */ // MIs[0] y
5349 /* 3089 */ // No operand predicates
5350 /* 3089 */ // Combiner Rule #209: sdiv_by_pow2
5351 /* 3089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
5352 /* 3092 */ // Label 174: @3092
5353 /* 3092 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3103), // Rule ID 348 //
5354 /* 3097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5355 /* 3100 */ // MIs[0] dst
5356 /* 3100 */ // No operand predicates
5357 /* 3100 */ // MIs[0] x
5358 /* 3100 */ // No operand predicates
5359 /* 3100 */ // MIs[0] y
5360 /* 3100 */ // No operand predicates
5361 /* 3100 */ // Combiner Rule #211: sdiv_by_const
5362 /* 3100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5363 /* 3103 */ // Label 175: @3103
5364 /* 3103 */ GIM_Reject,
5365 /* 3104 */ // Label 5: @3104
5366 /* 3104 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3115), // Rule ID 87 //
5367 /* 3109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5368 /* 3112 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5369 /* 3112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5370 /* 3115 */ // Label 176: @3115
5371 /* 3115 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3126), // Rule ID 233 //
5372 /* 3120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5373 /* 3123 */ // Combiner Rule #172: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5374 /* 3123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5375 /* 3126 */ // Label 177: @3126
5376 /* 3126 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3137), // Rule ID 266 //
5377 /* 3131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5378 /* 3134 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_UDIV'
5379 /* 3134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5380 /* 3137 */ // Label 178: @3137
5381 /* 3137 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3148), // Rule ID 324 //
5382 /* 3142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5383 /* 3145 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5384 /* 3145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5385 /* 3148 */ // Label 179: @3148
5386 /* 3148 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3188), // Rule ID 128 //
5387 /* 3153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5388 /* 3156 */ // MIs[0] dst
5389 /* 3156 */ // No operand predicates
5390 /* 3156 */ // MIs[0] zero
5391 /* 3156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5392 /* 3160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5393 /* 3164 */ // MIs[1] Operand 1
5394 /* 3164 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5395 /* 3175 */ // MIs[0] rhs
5396 /* 3175 */ // No operand predicates
5397 /* 3175 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5398 /* 3180 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5399 /* 3182 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5400 /* 3182 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5401 /* 3187 */ GIR_EraseRootFromParent_Done,
5402 /* 3188 */ // Label 180: @3188
5403 /* 3188 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3205), // Rule ID 345 //
5404 /* 3193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5405 /* 3196 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5406 /* 3202 */ // MIs[0] dst
5407 /* 3202 */ // No operand predicates
5408 /* 3202 */ // MIs[0] x
5409 /* 3202 */ // No operand predicates
5410 /* 3202 */ // MIs[0] y
5411 /* 3202 */ // No operand predicates
5412 /* 3202 */ // Combiner Rule #208: udiv_by_pow2
5413 /* 3202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
5414 /* 3205 */ // Label 181: @3205
5415 /* 3205 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3216), // Rule ID 347 //
5416 /* 3210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5417 /* 3213 */ // MIs[0] dst
5418 /* 3213 */ // No operand predicates
5419 /* 3213 */ // MIs[0] x
5420 /* 3213 */ // No operand predicates
5421 /* 3213 */ // MIs[0] y
5422 /* 3213 */ // No operand predicates
5423 /* 3213 */ // Combiner Rule #210: udiv_by_const
5424 /* 3213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5425 /* 3216 */ // Label 182: @3216
5426 /* 3216 */ GIM_Reject,
5427 /* 3217 */ // Label 6: @3217
5428 /* 3217 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3228), // Rule ID 234 //
5429 /* 3222 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5430 /* 3225 */ // Combiner Rule #172: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5431 /* 3225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5432 /* 3228 */ // Label 183: @3228
5433 /* 3228 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3239), // Rule ID 269 //
5434 /* 3233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5435 /* 3236 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_SREM'
5436 /* 3236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5437 /* 3239 */ // Label 184: @3239
5438 /* 3239 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3250), // Rule ID 323 //
5439 /* 3244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5440 /* 3247 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_SREM'
5441 /* 3247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5442 /* 3250 */ // Label 185: @3250
5443 /* 3250 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3290), // Rule ID 129 //
5444 /* 3255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5445 /* 3258 */ // MIs[0] dst
5446 /* 3258 */ // No operand predicates
5447 /* 3258 */ // MIs[0] zero
5448 /* 3258 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5449 /* 3262 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5450 /* 3266 */ // MIs[1] Operand 1
5451 /* 3266 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5452 /* 3277 */ // MIs[0] rhs
5453 /* 3277 */ // No operand predicates
5454 /* 3277 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5455 /* 3282 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5456 /* 3284 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5457 /* 3284 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5458 /* 3289 */ GIR_EraseRootFromParent_Done,
5459 /* 3290 */ // Label 186: @3290
5460 /* 3290 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3301), // Rule ID 342 //
5461 /* 3295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
5462 /* 3298 */ // MIs[0] dst
5463 /* 3298 */ // No operand predicates
5464 /* 3298 */ // MIs[0] x
5465 /* 3298 */ // No operand predicates
5466 /* 3298 */ // MIs[0] y
5467 /* 3298 */ // No operand predicates
5468 /* 3298 */ // Combiner Rule #205: srem_pow2_to_mask
5469 /* 3298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5470 /* 3301 */ // Label 187: @3301
5471 /* 3301 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3312), // Rule ID 344 //
5472 /* 3306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
5473 /* 3309 */ // MIs[0] dst
5474 /* 3309 */ // No operand predicates
5475 /* 3309 */ // MIs[0] x
5476 /* 3309 */ // No operand predicates
5477 /* 3309 */ // MIs[0] y
5478 /* 3309 */ // No operand predicates
5479 /* 3309 */ // Combiner Rule #207: srem_by_const
5480 /* 3309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5481 /* 3312 */ // Label 188: @3312
5482 /* 3312 */ GIM_Reject,
5483 /* 3313 */ // Label 7: @3313
5484 /* 3313 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3324), // Rule ID 88 //
5485 /* 3318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5486 /* 3321 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5487 /* 3321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5488 /* 3324 */ // Label 189: @3324
5489 /* 3324 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3335), // Rule ID 235 //
5490 /* 3329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5491 /* 3332 */ // Combiner Rule #172: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5492 /* 3332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5493 /* 3335 */ // Label 190: @3335
5494 /* 3335 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3346), // Rule ID 268 //
5495 /* 3340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5496 /* 3343 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_UREM'
5497 /* 3343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5498 /* 3346 */ // Label 191: @3346
5499 /* 3346 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3357), // Rule ID 325 //
5500 /* 3351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5501 /* 3354 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_UREM'
5502 /* 3354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5503 /* 3357 */ // Label 192: @3357
5504 /* 3357 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3397), // Rule ID 130 //
5505 /* 3362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5506 /* 3365 */ // MIs[0] dst
5507 /* 3365 */ // No operand predicates
5508 /* 3365 */ // MIs[0] zero
5509 /* 3365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5510 /* 3369 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5511 /* 3373 */ // MIs[1] Operand 1
5512 /* 3373 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5513 /* 3384 */ // MIs[0] rhs
5514 /* 3384 */ // No operand predicates
5515 /* 3384 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5516 /* 3389 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5517 /* 3391 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5518 /* 3391 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5519 /* 3396 */ GIR_EraseRootFromParent_Done,
5520 /* 3397 */ // Label 193: @3397
5521 /* 3397 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3408), // Rule ID 183 //
5522 /* 3402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
5523 /* 3405 */ // MIs[0] dst
5524 /* 3405 */ // No operand predicates
5525 /* 3405 */ // MIs[0] x
5526 /* 3405 */ // No operand predicates
5527 /* 3405 */ // MIs[0] y
5528 /* 3405 */ // No operand predicates
5529 /* 3405 */ // Combiner Rule #139: urem_pow2_to_mask
5530 /* 3405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5531 /* 3408 */ // Label 194: @3408
5532 /* 3408 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3419), // Rule ID 343 //
5533 /* 3413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5534 /* 3416 */ // MIs[0] dst
5535 /* 3416 */ // No operand predicates
5536 /* 3416 */ // MIs[0] x
5537 /* 3416 */ // No operand predicates
5538 /* 3416 */ // MIs[0] y
5539 /* 3416 */ // No operand predicates
5540 /* 3416 */ // Combiner Rule #206: urem_by_const
5541 /* 3416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5542 /* 3419 */ // Label 195: @3419
5543 /* 3419 */ GIM_Reject,
5544 /* 3420 */ // Label 8: @3420
5545 /* 3420 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3431), // Rule ID 79 //
5546 /* 3425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5547 /* 3428 */ // Combiner Rule #75: load_and_mask; wip_match_opcode 'G_AND'
5548 /* 3428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5549 /* 3431 */ // Label 196: @3431
5550 /* 3431 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3442), // Rule ID 83 //
5551 /* 3436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5552 /* 3439 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_AND'
5553 /* 3439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5554 /* 3442 */ // Label 197: @3442
5555 /* 3442 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3453), // Rule ID 153 //
5556 /* 3447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
5557 /* 3450 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5558 /* 3450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5559 /* 3453 */ // Label 198: @3453
5560 /* 3453 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3464), // Rule ID 173 //
5561 /* 3458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
5562 /* 3461 */ // Combiner Rule #129: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5563 /* 3461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5564 /* 3464 */ // Label 199: @3464
5565 /* 3464 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3475), // Rule ID 180 //
5566 /* 3469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
5567 /* 3472 */ // Combiner Rule #136: redundant_and; wip_match_opcode 'G_AND'
5568 /* 3472 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
5569 /* 3475 */ // Label 200: @3475
5570 /* 3475 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3486), // Rule ID 205 //
5571 /* 3480 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
5572 /* 3483 */ // Combiner Rule #161: overlapping_and; wip_match_opcode 'G_AND'
5573 /* 3483 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
5574 /* 3486 */ // Label 201: @3486
5575 /* 3486 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3497), // Rule ID 258 //
5576 /* 3491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5577 /* 3494 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_AND'
5578 /* 3494 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5579 /* 3497 */ // Label 202: @3497
5580 /* 3497 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3508), // Rule ID 307 //
5581 /* 3502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
5582 /* 3505 */ // Combiner Rule #195: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5583 /* 3505 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
5584 /* 3508 */ // Label 203: @3508
5585 /* 3508 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3519), // Rule ID 319 //
5586 /* 3513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5587 /* 3516 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_AND'
5588 /* 3516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5589 /* 3519 */ // Label 204: @3519
5590 /* 3519 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3530), // Rule ID 355 //
5591 /* 3524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
5592 /* 3527 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5593 /* 3527 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5594 /* 3530 */ // Label 205: @3530
5595 /* 3530 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3541), // Rule ID 382 //
5596 /* 3535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
5597 /* 3538 */ // Combiner Rule #218: match_ands; wip_match_opcode 'G_AND'
5598 /* 3538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
5599 /* 3541 */ // Label 206: @3541
5600 /* 3541 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3552), // Rule ID 421 //
5601 /* 3546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
5602 /* 3549 */ // Combiner Rule #254: binop_with_neg; wip_match_opcode 'G_AND'
5603 /* 3549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
5604 /* 3552 */ // Label 207: @3552
5605 /* 3552 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3638), // Rule ID 387 //
5606 /* 3557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5607 /* 3560 */ // MIs[0] root
5608 /* 3560 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5609 /* 3564 */ // MIs[0] and
5610 /* 3564 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5611 /* 3568 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5612 /* 3572 */ // MIs[1] x
5613 /* 3572 */ // No operand predicates
5614 /* 3572 */ // MIs[1] y
5615 /* 3572 */ // No operand predicates
5616 /* 3572 */ // MIs[0] not
5617 /* 3572 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5618 /* 3576 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5619 /* 3580 */ // MIs[2] y
5620 /* 3580 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5621 /* 3585 */ // MIs[2] Operand 2
5622 /* 3585 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5623 /* 3589 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5624 /* 3591 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5625 /* 3594 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5626 /* 3604 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5627 /* 3607 */ // Combiner Rule #223: and_xor_or_to_xor_and
5628 /* 3607 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5629 /* 3610 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5630 /* 3615 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
5631 /* 3619 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5632 /* 3622 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5633 /* 3626 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5634 /* 3630 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5635 /* 3634 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5636 /* 3637 */ GIR_EraseRootFromParent_Done,
5637 /* 3638 */ // Label 208: @3638
5638 /* 3638 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3736), // Rule ID 166 //
5639 /* 3643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
5640 /* 3646 */ // MIs[0] root
5641 /* 3646 */ // No operand predicates
5642 /* 3646 */ // MIs[0] d1
5643 /* 3646 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5644 /* 3650 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5645 /* 3654 */ // MIs[1] p
5646 /* 3654 */ // No operand predicates
5647 /* 3654 */ // MIs[1] s1
5648 /* 3654 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5649 /* 3658 */ // MIs[1] Operand 3
5650 /* 3658 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5651 /* 3662 */ // MIs[0] d2
5652 /* 3662 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5653 /* 3666 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5654 /* 3670 */ // MIs[2] p
5655 /* 3670 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5656 /* 3675 */ // MIs[2] s2
5657 /* 3675 */ // No operand predicates
5658 /* 3675 */ // MIs[2] Operand 3
5659 /* 3675 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5660 /* 3679 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
5661 /* 3683 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5662 /* 3685 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5663 /* 3688 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5664 /* 3698 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5665 /* 3701 */ // Combiner Rule #122: double_icmp_zero_and_combine
5666 /* 3701 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5667 /* 3704 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5668 /* 3709 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5669 /* 3713 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5670 /* 3717 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5671 /* 3721 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5672 /* 3725 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5673 /* 3729 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5674 /* 3732 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5675 /* 3735 */ GIR_EraseRootFromParent_Done,
5676 /* 3736 */ // Label 209: @3736
5677 /* 3736 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3773), // Rule ID 251 //
5678 /* 3741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5679 /* 3744 */ // MIs[0] root
5680 /* 3744 */ // No operand predicates
5681 /* 3744 */ // MIs[0] shift
5682 /* 3744 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5683 /* 3748 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5684 /* 3752 */ // MIs[1] x
5685 /* 3752 */ // No operand predicates
5686 /* 3752 */ // MIs[1] lsb
5687 /* 3752 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5688 /* 3756 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5689 /* 3760 */ // MIs[2] imm1
5690 /* 3760 */ // No operand predicates
5691 /* 3760 */ // MIs[0] mask
5692 /* 3760 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5693 /* 3764 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5694 /* 3768 */ // MIs[3] imm2
5695 /* 3768 */ // No operand predicates
5696 /* 3768 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5697 /* 3770 */ // Combiner Rule #184: bitfield_extract_from_and
5698 /* 3770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5699 /* 3773 */ // Label 210: @3773
5700 /* 3773 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3822), // Rule ID 386 //
5701 /* 3778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5702 /* 3781 */ // MIs[0] root
5703 /* 3781 */ // No operand predicates
5704 /* 3781 */ // MIs[0] or
5705 /* 3781 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5706 /* 3785 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5707 /* 3789 */ // MIs[1] x
5708 /* 3789 */ // No operand predicates
5709 /* 3789 */ // MIs[1] not
5710 /* 3789 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5711 /* 3793 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5712 /* 3797 */ // MIs[2] y
5713 /* 3797 */ // No operand predicates
5714 /* 3797 */ // MIs[2] Operand 2
5715 /* 3797 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5716 /* 3801 */ // MIs[0] y
5717 /* 3801 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5718 /* 3806 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5719 /* 3808 */ // Combiner Rule #222: and_xor_or_to_and
5720 /* 3808 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5721 /* 3811 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5722 /* 3813 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5723 /* 3817 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
5724 /* 3821 */ GIR_EraseRootFromParent_Done,
5725 /* 3822 */ // Label 211: @3822
5726 /* 3822 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3846), // Rule ID 120 //
5727 /* 3827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5728 /* 3830 */ // MIs[0] dst
5729 /* 3830 */ // No operand predicates
5730 /* 3830 */ // MIs[0] src
5731 /* 3830 */ // No operand predicates
5732 /* 3830 */ // MIs[0] src
5733 /* 3830 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5734 /* 3835 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5735 /* 3840 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
5736 /* 3840 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5737 /* 3845 */ GIR_EraseRootFromParent_Done,
5738 /* 3846 */ // Label 212: @3846
5739 /* 3846 */ GIM_Reject,
5740 /* 3847 */ // Label 9: @3847
5741 /* 3847 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3858), // Rule ID 85 //
5742 /* 3852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5743 /* 3855 */ // Combiner Rule #79: undef_to_negative_one; wip_match_opcode 'G_OR'
5744 /* 3855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5745 /* 3858 */ // Label 213: @3858
5746 /* 3858 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3869), // Rule ID 154 //
5747 /* 3863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
5748 /* 3866 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5749 /* 3866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5750 /* 3869 */ // Label 214: @3869
5751 /* 3869 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3880), // Rule ID 182 //
5752 /* 3874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
5753 /* 3877 */ // Combiner Rule #138: redundant_or; wip_match_opcode 'G_OR'
5754 /* 3877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5755 /* 3880 */ // Label 215: @3880
5756 /* 3880 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3891), // Rule ID 231 //
5757 /* 3885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
5758 /* 3888 */ // Combiner Rule #171: load_or_combine; wip_match_opcode 'G_OR'
5759 /* 3888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5760 /* 3891 */ // Label 216: @3891
5761 /* 3891 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3902), // Rule ID 236 //
5762 /* 3896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5763 /* 3899 */ // Combiner Rule #173: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5764 /* 3899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5765 /* 3902 */ // Label 217: @3902
5766 /* 3902 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3913), // Rule ID 262 //
5767 /* 3907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
5768 /* 3910 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_OR'
5769 /* 3910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5770 /* 3913 */ // Label 218: @3913
5771 /* 3913 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3924), // Rule ID 320 //
5772 /* 3918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
5773 /* 3921 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_OR'
5774 /* 3921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5775 /* 3924 */ // Label 219: @3924
5776 /* 3924 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3935), // Rule ID 356 //
5777 /* 3929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
5778 /* 3932 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5779 /* 3932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5780 /* 3935 */ // Label 220: @3935
5781 /* 3935 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3946), // Rule ID 383 //
5782 /* 3940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
5783 /* 3943 */ // Combiner Rule #219: match_ors; wip_match_opcode 'G_OR'
5784 /* 3943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5785 /* 3946 */ // Label 221: @3946
5786 /* 3946 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3957), // Rule ID 422 //
5787 /* 3951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
5788 /* 3954 */ // Combiner Rule #254: binop_with_neg; wip_match_opcode 'G_OR'
5789 /* 3954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
5790 /* 3957 */ // Label 222: @3957
5791 /* 3957 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4043), // Rule ID 385 //
5792 /* 3962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5793 /* 3965 */ // MIs[0] root
5794 /* 3965 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5795 /* 3969 */ // MIs[0] and
5796 /* 3969 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5797 /* 3973 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5798 /* 3977 */ // MIs[1] x
5799 /* 3977 */ // No operand predicates
5800 /* 3977 */ // MIs[1] y
5801 /* 3977 */ // No operand predicates
5802 /* 3977 */ // MIs[0] not
5803 /* 3977 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5804 /* 3981 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5805 /* 3985 */ // MIs[2] y
5806 /* 3985 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5807 /* 3990 */ // MIs[2] Operand 2
5808 /* 3990 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5809 /* 3994 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5810 /* 3996 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5811 /* 3999 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5812 /* 4009 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5813 /* 4012 */ // Combiner Rule #221: or_and_xor_to_xor_or
5814 /* 4012 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5815 /* 4015 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5816 /* 4020 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
5817 /* 4024 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5818 /* 4027 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5819 /* 4031 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5820 /* 4035 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5821 /* 4039 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5822 /* 4042 */ GIR_EraseRootFromParent_Done,
5823 /* 4043 */ // Label 223: @4043
5824 /* 4043 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4090), // Rule ID 243 //
5825 /* 4048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5826 /* 4051 */ // MIs[0] root
5827 /* 4051 */ // No operand predicates
5828 /* 4051 */ // MIs[0] out1
5829 /* 4051 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5830 /* 4055 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5831 /* 4059 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5832 /* 4059 */ // No operand predicates
5833 /* 4059 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5834 /* 4059 */ // No operand predicates
5835 /* 4059 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5836 /* 4059 */ // No operand predicates
5837 /* 4059 */ // MIs[0] out2
5838 /* 4059 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5839 /* 4063 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5840 /* 4067 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5841 /* 4067 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5842 /* 4072 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5843 /* 4072 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5844 /* 4077 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5845 /* 4082 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5846 /* 4084 */ // Combiner Rule #178: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5847 /* 4084 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5848 /* 4089 */ GIR_EraseRootFromParent_Done,
5849 /* 4090 */ // Label 224: @4090
5850 /* 4090 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4137), // Rule ID 245 //
5851 /* 4095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5852 /* 4098 */ // MIs[0] root
5853 /* 4098 */ // No operand predicates
5854 /* 4098 */ // MIs[0] out1
5855 /* 4098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5856 /* 4102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5857 /* 4106 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5858 /* 4106 */ // No operand predicates
5859 /* 4106 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5860 /* 4106 */ // No operand predicates
5861 /* 4106 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5862 /* 4106 */ // No operand predicates
5863 /* 4106 */ // MIs[0] out2
5864 /* 4106 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5865 /* 4110 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5866 /* 4114 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5867 /* 4114 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5868 /* 4119 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5869 /* 4119 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5870 /* 4124 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5871 /* 4129 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5872 /* 4131 */ // Combiner Rule #179: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5873 /* 4131 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5874 /* 4136 */ GIR_EraseRootFromParent_Done,
5875 /* 4137 */ // Label 225: @4137
5876 /* 4137 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4235), // Rule ID 167 //
5877 /* 4142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
5878 /* 4145 */ // MIs[0] root
5879 /* 4145 */ // No operand predicates
5880 /* 4145 */ // MIs[0] d1
5881 /* 4145 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5882 /* 4149 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5883 /* 4153 */ // MIs[1] p
5884 /* 4153 */ // No operand predicates
5885 /* 4153 */ // MIs[1] s1
5886 /* 4153 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5887 /* 4157 */ // MIs[1] Operand 3
5888 /* 4157 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5889 /* 4161 */ // MIs[0] d2
5890 /* 4161 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5891 /* 4165 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5892 /* 4169 */ // MIs[2] p
5893 /* 4169 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5894 /* 4174 */ // MIs[2] s2
5895 /* 4174 */ // No operand predicates
5896 /* 4174 */ // MIs[2] Operand 3
5897 /* 4174 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5898 /* 4178 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
5899 /* 4182 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5900 /* 4184 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5901 /* 4187 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5902 /* 4197 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5903 /* 4200 */ // Combiner Rule #123: double_icmp_zero_or_combine
5904 /* 4200 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5905 /* 4203 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5906 /* 4208 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5907 /* 4212 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5908 /* 4216 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5909 /* 4220 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5910 /* 4224 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5911 /* 4228 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5912 /* 4231 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5913 /* 4234 */ GIR_EraseRootFromParent_Done,
5914 /* 4235 */ // Label 226: @4235
5915 /* 4235 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4284), // Rule ID 384 //
5916 /* 4240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5917 /* 4243 */ // MIs[0] root
5918 /* 4243 */ // No operand predicates
5919 /* 4243 */ // MIs[0] and
5920 /* 4243 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5921 /* 4247 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5922 /* 4251 */ // MIs[1] x
5923 /* 4251 */ // No operand predicates
5924 /* 4251 */ // MIs[1] not
5925 /* 4251 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5926 /* 4255 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
5927 /* 4259 */ // MIs[2] y
5928 /* 4259 */ // No operand predicates
5929 /* 4259 */ // MIs[2] Operand 2
5930 /* 4259 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
5931 /* 4263 */ // MIs[0] y
5932 /* 4263 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5933 /* 4268 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5934 /* 4270 */ // Combiner Rule #220: or_and_xor_to_or
5935 /* 4270 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5936 /* 4273 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5937 /* 4275 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5938 /* 4279 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
5939 /* 4283 */ GIR_EraseRootFromParent_Done,
5940 /* 4284 */ // Label 227: @4284
5941 /* 4284 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4318), // Rule ID 432 //
5942 /* 4289 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
5943 /* 4292 */ // MIs[0] dst
5944 /* 4292 */ // No operand predicates
5945 /* 4292 */ // MIs[0] __combine_or_of_and_match_0.and
5946 /* 4292 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5947 /* 4296 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5948 /* 4300 */ // MIs[1] x
5949 /* 4300 */ // No operand predicates
5950 /* 4300 */ // MIs[1] y
5951 /* 4300 */ // No operand predicates
5952 /* 4300 */ // MIs[0] x
5953 /* 4300 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5954 /* 4305 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5955 /* 4310 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5956 /* 4312 */ // Combiner Rule #263: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
5957 /* 4312 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5958 /* 4317 */ GIR_EraseRootFromParent_Done,
5959 /* 4318 */ // Label 228: @4318
5960 /* 4318 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4352), // Rule ID 433 //
5961 /* 4323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
5962 /* 4326 */ // MIs[0] dst
5963 /* 4326 */ // No operand predicates
5964 /* 4326 */ // MIs[0] __combine_or_of_and_match_0.and
5965 /* 4326 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5966 /* 4330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5967 /* 4334 */ // MIs[1] y
5968 /* 4334 */ // No operand predicates
5969 /* 4334 */ // MIs[1] x
5970 /* 4334 */ // No operand predicates
5971 /* 4334 */ // MIs[0] x
5972 /* 4334 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
5973 /* 4339 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5974 /* 4344 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5975 /* 4346 */ // Combiner Rule #263: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
5976 /* 4346 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5977 /* 4351 */ GIR_EraseRootFromParent_Done,
5978 /* 4352 */ // Label 229: @4352
5979 /* 4352 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4399), // Rule ID 246 //
5980 /* 4357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
5981 /* 4360 */ // MIs[0] root
5982 /* 4360 */ // No operand predicates
5983 /* 4360 */ // MIs[0] out2
5984 /* 4360 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5985 /* 4364 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5986 /* 4368 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5987 /* 4368 */ // No operand predicates
5988 /* 4368 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5989 /* 4368 */ // No operand predicates
5990 /* 4368 */ // MIs[0] out1
5991 /* 4368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5992 /* 4372 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5993 /* 4376 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5994 /* 4376 */ // No operand predicates
5995 /* 4376 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5996 /* 4376 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5997 /* 4381 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5998 /* 4381 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5999 /* 4386 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6000 /* 4391 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6001 /* 4393 */ // Combiner Rule #179: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6002 /* 4393 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6003 /* 4398 */ GIR_EraseRootFromParent_Done,
6004 /* 4399 */ // Label 230: @4399
6005 /* 4399 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4446), // Rule ID 244 //
6006 /* 4404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6007 /* 4407 */ // MIs[0] root
6008 /* 4407 */ // No operand predicates
6009 /* 4407 */ // MIs[0] out2
6010 /* 4407 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6011 /* 4411 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6012 /* 4415 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6013 /* 4415 */ // No operand predicates
6014 /* 4415 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6015 /* 4415 */ // No operand predicates
6016 /* 4415 */ // MIs[0] out1
6017 /* 4415 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6018 /* 4419 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6019 /* 4423 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6020 /* 4423 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6021 /* 4428 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6022 /* 4428 */ // No operand predicates
6023 /* 4428 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6024 /* 4428 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6025 /* 4433 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6026 /* 4438 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6027 /* 4440 */ // Combiner Rule #178: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6028 /* 4440 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6029 /* 4445 */ GIR_EraseRootFromParent_Done,
6030 /* 4446 */ // Label 231: @4446
6031 /* 4446 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4470), // Rule ID 121 //
6032 /* 4451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6033 /* 4454 */ // MIs[0] dst
6034 /* 4454 */ // No operand predicates
6035 /* 4454 */ // MIs[0] src
6036 /* 4454 */ // No operand predicates
6037 /* 4454 */ // MIs[0] src
6038 /* 4454 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6039 /* 4459 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6040 /* 4464 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
6041 /* 4464 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6042 /* 4469 */ GIR_EraseRootFromParent_Done,
6043 /* 4470 */ // Label 232: @4470
6044 /* 4470 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4504), // Rule ID 434 //
6045 /* 4475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
6046 /* 4478 */ // MIs[0] dst
6047 /* 4478 */ // No operand predicates
6048 /* 4478 */ // MIs[0] x
6049 /* 4478 */ // No operand predicates
6050 /* 4478 */ // MIs[0] __combine_or_of_and_match_0.and
6051 /* 4478 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6052 /* 4482 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6053 /* 4486 */ // MIs[1] x
6054 /* 4486 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
6055 /* 4491 */ // MIs[1] y
6056 /* 4491 */ // No operand predicates
6057 /* 4491 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6058 /* 4496 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6059 /* 4498 */ // Combiner Rule #263: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
6060 /* 4498 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6061 /* 4503 */ GIR_EraseRootFromParent_Done,
6062 /* 4504 */ // Label 233: @4504
6063 /* 4504 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4538), // Rule ID 435 //
6064 /* 4509 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
6065 /* 4512 */ // MIs[0] dst
6066 /* 4512 */ // No operand predicates
6067 /* 4512 */ // MIs[0] x
6068 /* 4512 */ // No operand predicates
6069 /* 4512 */ // MIs[0] __combine_or_of_and_match_0.and
6070 /* 4512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6071 /* 4516 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6072 /* 4520 */ // MIs[1] y
6073 /* 4520 */ // No operand predicates
6074 /* 4520 */ // MIs[1] x
6075 /* 4520 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6076 /* 4525 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6077 /* 4530 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6078 /* 4532 */ // Combiner Rule #263: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
6079 /* 4532 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6080 /* 4537 */ GIR_EraseRootFromParent_Done,
6081 /* 4538 */ // Label 234: @4538
6082 /* 4538 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4561), // Rule ID 112 //
6083 /* 4543 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6084 /* 4546 */ // MIs[0] dst
6085 /* 4546 */ // No operand predicates
6086 /* 4546 */ // MIs[0] lhs
6087 /* 4546 */ // No operand predicates
6088 /* 4546 */ // MIs[0] Operand 2
6089 /* 4546 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6090 /* 4550 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6091 /* 4555 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
6092 /* 4555 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6093 /* 4560 */ GIR_EraseRootFromParent_Done,
6094 /* 4561 */ // Label 235: @4561
6095 /* 4561 */ GIM_Reject,
6096 /* 4562 */ // Label 10: @4562
6097 /* 4562 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4573), // Rule ID 102 //
6098 /* 4567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
6099 /* 4570 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_XOR'
6100 /* 4570 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
6101 /* 4573 */ // Label 236: @4573
6102 /* 4573 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4584), // Rule ID 155 //
6103 /* 4578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6104 /* 4581 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
6105 /* 4581 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
6106 /* 4584 */ // Label 237: @4584
6107 /* 4584 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4595), // Rule ID 187 //
6108 /* 4589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
6109 /* 4592 */ // Combiner Rule #143: not_cmp_fold; wip_match_opcode 'G_XOR'
6110 /* 4592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
6111 /* 4595 */ // Label 238: @4595
6112 /* 4595 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4606), // Rule ID 219 //
6113 /* 4600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6114 /* 4603 */ // Combiner Rule #167: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
6115 /* 4603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
6116 /* 4606 */ // Label 239: @4606
6117 /* 4606 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4617), // Rule ID 265 //
6118 /* 4611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6119 /* 4614 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_XOR'
6120 /* 4614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6121 /* 4617 */ // Label 240: @4617
6122 /* 4617 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4628), // Rule ID 321 //
6123 /* 4622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
6124 /* 4625 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_XOR'
6125 /* 4625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
6126 /* 4628 */ // Label 241: @4628
6127 /* 4628 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4639), // Rule ID 357 //
6128 /* 4633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
6129 /* 4636 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
6130 /* 4636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
6131 /* 4639 */ // Label 242: @4639
6132 /* 4639 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4650), // Rule ID 423 //
6133 /* 4644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
6134 /* 4647 */ // Combiner Rule #254: binop_with_neg; wip_match_opcode 'G_XOR'
6135 /* 4647 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
6136 /* 4650 */ // Label 243: @4650
6137 /* 4650 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4710), // Rule ID 13 //
6138 /* 4655 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6139 /* 4658 */ // MIs[0] root
6140 /* 4658 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6141 /* 4662 */ // MIs[0] add
6142 /* 4662 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6143 /* 4666 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6144 /* 4670 */ // MIs[1] A
6145 /* 4670 */ // No operand predicates
6146 /* 4670 */ // MIs[1] Operand 2
6147 /* 4670 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
6148 /* 4674 */ // MIs[0] Operand 2
6149 /* 4674 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6150 /* 4678 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
6151 /* 4682 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6152 /* 4684 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6153 /* 4687 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6154 /* 4697 */ // Combiner Rule #13: NotAPlusNegOne
6155 /* 4697 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6156 /* 4700 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6157 /* 4702 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6158 /* 4705 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
6159 /* 4709 */ GIR_EraseRootFromParent_Done,
6160 /* 4710 */ // Label 244: @4710
6161 /* 4710 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4749), // Rule ID 123 //
6162 /* 4715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
6163 /* 4718 */ // MIs[0] dst
6164 /* 4718 */ // No operand predicates
6165 /* 4718 */ // MIs[0] x
6166 /* 4718 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
6167 /* 4722 */ // MIs[0] x
6168 /* 4722 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6169 /* 4727 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6170 /* 4730 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6171 /* 4740 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
6172 /* 4740 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6173 /* 4743 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6174 /* 4745 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6175 /* 4748 */ GIR_EraseRootFromParent_Done,
6176 /* 4749 */ // Label 245: @4749
6177 /* 4749 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4772), // Rule ID 113 //
6178 /* 4754 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6179 /* 4757 */ // MIs[0] dst
6180 /* 4757 */ // No operand predicates
6181 /* 4757 */ // MIs[0] lhs
6182 /* 4757 */ // No operand predicates
6183 /* 4757 */ // MIs[0] Operand 2
6184 /* 4757 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6185 /* 4761 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6186 /* 4766 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
6187 /* 4766 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6188 /* 4771 */ GIR_EraseRootFromParent_Done,
6189 /* 4772 */ // Label 246: @4772
6190 /* 4772 */ GIM_Reject,
6191 /* 4773 */ // Label 11: @4773
6192 /* 4773 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4784), // Rule ID 151 //
6193 /* 4778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
6194 /* 4781 */ // Combiner Rule #111: extend_through_phis; wip_match_opcode 'G_PHI'
6195 /* 4781 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
6196 /* 4784 */ // Label 247: @4784
6197 /* 4784 */ GIM_Reject,
6198 /* 4785 */ // Label 12: @4785
6199 /* 4785 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4796), // Rule ID 397 //
6200 /* 4790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6201 /* 4793 */ // Combiner Rule #233: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
6202 /* 4793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
6203 /* 4796 */ // Label 248: @4796
6204 /* 4796 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4807), // Rule ID 398 //
6205 /* 4801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6206 /* 4804 */ // Combiner Rule #234: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
6207 /* 4804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
6208 /* 4807 */ // Label 249: @4807
6209 /* 4807 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4818), // Rule ID 400 //
6210 /* 4812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6211 /* 4815 */ // Combiner Rule #236: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
6212 /* 4815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
6213 /* 4818 */ // Label 250: @4818
6214 /* 4818 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4829), // Rule ID 401 //
6215 /* 4823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6216 /* 4826 */ // Combiner Rule #237: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
6217 /* 4826 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
6218 /* 4829 */ // Label 251: @4829
6219 /* 4829 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4840), // Rule ID 402 //
6220 /* 4834 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6221 /* 4837 */ // Combiner Rule #238: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
6222 /* 4837 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
6223 /* 4840 */ // Label 252: @4840
6224 /* 4840 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4851), // Rule ID 403 //
6225 /* 4845 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6226 /* 4848 */ // Combiner Rule #239: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
6227 /* 4848 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6228 /* 4851 */ // Label 253: @4851
6229 /* 4851 */ GIM_Reject,
6230 /* 4852 */ // Label 13: @4852
6231 /* 4852 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4866), // Rule ID 399 //
6232 /* 4857 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6233 /* 4860 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6234 /* 4863 */ // MIs[0] dst
6235 /* 4863 */ // No operand predicates
6236 /* 4863 */ // MIs[0] merge_srcs
6237 /* 4863 */ // No operand predicates
6238 /* 4863 */ // Combiner Rule #235: merge_unmerge
6239 /* 4863 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
6240 /* 4866 */ // Label 254: @4866
6241 /* 4866 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4928),
6242 /* 4871 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
6243 /* 4874 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4895), // Rule ID 404 //
6244 /* 4879 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6245 /* 4882 */ // MIs[0] root
6246 /* 4882 */ // No operand predicates
6247 /* 4882 */ // MIs[0] x
6248 /* 4882 */ // No operand predicates
6249 /* 4882 */ // MIs[0] undef
6250 /* 4882 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6251 /* 4886 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6252 /* 4890 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6253 /* 4892 */ // Combiner Rule #240: merge_of_x_and_undef
6254 /* 4892 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
6255 /* 4895 */ // Label 256: @4895
6256 /* 4895 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4927), // Rule ID 405 //
6257 /* 4900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
6258 /* 4903 */ // MIs[0] root
6259 /* 4903 */ // No operand predicates
6260 /* 4903 */ // MIs[0] x
6261 /* 4903 */ // No operand predicates
6262 /* 4903 */ // MIs[0] zero
6263 /* 4903 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6264 /* 4907 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6265 /* 4911 */ // MIs[1] Operand 1
6266 /* 4911 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6267 /* 4922 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6268 /* 4924 */ // Combiner Rule #241: merge_of_x_and_zero
6269 /* 4924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6270 /* 4927 */ // Label 257: @4927
6271 /* 4927 */ GIM_Reject,
6272 /* 4928 */ // Label 255: @4928
6273 /* 4928 */ GIM_Reject,
6274 /* 4929 */ // Label 14: @4929
6275 /* 4929 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4940), // Rule ID 75 //
6276 /* 4934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
6277 /* 4937 */ // Combiner Rule #73: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
6278 /* 4937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
6279 /* 4940 */ // Label 258: @4940
6280 /* 4940 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4951), // Rule ID 104 //
6281 /* 4945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
6282 /* 4948 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
6283 /* 4948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
6284 /* 4951 */ // Label 259: @4951
6285 /* 4951 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4962), // Rule ID 142 //
6286 /* 4956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6287 /* 4959 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
6288 /* 4959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6289 /* 4962 */ // Label 260: @4962
6290 /* 4962 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4993),
6291 /* 4967 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6292 /* 4970 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4981), // Rule ID 396 //
6293 /* 4975 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6294 /* 4978 */ // MIs[0] dst
6295 /* 4978 */ // No operand predicates
6296 /* 4978 */ // MIs[0] unused
6297 /* 4978 */ // No operand predicates
6298 /* 4978 */ // Combiner Rule #232: combine_use_vector_truncate
6299 /* 4978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
6300 /* 4981 */ // Label 262: @4981
6301 /* 4981 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4992), // Rule ID 406 //
6302 /* 4986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
6303 /* 4989 */ // MIs[0] dst
6304 /* 4989 */ // No operand predicates
6305 /* 4989 */ // MIs[0] unused
6306 /* 4989 */ // No operand predicates
6307 /* 4989 */ // Combiner Rule #242: combine_build_unmerge
6308 /* 4989 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6309 /* 4992 */ // Label 263: @4992
6310 /* 4992 */ GIM_Reject,
6311 /* 4993 */ // Label 261: @4993
6312 /* 4993 */ GIM_Reject,
6313 /* 4994 */ // Label 15: @4994
6314 /* 4994 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5005), // Rule ID 141 //
6315 /* 4999 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
6316 /* 5002 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
6317 /* 5002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
6318 /* 5005 */ // Label 264: @5005
6319 /* 5005 */ GIM_Reject,
6320 /* 5006 */ // Label 16: @5006
6321 /* 5006 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5017), // Rule ID 389 //
6322 /* 5011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
6323 /* 5014 */ // Combiner Rule #225: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
6324 /* 5014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6325 /* 5017 */ // Label 265: @5017
6326 /* 5017 */ GIM_Reject,
6327 /* 5018 */ // Label 17: @5018
6328 /* 5018 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5039), // Rule ID 134 //
6329 /* 5023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
6330 /* 5026 */ // MIs[0] dst
6331 /* 5026 */ // No operand predicates
6332 /* 5026 */ // MIs[0] t
6333 /* 5026 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6334 /* 5030 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
6335 /* 5034 */ // MIs[1] ptr
6336 /* 5034 */ // No operand predicates
6337 /* 5034 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6338 /* 5036 */ // Combiner Rule #96: i2p_to_p2i
6339 /* 5036 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6340 /* 5039 */ // Label 266: @5039
6341 /* 5039 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5060), // Rule ID 96 //
6342 /* 5044 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6343 /* 5047 */ // MIs[0] dst
6344 /* 5047 */ // No operand predicates
6345 /* 5047 */ // MIs[0] __unary_undef_to_undef_match_0.x
6346 /* 5047 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6347 /* 5051 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6348 /* 5055 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6349 /* 5057 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
6350 /* 5057 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6351 /* 5060 */ // Label 267: @5060
6352 /* 5060 */ GIM_Reject,
6353 /* 5061 */ // Label 18: @5061
6354 /* 5061 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5072), // Rule ID 133 //
6355 /* 5066 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
6356 /* 5069 */ // Combiner Rule #95: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
6357 /* 5069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
6358 /* 5072 */ // Label 268: @5072
6359 /* 5072 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5093), // Rule ID 97 //
6360 /* 5077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6361 /* 5080 */ // MIs[0] dst
6362 /* 5080 */ // No operand predicates
6363 /* 5080 */ // MIs[0] __unary_undef_to_undef_match_0.x
6364 /* 5080 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6365 /* 5084 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6366 /* 5088 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6367 /* 5090 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
6368 /* 5090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6369 /* 5093 */ // Label 269: @5093
6370 /* 5093 */ GIM_Reject,
6371 /* 5094 */ // Label 19: @5094
6372 /* 5094 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5126), // Rule ID 146 //
6373 /* 5099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
6374 /* 5102 */ // MIs[0] dst
6375 /* 5102 */ // No operand predicates
6376 /* 5102 */ // MIs[0] src1
6377 /* 5102 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6378 /* 5106 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6379 /* 5110 */ // MIs[1] src0
6380 /* 5110 */ // No operand predicates
6381 /* 5110 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6382 /* 5114 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6383 /* 5116 */ // Combiner Rule #106: bitcast_bitcast_to_bitcast
6384 /* 5116 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
6385 /* 5119 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6386 /* 5121 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
6387 /* 5125 */ GIR_EraseRootFromParent_Done,
6388 /* 5126 */ // Label 270: @5126
6389 /* 5126 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5147), // Rule ID 145 //
6390 /* 5131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
6391 /* 5134 */ // MIs[0] dst
6392 /* 5134 */ // No operand predicates
6393 /* 5134 */ // MIs[0] src1
6394 /* 5134 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6395 /* 5138 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
6396 /* 5142 */ // MIs[1] src0
6397 /* 5142 */ // No operand predicates
6398 /* 5142 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6399 /* 5144 */ // Combiner Rule #105: bitcast_bitcast_fold
6400 /* 5144 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
6401 /* 5147 */ // Label 271: @5147
6402 /* 5147 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5168), // Rule ID 94 //
6403 /* 5152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6404 /* 5155 */ // MIs[0] dst
6405 /* 5155 */ // No operand predicates
6406 /* 5155 */ // MIs[0] __unary_undef_to_undef_match_0.x
6407 /* 5155 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6408 /* 5159 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6409 /* 5163 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6410 /* 5165 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
6411 /* 5165 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6412 /* 5168 */ // Label 272: @5168
6413 /* 5168 */ GIM_Reject,
6414 /* 5169 */ // Label 20: @5169
6415 /* 5169 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5198), // Rule ID 24 //
6416 /* 5174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
6417 /* 5177 */ // MIs[0] dst
6418 /* 5177 */ // No operand predicates
6419 /* 5177 */ // MIs[0] src
6420 /* 5177 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6421 /* 5181 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
6422 /* 5185 */ // MIs[1] __idempotent_prop_match_0.x
6423 /* 5185 */ // No operand predicates
6424 /* 5185 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6425 /* 5190 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6426 /* 5192 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
6427 /* 5192 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6428 /* 5197 */ GIR_EraseRootFromParent_Done,
6429 /* 5198 */ // Label 273: @5198
6430 /* 5198 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5221), // Rule ID 49 //
6431 /* 5203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6432 /* 5206 */ // MIs[0] root
6433 /* 5206 */ // No operand predicates
6434 /* 5206 */ // MIs[0] src
6435 /* 5206 */ // No operand predicates
6436 /* 5206 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
6437 /* 5210 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6438 /* 5215 */ // Combiner Rule #47: freeze_of_non_undef_non_poison
6439 /* 5215 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6440 /* 5220 */ GIR_EraseRootFromParent_Done,
6441 /* 5221 */ // Label 274: @5221
6442 /* 5221 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5232), // Rule ID 50 //
6443 /* 5226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6444 /* 5229 */ // MIs[0] dst
6445 /* 5229 */ // No operand predicates
6446 /* 5229 */ // MIs[0] src
6447 /* 5229 */ // No operand predicates
6448 /* 5229 */ // Combiner Rule #48: push_freeze_to_prevent_poison_from_propagating
6449 /* 5229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
6450 /* 5232 */ // Label 275: @5232
6451 /* 5232 */ GIM_Reject,
6452 /* 5233 */ // Label 21: @5233
6453 /* 5233 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5254), // Rule ID 197 //
6454 /* 5238 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
6455 /* 5241 */ // MIs[0] dst
6456 /* 5241 */ // No operand predicates
6457 /* 5241 */ // MIs[0] src0
6458 /* 5241 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6459 /* 5245 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6460 /* 5249 */ // MIs[1] cst
6461 /* 5249 */ // No operand predicates
6462 /* 5249 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6463 /* 5251 */ // Combiner Rule #153: constant_fold_intrinsic_trunc
6464 /* 5251 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6465 /* 5254 */ // Label 276: @5254
6466 /* 5254 */ GIM_Reject,
6467 /* 5255 */ // Label 22: @5255
6468 /* 5255 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5276), // Rule ID 198 //
6469 /* 5260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
6470 /* 5263 */ // MIs[0] dst
6471 /* 5263 */ // No operand predicates
6472 /* 5263 */ // MIs[0] src0
6473 /* 5263 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6474 /* 5267 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6475 /* 5271 */ // MIs[1] cst
6476 /* 5271 */ // No operand predicates
6477 /* 5271 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6478 /* 5273 */ // Combiner Rule #154: constant_fold_intrinsic_round
6479 /* 5273 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6480 /* 5276 */ // Label 277: @5276
6481 /* 5276 */ GIM_Reject,
6482 /* 5277 */ // Label 23: @5277
6483 /* 5277 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5298), // Rule ID 199 //
6484 /* 5282 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
6485 /* 5285 */ // MIs[0] dst
6486 /* 5285 */ // No operand predicates
6487 /* 5285 */ // MIs[0] src0
6488 /* 5285 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6489 /* 5289 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6490 /* 5293 */ // MIs[1] cst
6491 /* 5293 */ // No operand predicates
6492 /* 5293 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6493 /* 5295 */ // Combiner Rule #155: constant_fold_intrinsic_roundeven
6494 /* 5295 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6495 /* 5298 */ // Label 278: @5298
6496 /* 5298 */ GIM_Reject,
6497 /* 5299 */ // Label 24: @5299
6498 /* 5299 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5310), // Rule ID 76 //
6499 /* 5304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6500 /* 5307 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_LOAD'
6501 /* 5307 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6502 /* 5310 */ // Label 279: @5310
6503 /* 5310 */ GIM_Reject,
6504 /* 5311 */ // Label 25: @5311
6505 /* 5311 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5322), // Rule ID 77 //
6506 /* 5316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6507 /* 5319 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_SEXTLOAD'
6508 /* 5319 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6509 /* 5322 */ // Label 280: @5322
6510 /* 5322 */ GIM_Reject,
6511 /* 5323 */ // Label 26: @5323
6512 /* 5323 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5334), // Rule ID 78 //
6513 /* 5328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6514 /* 5331 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
6515 /* 5331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6516 /* 5334 */ // Label 281: @5334
6517 /* 5334 */ GIM_Reject,
6518 /* 5335 */ // Label 27: @5335
6519 /* 5335 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5346), // Rule ID 106 //
6520 /* 5340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6521 /* 5343 */ // Combiner Rule #87: erase_undef_store; wip_match_opcode 'G_STORE'
6522 /* 5343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
6523 /* 5346 */ // Label 282: @5346
6524 /* 5346 */ GIM_Reject,
6525 /* 5347 */ // Label 28: @5347
6526 /* 5347 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5358), // Rule ID 135 //
6527 /* 5352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
6528 /* 5355 */ // Combiner Rule #97: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
6529 /* 5355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
6530 /* 5358 */ // Label 283: @5358
6531 /* 5358 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5369), // Rule ID 290 //
6532 /* 5363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
6533 /* 5366 */ // Combiner Rule #190: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
6534 /* 5366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6535 /* 5369 */ // Label 284: @5369
6536 /* 5369 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5390), // Rule ID 63 //
6537 /* 5374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6538 /* 5377 */ // MIs[0] root
6539 /* 5377 */ // No operand predicates
6540 /* 5377 */ // MIs[0] select
6541 /* 5377 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6542 /* 5381 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6543 /* 5385 */ // MIs[1] cond
6544 /* 5385 */ // No operand predicates
6545 /* 5385 */ // MIs[1] true
6546 /* 5385 */ // No operand predicates
6547 /* 5385 */ // MIs[1] false
6548 /* 5385 */ // No operand predicates
6549 /* 5385 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6550 /* 5387 */ // Combiner Rule #61: select_of_anyext
6551 /* 5387 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6552 /* 5390 */ // Label 285: @5390
6553 /* 5390 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5411), // Rule ID 58 //
6554 /* 5395 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6555 /* 5398 */ // MIs[0] root
6556 /* 5398 */ // No operand predicates
6557 /* 5398 */ // MIs[0] second
6558 /* 5398 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6559 /* 5402 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6560 /* 5406 */ // MIs[1] src
6561 /* 5406 */ // No operand predicates
6562 /* 5406 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6563 /* 5408 */ // Combiner Rule #56: anyext_of_anyext
6564 /* 5408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6565 /* 5411 */ // Label 286: @5411
6566 /* 5411 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5432), // Rule ID 60 //
6567 /* 5416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
6568 /* 5419 */ // MIs[0] root
6569 /* 5419 */ // No operand predicates
6570 /* 5419 */ // MIs[0] second
6571 /* 5419 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6572 /* 5423 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6573 /* 5427 */ // MIs[1] src
6574 /* 5427 */ // No operand predicates
6575 /* 5427 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6576 /* 5429 */ // Combiner Rule #58: anyext_of_sext
6577 /* 5429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6578 /* 5432 */ // Label 287: @5432
6579 /* 5432 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5453), // Rule ID 59 //
6580 /* 5437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6581 /* 5440 */ // MIs[0] root
6582 /* 5440 */ // No operand predicates
6583 /* 5440 */ // MIs[0] second
6584 /* 5440 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6585 /* 5444 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6586 /* 5448 */ // MIs[1] src
6587 /* 5448 */ // No operand predicates
6588 /* 5448 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6589 /* 5450 */ // Combiner Rule #57: anyext_of_zext
6590 /* 5450 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6591 /* 5453 */ // Label 288: @5453
6592 /* 5453 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5474), // Rule ID 95 //
6593 /* 5458 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6594 /* 5461 */ // MIs[0] dst
6595 /* 5461 */ // No operand predicates
6596 /* 5461 */ // MIs[0] __unary_undef_to_undef_match_0.x
6597 /* 5461 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6598 /* 5465 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6599 /* 5469 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6600 /* 5471 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
6601 /* 5471 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6602 /* 5474 */ // Label 289: @5474
6603 /* 5474 */ GIM_Reject,
6604 /* 5475 */ // Label 29: @5475
6605 /* 5475 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5486), // Rule ID 143 //
6606 /* 5480 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
6607 /* 5483 */ // Combiner Rule #103: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
6608 /* 5483 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
6609 /* 5486 */ // Label 290: @5486
6610 /* 5486 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5497), // Rule ID 144 //
6611 /* 5491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
6612 /* 5494 */ // Combiner Rule #104: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
6613 /* 5494 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
6614 /* 5497 */ // Label 291: @5497
6615 /* 5497 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5508), // Rule ID 186 //
6616 /* 5502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
6617 /* 5505 */ // Combiner Rule #142: trunc_shift; wip_match_opcode 'G_TRUNC'
6618 /* 5505 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
6619 /* 5508 */ // Label 292: @5508
6620 /* 5508 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5529), // Rule ID 64 //
6621 /* 5513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
6622 /* 5516 */ // MIs[0] root
6623 /* 5516 */ // No operand predicates
6624 /* 5516 */ // MIs[0] select
6625 /* 5516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6626 /* 5520 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6627 /* 5524 */ // MIs[1] cond
6628 /* 5524 */ // No operand predicates
6629 /* 5524 */ // MIs[1] true
6630 /* 5524 */ // No operand predicates
6631 /* 5524 */ // MIs[1] false
6632 /* 5524 */ // No operand predicates
6633 /* 5524 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6634 /* 5526 */ // Combiner Rule #62: select_of_truncate
6635 /* 5526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6636 /* 5529 */ // Label 293: @5529
6637 /* 5529 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5558), // Rule ID 66 //
6638 /* 5534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6639 /* 5537 */ // MIs[0] root
6640 /* 5537 */ // No operand predicates
6641 /* 5537 */ // MIs[0] binop
6642 /* 5537 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6643 /* 5541 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6644 /* 5545 */ // MIs[1] x
6645 /* 5545 */ // No operand predicates
6646 /* 5545 */ // MIs[1] const
6647 /* 5545 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6648 /* 5549 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6649 /* 5553 */ // MIs[2] imm
6650 /* 5553 */ // No operand predicates
6651 /* 5553 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6652 /* 5555 */ // Combiner Rule #64: narrow_binop_add
6653 /* 5555 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6654 /* 5558 */ // Label 294: @5558
6655 /* 5558 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5587), // Rule ID 69 //
6656 /* 5563 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6657 /* 5566 */ // MIs[0] root
6658 /* 5566 */ // No operand predicates
6659 /* 5566 */ // MIs[0] binop
6660 /* 5566 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6661 /* 5570 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6662 /* 5574 */ // MIs[1] x
6663 /* 5574 */ // No operand predicates
6664 /* 5574 */ // MIs[1] const
6665 /* 5574 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6666 /* 5578 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6667 /* 5582 */ // MIs[2] imm
6668 /* 5582 */ // No operand predicates
6669 /* 5582 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6670 /* 5584 */ // Combiner Rule #67: narrow_binop_and
6671 /* 5584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6672 /* 5587 */ // Label 295: @5587
6673 /* 5587 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5616), // Rule ID 68 //
6674 /* 5592 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6675 /* 5595 */ // MIs[0] root
6676 /* 5595 */ // No operand predicates
6677 /* 5595 */ // MIs[0] binop
6678 /* 5595 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6679 /* 5599 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
6680 /* 5603 */ // MIs[1] x
6681 /* 5603 */ // No operand predicates
6682 /* 5603 */ // MIs[1] const
6683 /* 5603 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6684 /* 5607 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6685 /* 5611 */ // MIs[2] imm
6686 /* 5611 */ // No operand predicates
6687 /* 5611 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6688 /* 5613 */ // Combiner Rule #66: narrow_binop_mul
6689 /* 5613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6690 /* 5616 */ // Label 296: @5616
6691 /* 5616 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5645), // Rule ID 70 //
6692 /* 5621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
6693 /* 5624 */ // MIs[0] root
6694 /* 5624 */ // No operand predicates
6695 /* 5624 */ // MIs[0] binop
6696 /* 5624 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6697 /* 5628 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6698 /* 5632 */ // MIs[1] x
6699 /* 5632 */ // No operand predicates
6700 /* 5632 */ // MIs[1] const
6701 /* 5632 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6702 /* 5636 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6703 /* 5640 */ // MIs[2] imm
6704 /* 5640 */ // No operand predicates
6705 /* 5640 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6706 /* 5642 */ // Combiner Rule #68: narrow_binop_or
6707 /* 5642 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6708 /* 5645 */ // Label 297: @5645
6709 /* 5645 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5674), // Rule ID 67 //
6710 /* 5650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6711 /* 5653 */ // MIs[0] root
6712 /* 5653 */ // No operand predicates
6713 /* 5653 */ // MIs[0] binop
6714 /* 5653 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6715 /* 5657 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6716 /* 5661 */ // MIs[1] x
6717 /* 5661 */ // No operand predicates
6718 /* 5661 */ // MIs[1] const
6719 /* 5661 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6720 /* 5665 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6721 /* 5669 */ // MIs[2] imm
6722 /* 5669 */ // No operand predicates
6723 /* 5669 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6724 /* 5671 */ // Combiner Rule #65: narrow_binop_sub
6725 /* 5671 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6726 /* 5674 */ // Label 298: @5674
6727 /* 5674 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5706), // Rule ID 413 //
6728 /* 5679 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
6729 /* 5682 */ // MIs[0] dst
6730 /* 5682 */ // No operand predicates
6731 /* 5682 */ // MIs[0] min
6732 /* 5682 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6733 /* 5686 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6734 /* 5690 */ // MIs[1] x
6735 /* 5690 */ // No operand predicates
6736 /* 5690 */ // MIs[1] y
6737 /* 5690 */ // No operand predicates
6738 /* 5690 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
6739 /* 5694 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6740 /* 5696 */ // Combiner Rule #247: trunc_usatu
6741 /* 5696 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6742 /* 5699 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6743 /* 5701 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6744 /* 5705 */ GIR_EraseRootFromParent_Done,
6745 /* 5706 */ // Label 299: @5706
6746 /* 5706 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5735), // Rule ID 71 //
6747 /* 5711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
6748 /* 5714 */ // MIs[0] root
6749 /* 5714 */ // No operand predicates
6750 /* 5714 */ // MIs[0] binop
6751 /* 5714 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6752 /* 5718 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6753 /* 5722 */ // MIs[1] x
6754 /* 5722 */ // No operand predicates
6755 /* 5722 */ // MIs[1] const
6756 /* 5722 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6757 /* 5726 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6758 /* 5730 */ // MIs[2] imm
6759 /* 5730 */ // No operand predicates
6760 /* 5730 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6761 /* 5732 */ // Combiner Rule #69: narrow_binop_xor
6762 /* 5732 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6763 /* 5735 */ // Label 300: @5735
6764 /* 5735 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5756), // Rule ID 53 //
6765 /* 5740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6766 /* 5743 */ // MIs[0] root
6767 /* 5743 */ // No operand predicates
6768 /* 5743 */ // MIs[0] ext
6769 /* 5743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6770 /* 5747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6771 /* 5751 */ // MIs[1] src
6772 /* 5751 */ // No operand predicates
6773 /* 5751 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6774 /* 5753 */ // Combiner Rule #51: truncate_of_anyext
6775 /* 5753 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6776 /* 5756 */ // Label 301: @5756
6777 /* 5756 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5780), // Rule ID 65 //
6778 /* 5761 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6779 /* 5764 */ // MIs[0] root
6780 /* 5764 */ // No operand predicates
6781 /* 5764 */ // MIs[0] bv
6782 /* 5764 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6783 /* 5768 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6784 /* 5772 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6785 /* 5775 */ // MIs[1] unused
6786 /* 5775 */ // No operand predicates
6787 /* 5775 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6788 /* 5777 */ // Combiner Rule #63: buildvector_of_truncate
6789 /* 5777 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6790 /* 5780 */ // Label 302: @5780
6791 /* 5780 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5801), // Rule ID 52 //
6792 /* 5785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6793 /* 5788 */ // MIs[0] root
6794 /* 5788 */ // No operand predicates
6795 /* 5788 */ // MIs[0] ext
6796 /* 5788 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6797 /* 5792 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6798 /* 5796 */ // MIs[1] src
6799 /* 5796 */ // No operand predicates
6800 /* 5796 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6801 /* 5798 */ // Combiner Rule #50: truncate_of_sext
6802 /* 5798 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6803 /* 5801 */ // Label 303: @5801
6804 /* 5801 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5822), // Rule ID 51 //
6805 /* 5806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6806 /* 5809 */ // MIs[0] root
6807 /* 5809 */ // No operand predicates
6808 /* 5809 */ // MIs[0] ext
6809 /* 5809 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6810 /* 5813 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6811 /* 5817 */ // MIs[1] src
6812 /* 5817 */ // No operand predicates
6813 /* 5817 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6814 /* 5819 */ // Combiner Rule #49: truncate_of_zext
6815 /* 5819 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6816 /* 5822 */ // Label 304: @5822
6817 /* 5822 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5843), // Rule ID 93 //
6818 /* 5827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6819 /* 5830 */ // MIs[0] dst
6820 /* 5830 */ // No operand predicates
6821 /* 5830 */ // MIs[0] __unary_undef_to_undef_match_0.x
6822 /* 5830 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6823 /* 5834 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6824 /* 5838 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6825 /* 5840 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6826 /* 5840 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6827 /* 5843 */ // Label 305: @5843
6828 /* 5843 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5864), // Rule ID 72 //
6829 /* 5848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
6830 /* 5851 */ // MIs[0] root
6831 /* 5851 */ // No operand predicates
6832 /* 5851 */ // MIs[0] int
6833 /* 5851 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6834 /* 5855 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6835 /* 5859 */ // MIs[1] imm
6836 /* 5859 */ // No operand predicates
6837 /* 5859 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6838 /* 5861 */ // Combiner Rule #70: integer_of_truncate
6839 /* 5861 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6840 /* 5864 */ // Label 306: @5864
6841 /* 5864 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5875), // Rule ID 411 //
6842 /* 5869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
6843 /* 5872 */ // MIs[0] dst
6844 /* 5872 */ // No operand predicates
6845 /* 5872 */ // MIs[0] src
6846 /* 5872 */ // No operand predicates
6847 /* 5872 */ // Combiner Rule #245: trunc_ssats
6848 /* 5872 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6849 /* 5875 */ // Label 307: @5875
6850 /* 5875 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5886), // Rule ID 412 //
6851 /* 5880 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
6852 /* 5883 */ // MIs[0] dst
6853 /* 5883 */ // No operand predicates
6854 /* 5883 */ // MIs[0] src
6855 /* 5883 */ // No operand predicates
6856 /* 5883 */ // Combiner Rule #246: trunc_ssatu
6857 /* 5883 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
6858 /* 5886 */ // Label 308: @5886
6859 /* 5886 */ GIM_Reject,
6860 /* 5887 */ // Label 30: @5887
6861 /* 5887 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5919), // Rule ID 414 //
6862 /* 5892 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
6863 /* 5895 */ // MIs[0] dst
6864 /* 5895 */ // No operand predicates
6865 /* 5895 */ // MIs[0] src
6866 /* 5895 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6867 /* 5899 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6868 /* 5903 */ // MIs[1] x
6869 /* 5903 */ // No operand predicates
6870 /* 5903 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
6871 /* 5907 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6872 /* 5909 */ // Combiner Rule #248: truncusatu_to_fptouisat
6873 /* 5909 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6874 /* 5912 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6875 /* 5914 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6876 /* 5918 */ GIR_EraseRootFromParent_Done,
6877 /* 5919 */ // Label 309: @5919
6878 /* 5919 */ GIM_Reject,
6879 /* 5920 */ // Label 31: @5920
6880 /* 5920 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5931), // Rule ID 289 //
6881 /* 5925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
6882 /* 5928 */ // Combiner Rule #190: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6883 /* 5928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6884 /* 5931 */ // Label 310: @5931
6885 /* 5931 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5952), // Rule ID 57 //
6886 /* 5936 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
6887 /* 5939 */ // MIs[0] root
6888 /* 5939 */ // No operand predicates
6889 /* 5939 */ // MIs[0] second
6890 /* 5939 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6891 /* 5943 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6892 /* 5947 */ // MIs[1] src
6893 /* 5947 */ // No operand predicates
6894 /* 5947 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6895 /* 5949 */ // Combiner Rule #55: sext_of_anyext
6896 /* 5949 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6897 /* 5952 */ // Label 311: @5952
6898 /* 5952 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5973), // Rule ID 56 //
6899 /* 5957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
6900 /* 5960 */ // MIs[0] root
6901 /* 5960 */ // No operand predicates
6902 /* 5960 */ // MIs[0] second
6903 /* 5960 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6904 /* 5964 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6905 /* 5968 */ // MIs[1] src
6906 /* 5968 */ // No operand predicates
6907 /* 5968 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6908 /* 5970 */ // Combiner Rule #54: sext_of_sext
6909 /* 5970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6910 /* 5973 */ // Label 312: @5973
6911 /* 5973 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5994), // Rule ID 390 //
6912 /* 5978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
6913 /* 5981 */ // MIs[0] root
6914 /* 5981 */ // No operand predicates
6915 /* 5981 */ // MIs[0] src
6916 /* 5981 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6917 /* 5985 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6918 /* 5989 */ // MIs[1] x
6919 /* 5989 */ // No operand predicates
6920 /* 5989 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6921 /* 5991 */ // Combiner Rule #226: sext_trunc
6922 /* 5991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6923 /* 5994 */ // Label 313: @5994
6924 /* 5994 */ GIM_Reject,
6925 /* 5995 */ // Label 32: @5995
6926 /* 5995 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6006), // Rule ID 171 //
6927 /* 6000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6928 /* 6003 */ // Combiner Rule #127: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6929 /* 6003 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6930 /* 6006 */ // Label 314: @6006
6931 /* 6006 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6017), // Rule ID 181 //
6932 /* 6011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
6933 /* 6014 */ // Combiner Rule #137: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6934 /* 6014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6935 /* 6017 */ // Label 315: @6017
6936 /* 6017 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6028), // Rule ID 250 //
6937 /* 6022 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6938 /* 6025 */ // Combiner Rule #183: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6939 /* 6025 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6940 /* 6028 */ // Label 316: @6028
6941 /* 6028 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6049), // Rule ID 61 //
6942 /* 6033 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
6943 /* 6036 */ // MIs[0] dst
6944 /* 6036 */ // No operand predicates
6945 /* 6036 */ // MIs[0] x
6946 /* 6036 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6947 /* 6040 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6948 /* 6044 */ // MIs[1] src
6949 /* 6044 */ // No operand predicates
6950 /* 6044 */ // MIs[1] a
6951 /* 6044 */ // No operand predicates
6952 /* 6044 */ // MIs[0] b
6953 /* 6044 */ // No operand predicates
6954 /* 6044 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6955 /* 6046 */ // Combiner Rule #59: sext_inreg_of_sext_inreg
6956 /* 6046 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6957 /* 6049 */ // Label 317: @6049
6958 /* 6049 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6060), // Rule ID 185 //
6959 /* 6054 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
6960 /* 6057 */ // MIs[0] dst
6961 /* 6057 */ // No operand predicates
6962 /* 6057 */ // MIs[0] src
6963 /* 6057 */ // No operand predicates
6964 /* 6057 */ // MIs[0] imm
6965 /* 6057 */ // No operand predicates
6966 /* 6057 */ // Combiner Rule #141: sext_inreg_to_zext_inreg
6967 /* 6057 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6968 /* 6060 */ // Label 318: @6060
6969 /* 6060 */ GIM_Reject,
6970 /* 6061 */ // Label 33: @6061
6971 /* 6061 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6072), // Rule ID 184 //
6972 /* 6066 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
6973 /* 6069 */ // Combiner Rule #140: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6974 /* 6069 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6975 /* 6072 */ // Label 319: @6072
6976 /* 6072 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6083), // Rule ID 288 //
6977 /* 6077 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
6978 /* 6080 */ // Combiner Rule #190: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6979 /* 6080 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6980 /* 6083 */ // Label 320: @6083
6981 /* 6083 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6104), // Rule ID 62 //
6982 /* 6088 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
6983 /* 6091 */ // MIs[0] root
6984 /* 6091 */ // No operand predicates
6985 /* 6091 */ // MIs[0] select
6986 /* 6091 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6987 /* 6095 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6988 /* 6099 */ // MIs[1] cond
6989 /* 6099 */ // No operand predicates
6990 /* 6099 */ // MIs[1] true
6991 /* 6099 */ // No operand predicates
6992 /* 6099 */ // MIs[1] false
6993 /* 6099 */ // No operand predicates
6994 /* 6099 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6995 /* 6101 */ // Combiner Rule #60: select_of_zext
6996 /* 6101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6997 /* 6104 */ // Label 321: @6104
6998 /* 6104 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6125), // Rule ID 55 //
6999 /* 6109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
7000 /* 6112 */ // MIs[0] root
7001 /* 6112 */ // No operand predicates
7002 /* 6112 */ // MIs[0] second
7003 /* 6112 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7004 /* 6116 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7005 /* 6120 */ // MIs[1] src
7006 /* 6120 */ // No operand predicates
7007 /* 6120 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7008 /* 6122 */ // Combiner Rule #53: zext_of_anyext
7009 /* 6122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7010 /* 6125 */ // Label 322: @6125
7011 /* 6125 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6152), // Rule ID 391 //
7012 /* 6130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
7013 /* 6133 */ // MIs[0] root
7014 /* 6133 */ // No operand predicates
7015 /* 6133 */ // MIs[0] src
7016 /* 6133 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7017 /* 6137 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7018 /* 6141 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
7019 /* 6147 */ // MIs[1] x
7020 /* 6147 */ // No operand predicates
7021 /* 6147 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7022 /* 6149 */ // Combiner Rule #227: zext_trunc
7023 /* 6149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7024 /* 6152 */ // Label 323: @6152
7025 /* 6152 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6173), // Rule ID 54 //
7026 /* 6157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
7027 /* 6160 */ // MIs[0] root
7028 /* 6160 */ // No operand predicates
7029 /* 6160 */ // MIs[0] second
7030 /* 6160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7031 /* 6164 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7032 /* 6168 */ // MIs[1] src
7033 /* 6168 */ // No operand predicates
7034 /* 6168 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7035 /* 6170 */ // Combiner Rule #52: zext_of_zext
7036 /* 6170 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7037 /* 6173 */ // Label 324: @6173
7038 /* 6173 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6190), // Rule ID 392 //
7039 /* 6178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
7040 /* 6181 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
7041 /* 6187 */ // MIs[0] root
7042 /* 6187 */ // No operand predicates
7043 /* 6187 */ // MIs[0] x
7044 /* 6187 */ // No operand predicates
7045 /* 6187 */ // Combiner Rule #228: nneg_zext
7046 /* 6187 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7047 /* 6190 */ // Label 325: @6190
7048 /* 6190 */ GIM_Reject,
7049 /* 6191 */ // Label 34: @6191
7050 /* 6191 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6202), // Rule ID 86 //
7051 /* 6196 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7052 /* 6199 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
7053 /* 6199 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7054 /* 6202 */ // Label 326: @6202
7055 /* 6202 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6213), // Rule ID 89 //
7056 /* 6207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7057 /* 6210 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
7058 /* 6210 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7059 /* 6213 */ // Label 327: @6213
7060 /* 6213 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6224), // Rule ID 221 //
7061 /* 6218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
7062 /* 6221 */ // Combiner Rule #169: shift_immed_chain; wip_match_opcode 'G_SHL'
7063 /* 6221 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7064 /* 6224 */ // Label 328: @6224
7065 /* 6224 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6235), // Rule ID 226 //
7066 /* 6229 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
7067 /* 6232 */ // Combiner Rule #170: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
7068 /* 6232 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7069 /* 6235 */ // Label 329: @6235
7070 /* 6235 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6246), // Rule ID 249 //
7071 /* 6240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7072 /* 6243 */ // Combiner Rule #182: commute_shift; wip_match_opcode 'G_SHL'
7073 /* 6243 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
7074 /* 6246 */ // Label 330: @6246
7075 /* 6246 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6257), // Rule ID 263 //
7076 /* 6251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7077 /* 6254 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_SHL'
7078 /* 6254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7079 /* 6257 */ // Label 331: @6257
7080 /* 6257 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6268), // Rule ID 328 //
7081 /* 6262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7082 /* 6265 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_SHL'
7083 /* 6265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
7084 /* 6268 */ // Label 332: @6268
7085 /* 6268 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6303), // Rule ID 47 //
7086 /* 6273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
7087 /* 6276 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
7088 /* 6282 */ // MIs[0] root
7089 /* 6282 */ // No operand predicates
7090 /* 6282 */ // MIs[0] left
7091 /* 6282 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7092 /* 6286 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
7093 /* 6290 */ // MIs[1] imm
7094 /* 6290 */ // No operand predicates
7095 /* 6290 */ // MIs[0] x
7096 /* 6290 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7097 /* 6294 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7098 /* 6298 */ // MIs[2] imm1
7099 /* 6298 */ // No operand predicates
7100 /* 6298 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7101 /* 6300 */ // Combiner Rule #45: shl_of_vscale
7102 /* 6300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
7103 /* 6303 */ // Label 333: @6303
7104 /* 6303 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6343), // Rule ID 124 //
7105 /* 6308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7106 /* 6311 */ // MIs[0] dst
7107 /* 6311 */ // No operand predicates
7108 /* 6311 */ // MIs[0] zero
7109 /* 6311 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7110 /* 6315 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7111 /* 6319 */ // MIs[1] Operand 1
7112 /* 6319 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7113 /* 6330 */ // MIs[0] rhs
7114 /* 6330 */ // No operand predicates
7115 /* 6330 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7116 /* 6335 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7117 /* 6337 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
7118 /* 6337 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7119 /* 6342 */ GIR_EraseRootFromParent_Done,
7120 /* 6343 */ // Label 334: @6343
7121 /* 6343 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6366), // Rule ID 114 //
7122 /* 6348 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7123 /* 6351 */ // MIs[0] dst
7124 /* 6351 */ // No operand predicates
7125 /* 6351 */ // MIs[0] lhs
7126 /* 6351 */ // No operand predicates
7127 /* 6351 */ // MIs[0] Operand 2
7128 /* 6351 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7129 /* 6355 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7130 /* 6360 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
7131 /* 6360 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7132 /* 6365 */ GIR_EraseRootFromParent_Done,
7133 /* 6366 */ // Label 335: @6366
7134 /* 6366 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6377), // Rule ID 156 //
7135 /* 6371 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7136 /* 6374 */ // MIs[0] root
7137 /* 6374 */ // No operand predicates
7138 /* 6374 */ // MIs[0] mi.shifted
7139 /* 6374 */ // No operand predicates
7140 /* 6374 */ // MIs[0] mi.amt
7141 /* 6374 */ // No operand predicates
7142 /* 6374 */ // Combiner Rule #114: shifts_too_big @ [mi[0]]
7143 /* 6374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7144 /* 6377 */ // Label 336: @6377
7145 /* 6377 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6388), // Rule ID 172 //
7146 /* 6382 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
7147 /* 6385 */ // MIs[0] dst
7148 /* 6385 */ // No operand predicates
7149 /* 6385 */ // MIs[0] src0
7150 /* 6385 */ // No operand predicates
7151 /* 6385 */ // MIs[0] src1
7152 /* 6385 */ // No operand predicates
7153 /* 6385 */ // Combiner Rule #128: reduce_shl_of_extend
7154 /* 6385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
7155 /* 6388 */ // Label 337: @6388
7156 /* 6388 */ GIM_Reject,
7157 /* 6389 */ // Label 35: @6389
7158 /* 6389 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6400), // Rule ID 91 //
7159 /* 6394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7160 /* 6397 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
7161 /* 6397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7162 /* 6400 */ // Label 338: @6400
7163 /* 6400 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6411), // Rule ID 223 //
7164 /* 6405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
7165 /* 6408 */ // Combiner Rule #169: shift_immed_chain; wip_match_opcode 'G_LSHR'
7166 /* 6408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7167 /* 6411 */ // Label 339: @6411
7168 /* 6411 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6422), // Rule ID 228 //
7169 /* 6416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
7170 /* 6419 */ // Combiner Rule #170: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
7171 /* 6419 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7172 /* 6422 */ // Label 340: @6422
7173 /* 6422 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6433), // Rule ID 253 //
7174 /* 6427 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7175 /* 6430 */ // Combiner Rule #185: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
7176 /* 6430 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
7177 /* 6433 */ // Label 341: @6433
7178 /* 6433 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6444), // Rule ID 255 //
7179 /* 6438 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7180 /* 6441 */ // Combiner Rule #186: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
7181 /* 6441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7182 /* 6444 */ // Label 342: @6444
7183 /* 6444 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6455), // Rule ID 260 //
7184 /* 6449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7185 /* 6452 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_LSHR'
7186 /* 6452 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7187 /* 6455 */ // Label 343: @6455
7188 /* 6455 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6466), // Rule ID 326 //
7189 /* 6460 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7190 /* 6463 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_LSHR'
7191 /* 6463 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
7192 /* 6466 */ // Label 344: @6466
7193 /* 6466 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6555), // Rule ID 430 //
7194 /* 6471 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
7195 /* 6474 */ // MIs[0] dst
7196 /* 6474 */ // No operand predicates
7197 /* 6474 */ // MIs[0] sum
7198 /* 6474 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7199 /* 6478 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7200 /* 6482 */ // MIs[1] inner
7201 /* 6482 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7202 /* 6486 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7203 /* 6490 */ // MIs[2] ext1
7204 /* 6490 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7205 /* 6494 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7206 /* 6498 */ // MIs[3] x
7207 /* 6498 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7208 /* 6502 */ // MIs[2] ext2
7209 /* 6502 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7210 /* 6506 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
7211 /* 6510 */ // MIs[4] y
7212 /* 6510 */ // No operand predicates
7213 /* 6510 */ // MIs[1] Operand 2
7214 /* 6510 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7215 /* 6514 */ // MIs[0] Operand 2
7216 /* 6514 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7217 /* 6518 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
7218 /* 6522 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7219 /* 6524 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7220 /* 6527 */ // Combiner Rule #261: avgceil_u_match
7221 /* 6527 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
7222 /* 6530 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7223 /* 6535 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7224 /* 6539 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7225 /* 6543 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7226 /* 6547 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7227 /* 6551 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7228 /* 6554 */ GIR_EraseRootFromParent_Done,
7229 /* 6555 */ // Label 345: @6555
7230 /* 6555 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6632), // Rule ID 428 //
7231 /* 6560 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
7232 /* 6563 */ // MIs[0] dst
7233 /* 6563 */ // No operand predicates
7234 /* 6563 */ // MIs[0] sum
7235 /* 6563 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7236 /* 6567 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7237 /* 6571 */ // MIs[1] ext1
7238 /* 6571 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7239 /* 6575 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
7240 /* 6579 */ // MIs[2] x
7241 /* 6579 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7242 /* 6583 */ // MIs[1] ext2
7243 /* 6583 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7244 /* 6587 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7245 /* 6591 */ // MIs[3] y
7246 /* 6591 */ // No operand predicates
7247 /* 6591 */ // MIs[0] Operand 2
7248 /* 6591 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7249 /* 6595 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
7250 /* 6599 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7251 /* 6601 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7252 /* 6604 */ // Combiner Rule #259: avgfloor_u_match
7253 /* 6604 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
7254 /* 6607 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7255 /* 6612 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7256 /* 6616 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7257 /* 6620 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
7258 /* 6624 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7259 /* 6628 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7260 /* 6631 */ GIR_EraseRootFromParent_Done,
7261 /* 6632 */ // Label 346: @6632
7262 /* 6632 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6661), // Rule ID 415 //
7263 /* 6637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
7264 /* 6640 */ // MIs[0] dst
7265 /* 6640 */ // No operand predicates
7266 /* 6640 */ // MIs[0] d2
7267 /* 6640 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7268 /* 6644 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7269 /* 6648 */ // MIs[1] d1
7270 /* 6648 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7271 /* 6652 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
7272 /* 6656 */ // MIs[2] x
7273 /* 6656 */ // No operand predicates
7274 /* 6656 */ // MIs[2] y
7275 /* 6656 */ // No operand predicates
7276 /* 6656 */ // MIs[0] z
7277 /* 6656 */ // No operand predicates
7278 /* 6656 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7279 /* 6658 */ // Combiner Rule #249: lshr_of_trunc_of_lshr
7280 /* 6658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
7281 /* 6661 */ // Label 347: @6661
7282 /* 6661 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6701), // Rule ID 125 //
7283 /* 6666 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7284 /* 6669 */ // MIs[0] dst
7285 /* 6669 */ // No operand predicates
7286 /* 6669 */ // MIs[0] zero
7287 /* 6669 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7288 /* 6673 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7289 /* 6677 */ // MIs[1] Operand 1
7290 /* 6677 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7291 /* 6688 */ // MIs[0] rhs
7292 /* 6688 */ // No operand predicates
7293 /* 6688 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7294 /* 6693 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7295 /* 6695 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
7296 /* 6695 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7297 /* 6700 */ GIR_EraseRootFromParent_Done,
7298 /* 6701 */ // Label 348: @6701
7299 /* 6701 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6724), // Rule ID 116 //
7300 /* 6706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7301 /* 6709 */ // MIs[0] dst
7302 /* 6709 */ // No operand predicates
7303 /* 6709 */ // MIs[0] lhs
7304 /* 6709 */ // No operand predicates
7305 /* 6709 */ // MIs[0] Operand 2
7306 /* 6709 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7307 /* 6713 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7308 /* 6718 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
7309 /* 6718 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7310 /* 6723 */ GIR_EraseRootFromParent_Done,
7311 /* 6724 */ // Label 349: @6724
7312 /* 6724 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6735), // Rule ID 158 //
7313 /* 6729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7314 /* 6732 */ // MIs[0] root
7315 /* 6732 */ // No operand predicates
7316 /* 6732 */ // MIs[0] mi.shifted
7317 /* 6732 */ // No operand predicates
7318 /* 6732 */ // MIs[0] mi.amt
7319 /* 6732 */ // No operand predicates
7320 /* 6732 */ // Combiner Rule #114: shifts_too_big @ [mi[2]]
7321 /* 6732 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7322 /* 6735 */ // Label 350: @6735
7323 /* 6735 */ GIM_Reject,
7324 /* 6736 */ // Label 36: @6736
7325 /* 6736 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6747), // Rule ID 90 //
7326 /* 6741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
7327 /* 6744 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
7328 /* 6744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7329 /* 6747 */ // Label 351: @6747
7330 /* 6747 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6758), // Rule ID 169 //
7331 /* 6752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
7332 /* 6755 */ // Combiner Rule #125: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
7333 /* 6755 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
7334 /* 6758 */ // Label 352: @6758
7335 /* 6758 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6769), // Rule ID 222 //
7336 /* 6763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
7337 /* 6766 */ // Combiner Rule #169: shift_immed_chain; wip_match_opcode 'G_ASHR'
7338 /* 6766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7339 /* 6769 */ // Label 353: @6769
7340 /* 6769 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6780), // Rule ID 227 //
7341 /* 6774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
7342 /* 6777 */ // Combiner Rule #170: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
7343 /* 6777 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7344 /* 6780 */ // Label 354: @6780
7345 /* 6780 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6791), // Rule ID 252 //
7346 /* 6785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7347 /* 6788 */ // Combiner Rule #185: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
7348 /* 6788 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
7349 /* 6791 */ // Label 355: @6791
7350 /* 6791 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6802), // Rule ID 254 //
7351 /* 6796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7352 /* 6799 */ // Combiner Rule #186: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
7353 /* 6799 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
7354 /* 6802 */ // Label 356: @6802
7355 /* 6802 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6813), // Rule ID 259 //
7356 /* 6807 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7357 /* 6810 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_ASHR'
7358 /* 6810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7359 /* 6813 */ // Label 357: @6813
7360 /* 6813 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6824), // Rule ID 327 //
7361 /* 6818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7362 /* 6821 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_ASHR'
7363 /* 6821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
7364 /* 6824 */ // Label 358: @6824
7365 /* 6824 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6913), // Rule ID 431 //
7366 /* 6829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
7367 /* 6832 */ // MIs[0] dst
7368 /* 6832 */ // No operand predicates
7369 /* 6832 */ // MIs[0] sum
7370 /* 6832 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7371 /* 6836 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7372 /* 6840 */ // MIs[1] inner
7373 /* 6840 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7374 /* 6844 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
7375 /* 6848 */ // MIs[2] ext1
7376 /* 6848 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
7377 /* 6852 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
7378 /* 6856 */ // MIs[3] x
7379 /* 6856 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
7380 /* 6860 */ // MIs[2] ext2
7381 /* 6860 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
7382 /* 6864 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
7383 /* 6868 */ // MIs[4] y
7384 /* 6868 */ // No operand predicates
7385 /* 6868 */ // MIs[1] Operand 2
7386 /* 6868 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
7387 /* 6872 */ // MIs[0] Operand 2
7388 /* 6872 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7389 /* 6876 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
7390 /* 6880 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
7391 /* 6882 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7392 /* 6885 */ // Combiner Rule #262: avgceil_s_match
7393 /* 6885 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
7394 /* 6888 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7395 /* 6893 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
7396 /* 6897 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
7397 /* 6901 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7398 /* 6905 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7399 /* 6909 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7400 /* 6912 */ GIR_EraseRootFromParent_Done,
7401 /* 6913 */ // Label 359: @6913
7402 /* 6913 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6990), // Rule ID 429 //
7403 /* 6918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
7404 /* 6921 */ // MIs[0] dst
7405 /* 6921 */ // No operand predicates
7406 /* 6921 */ // MIs[0] sum
7407 /* 6921 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7408 /* 6925 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7409 /* 6929 */ // MIs[1] ext1
7410 /* 6929 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7411 /* 6933 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
7412 /* 6937 */ // MIs[2] x
7413 /* 6937 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
7414 /* 6941 */ // MIs[1] ext2
7415 /* 6941 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
7416 /* 6945 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
7417 /* 6949 */ // MIs[3] y
7418 /* 6949 */ // No operand predicates
7419 /* 6949 */ // MIs[0] Operand 2
7420 /* 6949 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
7421 /* 6953 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
7422 /* 6957 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7423 /* 6959 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7424 /* 6962 */ // Combiner Rule #260: avgfloor_s_match
7425 /* 6962 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
7426 /* 6965 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7427 /* 6970 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
7428 /* 6974 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
7429 /* 6978 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7430 /* 6982 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7431 /* 6986 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7432 /* 6989 */ GIR_EraseRootFromParent_Done,
7433 /* 6990 */ // Label 360: @6990
7434 /* 6990 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7030), // Rule ID 126 //
7435 /* 6995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
7436 /* 6998 */ // MIs[0] dst
7437 /* 6998 */ // No operand predicates
7438 /* 6998 */ // MIs[0] zero
7439 /* 6998 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7440 /* 7002 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7441 /* 7006 */ // MIs[1] Operand 1
7442 /* 7006 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7443 /* 7017 */ // MIs[0] rhs
7444 /* 7017 */ // No operand predicates
7445 /* 7017 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7446 /* 7022 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7447 /* 7024 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
7448 /* 7024 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7449 /* 7029 */ GIR_EraseRootFromParent_Done,
7450 /* 7030 */ // Label 361: @7030
7451 /* 7030 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7053), // Rule ID 115 //
7452 /* 7035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7453 /* 7038 */ // MIs[0] dst
7454 /* 7038 */ // No operand predicates
7455 /* 7038 */ // MIs[0] lhs
7456 /* 7038 */ // No operand predicates
7457 /* 7038 */ // MIs[0] Operand 2
7458 /* 7038 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7459 /* 7042 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7460 /* 7047 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
7461 /* 7047 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7462 /* 7052 */ GIR_EraseRootFromParent_Done,
7463 /* 7053 */ // Label 362: @7053
7464 /* 7053 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7064), // Rule ID 157 //
7465 /* 7058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7466 /* 7061 */ // MIs[0] root
7467 /* 7061 */ // No operand predicates
7468 /* 7061 */ // MIs[0] mi.shifted
7469 /* 7061 */ // No operand predicates
7470 /* 7061 */ // MIs[0] mi.amt
7471 /* 7061 */ // No operand predicates
7472 /* 7061 */ // Combiner Rule #114: shifts_too_big @ [mi[1]]
7473 /* 7061 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
7474 /* 7064 */ // Label 363: @7064
7475 /* 7064 */ GIM_Reject,
7476 /* 7065 */ // Label 37: @7065
7477 /* 7065 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7076), // Rule ID 237 //
7478 /* 7070 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7479 /* 7073 */ // Combiner Rule #174: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
7480 /* 7073 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
7481 /* 7076 */ // Label 364: @7076
7482 /* 7076 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7087), // Rule ID 241 //
7483 /* 7081 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
7484 /* 7084 */ // Combiner Rule #177: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
7485 /* 7084 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
7486 /* 7087 */ // Label 365: @7087
7487 /* 7087 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7107), // Rule ID 240 //
7488 /* 7092 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
7489 /* 7095 */ // MIs[0] x
7490 /* 7095 */ // No operand predicates
7491 /* 7095 */ // MIs[0] y
7492 /* 7095 */ // No operand predicates
7493 /* 7095 */ // MIs[0] z
7494 /* 7095 */ // No operand predicates
7495 /* 7095 */ // MIs[0] Operand 3
7496 /* 7095 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
7497 /* 7099 */ // Combiner Rule #176: funnel_shift_left_zero
7498 /* 7099 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
7499 /* 7102 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
7500 /* 7104 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
7501 /* 7106 */ GIR_EraseRootFromParent_Done,
7502 /* 7107 */ // Label 366: @7107
7503 /* 7107 */ GIM_Reject,
7504 /* 7108 */ // Label 38: @7108
7505 /* 7108 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7119), // Rule ID 238 //
7506 /* 7113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
7507 /* 7116 */ // Combiner Rule #174: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
7508 /* 7116 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
7509 /* 7119 */ // Label 367: @7119
7510 /* 7119 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7130), // Rule ID 242 //
7511 /* 7124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
7512 /* 7127 */ // Combiner Rule #177: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
7513 /* 7127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
7514 /* 7130 */ // Label 368: @7130
7515 /* 7130 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7150), // Rule ID 239 //
7516 /* 7135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
7517 /* 7138 */ // MIs[0] x
7518 /* 7138 */ // No operand predicates
7519 /* 7138 */ // MIs[0] y
7520 /* 7138 */ // No operand predicates
7521 /* 7138 */ // MIs[0] z
7522 /* 7138 */ // No operand predicates
7523 /* 7138 */ // MIs[0] Operand 3
7524 /* 7138 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
7525 /* 7142 */ // Combiner Rule #175: funnel_shift_right_zero
7526 /* 7142 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
7527 /* 7145 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
7528 /* 7147 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
7529 /* 7149 */ GIR_EraseRootFromParent_Done,
7530 /* 7150 */ // Label 369: @7150
7531 /* 7150 */ GIM_Reject,
7532 /* 7151 */ // Label 39: @7151
7533 /* 7151 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(7174), // Rule ID 119 //
7534 /* 7156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7535 /* 7159 */ // MIs[0] dst
7536 /* 7159 */ // No operand predicates
7537 /* 7159 */ // MIs[0] lhs
7538 /* 7159 */ // No operand predicates
7539 /* 7159 */ // MIs[0] Operand 2
7540 /* 7159 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7541 /* 7163 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7542 /* 7168 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
7543 /* 7168 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7544 /* 7173 */ GIR_EraseRootFromParent_Done,
7545 /* 7174 */ // Label 370: @7174
7546 /* 7174 */ GIM_Reject,
7547 /* 7175 */ // Label 40: @7175
7548 /* 7175 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(7198), // Rule ID 118 //
7549 /* 7180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7550 /* 7183 */ // MIs[0] dst
7551 /* 7183 */ // No operand predicates
7552 /* 7183 */ // MIs[0] lhs
7553 /* 7183 */ // No operand predicates
7554 /* 7183 */ // MIs[0] Operand 2
7555 /* 7183 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7556 /* 7187 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7557 /* 7192 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
7558 /* 7192 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7559 /* 7197 */ GIR_EraseRootFromParent_Done,
7560 /* 7198 */ // Label 371: @7198
7561 /* 7198 */ GIM_Reject,
7562 /* 7199 */ // Label 41: @7199
7563 /* 7199 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(7210), // Rule ID 164 //
7564 /* 7204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
7565 /* 7207 */ // Combiner Rule #120: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
7566 /* 7207 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
7567 /* 7210 */ // Label 372: @7210
7568 /* 7210 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(7221), // Rule ID 165 //
7569 /* 7215 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
7570 /* 7218 */ // Combiner Rule #121: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
7571 /* 7218 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
7572 /* 7221 */ // Label 373: @7221
7573 /* 7221 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(7232), // Rule ID 168 //
7574 /* 7226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
7575 /* 7229 */ // Combiner Rule #124: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
7576 /* 7229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7577 /* 7232 */ // Label 374: @7232
7578 /* 7232 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(7243), // Rule ID 162 //
7579 /* 7237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
7580 /* 7240 */ // MIs[0] root
7581 /* 7240 */ // No operand predicates
7582 /* 7240 */ // MIs[0] pred
7583 /* 7240 */ // No operand predicates
7584 /* 7240 */ // MIs[0] lhs
7585 /* 7240 */ // No operand predicates
7586 /* 7240 */ // MIs[0] rhs
7587 /* 7240 */ // No operand predicates
7588 /* 7240 */ // Combiner Rule #118: canonicalize_icmp
7589 /* 7240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
7590 /* 7243 */ // Label 375: @7243
7591 /* 7243 */ GIM_Reject,
7592 /* 7244 */ // Label 42: @7244
7593 /* 7244 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(7255), // Rule ID 163 //
7594 /* 7249 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
7595 /* 7252 */ // MIs[0] root
7596 /* 7252 */ // No operand predicates
7597 /* 7252 */ // MIs[0] pred
7598 /* 7252 */ // No operand predicates
7599 /* 7252 */ // MIs[0] lhs
7600 /* 7252 */ // No operand predicates
7601 /* 7252 */ // MIs[0] rhs
7602 /* 7252 */ // No operand predicates
7603 /* 7252 */ // Combiner Rule #119: canonicalize_fcmp
7604 /* 7252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
7605 /* 7255 */ // Label 376: @7255
7606 /* 7255 */ GIM_Reject,
7607 /* 7256 */ // Label 43: @7256
7608 /* 7256 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(7267), // Rule ID 109 //
7609 /* 7261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
7610 /* 7264 */ // Combiner Rule #89: select_same_val; wip_match_opcode 'G_SELECT'
7611 /* 7264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
7612 /* 7267 */ // Label 377: @7267
7613 /* 7267 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(7278), // Rule ID 175 //
7614 /* 7272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
7615 /* 7275 */ // Combiner Rule #131: select_constant_cmp; wip_match_opcode 'G_SELECT'
7616 /* 7275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7617 /* 7278 */ // Label 378: @7278
7618 /* 7278 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(7289), // Rule ID 177 //
7619 /* 7283 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
7620 /* 7286 */ // Combiner Rule #133: match_selects; wip_match_opcode 'G_SELECT'
7621 /* 7286 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
7622 /* 7289 */ // Label 379: @7289
7623 /* 7289 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(7300), // Rule ID 351 //
7624 /* 7294 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
7625 /* 7297 */ // Combiner Rule #214: select_to_minmax; wip_match_opcode 'G_SELECT'
7626 /* 7297 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7627 /* 7300 */ // Label 380: @7300
7628 /* 7300 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(7349), // Rule ID 178 //
7629 /* 7305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
7630 /* 7308 */ // MIs[0] dst
7631 /* 7308 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
7632 /* 7312 */ // MIs[0] c
7633 /* 7312 */ // No operand predicates
7634 /* 7312 */ // MIs[0] x
7635 /* 7312 */ // No operand predicates
7636 /* 7312 */ // MIs[0] Operand 3
7637 /* 7312 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
7638 /* 7316 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
7639 /* 7320 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
7640 /* 7323 */ // Combiner Rule #134: select_zero_false
7641 /* 7323 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
7642 /* 7326 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7643 /* 7331 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
7644 /* 7333 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
7645 /* 7337 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7646 /* 7341 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
7647 /* 7345 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
7648 /* 7348 */ GIR_EraseRootFromParent_Done,
7649 /* 7349 */ // Label 381: @7349
7650 /* 7349 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(7370), // Rule ID 176 //
7651 /* 7354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
7652 /* 7357 */ // MIs[0] root
7653 /* 7357 */ // No operand predicates
7654 /* 7357 */ // MIs[0] tst
7655 /* 7357 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7656 /* 7361 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
7657 /* 7365 */ // MIs[1] tst1
7658 /* 7365 */ // No operand predicates
7659 /* 7365 */ // MIs[1] a
7660 /* 7365 */ // No operand predicates
7661 /* 7365 */ // MIs[1] b
7662 /* 7365 */ // No operand predicates
7663 /* 7365 */ // MIs[0] x
7664 /* 7365 */ // No operand predicates
7665 /* 7365 */ // MIs[0] y
7666 /* 7365 */ // No operand predicates
7667 /* 7365 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7668 /* 7367 */ // Combiner Rule #132: select_to_iminmax
7669 /* 7367 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
7670 /* 7370 */ // Label 382: @7370
7671 /* 7370 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(7406), // Rule ID 179 //
7672 /* 7375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
7673 /* 7378 */ // MIs[0] dst
7674 /* 7378 */ // No operand predicates
7675 /* 7378 */ // MIs[0] c
7676 /* 7378 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7677 /* 7382 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7678 /* 7386 */ // MIs[1] src
7679 /* 7386 */ // No operand predicates
7680 /* 7386 */ // MIs[1] Operand 2
7681 /* 7386 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
7682 /* 7390 */ // MIs[0] x
7683 /* 7390 */ // No operand predicates
7684 /* 7390 */ // MIs[0] y
7685 /* 7390 */ // No operand predicates
7686 /* 7390 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7687 /* 7392 */ // Combiner Rule #135: select_not
7688 /* 7392 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
7689 /* 7395 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7690 /* 7397 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7691 /* 7401 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
7692 /* 7403 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
7693 /* 7405 */ GIR_EraseRootFromParent_Done,
7694 /* 7406 */ // Label 383: @7406
7695 /* 7406 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(7435), // Rule ID 174 //
7696 /* 7411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
7697 /* 7414 */ // MIs[0] dst
7698 /* 7414 */ // No operand predicates
7699 /* 7414 */ // MIs[0] undef
7700 /* 7414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7701 /* 7418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7702 /* 7422 */ // MIs[0] x
7703 /* 7422 */ // No operand predicates
7704 /* 7422 */ // MIs[0] y
7705 /* 7422 */ // No operand predicates
7706 /* 7422 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7707 /* 7427 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7708 /* 7429 */ // Combiner Rule #130: select_undef_cmp
7709 /* 7429 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7710 /* 7434 */ GIR_EraseRootFromParent_Done,
7711 /* 7435 */ // Label 384: @7435
7712 /* 7435 */ GIM_Reject,
7713 /* 7436 */ // Label 44: @7436
7714 /* 7436 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(7447), // Rule ID 362 //
7715 /* 7441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7716 /* 7444 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
7717 /* 7444 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7718 /* 7447 */ // Label 385: @7447
7719 /* 7447 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(7458), // Rule ID 408 //
7720 /* 7452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
7721 /* 7455 */ // Combiner Rule #243: match_addos; wip_match_opcode 'G_UADDO'
7722 /* 7455 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
7723 /* 7458 */ // Label 386: @7458
7724 /* 7458 */ GIM_Reject,
7725 /* 7459 */ // Label 45: @7459
7726 /* 7459 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(7470), // Rule ID 210 //
7727 /* 7464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7728 /* 7467 */ // Combiner Rule #164: adde_to_addo; wip_match_opcode 'G_UADDE'
7729 /* 7467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7730 /* 7470 */ // Label 387: @7470
7731 /* 7470 */ GIM_Reject,
7732 /* 7471 */ // Label 46: @7471
7733 /* 7471 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(7482), // Rule ID 410 //
7734 /* 7476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
7735 /* 7479 */ // Combiner Rule #244: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
7736 /* 7479 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
7737 /* 7482 */ // Label 388: @7482
7738 /* 7482 */ GIM_Reject,
7739 /* 7483 */ // Label 47: @7483
7740 /* 7483 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(7494), // Rule ID 212 //
7741 /* 7488 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7742 /* 7491 */ // Combiner Rule #164: adde_to_addo; wip_match_opcode 'G_USUBE'
7743 /* 7491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7744 /* 7494 */ // Label 389: @7494
7745 /* 7494 */ GIM_Reject,
7746 /* 7495 */ // Label 48: @7495
7747 /* 7495 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(7506), // Rule ID 363 //
7748 /* 7500 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7749 /* 7503 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
7750 /* 7503 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7751 /* 7506 */ // Label 390: @7506
7752 /* 7506 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(7517), // Rule ID 407 //
7753 /* 7511 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
7754 /* 7514 */ // Combiner Rule #243: match_addos; wip_match_opcode 'G_SADDO'
7755 /* 7514 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
7756 /* 7517 */ // Label 391: @7517
7757 /* 7517 */ GIM_Reject,
7758 /* 7518 */ // Label 49: @7518
7759 /* 7518 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(7529), // Rule ID 211 //
7760 /* 7523 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7761 /* 7526 */ // Combiner Rule #164: adde_to_addo; wip_match_opcode 'G_SADDE'
7762 /* 7526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7763 /* 7529 */ // Label 392: @7529
7764 /* 7529 */ GIM_Reject,
7765 /* 7530 */ // Label 50: @7530
7766 /* 7530 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(7541), // Rule ID 409 //
7767 /* 7535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
7768 /* 7538 */ // Combiner Rule #244: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
7769 /* 7538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
7770 /* 7541 */ // Label 393: @7541
7771 /* 7541 */ GIM_Reject,
7772 /* 7542 */ // Label 51: @7542
7773 /* 7542 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(7553), // Rule ID 213 //
7774 /* 7547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7775 /* 7550 */ // Combiner Rule #164: adde_to_addo; wip_match_opcode 'G_SSUBE'
7776 /* 7550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7777 /* 7553 */ // Label 394: @7553
7778 /* 7553 */ GIM_Reject,
7779 /* 7554 */ // Label 52: @7554
7780 /* 7554 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(7565), // Rule ID 206 //
7781 /* 7559 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7782 /* 7562 */ // Combiner Rule #162: mulo_by_2; wip_match_opcode 'G_UMULO'
7783 /* 7562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7784 /* 7565 */ // Label 395: @7565
7785 /* 7565 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(7576), // Rule ID 208 //
7786 /* 7570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7787 /* 7573 */ // Combiner Rule #163: mulo_by_0; wip_match_opcode 'G_UMULO'
7788 /* 7573 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7789 /* 7576 */ // Label 396: @7576
7790 /* 7576 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(7587), // Rule ID 364 //
7791 /* 7581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7792 /* 7584 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
7793 /* 7584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7794 /* 7587 */ // Label 397: @7587
7795 /* 7587 */ GIM_Reject,
7796 /* 7588 */ // Label 53: @7588
7797 /* 7588 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(7599), // Rule ID 207 //
7798 /* 7593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7799 /* 7596 */ // Combiner Rule #162: mulo_by_2; wip_match_opcode 'G_SMULO'
7800 /* 7596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7801 /* 7599 */ // Label 398: @7599
7802 /* 7599 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(7610), // Rule ID 209 //
7803 /* 7604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7804 /* 7607 */ // Combiner Rule #163: mulo_by_0; wip_match_opcode 'G_SMULO'
7805 /* 7607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7806 /* 7610 */ // Label 399: @7610
7807 /* 7610 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(7621), // Rule ID 365 //
7808 /* 7615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7809 /* 7618 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
7810 /* 7618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7811 /* 7621 */ // Label 400: @7621
7812 /* 7621 */ GIM_Reject,
7813 /* 7622 */ // Label 54: @7622
7814 /* 7622 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(7633), // Rule ID 300 //
7815 /* 7627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
7816 /* 7630 */ // Combiner Rule #193: mulh_to_lshr; wip_match_opcode 'G_UMULH'
7817 /* 7630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7818 /* 7633 */ // Label 401: @7633
7819 /* 7633 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(7644), // Rule ID 366 //
7820 /* 7638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7821 /* 7641 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
7822 /* 7641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7823 /* 7644 */ // Label 402: @7644
7824 /* 7644 */ GIM_Reject,
7825 /* 7645 */ // Label 55: @7645
7826 /* 7645 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(7656), // Rule ID 367 //
7827 /* 7650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7828 /* 7653 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
7829 /* 7653 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7830 /* 7656 */ // Label 403: @7656
7831 /* 7656 */ GIM_Reject,
7832 /* 7657 */ // Label 56: @7657
7833 /* 7657 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(7668), // Rule ID 368 //
7834 /* 7662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7835 /* 7665 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
7836 /* 7665 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7837 /* 7668 */ // Label 404: @7668
7838 /* 7668 */ GIM_Reject,
7839 /* 7669 */ // Label 57: @7669
7840 /* 7669 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(7680), // Rule ID 369 //
7841 /* 7674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7842 /* 7677 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
7843 /* 7677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7844 /* 7680 */ // Label 405: @7680
7845 /* 7680 */ GIM_Reject,
7846 /* 7681 */ // Label 58: @7681
7847 /* 7681 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(7692), // Rule ID 225 //
7848 /* 7686 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
7849 /* 7689 */ // Combiner Rule #169: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
7850 /* 7689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7851 /* 7692 */ // Label 406: @7692
7852 /* 7692 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(7703), // Rule ID 229 //
7853 /* 7697 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
7854 /* 7700 */ // Combiner Rule #170: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
7855 /* 7700 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7856 /* 7703 */ // Label 407: @7703
7857 /* 7703 */ GIM_Reject,
7858 /* 7704 */ // Label 59: @7704
7859 /* 7704 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(7715), // Rule ID 224 //
7860 /* 7709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
7861 /* 7712 */ // Combiner Rule #169: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
7862 /* 7712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7863 /* 7715 */ // Label 408: @7715
7864 /* 7715 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(7726), // Rule ID 230 //
7865 /* 7720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
7866 /* 7723 */ // Combiner Rule #170: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
7867 /* 7723 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7868 /* 7726 */ // Label 409: @7726
7869 /* 7726 */ GIM_Reject,
7870 /* 7727 */ // Label 60: @7727
7871 /* 7727 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(7738), // Rule ID 370 //
7872 /* 7732 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7873 /* 7735 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
7874 /* 7735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7875 /* 7738 */ // Label 410: @7738
7876 /* 7738 */ GIM_Reject,
7877 /* 7739 */ // Label 61: @7739
7878 /* 7739 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(7750), // Rule ID 371 //
7879 /* 7744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7880 /* 7747 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
7881 /* 7747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7882 /* 7750 */ // Label 411: @7750
7883 /* 7750 */ GIM_Reject,
7884 /* 7751 */ // Label 62: @7751
7885 /* 7751 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(7762), // Rule ID 372 //
7886 /* 7756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7887 /* 7759 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
7888 /* 7759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7889 /* 7762 */ // Label 412: @7762
7890 /* 7762 */ GIM_Reject,
7891 /* 7763 */ // Label 63: @7763
7892 /* 7763 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(7774), // Rule ID 373 //
7893 /* 7768 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
7894 /* 7771 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
7895 /* 7771 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
7896 /* 7774 */ // Label 413: @7774
7897 /* 7774 */ GIM_Reject,
7898 /* 7775 */ // Label 64: @7775
7899 /* 7775 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(7786), // Rule ID 301 //
7900 /* 7780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7901 /* 7783 */ // Combiner Rule #194: redundant_neg_operands; wip_match_opcode 'G_FADD'
7902 /* 7783 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
7903 /* 7786 */ // Label 414: @7786
7904 /* 7786 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(7797), // Rule ID 308 //
7905 /* 7791 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
7906 /* 7794 */ // Combiner Rule #196: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7907 /* 7794 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
7908 /* 7797 */ // Label 415: @7797
7909 /* 7797 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(7808), // Rule ID 309 //
7910 /* 7802 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7911 /* 7805 */ // Combiner Rule #197: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7912 /* 7805 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7913 /* 7808 */ // Label 416: @7808
7914 /* 7808 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(7819), // Rule ID 310 //
7915 /* 7813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
7916 /* 7816 */ // Combiner Rule #198: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7917 /* 7816 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7918 /* 7819 */ // Label 417: @7819
7919 /* 7819 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(7830), // Rule ID 311 //
7920 /* 7824 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
7921 /* 7827 */ // Combiner Rule #199: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7922 /* 7827 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7923 /* 7830 */ // Label 418: @7830
7924 /* 7830 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(7841), // Rule ID 334 //
7925 /* 7835 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7926 /* 7838 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FADD'
7927 /* 7838 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
7928 /* 7841 */ // Label 419: @7841
7929 /* 7841 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(7852), // Rule ID 374 //
7930 /* 7846 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
7931 /* 7849 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
7932 /* 7849 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
7933 /* 7852 */ // Label 420: @7852
7934 /* 7852 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(7875), // Rule ID 148 //
7935 /* 7857 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
7936 /* 7860 */ // MIs[0] dst
7937 /* 7860 */ // No operand predicates
7938 /* 7860 */ // MIs[0] x
7939 /* 7860 */ // No operand predicates
7940 /* 7860 */ // MIs[0] y
7941 /* 7860 */ // No operand predicates
7942 /* 7860 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7943 /* 7864 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7944 /* 7869 */ // Combiner Rule #108: right_identity_neg_zero_fp
7945 /* 7869 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7946 /* 7874 */ GIR_EraseRootFromParent_Done,
7947 /* 7875 */ // Label 421: @7875
7948 /* 7875 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(7904), // Rule ID 149 //
7949 /* 7880 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
7950 /* 7883 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
7951 /* 7889 */ // MIs[0] dst
7952 /* 7889 */ // No operand predicates
7953 /* 7889 */ // MIs[0] x
7954 /* 7889 */ // No operand predicates
7955 /* 7889 */ // MIs[0] y
7956 /* 7889 */ // No operand predicates
7957 /* 7889 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
7958 /* 7893 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7959 /* 7898 */ // Combiner Rule #109: right_identity_neg_zero_fp_nsz
7960 /* 7898 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7961 /* 7903 */ GIR_EraseRootFromParent_Done,
7962 /* 7904 */ // Label 422: @7904
7963 /* 7904 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7915), // Rule ID 274 //
7964 /* 7909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
7965 /* 7912 */ // MIs[0] d
7966 /* 7912 */ // No operand predicates
7967 /* 7912 */ // MIs[0] mi.src0
7968 /* 7912 */ // No operand predicates
7969 /* 7912 */ // MIs[0] mi.src1
7970 /* 7912 */ // No operand predicates
7971 /* 7912 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[0]]
7972 /* 7912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7973 /* 7915 */ // Label 423: @7915
7974 /* 7915 */ GIM_Reject,
7975 /* 7916 */ // Label 65: @7916
7976 /* 7916 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7927), // Rule ID 302 //
7977 /* 7921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7978 /* 7924 */ // Combiner Rule #194: redundant_neg_operands; wip_match_opcode 'G_FSUB'
7979 /* 7924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
7980 /* 7927 */ // Label 424: @7927
7981 /* 7927 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7938), // Rule ID 312 //
7982 /* 7932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7983 /* 7935 */ // Combiner Rule #200: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7984 /* 7935 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7985 /* 7938 */ // Label 425: @7938
7986 /* 7938 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7949), // Rule ID 313 //
7987 /* 7943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
7988 /* 7946 */ // Combiner Rule #201: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7989 /* 7946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7990 /* 7949 */ // Label 426: @7949
7991 /* 7949 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7960), // Rule ID 314 //
7992 /* 7954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
7993 /* 7957 */ // Combiner Rule #202: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7994 /* 7957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7995 /* 7960 */ // Label 427: @7960
7996 /* 7960 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7971), // Rule ID 315 //
7997 /* 7965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
7998 /* 7968 */ // Combiner Rule #203: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7999 /* 7968 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
8000 /* 7971 */ // Label 428: @7971
8001 /* 7971 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7982), // Rule ID 335 //
8002 /* 7976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8003 /* 7979 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FSUB'
8004 /* 7979 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8005 /* 7982 */ // Label 429: @7982
8006 /* 7982 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7993), // Rule ID 352 //
8007 /* 7987 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8008 /* 7990 */ // Combiner Rule #215: fsub_to_fneg; wip_match_opcode 'G_FSUB'
8009 /* 7990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
8010 /* 7993 */ // Label 430: @7993
8011 /* 7993 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(8004), // Rule ID 275 //
8012 /* 7998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8013 /* 8001 */ // MIs[0] d
8014 /* 8001 */ // No operand predicates
8015 /* 8001 */ // MIs[0] mi.src0
8016 /* 8001 */ // No operand predicates
8017 /* 8001 */ // MIs[0] mi.src1
8018 /* 8001 */ // No operand predicates
8019 /* 8001 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[1]]
8020 /* 8001 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8021 /* 8004 */ // Label 431: @8004
8022 /* 8004 */ GIM_Reject,
8023 /* 8005 */ // Label 66: @8005
8024 /* 8005 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(8016), // Rule ID 303 //
8025 /* 8010 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8026 /* 8013 */ // Combiner Rule #194: redundant_neg_operands; wip_match_opcode 'G_FMUL'
8027 /* 8013 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8028 /* 8016 */ // Label 432: @8016
8029 /* 8016 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(8027), // Rule ID 333 //
8030 /* 8021 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8031 /* 8024 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FMUL'
8032 /* 8024 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8033 /* 8027 */ // Label 433: @8027
8034 /* 8027 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(8038), // Rule ID 375 //
8035 /* 8032 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8036 /* 8035 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
8037 /* 8035 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8038 /* 8038 */ // Label 434: @8038
8039 /* 8038 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(8061), // Rule ID 138 //
8040 /* 8043 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
8041 /* 8046 */ // MIs[0] dst
8042 /* 8046 */ // No operand predicates
8043 /* 8046 */ // MIs[0] x
8044 /* 8046 */ // No operand predicates
8045 /* 8046 */ // MIs[0] y
8046 /* 8046 */ // No operand predicates
8047 /* 8046 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
8048 /* 8050 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8049 /* 8055 */ // Combiner Rule #100: right_identity_one_fp
8050 /* 8055 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8051 /* 8060 */ GIR_EraseRootFromParent_Done,
8052 /* 8061 */ // Label 435: @8061
8053 /* 8061 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(8081), // Rule ID 150 //
8054 /* 8066 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
8055 /* 8069 */ // MIs[0] dst
8056 /* 8069 */ // No operand predicates
8057 /* 8069 */ // MIs[0] x
8058 /* 8069 */ // No operand predicates
8059 /* 8069 */ // MIs[0] y
8060 /* 8069 */ // No operand predicates
8061 /* 8069 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
8062 /* 8073 */ // Combiner Rule #110: right_identity_neg_one_fp
8063 /* 8073 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
8064 /* 8076 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8065 /* 8078 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
8066 /* 8080 */ GIR_EraseRootFromParent_Done,
8067 /* 8081 */ // Label 436: @8081
8068 /* 8081 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(8092), // Rule ID 276 //
8069 /* 8086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8070 /* 8089 */ // MIs[0] d
8071 /* 8089 */ // No operand predicates
8072 /* 8089 */ // MIs[0] mi.src0
8073 /* 8089 */ // No operand predicates
8074 /* 8089 */ // MIs[0] mi.src1
8075 /* 8089 */ // No operand predicates
8076 /* 8089 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[2]]
8077 /* 8089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8078 /* 8092 */ // Label 437: @8092
8079 /* 8092 */ GIM_Reject,
8080 /* 8093 */ // Label 67: @8093
8081 /* 8093 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(8104), // Rule ID 287 //
8082 /* 8098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
8083 /* 8101 */ // Combiner Rule #189: constant_fold_fma; wip_match_opcode 'G_FMA'
8084 /* 8101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8085 /* 8104 */ // Label 438: @8104
8086 /* 8104 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(8115), // Rule ID 306 //
8087 /* 8109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8088 /* 8112 */ // Combiner Rule #194: redundant_neg_operands; wip_match_opcode 'G_FMA'
8089 /* 8112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8090 /* 8115 */ // Label 439: @8115
8091 /* 8115 */ GIM_Reject,
8092 /* 8116 */ // Label 68: @8116
8093 /* 8116 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(8127), // Rule ID 286 //
8094 /* 8121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
8095 /* 8124 */ // Combiner Rule #189: constant_fold_fma; wip_match_opcode 'G_FMAD'
8096 /* 8124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
8097 /* 8127 */ // Label 440: @8127
8098 /* 8127 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(8138), // Rule ID 305 //
8099 /* 8132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8100 /* 8135 */ // Combiner Rule #194: redundant_neg_operands; wip_match_opcode 'G_FMAD'
8101 /* 8135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8102 /* 8138 */ // Label 441: @8138
8103 /* 8138 */ GIM_Reject,
8104 /* 8139 */ // Label 69: @8139
8105 /* 8139 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(8150), // Rule ID 304 //
8106 /* 8144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8107 /* 8147 */ // Combiner Rule #194: redundant_neg_operands; wip_match_opcode 'G_FDIV'
8108 /* 8147 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
8109 /* 8150 */ // Label 442: @8150
8110 /* 8150 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(8161), // Rule ID 336 //
8111 /* 8155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8112 /* 8158 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FDIV'
8113 /* 8158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8114 /* 8161 */ // Label 443: @8161
8115 /* 8161 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(8172), // Rule ID 277 //
8116 /* 8166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8117 /* 8169 */ // MIs[0] d
8118 /* 8169 */ // No operand predicates
8119 /* 8169 */ // MIs[0] mi.src0
8120 /* 8169 */ // No operand predicates
8121 /* 8169 */ // MIs[0] mi.src1
8122 /* 8169 */ // No operand predicates
8123 /* 8169 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[3]]
8124 /* 8169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8125 /* 8172 */ // Label 444: @8172
8126 /* 8172 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(8183), // Rule ID 349 //
8127 /* 8177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
8128 /* 8180 */ // MIs[0] dst
8129 /* 8180 */ // No operand predicates
8130 /* 8180 */ // MIs[0] src1
8131 /* 8180 */ // No operand predicates
8132 /* 8180 */ // MIs[0] src2
8133 /* 8180 */ // No operand predicates
8134 /* 8180 */ // Combiner Rule #212: fdiv_repeated_divison
8135 /* 8180 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
8136 /* 8183 */ // Label 445: @8183
8137 /* 8183 */ GIM_Reject,
8138 /* 8184 */ // Label 70: @8184
8139 /* 8184 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(8195), // Rule ID 337 //
8140 /* 8189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8141 /* 8192 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FREM'
8142 /* 8192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8143 /* 8195 */ // Label 446: @8195
8144 /* 8195 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(8206), // Rule ID 278 //
8145 /* 8200 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8146 /* 8203 */ // MIs[0] d
8147 /* 8203 */ // No operand predicates
8148 /* 8203 */ // MIs[0] mi.src0
8149 /* 8203 */ // No operand predicates
8150 /* 8203 */ // MIs[0] mi.src1
8151 /* 8203 */ // No operand predicates
8152 /* 8203 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[4]]
8153 /* 8203 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8154 /* 8206 */ // Label 447: @8206
8155 /* 8206 */ GIM_Reject,
8156 /* 8207 */ // Label 71: @8207
8157 /* 8207 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(8228), // Rule ID 218 //
8158 /* 8212 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
8159 /* 8215 */ // MIs[0] dst
8160 /* 8215 */ // No operand predicates
8161 /* 8215 */ // MIs[0] float
8162 /* 8215 */ // No operand predicates
8163 /* 8215 */ // MIs[0] int
8164 /* 8215 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8165 /* 8219 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8166 /* 8223 */ // MIs[1] imm
8167 /* 8223 */ // No operand predicates
8168 /* 8223 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8169 /* 8225 */ // Combiner Rule #166: expand_const_fpowi
8170 /* 8225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
8171 /* 8228 */ // Label 448: @8228
8172 /* 8228 */ GIM_Reject,
8173 /* 8229 */ // Label 72: @8229
8174 /* 8229 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(8250), // Rule ID 192 //
8175 /* 8234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
8176 /* 8237 */ // MIs[0] dst
8177 /* 8237 */ // No operand predicates
8178 /* 8237 */ // MIs[0] src0
8179 /* 8237 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8180 /* 8241 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8181 /* 8245 */ // MIs[1] cst
8182 /* 8245 */ // No operand predicates
8183 /* 8245 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8184 /* 8247 */ // Combiner Rule #148: constant_fold_flog2
8185 /* 8247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8186 /* 8250 */ // Label 449: @8250
8187 /* 8250 */ GIM_Reject,
8188 /* 8251 */ // Label 73: @8251
8189 /* 8251 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(8272), // Rule ID 189 //
8190 /* 8256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
8191 /* 8259 */ // MIs[0] dst
8192 /* 8259 */ // No operand predicates
8193 /* 8259 */ // MIs[0] src0
8194 /* 8259 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8195 /* 8263 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8196 /* 8267 */ // MIs[1] cst
8197 /* 8267 */ // No operand predicates
8198 /* 8267 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8199 /* 8269 */ // Combiner Rule #145: constant_fold_fneg
8200 /* 8269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8201 /* 8272 */ // Label 450: @8272
8202 /* 8272 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(8301), // Rule ID 136 //
8203 /* 8277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
8204 /* 8280 */ // MIs[0] dst
8205 /* 8280 */ // No operand predicates
8206 /* 8280 */ // MIs[0] t
8207 /* 8280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8208 /* 8284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8209 /* 8288 */ // MIs[1] src
8210 /* 8288 */ // No operand predicates
8211 /* 8288 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8212 /* 8293 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8213 /* 8295 */ // Combiner Rule #98: fneg_fneg_fold
8214 /* 8295 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
8215 /* 8300 */ GIR_EraseRootFromParent_Done,
8216 /* 8301 */ // Label 451: @8301
8217 /* 8301 */ GIM_Reject,
8218 /* 8302 */ // Label 74: @8302
8219 /* 8302 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(8323), // Rule ID 194 //
8220 /* 8307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
8221 /* 8310 */ // MIs[0] dst
8222 /* 8310 */ // No operand predicates
8223 /* 8310 */ // MIs[0] src0
8224 /* 8310 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8225 /* 8314 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8226 /* 8318 */ // MIs[1] cst
8227 /* 8318 */ // No operand predicates
8228 /* 8318 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8229 /* 8320 */ // Combiner Rule #150: constant_fold_fpext
8230 /* 8320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8231 /* 8323 */ // Label 452: @8323
8232 /* 8323 */ GIM_Reject,
8233 /* 8324 */ // Label 75: @8324
8234 /* 8324 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(8345), // Rule ID 193 //
8235 /* 8329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8236 /* 8332 */ // MIs[0] dst
8237 /* 8332 */ // No operand predicates
8238 /* 8332 */ // MIs[0] src0
8239 /* 8332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8240 /* 8336 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8241 /* 8340 */ // MIs[1] cst
8242 /* 8340 */ // No operand predicates
8243 /* 8340 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8244 /* 8342 */ // Combiner Rule #149: constant_fold_fptrunc
8245 /* 8342 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8246 /* 8345 */ // Label 453: @8345
8247 /* 8345 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(8366), // Rule ID 147 //
8248 /* 8350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
8249 /* 8353 */ // MIs[0] dst
8250 /* 8353 */ // No operand predicates
8251 /* 8353 */ // MIs[0] src1
8252 /* 8353 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8253 /* 8357 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
8254 /* 8361 */ // MIs[1] src0
8255 /* 8361 */ // No operand predicates
8256 /* 8361 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8257 /* 8363 */ // Combiner Rule #107: fptrunc_fpext_fold
8258 /* 8363 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
8259 /* 8366 */ // Label 454: @8366
8260 /* 8366 */ GIM_Reject,
8261 /* 8367 */ // Label 76: @8367
8262 /* 8367 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(8388), // Rule ID 98 //
8263 /* 8372 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8264 /* 8375 */ // MIs[0] dst
8265 /* 8375 */ // No operand predicates
8266 /* 8375 */ // MIs[0] __unary_undef_to_undef_match_0.x
8267 /* 8375 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8268 /* 8379 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8269 /* 8383 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8270 /* 8385 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
8271 /* 8385 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8272 /* 8388 */ // Label 455: @8388
8273 /* 8388 */ GIM_Reject,
8274 /* 8389 */ // Label 77: @8389
8275 /* 8389 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(8410), // Rule ID 99 //
8276 /* 8394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8277 /* 8397 */ // MIs[0] dst
8278 /* 8397 */ // No operand predicates
8279 /* 8397 */ // MIs[0] __unary_undef_to_undef_match_0.x
8280 /* 8397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8281 /* 8401 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8282 /* 8405 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8283 /* 8407 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
8284 /* 8407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
8285 /* 8410 */ // Label 456: @8410
8286 /* 8410 */ GIM_Reject,
8287 /* 8411 */ // Label 78: @8411
8288 /* 8411 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(8422), // Rule ID 82 //
8289 /* 8416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
8290 /* 8419 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
8291 /* 8419 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8292 /* 8422 */ // Label 457: @8422
8293 /* 8422 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(8437), // Rule ID 202 //
8294 /* 8427 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
8295 /* 8430 */ // MIs[0] dst
8296 /* 8430 */ // No operand predicates
8297 /* 8430 */ // MIs[0] Operand 1
8298 /* 8430 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
8299 /* 8434 */ // Combiner Rule #158: itof_const_zero_fold_si
8300 /* 8434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8301 /* 8437 */ // Label 458: @8437
8302 /* 8437 */ GIM_Reject,
8303 /* 8438 */ // Label 79: @8438
8304 /* 8438 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(8449), // Rule ID 81 //
8305 /* 8443 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
8306 /* 8446 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
8307 /* 8446 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8308 /* 8449 */ // Label 459: @8449
8309 /* 8449 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(8464), // Rule ID 203 //
8310 /* 8454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
8311 /* 8457 */ // MIs[0] dst
8312 /* 8457 */ // No operand predicates
8313 /* 8457 */ // MIs[0] Operand 1
8314 /* 8457 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
8315 /* 8461 */ // Combiner Rule #159: itof_const_zero_fold_ui
8316 /* 8461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8317 /* 8464 */ // Label 460: @8464
8318 /* 8464 */ GIM_Reject,
8319 /* 8465 */ // Label 80: @8465
8320 /* 8465 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(8494), // Rule ID 25 //
8321 /* 8470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
8322 /* 8473 */ // MIs[0] dst
8323 /* 8473 */ // No operand predicates
8324 /* 8473 */ // MIs[0] src
8325 /* 8473 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8326 /* 8477 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
8327 /* 8481 */ // MIs[1] __idempotent_prop_match_0.x
8328 /* 8481 */ // No operand predicates
8329 /* 8481 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8330 /* 8486 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8331 /* 8488 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
8332 /* 8488 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8333 /* 8493 */ GIR_EraseRootFromParent_Done,
8334 /* 8494 */ // Label 461: @8494
8335 /* 8494 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(8515), // Rule ID 190 //
8336 /* 8499 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8337 /* 8502 */ // MIs[0] dst
8338 /* 8502 */ // No operand predicates
8339 /* 8502 */ // MIs[0] src0
8340 /* 8502 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8341 /* 8506 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8342 /* 8510 */ // MIs[1] cst
8343 /* 8510 */ // No operand predicates
8344 /* 8510 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8345 /* 8512 */ // Combiner Rule #146: constant_fold_fabs
8346 /* 8512 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8347 /* 8515 */ // Label 462: @8515
8348 /* 8515 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(8543), // Rule ID 299 //
8349 /* 8520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8350 /* 8523 */ // MIs[0] dst
8351 /* 8523 */ // No operand predicates
8352 /* 8523 */ // MIs[0] tmp
8353 /* 8523 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8354 /* 8527 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
8355 /* 8531 */ // MIs[1] x
8356 /* 8531 */ // No operand predicates
8357 /* 8531 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8358 /* 8533 */ // Combiner Rule #192: fabs_fneg_fold
8359 /* 8533 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
8360 /* 8536 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8361 /* 8538 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8362 /* 8542 */ GIR_EraseRootFromParent_Done,
8363 /* 8543 */ // Label 463: @8543
8364 /* 8543 */ GIM_Reject,
8365 /* 8544 */ // Label 81: @8544
8366 /* 8544 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(8555), // Rule ID 279 //
8367 /* 8549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8368 /* 8552 */ // MIs[0] d
8369 /* 8552 */ // No operand predicates
8370 /* 8552 */ // MIs[0] mi.src0
8371 /* 8552 */ // No operand predicates
8372 /* 8552 */ // MIs[0] mi.src1
8373 /* 8552 */ // No operand predicates
8374 /* 8552 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[5]]
8375 /* 8552 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8376 /* 8555 */ // Label 464: @8555
8377 /* 8555 */ GIM_Reject,
8378 /* 8556 */ // Label 82: @8556
8379 /* 8556 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(8585), // Rule ID 26 //
8380 /* 8561 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
8381 /* 8564 */ // MIs[0] dst
8382 /* 8564 */ // No operand predicates
8383 /* 8564 */ // MIs[0] src
8384 /* 8564 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8385 /* 8568 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
8386 /* 8572 */ // MIs[1] __idempotent_prop_match_0.x
8387 /* 8572 */ // No operand predicates
8388 /* 8572 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8389 /* 8577 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8390 /* 8579 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
8391 /* 8579 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8392 /* 8584 */ GIR_EraseRootFromParent_Done,
8393 /* 8585 */ // Label 465: @8585
8394 /* 8585 */ GIM_Reject,
8395 /* 8586 */ // Label 83: @8586
8396 /* 8586 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(8597), // Rule ID 214 //
8397 /* 8591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
8398 /* 8594 */ // Combiner Rule #165: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
8399 /* 8594 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8400 /* 8597 */ // Label 466: @8597
8401 /* 8597 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(8608), // Rule ID 338 //
8402 /* 8602 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8403 /* 8605 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
8404 /* 8605 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8405 /* 8608 */ // Label 467: @8608
8406 /* 8608 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(8619), // Rule ID 376 //
8407 /* 8613 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8408 /* 8616 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
8409 /* 8616 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8410 /* 8619 */ // Label 468: @8619
8411 /* 8619 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(8630), // Rule ID 280 //
8412 /* 8624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8413 /* 8627 */ // MIs[0] d
8414 /* 8627 */ // No operand predicates
8415 /* 8627 */ // MIs[0] mi.src0
8416 /* 8627 */ // No operand predicates
8417 /* 8627 */ // MIs[0] mi.src1
8418 /* 8627 */ // No operand predicates
8419 /* 8627 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[6]]
8420 /* 8627 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8421 /* 8630 */ // Label 469: @8630
8422 /* 8630 */ GIM_Reject,
8423 /* 8631 */ // Label 84: @8631
8424 /* 8631 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(8642), // Rule ID 215 //
8425 /* 8636 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
8426 /* 8639 */ // Combiner Rule #165: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
8427 /* 8639 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8428 /* 8642 */ // Label 470: @8642
8429 /* 8642 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(8653), // Rule ID 339 //
8430 /* 8647 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8431 /* 8650 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
8432 /* 8650 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8433 /* 8653 */ // Label 471: @8653
8434 /* 8653 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(8664), // Rule ID 377 //
8435 /* 8658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8436 /* 8661 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
8437 /* 8661 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8438 /* 8664 */ // Label 472: @8664
8439 /* 8664 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(8675), // Rule ID 281 //
8440 /* 8669 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8441 /* 8672 */ // MIs[0] d
8442 /* 8672 */ // No operand predicates
8443 /* 8672 */ // MIs[0] mi.src0
8444 /* 8672 */ // No operand predicates
8445 /* 8672 */ // MIs[0] mi.src1
8446 /* 8672 */ // No operand predicates
8447 /* 8672 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[7]]
8448 /* 8672 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8449 /* 8675 */ // Label 473: @8675
8450 /* 8675 */ GIM_Reject,
8451 /* 8676 */ // Label 85: @8676
8452 /* 8676 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(8687), // Rule ID 378 //
8453 /* 8681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8454 /* 8684 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
8455 /* 8684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8456 /* 8687 */ // Label 474: @8687
8457 /* 8687 */ GIM_Reject,
8458 /* 8688 */ // Label 86: @8688
8459 /* 8688 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(8699), // Rule ID 379 //
8460 /* 8693 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8461 /* 8696 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
8462 /* 8696 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8463 /* 8699 */ // Label 475: @8699
8464 /* 8699 */ GIM_Reject,
8465 /* 8700 */ // Label 87: @8700
8466 /* 8700 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(8711), // Rule ID 216 //
8467 /* 8705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
8468 /* 8708 */ // Combiner Rule #165: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
8469 /* 8708 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8470 /* 8711 */ // Label 476: @8711
8471 /* 8711 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(8722), // Rule ID 340 //
8472 /* 8716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8473 /* 8719 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
8474 /* 8719 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8475 /* 8722 */ // Label 477: @8722
8476 /* 8722 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(8733), // Rule ID 380 //
8477 /* 8727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8478 /* 8730 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
8479 /* 8730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8480 /* 8733 */ // Label 478: @8733
8481 /* 8733 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(8744), // Rule ID 282 //
8482 /* 8738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8483 /* 8741 */ // MIs[0] d
8484 /* 8741 */ // No operand predicates
8485 /* 8741 */ // MIs[0] mi.src0
8486 /* 8741 */ // No operand predicates
8487 /* 8741 */ // MIs[0] mi.src1
8488 /* 8741 */ // No operand predicates
8489 /* 8741 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[8]]
8490 /* 8741 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8491 /* 8744 */ // Label 479: @8744
8492 /* 8744 */ GIM_Reject,
8493 /* 8745 */ // Label 88: @8745
8494 /* 8745 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(8756), // Rule ID 217 //
8495 /* 8750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
8496 /* 8753 */ // Combiner Rule #165: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
8497 /* 8753 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8498 /* 8756 */ // Label 480: @8756
8499 /* 8756 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(8767), // Rule ID 341 //
8500 /* 8761 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8501 /* 8764 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
8502 /* 8764 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8503 /* 8767 */ // Label 481: @8767
8504 /* 8767 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(8778), // Rule ID 381 //
8505 /* 8772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8506 /* 8775 */ // Combiner Rule #217: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
8507 /* 8775 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
8508 /* 8778 */ // Label 482: @8778
8509 /* 8778 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(8789), // Rule ID 283 //
8510 /* 8783 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8511 /* 8786 */ // MIs[0] d
8512 /* 8786 */ // No operand predicates
8513 /* 8786 */ // MIs[0] mi.src0
8514 /* 8786 */ // No operand predicates
8515 /* 8786 */ // MIs[0] mi.src1
8516 /* 8786 */ // No operand predicates
8517 /* 8786 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[9]]
8518 /* 8786 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8519 /* 8789 */ // Label 483: @8789
8520 /* 8789 */ GIM_Reject,
8521 /* 8790 */ // Label 89: @8790
8522 /* 8790 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(8801), // Rule ID 284 //
8523 /* 8795 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8524 /* 8798 */ // MIs[0] d
8525 /* 8798 */ // No operand predicates
8526 /* 8798 */ // MIs[0] mi.src0
8527 /* 8798 */ // No operand predicates
8528 /* 8798 */ // MIs[0] mi.src1
8529 /* 8798 */ // No operand predicates
8530 /* 8798 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[10]]
8531 /* 8798 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8532 /* 8801 */ // Label 484: @8801
8533 /* 8801 */ GIM_Reject,
8534 /* 8802 */ // Label 90: @8802
8535 /* 8802 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8813), // Rule ID 285 //
8536 /* 8807 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8537 /* 8810 */ // MIs[0] d
8538 /* 8810 */ // No operand predicates
8539 /* 8810 */ // MIs[0] mi.src0
8540 /* 8810 */ // No operand predicates
8541 /* 8810 */ // MIs[0] mi.src1
8542 /* 8810 */ // No operand predicates
8543 /* 8810 */ // Combiner Rule #188: constant_fold_fp_binop @ [mi[11]]
8544 /* 8810 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
8545 /* 8813 */ // Label 485: @8813
8546 /* 8813 */ GIM_Reject,
8547 /* 8814 */ // Label 91: @8814
8548 /* 8814 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8825), // Rule ID 159 //
8549 /* 8819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
8550 /* 8822 */ // Combiner Rule #115: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
8551 /* 8822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
8552 /* 8825 */ // Label 486: @8825
8553 /* 8825 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8836), // Rule ID 161 //
8554 /* 8830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
8555 /* 8833 */ // Combiner Rule #117: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
8556 /* 8833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
8557 /* 8836 */ // Label 487: @8836
8558 /* 8836 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8847), // Rule ID 204 //
8559 /* 8841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
8560 /* 8844 */ // Combiner Rule #160: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
8561 /* 8844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8562 /* 8847 */ // Label 488: @8847
8563 /* 8847 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8858), // Rule ID 220 //
8564 /* 8852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
8565 /* 8855 */ // Combiner Rule #168: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
8566 /* 8855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
8567 /* 8858 */ // Label 489: @8858
8568 /* 8858 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8869), // Rule ID 257 //
8569 /* 8863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
8570 /* 8866 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
8571 /* 8866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
8572 /* 8869 */ // Label 490: @8869
8573 /* 8869 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8880), // Rule ID 318 //
8574 /* 8874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8575 /* 8877 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
8576 /* 8877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8577 /* 8880 */ // Label 491: @8880
8578 /* 8880 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8903), // Rule ID 117 //
8579 /* 8885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8580 /* 8888 */ // MIs[0] dst
8581 /* 8888 */ // No operand predicates
8582 /* 8888 */ // MIs[0] lhs
8583 /* 8888 */ // No operand predicates
8584 /* 8888 */ // MIs[0] Operand 2
8585 /* 8888 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8586 /* 8892 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8587 /* 8897 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
8588 /* 8897 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8589 /* 8902 */ GIR_EraseRootFromParent_Done,
8590 /* 8903 */ // Label 492: @8903
8591 /* 8903 */ GIM_Reject,
8592 /* 8904 */ // Label 92: @8904
8593 /* 8904 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8915), // Rule ID 270 //
8594 /* 8909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
8595 /* 8912 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_SMIN'
8596 /* 8912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
8597 /* 8915 */ // Label 493: @8915
8598 /* 8915 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8926), // Rule ID 329 //
8599 /* 8920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8600 /* 8923 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_SMIN'
8601 /* 8923 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8602 /* 8926 */ // Label 494: @8926
8603 /* 8926 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8937), // Rule ID 358 //
8604 /* 8931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8605 /* 8934 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
8606 /* 8934 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8607 /* 8937 */ // Label 495: @8937
8608 /* 8937 */ GIM_Reject,
8609 /* 8938 */ // Label 93: @8938
8610 /* 8938 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8949), // Rule ID 271 //
8611 /* 8943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
8612 /* 8946 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_SMAX'
8613 /* 8946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
8614 /* 8949 */ // Label 496: @8949
8615 /* 8949 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8960), // Rule ID 330 //
8616 /* 8954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8617 /* 8957 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_SMAX'
8618 /* 8957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8619 /* 8960 */ // Label 497: @8960
8620 /* 8960 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8971), // Rule ID 359 //
8621 /* 8965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8622 /* 8968 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
8623 /* 8968 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8624 /* 8971 */ // Label 498: @8971
8625 /* 8971 */ GIM_Reject,
8626 /* 8972 */ // Label 94: @8972
8627 /* 8972 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8983), // Rule ID 272 //
8628 /* 8977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
8629 /* 8980 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_UMIN'
8630 /* 8980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
8631 /* 8983 */ // Label 499: @8983
8632 /* 8983 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8994), // Rule ID 331 //
8633 /* 8988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8634 /* 8991 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_UMIN'
8635 /* 8991 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8636 /* 8994 */ // Label 500: @8994
8637 /* 8994 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(9005), // Rule ID 360 //
8638 /* 8999 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8639 /* 9002 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
8640 /* 9002 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8641 /* 9005 */ // Label 501: @9005
8642 /* 9005 */ GIM_Reject,
8643 /* 9006 */ // Label 95: @9006
8644 /* 9006 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(9017), // Rule ID 273 //
8645 /* 9011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
8646 /* 9014 */ // Combiner Rule #187: constant_fold_binop; wip_match_opcode 'G_UMAX'
8647 /* 9014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
8648 /* 9017 */ // Label 502: @9017
8649 /* 9017 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(9028), // Rule ID 332 //
8650 /* 9022 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
8651 /* 9025 */ // Combiner Rule #204: fold_binop_into_select; wip_match_opcode 'G_UMAX'
8652 /* 9025 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
8653 /* 9028 */ // Label 503: @9028
8654 /* 9028 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(9039), // Rule ID 361 //
8655 /* 9033 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
8656 /* 9036 */ // Combiner Rule #216: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
8657 /* 9036 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
8658 /* 9039 */ // Label 504: @9039
8659 /* 9039 */ GIM_Reject,
8660 /* 9040 */ // Label 96: @9040
8661 /* 9040 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(9051), // Rule ID 92 //
8662 /* 9045 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
8663 /* 9048 */ // Combiner Rule #82: unary_undef_to_zero; wip_match_opcode 'G_ABS'
8664 /* 9048 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
8665 /* 9051 */ // Label 505: @9051
8666 /* 9051 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(9062), // Rule ID 296 //
8667 /* 9056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
8668 /* 9059 */ // MIs[0] dst
8669 /* 9059 */ // No operand predicates
8670 /* 9059 */ // MIs[0] mi.src
8671 /* 9059 */ // No operand predicates
8672 /* 9059 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[5]]
8673 /* 9059 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
8674 /* 9062 */ // Label 506: @9062
8675 /* 9062 */ GIM_Reject,
8676 /* 9063 */ // Label 97: @9063
8677 /* 9063 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(9074), // Rule ID 188 //
8678 /* 9068 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
8679 /* 9071 */ // Combiner Rule #144: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
8680 /* 9071 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
8681 /* 9074 */ // Label 507: @9074
8682 /* 9074 */ GIM_Reject,
8683 /* 9075 */ // Label 98: @9075
8684 /* 9075 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(9086), // Rule ID 32 //
8685 /* 9080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
8686 /* 9083 */ // Combiner Rule #30: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
8687 /* 9083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
8688 /* 9086 */ // Label 508: @9086
8689 /* 9086 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(9097), // Rule ID 73 //
8690 /* 9091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
8691 /* 9094 */ // Combiner Rule #71: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
8692 /* 9094 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
8693 /* 9097 */ // Label 509: @9097
8694 /* 9097 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(9108), // Rule ID 107 //
8695 /* 9102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8696 /* 9105 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
8697 /* 9105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
8698 /* 9108 */ // Label 510: @9108
8699 /* 9108 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(9147), // Rule ID 44 //
8700 /* 9113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
8701 /* 9116 */ // MIs[0] root
8702 /* 9116 */ // No operand predicates
8703 /* 9116 */ // MIs[0] src
8704 /* 9116 */ // No operand predicates
8705 /* 9116 */ // MIs[0] elt
8706 /* 9116 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8707 /* 9120 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
8708 /* 9124 */ // MIs[1] src
8709 /* 9124 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
8710 /* 9129 */ // MIs[1] idx
8711 /* 9129 */ // No operand predicates
8712 /* 9129 */ // MIs[0] idx
8713 /* 9129 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
8714 /* 9134 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8715 /* 9139 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8716 /* 9141 */ // Combiner Rule #42: insert_vector_element_extract_vector_element
8717 /* 9141 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8718 /* 9146 */ GIR_EraseRootFromParent_Done,
8719 /* 9147 */ // Label 511: @9147
8720 /* 9147 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(9180), // Rule ID 30 //
8721 /* 9152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
8722 /* 9155 */ // MIs[0] root
8723 /* 9155 */ // No operand predicates
8724 /* 9155 */ // MIs[0] src
8725 /* 9155 */ // No operand predicates
8726 /* 9155 */ // MIs[0] elt
8727 /* 9155 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8728 /* 9159 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8729 /* 9163 */ // MIs[0] idx
8730 /* 9163 */ // No operand predicates
8731 /* 9163 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
8732 /* 9167 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8733 /* 9172 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8734 /* 9174 */ // Combiner Rule #28: insert_vector_element_elt_undef
8735 /* 9174 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8736 /* 9179 */ GIR_EraseRootFromParent_Done,
8737 /* 9180 */ // Label 512: @9180
8738 /* 9180 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(9204), // Rule ID 29 //
8739 /* 9185 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
8740 /* 9188 */ // MIs[0] root
8741 /* 9188 */ // No operand predicates
8742 /* 9188 */ // MIs[0] src
8743 /* 9188 */ // No operand predicates
8744 /* 9188 */ // MIs[0] elt
8745 /* 9188 */ // No operand predicates
8746 /* 9188 */ // MIs[0] idx
8747 /* 9188 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
8748 /* 9192 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8749 /* 9196 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8750 /* 9198 */ // Combiner Rule #27: insert_vector_element_idx_undef
8751 /* 9198 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8752 /* 9201 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8753 /* 9203 */ GIR_EraseRootFromParent_Done,
8754 /* 9204 */ // Label 513: @9204
8755 /* 9204 */ GIM_Reject,
8756 /* 9205 */ // Label 99: @9205
8757 /* 9205 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(9216), // Rule ID 31 //
8758 /* 9210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
8759 /* 9213 */ // Combiner Rule #29: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8760 /* 9213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
8761 /* 9216 */ // Label 514: @9216
8762 /* 9216 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(9227), // Rule ID 74 //
8763 /* 9221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
8764 /* 9224 */ // Combiner Rule #72: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8765 /* 9224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
8766 /* 9227 */ // Label 515: @9227
8767 /* 9227 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(9238), // Rule ID 80 //
8768 /* 9232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
8769 /* 9235 */ // Combiner Rule #76: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8770 /* 9235 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
8771 /* 9238 */ // Label 516: @9238
8772 /* 9238 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(9249), // Rule ID 108 //
8773 /* 9243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8774 /* 9246 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8775 /* 9246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
8776 /* 9249 */ // Label 517: @9249
8777 /* 9249 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(9273), // Rule ID 42 //
8778 /* 9254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
8779 /* 9257 */ // MIs[0] root
8780 /* 9257 */ // No operand predicates
8781 /* 9257 */ // MIs[0] src
8782 /* 9257 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8783 /* 9261 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8784 /* 9265 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
8785 /* 9268 */ // MIs[1] x
8786 /* 9268 */ // No operand predicates
8787 /* 9268 */ // MIs[1] y
8788 /* 9268 */ // No operand predicates
8789 /* 9268 */ // MIs[1] z
8790 /* 9268 */ // No operand predicates
8791 /* 9268 */ // MIs[1] a
8792 /* 9268 */ // No operand predicates
8793 /* 9268 */ // MIs[1] b
8794 /* 9268 */ // No operand predicates
8795 /* 9268 */ // MIs[1] c
8796 /* 9268 */ // No operand predicates
8797 /* 9268 */ // MIs[1] d
8798 /* 9268 */ // No operand predicates
8799 /* 9268 */ // MIs[1] e
8800 /* 9268 */ // No operand predicates
8801 /* 9268 */ // MIs[0] idx
8802 /* 9268 */ // No operand predicates
8803 /* 9268 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8804 /* 9270 */ // Combiner Rule #40: extract_vector_element_build_vector_trunc8
8805 /* 9270 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8806 /* 9273 */ // Label 518: @9273
8807 /* 9273 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(9297), // Rule ID 41 //
8808 /* 9278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
8809 /* 9281 */ // MIs[0] root
8810 /* 9281 */ // No operand predicates
8811 /* 9281 */ // MIs[0] src
8812 /* 9281 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8813 /* 9285 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8814 /* 9289 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
8815 /* 9292 */ // MIs[1] x
8816 /* 9292 */ // No operand predicates
8817 /* 9292 */ // MIs[1] y
8818 /* 9292 */ // No operand predicates
8819 /* 9292 */ // MIs[1] z
8820 /* 9292 */ // No operand predicates
8821 /* 9292 */ // MIs[1] a
8822 /* 9292 */ // No operand predicates
8823 /* 9292 */ // MIs[1] b
8824 /* 9292 */ // No operand predicates
8825 /* 9292 */ // MIs[1] c
8826 /* 9292 */ // No operand predicates
8827 /* 9292 */ // MIs[1] d
8828 /* 9292 */ // No operand predicates
8829 /* 9292 */ // MIs[0] idx
8830 /* 9292 */ // No operand predicates
8831 /* 9292 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8832 /* 9294 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc7
8833 /* 9294 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8834 /* 9297 */ // Label 519: @9297
8835 /* 9297 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(9321), // Rule ID 40 //
8836 /* 9302 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
8837 /* 9305 */ // MIs[0] root
8838 /* 9305 */ // No operand predicates
8839 /* 9305 */ // MIs[0] src
8840 /* 9305 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8841 /* 9309 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8842 /* 9313 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
8843 /* 9316 */ // MIs[1] x
8844 /* 9316 */ // No operand predicates
8845 /* 9316 */ // MIs[1] y
8846 /* 9316 */ // No operand predicates
8847 /* 9316 */ // MIs[1] z
8848 /* 9316 */ // No operand predicates
8849 /* 9316 */ // MIs[1] a
8850 /* 9316 */ // No operand predicates
8851 /* 9316 */ // MIs[1] b
8852 /* 9316 */ // No operand predicates
8853 /* 9316 */ // MIs[1] c
8854 /* 9316 */ // No operand predicates
8855 /* 9316 */ // MIs[0] idx
8856 /* 9316 */ // No operand predicates
8857 /* 9316 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8858 /* 9318 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc6
8859 /* 9318 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8860 /* 9321 */ // Label 520: @9321
8861 /* 9321 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(9345), // Rule ID 39 //
8862 /* 9326 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
8863 /* 9329 */ // MIs[0] root
8864 /* 9329 */ // No operand predicates
8865 /* 9329 */ // MIs[0] src
8866 /* 9329 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8867 /* 9333 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8868 /* 9337 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
8869 /* 9340 */ // MIs[1] x
8870 /* 9340 */ // No operand predicates
8871 /* 9340 */ // MIs[1] y
8872 /* 9340 */ // No operand predicates
8873 /* 9340 */ // MIs[1] z
8874 /* 9340 */ // No operand predicates
8875 /* 9340 */ // MIs[1] a
8876 /* 9340 */ // No operand predicates
8877 /* 9340 */ // MIs[1] b
8878 /* 9340 */ // No operand predicates
8879 /* 9340 */ // MIs[0] idx
8880 /* 9340 */ // No operand predicates
8881 /* 9340 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8882 /* 9342 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc5
8883 /* 9342 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8884 /* 9345 */ // Label 521: @9345
8885 /* 9345 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(9369), // Rule ID 38 //
8886 /* 9350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
8887 /* 9353 */ // MIs[0] root
8888 /* 9353 */ // No operand predicates
8889 /* 9353 */ // MIs[0] src
8890 /* 9353 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8891 /* 9357 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8892 /* 9361 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
8893 /* 9364 */ // MIs[1] x
8894 /* 9364 */ // No operand predicates
8895 /* 9364 */ // MIs[1] y
8896 /* 9364 */ // No operand predicates
8897 /* 9364 */ // MIs[1] z
8898 /* 9364 */ // No operand predicates
8899 /* 9364 */ // MIs[1] a
8900 /* 9364 */ // No operand predicates
8901 /* 9364 */ // MIs[0] idx
8902 /* 9364 */ // No operand predicates
8903 /* 9364 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8904 /* 9366 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc4
8905 /* 9366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8906 /* 9369 */ // Label 522: @9369
8907 /* 9369 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(9393), // Rule ID 37 //
8908 /* 9374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
8909 /* 9377 */ // MIs[0] root
8910 /* 9377 */ // No operand predicates
8911 /* 9377 */ // MIs[0] src
8912 /* 9377 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8913 /* 9381 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8914 /* 9385 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
8915 /* 9388 */ // MIs[1] x
8916 /* 9388 */ // No operand predicates
8917 /* 9388 */ // MIs[1] y
8918 /* 9388 */ // No operand predicates
8919 /* 9388 */ // MIs[1] z
8920 /* 9388 */ // No operand predicates
8921 /* 9388 */ // MIs[0] idx
8922 /* 9388 */ // No operand predicates
8923 /* 9388 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8924 /* 9390 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc3
8925 /* 9390 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8926 /* 9393 */ // Label 523: @9393
8927 /* 9393 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(9427), // Rule ID 33 //
8928 /* 9398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
8929 /* 9401 */ // MIs[0] root
8930 /* 9401 */ // No operand predicates
8931 /* 9401 */ // MIs[0] src
8932 /* 9401 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8933 /* 9405 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8934 /* 9409 */ // MIs[1] x
8935 /* 9409 */ // No operand predicates
8936 /* 9409 */ // MIs[1] value
8937 /* 9409 */ // No operand predicates
8938 /* 9409 */ // MIs[1] idx
8939 /* 9409 */ // No operand predicates
8940 /* 9409 */ // MIs[0] idx
8941 /* 9409 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
8942 /* 9414 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8943 /* 9419 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8944 /* 9421 */ // Combiner Rule #31: extract_vector_element_not_const
8945 /* 9421 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8946 /* 9426 */ GIR_EraseRootFromParent_Done,
8947 /* 9427 */ // Label 524: @9427
8948 /* 9427 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(9448), // Rule ID 34 //
8949 /* 9432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
8950 /* 9435 */ // MIs[0] root
8951 /* 9435 */ // No operand predicates
8952 /* 9435 */ // MIs[0] src
8953 /* 9435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8954 /* 9439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8955 /* 9443 */ // MIs[1] x
8956 /* 9443 */ // No operand predicates
8957 /* 9443 */ // MIs[1] value
8958 /* 9443 */ // No operand predicates
8959 /* 9443 */ // MIs[1] idx2
8960 /* 9443 */ // No operand predicates
8961 /* 9443 */ // MIs[0] idx1
8962 /* 9443 */ // No operand predicates
8963 /* 9443 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8964 /* 9445 */ // Combiner Rule #32: extract_vector_element_different_indices
8965 /* 9445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
8966 /* 9448 */ // Label 525: @9448
8967 /* 9448 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(9477), // Rule ID 43 //
8968 /* 9453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
8969 /* 9456 */ // MIs[0] root
8970 /* 9456 */ // No operand predicates
8971 /* 9456 */ // MIs[0] src
8972 /* 9456 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8973 /* 9460 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
8974 /* 9464 */ // MIs[1] src1
8975 /* 9464 */ // No operand predicates
8976 /* 9464 */ // MIs[1] src2
8977 /* 9464 */ // No operand predicates
8978 /* 9464 */ // MIs[1] mask
8979 /* 9464 */ // No operand predicates
8980 /* 9464 */ // MIs[0] idx
8981 /* 9464 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8982 /* 9468 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8983 /* 9472 */ // MIs[2] imm
8984 /* 9472 */ // No operand predicates
8985 /* 9472 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8986 /* 9474 */ // Combiner Rule #41: extract_vector_element_shuffle_vector
8987 /* 9474 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8988 /* 9477 */ // Label 526: @9477
8989 /* 9477 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(9501), // Rule ID 36 //
8990 /* 9482 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
8991 /* 9485 */ // MIs[0] root
8992 /* 9485 */ // No operand predicates
8993 /* 9485 */ // MIs[0] src
8994 /* 9485 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8995 /* 9489 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8996 /* 9493 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
8997 /* 9496 */ // MIs[1] x
8998 /* 9496 */ // No operand predicates
8999 /* 9496 */ // MIs[1] y
9000 /* 9496 */ // No operand predicates
9001 /* 9496 */ // MIs[0] idx
9002 /* 9496 */ // No operand predicates
9003 /* 9496 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9004 /* 9498 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc2
9005 /* 9498 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
9006 /* 9501 */ // Label 527: @9501
9007 /* 9501 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(9533), // Rule ID 35 //
9008 /* 9506 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
9009 /* 9509 */ // MIs[0] root
9010 /* 9509 */ // No operand predicates
9011 /* 9509 */ // MIs[0] src
9012 /* 9509 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9013 /* 9513 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
9014 /* 9517 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
9015 /* 9520 */ // MIs[1] unused
9016 /* 9520 */ // No operand predicates
9017 /* 9520 */ // MIs[0] idx
9018 /* 9520 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9019 /* 9524 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9020 /* 9528 */ // MIs[2] imm
9021 /* 9528 */ // No operand predicates
9022 /* 9528 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9023 /* 9530 */ // Combiner Rule #33: extract_vector_element_build_vector
9024 /* 9530 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
9025 /* 9533 */ // Label 528: @9533
9026 /* 9533 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(9557), // Rule ID 27 //
9027 /* 9538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
9028 /* 9541 */ // MIs[0] root
9029 /* 9541 */ // No operand predicates
9030 /* 9541 */ // MIs[0] vector
9031 /* 9541 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9032 /* 9545 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9033 /* 9549 */ // MIs[0] idx
9034 /* 9549 */ // No operand predicates
9035 /* 9549 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9036 /* 9551 */ // Combiner Rule #25: match_extract_of_element_undef_vector
9037 /* 9551 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9038 /* 9554 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9039 /* 9556 */ GIR_EraseRootFromParent_Done,
9040 /* 9557 */ // Label 529: @9557
9041 /* 9557 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(9581), // Rule ID 28 //
9042 /* 9562 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
9043 /* 9565 */ // MIs[0] root
9044 /* 9565 */ // No operand predicates
9045 /* 9565 */ // MIs[0] vector
9046 /* 9565 */ // No operand predicates
9047 /* 9565 */ // MIs[0] idx
9048 /* 9565 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9049 /* 9569 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9050 /* 9573 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9051 /* 9575 */ // Combiner Rule #26: match_extract_of_element_undef_index
9052 /* 9575 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9053 /* 9578 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
9054 /* 9580 */ GIR_EraseRootFromParent_Done,
9055 /* 9581 */ // Label 530: @9581
9056 /* 9581 */ GIM_Reject,
9057 /* 9582 */ // Label 100: @9582
9058 /* 9582 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(9593), // Rule ID 103 //
9059 /* 9587 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
9060 /* 9590 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
9061 /* 9590 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
9062 /* 9593 */ // Label 531: @9593
9063 /* 9593 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(9604), // Rule ID 105 //
9064 /* 9598 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
9065 /* 9601 */ // Combiner Rule #86: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9066 /* 9601 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
9067 /* 9604 */ // Label 532: @9604
9068 /* 9604 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(9615), // Rule ID 393 //
9069 /* 9609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
9070 /* 9612 */ // Combiner Rule #229: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
9071 /* 9612 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
9072 /* 9615 */ // Label 533: @9615
9073 /* 9615 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(9626), // Rule ID 395 //
9074 /* 9620 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
9075 /* 9623 */ // Combiner Rule #231: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
9076 /* 9623 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
9077 /* 9626 */ // Label 534: @9626
9078 /* 9626 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(9647), // Rule ID 394 //
9079 /* 9631 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
9080 /* 9634 */ // MIs[0] root
9081 /* 9634 */ // No operand predicates
9082 /* 9634 */ // MIs[0] src1
9083 /* 9634 */ // No operand predicates
9084 /* 9634 */ // MIs[0] undef
9085 /* 9634 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9086 /* 9638 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9087 /* 9642 */ // MIs[0] mask
9088 /* 9642 */ // No operand predicates
9089 /* 9642 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9090 /* 9644 */ // Combiner Rule #230: combine_shuffle_undef_rhs
9091 /* 9644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
9092 /* 9647 */ // Label 535: @9647
9093 /* 9647 */ GIM_Reject,
9094 /* 9648 */ // Label 101: @9648
9095 /* 9648 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(9659), // Rule ID 293 //
9096 /* 9653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9097 /* 9656 */ // MIs[0] dst
9098 /* 9656 */ // No operand predicates
9099 /* 9656 */ // MIs[0] mi.src
9100 /* 9656 */ // No operand predicates
9101 /* 9656 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[2]]
9102 /* 9656 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9103 /* 9659 */ // Label 536: @9659
9104 /* 9659 */ GIM_Reject,
9105 /* 9660 */ // Label 102: @9660
9106 /* 9660 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(9671), // Rule ID 294 //
9107 /* 9665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9108 /* 9668 */ // MIs[0] dst
9109 /* 9668 */ // No operand predicates
9110 /* 9668 */ // MIs[0] mi.src
9111 /* 9668 */ // No operand predicates
9112 /* 9668 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[3]]
9113 /* 9668 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9114 /* 9671 */ // Label 537: @9671
9115 /* 9671 */ GIM_Reject,
9116 /* 9672 */ // Label 103: @9672
9117 /* 9672 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(9683), // Rule ID 291 //
9118 /* 9677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9119 /* 9680 */ // MIs[0] dst
9120 /* 9680 */ // No operand predicates
9121 /* 9680 */ // MIs[0] mi.src
9122 /* 9680 */ // No operand predicates
9123 /* 9680 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[0]]
9124 /* 9680 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9125 /* 9683 */ // Label 538: @9683
9126 /* 9683 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(9694), // Rule ID 416 //
9127 /* 9688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
9128 /* 9691 */ // MIs[0] dst
9129 /* 9691 */ // No operand predicates
9130 /* 9691 */ // MIs[0] src
9131 /* 9691 */ // No operand predicates
9132 /* 9691 */ // Combiner Rule #250: ctlz_to_ctls
9133 /* 9691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
9134 /* 9694 */ // Label 539: @9694
9135 /* 9694 */ GIM_Reject,
9136 /* 9695 */ // Label 104: @9695
9137 /* 9695 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(9706), // Rule ID 292 //
9138 /* 9700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9139 /* 9703 */ // MIs[0] dst
9140 /* 9703 */ // No operand predicates
9141 /* 9703 */ // MIs[0] mi.src
9142 /* 9703 */ // No operand predicates
9143 /* 9703 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[1]]
9144 /* 9703 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9145 /* 9706 */ // Label 540: @9706
9146 /* 9706 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(9717), // Rule ID 417 //
9147 /* 9711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
9148 /* 9714 */ // MIs[0] dst
9149 /* 9714 */ // No operand predicates
9150 /* 9714 */ // MIs[0] src
9151 /* 9714 */ // No operand predicates
9152 /* 9714 */ // Combiner Rule #251: ctlz_zero_poison_to_ctls
9153 /* 9714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
9154 /* 9717 */ // Label 541: @9717
9155 /* 9717 */ GIM_Reject,
9156 /* 9718 */ // Label 105: @9718
9157 /* 9718 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(9729), // Rule ID 295 //
9158 /* 9723 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9159 /* 9726 */ // MIs[0] dst
9160 /* 9726 */ // No operand predicates
9161 /* 9726 */ // MIs[0] mi.src
9162 /* 9726 */ // No operand predicates
9163 /* 9726 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[4]]
9164 /* 9726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9165 /* 9729 */ // Label 542: @9729
9166 /* 9729 */ GIM_Reject,
9167 /* 9730 */ // Label 106: @9730
9168 /* 9730 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(9741), // Rule ID 297 //
9169 /* 9735 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9170 /* 9738 */ // MIs[0] dst
9171 /* 9738 */ // No operand predicates
9172 /* 9738 */ // MIs[0] mi.src
9173 /* 9738 */ // No operand predicates
9174 /* 9738 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[6]]
9175 /* 9738 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9176 /* 9741 */ // Label 543: @9741
9177 /* 9741 */ GIM_Reject,
9178 /* 9742 */ // Label 107: @9742
9179 /* 9742 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(9786), // Rule ID 248 //
9180 /* 9747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
9181 /* 9750 */ // MIs[0] d
9182 /* 9750 */ // No operand predicates
9183 /* 9750 */ // MIs[0] src
9184 /* 9750 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9185 /* 9754 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
9186 /* 9758 */ // MIs[1] rev
9187 /* 9758 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9188 /* 9762 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9189 /* 9766 */ // MIs[2] val
9190 /* 9766 */ // No operand predicates
9191 /* 9766 */ // MIs[1] amt
9192 /* 9766 */ // No operand predicates
9193 /* 9766 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
9194 /* 9770 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9195 /* 9772 */ // Combiner Rule #181: bitreverse_lshr
9196 /* 9772 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
9197 /* 9775 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9198 /* 9777 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9199 /* 9781 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9200 /* 9785 */ GIR_EraseRootFromParent_Done,
9201 /* 9786 */ // Label 544: @9786
9202 /* 9786 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(9830), // Rule ID 247 //
9203 /* 9791 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
9204 /* 9794 */ // MIs[0] d
9205 /* 9794 */ // No operand predicates
9206 /* 9794 */ // MIs[0] src
9207 /* 9794 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9208 /* 9798 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
9209 /* 9802 */ // MIs[1] rev
9210 /* 9802 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
9211 /* 9806 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
9212 /* 9810 */ // MIs[2] val
9213 /* 9810 */ // No operand predicates
9214 /* 9810 */ // MIs[1] amt
9215 /* 9810 */ // No operand predicates
9216 /* 9810 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
9217 /* 9814 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9218 /* 9816 */ // Combiner Rule #180: bitreverse_shl
9219 /* 9816 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
9220 /* 9819 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
9221 /* 9821 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
9222 /* 9825 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
9223 /* 9829 */ GIR_EraseRootFromParent_Done,
9224 /* 9830 */ // Label 545: @9830
9225 /* 9830 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(9841), // Rule ID 298 //
9226 /* 9835 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
9227 /* 9838 */ // MIs[0] dst
9228 /* 9838 */ // No operand predicates
9229 /* 9838 */ // MIs[0] mi.src
9230 /* 9838 */ // No operand predicates
9231 /* 9838 */ // Combiner Rule #191: constant_fold_unary_int_op @ [mi[7]]
9232 /* 9838 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9233 /* 9841 */ // Label 546: @9841
9234 /* 9841 */ GIM_Reject,
9235 /* 9842 */ // Label 108: @9842
9236 /* 9842 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(9863), // Rule ID 195 //
9237 /* 9847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
9238 /* 9850 */ // MIs[0] dst
9239 /* 9850 */ // No operand predicates
9240 /* 9850 */ // MIs[0] src0
9241 /* 9850 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9242 /* 9854 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9243 /* 9858 */ // MIs[1] cst
9244 /* 9858 */ // No operand predicates
9245 /* 9858 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9246 /* 9860 */ // Combiner Rule #151: constant_fold_fceil
9247 /* 9860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9248 /* 9863 */ // Label 547: @9863
9249 /* 9863 */ GIM_Reject,
9250 /* 9864 */ // Label 109: @9864
9251 /* 9864 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(9885), // Rule ID 191 //
9252 /* 9869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
9253 /* 9872 */ // MIs[0] dst
9254 /* 9872 */ // No operand predicates
9255 /* 9872 */ // MIs[0] src0
9256 /* 9872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9257 /* 9876 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9258 /* 9880 */ // MIs[1] cst
9259 /* 9880 */ // No operand predicates
9260 /* 9880 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9261 /* 9882 */ // Combiner Rule #147: constant_fold_fsqrt
9262 /* 9882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9263 /* 9885 */ // Label 548: @9885
9264 /* 9885 */ GIM_Reject,
9265 /* 9886 */ // Label 110: @9886
9266 /* 9886 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(9907), // Rule ID 196 //
9267 /* 9891 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
9268 /* 9894 */ // MIs[0] dst
9269 /* 9894 */ // No operand predicates
9270 /* 9894 */ // MIs[0] src0
9271 /* 9894 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9272 /* 9898 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9273 /* 9902 */ // MIs[1] cst
9274 /* 9902 */ // No operand predicates
9275 /* 9902 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9276 /* 9904 */ // Combiner Rule #152: constant_fold_ffloor
9277 /* 9904 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9278 /* 9907 */ // Label 549: @9907
9279 /* 9907 */ GIM_Reject,
9280 /* 9908 */ // Label 111: @9908
9281 /* 9908 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(9929), // Rule ID 200 //
9282 /* 9913 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
9283 /* 9916 */ // MIs[0] dst
9284 /* 9916 */ // No operand predicates
9285 /* 9916 */ // MIs[0] src0
9286 /* 9916 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9287 /* 9920 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9288 /* 9924 */ // MIs[1] cst
9289 /* 9924 */ // No operand predicates
9290 /* 9924 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9291 /* 9926 */ // Combiner Rule #156: constant_fold_frint
9292 /* 9926 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9293 /* 9929 */ // Label 550: @9929
9294 /* 9929 */ GIM_Reject,
9295 /* 9930 */ // Label 112: @9930
9296 /* 9930 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(9951), // Rule ID 201 //
9297 /* 9935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
9298 /* 9938 */ // MIs[0] dst
9299 /* 9938 */ // No operand predicates
9300 /* 9938 */ // MIs[0] src0
9301 /* 9938 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9302 /* 9942 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9303 /* 9946 */ // MIs[1] cst
9304 /* 9946 */ // No operand predicates
9305 /* 9946 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9306 /* 9948 */ // Combiner Rule #157: constant_fold_fnearbyint
9307 /* 9948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
9308 /* 9951 */ // Label 551: @9951
9309 /* 9951 */ GIM_Reject,
9310 /* 9952 */ // Label 113: @9952
9311 /* 9952 */ GIM_Reject,
9312 /* 9953 */ }; // Size: 9953 bytes
9313 return MatchTable0;
9314}
9315#undef GIMT_Encode2
9316#undef GIMT_Encode4
9317#undef GIMT_Encode8
9318
9319
9320#endif // GET_GICOMBINER_IMPL
9321
9322#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
9323
9324AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
9325AvailableFunctionFeatures()
9326
9327#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
9328
9329#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
9330
9331, State(0),
9332ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
9333
9334#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
9335
9336