1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AMDGPUPreLegalizerCombinerImpl 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 AMDGPUPreLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 9: // 6 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'a': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "dd_shift", 8) != 0)
46 break;
47 return 243; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 19; // "copy_prop"
52 case 'm': // 3 strings to match.
53 switch (RuleIdentifier[1]) {
54 default: break;
55 case 'a': // 1 string to match.
56 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
57 break;
58 return 214; // "match_ors"
59 case 'u': // 2 strings to match.
60 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
61 break;
62 switch (RuleIdentifier[8]) {
63 default: break;
64 case '0': // 1 string to match.
65 return 160; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 159; // "mulo_by_2"
68 }
69 break;
70 }
71 break;
72 case 'n': // 1 string to match.
73 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
74 break;
75 return 219; // "nneg_zext"
76 }
77 break;
78 case 10: // 7 strings to match.
79 switch (RuleIdentifier[0]) {
80 default: break;
81 case 'i': // 1 string to match.
82 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
83 break;
84 return 96; // "i2p_to_p2i"
85 case 'm': // 2 strings to match.
86 switch (RuleIdentifier[1]) {
87 default: break;
88 case 'a': // 1 string to match.
89 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
90 break;
91 return 213; // "match_ands"
92 case 'u': // 1 string to match.
93 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
94 break;
95 return 20; // "mul_to_shl"
96 }
97 break;
98 case 'p': // 1 string to match.
99 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
100 break;
101 return 95; // "p2i_to_i2p"
102 case 's': // 2 strings to match.
103 switch (RuleIdentifier[1]) {
104 default: break;
105 case 'e': // 1 string to match.
106 if (memcmp(RuleIdentifier.data()+2, "xt_trunc", 8) != 0)
107 break;
108 return 217; // "sext_trunc"
109 case 'u': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
111 break;
112 return 21; // "sub_to_add"
113 }
114 break;
115 case 'z': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
117 break;
118 return 218; // "zext_trunc"
119 }
120 break;
121 case 11: // 8 strings to match.
122 switch (RuleIdentifier[0]) {
123 default: break;
124 case 'a': // 1 string to match.
125 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
126 break;
127 return 101; // "add_sub_reg"
128 case 'm': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
130 break;
131 return 234; // "match_addos"
132 case 's': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
134 break;
135 return 208; // "sub_add_reg"
136 case 't': // 4 strings to match.
137 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
138 break;
139 switch (RuleIdentifier[6]) {
140 default: break;
141 case 's': // 3 strings to match.
142 switch (RuleIdentifier[7]) {
143 default: break;
144 case 'h': // 1 string to match.
145 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
146 break;
147 return 139; // "trunc_shift"
148 case 's': // 2 strings to match.
149 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
150 break;
151 switch (RuleIdentifier[10]) {
152 default: break;
153 case 's': // 1 string to match.
154 return 236; // "trunc_ssats"
155 case 'u': // 1 string to match.
156 return 237; // "trunc_ssatu"
157 }
158 break;
159 }
160 break;
161 case 'u': // 1 string to match.
162 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
163 break;
164 return 238; // "trunc_usatu"
165 }
166 break;
167 case 'u': // 1 string to match.
168 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
169 break;
170 return 227; // "unmerge_cst"
171 }
172 break;
173 case 12: // 12 strings to match.
174 switch (RuleIdentifier[0]) {
175 default: break;
176 case 'A': // 1 string to match.
177 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
178 break;
179 return 4; // "APlusBMinusB"
180 case 'B': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
182 break;
183 return 5; // "BMinusAPlusA"
184 case 'a': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
186 break;
187 return 161; // "adde_to_addo"
188 case 'c': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
190 break;
191 return 241; // "ctlz_to_ctls"
192 case 'f': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
194 break;
195 return 210; // "fsub_to_fneg"
196 case 'm': // 1 string to match.
197 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
198 break;
199 return 189; // "mulh_to_lshr"
200 case 'n': // 1 string to match.
201 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
202 break;
203 return 140; // "not_cmp_fold"
204 case 'r': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
206 break;
207 return 135; // "redundant_or"
208 case 's': // 2 strings to match.
209 switch (RuleIdentifier[1]) {
210 default: break;
211 case 'd': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
213 break;
214 return 204; // "sdiv_by_pow2"
215 case 'e': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
217 break;
218 return 54; // "sext_of_sext"
219 }
220 break;
221 case 'u': // 1 string to match.
222 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
223 break;
224 return 203; // "udiv_by_pow2"
225 case 'z': // 1 string to match.
226 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
227 break;
228 return 52; // "zext_of_zext"
229 }
230 break;
231 case 13: // 20 strings to match.
232 switch (RuleIdentifier[0]) {
233 default: break;
234 case 'A': // 2 strings to match.
235 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
236 break;
237 switch (RuleIdentifier[12]) {
238 default: break;
239 case 'A': // 1 string to match.
240 return 12; // "AMinusBMinusA"
241 case 'C': // 1 string to match.
242 return 9; // "AMinusBMinusC"
243 }
244 break;
245 case 'a': // 1 string to match.
246 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
247 break;
248 return 43; // "add_of_vscale"
249 case 'c': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
251 break;
252 return 179; // "commute_shift"
253 case 'f': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+1, "oldable_fneg", 12) != 0)
255 break;
256 return 249; // "foldable_fneg"
257 case 'l': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
259 break;
260 return 75; // "load_and_mask"
261 case 'm': // 3 strings to match.
262 switch (RuleIdentifier[1]) {
263 default: break;
264 case 'a': // 1 string to match.
265 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
266 break;
267 return 132; // "match_selects"
268 case 'e': // 1 string to match.
269 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
270 break;
271 return 226; // "merge_unmerge"
272 case 'u': // 1 string to match.
273 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
274 break;
275 return 44; // "mul_of_vscale"
276 }
277 break;
278 case 'r': // 1 string to match.
279 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
280 break;
281 return 133; // "redundant_and"
282 case 's': // 6 strings to match.
283 switch (RuleIdentifier[1]) {
284 default: break;
285 case 'a': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
287 break;
288 return 92; // "same_val_zero"
289 case 'd': // 1 string to match.
290 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
291 break;
292 return 206; // "sdiv_by_const"
293 case 'h': // 1 string to match.
294 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
295 break;
296 return 45; // "shl_of_vscale"
297 case 'r': // 1 string to match.
298 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
299 break;
300 return 202; // "srem_by_const"
301 case 'u': // 2 strings to match.
302 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
303 break;
304 switch (RuleIdentifier[4]) {
305 default: break;
306 case 'm': // 1 string to match.
307 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
308 break;
309 return 246; // "sub_minus_one"
310 case 'o': // 1 string to match.
311 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
312 break;
313 return 46; // "sub_of_vscale"
314 }
315 break;
316 }
317 break;
318 case 'u': // 4 strings to match.
319 switch (RuleIdentifier[1]) {
320 default: break;
321 case 'd': // 1 string to match.
322 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
323 break;
324 return 205; // "udiv_by_const"
325 case 'n': // 2 strings to match.
326 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
327 break;
328 switch (RuleIdentifier[8]) {
329 default: break;
330 case 'm': // 1 string to match.
331 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
332 break;
333 return 225; // "unmerge_merge"
334 case 'u': // 1 string to match.
335 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
336 break;
337 return 228; // "unmerge_undef"
338 }
339 break;
340 case 'r': // 1 string to match.
341 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
342 break;
343 return 201; // "urem_by_const"
344 }
345 break;
346 }
347 break;
348 case 14: // 17 strings to match.
349 switch (RuleIdentifier[0]) {
350 default: break;
351 case 'A': // 2 strings to match.
352 switch (RuleIdentifier[1]) {
353 default: break;
354 case 'M': // 1 string to match.
355 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
356 break;
357 return 18; // "AMinusC1PlusC2"
358 case 'P': // 1 string to match.
359 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
360 break;
361 return 14; // "APlusC1MinusC2"
362 }
363 break;
364 case 'C': // 1 string to match.
365 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
366 break;
367 return 15; // "C2MinusAPlusC1"
368 case 'N': // 1 string to match.
369 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
370 break;
371 return 13; // "NotAPlusNegOne"
372 case 'a': // 2 strings to match.
373 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
374 break;
375 switch (RuleIdentifier[10]) {
376 default: break;
377 case 's': // 1 string to match.
378 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
379 break;
380 return 58; // "anyext_of_sext"
381 case 'z': // 1 string to match.
382 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
383 break;
384 return 57; // "anyext_of_zext"
385 }
386 break;
387 case 'b': // 3 strings to match.
388 if (RuleIdentifier[1] != 'i')
389 break;
390 switch (RuleIdentifier[2]) {
391 default: break;
392 case 'n': // 2 strings to match.
393 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
394 break;
395 switch (RuleIdentifier[6]) {
396 default: break;
397 case 's': // 1 string to match.
398 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
399 break;
400 return 91; // "binop_same_val"
401 case 'w': // 1 string to match.
402 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
403 break;
404 return 245; // "binop_with_neg"
405 }
406 break;
407 case 't': // 1 string to match.
408 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
409 break;
410 return 177; // "bitreverse_shl"
411 }
412 break;
413 case 'f': // 2 strings to match.
414 switch (RuleIdentifier[1]) {
415 default: break;
416 case 'a': // 1 string to match.
417 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
418 break;
419 return 188; // "fabs_fneg_fold"
420 case 'n': // 1 string to match.
421 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
422 break;
423 return 98; // "fneg_fneg_fold"
424 }
425 break;
426 case 'm': // 1 string to match.
427 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
428 break;
429 return 23; // "mul_by_neg_one"
430 case 'r': // 1 string to match.
431 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
432 break;
433 return 114; // "reassoc_ptradd"
434 case 's': // 3 strings to match.
435 switch (RuleIdentifier[1]) {
436 default: break;
437 case 'e': // 2 strings to match.
438 switch (RuleIdentifier[2]) {
439 default: break;
440 case 'l': // 1 string to match.
441 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
442 break;
443 return 60; // "select_of_zext"
444 case 'x': // 1 string to match.
445 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
446 break;
447 return 55; // "sext_of_anyext"
448 }
449 break;
450 case 'h': // 1 string to match.
451 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
452 break;
453 return 113; // "shifts_too_big"
454 }
455 break;
456 case 'z': // 1 string to match.
457 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
458 break;
459 return 53; // "zext_of_anyext"
460 }
461 break;
462 case 15: // 12 strings to match.
463 switch (RuleIdentifier[0]) {
464 default: break;
465 case 'A': // 2 strings to match.
466 switch (RuleIdentifier[1]) {
467 default: break;
468 case 'M': // 1 string to match.
469 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
470 break;
471 return 16; // "AMinusC1MinusC2"
472 case 'P': // 1 string to match.
473 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
474 break;
475 return 3; // "APlusZeroMinusB"
476 }
477 break;
478 case 'C': // 1 string to match.
479 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
480 break;
481 return 17; // "C1Minus2MinusC2"
482 case 'Z': // 1 string to match.
483 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
484 break;
485 return 2; // "ZeroMinusAPlusB"
486 case 'b': // 1 string to match.
487 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
488 break;
489 return 178; // "bitreverse_lshr"
490 case 'e': // 1 string to match.
491 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
492 break;
493 return 74; // "extending_loads"
494 case 'i': // 1 string to match.
495 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
496 break;
497 return 24; // "idempotent_prop"
498 case 'l': // 1 string to match.
499 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
500 break;
501 return 168; // "load_or_combine"
502 case 'n': // 1 string to match.
503 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
504 break;
505 return 68; // "narrow_binop_or"
506 case 'o': // 1 string to match.
507 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
508 break;
509 return 158; // "overlapping_and"
510 case 's': // 1 string to match.
511 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
512 break;
513 return 89; // "select_same_val"
514 case 'z': // 1 string to match.
515 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
516 break;
517 return 137; // "zext_trunc_fold"
518 }
519 break;
520 case 16: // 15 strings to match.
521 switch (RuleIdentifier[0]) {
522 default: break;
523 case 'A': // 1 string to match.
524 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
525 break;
526 return 11; // "AMinusZeroMinusB"
527 case 'a': // 1 string to match.
528 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
529 break;
530 return 56; // "anyext_of_anyext"
531 case 'c': // 1 string to match.
532 if (memcmp(RuleIdentifier.data()+1, "lamp_i64_to_i16", 15) != 0)
533 break;
534 return 248; // "clamp_i64_to_i16"
535 case 'n': // 5 strings to match.
536 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
537 break;
538 switch (RuleIdentifier[13]) {
539 default: break;
540 case 'a': // 2 strings to match.
541 switch (RuleIdentifier[14]) {
542 default: break;
543 case 'd': // 1 string to match.
544 if (RuleIdentifier[15] != 'd')
545 break;
546 return 64; // "narrow_binop_add"
547 case 'n': // 1 string to match.
548 if (RuleIdentifier[15] != 'd')
549 break;
550 return 67; // "narrow_binop_and"
551 }
552 break;
553 case 'm': // 1 string to match.
554 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
555 break;
556 return 66; // "narrow_binop_mul"
557 case 's': // 1 string to match.
558 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
559 break;
560 return 65; // "narrow_binop_sub"
561 case 'x': // 1 string to match.
562 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
563 break;
564 return 69; // "narrow_binop_xor"
565 }
566 break;
567 case 's': // 4 strings to match.
568 switch (RuleIdentifier[1]) {
569 default: break;
570 case 'e': // 3 strings to match.
571 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
572 break;
573 switch (RuleIdentifier[7]) {
574 default: break;
575 case 'o': // 1 string to match.
576 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
577 break;
578 return 61; // "select_of_anyext"
579 case 't': // 1 string to match.
580 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
581 break;
582 return 209; // "select_to_minmax"
583 case 'u': // 1 string to match.
584 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
585 break;
586 return 129; // "select_undef_cmp"
587 }
588 break;
589 case 'u': // 1 string to match.
590 if (memcmp(RuleIdentifier.data()+2, "b_one_from_sub", 14) != 0)
591 break;
592 return 244; // "sub_one_from_sub"
593 }
594 break;
595 case 't': // 2 strings to match.
596 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
597 break;
598 switch (RuleIdentifier[12]) {
599 default: break;
600 case 's': // 1 string to match.
601 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
602 break;
603 return 50; // "truncate_of_sext"
604 case 'z': // 1 string to match.
605 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
606 break;
607 return 49; // "truncate_of_zext"
608 }
609 break;
610 case 'u': // 1 string to match.
611 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
612 break;
613 return 77; // "undef_to_fp_zero"
614 }
615 break;
616 case 17: // 14 strings to match.
617 switch (RuleIdentifier[0]) {
618 default: break;
619 case 'A': // 2 strings to match.
620 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
621 break;
622 switch (RuleIdentifier[11]) {
623 default: break;
624 case 'A': // 1 string to match.
625 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
626 break;
627 return 8; // "APlusBMinusAplusC"
628 case 'C': // 1 string to match.
629 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
630 break;
631 return 10; // "APlusBMinusCPlusA"
632 }
633 break;
634 case 'a': // 2 strings to match.
635 switch (RuleIdentifier[1]) {
636 default: break;
637 case 'd': // 1 string to match.
638 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
639 break;
640 return 22; // "add_p2i_to_ptradd"
641 case 'n': // 1 string to match.
642 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
643 break;
644 return 97; // "anyext_trunc_fold"
645 }
646 break;
647 case 'c': // 3 strings to match.
648 switch (RuleIdentifier[1]) {
649 default: break;
650 case 'a': // 2 strings to match.
651 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
652 break;
653 switch (RuleIdentifier[13]) {
654 default: break;
655 case 'f': // 1 string to match.
656 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
657 break;
658 return 118; // "canonicalize_fcmp"
659 case 'i': // 1 string to match.
660 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
661 break;
662 return 117; // "canonicalize_icmp"
663 }
664 break;
665 case 'o': // 1 string to match.
666 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fma", 15) != 0)
667 break;
668 return 186; // "constant_fold_fma"
669 }
670 break;
671 case 'd': // 1 string to match.
672 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
673 break;
674 return 169; // "div_rem_to_divrem"
675 case 'e': // 1 string to match.
676 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
677 break;
678 return 87; // "erase_undef_store"
679 case 'p': // 1 string to match.
680 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
681 break;
682 return 165; // "ptr_add_with_zero"
683 case 's': // 2 strings to match.
684 switch (RuleIdentifier[1]) {
685 default: break;
686 case 'e': // 1 string to match.
687 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
688 break;
689 return 131; // "select_to_iminmax"
690 case 'h': // 1 string to match.
691 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
692 break;
693 return 166; // "shift_immed_chain"
694 }
695 break;
696 case 'u': // 2 strings to match.
697 switch (RuleIdentifier[1]) {
698 default: break;
699 case 'n': // 1 string to match.
700 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
701 break;
702 return 78; // "undef_to_int_zero"
703 case 'r': // 1 string to match.
704 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
705 break;
706 return 136; // "urem_pow2_to_mask"
707 }
708 break;
709 }
710 break;
711 case 18: // 13 strings to match.
712 switch (RuleIdentifier[0]) {
713 default: break;
714 case 'A': // 3 strings to match.
715 switch (RuleIdentifier[1]) {
716 default: break;
717 case 'M': // 2 strings to match.
718 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
719 break;
720 switch (RuleIdentifier[11]) {
721 default: break;
722 case 'B': // 1 string to match.
723 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
724 break;
725 return 7; // "AMinusBPlusBMinusC"
726 case 'C': // 1 string to match.
727 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
728 break;
729 return 6; // "AMinusBPlusCMinusA"
730 }
731 break;
732 case 'P': // 1 string to match.
733 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
734 break;
735 return 0; // "APlusBMinusCMinusB"
736 }
737 break;
738 case 'b': // 1 string to match.
739 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
740 break;
741 return 93; // "binop_left_to_zero"
742 case 'c': // 4 strings to match.
743 if (RuleIdentifier[1] != 'o')
744 break;
745 switch (RuleIdentifier[2]) {
746 default: break;
747 case 'm': // 2 strings to match.
748 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
749 break;
750 switch (RuleIdentifier[8]) {
751 default: break;
752 case 'm': // 1 string to match.
753 if (memcmp(RuleIdentifier.data()+9, "inmax_nan", 9) != 0)
754 break;
755 return 162; // "combine_minmax_nan"
756 case 'o': // 1 string to match.
757 if (memcmp(RuleIdentifier.data()+9, "r_s64_s32", 9) != 0)
758 break;
759 return 253; // "combine_or_s64_s32"
760 }
761 break;
762 case 'n': // 2 strings to match.
763 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
764 break;
765 switch (RuleIdentifier[15]) {
766 default: break;
767 case 'a': // 1 string to match.
768 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
769 break;
770 return 143; // "constant_fold_fabs"
771 case 'n': // 1 string to match.
772 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
773 break;
774 return 142; // "constant_fold_fneg"
775 }
776 break;
777 }
778 break;
779 case 'e': // 1 string to match.
780 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
781 break;
782 return 163; // "expand_const_fpowi"
783 case 'f': // 1 string to match.
784 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
785 break;
786 return 106; // "fptrunc_fpext_fold"
787 case 's': // 2 strings to match.
788 if (RuleIdentifier[1] != 'e')
789 break;
790 switch (RuleIdentifier[2]) {
791 default: break;
792 case 'l': // 1 string to match.
793 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
794 break;
795 return 62; // "select_of_truncate"
796 case 'x': // 1 string to match.
797 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
798 break;
799 return 126; // "sext_inreg_of_load"
800 }
801 break;
802 case 't': // 1 string to match.
803 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
804 break;
805 return 51; // "truncate_of_anyext"
806 }
807 break;
808 case 19: // 19 strings to match.
809 switch (RuleIdentifier[0]) {
810 default: break;
811 case 'A': // 1 string to match.
812 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
813 break;
814 return 1; // "AMinusBMinusCMinusC"
815 case 'b': // 1 string to match.
816 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
817 break;
818 return 94; // "binop_right_to_zero"
819 case 'c': // 7 strings to match.
820 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
821 break;
822 switch (RuleIdentifier[5]) {
823 default: break;
824 case '_': // 1 string to match.
825 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
826 break;
827 return 157; // "const_ptradd_to_i2p"
828 case 'a': // 6 strings to match.
829 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
830 break;
831 switch (RuleIdentifier[14]) {
832 default: break;
833 case 'b': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
835 break;
836 return 184; // "constant_fold_binop"
837 case 'f': // 5 strings to match.
838 switch (RuleIdentifier[15]) {
839 default: break;
840 case 'c': // 1 string to match.
841 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
842 break;
843 return 148; // "constant_fold_fceil"
844 case 'l': // 1 string to match.
845 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
846 break;
847 return 145; // "constant_fold_flog2"
848 case 'p': // 1 string to match.
849 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
850 break;
851 return 147; // "constant_fold_fpext"
852 case 'r': // 1 string to match.
853 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
854 break;
855 return 153; // "constant_fold_frint"
856 case 's': // 1 string to match.
857 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
858 break;
859 return 144; // "constant_fold_fsqrt"
860 }
861 break;
862 }
863 break;
864 }
865 break;
866 case 'e': // 1 string to match.
867 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
868 break;
869 return 110; // "extend_through_phis"
870 case 'i': // 1 string to match.
871 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
872 break;
873 return 70; // "integer_of_truncate"
874 case 'm': // 1 string to match.
875 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
876 break;
877 return 232; // "merge_of_x_and_zero"
878 case 'p': // 1 string to match.
879 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
880 break;
881 return 116; // "ptr_add_immed_chain"
882 case 'r': // 2 strings to match.
883 switch (RuleIdentifier[1]) {
884 default: break;
885 case 'e': // 1 string to match.
886 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
887 break;
888 return 115; // "reassoc_comm_binops"
889 case 'i': // 1 string to match.
890 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
891 break;
892 return 90; // "right_identity_zero"
893 }
894 break;
895 case 's': // 3 strings to match.
896 switch (RuleIdentifier[1]) {
897 default: break;
898 case 'e': // 1 string to match.
899 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
900 break;
901 return 130; // "select_constant_cmp"
902 case 'i': // 2 strings to match.
903 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
904 break;
905 switch (RuleIdentifier[9]) {
906 default: break;
907 case 'a': // 1 string to match.
908 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
909 break;
910 return 111; // "simplify_add_to_sub"
911 case 'n': // 1 string to match.
912 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
913 break;
914 return 215; // "simplify_neg_minmax"
915 }
916 break;
917 }
918 break;
919 case 'u': // 1 string to match.
920 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
921 break;
922 return 82; // "unary_undef_to_zero"
923 }
924 break;
925 case 20: // 8 strings to match.
926 switch (RuleIdentifier[0]) {
927 default: break;
928 case 'a': // 1 string to match.
929 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
930 break;
931 return 191; // "and_or_disjoint_mask"
932 case 'b': // 1 string to match.
933 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
934 break;
935 return 105; // "bitcast_bitcast_fold"
936 case 'c': // 1 string to match.
937 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
938 break;
939 return 149; // "constant_fold_ffloor"
940 case 'm': // 1 string to match.
941 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
942 break;
943 return 231; // "merge_of_x_and_undef"
944 case 'r': // 2 strings to match.
945 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
946 break;
947 switch (RuleIdentifier[4]) {
948 default: break;
949 case 'c': // 1 string to match.
950 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
951 break;
952 return 127; // "reduce_shl_of_extend"
953 case 'n': // 1 string to match.
954 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
955 break;
956 return 134; // "redundant_sext_inreg"
957 }
958 break;
959 case 'u': // 2 strings to match.
960 if (RuleIdentifier[1] != 'n')
961 break;
962 switch (RuleIdentifier[2]) {
963 default: break;
964 case 'a': // 1 string to match.
965 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
966 break;
967 return 83; // "unary_undef_to_undef"
968 case 'm': // 1 string to match.
969 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
970 break;
971 return 230; // "unmerge_zext_to_zext"
972 }
973 break;
974 }
975 break;
976 case 21: // 10 strings to match.
977 switch (RuleIdentifier[0]) {
978 default: break;
979 case 'c': // 4 strings to match.
980 if (RuleIdentifier[1] != 'o')
981 break;
982 switch (RuleIdentifier[2]) {
983 default: break;
984 case 'm': // 2 strings to match.
985 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
986 break;
987 switch (RuleIdentifier[8]) {
988 default: break;
989 case 'b': // 1 string to match.
990 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
991 break;
992 return 233; // "combine_build_unmerge"
993 case 'c': // 1 string to match.
994 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
995 break;
996 return 216; // "combine_concat_vector"
997 }
998 break;
999 case 'n': // 2 strings to match.
1000 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1001 break;
1002 switch (RuleIdentifier[14]) {
1003 default: break;
1004 case 'c': // 1 string to match.
1005 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1006 break;
1007 return 187; // "constant_fold_cast_op"
1008 case 'f': // 1 string to match.
1009 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1010 break;
1011 return 146; // "constant_fold_fptrunc"
1012 }
1013 break;
1014 }
1015 break;
1016 case 'f': // 1 string to match.
1017 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1018 break;
1019 return 207; // "fdiv_repeated_divison"
1020 case 'i': // 1 string to match.
1021 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1022 break;
1023 return 30; // "insert_vector_elt_oob"
1024 case 'l': // 1 string to match.
1025 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1026 break;
1027 return 240; // "lshr_of_trunc_of_lshr"
1028 case 'r': // 1 string to match.
1029 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1030 break;
1031 return 100; // "right_identity_one_fp"
1032 case 'u': // 2 strings to match.
1033 if (RuleIdentifier[1] != 'n')
1034 break;
1035 switch (RuleIdentifier[2]) {
1036 default: break;
1037 case 'd': // 1 string to match.
1038 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1039 break;
1040 return 79; // "undef_to_negative_one"
1041 case 'm': // 1 string to match.
1042 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1043 break;
1044 return 229; // "unmerge_dead_to_trunc"
1045 }
1046 break;
1047 }
1048 break;
1049 case 22: // 13 strings to match.
1050 switch (RuleIdentifier[0]) {
1051 default: break;
1052 case 'c': // 2 strings to match.
1053 if (RuleIdentifier[1] != 'o')
1054 break;
1055 switch (RuleIdentifier[2]) {
1056 default: break;
1057 case 'm': // 1 string to match.
1058 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1059 break;
1060 return 220; // "combine_shuffle_concat"
1061 case 'n': // 1 string to match.
1062 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1063 break;
1064 return 185; // "constant_fold_fp_binop"
1065 }
1066 break;
1067 case 'f': // 4 strings to match.
1068 switch (RuleIdentifier[1]) {
1069 default: break;
1070 case 'o': // 1 string to match.
1071 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1072 break;
1073 return 200; // "fold_binop_into_select"
1074 case 'u': // 3 strings to match.
1075 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1076 break;
1077 switch (RuleIdentifier[13]) {
1078 default: break;
1079 case 'l': // 1 string to match.
1080 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1081 break;
1082 return 173; // "funnel_shift_left_zero"
1083 case 'o': // 1 string to match.
1084 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1085 break;
1086 return 174; // "funnel_shift_overshift"
1087 case 't': // 1 string to match.
1088 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1089 break;
1090 return 171; // "funnel_shift_to_rotate"
1091 }
1092 break;
1093 }
1094 break;
1095 case 'i': // 1 string to match.
1096 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1097 break;
1098 return 120; // "icmp_to_lhs_known_bits"
1099 case 'm': // 1 string to match.
1100 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1101 break;
1102 return 235; // "match_subo_no_overflow"
1103 case 'p': // 1 string to match.
1104 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1105 break;
1106 return 84; // "propagate_undef_any_op"
1107 case 'r': // 2 strings to match.
1108 switch (RuleIdentifier[1]) {
1109 default: break;
1110 case 'e': // 1 string to match.
1111 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1112 break;
1113 return 190; // "redundant_neg_operands"
1114 case 'i': // 1 string to match.
1115 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1116 break;
1117 return 99; // "right_identity_one_int"
1118 }
1119 break;
1120 case 's': // 1 string to match.
1121 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1122 break;
1123 return 124; // "shl_ashr_to_sext_inreg"
1124 case 't': // 1 string to match.
1125 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1126 break;
1127 return 103; // "trunc_buildvector_fold"
1128 }
1129 break;
1130 case 23: // 7 strings to match.
1131 switch (RuleIdentifier[0]) {
1132 default: break;
1133 case 'b': // 1 string to match.
1134 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1135 break;
1136 return 63; // "buildvector_of_truncate"
1137 case 'c': // 1 string to match.
1138 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1139 break;
1140 return 242; // "ctlz_zero_undef_to_ctls"
1141 case 'f': // 1 string to match.
1142 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1143 break;
1144 return 172; // "funnel_shift_right_zero"
1145 case 'i': // 2 strings to match.
1146 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1147 break;
1148 switch (RuleIdentifier[21]) {
1149 default: break;
1150 case 's': // 1 string to match.
1151 if (RuleIdentifier[22] != 'i')
1152 break;
1153 return 155; // "itof_const_zero_fold_si"
1154 case 'u': // 1 string to match.
1155 if (RuleIdentifier[22] != 'i')
1156 break;
1157 return 156; // "itof_const_zero_fold_ui"
1158 }
1159 break;
1160 case 'p': // 1 string to match.
1161 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1162 break;
1163 return 85; // "propagate_undef_all_ops"
1164 case 't': // 1 string to match.
1165 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1166 break;
1167 return 239; // "truncusatu_to_fptouisat"
1168 }
1169 break;
1170 case 24: // 7 strings to match.
1171 switch (RuleIdentifier[0]) {
1172 default: break;
1173 case 'b': // 1 string to match.
1174 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1175 break;
1176 return 80; // "binop_left_undef_to_zero"
1177 case 'c': // 1 string to match.
1178 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1179 break;
1180 return 154; // "constant_fold_fnearbyint"
1181 case 'm': // 1 string to match.
1182 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1183 break;
1184 return 29; // "match_extract_of_element"
1185 case 'n': // 1 string to match.
1186 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1187 break;
1188 return 128; // "narrow_binop_feeding_and"
1189 case 's': // 2 strings to match.
1190 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1191 break;
1192 switch (RuleIdentifier[11]) {
1193 default: break;
1194 case 'o': // 1 string to match.
1195 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1196 break;
1197 return 59; // "sext_inreg_of_sext_inreg"
1198 case 't': // 1 string to match.
1199 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1200 break;
1201 return 138; // "sext_inreg_to_zext_inreg"
1202 }
1203 break;
1204 case 'x': // 1 string to match.
1205 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1206 break;
1207 return 164; // "xor_of_and_with_same_reg"
1208 }
1209 break;
1210 case 25: // 7 strings to match.
1211 switch (RuleIdentifier[0]) {
1212 default: break;
1213 case 'b': // 3 strings to match.
1214 switch (RuleIdentifier[1]) {
1215 default: break;
1216 case 'i': // 2 strings to match.
1217 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1218 break;
1219 switch (RuleIdentifier[22]) {
1220 default: break;
1221 case 'a': // 1 string to match.
1222 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1223 break;
1224 return 181; // "bitfield_extract_from_and"
1225 case 's': // 1 string to match.
1226 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1227 break;
1228 return 182; // "bitfield_extract_from_shr"
1229 }
1230 break;
1231 case 'u': // 1 string to match.
1232 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1233 break;
1234 return 102; // "buildvector_identity_fold"
1235 }
1236 break;
1237 case 'c': // 1 string to match.
1238 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1239 break;
1240 return 221; // "combine_shuffle_undef_rhs"
1241 case 'e': // 1 string to match.
1242 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1243 break;
1244 return 72; // "extract_vec_elt_build_vec"
1245 case 'n': // 1 string to match.
1246 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1247 break;
1248 return 125; // "neg_and_one_to_sext_inreg"
1249 case 'r': // 1 string to match.
1250 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1251 break;
1252 return 109; // "right_identity_neg_one_fp"
1253 }
1254 break;
1255 case 26: // 4 strings to match.
1256 switch (RuleIdentifier[0]) {
1257 default: break;
1258 case 'b': // 1 string to match.
1259 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1260 break;
1261 return 81; // "binop_right_undef_to_undef"
1262 case 'c': // 1 string to match.
1263 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1264 break;
1265 return 212; // "commute_fp_constant_to_rhs"
1266 case 'f': // 1 string to match.
1267 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1268 break;
1269 return 170; // "funnel_shift_from_or_shift"
1270 case 'r': // 1 string to match.
1271 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1272 break;
1273 return 107; // "right_identity_neg_zero_fp"
1274 }
1275 break;
1276 case 27: // 6 strings to match.
1277 switch (RuleIdentifier[0]) {
1278 default: break;
1279 case 'c': // 2 strings to match.
1280 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1281 break;
1282 switch (RuleIdentifier[3]) {
1283 default: break;
1284 case 'b': // 1 string to match.
1285 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1286 break;
1287 return 223; // "combine_use_vector_truncate"
1288 case 'm': // 1 string to match.
1289 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1290 break;
1291 return 211; // "commute_int_constant_to_rhs"
1292 }
1293 break;
1294 case 'd': // 1 string to match.
1295 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1296 break;
1297 return 122; // "double_icmp_zero_or_combine"
1298 case 'r': // 1 string to match.
1299 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1300 break;
1301 return 123; // "redundant_binop_in_equality"
1302 case 't': // 1 string to match.
1303 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1304 break;
1305 return 104; // "trunc_lshr_buildvector_fold"
1306 case 'u': // 1 string to match.
1307 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1308 break;
1309 return 224; // "unmerge_anyext_build_vector"
1310 }
1311 break;
1312 case 28: // 5 strings to match.
1313 switch (RuleIdentifier[0]) {
1314 default: break;
1315 case 'c': // 1 string to match.
1316 if (memcmp(RuleIdentifier.data()+1, "ombine_or_s64_with_s32_mask", 27) != 0)
1317 break;
1318 return 251; // "combine_or_s64_with_s32_mask"
1319 case 'd': // 1 string to match.
1320 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1321 break;
1322 return 121; // "double_icmp_zero_and_combine"
1323 case 'o': // 1 string to match.
1324 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1325 break;
1326 return 141; // "opt_brcond_by_inverting_cond"
1327 case 'p': // 1 string to match.
1328 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1329 break;
1330 return 86; // "propagate_undef_shuffle_mask"
1331 case 's': // 1 string to match.
1332 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1333 break;
1334 return 167; // "shift_of_shifted_logic_chain"
1335 }
1336 break;
1337 case 29: // 7 strings to match.
1338 switch (RuleIdentifier[0]) {
1339 default: break;
1340 case 'b': // 1 string to match.
1341 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1342 break;
1343 return 183; // "bitfield_extract_from_shr_and"
1344 case 'c': // 5 strings to match.
1345 if (RuleIdentifier[1] != 'o')
1346 break;
1347 switch (RuleIdentifier[2]) {
1348 default: break;
1349 case 'm': // 3 strings to match.
1350 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1351 break;
1352 switch (RuleIdentifier[8]) {
1353 default: break;
1354 case 'a': // 1 string to match.
1355 if (memcmp(RuleIdentifier.data()+9, "nd_s64_with_s32_mask", 20) != 0)
1356 break;
1357 return 252; // "combine_and_s64_with_s32_mask"
1358 case 'e': // 1 string to match.
1359 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1360 break;
1361 return 76; // "combine_extracted_vector_load"
1362 case 's': // 1 string to match.
1363 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1364 break;
1365 return 222; // "combine_shuffle_disjoint_mask"
1366 }
1367 break;
1368 case 'n': // 2 strings to match.
1369 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1370 break;
1371 switch (RuleIdentifier[24]) {
1372 default: break;
1373 case 'r': // 1 string to match.
1374 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1375 break;
1376 return 151; // "constant_fold_intrinsic_round"
1377 case 't': // 1 string to match.
1378 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1379 break;
1380 return 150; // "constant_fold_intrinsic_trunc"
1381 }
1382 break;
1383 }
1384 break;
1385 case 'i': // 1 string to match.
1386 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1387 break;
1388 return 119; // "icmp_to_true_false_known_bits"
1389 }
1390 break;
1391 case 30: // 2 strings to match.
1392 switch (RuleIdentifier[0]) {
1393 default: break;
1394 case 'f': // 1 string to match.
1395 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1396 break;
1397 return 47; // "freeze_of_non_undef_non_poison"
1398 case 'r': // 1 string to match.
1399 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1400 break;
1401 return 108; // "right_identity_neg_zero_fp_nsz"
1402 }
1403 break;
1404 case 31: // 2 strings to match.
1405 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1406 break;
1407 switch (RuleIdentifier[22]) {
1408 default: break;
1409 case 'e': // 1 string to match.
1410 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1411 break;
1412 return 28; // "insert_vector_element_elt_undef"
1413 case 'i': // 1 string to match.
1414 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1415 break;
1416 return 27; // "insert_vector_element_idx_undef"
1417 }
1418 break;
1419 case 32: // 4 strings to match.
1420 switch (RuleIdentifier[0]) {
1421 default: break;
1422 case 'b': // 1 string to match.
1423 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1424 break;
1425 return 180; // "bitfield_extract_from_sext_inreg"
1426 case 'c': // 2 strings to match.
1427 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1428 break;
1429 switch (RuleIdentifier[9]) {
1430 default: break;
1431 case 'a': // 1 string to match.
1432 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1433 break;
1434 return 192; // "combine_fadd_fmul_to_fmad_or_fma"
1435 case 's': // 1 string to match.
1436 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1437 break;
1438 return 196; // "combine_fsub_fmul_to_fmad_or_fma"
1439 }
1440 break;
1441 case 'e': // 1 string to match.
1442 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1443 break;
1444 return 31; // "extract_vector_element_not_const"
1445 }
1446 break;
1447 case 33: // 1 string to match.
1448 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1449 break;
1450 return 152; // "constant_fold_intrinsic_roundeven"
1451 case 34: // 2 strings to match.
1452 switch (RuleIdentifier[0]) {
1453 default: break;
1454 case 'c': // 1 string to match.
1455 if (memcmp(RuleIdentifier.data()+1, "ombine_fmul_with_select_to_fldexp", 33) != 0)
1456 break;
1457 return 247; // "combine_fmul_with_select_to_fldexp"
1458 case 'e': // 1 string to match.
1459 if (memcmp(RuleIdentifier.data()+1, "xtract_all_elts_from_build_vector", 33) != 0)
1460 break;
1461 return 73; // "extract_all_elts_from_build_vector"
1462 }
1463 break;
1464 case 35: // 1 string to match.
1465 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1466 break;
1467 return 33; // "extract_vector_element_build_vector"
1468 case 36: // 4 strings to match.
1469 switch (RuleIdentifier[0]) {
1470 default: break;
1471 case 'c': // 2 strings to match.
1472 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1473 break;
1474 switch (RuleIdentifier[8]) {
1475 default: break;
1476 case 'f': // 1 string to match.
1477 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1478 break;
1479 return 194; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1480 case 'i': // 1 string to match.
1481 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1482 break;
1483 return 71; // "combine_insert_vec_elts_build_vector"
1484 }
1485 break;
1486 case 'i': // 1 string to match.
1487 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1488 break;
1489 return 88; // "insert_extract_vec_elt_out_of_bounds"
1490 case 'm': // 1 string to match.
1491 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1492 break;
1493 return 26; // "match_extract_of_element_undef_index"
1494 }
1495 break;
1496 case 37: // 4 strings to match.
1497 switch (RuleIdentifier[0]) {
1498 default: break;
1499 case 'c': // 1 string to match.
1500 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1501 break;
1502 return 197; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1503 case 'e': // 1 string to match.
1504 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1505 break;
1506 return 41; // "extract_vector_element_shuffle_vector"
1507 case 'h': // 1 string to match.
1508 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1509 break;
1510 return 112; // "hoist_logic_op_with_same_opcode_hands"
1511 case 'm': // 1 string to match.
1512 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1513 break;
1514 return 25; // "match_extract_of_element_undef_vector"
1515 }
1516 break;
1517 case 38: // 3 strings to match.
1518 if (memcmp(RuleIdentifier.data()+0, "combine_", 8) != 0)
1519 break;
1520 switch (RuleIdentifier[8]) {
1521 default: break;
1522 case 'f': // 2 strings to match.
1523 switch (RuleIdentifier[9]) {
1524 default: break;
1525 case 'a': // 1 string to match.
1526 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1527 break;
1528 return 193; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1529 case 's': // 1 string to match.
1530 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1531 break;
1532 return 198; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1533 }
1534 break;
1535 case 's': // 1 string to match.
1536 if (memcmp(RuleIdentifier.data()+9, "huffle_vector_to_build_vector", 29) != 0)
1537 break;
1538 return 250; // "combine_shuffle_vector_to_build_vector"
1539 }
1540 break;
1541 case 40: // 1 string to match.
1542 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1543 break;
1544 return 32; // "extract_vector_element_different_indices"
1545 case 42: // 9 strings to match.
1546 switch (RuleIdentifier[0]) {
1547 default: break;
1548 case 'c': // 1 string to match.
1549 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1550 break;
1551 return 195; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1552 case 'e': // 7 strings to match.
1553 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1554 break;
1555 switch (RuleIdentifier[41]) {
1556 default: break;
1557 case '2': // 1 string to match.
1558 return 34; // "extract_vector_element_build_vector_trunc2"
1559 case '3': // 1 string to match.
1560 return 35; // "extract_vector_element_build_vector_trunc3"
1561 case '4': // 1 string to match.
1562 return 36; // "extract_vector_element_build_vector_trunc4"
1563 case '5': // 1 string to match.
1564 return 37; // "extract_vector_element_build_vector_trunc5"
1565 case '6': // 1 string to match.
1566 return 38; // "extract_vector_element_build_vector_trunc6"
1567 case '7': // 1 string to match.
1568 return 39; // "extract_vector_element_build_vector_trunc7"
1569 case '8': // 1 string to match.
1570 return 40; // "extract_vector_element_build_vector_trunc8"
1571 }
1572 break;
1573 case 'f': // 1 string to match.
1574 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1575 break;
1576 return 175; // "funnel_shift_or_shift_to_funnel_shift_left"
1577 }
1578 break;
1579 case 43: // 2 strings to match.
1580 switch (RuleIdentifier[0]) {
1581 default: break;
1582 case 'c': // 1 string to match.
1583 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1584 break;
1585 return 199; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1586 case 'f': // 1 string to match.
1587 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1588 break;
1589 return 176; // "funnel_shift_or_shift_to_funnel_shift_right"
1590 }
1591 break;
1592 case 44: // 1 string to match.
1593 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1594 break;
1595 return 42; // "insert_vector_element_extract_vector_element"
1596 case 46: // 1 string to match.
1597 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1598 break;
1599 return 48; // "push_freeze_to_prevent_poison_from_propagating"
1600 }
1601#endif // ifndef NDEBUG
1602
1603 return std::nullopt;
1604}
1605static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1606 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1607 if (!RangePair.second.empty()) {
1608 const auto First = getRuleIdxForIdentifier(RangePair.first);
1609 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1610 if (!First || !Last)
1611 return std::nullopt;
1612 if (First >= Last)
1613 report_fatal_error("Beginning of range should be before end of range");
1614 return {{*First, *Last + 1}};
1615 }
1616 if (RangePair.first == "*") {
1617 return {{0, 254}};
1618 }
1619 const auto I = getRuleIdxForIdentifier(RangePair.first);
1620 if (!I)
1621 return std::nullopt;
1622 return {{*I, *I + 1}};
1623}
1624
1625bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1626 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1627 if (!MaybeRange)
1628 return false;
1629 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1630 DisabledRules.reset(I);
1631 return true;
1632}
1633
1634bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1635 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1636 if (!MaybeRange)
1637 return false;
1638 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1639 DisabledRules.set(I);
1640 return true;
1641}
1642
1643static std::vector<std::string> AMDGPUPreLegalizerCombinerOption;
1644static cl::list<std::string> AMDGPUPreLegalizerCombinerDisableOption(
1645 "amdgpuprelegalizercombiner-disable-rule",
1646 cl::desc("Disable one or more combiner rules temporarily in the AMDGPUPreLegalizerCombiner pass"),
1647 cl::CommaSeparated,
1648 cl::Hidden,
1649 cl::cat(GICombinerOptionCategory),
1650 cl::callback([](const std::string &Str) {
1651 AMDGPUPreLegalizerCombinerOption.push_back(Str);
1652 }));
1653static cl::list<std::string> AMDGPUPreLegalizerCombinerOnlyEnableOption(
1654 "amdgpuprelegalizercombiner-only-enable-rule",
1655 cl::desc("Disable all rules in the AMDGPUPreLegalizerCombiner pass then re-enable the specified ones"),
1656 cl::Hidden,
1657 cl::cat(GICombinerOptionCategory),
1658 cl::callback([](const std::string &CommaSeparatedArg) {
1659 StringRef Str = CommaSeparatedArg;
1660 AMDGPUPreLegalizerCombinerOption.push_back("*");
1661 do {
1662 auto X = Str.split(",");
1663 AMDGPUPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1664 Str = X.second;
1665 } while (!Str.empty());
1666 }));
1667
1668
1669bool AMDGPUPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1670 return !DisabledRules.test(RuleID);
1671}
1672bool AMDGPUPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1673 for (StringRef Identifier : AMDGPUPreLegalizerCombinerOption) {
1674 bool Enabled = Identifier.consume_front("!");
1675 if (Enabled && !setRuleEnabled(Identifier))
1676 return false;
1677 if (!Enabled && !setRuleDisabled(Identifier))
1678 return false;
1679 }
1680 return true;
1681}
1682
1683
1684#endif // GET_GICOMBINER_TYPES
1685
1686#ifdef GET_GICOMBINER_TYPES
1687
1688const unsigned MAX_SUBTARGET_PREDICATES = 0;
1689using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1690
1691#endif // GET_GICOMBINER_TYPES
1692
1693#ifdef GET_GICOMBINER_CLASS_MEMBERS
1694
1695PredicateBitset AvailableModuleFeatures;
1696mutable PredicateBitset AvailableFunctionFeatures;
1697PredicateBitset getAvailableFeatures() const {
1698 return AvailableModuleFeatures | AvailableFunctionFeatures;
1699}
1700PredicateBitset
1701computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const;
1702PredicateBitset
1703computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget,
1704 const MachineFunction *MF) const;
1705void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1706
1707#endif // GET_GICOMBINER_CLASS_MEMBERS
1708
1709#ifdef GET_GICOMBINER_CLASS_MEMBERS
1710
1711 mutable MatcherState State;
1712 typedef ComplexRendererFns(AMDGPUPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1713 typedef void(AMDGPUPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1714 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1715 static AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1716 static AMDGPUPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1717 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1718 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1719 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1720 const uint8_t *getMatchTable() const override;
1721 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1722 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1723 bool testSimplePredicate(unsigned PredicateID) const override;
1724 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1725
1726#endif // GET_GICOMBINER_CLASS_MEMBERS
1727
1728#ifdef GET_GICOMBINER_IMPL
1729
1730// LLT Objects.
1731enum {
1732 GILLT_s32,
1733 GILLT_s64,
1734};
1735const static size_t NumTypeObjects = 2;
1736const static LLT TypeObjects[] = {
1737 LLT::scalar(32),
1738 LLT::scalar(64),
1739};
1740
1741// Bits for subtarget features that participate in instruction matching.
1742enum SubtargetFeatureBits : uint8_t {
1743};
1744
1745PredicateBitset AMDGPUPreLegalizerCombinerImpl::
1746computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const {
1747 PredicateBitset Features{};
1748 return Features;
1749}
1750
1751void AMDGPUPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1752 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AMDGPUSubtarget *)&MF.getSubtarget(), &MF);
1753}
1754PredicateBitset AMDGPUPreLegalizerCombinerImpl::
1755computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget, const MachineFunction *MF) const {
1756 PredicateBitset Features{};
1757 return Features;
1758}
1759
1760// Feature bitsets.
1761enum {
1762 GIFBS_Invalid,
1763};
1764constexpr static PredicateBitset FeatureBitsets[] {
1765 {}, // GIFBS_Invalid
1766};
1767
1768// ComplexPattern predicates.
1769enum {
1770 GICP_Invalid,
1771};
1772// See constructor for table contents
1773
1774AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn
1775AMDGPUPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1776 nullptr, // GICP_Invalid
1777};
1778
1779enum {
1780 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1781 GICXXPred_MI_Predicate_GICombiner1,
1782 GICXXPred_MI_Predicate_GICombiner2,
1783 GICXXPred_MI_Predicate_GICombiner3,
1784 GICXXPred_MI_Predicate_GICombiner4,
1785 GICXXPred_MI_Predicate_GICombiner5,
1786 GICXXPred_MI_Predicate_GICombiner6,
1787 GICXXPred_MI_Predicate_GICombiner7,
1788 GICXXPred_MI_Predicate_GICombiner8,
1789 GICXXPred_MI_Predicate_GICombiner9,
1790 GICXXPred_MI_Predicate_GICombiner10,
1791 GICXXPred_MI_Predicate_GICombiner11,
1792 GICXXPred_MI_Predicate_GICombiner12,
1793 GICXXPred_MI_Predicate_GICombiner13,
1794 GICXXPred_MI_Predicate_GICombiner14,
1795 GICXXPred_MI_Predicate_GICombiner15,
1796 GICXXPred_MI_Predicate_GICombiner16,
1797 GICXXPred_MI_Predicate_GICombiner17,
1798};
1799bool AMDGPUPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1800 switch (PredicateID) {
1801 case GICXXPred_MI_Predicate_GICombiner0: {
1802 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
1803 }
1804 case GICXXPred_MI_Predicate_GICombiner1: {
1805 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1806 }
1807 case GICXXPred_MI_Predicate_GICombiner2: {
1808 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1809 }
1810 case GICXXPred_MI_Predicate_GICombiner3: {
1811 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1812 }
1813 case GICXXPred_MI_Predicate_GICombiner4: {
1814 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1815 }
1816 case GICXXPred_MI_Predicate_GICombiner5: {
1817 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1818 }
1819 case GICXXPred_MI_Predicate_GICombiner6: {
1820 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1821 }
1822 case GICXXPred_MI_Predicate_GICombiner7: {
1823 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1824 }
1825 case GICXXPred_MI_Predicate_GICombiner8: {
1826 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1827 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1828 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1829 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1830 }
1831 case GICXXPred_MI_Predicate_GICombiner9: {
1832 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1833 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1834 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1835 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1836 }
1837 case GICXXPred_MI_Predicate_GICombiner10: {
1838 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1839 Helper.isLegalOrBeforeLegalizer(
1840 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1841 }
1842 case GICXXPred_MI_Predicate_GICombiner11: {
1843 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1844 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1845 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1846 }
1847 case GICXXPred_MI_Predicate_GICombiner12: {
1848 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1849 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1850 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1851 }
1852 case GICXXPred_MI_Predicate_GICombiner13: {
1853 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1854 }
1855 case GICXXPred_MI_Predicate_GICombiner14: {
1856 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1857 }
1858 case GICXXPred_MI_Predicate_GICombiner15: {
1859 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1860 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1861 }
1862 case GICXXPred_MI_Predicate_GICombiner16: {
1863 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1864 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1865 }
1866 case GICXXPred_MI_Predicate_GICombiner17: {
1867 return Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(1).getReg()) ||
1868 Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(2).getReg());
1869 }
1870 }
1871 llvm_unreachable("Unknown predicate");
1872 return false;
1873}
1874bool AMDGPUPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1875 llvm_unreachable("Unknown predicate");
1876 return false;
1877}
1878bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1879 llvm_unreachable("Unknown predicate");
1880 return false;
1881}
1882bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1883 llvm_unreachable("Unknown predicate");
1884 return false;
1885}
1886bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1887 llvm_unreachable("Unknown predicate");
1888 return false;
1889}
1890enum {
1891 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1892 GICXXPred_Simple_IsRule1Enabled,
1893 GICXXPred_Simple_IsRule2Enabled,
1894 GICXXPred_Simple_IsRule3Enabled,
1895 GICXXPred_Simple_IsRule4Enabled,
1896 GICXXPred_Simple_IsRule5Enabled,
1897 GICXXPred_Simple_IsRule6Enabled,
1898 GICXXPred_Simple_IsRule7Enabled,
1899 GICXXPred_Simple_IsRule8Enabled,
1900 GICXXPred_Simple_IsRule9Enabled,
1901 GICXXPred_Simple_IsRule10Enabled,
1902 GICXXPred_Simple_IsRule11Enabled,
1903 GICXXPred_Simple_IsRule12Enabled,
1904 GICXXPred_Simple_IsRule13Enabled,
1905 GICXXPred_Simple_IsRule14Enabled,
1906 GICXXPred_Simple_IsRule15Enabled,
1907 GICXXPred_Simple_IsRule16Enabled,
1908 GICXXPred_Simple_IsRule17Enabled,
1909 GICXXPred_Simple_IsRule18Enabled,
1910 GICXXPred_Simple_IsRule19Enabled,
1911 GICXXPred_Simple_IsRule20Enabled,
1912 GICXXPred_Simple_IsRule21Enabled,
1913 GICXXPred_Simple_IsRule22Enabled,
1914 GICXXPred_Simple_IsRule23Enabled,
1915 GICXXPred_Simple_IsRule24Enabled,
1916 GICXXPred_Simple_IsRule25Enabled,
1917 GICXXPred_Simple_IsRule26Enabled,
1918 GICXXPred_Simple_IsRule27Enabled,
1919 GICXXPred_Simple_IsRule28Enabled,
1920 GICXXPred_Simple_IsRule29Enabled,
1921 GICXXPred_Simple_IsRule30Enabled,
1922 GICXXPred_Simple_IsRule31Enabled,
1923 GICXXPred_Simple_IsRule32Enabled,
1924 GICXXPred_Simple_IsRule33Enabled,
1925 GICXXPred_Simple_IsRule34Enabled,
1926 GICXXPred_Simple_IsRule35Enabled,
1927 GICXXPred_Simple_IsRule36Enabled,
1928 GICXXPred_Simple_IsRule37Enabled,
1929 GICXXPred_Simple_IsRule38Enabled,
1930 GICXXPred_Simple_IsRule39Enabled,
1931 GICXXPred_Simple_IsRule40Enabled,
1932 GICXXPred_Simple_IsRule41Enabled,
1933 GICXXPred_Simple_IsRule42Enabled,
1934 GICXXPred_Simple_IsRule43Enabled,
1935 GICXXPred_Simple_IsRule44Enabled,
1936 GICXXPred_Simple_IsRule45Enabled,
1937 GICXXPred_Simple_IsRule46Enabled,
1938 GICXXPred_Simple_IsRule47Enabled,
1939 GICXXPred_Simple_IsRule48Enabled,
1940 GICXXPred_Simple_IsRule49Enabled,
1941 GICXXPred_Simple_IsRule50Enabled,
1942 GICXXPred_Simple_IsRule51Enabled,
1943 GICXXPred_Simple_IsRule52Enabled,
1944 GICXXPred_Simple_IsRule53Enabled,
1945 GICXXPred_Simple_IsRule54Enabled,
1946 GICXXPred_Simple_IsRule55Enabled,
1947 GICXXPred_Simple_IsRule56Enabled,
1948 GICXXPred_Simple_IsRule57Enabled,
1949 GICXXPred_Simple_IsRule58Enabled,
1950 GICXXPred_Simple_IsRule59Enabled,
1951 GICXXPred_Simple_IsRule60Enabled,
1952 GICXXPred_Simple_IsRule61Enabled,
1953 GICXXPred_Simple_IsRule62Enabled,
1954 GICXXPred_Simple_IsRule63Enabled,
1955 GICXXPred_Simple_IsRule64Enabled,
1956 GICXXPred_Simple_IsRule65Enabled,
1957 GICXXPred_Simple_IsRule66Enabled,
1958 GICXXPred_Simple_IsRule67Enabled,
1959 GICXXPred_Simple_IsRule68Enabled,
1960 GICXXPred_Simple_IsRule69Enabled,
1961 GICXXPred_Simple_IsRule70Enabled,
1962 GICXXPred_Simple_IsRule71Enabled,
1963 GICXXPred_Simple_IsRule72Enabled,
1964 GICXXPred_Simple_IsRule73Enabled,
1965 GICXXPred_Simple_IsRule74Enabled,
1966 GICXXPred_Simple_IsRule75Enabled,
1967 GICXXPred_Simple_IsRule76Enabled,
1968 GICXXPred_Simple_IsRule77Enabled,
1969 GICXXPred_Simple_IsRule78Enabled,
1970 GICXXPred_Simple_IsRule79Enabled,
1971 GICXXPred_Simple_IsRule80Enabled,
1972 GICXXPred_Simple_IsRule81Enabled,
1973 GICXXPred_Simple_IsRule82Enabled,
1974 GICXXPred_Simple_IsRule83Enabled,
1975 GICXXPred_Simple_IsRule84Enabled,
1976 GICXXPred_Simple_IsRule85Enabled,
1977 GICXXPred_Simple_IsRule86Enabled,
1978 GICXXPred_Simple_IsRule87Enabled,
1979 GICXXPred_Simple_IsRule88Enabled,
1980 GICXXPred_Simple_IsRule89Enabled,
1981 GICXXPred_Simple_IsRule90Enabled,
1982 GICXXPred_Simple_IsRule91Enabled,
1983 GICXXPred_Simple_IsRule92Enabled,
1984 GICXXPred_Simple_IsRule93Enabled,
1985 GICXXPred_Simple_IsRule94Enabled,
1986 GICXXPred_Simple_IsRule95Enabled,
1987 GICXXPred_Simple_IsRule96Enabled,
1988 GICXXPred_Simple_IsRule97Enabled,
1989 GICXXPred_Simple_IsRule98Enabled,
1990 GICXXPred_Simple_IsRule99Enabled,
1991 GICXXPred_Simple_IsRule100Enabled,
1992 GICXXPred_Simple_IsRule101Enabled,
1993 GICXXPred_Simple_IsRule102Enabled,
1994 GICXXPred_Simple_IsRule103Enabled,
1995 GICXXPred_Simple_IsRule104Enabled,
1996 GICXXPred_Simple_IsRule105Enabled,
1997 GICXXPred_Simple_IsRule106Enabled,
1998 GICXXPred_Simple_IsRule107Enabled,
1999 GICXXPred_Simple_IsRule108Enabled,
2000 GICXXPred_Simple_IsRule109Enabled,
2001 GICXXPred_Simple_IsRule110Enabled,
2002 GICXXPred_Simple_IsRule111Enabled,
2003 GICXXPred_Simple_IsRule112Enabled,
2004 GICXXPred_Simple_IsRule113Enabled,
2005 GICXXPred_Simple_IsRule114Enabled,
2006 GICXXPred_Simple_IsRule115Enabled,
2007 GICXXPred_Simple_IsRule116Enabled,
2008 GICXXPred_Simple_IsRule117Enabled,
2009 GICXXPred_Simple_IsRule118Enabled,
2010 GICXXPred_Simple_IsRule119Enabled,
2011 GICXXPred_Simple_IsRule120Enabled,
2012 GICXXPred_Simple_IsRule121Enabled,
2013 GICXXPred_Simple_IsRule122Enabled,
2014 GICXXPred_Simple_IsRule123Enabled,
2015 GICXXPred_Simple_IsRule124Enabled,
2016 GICXXPred_Simple_IsRule125Enabled,
2017 GICXXPred_Simple_IsRule126Enabled,
2018 GICXXPred_Simple_IsRule127Enabled,
2019 GICXXPred_Simple_IsRule128Enabled,
2020 GICXXPred_Simple_IsRule129Enabled,
2021 GICXXPred_Simple_IsRule130Enabled,
2022 GICXXPred_Simple_IsRule131Enabled,
2023 GICXXPred_Simple_IsRule132Enabled,
2024 GICXXPred_Simple_IsRule133Enabled,
2025 GICXXPred_Simple_IsRule134Enabled,
2026 GICXXPred_Simple_IsRule135Enabled,
2027 GICXXPred_Simple_IsRule136Enabled,
2028 GICXXPred_Simple_IsRule137Enabled,
2029 GICXXPred_Simple_IsRule138Enabled,
2030 GICXXPred_Simple_IsRule139Enabled,
2031 GICXXPred_Simple_IsRule140Enabled,
2032 GICXXPred_Simple_IsRule141Enabled,
2033 GICXXPred_Simple_IsRule142Enabled,
2034 GICXXPred_Simple_IsRule143Enabled,
2035 GICXXPred_Simple_IsRule144Enabled,
2036 GICXXPred_Simple_IsRule145Enabled,
2037 GICXXPred_Simple_IsRule146Enabled,
2038 GICXXPred_Simple_IsRule147Enabled,
2039 GICXXPred_Simple_IsRule148Enabled,
2040 GICXXPred_Simple_IsRule149Enabled,
2041 GICXXPred_Simple_IsRule150Enabled,
2042 GICXXPred_Simple_IsRule151Enabled,
2043 GICXXPred_Simple_IsRule152Enabled,
2044 GICXXPred_Simple_IsRule153Enabled,
2045 GICXXPred_Simple_IsRule154Enabled,
2046 GICXXPred_Simple_IsRule155Enabled,
2047 GICXXPred_Simple_IsRule156Enabled,
2048 GICXXPred_Simple_IsRule157Enabled,
2049 GICXXPred_Simple_IsRule158Enabled,
2050 GICXXPred_Simple_IsRule159Enabled,
2051 GICXXPred_Simple_IsRule160Enabled,
2052 GICXXPred_Simple_IsRule161Enabled,
2053 GICXXPred_Simple_IsRule162Enabled,
2054 GICXXPred_Simple_IsRule163Enabled,
2055 GICXXPred_Simple_IsRule164Enabled,
2056 GICXXPred_Simple_IsRule165Enabled,
2057 GICXXPred_Simple_IsRule166Enabled,
2058 GICXXPred_Simple_IsRule167Enabled,
2059 GICXXPred_Simple_IsRule168Enabled,
2060 GICXXPred_Simple_IsRule169Enabled,
2061 GICXXPred_Simple_IsRule170Enabled,
2062 GICXXPred_Simple_IsRule171Enabled,
2063 GICXXPred_Simple_IsRule172Enabled,
2064 GICXXPred_Simple_IsRule173Enabled,
2065 GICXXPred_Simple_IsRule174Enabled,
2066 GICXXPred_Simple_IsRule175Enabled,
2067 GICXXPred_Simple_IsRule176Enabled,
2068 GICXXPred_Simple_IsRule177Enabled,
2069 GICXXPred_Simple_IsRule178Enabled,
2070 GICXXPred_Simple_IsRule179Enabled,
2071 GICXXPred_Simple_IsRule180Enabled,
2072 GICXXPred_Simple_IsRule181Enabled,
2073 GICXXPred_Simple_IsRule182Enabled,
2074 GICXXPred_Simple_IsRule183Enabled,
2075 GICXXPred_Simple_IsRule184Enabled,
2076 GICXXPred_Simple_IsRule185Enabled,
2077 GICXXPred_Simple_IsRule186Enabled,
2078 GICXXPred_Simple_IsRule187Enabled,
2079 GICXXPred_Simple_IsRule188Enabled,
2080 GICXXPred_Simple_IsRule189Enabled,
2081 GICXXPred_Simple_IsRule190Enabled,
2082 GICXXPred_Simple_IsRule191Enabled,
2083 GICXXPred_Simple_IsRule192Enabled,
2084 GICXXPred_Simple_IsRule193Enabled,
2085 GICXXPred_Simple_IsRule194Enabled,
2086 GICXXPred_Simple_IsRule195Enabled,
2087 GICXXPred_Simple_IsRule196Enabled,
2088 GICXXPred_Simple_IsRule197Enabled,
2089 GICXXPred_Simple_IsRule198Enabled,
2090 GICXXPred_Simple_IsRule199Enabled,
2091 GICXXPred_Simple_IsRule200Enabled,
2092 GICXXPred_Simple_IsRule201Enabled,
2093 GICXXPred_Simple_IsRule202Enabled,
2094 GICXXPred_Simple_IsRule203Enabled,
2095 GICXXPred_Simple_IsRule204Enabled,
2096 GICXXPred_Simple_IsRule205Enabled,
2097 GICXXPred_Simple_IsRule206Enabled,
2098 GICXXPred_Simple_IsRule207Enabled,
2099 GICXXPred_Simple_IsRule208Enabled,
2100 GICXXPred_Simple_IsRule209Enabled,
2101 GICXXPred_Simple_IsRule210Enabled,
2102 GICXXPred_Simple_IsRule211Enabled,
2103 GICXXPred_Simple_IsRule212Enabled,
2104 GICXXPred_Simple_IsRule213Enabled,
2105 GICXXPred_Simple_IsRule214Enabled,
2106 GICXXPred_Simple_IsRule215Enabled,
2107 GICXXPred_Simple_IsRule216Enabled,
2108 GICXXPred_Simple_IsRule217Enabled,
2109 GICXXPred_Simple_IsRule218Enabled,
2110 GICXXPred_Simple_IsRule219Enabled,
2111 GICXXPred_Simple_IsRule220Enabled,
2112 GICXXPred_Simple_IsRule221Enabled,
2113 GICXXPred_Simple_IsRule222Enabled,
2114 GICXXPred_Simple_IsRule223Enabled,
2115 GICXXPred_Simple_IsRule224Enabled,
2116 GICXXPred_Simple_IsRule225Enabled,
2117 GICXXPred_Simple_IsRule226Enabled,
2118 GICXXPred_Simple_IsRule227Enabled,
2119 GICXXPred_Simple_IsRule228Enabled,
2120 GICXXPred_Simple_IsRule229Enabled,
2121 GICXXPred_Simple_IsRule230Enabled,
2122 GICXXPred_Simple_IsRule231Enabled,
2123 GICXXPred_Simple_IsRule232Enabled,
2124 GICXXPred_Simple_IsRule233Enabled,
2125 GICXXPred_Simple_IsRule234Enabled,
2126 GICXXPred_Simple_IsRule235Enabled,
2127 GICXXPred_Simple_IsRule236Enabled,
2128 GICXXPred_Simple_IsRule237Enabled,
2129 GICXXPred_Simple_IsRule238Enabled,
2130 GICXXPred_Simple_IsRule239Enabled,
2131 GICXXPred_Simple_IsRule240Enabled,
2132 GICXXPred_Simple_IsRule241Enabled,
2133 GICXXPred_Simple_IsRule242Enabled,
2134 GICXXPred_Simple_IsRule243Enabled,
2135 GICXXPred_Simple_IsRule244Enabled,
2136 GICXXPred_Simple_IsRule245Enabled,
2137 GICXXPred_Simple_IsRule246Enabled,
2138 GICXXPred_Simple_IsRule247Enabled,
2139 GICXXPred_Simple_IsRule248Enabled,
2140 GICXXPred_Simple_IsRule249Enabled,
2141 GICXXPred_Simple_IsRule250Enabled,
2142 GICXXPred_Simple_IsRule251Enabled,
2143 GICXXPred_Simple_IsRule252Enabled,
2144 GICXXPred_Simple_IsRule253Enabled,
2145};
2146
2147bool AMDGPUPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2148 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2149}
2150// Custom renderers.
2151enum {
2152 GICR_Invalid,
2153};
2154AMDGPUPreLegalizerCombinerImpl::CustomRendererFn
2155AMDGPUPreLegalizerCombinerImpl::CustomRenderers[] = {
2156 nullptr, // GICR_Invalid
2157};
2158
2159bool AMDGPUPreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2160 const TargetSubtargetInfo &ST = MF.getSubtarget();
2161 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2162 B.setInstrAndDebugLoc(I);
2163 State.MIs.clear();
2164 State.MIs.push_back(&I);
2165 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2166 return true;
2167 }
2168
2169 return false;
2170}
2171
2172enum {
2173 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2174 GICXXCustomAction_GICombiner1,
2175 GICXXCustomAction_GICombiner2,
2176 GICXXCustomAction_GICombiner3,
2177 GICXXCustomAction_GICombiner4,
2178 GICXXCustomAction_GICombiner5,
2179 GICXXCustomAction_GICombiner6,
2180 GICXXCustomAction_GICombiner7,
2181 GICXXCustomAction_GICombiner8,
2182 GICXXCustomAction_GICombiner9,
2183 GICXXCustomAction_GICombiner10,
2184 GICXXCustomAction_GICombiner11,
2185 GICXXCustomAction_GICombiner12,
2186 GICXXCustomAction_GICombiner13,
2187 GICXXCustomAction_GICombiner14,
2188 GICXXCustomAction_GICombiner15,
2189 GICXXCustomAction_GICombiner16,
2190 GICXXCustomAction_GICombiner17,
2191 GICXXCustomAction_GICombiner18,
2192 GICXXCustomAction_GICombiner19,
2193 GICXXCustomAction_GICombiner20,
2194 GICXXCustomAction_GICombiner21,
2195 GICXXCustomAction_GICombiner22,
2196 GICXXCustomAction_GICombiner23,
2197 GICXXCustomAction_GICombiner24,
2198 GICXXCustomAction_GICombiner25,
2199 GICXXCustomAction_GICombiner26,
2200 GICXXCustomAction_GICombiner27,
2201 GICXXCustomAction_GICombiner28,
2202 GICXXCustomAction_GICombiner29,
2203 GICXXCustomAction_GICombiner30,
2204 GICXXCustomAction_GICombiner31,
2205 GICXXCustomAction_GICombiner32,
2206 GICXXCustomAction_GICombiner33,
2207 GICXXCustomAction_GICombiner34,
2208 GICXXCustomAction_GICombiner35,
2209 GICXXCustomAction_GICombiner36,
2210 GICXXCustomAction_GICombiner37,
2211 GICXXCustomAction_GICombiner38,
2212 GICXXCustomAction_GICombiner39,
2213 GICXXCustomAction_GICombiner40,
2214 GICXXCustomAction_GICombiner41,
2215 GICXXCustomAction_GICombiner42,
2216 GICXXCustomAction_GICombiner43,
2217 GICXXCustomAction_GICombiner44,
2218 GICXXCustomAction_GICombiner45,
2219 GICXXCustomAction_GICombiner46,
2220 GICXXCustomAction_GICombiner47,
2221 GICXXCustomAction_GICombiner48,
2222 GICXXCustomAction_GICombiner49,
2223 GICXXCustomAction_GICombiner50,
2224 GICXXCustomAction_GICombiner51,
2225 GICXXCustomAction_GICombiner52,
2226 GICXXCustomAction_GICombiner53,
2227 GICXXCustomAction_GICombiner54,
2228 GICXXCustomAction_GICombiner55,
2229 GICXXCustomAction_GICombiner56,
2230 GICXXCustomAction_GICombiner57,
2231 GICXXCustomAction_GICombiner58,
2232 GICXXCustomAction_GICombiner59,
2233 GICXXCustomAction_GICombiner60,
2234 GICXXCustomAction_GICombiner61,
2235 GICXXCustomAction_GICombiner62,
2236 GICXXCustomAction_GICombiner63,
2237 GICXXCustomAction_GICombiner64,
2238 GICXXCustomAction_GICombiner65,
2239 GICXXCustomAction_GICombiner66,
2240 GICXXCustomAction_GICombiner67,
2241 GICXXCustomAction_GICombiner68,
2242 GICXXCustomAction_GICombiner69,
2243 GICXXCustomAction_GICombiner70,
2244 GICXXCustomAction_GICombiner71,
2245 GICXXCustomAction_GICombiner72,
2246 GICXXCustomAction_GICombiner73,
2247 GICXXCustomAction_GICombiner74,
2248 GICXXCustomAction_GICombiner75,
2249 GICXXCustomAction_GICombiner76,
2250 GICXXCustomAction_GICombiner77,
2251 GICXXCustomAction_GICombiner78,
2252 GICXXCustomAction_GICombiner79,
2253 GICXXCustomAction_GICombiner80,
2254 GICXXCustomAction_GICombiner81,
2255 GICXXCustomAction_GICombiner82,
2256 GICXXCustomAction_GICombiner83,
2257 GICXXCustomAction_GICombiner84,
2258 GICXXCustomAction_GICombiner85,
2259 GICXXCustomAction_GICombiner86,
2260 GICXXCustomAction_GICombiner87,
2261 GICXXCustomAction_GICombiner88,
2262 GICXXCustomAction_GICombiner89,
2263 GICXXCustomAction_GICombiner90,
2264 GICXXCustomAction_GICombiner91,
2265 GICXXCustomAction_GICombiner92,
2266 GICXXCustomAction_GICombiner93,
2267 GICXXCustomAction_GICombiner94,
2268 GICXXCustomAction_GICombiner95,
2269 GICXXCustomAction_GICombiner96,
2270 GICXXCustomAction_GICombiner97,
2271 GICXXCustomAction_GICombiner98,
2272 GICXXCustomAction_GICombiner99,
2273 GICXXCustomAction_GICombiner100,
2274 GICXXCustomAction_GICombiner101,
2275 GICXXCustomAction_GICombiner102,
2276 GICXXCustomAction_GICombiner103,
2277 GICXXCustomAction_GICombiner104,
2278 GICXXCustomAction_GICombiner105,
2279 GICXXCustomAction_GICombiner106,
2280 GICXXCustomAction_GICombiner107,
2281 GICXXCustomAction_GICombiner108,
2282 GICXXCustomAction_GICombiner109,
2283 GICXXCustomAction_GICombiner110,
2284 GICXXCustomAction_GICombiner111,
2285 GICXXCustomAction_GICombiner112,
2286 GICXXCustomAction_GICombiner113,
2287 GICXXCustomAction_GICombiner114,
2288 GICXXCustomAction_GICombiner115,
2289 GICXXCustomAction_GICombiner116,
2290 GICXXCustomAction_GICombiner117,
2291 GICXXCustomAction_GICombiner118,
2292 GICXXCustomAction_GICombiner119,
2293 GICXXCustomAction_GICombiner120,
2294 GICXXCustomAction_GICombiner121,
2295 GICXXCustomAction_GICombiner122,
2296 GICXXCustomAction_GICombiner123,
2297 GICXXCustomAction_GICombiner124,
2298 GICXXCustomAction_GICombiner125,
2299 GICXXCustomAction_GICombiner126,
2300 GICXXCustomAction_GICombiner127,
2301 GICXXCustomAction_GICombiner128,
2302 GICXXCustomAction_GICombiner129,
2303 GICXXCustomAction_GICombiner130,
2304 GICXXCustomAction_GICombiner131,
2305 GICXXCustomAction_GICombiner132,
2306 GICXXCustomAction_GICombiner133,
2307 GICXXCustomAction_GICombiner134,
2308 GICXXCustomAction_GICombiner135,
2309 GICXXCustomAction_GICombiner136,
2310 GICXXCustomAction_GICombiner137,
2311 GICXXCustomAction_GICombiner138,
2312 GICXXCustomAction_GICombiner139,
2313 GICXXCustomAction_GICombiner140,
2314 GICXXCustomAction_GICombiner141,
2315 GICXXCustomAction_GICombiner142,
2316 GICXXCustomAction_GICombiner143,
2317 GICXXCustomAction_GICombiner144,
2318 GICXXCustomAction_GICombiner145,
2319 GICXXCustomAction_GICombiner146,
2320 GICXXCustomAction_GICombiner147,
2321 GICXXCustomAction_GICombiner148,
2322 GICXXCustomAction_GICombiner149,
2323 GICXXCustomAction_GICombiner150,
2324 GICXXCustomAction_GICombiner151,
2325 GICXXCustomAction_GICombiner152,
2326 GICXXCustomAction_GICombiner153,
2327 GICXXCustomAction_GICombiner154,
2328 GICXXCustomAction_GICombiner155,
2329 GICXXCustomAction_GICombiner156,
2330 GICXXCustomAction_GICombiner157,
2331 GICXXCustomAction_GICombiner158,
2332 GICXXCustomAction_GICombiner159,
2333 GICXXCustomAction_GICombiner160,
2334};
2335bool AMDGPUPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2336 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2337 switch(ApplyID) {
2338 case GICXXCustomAction_GICombiner0:{
2339 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2340 // Match Patterns
2341 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2342 return false;
2343 }
2344 // Apply Patterns
2345 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2346 return true;
2347 }
2348 case GICXXCustomAction_GICombiner1:{
2349 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2350 // Match Patterns
2351 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2352 return false;
2353 }
2354 // Apply Patterns
2355 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2356 return true;
2357 }
2358 case GICXXCustomAction_GICombiner2:{
2359 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2360 // Match Patterns
2361 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2362 return false;
2363 }
2364 // Apply Patterns
2365 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2366 return true;
2367 }
2368 case GICXXCustomAction_GICombiner3:{
2369 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2370 // Match Patterns
2371 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2372 return false;
2373 }
2374 // Apply Patterns
2375 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2376 return true;
2377 }
2378 case GICXXCustomAction_GICombiner4:{
2379 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2380 // Match Patterns
2381 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2382 return false;
2383 }
2384 // Apply Patterns
2385 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2386 return true;
2387 }
2388 case GICXXCustomAction_GICombiner5:{
2389 // Match Patterns
2390 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2391 return false;
2392 }
2393 // Apply Patterns
2394 Helper.applyCombineCopy(*State.MIs[0]);
2395 return true;
2396 }
2397 case GICXXCustomAction_GICombiner6:{
2398 unsigned GIMatchData_matchinfo;
2399 // Match Patterns
2400 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2401 return false;
2402 }
2403 // Apply Patterns
2404 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2405 return true;
2406 }
2407 case GICXXCustomAction_GICombiner7:{
2408 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2409 // Match Patterns
2410 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2411 return false;
2412 }
2413 // Apply Patterns
2414 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2415 return true;
2416 }
2417 case GICXXCustomAction_GICombiner8:{
2418 std::pair<Register, bool> GIMatchData_info;
2419 // Match Patterns
2420 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2421 return false;
2422 }
2423 // Apply Patterns
2424 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2425 return true;
2426 }
2427 case GICXXCustomAction_GICombiner9:{
2428 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2429 // Match Patterns
2430 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2431 return false;
2432 }
2433 // Apply Patterns
2434 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2435 return true;
2436 }
2437 case GICXXCustomAction_GICombiner10:{
2438 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2439 // Match Patterns
2440 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2441 return false;
2442 }
2443 // Apply Patterns
2444 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2445 return true;
2446 }
2447 case GICXXCustomAction_GICombiner11:{
2448 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2449 // Match Patterns
2450 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2451 return false;
2452 }
2453 // Apply Patterns
2454 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2455 return true;
2456 }
2457 case GICXXCustomAction_GICombiner12:{
2458 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2459 // Match Patterns
2460 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2461 GIMatchData_matchinfo);}()) {
2462 return false;
2463 }
2464 // Apply Patterns
2465 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2466 return true;
2467 }
2468 case GICXXCustomAction_GICombiner13:{
2469 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2470 // Match Patterns
2471 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2472 return false;
2473 }
2474 // Apply Patterns
2475 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2476 return true;
2477 }
2478 case GICXXCustomAction_GICombiner14:{
2479 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2480 // Match Patterns
2481 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2482 GIMatchData_matchinfo);}()) {
2483 return false;
2484 }
2485 // Apply Patterns
2486 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2487 return true;
2488 }
2489 case GICXXCustomAction_GICombiner15:{
2490 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2491 // Match Patterns
2492 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2493 return false;
2494 }
2495 // Apply Patterns
2496 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2497 return true;
2498 }
2499 case GICXXCustomAction_GICombiner16:{
2500 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2501 // Match Patterns
2502 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2503 return false;
2504 }
2505 // Apply Patterns
2506 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2507 return true;
2508 }
2509 case GICXXCustomAction_GICombiner17:{
2510 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2511 // Match Patterns
2512 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2513 return false;
2514 }
2515 // Apply Patterns
2516 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2517 return true;
2518 }
2519 case GICXXCustomAction_GICombiner18:{
2520 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2521 // Match Patterns
2522 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2523 return false;
2524 }
2525 // Apply Patterns
2526 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2527 return true;
2528 }
2529 case GICXXCustomAction_GICombiner19:{
2530 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2531 // Match Patterns
2532 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2533 return false;
2534 }
2535 // Apply Patterns
2536 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2537 return true;
2538 }
2539 case GICXXCustomAction_GICombiner20:{
2540 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2541 // Match Patterns
2542 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2543 return false;
2544 }
2545 // Apply Patterns
2546 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2547 return true;
2548 }
2549 case GICXXCustomAction_GICombiner21:{
2550 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2551 // Match Patterns
2552 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2553 return false;
2554 }
2555 // Apply Patterns
2556 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2557 return true;
2558 }
2559 case GICXXCustomAction_GICombiner22:{
2560 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2561 // Match Patterns
2562 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2563 return false;
2564 }
2565 // Apply Patterns
2566 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2567 return true;
2568 }
2569 case GICXXCustomAction_GICombiner23:{
2570 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2571 // Match Patterns
2572 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2573 return false;
2574 }
2575 // Apply Patterns
2576 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2577 return true;
2578 }
2579 case GICXXCustomAction_GICombiner24:{
2580 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2581 // Match Patterns
2582 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2583 return false;
2584 }
2585 // Apply Patterns
2586 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2587 return true;
2588 }
2589 case GICXXCustomAction_GICombiner25:{
2590 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2591 // Match Patterns
2592 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2593 return false;
2594 }
2595 // Apply Patterns
2596 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2597 return true;
2598 }
2599 case GICXXCustomAction_GICombiner26:{
2600 APInt GIMatchData_matchinfo;
2601 // Match Patterns
2602 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2603 return false;
2604 }
2605 // Apply Patterns
2606 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2607 return true;
2608 }
2609 case GICXXCustomAction_GICombiner27:{
2610 SmallVector<Register> GIMatchData_info;
2611 // Match Patterns
2612 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2613 return false;
2614 }
2615 // Apply Patterns
2616 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2617 return true;
2618 }
2619 case GICXXCustomAction_GICombiner28:{
2620 Register GIMatchData_matchinfo;
2621 // Match Patterns
2622 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2623 return false;
2624 }
2625 // Apply Patterns
2626 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2627 return true;
2628 }
2629 case GICXXCustomAction_GICombiner29:{
2630 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2631 // Match Patterns
2632 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2633 return false;
2634 }
2635 // Apply Patterns
2636 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2637 return true;
2638 }
2639 case GICXXCustomAction_GICombiner30:{
2640 PreferredTuple GIMatchData_matchinfo;
2641 // Match Patterns
2642 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2643 return false;
2644 }
2645 // Apply Patterns
2646 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2647 return true;
2648 }
2649 case GICXXCustomAction_GICombiner31:{
2650 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2651 // Match Patterns
2652 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2653 return false;
2654 }
2655 // Apply Patterns
2656 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2657 return true;
2658 }
2659 case GICXXCustomAction_GICombiner32:{
2660 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2661 // Match Patterns
2662 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2663 return false;
2664 }
2665 // Apply Patterns
2666 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2667 return true;
2668 }
2669 case GICXXCustomAction_GICombiner33:{
2670 // Match Patterns
2671 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2672 return false;
2673 }
2674 // Apply Patterns
2675 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2676 return true;
2677 }
2678 case GICXXCustomAction_GICombiner34:{
2679 // Match Patterns
2680 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2681 return false;
2682 }
2683 // Apply Patterns
2684 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2685 return true;
2686 }
2687 case GICXXCustomAction_GICombiner35:{
2688 // Match Patterns
2689 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2690 return false;
2691 }
2692 // Apply Patterns
2693 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2694 return true;
2695 }
2696 case GICXXCustomAction_GICombiner36:{
2697 // Match Patterns
2698 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2699 return false;
2700 }
2701 // Apply Patterns
2702 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2703 return true;
2704 }
2705 case GICXXCustomAction_GICombiner37:{
2706 // Match Patterns
2707 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2708 return false;
2709 }
2710 // Apply Patterns
2711 Helper.replaceInstWithUndef(*State.MIs[0]);
2712 return true;
2713 }
2714 case GICXXCustomAction_GICombiner38:{
2715 // Apply Patterns
2716 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2717 return true;
2718 }
2719 case GICXXCustomAction_GICombiner39:{
2720 // Match Patterns
2721 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2722 return false;
2723 }
2724 // Apply Patterns
2725 Helper.replaceInstWithUndef(*State.MIs[0]);
2726 return true;
2727 }
2728 case GICXXCustomAction_GICombiner40:{
2729 // Match Patterns
2730 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2731 return false;
2732 }
2733 // Apply Patterns
2734 Helper.replaceInstWithUndef(*State.MIs[0]);
2735 return true;
2736 }
2737 case GICXXCustomAction_GICombiner41:{
2738 // Match Patterns
2739 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2740 return false;
2741 }
2742 // Apply Patterns
2743 Helper.replaceInstWithUndef(*State.MIs[0]);
2744 return true;
2745 }
2746 case GICXXCustomAction_GICombiner42:{
2747 // Match Patterns
2748 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2749 return false;
2750 }
2751 // Apply Patterns
2752 Helper.eraseInst(*State.MIs[0]);
2753 return true;
2754 }
2755 case GICXXCustomAction_GICombiner43:{
2756 // Match Patterns
2757 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2758 return false;
2759 }
2760 // Apply Patterns
2761 Helper.replaceInstWithUndef(*State.MIs[0]);
2762 return true;
2763 }
2764 case GICXXCustomAction_GICombiner44:{
2765 // Match Patterns
2766 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2767 return false;
2768 }
2769 // Apply Patterns
2770 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2771 return true;
2772 }
2773 case GICXXCustomAction_GICombiner45:{
2774 Register GIMatchData_info;
2775 // Match Patterns
2776 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2777 return false;
2778 }
2779 // Apply Patterns
2780 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2781 return true;
2782 }
2783 case GICXXCustomAction_GICombiner46:{
2784 Register GIMatchData_info;
2785 // Match Patterns
2786 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2787 return false;
2788 }
2789 // Apply Patterns
2790 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2791 return true;
2792 }
2793 case GICXXCustomAction_GICombiner47:{
2794 Register GIMatchData_matchinfo;
2795 // Match Patterns
2796 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2797 return false;
2798 }
2799 // Apply Patterns
2800 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2801 return true;
2802 }
2803 case GICXXCustomAction_GICombiner48:{
2804 Register GIMatchData_matchinfo;
2805 // Match Patterns
2806 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2807 return false;
2808 }
2809 // Apply Patterns
2810 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2811 return true;
2812 }
2813 case GICXXCustomAction_GICombiner49:{
2814 Register GIMatchData_matchinfo;
2815 // Match Patterns
2816 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2817 return false;
2818 }
2819 // Apply Patterns
2820 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2821 return true;
2822 }
2823 case GICXXCustomAction_GICombiner50:{
2824 Register GIMatchData_matchinfo;
2825 // Match Patterns
2826 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2827 return false;
2828 }
2829 // Apply Patterns
2830 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2831 return true;
2832 }
2833 case GICXXCustomAction_GICombiner51:{
2834 // Match Patterns
2835 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2836 return false;
2837 }
2838 // Apply Patterns
2839 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2840 return true;
2841 }
2842 case GICXXCustomAction_GICombiner52:{
2843 MachineInstr* GIMatchData_matchinfo;
2844 // Match Patterns
2845 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2846 return false;
2847 }
2848 // Apply Patterns
2849 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2850 return true;
2851 }
2852 case GICXXCustomAction_GICombiner53:{
2853 std::tuple<Register, Register> GIMatchData_info;
2854 // Match Patterns
2855 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2856 return false;
2857 }
2858 // Apply Patterns
2859 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2860 return true;
2861 }
2862 case GICXXCustomAction_GICombiner54:{
2863 InstructionStepsMatchInfo GIMatchData_info;
2864 // Match Patterns
2865 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2866 return false;
2867 }
2868 // Apply Patterns
2869 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2870 return true;
2871 }
2872 case GICXXCustomAction_GICombiner55:{
2873 std::optional<int64_t> GIMatchData_matchinfo;
2874 // Match Patterns
2875 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2876 return false;
2877 }
2878 // Apply Patterns
2879 if (GIMatchData_matchinfo) {
2880 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2881 } else {
2882 Helper.replaceInstWithUndef(*State.MIs[0]);
2883 }
2884 return true;
2885 }
2886 case GICXXCustomAction_GICombiner56:{
2887 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2888 // Match Patterns
2889 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2890 return false;
2891 }
2892 // Apply Patterns
2893 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2894 return true;
2895 }
2896 case GICXXCustomAction_GICombiner57:{
2897 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2898 // Match Patterns
2899 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2900 return false;
2901 }
2902 // Apply Patterns
2903 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2904 return true;
2905 }
2906 case GICXXCustomAction_GICombiner58:{
2907 PtrAddChain GIMatchData_matchinfo;
2908 // Match Patterns
2909 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2910 return false;
2911 }
2912 // Apply Patterns
2913 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2914 return true;
2915 }
2916 case GICXXCustomAction_GICombiner59:{
2917 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2918 // Match Patterns
2919 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2920 return false;
2921 }
2922 // Apply Patterns
2923 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2924 return true;
2925 }
2926 case GICXXCustomAction_GICombiner60:{
2927 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2928 // Match Patterns
2929 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2930 return false;
2931 }
2932 // Apply Patterns
2933 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2934 return true;
2935 }
2936 case GICXXCustomAction_GICombiner61:{
2937 int64_t GIMatchData_matchinfo;
2938 // Match Patterns
2939 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2940 return false;
2941 }
2942 // Apply Patterns
2943 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2944 return true;
2945 }
2946 case GICXXCustomAction_GICombiner62:{
2947 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2948 // Match Patterns
2949 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2950 return false;
2951 }
2952 // Apply Patterns
2953 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2954 return true;
2955 }
2956 case GICXXCustomAction_GICombiner63:{
2957 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2958 // Match Patterns
2959 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2960 return false;
2961 }
2962 // Apply Patterns
2963 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2964 return true;
2965 }
2966 case GICXXCustomAction_GICombiner64:{
2967 std::tuple<Register, int64_t> GIMatchData_info;
2968 // Match Patterns
2969 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2970 return false;
2971 }
2972 // Apply Patterns
2973 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2974 return true;
2975 }
2976 case GICXXCustomAction_GICombiner65:{
2977 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2978 // Match Patterns
2979 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2980 return false;
2981 }
2982 // Apply Patterns
2983 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2984 return true;
2985 }
2986 case GICXXCustomAction_GICombiner66:{
2987 RegisterImmPair GIMatchData_matchinfo;
2988 // Match Patterns
2989 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2990 return false;
2991 }
2992 // Apply Patterns
2993 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2994 return true;
2995 }
2996 case GICXXCustomAction_GICombiner67:{
2997 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2998 // Match Patterns
2999 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3000 return false;
3001 }
3002 // Apply Patterns
3003 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3004 return true;
3005 }
3006 case GICXXCustomAction_GICombiner68:{
3007 unsigned GIMatchData_matchinfo;
3008 // Match Patterns
3009 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3010 return false;
3011 }
3012 // Apply Patterns
3013 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3014 return true;
3015 }
3016 case GICXXCustomAction_GICombiner69:{
3017 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3018 // Match Patterns
3019 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3020 return false;
3021 }
3022 // Apply Patterns
3023 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3024 return true;
3025 }
3026 case GICXXCustomAction_GICombiner70:{
3027 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3028 // Match Patterns
3029 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3030 return false;
3031 }
3032 // Apply Patterns
3033 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3034 return true;
3035 }
3036 case GICXXCustomAction_GICombiner71:{
3037 Register GIMatchData_matchinfo;
3038 // Match Patterns
3039 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3040 return false;
3041 }
3042 // Apply Patterns
3043 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3044 return true;
3045 }
3046 case GICXXCustomAction_GICombiner72:{
3047 // Match Patterns
3048 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3049 return false;
3050 }
3051 // Apply Patterns
3052 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3053 return true;
3054 }
3055 case GICXXCustomAction_GICombiner73:{
3056 Register GIMatchData_matchinfo;
3057 // Match Patterns
3058 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3059 return false;
3060 }
3061 // Apply Patterns
3062 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3063 return true;
3064 }
3065 case GICXXCustomAction_GICombiner74:{
3066 // Match Patterns
3067 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
3068 return false;
3069 }
3070 // Apply Patterns
3071 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3072 return true;
3073 }
3074 case GICXXCustomAction_GICombiner75:{
3075 Register GIMatchData_matchinfo;
3076 // Match Patterns
3077 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3078 return false;
3079 }
3080 // Apply Patterns
3081 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3082 return true;
3083 }
3084 case GICXXCustomAction_GICombiner76:{
3085 // Match Patterns
3086 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3087 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3088 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3089 return false;
3090 }
3091 // Apply Patterns
3092 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3093 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3094 State.MIs[0]->eraseFromParent();
3095 return true;
3096 }
3097 case GICXXCustomAction_GICombiner77:{
3098 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3099 // Match Patterns
3100 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3101 return false;
3102 }
3103 // Apply Patterns
3104 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3105 return true;
3106 }
3107 case GICXXCustomAction_GICombiner78:{
3108 SmallVector<Register> GIMatchData_info;
3109 // Match Patterns
3110 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3111 return false;
3112 }
3113 // Apply Patterns
3114 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3115 return true;
3116 }
3117 case GICXXCustomAction_GICombiner79:{
3118 MachineInstr * GIMatchData_matchinfo;
3119 // Match Patterns
3120 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3121 return false;
3122 }
3123 // Apply Patterns
3124 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3125 return true;
3126 }
3127 case GICXXCustomAction_GICombiner80:{
3128 // Apply Patterns
3129 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3130 return true;
3131 }
3132 case GICXXCustomAction_GICombiner81:{
3133 // Apply Patterns
3134 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3135 return true;
3136 }
3137 case GICXXCustomAction_GICombiner82:{
3138 APInt GIMatchData_info;
3139 // Match Patterns
3140 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3141 return false;
3142 }
3143 // Apply Patterns
3144 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3145 return true;
3146 }
3147 case GICXXCustomAction_GICombiner83:{
3148 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3149 // Match Patterns
3150 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3151 return false;
3152 }
3153 // Apply Patterns
3154 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3155 return true;
3156 }
3157 case GICXXCustomAction_GICombiner84:{
3158 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3159 // Match Patterns
3160 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3161 return false;
3162 }
3163 // Apply Patterns
3164 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3165 return true;
3166 }
3167 case GICXXCustomAction_GICombiner85:{
3168 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3169 // Match Patterns
3170 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3171 return false;
3172 }
3173 // Apply Patterns
3174 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3175 return true;
3176 }
3177 case GICXXCustomAction_GICombiner86:{
3178 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3179 // Match Patterns
3180 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3181 return false;
3182 }
3183 // Apply Patterns
3184 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3185 return true;
3186 }
3187 case GICXXCustomAction_GICombiner87:{
3188 unsigned GIMatchData_info;
3189 // Match Patterns
3190 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3191 return false;
3192 }
3193 // Apply Patterns
3194 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3195 return true;
3196 }
3197 case GICXXCustomAction_GICombiner88:{
3198 // Match Patterns
3199 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3200 return false;
3201 }
3202 // Apply Patterns
3203 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3204 return true;
3205 }
3206 case GICXXCustomAction_GICombiner89:{
3207 std::pair<Register, Register> GIMatchData_matchinfo;
3208 // Match Patterns
3209 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3210 return false;
3211 }
3212 // Apply Patterns
3213 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3214 return true;
3215 }
3216 case GICXXCustomAction_GICombiner90:{
3217 // Match Patterns
3218 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3219 return false;
3220 }
3221 // Apply Patterns
3222 Helper.applyPtrAddZero(*State.MIs[0]);
3223 return true;
3224 }
3225 case GICXXCustomAction_GICombiner91:{
3226 RegisterImmPair GIMatchData_matchinfo;
3227 // Match Patterns
3228 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3229 return false;
3230 }
3231 // Apply Patterns
3232 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3233 return true;
3234 }
3235 case GICXXCustomAction_GICombiner92:{
3236 ShiftOfShiftedLogic GIMatchData_matchinfo;
3237 // Match Patterns
3238 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3239 return false;
3240 }
3241 // Apply Patterns
3242 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3243 return true;
3244 }
3245 case GICXXCustomAction_GICombiner93:{
3246 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3247 // Match Patterns
3248 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3249 return false;
3250 }
3251 // Apply Patterns
3252 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3253 return true;
3254 }
3255 case GICXXCustomAction_GICombiner94:{
3256 MachineInstr * GIMatchData_matchinfo;
3257 // Match Patterns
3258 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3259 return false;
3260 }
3261 // Apply Patterns
3262 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3263 return true;
3264 }
3265 case GICXXCustomAction_GICombiner95:{
3266 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3267 // Match Patterns
3268 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3269 return false;
3270 }
3271 // Apply Patterns
3272 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3273 return true;
3274 }
3275 case GICXXCustomAction_GICombiner96:{
3276 // Match Patterns
3277 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3278 return false;
3279 }
3280 // Apply Patterns
3281 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3282 return true;
3283 }
3284 case GICXXCustomAction_GICombiner97:{
3285 // Match Patterns
3286 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3287 return false;
3288 }
3289 // Apply Patterns
3290 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3291 return true;
3292 }
3293 case GICXXCustomAction_GICombiner98:{
3294 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3295 // Match Patterns
3296 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3297 return false;
3298 }
3299 // Apply Patterns
3300 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3301 return true;
3302 }
3303 case GICXXCustomAction_GICombiner99:{
3304 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3305 // Match Patterns
3306 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3307 return false;
3308 }
3309 // Apply Patterns
3310 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3311 return true;
3312 }
3313 case GICXXCustomAction_GICombiner100:{
3314 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3315 // Match Patterns
3316 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3317 return false;
3318 }
3319 // Apply Patterns
3320 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3321 return true;
3322 }
3323 case GICXXCustomAction_GICombiner101:{
3324 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3325 // Match Patterns
3326 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3327 return false;
3328 }
3329 // Apply Patterns
3330 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3331 return true;
3332 }
3333 case GICXXCustomAction_GICombiner102:{
3334 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3335 // Match Patterns
3336 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3337 return false;
3338 }
3339 // Apply Patterns
3340 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3341 return true;
3342 }
3343 case GICXXCustomAction_GICombiner103:{
3344 APInt GIMatchData_matchinfo;
3345 // Match Patterns
3346 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3347 return false;
3348 }
3349 // Apply Patterns
3350 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3351 return true;
3352 }
3353 case GICXXCustomAction_GICombiner104:{
3354 ConstantFP* GIMatchData_matchinfo;
3355 // Match Patterns
3356 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3357 return false;
3358 }
3359 // Apply Patterns
3360 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3361 return true;
3362 }
3363 case GICXXCustomAction_GICombiner105:{
3364 ConstantFP* GIMatchData_matchinfo;
3365 // Match Patterns
3366 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3367 return false;
3368 }
3369 // Apply Patterns
3370 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3371 return true;
3372 }
3373 case GICXXCustomAction_GICombiner106:{
3374 APInt GIMatchData_matchinfo;
3375 // Match Patterns
3376 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3377 return false;
3378 }
3379 // Apply Patterns
3380 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3381 return true;
3382 }
3383 case GICXXCustomAction_GICombiner107:{
3384 // Match Patterns
3385 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3386 return false;
3387 }
3388 // Apply Patterns
3389 Helper.applyUMulHToLShr(*State.MIs[0]);
3390 return true;
3391 }
3392 case GICXXCustomAction_GICombiner108:{
3393 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3394 // Match Patterns
3395 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3396 return false;
3397 }
3398 // Apply Patterns
3399 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3400 return true;
3401 }
3402 case GICXXCustomAction_GICombiner109:{
3403 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3404 // Match Patterns
3405 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3406 return false;
3407 }
3408 // Apply Patterns
3409 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3410 return true;
3411 }
3412 case GICXXCustomAction_GICombiner110:{
3413 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3414 // Match Patterns
3415 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3416 GIMatchData_info);}()) {
3417 return false;
3418 }
3419 // Apply Patterns
3420 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3421 return true;
3422 }
3423 case GICXXCustomAction_GICombiner111:{
3424 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3425 // Match Patterns
3426 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3427 GIMatchData_info);}()) {
3428 return false;
3429 }
3430 // Apply Patterns
3431 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3432 return true;
3433 }
3434 case GICXXCustomAction_GICombiner112:{
3435 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3436 // Match Patterns
3437 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3438 GIMatchData_info);}()) {
3439 return false;
3440 }
3441 // Apply Patterns
3442 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3443 return true;
3444 }
3445 case GICXXCustomAction_GICombiner113:{
3446 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3447 // Match Patterns
3448 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3449 *State.MIs[0], GIMatchData_info);}()) {
3450 return false;
3451 }
3452 // Apply Patterns
3453 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3454 return true;
3455 }
3456 case GICXXCustomAction_GICombiner114:{
3457 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3458 // Match Patterns
3459 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3460 GIMatchData_info);}()) {
3461 return false;
3462 }
3463 // Apply Patterns
3464 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3465 return true;
3466 }
3467 case GICXXCustomAction_GICombiner115:{
3468 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3469 // Match Patterns
3470 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3471 GIMatchData_info);}()) {
3472 return false;
3473 }
3474 // Apply Patterns
3475 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3476 return true;
3477 }
3478 case GICXXCustomAction_GICombiner116:{
3479 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3480 // Match Patterns
3481 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3482 GIMatchData_info);}()) {
3483 return false;
3484 }
3485 // Apply Patterns
3486 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3487 return true;
3488 }
3489 case GICXXCustomAction_GICombiner117:{
3490 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3491 // Match Patterns
3492 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3493 *State.MIs[0], GIMatchData_info);}()) {
3494 return false;
3495 }
3496 // Apply Patterns
3497 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3498 return true;
3499 }
3500 case GICXXCustomAction_GICombiner118:{
3501 unsigned GIMatchData_select_op_no;
3502 // Match Patterns
3503 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3504 return false;
3505 }
3506 // Apply Patterns
3507 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3508 return true;
3509 }
3510 case GICXXCustomAction_GICombiner119:{
3511 // Match Patterns
3512 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3513 return false;
3514 }
3515 // Apply Patterns
3516 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3517 return true;
3518 }
3519 case GICXXCustomAction_GICombiner120:{
3520 // Match Patterns
3521 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3522 return false;
3523 }
3524 // Apply Patterns
3525 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3526 return true;
3527 }
3528 case GICXXCustomAction_GICombiner121:{
3529 // Match Patterns
3530 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3531 return false;
3532 }
3533 // Apply Patterns
3534 Helper.applyUDivByPow2(*State.MIs[0]);
3535 return true;
3536 }
3537 case GICXXCustomAction_GICombiner122:{
3538 // Match Patterns
3539 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3540 return false;
3541 }
3542 // Apply Patterns
3543 Helper.applySDivByPow2(*State.MIs[0]);
3544 return true;
3545 }
3546 case GICXXCustomAction_GICombiner123:{
3547 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3548 // Match Patterns
3549 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3550 return false;
3551 }
3552 // Apply Patterns
3553 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3554 return true;
3555 }
3556 case GICXXCustomAction_GICombiner124:{
3557 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3558 // Match Patterns
3559 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3560 return false;
3561 }
3562 // Apply Patterns
3563 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3564 return true;
3565 }
3566 case GICXXCustomAction_GICombiner125:{
3567 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3568 // Match Patterns
3569 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3570 return false;
3571 }
3572 // Apply Patterns
3573 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3574 return true;
3575 }
3576 case GICXXCustomAction_GICombiner126:{
3577 Register GIMatchData_matchinfo;
3578 // Match Patterns
3579 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3580 return false;
3581 }
3582 // Apply Patterns
3583 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3584 return true;
3585 }
3586 case GICXXCustomAction_GICombiner127:{
3587 // Match Patterns
3588 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3589 return false;
3590 }
3591 // Apply Patterns
3592 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3593 return true;
3594 }
3595 case GICXXCustomAction_GICombiner128:{
3596 // Match Patterns
3597 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3598 return false;
3599 }
3600 // Apply Patterns
3601 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3602 return true;
3603 }
3604 case GICXXCustomAction_GICombiner129:{
3605 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3606 // Match Patterns
3607 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3608 return false;
3609 }
3610 // Apply Patterns
3611 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3612 return true;
3613 }
3614 case GICXXCustomAction_GICombiner130:{
3615 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3616 // Match Patterns
3617 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3618 return false;
3619 }
3620 // Apply Patterns
3621 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3622 return true;
3623 }
3624 case GICXXCustomAction_GICombiner131:{
3625 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3626 // Match Patterns
3627 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3628 return false;
3629 }
3630 // Apply Patterns
3631 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3632 return true;
3633 }
3634 case GICXXCustomAction_GICombiner132:{
3635 SmallVector<Register> GIMatchData_matchinfo;
3636 // Match Patterns
3637 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3638 return false;
3639 }
3640 // Apply Patterns
3641 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3642 return true;
3643 }
3644 case GICXXCustomAction_GICombiner133:{
3645 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3646 // Match Patterns
3647 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3648 return false;
3649 }
3650 // Apply Patterns
3651 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3652 return true;
3653 }
3654 case GICXXCustomAction_GICombiner134:{
3655 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3656 // Match Patterns
3657 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3658 return false;
3659 }
3660 // Apply Patterns
3661 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3662 return true;
3663 }
3664 case GICXXCustomAction_GICombiner135:{
3665 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3666 // Match Patterns
3667 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3668 return false;
3669 }
3670 // Apply Patterns
3671 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3672 return true;
3673 }
3674 case GICXXCustomAction_GICombiner136:{
3675 SmallVector<Register> GIMatchData_matchinfo;
3676 // Match Patterns
3677 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3678 return false;
3679 }
3680 // Apply Patterns
3681 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3682 return true;
3683 }
3684 case GICXXCustomAction_GICombiner137:{
3685 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3686 // Match Patterns
3687 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3688 return false;
3689 }
3690 // Apply Patterns
3691 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3692 return true;
3693 }
3694 case GICXXCustomAction_GICombiner138:{
3695 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3696 // Match Patterns
3697 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3698 return false;
3699 }
3700 // Apply Patterns
3701 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3702 return true;
3703 }
3704 case GICXXCustomAction_GICombiner139:{
3705 Register GIMatchData_matchinfo;
3706 // Match Patterns
3707 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3708 return false;
3709 }
3710 // Apply Patterns
3711 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3712 return true;
3713 }
3714 case GICXXCustomAction_GICombiner140:{
3715 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3716 // Match Patterns
3717 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3718 return false;
3719 }
3720 // Apply Patterns
3721 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3722 return true;
3723 }
3724 case GICXXCustomAction_GICombiner141:{
3725 SmallVector<Register> GIMatchData_info;
3726 // Match Patterns
3727 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3728 return false;
3729 }
3730 // Apply Patterns
3731 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3732 return true;
3733 }
3734 case GICXXCustomAction_GICombiner142:{
3735 Register GIMatchData_src;
3736 // Match Patterns
3737 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3738 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3739 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3740 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3741 return false;
3742
3743 // Check counts match.
3744 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3745 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3746 if (NumMergeSrcs != NumUnmergeDefs)
3747 return false;
3748
3749 // Verify all merge sources match unmerge defs in order.
3750 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3751 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3752 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3753
3754 if (MergeSrc != UnmergeDef)
3755 return false;
3756
3757 if (!MRI.hasOneNonDBGUse(MergeSrc))
3758 return false;
3759 }
3760
3761 // Check size compatibility.
3762 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3763 LLT SrcTy = MRI.getType(GIMatchData_src);
3764 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3765 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3766 return false;
3767
3768 // Check bitcast legality.
3769 if (SrcTy != DstTy) {
3770 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3771 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3772 if (!Helper.isLegalOrBeforeLegalizer(Query))
3773 return false;
3774 }
3775
3776 return true;}()) {
3777 return false;
3778 }
3779 // Apply Patterns
3780 LLT SrcTy = MRI.getType(GIMatchData_src);
3781 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3782
3783 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3784
3785 if (SrcTy == DstTy) {
3786 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3787 } else {
3788 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3789 }
3790
3791 State.MIs[0]->eraseFromParent();
3792 return true;
3793 }
3794 case GICXXCustomAction_GICombiner143:{
3795 SmallVector<APInt, 8> GIMatchData_info;
3796 // Match Patterns
3797 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3798 return false;
3799 }
3800 // Apply Patterns
3801 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3802 return true;
3803 }
3804 case GICXXCustomAction_GICombiner144:{
3805 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3806 // Match Patterns
3807 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3808 return false;
3809 }
3810 // Apply Patterns
3811 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3812 return true;
3813 }
3814 case GICXXCustomAction_GICombiner145:{
3815 // Match Patterns
3816 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3817 return false;
3818 }
3819 // Apply Patterns
3820 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3821 return true;
3822 }
3823 case GICXXCustomAction_GICombiner146:{
3824 // Match Patterns
3825 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3826 return false;
3827 }
3828 // Apply Patterns
3829 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3830 return true;
3831 }
3832 case GICXXCustomAction_GICombiner147:{
3833 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3834 // Match Patterns
3835 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3836 return false;
3837 }
3838 // Apply Patterns
3839 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3840 return true;
3841 }
3842 case GICXXCustomAction_GICombiner148:{
3843 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3844 // Match Patterns
3845 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3846 return false;
3847 }
3848 // Apply Patterns
3849 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3850 return true;
3851 }
3852 case GICXXCustomAction_GICombiner149:{
3853 Register GIMatchData_unmergeSrc;
3854 // Match Patterns
3855 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3856 return false;
3857 }
3858 // Apply Patterns
3859 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3860 return true;
3861 }
3862 case GICXXCustomAction_GICombiner150:{
3863 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3864 // Match Patterns
3865 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3866 return false;
3867 }
3868 // Apply Patterns
3869 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3870 return true;
3871 }
3872 case GICXXCustomAction_GICombiner151:{
3873 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3874 // Match Patterns
3875 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3876 return false;
3877 }
3878 // Apply Patterns
3879 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3880 return true;
3881 }
3882 case GICXXCustomAction_GICombiner152:{
3883 Register GIMatchData_matchinfo;
3884 // Match Patterns
3885 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3886 return false;
3887 }
3888 // Apply Patterns
3889 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3890 return true;
3891 }
3892 case GICXXCustomAction_GICombiner153:{
3893 Register GIMatchData_matchinfo;
3894 // Match Patterns
3895 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3896 return false;
3897 }
3898 // Apply Patterns
3899 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3900 return true;
3901 }
3902 case GICXXCustomAction_GICombiner154:{
3903 LshrOfTruncOfLshr GIMatchData_matchinfo;
3904 // Match Patterns
3905 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3906 return false;
3907 }
3908 // Apply Patterns
3909 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3910 return true;
3911 }
3912 case GICXXCustomAction_GICombiner155:{
3913 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3914 // Match Patterns
3915 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3916 return false;
3917 }
3918 // Apply Patterns
3919 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3920 return true;
3921 }
3922 case GICXXCustomAction_GICombiner156:{
3923 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3924 // Match Patterns
3925 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3926 return false;
3927 }
3928 // Apply Patterns
3929 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3930 return true;
3931 }
3932 case GICXXCustomAction_GICombiner157:{
3933 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3934 // Match Patterns
3935 if(![&](){return Helper.matchCombineFmulWithSelectToFldexp(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3936 return false;
3937 }
3938 // Apply Patterns
3939 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3940 return true;
3941 }
3942 case GICXXCustomAction_GICombiner158:{
3943 ClampI64ToI16MatchInfo GIMatchData_matchinfo;
3944 // Match Patterns
3945 if(![&](){return matchClampI64ToI16(*State.MIs[0], MRI, MF, GIMatchData_matchinfo);}()) {
3946 return false;
3947 }
3948 // Apply Patterns
3949 applyClampI64ToI16(*State.MIs[0], GIMatchData_matchinfo);
3950 return true;
3951 }
3952 case GICXXCustomAction_GICombiner159:{
3953 MachineInstr * GIMatchData_matchinfo;
3954 // Match Patterns
3955 if(![&](){return Helper.matchFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3956 return false;
3957 }
3958 // Apply Patterns
3959 Helper.applyFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);
3960 return true;
3961 }
3962 case GICXXCustomAction_GICombiner160:{
3963 // Apply Patterns
3964 Helper.applyCombineShuffleToBuildVector(*State.MIs[0]);
3965 return true;
3966 }
3967 }
3968 llvm_unreachable("Unknown Apply Action");
3969}
3970#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3971#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
3972#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
3973#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)
3974#else
3975#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
3976#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3977#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)
3978#endif
3979const uint8_t *AMDGPUPreLegalizerCombinerImpl::getMatchTable() const {
3980 constexpr static uint8_t MatchTable0[] = {
3981 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(282), /*)*//*default:*//*Label 106*/ GIMT_Encode4(9059),
3982 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1058), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3983 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1070),
3984 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1803),
3985 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2496),
3986 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(2702),
3987 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2804),
3988 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(2917),
3989 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3002), GIMT_Encode4(0), GIMT_Encode4(0),
3990 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3109),
3991 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3515),
3992 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(4247), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3993 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(4458), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3994 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(4470), GIMT_Encode4(0),
3995 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(4537),
3996 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(4614),
3997 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(4679),
3998 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(4691),
3999 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(4703),
4000 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(4746),
4001 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(4779),
4002 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(4822), GIMT_Encode4(0), GIMT_Encode4(0),
4003 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(4886),
4004 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(4908), GIMT_Encode4(0), GIMT_Encode4(0),
4005 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(4930), GIMT_Encode4(0), GIMT_Encode4(0),
4006 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(4952),
4007 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(4964),
4008 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(4976), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4009 /* 350 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(4988), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4010 /* 494 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(5000),
4011 /* 498 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(5128), GIMT_Encode4(0), GIMT_Encode4(0),
4012 /* 510 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(5551), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4013 /* 530 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(5584),
4014 /* 534 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(5659),
4015 /* 538 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(5725),
4016 /* 542 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(5855),
4017 /* 546 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(6053),
4018 /* 550 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(6234),
4019 /* 554 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(6397),
4020 /* 558 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(6440),
4021 /* 562 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(6483),
4022 /* 566 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(6507),
4023 /* 570 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(6531),
4024 /* 574 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(6576), GIMT_Encode4(0), GIMT_Encode4(0),
4025 /* 586 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(6588),
4026 /* 590 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(6683),
4027 /* 594 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(6706),
4028 /* 598 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(6718),
4029 /* 602 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(6730),
4030 /* 606 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(6742),
4031 /* 610 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(6765),
4032 /* 614 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(6777),
4033 /* 618 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(6789),
4034 /* 622 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(6801),
4035 /* 626 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(6835),
4036 /* 630 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(6869),
4037 /* 634 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(6892),
4038 /* 638 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(6904),
4039 /* 642 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(6916), GIMT_Encode4(0), GIMT_Encode4(0),
4040 /* 654 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(6928),
4041 /* 658 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(6951),
4042 /* 662 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(6974),
4043 /* 666 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(6986),
4044 /* 670 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(6998),
4045 /* 674 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(7010), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4046 /* 694 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(7022),
4047 /* 698 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(7163),
4048 /* 702 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(7252),
4049 /* 706 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(7361),
4050 /* 710 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(7384),
4051 /* 714 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(7407),
4052 /* 718 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(7452), GIMT_Encode4(0), GIMT_Encode4(0),
4053 /* 730 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(7464), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4054 /* 750 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(7486), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4055 /* 766 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(7508),
4056 /* 770 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(7570),
4057 /* 774 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(7592),
4058 /* 778 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(7635),
4059 /* 782 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(7657),
4060 /* 786 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(7679),
4061 /* 790 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(7706), GIMT_Encode4(0), GIMT_Encode4(0),
4062 /* 802 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(7733), GIMT_Encode4(0), GIMT_Encode4(0),
4063 /* 814 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 81*/ GIMT_Encode4(7812),
4064 /* 818 */ /*TargetOpcode::G_FMINNUM*//*Label 82*/ GIMT_Encode4(7842),
4065 /* 822 */ /*TargetOpcode::G_FMAXNUM*//*Label 83*/ GIMT_Encode4(7876),
4066 /* 826 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 84*/ GIMT_Encode4(7910),
4067 /* 830 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 85*/ GIMT_Encode4(7922),
4068 /* 834 */ /*TargetOpcode::G_FMINIMUM*//*Label 86*/ GIMT_Encode4(7934),
4069 /* 838 */ /*TargetOpcode::G_FMAXIMUM*//*Label 87*/ GIMT_Encode4(7968), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4070 /* 882 */ /*TargetOpcode::G_PTR_ADD*//*Label 88*/ GIMT_Encode4(8002), GIMT_Encode4(0),
4071 /* 890 */ /*TargetOpcode::G_SMIN*//*Label 89*/ GIMT_Encode4(8092),
4072 /* 894 */ /*TargetOpcode::G_SMAX*//*Label 90*/ GIMT_Encode4(8126),
4073 /* 898 */ /*TargetOpcode::G_UMIN*//*Label 91*/ GIMT_Encode4(8160),
4074 /* 902 */ /*TargetOpcode::G_UMAX*//*Label 92*/ GIMT_Encode4(8194),
4075 /* 906 */ /*TargetOpcode::G_ABS*//*Label 93*/ GIMT_Encode4(8228), GIMT_Encode4(0), GIMT_Encode4(0),
4076 /* 918 */ /*TargetOpcode::G_BR*//*Label 94*/ GIMT_Encode4(8240), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4077 /* 938 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 95*/ GIMT_Encode4(8252),
4078 /* 942 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(8382),
4079 /* 946 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 97*/ GIMT_Encode4(8759), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4080 /* 970 */ /*TargetOpcode::G_CTLZ*//*Label 98*/ GIMT_Encode4(8836),
4081 /* 974 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 99*/ GIMT_Encode4(8848), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4082 /* 990 */ /*TargetOpcode::G_BITREVERSE*//*Label 100*/ GIMT_Encode4(8860),
4083 /* 994 */ /*TargetOpcode::G_FCEIL*//*Label 101*/ GIMT_Encode4(8949), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4084 /* 1042 */ /*TargetOpcode::G_FSQRT*//*Label 102*/ GIMT_Encode4(8971),
4085 /* 1046 */ /*TargetOpcode::G_FFLOOR*//*Label 103*/ GIMT_Encode4(8993),
4086 /* 1050 */ /*TargetOpcode::G_FRINT*//*Label 104*/ GIMT_Encode4(9015),
4087 /* 1054 */ /*TargetOpcode::G_FNEARBYINT*//*Label 105*/ GIMT_Encode4(9037),
4088 /* 1058 */ // Label 0: @1058
4089 /* 1058 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1069), // Rule ID 19 //
4090 /* 1063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4091 /* 1066 */ // MIs[0] d
4092 /* 1066 */ // No operand predicates
4093 /* 1066 */ // MIs[0] s
4094 /* 1066 */ // No operand predicates
4095 /* 1066 */ // Combiner Rule #19: copy_prop
4096 /* 1066 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4097 /* 1069 */ // Label 107: @1069
4098 /* 1069 */ GIM_Reject,
4099 /* 1070 */ // Label 1: @1070
4100 /* 1070 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1081), // Rule ID 22 //
4101 /* 1075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4102 /* 1078 */ // Combiner Rule #22: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4103 /* 1078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4104 /* 1081 */ // Label 108: @1081
4105 /* 1081 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1092), // Rule ID 100 //
4106 /* 1086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4107 /* 1089 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4108 /* 1089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4109 /* 1092 */ // Label 109: @1092
4110 /* 1092 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1103), // Rule ID 151 //
4111 /* 1097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
4112 /* 1100 */ // Combiner Rule #111: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4113 /* 1100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4114 /* 1103 */ // Label 110: @1103
4115 /* 1103 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1114), // Rule ID 253 //
4116 /* 1108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4117 /* 1111 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_ADD'
4118 /* 1111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4119 /* 1114 */ // Label 111: @1114
4120 /* 1114 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1125), // Rule ID 297 //
4121 /* 1119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4122 /* 1122 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_ADD'
4123 /* 1122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4124 /* 1125 */ // Label 112: @1125
4125 /* 1125 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1136), // Rule ID 333 //
4126 /* 1130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
4127 /* 1133 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4128 /* 1133 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4129 /* 1136 */ // Label 113: @1136
4130 /* 1136 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1224), // Rule ID 395 //
4131 /* 1141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
4132 /* 1144 */ // MIs[0] dst
4133 /* 1144 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4134 /* 1148 */ // MIs[0] __add_shift_match_0.shl_neg
4135 /* 1148 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4136 /* 1152 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4137 /* 1156 */ // MIs[1] __add_shift_match_0.neg_y
4138 /* 1156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4139 /* 1160 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4140 /* 1164 */ // MIs[2] __add_shift_match_0.zero
4141 /* 1164 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4142 /* 1168 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4143 /* 1172 */ // MIs[3] Operand 1
4144 /* 1172 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4145 /* 1183 */ // MIs[2] y
4146 /* 1183 */ // No operand predicates
4147 /* 1183 */ // MIs[1] n
4148 /* 1183 */ // No operand predicates
4149 /* 1183 */ // MIs[0] x
4150 /* 1183 */ // No operand predicates
4151 /* 1183 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
4152 /* 1187 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4153 /* 1189 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4154 /* 1192 */ // Combiner Rule #243: add_shift @ [__add_shift_match_0[1]]
4155 /* 1192 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4156 /* 1195 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4157 /* 1200 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4158 /* 1204 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4159 /* 1208 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4160 /* 1212 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4161 /* 1216 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4162 /* 1220 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4163 /* 1223 */ GIR_EraseRootFromParent_Done,
4164 /* 1224 */ // Label 114: @1224
4165 /* 1224 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1312), // Rule ID 394 //
4166 /* 1229 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
4167 /* 1232 */ // MIs[0] dst
4168 /* 1232 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4169 /* 1236 */ // MIs[0] x
4170 /* 1236 */ // No operand predicates
4171 /* 1236 */ // MIs[0] __add_shift_match_0.shl_neg
4172 /* 1236 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4173 /* 1240 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4174 /* 1244 */ // MIs[1] __add_shift_match_0.neg_y
4175 /* 1244 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4176 /* 1248 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4177 /* 1252 */ // MIs[2] __add_shift_match_0.zero
4178 /* 1252 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4179 /* 1256 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4180 /* 1260 */ // MIs[3] Operand 1
4181 /* 1260 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4182 /* 1271 */ // MIs[2] y
4183 /* 1271 */ // No operand predicates
4184 /* 1271 */ // MIs[1] n
4185 /* 1271 */ // No operand predicates
4186 /* 1271 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
4187 /* 1275 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4188 /* 1277 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4189 /* 1280 */ // Combiner Rule #243: add_shift @ [__add_shift_match_0[0]]
4190 /* 1280 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4191 /* 1283 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4192 /* 1288 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4193 /* 1292 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4194 /* 1296 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4195 /* 1300 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4196 /* 1304 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4197 /* 1308 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4198 /* 1311 */ GIR_EraseRootFromParent_Done,
4199 /* 1312 */ // Label 115: @1312
4200 /* 1312 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1346), // Rule ID 2 //
4201 /* 1317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4202 /* 1320 */ // MIs[0] root
4203 /* 1320 */ // No operand predicates
4204 /* 1320 */ // MIs[0] sub
4205 /* 1320 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4206 /* 1324 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4207 /* 1328 */ // MIs[1] Operand 1
4208 /* 1328 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4209 /* 1332 */ // MIs[1] A
4210 /* 1332 */ // No operand predicates
4211 /* 1332 */ // MIs[0] B
4212 /* 1332 */ // No operand predicates
4213 /* 1332 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4214 /* 1334 */ // Combiner Rule #2: ZeroMinusAPlusB
4215 /* 1334 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4216 /* 1337 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4217 /* 1339 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4218 /* 1341 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4219 /* 1345 */ GIR_EraseRootFromParent_Done,
4220 /* 1346 */ // Label 116: @1346
4221 /* 1346 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1383), // Rule ID 18 //
4222 /* 1351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4223 /* 1354 */ // MIs[0] root
4224 /* 1354 */ // No operand predicates
4225 /* 1354 */ // MIs[0] sub
4226 /* 1354 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4227 /* 1358 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4228 /* 1362 */ // MIs[1] A
4229 /* 1362 */ // No operand predicates
4230 /* 1362 */ // MIs[1] c1
4231 /* 1362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4232 /* 1366 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4233 /* 1370 */ // MIs[2] imm1
4234 /* 1370 */ // No operand predicates
4235 /* 1370 */ // MIs[0] c2
4236 /* 1370 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4237 /* 1374 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4238 /* 1378 */ // MIs[3] imm2
4239 /* 1378 */ // No operand predicates
4240 /* 1378 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4241 /* 1380 */ // Combiner Rule #18: AMinusC1PlusC2
4242 /* 1380 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4243 /* 1383 */ // Label 117: @1383
4244 /* 1383 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1417), // Rule ID 5 //
4245 /* 1388 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4246 /* 1391 */ // MIs[0] root
4247 /* 1391 */ // No operand predicates
4248 /* 1391 */ // MIs[0] sub
4249 /* 1391 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4250 /* 1395 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4251 /* 1399 */ // MIs[1] B
4252 /* 1399 */ // No operand predicates
4253 /* 1399 */ // MIs[1] A
4254 /* 1399 */ // No operand predicates
4255 /* 1399 */ // MIs[0] A
4256 /* 1399 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4257 /* 1404 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4258 /* 1409 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4259 /* 1411 */ // Combiner Rule #5: BMinusAPlusA
4260 /* 1411 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4261 /* 1416 */ GIR_EraseRootFromParent_Done,
4262 /* 1417 */ // Label 118: @1417
4263 /* 1417 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1451), // Rule ID 140 //
4264 /* 1422 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4265 /* 1425 */ // MIs[0] dst
4266 /* 1425 */ // No operand predicates
4267 /* 1425 */ // MIs[0] __add_sub_reg_match_0.tmp
4268 /* 1425 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4269 /* 1429 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4270 /* 1433 */ // MIs[1] src
4271 /* 1433 */ // No operand predicates
4272 /* 1433 */ // MIs[1] __add_sub_reg_match_0.x
4273 /* 1433 */ // No operand predicates
4274 /* 1433 */ // MIs[0] __add_sub_reg_match_0.x
4275 /* 1433 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4276 /* 1438 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4277 /* 1443 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4278 /* 1445 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4279 /* 1445 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4280 /* 1450 */ GIR_EraseRootFromParent_Done,
4281 /* 1451 */ // Label 119: @1451
4282 /* 1451 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1496), // Rule ID 7 //
4283 /* 1456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4284 /* 1459 */ // MIs[0] root
4285 /* 1459 */ // No operand predicates
4286 /* 1459 */ // MIs[0] sub1
4287 /* 1459 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4288 /* 1463 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4289 /* 1467 */ // MIs[1] A
4290 /* 1467 */ // No operand predicates
4291 /* 1467 */ // MIs[1] B
4292 /* 1467 */ // No operand predicates
4293 /* 1467 */ // MIs[0] sub2
4294 /* 1467 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4295 /* 1471 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4296 /* 1475 */ // MIs[2] B
4297 /* 1475 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4298 /* 1480 */ // MIs[2] C
4299 /* 1480 */ // No operand predicates
4300 /* 1480 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4301 /* 1482 */ // Combiner Rule #7: AMinusBPlusBMinusC
4302 /* 1482 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4303 /* 1485 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4304 /* 1487 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4305 /* 1491 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4306 /* 1495 */ GIR_EraseRootFromParent_Done,
4307 /* 1496 */ // Label 120: @1496
4308 /* 1496 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1541), // Rule ID 6 //
4309 /* 1501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4310 /* 1504 */ // MIs[0] root
4311 /* 1504 */ // No operand predicates
4312 /* 1504 */ // MIs[0] sub1
4313 /* 1504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4314 /* 1508 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4315 /* 1512 */ // MIs[1] A
4316 /* 1512 */ // No operand predicates
4317 /* 1512 */ // MIs[1] B
4318 /* 1512 */ // No operand predicates
4319 /* 1512 */ // MIs[0] sub2
4320 /* 1512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4321 /* 1516 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4322 /* 1520 */ // MIs[2] C
4323 /* 1520 */ // No operand predicates
4324 /* 1520 */ // MIs[2] A
4325 /* 1520 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4326 /* 1525 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4327 /* 1527 */ // Combiner Rule #6: AMinusBPlusCMinusA
4328 /* 1527 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4329 /* 1530 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4330 /* 1532 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4331 /* 1536 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4332 /* 1540 */ GIR_EraseRootFromParent_Done,
4333 /* 1541 */ // Label 121: @1541
4334 /* 1541 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1576), // Rule ID 45 //
4335 /* 1546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4336 /* 1549 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4337 /* 1555 */ // MIs[0] root
4338 /* 1555 */ // No operand predicates
4339 /* 1555 */ // MIs[0] left
4340 /* 1555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4341 /* 1559 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4342 /* 1563 */ // MIs[1] imm1
4343 /* 1563 */ // No operand predicates
4344 /* 1563 */ // MIs[0] right
4345 /* 1563 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4346 /* 1567 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4347 /* 1571 */ // MIs[2] imm2
4348 /* 1571 */ // No operand predicates
4349 /* 1571 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4350 /* 1573 */ // Combiner Rule #43: add_of_vscale
4351 /* 1573 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4352 /* 1576 */ // Label 122: @1576
4353 /* 1576 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1610), // Rule ID 3 //
4354 /* 1581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4355 /* 1584 */ // MIs[0] root
4356 /* 1584 */ // No operand predicates
4357 /* 1584 */ // MIs[0] A
4358 /* 1584 */ // No operand predicates
4359 /* 1584 */ // MIs[0] sub
4360 /* 1584 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4361 /* 1588 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4362 /* 1592 */ // MIs[1] Operand 1
4363 /* 1592 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4364 /* 1596 */ // MIs[1] B
4365 /* 1596 */ // No operand predicates
4366 /* 1596 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4367 /* 1598 */ // Combiner Rule #3: APlusZeroMinusB
4368 /* 1598 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4369 /* 1601 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4370 /* 1603 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4371 /* 1605 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4372 /* 1609 */ GIR_EraseRootFromParent_Done,
4373 /* 1610 */ // Label 123: @1610
4374 /* 1610 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1644), // Rule ID 4 //
4375 /* 1615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4376 /* 1618 */ // MIs[0] root
4377 /* 1618 */ // No operand predicates
4378 /* 1618 */ // MIs[0] A
4379 /* 1618 */ // No operand predicates
4380 /* 1618 */ // MIs[0] sub
4381 /* 1618 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4382 /* 1622 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4383 /* 1626 */ // MIs[1] B
4384 /* 1626 */ // No operand predicates
4385 /* 1626 */ // MIs[1] A
4386 /* 1626 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4387 /* 1631 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4388 /* 1636 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4389 /* 1638 */ // Combiner Rule #4: APlusBMinusB
4390 /* 1638 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4391 /* 1643 */ GIR_EraseRootFromParent_Done,
4392 /* 1644 */ // Label 124: @1644
4393 /* 1644 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1678), // Rule ID 139 //
4394 /* 1649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4395 /* 1652 */ // MIs[0] dst
4396 /* 1652 */ // No operand predicates
4397 /* 1652 */ // MIs[0] __add_sub_reg_match_0.x
4398 /* 1652 */ // No operand predicates
4399 /* 1652 */ // MIs[0] __add_sub_reg_match_0.tmp
4400 /* 1652 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4401 /* 1656 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4402 /* 1660 */ // MIs[1] src
4403 /* 1660 */ // No operand predicates
4404 /* 1660 */ // MIs[1] __add_sub_reg_match_0.x
4405 /* 1660 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4406 /* 1665 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4407 /* 1670 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4408 /* 1672 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
4409 /* 1672 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4410 /* 1677 */ GIR_EraseRootFromParent_Done,
4411 /* 1678 */ // Label 125: @1678
4412 /* 1678 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1723), // Rule ID 8 //
4413 /* 1683 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4414 /* 1686 */ // MIs[0] root
4415 /* 1686 */ // No operand predicates
4416 /* 1686 */ // MIs[0] A
4417 /* 1686 */ // No operand predicates
4418 /* 1686 */ // MIs[0] sub1
4419 /* 1686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4420 /* 1690 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4421 /* 1694 */ // MIs[1] B
4422 /* 1694 */ // No operand predicates
4423 /* 1694 */ // MIs[1] add1
4424 /* 1694 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4425 /* 1698 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4426 /* 1702 */ // MIs[2] A
4427 /* 1702 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4428 /* 1707 */ // MIs[2] C
4429 /* 1707 */ // No operand predicates
4430 /* 1707 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4431 /* 1709 */ // Combiner Rule #8: APlusBMinusAplusC
4432 /* 1709 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4433 /* 1712 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4434 /* 1714 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4435 /* 1718 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4436 /* 1722 */ GIR_EraseRootFromParent_Done,
4437 /* 1723 */ // Label 126: @1723
4438 /* 1723 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1768), // Rule ID 10 //
4439 /* 1728 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
4440 /* 1731 */ // MIs[0] root
4441 /* 1731 */ // No operand predicates
4442 /* 1731 */ // MIs[0] A
4443 /* 1731 */ // No operand predicates
4444 /* 1731 */ // MIs[0] sub1
4445 /* 1731 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4446 /* 1735 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4447 /* 1739 */ // MIs[1] B
4448 /* 1739 */ // No operand predicates
4449 /* 1739 */ // MIs[1] add1
4450 /* 1739 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4451 /* 1743 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4452 /* 1747 */ // MIs[2] C
4453 /* 1747 */ // No operand predicates
4454 /* 1747 */ // MIs[2] A
4455 /* 1747 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4456 /* 1752 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4457 /* 1754 */ // Combiner Rule #10: APlusBMinusCPlusA
4458 /* 1754 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4459 /* 1757 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4460 /* 1759 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4461 /* 1763 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4462 /* 1767 */ GIR_EraseRootFromParent_Done,
4463 /* 1768 */ // Label 127: @1768
4464 /* 1768 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1791), // Rule ID 111 //
4465 /* 1773 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4466 /* 1776 */ // MIs[0] dst
4467 /* 1776 */ // No operand predicates
4468 /* 1776 */ // MIs[0] lhs
4469 /* 1776 */ // No operand predicates
4470 /* 1776 */ // MIs[0] Operand 2
4471 /* 1776 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4472 /* 1780 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4473 /* 1785 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
4474 /* 1785 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4475 /* 1790 */ GIR_EraseRootFromParent_Done,
4476 /* 1791 */ // Label 128: @1791
4477 /* 1791 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1802), // Rule ID 159 //
4478 /* 1796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
4479 /* 1799 */ // MIs[0] root
4480 /* 1799 */ // No operand predicates
4481 /* 1799 */ // MIs[0] src1
4482 /* 1799 */ // No operand predicates
4483 /* 1799 */ // MIs[0] src2
4484 /* 1799 */ // No operand predicates
4485 /* 1799 */ // Combiner Rule #115: reassoc_comm_binops
4486 /* 1799 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4487 /* 1802 */ // Label 129: @1802
4488 /* 1802 */ GIM_Reject,
4489 /* 1803 */ // Label 2: @1803
4490 /* 1803 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1814), // Rule ID 101 //
4491 /* 1808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
4492 /* 1811 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4493 /* 1811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4494 /* 1814 */ // Label 130: @1814
4495 /* 1814 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1825), // Rule ID 261 //
4496 /* 1819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4497 /* 1822 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SUB'
4498 /* 1822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4499 /* 1825 */ // Label 131: @1825
4500 /* 1825 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1836), // Rule ID 298 //
4501 /* 1830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4502 /* 1833 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SUB'
4503 /* 1833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4504 /* 1836 */ // Label 132: @1836
4505 /* 1836 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1847), // Rule ID 330 //
4506 /* 1841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4507 /* 1844 */ // Combiner Rule #208: sub_add_reg; wip_match_opcode 'G_SUB'
4508 /* 1844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4509 /* 1847 */ // Label 133: @1847
4510 /* 1847 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1858), // Rule ID 364 //
4511 /* 1852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
4512 /* 1855 */ // Combiner Rule #215: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4513 /* 1855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4514 /* 1858 */ // Label 134: @1858
4515 /* 1858 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1935), // Rule ID 396 //
4516 /* 1863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
4517 /* 1866 */ // MIs[0] dst
4518 /* 1866 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4519 /* 1870 */ // MIs[0] sub1
4520 /* 1870 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4521 /* 1874 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4522 /* 1878 */ // MIs[1] a
4523 /* 1878 */ // No operand predicates
4524 /* 1878 */ // MIs[1] b
4525 /* 1878 */ // No operand predicates
4526 /* 1878 */ // MIs[0] Operand 2
4527 /* 1878 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4528 /* 1882 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
4529 /* 1886 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4530 /* 1888 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4531 /* 1891 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4532 /* 1901 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4533 /* 1904 */ // Combiner Rule #244: sub_one_from_sub
4534 /* 1904 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4535 /* 1907 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4536 /* 1912 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4537 /* 1916 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4538 /* 1919 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4539 /* 1923 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4540 /* 1927 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4541 /* 1930 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4542 /* 1934 */ GIR_EraseRootFromParent_Done,
4543 /* 1935 */ // Label 135: @1935
4544 /* 1935 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1975), // Rule ID 400 //
4545 /* 1940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
4546 /* 1943 */ // MIs[0] root
4547 /* 1943 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4548 /* 1947 */ // MIs[0] Operand 1
4549 /* 1947 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
4550 /* 1951 */ // MIs[0] op1
4551 /* 1951 */ // No operand predicates
4552 /* 1951 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4553 /* 1954 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
4554 /* 1964 */ // Combiner Rule #246: sub_minus_one
4555 /* 1964 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4556 /* 1967 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4557 /* 1969 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
4558 /* 1971 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4559 /* 1974 */ GIR_EraseRootFromParent_Done,
4560 /* 1975 */ // Label 136: @1975
4561 /* 1975 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2036), // Rule ID 9 //
4562 /* 1980 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4563 /* 1983 */ // MIs[0] root
4564 /* 1983 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4565 /* 1987 */ // MIs[0] A
4566 /* 1987 */ // No operand predicates
4567 /* 1987 */ // MIs[0] sub1
4568 /* 1987 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4569 /* 1991 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4570 /* 1995 */ // MIs[1] B
4571 /* 1995 */ // No operand predicates
4572 /* 1995 */ // MIs[1] C
4573 /* 1995 */ // No operand predicates
4574 /* 1995 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4575 /* 1999 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4576 /* 2001 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4577 /* 2004 */ // Combiner Rule #9: AMinusBMinusC
4578 /* 2004 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4579 /* 2007 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4580 /* 2012 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
4581 /* 2016 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4582 /* 2020 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4583 /* 2024 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
4584 /* 2028 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
4585 /* 2032 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4586 /* 2035 */ GIR_EraseRootFromParent_Done,
4587 /* 2036 */ // Label 137: @2036
4588 /* 2036 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2081), // Rule ID 0 //
4589 /* 2041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4590 /* 2044 */ // MIs[0] root
4591 /* 2044 */ // No operand predicates
4592 /* 2044 */ // MIs[0] add1
4593 /* 2044 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4594 /* 2048 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4595 /* 2052 */ // MIs[1] A
4596 /* 2052 */ // No operand predicates
4597 /* 2052 */ // MIs[1] sub1
4598 /* 2052 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4599 /* 2056 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4600 /* 2060 */ // MIs[2] B
4601 /* 2060 */ // No operand predicates
4602 /* 2060 */ // MIs[2] C
4603 /* 2060 */ // No operand predicates
4604 /* 2060 */ // MIs[0] B
4605 /* 2060 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4606 /* 2065 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4607 /* 2067 */ // Combiner Rule #0: APlusBMinusCMinusB
4608 /* 2067 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4609 /* 2070 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4610 /* 2072 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4611 /* 2076 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4612 /* 2080 */ GIR_EraseRootFromParent_Done,
4613 /* 2081 */ // Label 138: @2081
4614 /* 2081 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2118), // Rule ID 14 //
4615 /* 2086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4616 /* 2089 */ // MIs[0] root
4617 /* 2089 */ // No operand predicates
4618 /* 2089 */ // MIs[0] add
4619 /* 2089 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4620 /* 2093 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4621 /* 2097 */ // MIs[1] A
4622 /* 2097 */ // No operand predicates
4623 /* 2097 */ // MIs[1] c1
4624 /* 2097 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4625 /* 2101 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4626 /* 2105 */ // MIs[2] imm1
4627 /* 2105 */ // No operand predicates
4628 /* 2105 */ // MIs[0] c2
4629 /* 2105 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4630 /* 2109 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4631 /* 2113 */ // MIs[3] imm2
4632 /* 2113 */ // No operand predicates
4633 /* 2113 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4634 /* 2115 */ // Combiner Rule #14: APlusC1MinusC2
4635 /* 2115 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4636 /* 2118 */ // Label 139: @2118
4637 /* 2118 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2155), // Rule ID 17 //
4638 /* 2123 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4639 /* 2126 */ // MIs[0] root
4640 /* 2126 */ // No operand predicates
4641 /* 2126 */ // MIs[0] sub1
4642 /* 2126 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4643 /* 2130 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4644 /* 2134 */ // MIs[1] c1
4645 /* 2134 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4646 /* 2138 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4647 /* 2142 */ // MIs[2] imm1
4648 /* 2142 */ // No operand predicates
4649 /* 2142 */ // MIs[1] A
4650 /* 2142 */ // No operand predicates
4651 /* 2142 */ // MIs[0] c2
4652 /* 2142 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4653 /* 2146 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4654 /* 2150 */ // MIs[3] imm2
4655 /* 2150 */ // No operand predicates
4656 /* 2150 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4657 /* 2152 */ // Combiner Rule #17: C1Minus2MinusC2
4658 /* 2152 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4659 /* 2155 */ // Label 140: @2155
4660 /* 2155 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2200), // Rule ID 1 //
4661 /* 2160 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4662 /* 2163 */ // MIs[0] root
4663 /* 2163 */ // No operand predicates
4664 /* 2163 */ // MIs[0] sub2
4665 /* 2163 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4666 /* 2167 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4667 /* 2171 */ // MIs[1] A
4668 /* 2171 */ // No operand predicates
4669 /* 2171 */ // MIs[1] sub1
4670 /* 2171 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4671 /* 2175 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4672 /* 2179 */ // MIs[2] B
4673 /* 2179 */ // No operand predicates
4674 /* 2179 */ // MIs[2] C
4675 /* 2179 */ // No operand predicates
4676 /* 2179 */ // MIs[0] C
4677 /* 2179 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4678 /* 2184 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4679 /* 2186 */ // Combiner Rule #1: AMinusBMinusCMinusC
4680 /* 2186 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4681 /* 2189 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4682 /* 2191 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4683 /* 2195 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4684 /* 2199 */ GIR_EraseRootFromParent_Done,
4685 /* 2200 */ // Label 141: @2200
4686 /* 2200 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2237), // Rule ID 16 //
4687 /* 2205 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4688 /* 2208 */ // MIs[0] root
4689 /* 2208 */ // No operand predicates
4690 /* 2208 */ // MIs[0] sub1
4691 /* 2208 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4692 /* 2212 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4693 /* 2216 */ // MIs[1] A
4694 /* 2216 */ // No operand predicates
4695 /* 2216 */ // MIs[1] c1
4696 /* 2216 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4697 /* 2220 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4698 /* 2224 */ // MIs[2] imm1
4699 /* 2224 */ // No operand predicates
4700 /* 2224 */ // MIs[0] c2
4701 /* 2224 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4702 /* 2228 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4703 /* 2232 */ // MIs[3] imm2
4704 /* 2232 */ // No operand predicates
4705 /* 2232 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4706 /* 2234 */ // Combiner Rule #16: AMinusC1MinusC2
4707 /* 2234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4708 /* 2237 */ // Label 142: @2237
4709 /* 2237 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2280), // Rule ID 169 //
4710 /* 2242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
4711 /* 2245 */ // MIs[0] dst
4712 /* 2245 */ // No operand predicates
4713 /* 2245 */ // MIs[0] Operand 1
4714 /* 2245 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4715 /* 2249 */ // MIs[0] and
4716 /* 2249 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4717 /* 2253 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4718 /* 2257 */ // MIs[1] x
4719 /* 2257 */ // No operand predicates
4720 /* 2257 */ // MIs[1] Operand 2
4721 /* 2257 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4722 /* 2261 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
4723 /* 2265 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4724 /* 2267 */ // Combiner Rule #125: neg_and_one_to_sext_inreg
4725 /* 2267 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4726 /* 2270 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4727 /* 2272 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4728 /* 2276 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4729 /* 2279 */ GIR_EraseRootFromParent_Done,
4730 /* 2280 */ // Label 143: @2280
4731 /* 2280 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2317), // Rule ID 15 //
4732 /* 2285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4733 /* 2288 */ // MIs[0] root
4734 /* 2288 */ // No operand predicates
4735 /* 2288 */ // MIs[0] c2
4736 /* 2288 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4737 /* 2292 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4738 /* 2296 */ // MIs[1] imm2
4739 /* 2296 */ // No operand predicates
4740 /* 2296 */ // MIs[0] add
4741 /* 2296 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4742 /* 2300 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4743 /* 2304 */ // MIs[2] A
4744 /* 2304 */ // No operand predicates
4745 /* 2304 */ // MIs[2] c1
4746 /* 2304 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4747 /* 2308 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4748 /* 2312 */ // MIs[3] imm1
4749 /* 2312 */ // No operand predicates
4750 /* 2312 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4751 /* 2314 */ // Combiner Rule #15: C2MinusAPlusC1
4752 /* 2314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4753 /* 2317 */ // Label 144: @2317
4754 /* 2317 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2356), // Rule ID 122 //
4755 /* 2322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
4756 /* 2325 */ // MIs[0] dst
4757 /* 2325 */ // No operand predicates
4758 /* 2325 */ // MIs[0] x
4759 /* 2325 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
4760 /* 2329 */ // MIs[0] x
4761 /* 2329 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4762 /* 2334 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4763 /* 2337 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4764 /* 2347 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
4765 /* 2347 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4766 /* 2350 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4767 /* 2352 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4768 /* 2355 */ GIR_EraseRootFromParent_Done,
4769 /* 2356 */ // Label 145: @2356
4770 /* 2356 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2390), // Rule ID 12 //
4771 /* 2361 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4772 /* 2364 */ // MIs[0] root
4773 /* 2364 */ // No operand predicates
4774 /* 2364 */ // MIs[0] A
4775 /* 2364 */ // No operand predicates
4776 /* 2364 */ // MIs[0] add
4777 /* 2364 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4778 /* 2368 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4779 /* 2372 */ // MIs[1] A
4780 /* 2372 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4781 /* 2377 */ // MIs[1] B
4782 /* 2377 */ // No operand predicates
4783 /* 2377 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
4784 /* 2382 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4785 /* 2384 */ // Combiner Rule #12: AMinusBMinusA
4786 /* 2384 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
4787 /* 2389 */ GIR_EraseRootFromParent_Done,
4788 /* 2390 */ // Label 146: @2390
4789 /* 2390 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2424), // Rule ID 11 //
4790 /* 2395 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4791 /* 2398 */ // MIs[0] root
4792 /* 2398 */ // No operand predicates
4793 /* 2398 */ // MIs[0] A
4794 /* 2398 */ // No operand predicates
4795 /* 2398 */ // MIs[0] sub1
4796 /* 2398 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4797 /* 2402 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4798 /* 2406 */ // MIs[1] Operand 1
4799 /* 2406 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4800 /* 2410 */ // MIs[1] B
4801 /* 2410 */ // No operand predicates
4802 /* 2410 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4803 /* 2412 */ // Combiner Rule #11: AMinusZeroMinusB
4804 /* 2412 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4805 /* 2415 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4806 /* 2417 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4807 /* 2419 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4808 /* 2423 */ GIR_EraseRootFromParent_Done,
4809 /* 2424 */ // Label 147: @2424
4810 /* 2424 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2451), // Rule ID 48 //
4811 /* 2429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
4812 /* 2432 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4813 /* 2438 */ // MIs[0] root
4814 /* 2438 */ // No operand predicates
4815 /* 2438 */ // MIs[0] x
4816 /* 2438 */ // No operand predicates
4817 /* 2438 */ // MIs[0] right
4818 /* 2438 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4819 /* 2442 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4820 /* 2446 */ // MIs[1] imm
4821 /* 2446 */ // No operand predicates
4822 /* 2446 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4823 /* 2448 */ // Combiner Rule #46: sub_of_vscale
4824 /* 2448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4825 /* 2451 */ // Label 148: @2451
4826 /* 2451 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2474), // Rule ID 110 //
4827 /* 2456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4828 /* 2459 */ // MIs[0] dst
4829 /* 2459 */ // No operand predicates
4830 /* 2459 */ // MIs[0] lhs
4831 /* 2459 */ // No operand predicates
4832 /* 2459 */ // MIs[0] Operand 2
4833 /* 2459 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4834 /* 2463 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4835 /* 2468 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
4836 /* 2468 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4837 /* 2473 */ GIR_EraseRootFromParent_Done,
4838 /* 2474 */ // Label 149: @2474
4839 /* 2474 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2495), // Rule ID 21 //
4840 /* 2479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
4841 /* 2482 */ // MIs[0] d
4842 /* 2482 */ // No operand predicates
4843 /* 2482 */ // MIs[0] op1
4844 /* 2482 */ // No operand predicates
4845 /* 2482 */ // MIs[0] c
4846 /* 2482 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4847 /* 2486 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4848 /* 2490 */ // MIs[1] imm
4849 /* 2490 */ // No operand predicates
4850 /* 2490 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4851 /* 2492 */ // Combiner Rule #21: sub_to_add
4852 /* 2492 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4853 /* 2495 */ // Label 150: @2495
4854 /* 2495 */ GIM_Reject,
4855 /* 2496 */ // Label 3: @2496
4856 /* 2496 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2507), // Rule ID 84 //
4857 /* 2501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
4858 /* 2504 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_MUL'
4859 /* 2504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4860 /* 2507 */ // Label 151: @2507
4861 /* 2507 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2518), // Rule ID 258 //
4862 /* 2512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4863 /* 2515 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_MUL'
4864 /* 2515 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4865 /* 2518 */ // Label 152: @2518
4866 /* 2518 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2529), // Rule ID 334 //
4867 /* 2523 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
4868 /* 2526 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4869 /* 2526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4870 /* 2529 */ // Label 153: @2529
4871 /* 2529 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2569), // Rule ID 23 //
4872 /* 2534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
4873 /* 2537 */ // MIs[0] dst
4874 /* 2537 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4875 /* 2541 */ // MIs[0] x
4876 /* 2541 */ // No operand predicates
4877 /* 2541 */ // MIs[0] Operand 2
4878 /* 2541 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
4879 /* 2545 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4880 /* 2548 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4881 /* 2558 */ // Combiner Rule #23: mul_by_neg_one
4882 /* 2558 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4883 /* 2561 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4884 /* 2563 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4885 /* 2566 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4886 /* 2568 */ GIR_EraseRootFromParent_Done,
4887 /* 2569 */ // Label 154: @2569
4888 /* 2569 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2604), // Rule ID 46 //
4889 /* 2574 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
4890 /* 2577 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4891 /* 2583 */ // MIs[0] root
4892 /* 2583 */ // No operand predicates
4893 /* 2583 */ // MIs[0] left
4894 /* 2583 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4895 /* 2587 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4896 /* 2591 */ // MIs[1] scale
4897 /* 2591 */ // No operand predicates
4898 /* 2591 */ // MIs[0] x
4899 /* 2591 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4900 /* 2595 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4901 /* 2599 */ // MIs[2] imm1
4902 /* 2599 */ // No operand predicates
4903 /* 2599 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4904 /* 2601 */ // Combiner Rule #44: mul_of_vscale
4905 /* 2601 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4906 /* 2604 */ // Label 155: @2604
4907 /* 2604 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2644), // Rule ID 131 //
4908 /* 2609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
4909 /* 2612 */ // MIs[0] dst
4910 /* 2612 */ // No operand predicates
4911 /* 2612 */ // MIs[0] zero
4912 /* 2612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4913 /* 2616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4914 /* 2620 */ // MIs[1] Operand 1
4915 /* 2620 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4916 /* 2631 */ // MIs[0] rhs
4917 /* 2631 */ // No operand predicates
4918 /* 2631 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4919 /* 2636 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4920 /* 2638 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
4921 /* 2638 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4922 /* 2643 */ GIR_EraseRootFromParent_Done,
4923 /* 2644 */ // Label 156: @2644
4924 /* 2644 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2667), // Rule ID 132 //
4925 /* 2649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
4926 /* 2652 */ // MIs[0] dst
4927 /* 2652 */ // No operand predicates
4928 /* 2652 */ // MIs[0] lhs
4929 /* 2652 */ // No operand predicates
4930 /* 2652 */ // MIs[0] zero
4931 /* 2652 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4932 /* 2656 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4933 /* 2661 */ // Combiner Rule #94: binop_right_to_zero
4934 /* 2661 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4935 /* 2666 */ GIR_EraseRootFromParent_Done,
4936 /* 2667 */ // Label 157: @2667
4937 /* 2667 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2690), // Rule ID 137 //
4938 /* 2672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
4939 /* 2675 */ // MIs[0] dst
4940 /* 2675 */ // No operand predicates
4941 /* 2675 */ // MIs[0] x
4942 /* 2675 */ // No operand predicates
4943 /* 2675 */ // MIs[0] Operand 2
4944 /* 2675 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4945 /* 2679 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4946 /* 2684 */ // Combiner Rule #99: right_identity_one_int
4947 /* 2684 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4948 /* 2689 */ GIR_EraseRootFromParent_Done,
4949 /* 2690 */ // Label 158: @2690
4950 /* 2690 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2701), // Rule ID 20 //
4951 /* 2695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
4952 /* 2698 */ // MIs[0] d
4953 /* 2698 */ // No operand predicates
4954 /* 2698 */ // MIs[0] op1
4955 /* 2698 */ // No operand predicates
4956 /* 2698 */ // MIs[0] op2
4957 /* 2698 */ // No operand predicates
4958 /* 2698 */ // Combiner Rule #20: mul_to_shl
4959 /* 2698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4960 /* 2701 */ // Label 159: @2701
4961 /* 2701 */ GIM_Reject,
4962 /* 2702 */ // Label 4: @2702
4963 /* 2702 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2713), // Rule ID 229 //
4964 /* 2707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
4965 /* 2710 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
4966 /* 2710 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4967 /* 2713 */ // Label 160: @2713
4968 /* 2713 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2724), // Rule ID 264 //
4969 /* 2718 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
4970 /* 2721 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SDIV'
4971 /* 2721 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4972 /* 2724 */ // Label 161: @2724
4973 /* 2724 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2735), // Rule ID 303 //
4974 /* 2729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4975 /* 2732 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SDIV'
4976 /* 2732 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4977 /* 2735 */ // Label 162: @2735
4978 /* 2735 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2775), // Rule ID 127 //
4979 /* 2740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
4980 /* 2743 */ // MIs[0] dst
4981 /* 2743 */ // No operand predicates
4982 /* 2743 */ // MIs[0] zero
4983 /* 2743 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4984 /* 2747 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4985 /* 2751 */ // MIs[1] Operand 1
4986 /* 2751 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4987 /* 2762 */ // MIs[0] rhs
4988 /* 2762 */ // No operand predicates
4989 /* 2762 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4990 /* 2767 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4991 /* 2769 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
4992 /* 2769 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4993 /* 2774 */ GIR_EraseRootFromParent_Done,
4994 /* 2775 */ // Label 163: @2775
4995 /* 2775 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2792), // Rule ID 326 //
4996 /* 2780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
4997 /* 2783 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4998 /* 2789 */ // MIs[0] dst
4999 /* 2789 */ // No operand predicates
5000 /* 2789 */ // MIs[0] x
5001 /* 2789 */ // No operand predicates
5002 /* 2789 */ // MIs[0] y
5003 /* 2789 */ // No operand predicates
5004 /* 2789 */ // Combiner Rule #204: sdiv_by_pow2
5005 /* 2789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5006 /* 2792 */ // Label 164: @2792
5007 /* 2792 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2803), // Rule ID 328 //
5008 /* 2797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
5009 /* 2800 */ // MIs[0] dst
5010 /* 2800 */ // No operand predicates
5011 /* 2800 */ // MIs[0] x
5012 /* 2800 */ // No operand predicates
5013 /* 2800 */ // MIs[0] y
5014 /* 2800 */ // No operand predicates
5015 /* 2800 */ // Combiner Rule #206: sdiv_by_const
5016 /* 2800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5017 /* 2803 */ // Label 165: @2803
5018 /* 2803 */ GIM_Reject,
5019 /* 2804 */ // Label 5: @2804
5020 /* 2804 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2815), // Rule ID 87 //
5021 /* 2809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5022 /* 2812 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
5023 /* 2812 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5024 /* 2815 */ // Label 166: @2815
5025 /* 2815 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2826), // Rule ID 230 //
5026 /* 2820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5027 /* 2823 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5028 /* 2823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5029 /* 2826 */ // Label 167: @2826
5030 /* 2826 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2837), // Rule ID 263 //
5031 /* 2831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5032 /* 2834 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UDIV'
5033 /* 2834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5034 /* 2837 */ // Label 168: @2837
5035 /* 2837 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2848), // Rule ID 305 //
5036 /* 2842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5037 /* 2845 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5038 /* 2845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5039 /* 2848 */ // Label 169: @2848
5040 /* 2848 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2888), // Rule ID 128 //
5041 /* 2853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5042 /* 2856 */ // MIs[0] dst
5043 /* 2856 */ // No operand predicates
5044 /* 2856 */ // MIs[0] zero
5045 /* 2856 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5046 /* 2860 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5047 /* 2864 */ // MIs[1] Operand 1
5048 /* 2864 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5049 /* 2875 */ // MIs[0] rhs
5050 /* 2875 */ // No operand predicates
5051 /* 2875 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5052 /* 2880 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5053 /* 2882 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5054 /* 2882 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5055 /* 2887 */ GIR_EraseRootFromParent_Done,
5056 /* 2888 */ // Label 170: @2888
5057 /* 2888 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2905), // Rule ID 325 //
5058 /* 2893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
5059 /* 2896 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5060 /* 2902 */ // MIs[0] dst
5061 /* 2902 */ // No operand predicates
5062 /* 2902 */ // MIs[0] x
5063 /* 2902 */ // No operand predicates
5064 /* 2902 */ // MIs[0] y
5065 /* 2902 */ // No operand predicates
5066 /* 2902 */ // Combiner Rule #203: udiv_by_pow2
5067 /* 2902 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
5068 /* 2905 */ // Label 171: @2905
5069 /* 2905 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2916), // Rule ID 327 //
5070 /* 2910 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
5071 /* 2913 */ // MIs[0] dst
5072 /* 2913 */ // No operand predicates
5073 /* 2913 */ // MIs[0] x
5074 /* 2913 */ // No operand predicates
5075 /* 2913 */ // MIs[0] y
5076 /* 2913 */ // No operand predicates
5077 /* 2913 */ // Combiner Rule #205: udiv_by_const
5078 /* 2913 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5079 /* 2916 */ // Label 172: @2916
5080 /* 2916 */ GIM_Reject,
5081 /* 2917 */ // Label 6: @2917
5082 /* 2917 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2928), // Rule ID 231 //
5083 /* 2922 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5084 /* 2925 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5085 /* 2925 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5086 /* 2928 */ // Label 173: @2928
5087 /* 2928 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2939), // Rule ID 266 //
5088 /* 2933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5089 /* 2936 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SREM'
5090 /* 2936 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5091 /* 2939 */ // Label 174: @2939
5092 /* 2939 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2950), // Rule ID 304 //
5093 /* 2944 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5094 /* 2947 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SREM'
5095 /* 2947 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5096 /* 2950 */ // Label 175: @2950
5097 /* 2950 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2990), // Rule ID 129 //
5098 /* 2955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5099 /* 2958 */ // MIs[0] dst
5100 /* 2958 */ // No operand predicates
5101 /* 2958 */ // MIs[0] zero
5102 /* 2958 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5103 /* 2962 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5104 /* 2966 */ // MIs[1] Operand 1
5105 /* 2966 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5106 /* 2977 */ // MIs[0] rhs
5107 /* 2977 */ // No operand predicates
5108 /* 2977 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5109 /* 2982 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5110 /* 2984 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5111 /* 2984 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5112 /* 2989 */ GIR_EraseRootFromParent_Done,
5113 /* 2990 */ // Label 176: @2990
5114 /* 2990 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3001), // Rule ID 324 //
5115 /* 2995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
5116 /* 2998 */ // MIs[0] dst
5117 /* 2998 */ // No operand predicates
5118 /* 2998 */ // MIs[0] x
5119 /* 2998 */ // No operand predicates
5120 /* 2998 */ // MIs[0] y
5121 /* 2998 */ // No operand predicates
5122 /* 2998 */ // Combiner Rule #202: srem_by_const
5123 /* 2998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
5124 /* 3001 */ // Label 177: @3001
5125 /* 3001 */ GIM_Reject,
5126 /* 3002 */ // Label 7: @3002
5127 /* 3002 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3013), // Rule ID 88 //
5128 /* 3007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5129 /* 3010 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
5130 /* 3010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
5131 /* 3013 */ // Label 178: @3013
5132 /* 3013 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3024), // Rule ID 180 //
5133 /* 3018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
5134 /* 3021 */ // Combiner Rule #136: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
5135 /* 3021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5136 /* 3024 */ // Label 179: @3024
5137 /* 3024 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3035), // Rule ID 232 //
5138 /* 3029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
5139 /* 3032 */ // Combiner Rule #169: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5140 /* 3032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5141 /* 3035 */ // Label 180: @3035
5142 /* 3035 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3046), // Rule ID 265 //
5143 /* 3040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5144 /* 3043 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UREM'
5145 /* 3043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5146 /* 3046 */ // Label 181: @3046
5147 /* 3046 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3057), // Rule ID 306 //
5148 /* 3051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5149 /* 3054 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UREM'
5150 /* 3054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5151 /* 3057 */ // Label 182: @3057
5152 /* 3057 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3097), // Rule ID 130 //
5153 /* 3062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5154 /* 3065 */ // MIs[0] dst
5155 /* 3065 */ // No operand predicates
5156 /* 3065 */ // MIs[0] zero
5157 /* 3065 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5158 /* 3069 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5159 /* 3073 */ // MIs[1] Operand 1
5160 /* 3073 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5161 /* 3084 */ // MIs[0] rhs
5162 /* 3084 */ // No operand predicates
5163 /* 3084 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5164 /* 3089 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5165 /* 3091 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5166 /* 3091 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5167 /* 3096 */ GIR_EraseRootFromParent_Done,
5168 /* 3097 */ // Label 183: @3097
5169 /* 3097 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3108), // Rule ID 323 //
5170 /* 3102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
5171 /* 3105 */ // MIs[0] dst
5172 /* 3105 */ // No operand predicates
5173 /* 3105 */ // MIs[0] x
5174 /* 3105 */ // No operand predicates
5175 /* 3105 */ // MIs[0] y
5176 /* 3105 */ // No operand predicates
5177 /* 3105 */ // Combiner Rule #201: urem_by_const
5178 /* 3105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5179 /* 3108 */ // Label 184: @3108
5180 /* 3108 */ GIM_Reject,
5181 /* 3109 */ // Label 8: @3109
5182 /* 3109 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3120), // Rule ID 79 //
5183 /* 3114 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5184 /* 3117 */ // Combiner Rule #75: load_and_mask; wip_match_opcode 'G_AND'
5185 /* 3117 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5186 /* 3120 */ // Label 185: @3120
5187 /* 3120 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3131), // Rule ID 83 //
5188 /* 3125 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
5189 /* 3128 */ // Combiner Rule #78: undef_to_int_zero; wip_match_opcode 'G_AND'
5190 /* 3128 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5191 /* 3131 */ // Label 186: @3131
5192 /* 3131 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3142), // Rule ID 152 //
5193 /* 3136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5194 /* 3139 */ // Combiner Rule #112: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5195 /* 3139 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5196 /* 3142 */ // Label 187: @3142
5197 /* 3142 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3153), // Rule ID 172 //
5198 /* 3147 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
5199 /* 3150 */ // Combiner Rule #128: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5200 /* 3150 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5201 /* 3153 */ // Label 188: @3153
5202 /* 3153 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3164), // Rule ID 177 //
5203 /* 3158 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
5204 /* 3161 */ // Combiner Rule #133: redundant_and; wip_match_opcode 'G_AND'
5205 /* 3161 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
5206 /* 3164 */ // Label 189: @3164
5207 /* 3164 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3175), // Rule ID 202 //
5208 /* 3169 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
5209 /* 3172 */ // Combiner Rule #158: overlapping_and; wip_match_opcode 'G_AND'
5210 /* 3172 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
5211 /* 3175 */ // Label 190: @3175
5212 /* 3175 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3186), // Rule ID 255 //
5213 /* 3180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5214 /* 3183 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_AND'
5215 /* 3183 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5216 /* 3186 */ // Label 191: @3186
5217 /* 3186 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3197), // Rule ID 288 //
5218 /* 3191 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
5219 /* 3194 */ // Combiner Rule #191: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5220 /* 3194 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5221 /* 3197 */ // Label 192: @3197
5222 /* 3197 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3208), // Rule ID 300 //
5223 /* 3202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5224 /* 3205 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_AND'
5225 /* 3205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5226 /* 3208 */ // Label 193: @3208
5227 /* 3208 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3219), // Rule ID 335 //
5228 /* 3213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5229 /* 3216 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5230 /* 3216 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5231 /* 3219 */ // Label 194: @3219
5232 /* 3219 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3230), // Rule ID 362 //
5233 /* 3224 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5234 /* 3227 */ // Combiner Rule #213: match_ands; wip_match_opcode 'G_AND'
5235 /* 3227 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5236 /* 3230 */ // Label 195: @3230
5237 /* 3230 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3241), // Rule ID 397 //
5238 /* 3235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5239 /* 3238 */ // Combiner Rule #245: binop_with_neg; wip_match_opcode 'G_AND'
5240 /* 3238 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
5241 /* 3241 */ // Label 196: @3241
5242 /* 3241 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3339), // Rule ID 165 //
5243 /* 3246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
5244 /* 3249 */ // MIs[0] root
5245 /* 3249 */ // No operand predicates
5246 /* 3249 */ // MIs[0] d1
5247 /* 3249 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5248 /* 3253 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5249 /* 3257 */ // MIs[1] p
5250 /* 3257 */ // No operand predicates
5251 /* 3257 */ // MIs[1] s1
5252 /* 3257 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5253 /* 3261 */ // MIs[1] Operand 3
5254 /* 3261 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5255 /* 3265 */ // MIs[0] d2
5256 /* 3265 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5257 /* 3269 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5258 /* 3273 */ // MIs[2] p
5259 /* 3273 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5260 /* 3278 */ // MIs[2] s2
5261 /* 3278 */ // No operand predicates
5262 /* 3278 */ // MIs[2] Operand 3
5263 /* 3278 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5264 /* 3282 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
5265 /* 3286 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5266 /* 3288 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5267 /* 3291 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5268 /* 3301 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5269 /* 3304 */ // Combiner Rule #121: double_icmp_zero_and_combine
5270 /* 3304 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5271 /* 3307 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5272 /* 3312 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5273 /* 3316 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5274 /* 3320 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5275 /* 3324 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5276 /* 3328 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5277 /* 3332 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5278 /* 3335 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5279 /* 3338 */ GIR_EraseRootFromParent_Done,
5280 /* 3339 */ // Label 197: @3339
5281 /* 3339 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3376), // Rule ID 248 //
5282 /* 3344 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5283 /* 3347 */ // MIs[0] root
5284 /* 3347 */ // No operand predicates
5285 /* 3347 */ // MIs[0] shift
5286 /* 3347 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5287 /* 3351 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5288 /* 3355 */ // MIs[1] x
5289 /* 3355 */ // No operand predicates
5290 /* 3355 */ // MIs[1] lsb
5291 /* 3355 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5292 /* 3359 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5293 /* 3363 */ // MIs[2] imm1
5294 /* 3363 */ // No operand predicates
5295 /* 3363 */ // MIs[0] mask
5296 /* 3363 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5297 /* 3367 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5298 /* 3371 */ // MIs[3] imm2
5299 /* 3371 */ // No operand predicates
5300 /* 3371 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5301 /* 3373 */ // Combiner Rule #181: bitfield_extract_from_and
5302 /* 3373 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5303 /* 3376 */ // Label 198: @3376
5304 /* 3376 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3490), // Rule ID 406 //
5305 /* 3381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
5306 /* 3384 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
5307 /* 3387 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
5308 /* 3390 */ // MIs[0] dst
5309 /* 3390 */ // No operand predicates
5310 /* 3390 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
5311 /* 3394 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_s32,
5312 /* 3397 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_s32,
5313 /* 3400 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
5314 /* 3403 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
5315 /* 3406 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
5316 /* 3409 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
5317 /* 3412 */ // Combiner Rule #252: combine_and_s64_with_s32_mask
5318 /* 3412 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5319 /* 3415 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5320 /* 3420 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5321 /* 3425 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5322 /* 3427 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5323 /* 3431 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5324 /* 3436 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5325 /* 3441 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
5326 /* 3445 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5327 /* 3449 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5328 /* 3454 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
5329 /* 3457 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5330 /* 3460 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5331 /* 3464 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5332 /* 3469 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
5333 /* 3472 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
5334 /* 3475 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5335 /* 3479 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
5336 /* 3483 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
5337 /* 3486 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
5338 /* 3489 */ GIR_EraseRootFromParent_Done,
5339 /* 3490 */ // Label 199: @3490
5340 /* 3490 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3514), // Rule ID 120 //
5341 /* 3495 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5342 /* 3498 */ // MIs[0] dst
5343 /* 3498 */ // No operand predicates
5344 /* 3498 */ // MIs[0] src
5345 /* 3498 */ // No operand predicates
5346 /* 3498 */ // MIs[0] src
5347 /* 3498 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5348 /* 3503 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5349 /* 3508 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
5350 /* 3508 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5351 /* 3513 */ GIR_EraseRootFromParent_Done,
5352 /* 3514 */ // Label 200: @3514
5353 /* 3514 */ GIM_Reject,
5354 /* 3515 */ // Label 9: @3515
5355 /* 3515 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3526), // Rule ID 85 //
5356 /* 3520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5357 /* 3523 */ // Combiner Rule #79: undef_to_negative_one; wip_match_opcode 'G_OR'
5358 /* 3523 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5359 /* 3526 */ // Label 201: @3526
5360 /* 3526 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3537), // Rule ID 153 //
5361 /* 3531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5362 /* 3534 */ // Combiner Rule #112: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5363 /* 3534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5364 /* 3537 */ // Label 202: @3537
5365 /* 3537 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3548), // Rule ID 179 //
5366 /* 3542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
5367 /* 3545 */ // Combiner Rule #135: redundant_or; wip_match_opcode 'G_OR'
5368 /* 3545 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5369 /* 3548 */ // Label 203: @3548
5370 /* 3548 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3559), // Rule ID 228 //
5371 /* 3553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
5372 /* 3556 */ // Combiner Rule #168: load_or_combine; wip_match_opcode 'G_OR'
5373 /* 3556 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5374 /* 3559 */ // Label 204: @3559
5375 /* 3559 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3570), // Rule ID 233 //
5376 /* 3564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
5377 /* 3567 */ // Combiner Rule #170: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5378 /* 3567 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5379 /* 3570 */ // Label 205: @3570
5380 /* 3570 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3581), // Rule ID 259 //
5381 /* 3575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5382 /* 3578 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_OR'
5383 /* 3578 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5384 /* 3581 */ // Label 206: @3581
5385 /* 3581 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3592), // Rule ID 301 //
5386 /* 3586 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5387 /* 3589 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_OR'
5388 /* 3589 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5389 /* 3592 */ // Label 207: @3592
5390 /* 3592 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3603), // Rule ID 336 //
5391 /* 3597 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5392 /* 3600 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5393 /* 3600 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5394 /* 3603 */ // Label 208: @3603
5395 /* 3603 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3614), // Rule ID 363 //
5396 /* 3608 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
5397 /* 3611 */ // Combiner Rule #214: match_ors; wip_match_opcode 'G_OR'
5398 /* 3611 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5399 /* 3614 */ // Label 209: @3614
5400 /* 3614 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3625), // Rule ID 398 //
5401 /* 3619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5402 /* 3622 */ // Combiner Rule #245: binop_with_neg; wip_match_opcode 'G_OR'
5403 /* 3622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
5404 /* 3625 */ // Label 210: @3625
5405 /* 3625 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3712), // Rule ID 408 //
5406 /* 3630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
5407 /* 3633 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
5408 /* 3636 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
5409 /* 3639 */ // MIs[0] dst
5410 /* 3639 */ // No operand predicates
5411 /* 3639 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5412 /* 3643 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5413 /* 3647 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
5414 /* 3651 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5415 /* 3655 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5416 /* 3657 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5417 /* 3660 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5418 /* 3663 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5419 /* 3666 */ // Combiner Rule #253: combine_or_s64_s32 @ [dst[1]]
5420 /* 3666 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5421 /* 3669 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5422 /* 3674 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5423 /* 3679 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
5424 /* 3681 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5425 /* 3685 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5426 /* 3690 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5427 /* 3693 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
5428 /* 3697 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5429 /* 3701 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
5430 /* 3705 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5431 /* 3708 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
5432 /* 3711 */ GIR_EraseRootFromParent_Done,
5433 /* 3712 */ // Label 211: @3712
5434 /* 3712 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3759), // Rule ID 240 //
5435 /* 3717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
5436 /* 3720 */ // MIs[0] root
5437 /* 3720 */ // No operand predicates
5438 /* 3720 */ // MIs[0] out1
5439 /* 3720 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5440 /* 3724 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5441 /* 3728 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5442 /* 3728 */ // No operand predicates
5443 /* 3728 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5444 /* 3728 */ // No operand predicates
5445 /* 3728 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5446 /* 3728 */ // No operand predicates
5447 /* 3728 */ // MIs[0] out2
5448 /* 3728 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5449 /* 3732 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5450 /* 3736 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5451 /* 3736 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5452 /* 3741 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5453 /* 3741 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5454 /* 3746 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5455 /* 3751 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5456 /* 3753 */ // Combiner Rule #175: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5457 /* 3753 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5458 /* 3758 */ GIR_EraseRootFromParent_Done,
5459 /* 3759 */ // Label 212: @3759
5460 /* 3759 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3806), // Rule ID 242 //
5461 /* 3764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5462 /* 3767 */ // MIs[0] root
5463 /* 3767 */ // No operand predicates
5464 /* 3767 */ // MIs[0] out1
5465 /* 3767 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5466 /* 3771 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5467 /* 3775 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5468 /* 3775 */ // No operand predicates
5469 /* 3775 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5470 /* 3775 */ // No operand predicates
5471 /* 3775 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5472 /* 3775 */ // No operand predicates
5473 /* 3775 */ // MIs[0] out2
5474 /* 3775 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5475 /* 3779 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5476 /* 3783 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5477 /* 3783 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5478 /* 3788 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5479 /* 3788 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5480 /* 3793 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5481 /* 3798 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5482 /* 3800 */ // Combiner Rule #176: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5483 /* 3800 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5484 /* 3805 */ GIR_EraseRootFromParent_Done,
5485 /* 3806 */ // Label 213: @3806
5486 /* 3806 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3904), // Rule ID 166 //
5487 /* 3811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
5488 /* 3814 */ // MIs[0] root
5489 /* 3814 */ // No operand predicates
5490 /* 3814 */ // MIs[0] d1
5491 /* 3814 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5492 /* 3818 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5493 /* 3822 */ // MIs[1] p
5494 /* 3822 */ // No operand predicates
5495 /* 3822 */ // MIs[1] s1
5496 /* 3822 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5497 /* 3826 */ // MIs[1] Operand 3
5498 /* 3826 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5499 /* 3830 */ // MIs[0] d2
5500 /* 3830 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5501 /* 3834 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5502 /* 3838 */ // MIs[2] p
5503 /* 3838 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5504 /* 3843 */ // MIs[2] s2
5505 /* 3843 */ // No operand predicates
5506 /* 3843 */ // MIs[2] Operand 3
5507 /* 3843 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5508 /* 3847 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
5509 /* 3851 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5510 /* 3853 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5511 /* 3856 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5512 /* 3866 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5513 /* 3869 */ // Combiner Rule #122: double_icmp_zero_or_combine
5514 /* 3869 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5515 /* 3872 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5516 /* 3877 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5517 /* 3881 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5518 /* 3885 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5519 /* 3889 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5520 /* 3893 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5521 /* 3897 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5522 /* 3900 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5523 /* 3903 */ GIR_EraseRootFromParent_Done,
5524 /* 3904 */ // Label 214: @3904
5525 /* 3904 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3951), // Rule ID 243 //
5526 /* 3909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
5527 /* 3912 */ // MIs[0] root
5528 /* 3912 */ // No operand predicates
5529 /* 3912 */ // MIs[0] out2
5530 /* 3912 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5531 /* 3916 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5532 /* 3920 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5533 /* 3920 */ // No operand predicates
5534 /* 3920 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5535 /* 3920 */ // No operand predicates
5536 /* 3920 */ // MIs[0] out1
5537 /* 3920 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5538 /* 3924 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5539 /* 3928 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5540 /* 3928 */ // No operand predicates
5541 /* 3928 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5542 /* 3928 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5543 /* 3933 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5544 /* 3933 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5545 /* 3938 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5546 /* 3943 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5547 /* 3945 */ // Combiner Rule #176: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5548 /* 3945 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5549 /* 3950 */ GIR_EraseRootFromParent_Done,
5550 /* 3951 */ // Label 215: @3951
5551 /* 3951 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3998), // Rule ID 241 //
5552 /* 3956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
5553 /* 3959 */ // MIs[0] root
5554 /* 3959 */ // No operand predicates
5555 /* 3959 */ // MIs[0] out2
5556 /* 3959 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5557 /* 3963 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5558 /* 3967 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5559 /* 3967 */ // No operand predicates
5560 /* 3967 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5561 /* 3967 */ // No operand predicates
5562 /* 3967 */ // MIs[0] out1
5563 /* 3967 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5564 /* 3971 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5565 /* 3975 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5566 /* 3975 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5567 /* 3980 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5568 /* 3980 */ // No operand predicates
5569 /* 3980 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5570 /* 3980 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5571 /* 3985 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5572 /* 3990 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5573 /* 3992 */ // Combiner Rule #175: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5574 /* 3992 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5575 /* 3997 */ GIR_EraseRootFromParent_Done,
5576 /* 3998 */ // Label 216: @3998
5577 /* 3998 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(4199),
5578 /* 4003 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
5579 /* 4006 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
5580 /* 4009 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(4090), // Rule ID 407 //
5581 /* 4014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
5582 /* 4017 */ // MIs[0] dst
5583 /* 4017 */ // No operand predicates
5584 /* 4017 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5585 /* 4021 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5586 /* 4025 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
5587 /* 4029 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5588 /* 4033 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5589 /* 4035 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5590 /* 4038 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5591 /* 4041 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5592 /* 4044 */ // Combiner Rule #253: combine_or_s64_s32 @ [dst[0]]
5593 /* 4044 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5594 /* 4047 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5595 /* 4052 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5596 /* 4057 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5597 /* 4059 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5598 /* 4063 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5599 /* 4068 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5600 /* 4071 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
5601 /* 4075 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5602 /* 4079 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
5603 /* 4083 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5604 /* 4086 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
5605 /* 4089 */ GIR_EraseRootFromParent_Done,
5606 /* 4090 */ // Label 218: @4090
5607 /* 4090 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(4198), // Rule ID 405 //
5608 /* 4095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
5609 /* 4098 */ // MIs[0] dst
5610 /* 4098 */ // No operand predicates
5611 /* 4098 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
5612 /* 4102 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_s32,
5613 /* 4105 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_s32,
5614 /* 4108 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
5615 /* 4111 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
5616 /* 4114 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
5617 /* 4117 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
5618 /* 4120 */ // Combiner Rule #251: combine_or_s64_with_s32_mask
5619 /* 4120 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5620 /* 4123 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5621 /* 4128 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5622 /* 4133 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5623 /* 4135 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5624 /* 4139 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5625 /* 4144 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5626 /* 4149 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
5627 /* 4153 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5628 /* 4157 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5629 /* 4162 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
5630 /* 4165 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5631 /* 4168 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5632 /* 4172 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5633 /* 4177 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
5634 /* 4180 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
5635 /* 4183 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5636 /* 4187 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
5637 /* 4191 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
5638 /* 4194 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
5639 /* 4197 */ GIR_EraseRootFromParent_Done,
5640 /* 4198 */ // Label 219: @4198
5641 /* 4198 */ GIM_Reject,
5642 /* 4199 */ // Label 217: @4199
5643 /* 4199 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4223), // Rule ID 121 //
5644 /* 4204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
5645 /* 4207 */ // MIs[0] dst
5646 /* 4207 */ // No operand predicates
5647 /* 4207 */ // MIs[0] src
5648 /* 4207 */ // No operand predicates
5649 /* 4207 */ // MIs[0] src
5650 /* 4207 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5651 /* 4212 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5652 /* 4217 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
5653 /* 4217 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5654 /* 4222 */ GIR_EraseRootFromParent_Done,
5655 /* 4223 */ // Label 220: @4223
5656 /* 4223 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4246), // Rule ID 112 //
5657 /* 4228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5658 /* 4231 */ // MIs[0] dst
5659 /* 4231 */ // No operand predicates
5660 /* 4231 */ // MIs[0] lhs
5661 /* 4231 */ // No operand predicates
5662 /* 4231 */ // MIs[0] Operand 2
5663 /* 4231 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5664 /* 4235 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5665 /* 4240 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
5666 /* 4240 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5667 /* 4245 */ GIR_EraseRootFromParent_Done,
5668 /* 4246 */ // Label 221: @4246
5669 /* 4246 */ GIM_Reject,
5670 /* 4247 */ // Label 10: @4247
5671 /* 4247 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4258), // Rule ID 102 //
5672 /* 4252 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5673 /* 4255 */ // Combiner Rule #84: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5674 /* 4255 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5675 /* 4258 */ // Label 222: @4258
5676 /* 4258 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4269), // Rule ID 154 //
5677 /* 4263 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5678 /* 4266 */ // Combiner Rule #112: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5679 /* 4266 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5680 /* 4269 */ // Label 223: @4269
5681 /* 4269 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4280), // Rule ID 184 //
5682 /* 4274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
5683 /* 4277 */ // Combiner Rule #140: not_cmp_fold; wip_match_opcode 'G_XOR'
5684 /* 4277 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5685 /* 4280 */ // Label 224: @4280
5686 /* 4280 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4291), // Rule ID 216 //
5687 /* 4285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
5688 /* 4288 */ // Combiner Rule #164: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5689 /* 4288 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5690 /* 4291 */ // Label 225: @4291
5691 /* 4291 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4302), // Rule ID 262 //
5692 /* 4296 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5693 /* 4299 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_XOR'
5694 /* 4299 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5695 /* 4302 */ // Label 226: @4302
5696 /* 4302 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4313), // Rule ID 302 //
5697 /* 4307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
5698 /* 4310 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_XOR'
5699 /* 4310 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5700 /* 4313 */ // Label 227: @4313
5701 /* 4313 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4324), // Rule ID 337 //
5702 /* 4318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5703 /* 4321 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5704 /* 4321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5705 /* 4324 */ // Label 228: @4324
5706 /* 4324 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4335), // Rule ID 399 //
5707 /* 4329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
5708 /* 4332 */ // Combiner Rule #245: binop_with_neg; wip_match_opcode 'G_XOR'
5709 /* 4332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
5710 /* 4335 */ // Label 229: @4335
5711 /* 4335 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4395), // Rule ID 13 //
5712 /* 4340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
5713 /* 4343 */ // MIs[0] root
5714 /* 4343 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5715 /* 4347 */ // MIs[0] add
5716 /* 4347 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5717 /* 4351 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5718 /* 4355 */ // MIs[1] A
5719 /* 4355 */ // No operand predicates
5720 /* 4355 */ // MIs[1] Operand 2
5721 /* 4355 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
5722 /* 4359 */ // MIs[0] Operand 2
5723 /* 4359 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5724 /* 4363 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5725 /* 4367 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5726 /* 4369 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5727 /* 4372 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5728 /* 4382 */ // Combiner Rule #13: NotAPlusNegOne
5729 /* 4382 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5730 /* 4385 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5731 /* 4387 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5732 /* 4390 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5733 /* 4394 */ GIR_EraseRootFromParent_Done,
5734 /* 4395 */ // Label 230: @4395
5735 /* 4395 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4434), // Rule ID 123 //
5736 /* 4400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5737 /* 4403 */ // MIs[0] dst
5738 /* 4403 */ // No operand predicates
5739 /* 4403 */ // MIs[0] x
5740 /* 4403 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5741 /* 4407 */ // MIs[0] x
5742 /* 4407 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5743 /* 4412 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5744 /* 4415 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5745 /* 4425 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
5746 /* 4425 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5747 /* 4428 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5748 /* 4430 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5749 /* 4433 */ GIR_EraseRootFromParent_Done,
5750 /* 4434 */ // Label 231: @4434
5751 /* 4434 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4457), // Rule ID 113 //
5752 /* 4439 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5753 /* 4442 */ // MIs[0] dst
5754 /* 4442 */ // No operand predicates
5755 /* 4442 */ // MIs[0] lhs
5756 /* 4442 */ // No operand predicates
5757 /* 4442 */ // MIs[0] Operand 2
5758 /* 4442 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5759 /* 4446 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5760 /* 4451 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
5761 /* 4451 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5762 /* 4456 */ GIR_EraseRootFromParent_Done,
5763 /* 4457 */ // Label 232: @4457
5764 /* 4457 */ GIM_Reject,
5765 /* 4458 */ // Label 11: @4458
5766 /* 4458 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4469), // Rule ID 150 //
5767 /* 4463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
5768 /* 4466 */ // Combiner Rule #110: extend_through_phis; wip_match_opcode 'G_PHI'
5769 /* 4466 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5770 /* 4469 */ // Label 233: @4469
5771 /* 4469 */ GIM_Reject,
5772 /* 4470 */ // Label 12: @4470
5773 /* 4470 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4481), // Rule ID 373 //
5774 /* 4475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5775 /* 4478 */ // Combiner Rule #224: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5776 /* 4478 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5777 /* 4481 */ // Label 234: @4481
5778 /* 4481 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4492), // Rule ID 374 //
5779 /* 4486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5780 /* 4489 */ // Combiner Rule #225: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5781 /* 4489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5782 /* 4492 */ // Label 235: @4492
5783 /* 4492 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4503), // Rule ID 376 //
5784 /* 4497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5785 /* 4500 */ // Combiner Rule #227: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5786 /* 4500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5787 /* 4503 */ // Label 236: @4503
5788 /* 4503 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4514), // Rule ID 377 //
5789 /* 4508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5790 /* 4511 */ // Combiner Rule #228: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5791 /* 4511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5792 /* 4514 */ // Label 237: @4514
5793 /* 4514 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4525), // Rule ID 378 //
5794 /* 4519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
5795 /* 4522 */ // Combiner Rule #229: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5796 /* 4522 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5797 /* 4525 */ // Label 238: @4525
5798 /* 4525 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4536), // Rule ID 379 //
5799 /* 4530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5800 /* 4533 */ // Combiner Rule #230: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5801 /* 4533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5802 /* 4536 */ // Label 239: @4536
5803 /* 4536 */ GIM_Reject,
5804 /* 4537 */ // Label 13: @4537
5805 /* 4537 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4551), // Rule ID 375 //
5806 /* 4542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5807 /* 4545 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5808 /* 4548 */ // MIs[0] dst
5809 /* 4548 */ // No operand predicates
5810 /* 4548 */ // MIs[0] merge_srcs
5811 /* 4548 */ // No operand predicates
5812 /* 4548 */ // Combiner Rule #226: merge_unmerge
5813 /* 4548 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5814 /* 4551 */ // Label 240: @4551
5815 /* 4551 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4613),
5816 /* 4556 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5817 /* 4559 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4580), // Rule ID 380 //
5818 /* 4564 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
5819 /* 4567 */ // MIs[0] root
5820 /* 4567 */ // No operand predicates
5821 /* 4567 */ // MIs[0] x
5822 /* 4567 */ // No operand predicates
5823 /* 4567 */ // MIs[0] undef
5824 /* 4567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5825 /* 4571 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5826 /* 4575 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5827 /* 4577 */ // Combiner Rule #231: merge_of_x_and_undef
5828 /* 4577 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5829 /* 4580 */ // Label 242: @4580
5830 /* 4580 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4612), // Rule ID 381 //
5831 /* 4585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
5832 /* 4588 */ // MIs[0] root
5833 /* 4588 */ // No operand predicates
5834 /* 4588 */ // MIs[0] x
5835 /* 4588 */ // No operand predicates
5836 /* 4588 */ // MIs[0] zero
5837 /* 4588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5838 /* 4592 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5839 /* 4596 */ // MIs[1] Operand 1
5840 /* 4596 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5841 /* 4607 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5842 /* 4609 */ // Combiner Rule #232: merge_of_x_and_zero
5843 /* 4609 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5844 /* 4612 */ // Label 243: @4612
5845 /* 4612 */ GIM_Reject,
5846 /* 4613 */ // Label 241: @4613
5847 /* 4613 */ GIM_Reject,
5848 /* 4614 */ // Label 14: @4614
5849 /* 4614 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4625), // Rule ID 75 //
5850 /* 4619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
5851 /* 4622 */ // Combiner Rule #73: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5852 /* 4622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5853 /* 4625 */ // Label 244: @4625
5854 /* 4625 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4636), // Rule ID 104 //
5855 /* 4630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
5856 /* 4633 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5857 /* 4633 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5858 /* 4636 */ // Label 245: @4636
5859 /* 4636 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4647), // Rule ID 142 //
5860 /* 4641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5861 /* 4644 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5862 /* 4644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5863 /* 4647 */ // Label 246: @4647
5864 /* 4647 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4678),
5865 /* 4652 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5866 /* 4655 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4666), // Rule ID 372 //
5867 /* 4660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5868 /* 4663 */ // MIs[0] dst
5869 /* 4663 */ // No operand predicates
5870 /* 4663 */ // MIs[0] unused
5871 /* 4663 */ // No operand predicates
5872 /* 4663 */ // Combiner Rule #223: combine_use_vector_truncate
5873 /* 4663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5874 /* 4666 */ // Label 248: @4666
5875 /* 4666 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4677), // Rule ID 382 //
5876 /* 4671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
5877 /* 4674 */ // MIs[0] dst
5878 /* 4674 */ // No operand predicates
5879 /* 4674 */ // MIs[0] unused
5880 /* 4674 */ // No operand predicates
5881 /* 4674 */ // Combiner Rule #233: combine_build_unmerge
5882 /* 4674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5883 /* 4677 */ // Label 249: @4677
5884 /* 4677 */ GIM_Reject,
5885 /* 4678 */ // Label 247: @4678
5886 /* 4678 */ GIM_Reject,
5887 /* 4679 */ // Label 15: @4679
5888 /* 4679 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4690), // Rule ID 141 //
5889 /* 4684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5890 /* 4687 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5891 /* 4687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5892 /* 4690 */ // Label 250: @4690
5893 /* 4690 */ GIM_Reject,
5894 /* 4691 */ // Label 16: @4691
5895 /* 4691 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4702), // Rule ID 365 //
5896 /* 4696 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
5897 /* 4699 */ // Combiner Rule #216: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5898 /* 4699 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5899 /* 4702 */ // Label 251: @4702
5900 /* 4702 */ GIM_Reject,
5901 /* 4703 */ // Label 17: @4703
5902 /* 4703 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4724), // Rule ID 134 //
5903 /* 4708 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
5904 /* 4711 */ // MIs[0] dst
5905 /* 4711 */ // No operand predicates
5906 /* 4711 */ // MIs[0] t
5907 /* 4711 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5908 /* 4715 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5909 /* 4719 */ // MIs[1] ptr
5910 /* 4719 */ // No operand predicates
5911 /* 4719 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5912 /* 4721 */ // Combiner Rule #96: i2p_to_p2i
5913 /* 4721 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5914 /* 4724 */ // Label 252: @4724
5915 /* 4724 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4745), // Rule ID 96 //
5916 /* 4729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5917 /* 4732 */ // MIs[0] dst
5918 /* 4732 */ // No operand predicates
5919 /* 4732 */ // MIs[0] __unary_undef_to_undef_match_0.x
5920 /* 4732 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5921 /* 4736 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5922 /* 4740 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5923 /* 4742 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5924 /* 4742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5925 /* 4745 */ // Label 253: @4745
5926 /* 4745 */ GIM_Reject,
5927 /* 4746 */ // Label 18: @4746
5928 /* 4746 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4757), // Rule ID 133 //
5929 /* 4751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
5930 /* 4754 */ // Combiner Rule #95: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5931 /* 4754 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5932 /* 4757 */ // Label 254: @4757
5933 /* 4757 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4778), // Rule ID 97 //
5934 /* 4762 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5935 /* 4765 */ // MIs[0] dst
5936 /* 4765 */ // No operand predicates
5937 /* 4765 */ // MIs[0] __unary_undef_to_undef_match_0.x
5938 /* 4765 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5939 /* 4769 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5940 /* 4773 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5941 /* 4775 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5942 /* 4775 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5943 /* 4778 */ // Label 255: @4778
5944 /* 4778 */ GIM_Reject,
5945 /* 4779 */ // Label 19: @4779
5946 /* 4779 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4800), // Rule ID 145 //
5947 /* 4784 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
5948 /* 4787 */ // MIs[0] dst
5949 /* 4787 */ // No operand predicates
5950 /* 4787 */ // MIs[0] src1
5951 /* 4787 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5952 /* 4791 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5953 /* 4795 */ // MIs[1] src0
5954 /* 4795 */ // No operand predicates
5955 /* 4795 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5956 /* 4797 */ // Combiner Rule #105: bitcast_bitcast_fold
5957 /* 4797 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5958 /* 4800 */ // Label 256: @4800
5959 /* 4800 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4821), // Rule ID 94 //
5960 /* 4805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5961 /* 4808 */ // MIs[0] dst
5962 /* 4808 */ // No operand predicates
5963 /* 4808 */ // MIs[0] __unary_undef_to_undef_match_0.x
5964 /* 4808 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5965 /* 4812 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5966 /* 4816 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5967 /* 4818 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
5968 /* 4818 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5969 /* 4821 */ // Label 257: @4821
5970 /* 4821 */ GIM_Reject,
5971 /* 4822 */ // Label 20: @4822
5972 /* 4822 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4851), // Rule ID 24 //
5973 /* 4827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
5974 /* 4830 */ // MIs[0] dst
5975 /* 4830 */ // No operand predicates
5976 /* 4830 */ // MIs[0] src
5977 /* 4830 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5978 /* 4834 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
5979 /* 4838 */ // MIs[1] __idempotent_prop_match_0.x
5980 /* 4838 */ // No operand predicates
5981 /* 4838 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5982 /* 4843 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5983 /* 4845 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
5984 /* 4845 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5985 /* 4850 */ GIR_EraseRootFromParent_Done,
5986 /* 4851 */ // Label 258: @4851
5987 /* 4851 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4874), // Rule ID 49 //
5988 /* 4856 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
5989 /* 4859 */ // MIs[0] root
5990 /* 4859 */ // No operand predicates
5991 /* 4859 */ // MIs[0] src
5992 /* 4859 */ // No operand predicates
5993 /* 4859 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
5994 /* 4863 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5995 /* 4868 */ // Combiner Rule #47: freeze_of_non_undef_non_poison
5996 /* 4868 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5997 /* 4873 */ GIR_EraseRootFromParent_Done,
5998 /* 4874 */ // Label 259: @4874
5999 /* 4874 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4885), // Rule ID 50 //
6000 /* 4879 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6001 /* 4882 */ // MIs[0] dst
6002 /* 4882 */ // No operand predicates
6003 /* 4882 */ // MIs[0] src
6004 /* 4882 */ // No operand predicates
6005 /* 4882 */ // Combiner Rule #48: push_freeze_to_prevent_poison_from_propagating
6006 /* 4882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
6007 /* 4885 */ // Label 260: @4885
6008 /* 4885 */ GIM_Reject,
6009 /* 4886 */ // Label 21: @4886
6010 /* 4886 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4907), // Rule ID 194 //
6011 /* 4891 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
6012 /* 4894 */ // MIs[0] dst
6013 /* 4894 */ // No operand predicates
6014 /* 4894 */ // MIs[0] src0
6015 /* 4894 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6016 /* 4898 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6017 /* 4902 */ // MIs[1] cst
6018 /* 4902 */ // No operand predicates
6019 /* 4902 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6020 /* 4904 */ // Combiner Rule #150: constant_fold_intrinsic_trunc
6021 /* 4904 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6022 /* 4907 */ // Label 261: @4907
6023 /* 4907 */ GIM_Reject,
6024 /* 4908 */ // Label 22: @4908
6025 /* 4908 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4929), // Rule ID 195 //
6026 /* 4913 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
6027 /* 4916 */ // MIs[0] dst
6028 /* 4916 */ // No operand predicates
6029 /* 4916 */ // MIs[0] src0
6030 /* 4916 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6031 /* 4920 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6032 /* 4924 */ // MIs[1] cst
6033 /* 4924 */ // No operand predicates
6034 /* 4924 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6035 /* 4926 */ // Combiner Rule #151: constant_fold_intrinsic_round
6036 /* 4926 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6037 /* 4929 */ // Label 262: @4929
6038 /* 4929 */ GIM_Reject,
6039 /* 4930 */ // Label 23: @4930
6040 /* 4930 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4951), // Rule ID 196 //
6041 /* 4935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
6042 /* 4938 */ // MIs[0] dst
6043 /* 4938 */ // No operand predicates
6044 /* 4938 */ // MIs[0] src0
6045 /* 4938 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6046 /* 4942 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
6047 /* 4946 */ // MIs[1] cst
6048 /* 4946 */ // No operand predicates
6049 /* 4946 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6050 /* 4948 */ // Combiner Rule #152: constant_fold_intrinsic_roundeven
6051 /* 4948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6052 /* 4951 */ // Label 263: @4951
6053 /* 4951 */ GIM_Reject,
6054 /* 4952 */ // Label 24: @4952
6055 /* 4952 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4963), // Rule ID 76 //
6056 /* 4957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6057 /* 4960 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_LOAD'
6058 /* 4960 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6059 /* 4963 */ // Label 264: @4963
6060 /* 4963 */ GIM_Reject,
6061 /* 4964 */ // Label 25: @4964
6062 /* 4964 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4975), // Rule ID 77 //
6063 /* 4969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6064 /* 4972 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_SEXTLOAD'
6065 /* 4972 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6066 /* 4975 */ // Label 265: @4975
6067 /* 4975 */ GIM_Reject,
6068 /* 4976 */ // Label 26: @4976
6069 /* 4976 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4987), // Rule ID 78 //
6070 /* 4981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6071 /* 4984 */ // Combiner Rule #74: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
6072 /* 4984 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6073 /* 4987 */ // Label 266: @4987
6074 /* 4987 */ GIM_Reject,
6075 /* 4988 */ // Label 27: @4988
6076 /* 4988 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4999), // Rule ID 106 //
6077 /* 4993 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6078 /* 4996 */ // Combiner Rule #87: erase_undef_store; wip_match_opcode 'G_STORE'
6079 /* 4996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
6080 /* 4999 */ // Label 267: @4999
6081 /* 4999 */ GIM_Reject,
6082 /* 5000 */ // Label 28: @5000
6083 /* 5000 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5011), // Rule ID 135 //
6084 /* 5005 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
6085 /* 5008 */ // Combiner Rule #97: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
6086 /* 5008 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
6087 /* 5011 */ // Label 268: @5011
6088 /* 5011 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5022), // Rule ID 279 //
6089 /* 5016 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6090 /* 5019 */ // Combiner Rule #187: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
6091 /* 5019 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6092 /* 5022 */ // Label 269: @5022
6093 /* 5022 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5043), // Rule ID 63 //
6094 /* 5027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6095 /* 5030 */ // MIs[0] root
6096 /* 5030 */ // No operand predicates
6097 /* 5030 */ // MIs[0] select
6098 /* 5030 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6099 /* 5034 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6100 /* 5038 */ // MIs[1] cond
6101 /* 5038 */ // No operand predicates
6102 /* 5038 */ // MIs[1] true
6103 /* 5038 */ // No operand predicates
6104 /* 5038 */ // MIs[1] false
6105 /* 5038 */ // No operand predicates
6106 /* 5038 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6107 /* 5040 */ // Combiner Rule #61: select_of_anyext
6108 /* 5040 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6109 /* 5043 */ // Label 270: @5043
6110 /* 5043 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5064), // Rule ID 58 //
6111 /* 5048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6112 /* 5051 */ // MIs[0] root
6113 /* 5051 */ // No operand predicates
6114 /* 5051 */ // MIs[0] second
6115 /* 5051 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6116 /* 5055 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6117 /* 5059 */ // MIs[1] src
6118 /* 5059 */ // No operand predicates
6119 /* 5059 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6120 /* 5061 */ // Combiner Rule #56: anyext_of_anyext
6121 /* 5061 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6122 /* 5064 */ // Label 271: @5064
6123 /* 5064 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5085), // Rule ID 60 //
6124 /* 5069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
6125 /* 5072 */ // MIs[0] root
6126 /* 5072 */ // No operand predicates
6127 /* 5072 */ // MIs[0] second
6128 /* 5072 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6129 /* 5076 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6130 /* 5080 */ // MIs[1] src
6131 /* 5080 */ // No operand predicates
6132 /* 5080 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6133 /* 5082 */ // Combiner Rule #58: anyext_of_sext
6134 /* 5082 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6135 /* 5085 */ // Label 272: @5085
6136 /* 5085 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5106), // Rule ID 59 //
6137 /* 5090 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6138 /* 5093 */ // MIs[0] root
6139 /* 5093 */ // No operand predicates
6140 /* 5093 */ // MIs[0] second
6141 /* 5093 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6142 /* 5097 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6143 /* 5101 */ // MIs[1] src
6144 /* 5101 */ // No operand predicates
6145 /* 5101 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6146 /* 5103 */ // Combiner Rule #57: anyext_of_zext
6147 /* 5103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6148 /* 5106 */ // Label 273: @5106
6149 /* 5106 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5127), // Rule ID 95 //
6150 /* 5111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6151 /* 5114 */ // MIs[0] dst
6152 /* 5114 */ // No operand predicates
6153 /* 5114 */ // MIs[0] __unary_undef_to_undef_match_0.x
6154 /* 5114 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6155 /* 5118 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6156 /* 5122 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6157 /* 5124 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
6158 /* 5124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6159 /* 5127 */ // Label 274: @5127
6160 /* 5127 */ GIM_Reject,
6161 /* 5128 */ // Label 29: @5128
6162 /* 5128 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5139), // Rule ID 143 //
6163 /* 5133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
6164 /* 5136 */ // Combiner Rule #103: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
6165 /* 5136 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
6166 /* 5139 */ // Label 275: @5139
6167 /* 5139 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5150), // Rule ID 144 //
6168 /* 5144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
6169 /* 5147 */ // Combiner Rule #104: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
6170 /* 5147 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
6171 /* 5150 */ // Label 276: @5150
6172 /* 5150 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5161), // Rule ID 183 //
6173 /* 5155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
6174 /* 5158 */ // Combiner Rule #139: trunc_shift; wip_match_opcode 'G_TRUNC'
6175 /* 5158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
6176 /* 5161 */ // Label 277: @5161
6177 /* 5161 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5172), // Rule ID 402 //
6178 /* 5166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
6179 /* 5169 */ // Combiner Rule #248: clamp_i64_to_i16; wip_match_opcode 'G_TRUNC'
6180 /* 5169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
6181 /* 5172 */ // Label 278: @5172
6182 /* 5172 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5193), // Rule ID 64 //
6183 /* 5177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
6184 /* 5180 */ // MIs[0] root
6185 /* 5180 */ // No operand predicates
6186 /* 5180 */ // MIs[0] select
6187 /* 5180 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6188 /* 5184 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6189 /* 5188 */ // MIs[1] cond
6190 /* 5188 */ // No operand predicates
6191 /* 5188 */ // MIs[1] true
6192 /* 5188 */ // No operand predicates
6193 /* 5188 */ // MIs[1] false
6194 /* 5188 */ // No operand predicates
6195 /* 5188 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6196 /* 5190 */ // Combiner Rule #62: select_of_truncate
6197 /* 5190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6198 /* 5193 */ // Label 279: @5193
6199 /* 5193 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5222), // Rule ID 66 //
6200 /* 5198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6201 /* 5201 */ // MIs[0] root
6202 /* 5201 */ // No operand predicates
6203 /* 5201 */ // MIs[0] binop
6204 /* 5201 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6205 /* 5205 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6206 /* 5209 */ // MIs[1] x
6207 /* 5209 */ // No operand predicates
6208 /* 5209 */ // MIs[1] const
6209 /* 5209 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6210 /* 5213 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6211 /* 5217 */ // MIs[2] imm
6212 /* 5217 */ // No operand predicates
6213 /* 5217 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6214 /* 5219 */ // Combiner Rule #64: narrow_binop_add
6215 /* 5219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6216 /* 5222 */ // Label 280: @5222
6217 /* 5222 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5251), // Rule ID 69 //
6218 /* 5227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6219 /* 5230 */ // MIs[0] root
6220 /* 5230 */ // No operand predicates
6221 /* 5230 */ // MIs[0] binop
6222 /* 5230 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6223 /* 5234 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6224 /* 5238 */ // MIs[1] x
6225 /* 5238 */ // No operand predicates
6226 /* 5238 */ // MIs[1] const
6227 /* 5238 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6228 /* 5242 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6229 /* 5246 */ // MIs[2] imm
6230 /* 5246 */ // No operand predicates
6231 /* 5246 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6232 /* 5248 */ // Combiner Rule #67: narrow_binop_and
6233 /* 5248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6234 /* 5251 */ // Label 281: @5251
6235 /* 5251 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5280), // Rule ID 68 //
6236 /* 5256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6237 /* 5259 */ // MIs[0] root
6238 /* 5259 */ // No operand predicates
6239 /* 5259 */ // MIs[0] binop
6240 /* 5259 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6241 /* 5263 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
6242 /* 5267 */ // MIs[1] x
6243 /* 5267 */ // No operand predicates
6244 /* 5267 */ // MIs[1] const
6245 /* 5267 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6246 /* 5271 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6247 /* 5275 */ // MIs[2] imm
6248 /* 5275 */ // No operand predicates
6249 /* 5275 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6250 /* 5277 */ // Combiner Rule #66: narrow_binop_mul
6251 /* 5277 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6252 /* 5280 */ // Label 282: @5280
6253 /* 5280 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5309), // Rule ID 70 //
6254 /* 5285 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
6255 /* 5288 */ // MIs[0] root
6256 /* 5288 */ // No operand predicates
6257 /* 5288 */ // MIs[0] binop
6258 /* 5288 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6259 /* 5292 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6260 /* 5296 */ // MIs[1] x
6261 /* 5296 */ // No operand predicates
6262 /* 5296 */ // MIs[1] const
6263 /* 5296 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6264 /* 5300 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6265 /* 5304 */ // MIs[2] imm
6266 /* 5304 */ // No operand predicates
6267 /* 5304 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6268 /* 5306 */ // Combiner Rule #68: narrow_binop_or
6269 /* 5306 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6270 /* 5309 */ // Label 283: @5309
6271 /* 5309 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5338), // Rule ID 67 //
6272 /* 5314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6273 /* 5317 */ // MIs[0] root
6274 /* 5317 */ // No operand predicates
6275 /* 5317 */ // MIs[0] binop
6276 /* 5317 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6277 /* 5321 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6278 /* 5325 */ // MIs[1] x
6279 /* 5325 */ // No operand predicates
6280 /* 5325 */ // MIs[1] const
6281 /* 5325 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6282 /* 5329 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6283 /* 5333 */ // MIs[2] imm
6284 /* 5333 */ // No operand predicates
6285 /* 5333 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6286 /* 5335 */ // Combiner Rule #65: narrow_binop_sub
6287 /* 5335 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6288 /* 5338 */ // Label 284: @5338
6289 /* 5338 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5370), // Rule ID 389 //
6290 /* 5343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
6291 /* 5346 */ // MIs[0] dst
6292 /* 5346 */ // No operand predicates
6293 /* 5346 */ // MIs[0] min
6294 /* 5346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6295 /* 5350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6296 /* 5354 */ // MIs[1] x
6297 /* 5354 */ // No operand predicates
6298 /* 5354 */ // MIs[1] y
6299 /* 5354 */ // No operand predicates
6300 /* 5354 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6301 /* 5358 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6302 /* 5360 */ // Combiner Rule #238: trunc_usatu
6303 /* 5360 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6304 /* 5363 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6305 /* 5365 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6306 /* 5369 */ GIR_EraseRootFromParent_Done,
6307 /* 5370 */ // Label 285: @5370
6308 /* 5370 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5399), // Rule ID 71 //
6309 /* 5375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
6310 /* 5378 */ // MIs[0] root
6311 /* 5378 */ // No operand predicates
6312 /* 5378 */ // MIs[0] binop
6313 /* 5378 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6314 /* 5382 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6315 /* 5386 */ // MIs[1] x
6316 /* 5386 */ // No operand predicates
6317 /* 5386 */ // MIs[1] const
6318 /* 5386 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6319 /* 5390 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6320 /* 5394 */ // MIs[2] imm
6321 /* 5394 */ // No operand predicates
6322 /* 5394 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6323 /* 5396 */ // Combiner Rule #69: narrow_binop_xor
6324 /* 5396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6325 /* 5399 */ // Label 286: @5399
6326 /* 5399 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5420), // Rule ID 53 //
6327 /* 5404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6328 /* 5407 */ // MIs[0] root
6329 /* 5407 */ // No operand predicates
6330 /* 5407 */ // MIs[0] ext
6331 /* 5407 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6332 /* 5411 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6333 /* 5415 */ // MIs[1] src
6334 /* 5415 */ // No operand predicates
6335 /* 5415 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6336 /* 5417 */ // Combiner Rule #51: truncate_of_anyext
6337 /* 5417 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6338 /* 5420 */ // Label 287: @5420
6339 /* 5420 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5444), // Rule ID 65 //
6340 /* 5425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6341 /* 5428 */ // MIs[0] root
6342 /* 5428 */ // No operand predicates
6343 /* 5428 */ // MIs[0] bv
6344 /* 5428 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6345 /* 5432 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6346 /* 5436 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6347 /* 5439 */ // MIs[1] unused
6348 /* 5439 */ // No operand predicates
6349 /* 5439 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6350 /* 5441 */ // Combiner Rule #63: buildvector_of_truncate
6351 /* 5441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6352 /* 5444 */ // Label 288: @5444
6353 /* 5444 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5465), // Rule ID 52 //
6354 /* 5449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6355 /* 5452 */ // MIs[0] root
6356 /* 5452 */ // No operand predicates
6357 /* 5452 */ // MIs[0] ext
6358 /* 5452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6359 /* 5456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6360 /* 5460 */ // MIs[1] src
6361 /* 5460 */ // No operand predicates
6362 /* 5460 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6363 /* 5462 */ // Combiner Rule #50: truncate_of_sext
6364 /* 5462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6365 /* 5465 */ // Label 289: @5465
6366 /* 5465 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5486), // Rule ID 51 //
6367 /* 5470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6368 /* 5473 */ // MIs[0] root
6369 /* 5473 */ // No operand predicates
6370 /* 5473 */ // MIs[0] ext
6371 /* 5473 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6372 /* 5477 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6373 /* 5481 */ // MIs[1] src
6374 /* 5481 */ // No operand predicates
6375 /* 5481 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6376 /* 5483 */ // Combiner Rule #49: truncate_of_zext
6377 /* 5483 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6378 /* 5486 */ // Label 290: @5486
6379 /* 5486 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5507), // Rule ID 93 //
6380 /* 5491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6381 /* 5494 */ // MIs[0] dst
6382 /* 5494 */ // No operand predicates
6383 /* 5494 */ // MIs[0] __unary_undef_to_undef_match_0.x
6384 /* 5494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6385 /* 5498 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6386 /* 5502 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6387 /* 5504 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6388 /* 5504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6389 /* 5507 */ // Label 291: @5507
6390 /* 5507 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5528), // Rule ID 72 //
6391 /* 5512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
6392 /* 5515 */ // MIs[0] root
6393 /* 5515 */ // No operand predicates
6394 /* 5515 */ // MIs[0] int
6395 /* 5515 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6396 /* 5519 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6397 /* 5523 */ // MIs[1] imm
6398 /* 5523 */ // No operand predicates
6399 /* 5523 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6400 /* 5525 */ // Combiner Rule #70: integer_of_truncate
6401 /* 5525 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6402 /* 5528 */ // Label 292: @5528
6403 /* 5528 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5539), // Rule ID 387 //
6404 /* 5533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6405 /* 5536 */ // MIs[0] dst
6406 /* 5536 */ // No operand predicates
6407 /* 5536 */ // MIs[0] src
6408 /* 5536 */ // No operand predicates
6409 /* 5536 */ // Combiner Rule #236: trunc_ssats
6410 /* 5536 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6411 /* 5539 */ // Label 293: @5539
6412 /* 5539 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5550), // Rule ID 388 //
6413 /* 5544 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6414 /* 5547 */ // MIs[0] dst
6415 /* 5547 */ // No operand predicates
6416 /* 5547 */ // MIs[0] src
6417 /* 5547 */ // No operand predicates
6418 /* 5547 */ // Combiner Rule #237: trunc_ssatu
6419 /* 5547 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
6420 /* 5550 */ // Label 294: @5550
6421 /* 5550 */ GIM_Reject,
6422 /* 5551 */ // Label 30: @5551
6423 /* 5551 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5583), // Rule ID 390 //
6424 /* 5556 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
6425 /* 5559 */ // MIs[0] dst
6426 /* 5559 */ // No operand predicates
6427 /* 5559 */ // MIs[0] src
6428 /* 5559 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6429 /* 5563 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6430 /* 5567 */ // MIs[1] x
6431 /* 5567 */ // No operand predicates
6432 /* 5567 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
6433 /* 5571 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6434 /* 5573 */ // Combiner Rule #239: truncusatu_to_fptouisat
6435 /* 5573 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6436 /* 5576 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6437 /* 5578 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6438 /* 5582 */ GIR_EraseRootFromParent_Done,
6439 /* 5583 */ // Label 295: @5583
6440 /* 5583 */ GIM_Reject,
6441 /* 5584 */ // Label 31: @5584
6442 /* 5584 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5595), // Rule ID 278 //
6443 /* 5589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6444 /* 5592 */ // Combiner Rule #187: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6445 /* 5592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6446 /* 5595 */ // Label 296: @5595
6447 /* 5595 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5616), // Rule ID 57 //
6448 /* 5600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
6449 /* 5603 */ // MIs[0] root
6450 /* 5603 */ // No operand predicates
6451 /* 5603 */ // MIs[0] second
6452 /* 5603 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6453 /* 5607 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6454 /* 5611 */ // MIs[1] src
6455 /* 5611 */ // No operand predicates
6456 /* 5611 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6457 /* 5613 */ // Combiner Rule #55: sext_of_anyext
6458 /* 5613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6459 /* 5616 */ // Label 297: @5616
6460 /* 5616 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5637), // Rule ID 56 //
6461 /* 5621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
6462 /* 5624 */ // MIs[0] root
6463 /* 5624 */ // No operand predicates
6464 /* 5624 */ // MIs[0] second
6465 /* 5624 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6466 /* 5628 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6467 /* 5632 */ // MIs[1] src
6468 /* 5632 */ // No operand predicates
6469 /* 5632 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6470 /* 5634 */ // Combiner Rule #54: sext_of_sext
6471 /* 5634 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6472 /* 5637 */ // Label 298: @5637
6473 /* 5637 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5658), // Rule ID 366 //
6474 /* 5642 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
6475 /* 5645 */ // MIs[0] root
6476 /* 5645 */ // No operand predicates
6477 /* 5645 */ // MIs[0] src
6478 /* 5645 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6479 /* 5649 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6480 /* 5653 */ // MIs[1] x
6481 /* 5653 */ // No operand predicates
6482 /* 5653 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6483 /* 5655 */ // Combiner Rule #217: sext_trunc
6484 /* 5655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6485 /* 5658 */ // Label 299: @5658
6486 /* 5658 */ GIM_Reject,
6487 /* 5659 */ // Label 32: @5659
6488 /* 5659 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5670), // Rule ID 170 //
6489 /* 5664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6490 /* 5667 */ // Combiner Rule #126: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6491 /* 5667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6492 /* 5670 */ // Label 300: @5670
6493 /* 5670 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5681), // Rule ID 178 //
6494 /* 5675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
6495 /* 5678 */ // Combiner Rule #134: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6496 /* 5678 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6497 /* 5681 */ // Label 301: @5681
6498 /* 5681 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5692), // Rule ID 247 //
6499 /* 5686 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6500 /* 5689 */ // Combiner Rule #180: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6501 /* 5689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6502 /* 5692 */ // Label 302: @5692
6503 /* 5692 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5713), // Rule ID 61 //
6504 /* 5697 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
6505 /* 5700 */ // MIs[0] dst
6506 /* 5700 */ // No operand predicates
6507 /* 5700 */ // MIs[0] x
6508 /* 5700 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6509 /* 5704 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6510 /* 5708 */ // MIs[1] src
6511 /* 5708 */ // No operand predicates
6512 /* 5708 */ // MIs[1] a
6513 /* 5708 */ // No operand predicates
6514 /* 5708 */ // MIs[0] b
6515 /* 5708 */ // No operand predicates
6516 /* 5708 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6517 /* 5710 */ // Combiner Rule #59: sext_inreg_of_sext_inreg
6518 /* 5710 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6519 /* 5713 */ // Label 303: @5713
6520 /* 5713 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5724), // Rule ID 182 //
6521 /* 5718 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
6522 /* 5721 */ // MIs[0] dst
6523 /* 5721 */ // No operand predicates
6524 /* 5721 */ // MIs[0] src
6525 /* 5721 */ // No operand predicates
6526 /* 5721 */ // MIs[0] imm
6527 /* 5721 */ // No operand predicates
6528 /* 5721 */ // Combiner Rule #138: sext_inreg_to_zext_inreg
6529 /* 5721 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6530 /* 5724 */ // Label 304: @5724
6531 /* 5724 */ GIM_Reject,
6532 /* 5725 */ // Label 33: @5725
6533 /* 5725 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5736), // Rule ID 181 //
6534 /* 5730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
6535 /* 5733 */ // Combiner Rule #137: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6536 /* 5733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6537 /* 5736 */ // Label 305: @5736
6538 /* 5736 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5747), // Rule ID 277 //
6539 /* 5741 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6540 /* 5744 */ // Combiner Rule #187: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6541 /* 5744 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6542 /* 5747 */ // Label 306: @5747
6543 /* 5747 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5768), // Rule ID 62 //
6544 /* 5752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
6545 /* 5755 */ // MIs[0] root
6546 /* 5755 */ // No operand predicates
6547 /* 5755 */ // MIs[0] select
6548 /* 5755 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6549 /* 5759 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6550 /* 5763 */ // MIs[1] cond
6551 /* 5763 */ // No operand predicates
6552 /* 5763 */ // MIs[1] true
6553 /* 5763 */ // No operand predicates
6554 /* 5763 */ // MIs[1] false
6555 /* 5763 */ // No operand predicates
6556 /* 5763 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6557 /* 5765 */ // Combiner Rule #60: select_of_zext
6558 /* 5765 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6559 /* 5768 */ // Label 307: @5768
6560 /* 5768 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5789), // Rule ID 55 //
6561 /* 5773 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
6562 /* 5776 */ // MIs[0] root
6563 /* 5776 */ // No operand predicates
6564 /* 5776 */ // MIs[0] second
6565 /* 5776 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6566 /* 5780 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6567 /* 5784 */ // MIs[1] src
6568 /* 5784 */ // No operand predicates
6569 /* 5784 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6570 /* 5786 */ // Combiner Rule #53: zext_of_anyext
6571 /* 5786 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6572 /* 5789 */ // Label 308: @5789
6573 /* 5789 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5816), // Rule ID 367 //
6574 /* 5794 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
6575 /* 5797 */ // MIs[0] root
6576 /* 5797 */ // No operand predicates
6577 /* 5797 */ // MIs[0] src
6578 /* 5797 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6579 /* 5801 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6580 /* 5805 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6581 /* 5811 */ // MIs[1] x
6582 /* 5811 */ // No operand predicates
6583 /* 5811 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6584 /* 5813 */ // Combiner Rule #218: zext_trunc
6585 /* 5813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6586 /* 5816 */ // Label 309: @5816
6587 /* 5816 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5837), // Rule ID 54 //
6588 /* 5821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
6589 /* 5824 */ // MIs[0] root
6590 /* 5824 */ // No operand predicates
6591 /* 5824 */ // MIs[0] second
6592 /* 5824 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6593 /* 5828 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6594 /* 5832 */ // MIs[1] src
6595 /* 5832 */ // No operand predicates
6596 /* 5832 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6597 /* 5834 */ // Combiner Rule #52: zext_of_zext
6598 /* 5834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6599 /* 5837 */ // Label 310: @5837
6600 /* 5837 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5854), // Rule ID 368 //
6601 /* 5842 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
6602 /* 5845 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6603 /* 5851 */ // MIs[0] root
6604 /* 5851 */ // No operand predicates
6605 /* 5851 */ // MIs[0] x
6606 /* 5851 */ // No operand predicates
6607 /* 5851 */ // Combiner Rule #219: nneg_zext
6608 /* 5851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6609 /* 5854 */ // Label 311: @5854
6610 /* 5854 */ GIM_Reject,
6611 /* 5855 */ // Label 34: @5855
6612 /* 5855 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5866), // Rule ID 86 //
6613 /* 5860 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6614 /* 5863 */ // Combiner Rule #80: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6615 /* 5863 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6616 /* 5866 */ // Label 312: @5866
6617 /* 5866 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5877), // Rule ID 89 //
6618 /* 5871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
6619 /* 5874 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6620 /* 5874 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6621 /* 5877 */ // Label 313: @5877
6622 /* 5877 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5888), // Rule ID 218 //
6623 /* 5882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6624 /* 5885 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_SHL'
6625 /* 5885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6626 /* 5888 */ // Label 314: @5888
6627 /* 5888 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5899), // Rule ID 223 //
6628 /* 5893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6629 /* 5896 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6630 /* 5896 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6631 /* 5899 */ // Label 315: @5899
6632 /* 5899 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5910), // Rule ID 246 //
6633 /* 5904 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6634 /* 5907 */ // Combiner Rule #179: commute_shift; wip_match_opcode 'G_SHL'
6635 /* 5907 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6636 /* 5910 */ // Label 316: @5910
6637 /* 5910 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5921), // Rule ID 260 //
6638 /* 5915 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6639 /* 5918 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SHL'
6640 /* 5918 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6641 /* 5921 */ // Label 317: @5921
6642 /* 5921 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5932), // Rule ID 309 //
6643 /* 5926 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6644 /* 5929 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SHL'
6645 /* 5929 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6646 /* 5932 */ // Label 318: @5932
6647 /* 5932 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5967), // Rule ID 47 //
6648 /* 5937 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
6649 /* 5940 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6650 /* 5946 */ // MIs[0] root
6651 /* 5946 */ // No operand predicates
6652 /* 5946 */ // MIs[0] left
6653 /* 5946 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6654 /* 5950 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6655 /* 5954 */ // MIs[1] imm
6656 /* 5954 */ // No operand predicates
6657 /* 5954 */ // MIs[0] x
6658 /* 5954 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6659 /* 5958 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6660 /* 5962 */ // MIs[2] imm1
6661 /* 5962 */ // No operand predicates
6662 /* 5962 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6663 /* 5964 */ // Combiner Rule #45: shl_of_vscale
6664 /* 5964 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6665 /* 5967 */ // Label 319: @5967
6666 /* 5967 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6007), // Rule ID 124 //
6667 /* 5972 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6668 /* 5975 */ // MIs[0] dst
6669 /* 5975 */ // No operand predicates
6670 /* 5975 */ // MIs[0] zero
6671 /* 5975 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6672 /* 5979 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6673 /* 5983 */ // MIs[1] Operand 1
6674 /* 5983 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6675 /* 5994 */ // MIs[0] rhs
6676 /* 5994 */ // No operand predicates
6677 /* 5994 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6678 /* 5999 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6679 /* 6001 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6680 /* 6001 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6681 /* 6006 */ GIR_EraseRootFromParent_Done,
6682 /* 6007 */ // Label 320: @6007
6683 /* 6007 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6030), // Rule ID 114 //
6684 /* 6012 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6685 /* 6015 */ // MIs[0] dst
6686 /* 6015 */ // No operand predicates
6687 /* 6015 */ // MIs[0] lhs
6688 /* 6015 */ // No operand predicates
6689 /* 6015 */ // MIs[0] Operand 2
6690 /* 6015 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6691 /* 6019 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6692 /* 6024 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
6693 /* 6024 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6694 /* 6029 */ GIR_EraseRootFromParent_Done,
6695 /* 6030 */ // Label 321: @6030
6696 /* 6030 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6041), // Rule ID 155 //
6697 /* 6035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6698 /* 6038 */ // MIs[0] root
6699 /* 6038 */ // No operand predicates
6700 /* 6038 */ // MIs[0] mi.shifted
6701 /* 6038 */ // No operand predicates
6702 /* 6038 */ // MIs[0] mi.amt
6703 /* 6038 */ // No operand predicates
6704 /* 6038 */ // Combiner Rule #113: shifts_too_big @ [mi[0]]
6705 /* 6038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6706 /* 6041 */ // Label 322: @6041
6707 /* 6041 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6052), // Rule ID 171 //
6708 /* 6046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6709 /* 6049 */ // MIs[0] dst
6710 /* 6049 */ // No operand predicates
6711 /* 6049 */ // MIs[0] src0
6712 /* 6049 */ // No operand predicates
6713 /* 6049 */ // MIs[0] src1
6714 /* 6049 */ // No operand predicates
6715 /* 6049 */ // Combiner Rule #127: reduce_shl_of_extend
6716 /* 6049 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6717 /* 6052 */ // Label 323: @6052
6718 /* 6052 */ GIM_Reject,
6719 /* 6053 */ // Label 35: @6053
6720 /* 6053 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6064), // Rule ID 91 //
6721 /* 6058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
6722 /* 6061 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6723 /* 6061 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6724 /* 6064 */ // Label 324: @6064
6725 /* 6064 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6075), // Rule ID 220 //
6726 /* 6069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6727 /* 6072 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_LSHR'
6728 /* 6072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6729 /* 6075 */ // Label 325: @6075
6730 /* 6075 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6086), // Rule ID 225 //
6731 /* 6080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6732 /* 6083 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6733 /* 6083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6734 /* 6086 */ // Label 326: @6086
6735 /* 6086 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6097), // Rule ID 250 //
6736 /* 6091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6737 /* 6094 */ // Combiner Rule #182: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6738 /* 6094 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6739 /* 6097 */ // Label 327: @6097
6740 /* 6097 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6108), // Rule ID 252 //
6741 /* 6102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6742 /* 6105 */ // Combiner Rule #183: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6743 /* 6105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6744 /* 6108 */ // Label 328: @6108
6745 /* 6108 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6119), // Rule ID 257 //
6746 /* 6113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6747 /* 6116 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_LSHR'
6748 /* 6116 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6749 /* 6119 */ // Label 329: @6119
6750 /* 6119 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6130), // Rule ID 307 //
6751 /* 6124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6752 /* 6127 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6753 /* 6127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6754 /* 6130 */ // Label 330: @6130
6755 /* 6130 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6159), // Rule ID 391 //
6756 /* 6135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
6757 /* 6138 */ // MIs[0] dst
6758 /* 6138 */ // No operand predicates
6759 /* 6138 */ // MIs[0] d2
6760 /* 6138 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6761 /* 6142 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6762 /* 6146 */ // MIs[1] d1
6763 /* 6146 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6764 /* 6150 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6765 /* 6154 */ // MIs[2] x
6766 /* 6154 */ // No operand predicates
6767 /* 6154 */ // MIs[2] y
6768 /* 6154 */ // No operand predicates
6769 /* 6154 */ // MIs[0] z
6770 /* 6154 */ // No operand predicates
6771 /* 6154 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6772 /* 6156 */ // Combiner Rule #240: lshr_of_trunc_of_lshr
6773 /* 6156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6774 /* 6159 */ // Label 331: @6159
6775 /* 6159 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6199), // Rule ID 125 //
6776 /* 6164 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6777 /* 6167 */ // MIs[0] dst
6778 /* 6167 */ // No operand predicates
6779 /* 6167 */ // MIs[0] zero
6780 /* 6167 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6781 /* 6171 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6782 /* 6175 */ // MIs[1] Operand 1
6783 /* 6175 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6784 /* 6186 */ // MIs[0] rhs
6785 /* 6186 */ // No operand predicates
6786 /* 6186 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6787 /* 6191 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6788 /* 6193 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6789 /* 6193 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6790 /* 6198 */ GIR_EraseRootFromParent_Done,
6791 /* 6199 */ // Label 332: @6199
6792 /* 6199 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6222), // Rule ID 116 //
6793 /* 6204 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6794 /* 6207 */ // MIs[0] dst
6795 /* 6207 */ // No operand predicates
6796 /* 6207 */ // MIs[0] lhs
6797 /* 6207 */ // No operand predicates
6798 /* 6207 */ // MIs[0] Operand 2
6799 /* 6207 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6800 /* 6211 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6801 /* 6216 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
6802 /* 6216 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6803 /* 6221 */ GIR_EraseRootFromParent_Done,
6804 /* 6222 */ // Label 333: @6222
6805 /* 6222 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6233), // Rule ID 157 //
6806 /* 6227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6807 /* 6230 */ // MIs[0] root
6808 /* 6230 */ // No operand predicates
6809 /* 6230 */ // MIs[0] mi.shifted
6810 /* 6230 */ // No operand predicates
6811 /* 6230 */ // MIs[0] mi.amt
6812 /* 6230 */ // No operand predicates
6813 /* 6230 */ // Combiner Rule #113: shifts_too_big @ [mi[2]]
6814 /* 6230 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6815 /* 6233 */ // Label 334: @6233
6816 /* 6233 */ GIM_Reject,
6817 /* 6234 */ // Label 36: @6234
6818 /* 6234 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6245), // Rule ID 90 //
6819 /* 6239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
6820 /* 6242 */ // Combiner Rule #81: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6821 /* 6242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6822 /* 6245 */ // Label 335: @6245
6823 /* 6245 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6256), // Rule ID 168 //
6824 /* 6250 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6825 /* 6253 */ // Combiner Rule #124: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6826 /* 6253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6827 /* 6256 */ // Label 336: @6256
6828 /* 6256 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6267), // Rule ID 219 //
6829 /* 6261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
6830 /* 6264 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_ASHR'
6831 /* 6264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6832 /* 6267 */ // Label 337: @6267
6833 /* 6267 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6278), // Rule ID 224 //
6834 /* 6272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6835 /* 6275 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6836 /* 6275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6837 /* 6278 */ // Label 338: @6278
6838 /* 6278 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6289), // Rule ID 249 //
6839 /* 6283 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6840 /* 6286 */ // Combiner Rule #182: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6841 /* 6286 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6842 /* 6289 */ // Label 339: @6289
6843 /* 6289 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6300), // Rule ID 251 //
6844 /* 6294 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
6845 /* 6297 */ // Combiner Rule #183: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6846 /* 6297 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6847 /* 6300 */ // Label 340: @6300
6848 /* 6300 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6311), // Rule ID 256 //
6849 /* 6305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6850 /* 6308 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_ASHR'
6851 /* 6308 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6852 /* 6311 */ // Label 341: @6311
6853 /* 6311 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6322), // Rule ID 308 //
6854 /* 6316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
6855 /* 6319 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6856 /* 6319 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6857 /* 6322 */ // Label 342: @6322
6858 /* 6322 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6362), // Rule ID 126 //
6859 /* 6327 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6860 /* 6330 */ // MIs[0] dst
6861 /* 6330 */ // No operand predicates
6862 /* 6330 */ // MIs[0] zero
6863 /* 6330 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6864 /* 6334 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6865 /* 6338 */ // MIs[1] Operand 1
6866 /* 6338 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6867 /* 6349 */ // MIs[0] rhs
6868 /* 6349 */ // No operand predicates
6869 /* 6349 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6870 /* 6354 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6871 /* 6356 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6872 /* 6356 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6873 /* 6361 */ GIR_EraseRootFromParent_Done,
6874 /* 6362 */ // Label 343: @6362
6875 /* 6362 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6385), // Rule ID 115 //
6876 /* 6367 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6877 /* 6370 */ // MIs[0] dst
6878 /* 6370 */ // No operand predicates
6879 /* 6370 */ // MIs[0] lhs
6880 /* 6370 */ // No operand predicates
6881 /* 6370 */ // MIs[0] Operand 2
6882 /* 6370 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6883 /* 6374 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6884 /* 6379 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
6885 /* 6379 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6886 /* 6384 */ GIR_EraseRootFromParent_Done,
6887 /* 6385 */ // Label 344: @6385
6888 /* 6385 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6396), // Rule ID 156 //
6889 /* 6390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6890 /* 6393 */ // MIs[0] root
6891 /* 6393 */ // No operand predicates
6892 /* 6393 */ // MIs[0] mi.shifted
6893 /* 6393 */ // No operand predicates
6894 /* 6393 */ // MIs[0] mi.amt
6895 /* 6393 */ // No operand predicates
6896 /* 6393 */ // Combiner Rule #113: shifts_too_big @ [mi[1]]
6897 /* 6393 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6898 /* 6396 */ // Label 345: @6396
6899 /* 6396 */ GIM_Reject,
6900 /* 6397 */ // Label 37: @6397
6901 /* 6397 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6408), // Rule ID 234 //
6902 /* 6402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6903 /* 6405 */ // Combiner Rule #171: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6904 /* 6405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6905 /* 6408 */ // Label 346: @6408
6906 /* 6408 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6419), // Rule ID 238 //
6907 /* 6413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
6908 /* 6416 */ // Combiner Rule #174: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6909 /* 6416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6910 /* 6419 */ // Label 347: @6419
6911 /* 6419 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6439), // Rule ID 237 //
6912 /* 6424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
6913 /* 6427 */ // MIs[0] x
6914 /* 6427 */ // No operand predicates
6915 /* 6427 */ // MIs[0] y
6916 /* 6427 */ // No operand predicates
6917 /* 6427 */ // MIs[0] z
6918 /* 6427 */ // No operand predicates
6919 /* 6427 */ // MIs[0] Operand 3
6920 /* 6427 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6921 /* 6431 */ // Combiner Rule #173: funnel_shift_left_zero
6922 /* 6431 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6923 /* 6434 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6924 /* 6436 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6925 /* 6438 */ GIR_EraseRootFromParent_Done,
6926 /* 6439 */ // Label 348: @6439
6927 /* 6439 */ GIM_Reject,
6928 /* 6440 */ // Label 38: @6440
6929 /* 6440 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6451), // Rule ID 235 //
6930 /* 6445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6931 /* 6448 */ // Combiner Rule #171: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6932 /* 6448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6933 /* 6451 */ // Label 349: @6451
6934 /* 6451 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6462), // Rule ID 239 //
6935 /* 6456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
6936 /* 6459 */ // Combiner Rule #174: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6937 /* 6459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6938 /* 6462 */ // Label 350: @6462
6939 /* 6462 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6482), // Rule ID 236 //
6940 /* 6467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
6941 /* 6470 */ // MIs[0] x
6942 /* 6470 */ // No operand predicates
6943 /* 6470 */ // MIs[0] y
6944 /* 6470 */ // No operand predicates
6945 /* 6470 */ // MIs[0] z
6946 /* 6470 */ // No operand predicates
6947 /* 6470 */ // MIs[0] Operand 3
6948 /* 6470 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6949 /* 6474 */ // Combiner Rule #172: funnel_shift_right_zero
6950 /* 6474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6951 /* 6477 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6952 /* 6479 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6953 /* 6481 */ GIR_EraseRootFromParent_Done,
6954 /* 6482 */ // Label 351: @6482
6955 /* 6482 */ GIM_Reject,
6956 /* 6483 */ // Label 39: @6483
6957 /* 6483 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6506), // Rule ID 119 //
6958 /* 6488 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6959 /* 6491 */ // MIs[0] dst
6960 /* 6491 */ // No operand predicates
6961 /* 6491 */ // MIs[0] lhs
6962 /* 6491 */ // No operand predicates
6963 /* 6491 */ // MIs[0] Operand 2
6964 /* 6491 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6965 /* 6495 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6966 /* 6500 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
6967 /* 6500 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6968 /* 6505 */ GIR_EraseRootFromParent_Done,
6969 /* 6506 */ // Label 352: @6506
6970 /* 6506 */ GIM_Reject,
6971 /* 6507 */ // Label 40: @6507
6972 /* 6507 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6530), // Rule ID 118 //
6973 /* 6512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6974 /* 6515 */ // MIs[0] dst
6975 /* 6515 */ // No operand predicates
6976 /* 6515 */ // MIs[0] lhs
6977 /* 6515 */ // No operand predicates
6978 /* 6515 */ // MIs[0] Operand 2
6979 /* 6515 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6980 /* 6519 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6981 /* 6524 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
6982 /* 6524 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6983 /* 6529 */ GIR_EraseRootFromParent_Done,
6984 /* 6530 */ // Label 353: @6530
6985 /* 6530 */ GIM_Reject,
6986 /* 6531 */ // Label 41: @6531
6987 /* 6531 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6542), // Rule ID 163 //
6988 /* 6536 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
6989 /* 6539 */ // Combiner Rule #119: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
6990 /* 6539 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
6991 /* 6542 */ // Label 354: @6542
6992 /* 6542 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6553), // Rule ID 164 //
6993 /* 6547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
6994 /* 6550 */ // Combiner Rule #120: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
6995 /* 6550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
6996 /* 6553 */ // Label 355: @6553
6997 /* 6553 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6564), // Rule ID 167 //
6998 /* 6558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6999 /* 6561 */ // Combiner Rule #123: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
7000 /* 6561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7001 /* 6564 */ // Label 356: @6564
7002 /* 6564 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6575), // Rule ID 161 //
7003 /* 6569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
7004 /* 6572 */ // MIs[0] root
7005 /* 6572 */ // No operand predicates
7006 /* 6572 */ // MIs[0] pred
7007 /* 6572 */ // No operand predicates
7008 /* 6572 */ // MIs[0] lhs
7009 /* 6572 */ // No operand predicates
7010 /* 6572 */ // MIs[0] rhs
7011 /* 6572 */ // No operand predicates
7012 /* 6572 */ // Combiner Rule #117: canonicalize_icmp
7013 /* 6572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
7014 /* 6575 */ // Label 357: @6575
7015 /* 6575 */ GIM_Reject,
7016 /* 6576 */ // Label 42: @6576
7017 /* 6576 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6587), // Rule ID 162 //
7018 /* 6581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
7019 /* 6584 */ // MIs[0] root
7020 /* 6584 */ // No operand predicates
7021 /* 6584 */ // MIs[0] pred
7022 /* 6584 */ // No operand predicates
7023 /* 6584 */ // MIs[0] lhs
7024 /* 6584 */ // No operand predicates
7025 /* 6584 */ // MIs[0] rhs
7026 /* 6584 */ // No operand predicates
7027 /* 6584 */ // Combiner Rule #118: canonicalize_fcmp
7028 /* 6584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
7029 /* 6587 */ // Label 358: @6587
7030 /* 6587 */ GIM_Reject,
7031 /* 6588 */ // Label 43: @6588
7032 /* 6588 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6599), // Rule ID 109 //
7033 /* 6593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
7034 /* 6596 */ // Combiner Rule #89: select_same_val; wip_match_opcode 'G_SELECT'
7035 /* 6596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
7036 /* 6599 */ // Label 359: @6599
7037 /* 6599 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6610), // Rule ID 174 //
7038 /* 6604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
7039 /* 6607 */ // Combiner Rule #130: select_constant_cmp; wip_match_opcode 'G_SELECT'
7040 /* 6607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7041 /* 6610 */ // Label 360: @6610
7042 /* 6610 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6621), // Rule ID 176 //
7043 /* 6615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
7044 /* 6618 */ // Combiner Rule #132: match_selects; wip_match_opcode 'G_SELECT'
7045 /* 6618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
7046 /* 6621 */ // Label 361: @6621
7047 /* 6621 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6632), // Rule ID 331 //
7048 /* 6626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7049 /* 6629 */ // Combiner Rule #209: select_to_minmax; wip_match_opcode 'G_SELECT'
7050 /* 6629 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
7051 /* 6632 */ // Label 362: @6632
7052 /* 6632 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6653), // Rule ID 175 //
7053 /* 6637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
7054 /* 6640 */ // MIs[0] root
7055 /* 6640 */ // No operand predicates
7056 /* 6640 */ // MIs[0] tst
7057 /* 6640 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7058 /* 6644 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
7059 /* 6648 */ // MIs[1] tst1
7060 /* 6648 */ // No operand predicates
7061 /* 6648 */ // MIs[1] a
7062 /* 6648 */ // No operand predicates
7063 /* 6648 */ // MIs[1] b
7064 /* 6648 */ // No operand predicates
7065 /* 6648 */ // MIs[0] x
7066 /* 6648 */ // No operand predicates
7067 /* 6648 */ // MIs[0] y
7068 /* 6648 */ // No operand predicates
7069 /* 6648 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7070 /* 6650 */ // Combiner Rule #131: select_to_iminmax
7071 /* 6650 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
7072 /* 6653 */ // Label 363: @6653
7073 /* 6653 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6682), // Rule ID 173 //
7074 /* 6658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
7075 /* 6661 */ // MIs[0] dst
7076 /* 6661 */ // No operand predicates
7077 /* 6661 */ // MIs[0] undef
7078 /* 6661 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7079 /* 6665 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7080 /* 6669 */ // MIs[0] x
7081 /* 6669 */ // No operand predicates
7082 /* 6669 */ // MIs[0] y
7083 /* 6669 */ // No operand predicates
7084 /* 6669 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7085 /* 6674 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7086 /* 6676 */ // Combiner Rule #129: select_undef_cmp
7087 /* 6676 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
7088 /* 6681 */ GIR_EraseRootFromParent_Done,
7089 /* 6682 */ // Label 364: @6682
7090 /* 6682 */ GIM_Reject,
7091 /* 6683 */ // Label 44: @6683
7092 /* 6683 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6694), // Rule ID 342 //
7093 /* 6688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7094 /* 6691 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
7095 /* 6691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7096 /* 6694 */ // Label 365: @6694
7097 /* 6694 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6705), // Rule ID 384 //
7098 /* 6699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7099 /* 6702 */ // Combiner Rule #234: match_addos; wip_match_opcode 'G_UADDO'
7100 /* 6702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
7101 /* 6705 */ // Label 366: @6705
7102 /* 6705 */ GIM_Reject,
7103 /* 6706 */ // Label 45: @6706
7104 /* 6706 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6717), // Rule ID 207 //
7105 /* 6711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7106 /* 6714 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_UADDE'
7107 /* 6714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7108 /* 6717 */ // Label 367: @6717
7109 /* 6717 */ GIM_Reject,
7110 /* 6718 */ // Label 46: @6718
7111 /* 6718 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6729), // Rule ID 386 //
7112 /* 6723 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
7113 /* 6726 */ // Combiner Rule #235: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
7114 /* 6726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7115 /* 6729 */ // Label 368: @6729
7116 /* 6729 */ GIM_Reject,
7117 /* 6730 */ // Label 47: @6730
7118 /* 6730 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6741), // Rule ID 209 //
7119 /* 6735 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7120 /* 6738 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_USUBE'
7121 /* 6738 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7122 /* 6741 */ // Label 369: @6741
7123 /* 6741 */ GIM_Reject,
7124 /* 6742 */ // Label 48: @6742
7125 /* 6742 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6753), // Rule ID 343 //
7126 /* 6747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7127 /* 6750 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
7128 /* 6750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7129 /* 6753 */ // Label 370: @6753
7130 /* 6753 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6764), // Rule ID 383 //
7131 /* 6758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
7132 /* 6761 */ // Combiner Rule #234: match_addos; wip_match_opcode 'G_SADDO'
7133 /* 6761 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
7134 /* 6764 */ // Label 371: @6764
7135 /* 6764 */ GIM_Reject,
7136 /* 6765 */ // Label 49: @6765
7137 /* 6765 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6776), // Rule ID 208 //
7138 /* 6770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7139 /* 6773 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_SADDE'
7140 /* 6773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7141 /* 6776 */ // Label 372: @6776
7142 /* 6776 */ GIM_Reject,
7143 /* 6777 */ // Label 50: @6777
7144 /* 6777 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6788), // Rule ID 385 //
7145 /* 6782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
7146 /* 6785 */ // Combiner Rule #235: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
7147 /* 6785 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7148 /* 6788 */ // Label 373: @6788
7149 /* 6788 */ GIM_Reject,
7150 /* 6789 */ // Label 51: @6789
7151 /* 6789 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6800), // Rule ID 210 //
7152 /* 6794 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7153 /* 6797 */ // Combiner Rule #161: adde_to_addo; wip_match_opcode 'G_SSUBE'
7154 /* 6797 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
7155 /* 6800 */ // Label 374: @6800
7156 /* 6800 */ GIM_Reject,
7157 /* 6801 */ // Label 52: @6801
7158 /* 6801 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6812), // Rule ID 203 //
7159 /* 6806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7160 /* 6809 */ // Combiner Rule #159: mulo_by_2; wip_match_opcode 'G_UMULO'
7161 /* 6809 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7162 /* 6812 */ // Label 375: @6812
7163 /* 6812 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6823), // Rule ID 205 //
7164 /* 6817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7165 /* 6820 */ // Combiner Rule #160: mulo_by_0; wip_match_opcode 'G_UMULO'
7166 /* 6820 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7167 /* 6823 */ // Label 376: @6823
7168 /* 6823 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6834), // Rule ID 344 //
7169 /* 6828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7170 /* 6831 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
7171 /* 6831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7172 /* 6834 */ // Label 377: @6834
7173 /* 6834 */ GIM_Reject,
7174 /* 6835 */ // Label 53: @6835
7175 /* 6835 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6846), // Rule ID 204 //
7176 /* 6840 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7177 /* 6843 */ // Combiner Rule #159: mulo_by_2; wip_match_opcode 'G_SMULO'
7178 /* 6843 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7179 /* 6846 */ // Label 378: @6846
7180 /* 6846 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6857), // Rule ID 206 //
7181 /* 6851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7182 /* 6854 */ // Combiner Rule #160: mulo_by_0; wip_match_opcode 'G_SMULO'
7183 /* 6854 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7184 /* 6857 */ // Label 379: @6857
7185 /* 6857 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6868), // Rule ID 345 //
7186 /* 6862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7187 /* 6865 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
7188 /* 6865 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7189 /* 6868 */ // Label 380: @6868
7190 /* 6868 */ GIM_Reject,
7191 /* 6869 */ // Label 54: @6869
7192 /* 6869 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6880), // Rule ID 281 //
7193 /* 6874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7194 /* 6877 */ // Combiner Rule #189: mulh_to_lshr; wip_match_opcode 'G_UMULH'
7195 /* 6877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7196 /* 6880 */ // Label 381: @6880
7197 /* 6880 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6891), // Rule ID 346 //
7198 /* 6885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7199 /* 6888 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
7200 /* 6888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7201 /* 6891 */ // Label 382: @6891
7202 /* 6891 */ GIM_Reject,
7203 /* 6892 */ // Label 55: @6892
7204 /* 6892 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6903), // Rule ID 347 //
7205 /* 6897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7206 /* 6900 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
7207 /* 6900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7208 /* 6903 */ // Label 383: @6903
7209 /* 6903 */ GIM_Reject,
7210 /* 6904 */ // Label 56: @6904
7211 /* 6904 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6915), // Rule ID 348 //
7212 /* 6909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7213 /* 6912 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
7214 /* 6912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7215 /* 6915 */ // Label 384: @6915
7216 /* 6915 */ GIM_Reject,
7217 /* 6916 */ // Label 57: @6916
7218 /* 6916 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6927), // Rule ID 349 //
7219 /* 6921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7220 /* 6924 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
7221 /* 6924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7222 /* 6927 */ // Label 385: @6927
7223 /* 6927 */ GIM_Reject,
7224 /* 6928 */ // Label 58: @6928
7225 /* 6928 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6939), // Rule ID 222 //
7226 /* 6933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
7227 /* 6936 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
7228 /* 6936 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7229 /* 6939 */ // Label 386: @6939
7230 /* 6939 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6950), // Rule ID 226 //
7231 /* 6944 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
7232 /* 6947 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
7233 /* 6947 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7234 /* 6950 */ // Label 387: @6950
7235 /* 6950 */ GIM_Reject,
7236 /* 6951 */ // Label 59: @6951
7237 /* 6951 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6962), // Rule ID 221 //
7238 /* 6956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
7239 /* 6959 */ // Combiner Rule #166: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
7240 /* 6959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7241 /* 6962 */ // Label 388: @6962
7242 /* 6962 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6973), // Rule ID 227 //
7243 /* 6967 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
7244 /* 6970 */ // Combiner Rule #167: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
7245 /* 6970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7246 /* 6973 */ // Label 389: @6973
7247 /* 6973 */ GIM_Reject,
7248 /* 6974 */ // Label 60: @6974
7249 /* 6974 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6985), // Rule ID 350 //
7250 /* 6979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7251 /* 6982 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
7252 /* 6982 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7253 /* 6985 */ // Label 390: @6985
7254 /* 6985 */ GIM_Reject,
7255 /* 6986 */ // Label 61: @6986
7256 /* 6986 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6997), // Rule ID 351 //
7257 /* 6991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7258 /* 6994 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
7259 /* 6994 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7260 /* 6997 */ // Label 391: @6997
7261 /* 6997 */ GIM_Reject,
7262 /* 6998 */ // Label 62: @6998
7263 /* 6998 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(7009), // Rule ID 352 //
7264 /* 7003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7265 /* 7006 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
7266 /* 7006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7267 /* 7009 */ // Label 392: @7009
7268 /* 7009 */ GIM_Reject,
7269 /* 7010 */ // Label 63: @7010
7270 /* 7010 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(7021), // Rule ID 353 //
7271 /* 7015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7272 /* 7018 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
7273 /* 7018 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7274 /* 7021 */ // Label 393: @7021
7275 /* 7021 */ GIM_Reject,
7276 /* 7022 */ // Label 64: @7022
7277 /* 7022 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(7033), // Rule ID 271 //
7278 /* 7027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7279 /* 7030 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
7280 /* 7030 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7281 /* 7033 */ // Label 394: @7033
7282 /* 7033 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(7044), // Rule ID 282 //
7283 /* 7038 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7284 /* 7041 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FADD'
7285 /* 7041 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7286 /* 7044 */ // Label 395: @7044
7287 /* 7044 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(7055), // Rule ID 289 //
7288 /* 7049 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
7289 /* 7052 */ // Combiner Rule #192: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7290 /* 7052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
7291 /* 7055 */ // Label 396: @7055
7292 /* 7055 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(7066), // Rule ID 290 //
7293 /* 7060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
7294 /* 7063 */ // Combiner Rule #193: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7295 /* 7063 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
7296 /* 7066 */ // Label 397: @7066
7297 /* 7066 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(7077), // Rule ID 291 //
7298 /* 7071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7299 /* 7074 */ // Combiner Rule #194: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7300 /* 7074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7301 /* 7077 */ // Label 398: @7077
7302 /* 7077 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(7088), // Rule ID 292 //
7303 /* 7082 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7304 /* 7085 */ // Combiner Rule #195: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7305 /* 7085 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7306 /* 7088 */ // Label 399: @7088
7307 /* 7088 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(7099), // Rule ID 315 //
7308 /* 7093 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7309 /* 7096 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FADD'
7310 /* 7096 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7311 /* 7099 */ // Label 400: @7099
7312 /* 7099 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(7110), // Rule ID 354 //
7313 /* 7104 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7314 /* 7107 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
7315 /* 7107 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7316 /* 7110 */ // Label 401: @7110
7317 /* 7110 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(7133), // Rule ID 147 //
7318 /* 7115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
7319 /* 7118 */ // MIs[0] dst
7320 /* 7118 */ // No operand predicates
7321 /* 7118 */ // MIs[0] x
7322 /* 7118 */ // No operand predicates
7323 /* 7118 */ // MIs[0] y
7324 /* 7118 */ // No operand predicates
7325 /* 7118 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
7326 /* 7122 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7327 /* 7127 */ // Combiner Rule #107: right_identity_neg_zero_fp
7328 /* 7127 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7329 /* 7132 */ GIR_EraseRootFromParent_Done,
7330 /* 7133 */ // Label 402: @7133
7331 /* 7133 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(7162), // Rule ID 148 //
7332 /* 7138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
7333 /* 7141 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
7334 /* 7147 */ // MIs[0] dst
7335 /* 7147 */ // No operand predicates
7336 /* 7147 */ // MIs[0] x
7337 /* 7147 */ // No operand predicates
7338 /* 7147 */ // MIs[0] y
7339 /* 7147 */ // No operand predicates
7340 /* 7147 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7341 /* 7151 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7342 /* 7156 */ // Combiner Rule #108: right_identity_neg_zero_fp_nsz
7343 /* 7156 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7344 /* 7161 */ GIR_EraseRootFromParent_Done,
7345 /* 7162 */ // Label 403: @7162
7346 /* 7162 */ GIM_Reject,
7347 /* 7163 */ // Label 65: @7163
7348 /* 7163 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(7174), // Rule ID 272 //
7349 /* 7168 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7350 /* 7171 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
7351 /* 7171 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7352 /* 7174 */ // Label 404: @7174
7353 /* 7174 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(7185), // Rule ID 283 //
7354 /* 7179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7355 /* 7182 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FSUB'
7356 /* 7182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7357 /* 7185 */ // Label 405: @7185
7358 /* 7185 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(7196), // Rule ID 293 //
7359 /* 7190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
7360 /* 7193 */ // Combiner Rule #196: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7361 /* 7193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7362 /* 7196 */ // Label 406: @7196
7363 /* 7196 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(7207), // Rule ID 294 //
7364 /* 7201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7365 /* 7204 */ // Combiner Rule #197: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7366 /* 7204 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7367 /* 7207 */ // Label 407: @7207
7368 /* 7207 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(7218), // Rule ID 295 //
7369 /* 7212 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
7370 /* 7215 */ // Combiner Rule #198: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7371 /* 7215 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7372 /* 7218 */ // Label 408: @7218
7373 /* 7218 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(7229), // Rule ID 296 //
7374 /* 7223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
7375 /* 7226 */ // Combiner Rule #199: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7376 /* 7226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7377 /* 7229 */ // Label 409: @7229
7378 /* 7229 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(7240), // Rule ID 316 //
7379 /* 7234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7380 /* 7237 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FSUB'
7381 /* 7237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7382 /* 7240 */ // Label 410: @7240
7383 /* 7240 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(7251), // Rule ID 332 //
7384 /* 7245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
7385 /* 7248 */ // Combiner Rule #210: fsub_to_fneg; wip_match_opcode 'G_FSUB'
7386 /* 7248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
7387 /* 7251 */ // Label 411: @7251
7388 /* 7251 */ GIM_Reject,
7389 /* 7252 */ // Label 66: @7252
7390 /* 7252 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(7263), // Rule ID 273 //
7391 /* 7257 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7392 /* 7260 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
7393 /* 7260 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7394 /* 7263 */ // Label 412: @7263
7395 /* 7263 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(7274), // Rule ID 284 //
7396 /* 7268 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7397 /* 7271 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FMUL'
7398 /* 7271 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7399 /* 7274 */ // Label 413: @7274
7400 /* 7274 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(7285), // Rule ID 314 //
7401 /* 7279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7402 /* 7282 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMUL'
7403 /* 7282 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7404 /* 7285 */ // Label 414: @7285
7405 /* 7285 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(7296), // Rule ID 355 //
7406 /* 7290 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7407 /* 7293 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
7408 /* 7293 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7409 /* 7296 */ // Label 415: @7296
7410 /* 7296 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(7317), // Rule ID 401 //
7411 /* 7301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
7412 /* 7304 */ // MIs[0] dst
7413 /* 7304 */ // No operand predicates
7414 /* 7304 */ // MIs[0] x
7415 /* 7304 */ // No operand predicates
7416 /* 7304 */ // MIs[0] select
7417 /* 7304 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7418 /* 7308 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7419 /* 7312 */ // MIs[1] y
7420 /* 7312 */ // No operand predicates
7421 /* 7312 */ // MIs[1] A
7422 /* 7312 */ // No operand predicates
7423 /* 7312 */ // MIs[1] B
7424 /* 7312 */ // No operand predicates
7425 /* 7312 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7426 /* 7314 */ // Combiner Rule #247: combine_fmul_with_select_to_fldexp
7427 /* 7314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
7428 /* 7317 */ // Label 416: @7317
7429 /* 7317 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(7340), // Rule ID 138 //
7430 /* 7322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
7431 /* 7325 */ // MIs[0] dst
7432 /* 7325 */ // No operand predicates
7433 /* 7325 */ // MIs[0] x
7434 /* 7325 */ // No operand predicates
7435 /* 7325 */ // MIs[0] y
7436 /* 7325 */ // No operand predicates
7437 /* 7325 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7438 /* 7329 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7439 /* 7334 */ // Combiner Rule #100: right_identity_one_fp
7440 /* 7334 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7441 /* 7339 */ GIR_EraseRootFromParent_Done,
7442 /* 7340 */ // Label 417: @7340
7443 /* 7340 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(7360), // Rule ID 149 //
7444 /* 7345 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
7445 /* 7348 */ // MIs[0] dst
7446 /* 7348 */ // No operand predicates
7447 /* 7348 */ // MIs[0] x
7448 /* 7348 */ // No operand predicates
7449 /* 7348 */ // MIs[0] y
7450 /* 7348 */ // No operand predicates
7451 /* 7348 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
7452 /* 7352 */ // Combiner Rule #109: right_identity_neg_one_fp
7453 /* 7352 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
7454 /* 7355 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7455 /* 7357 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7456 /* 7359 */ GIR_EraseRootFromParent_Done,
7457 /* 7360 */ // Label 418: @7360
7458 /* 7360 */ GIM_Reject,
7459 /* 7361 */ // Label 67: @7361
7460 /* 7361 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(7372), // Rule ID 276 //
7461 /* 7366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7462 /* 7369 */ // Combiner Rule #186: constant_fold_fma; wip_match_opcode 'G_FMA'
7463 /* 7369 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7464 /* 7372 */ // Label 419: @7372
7465 /* 7372 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(7383), // Rule ID 287 //
7466 /* 7377 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7467 /* 7380 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FMA'
7468 /* 7380 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7469 /* 7383 */ // Label 420: @7383
7470 /* 7383 */ GIM_Reject,
7471 /* 7384 */ // Label 68: @7384
7472 /* 7384 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(7395), // Rule ID 275 //
7473 /* 7389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7474 /* 7392 */ // Combiner Rule #186: constant_fold_fma; wip_match_opcode 'G_FMAD'
7475 /* 7392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7476 /* 7395 */ // Label 421: @7395
7477 /* 7395 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(7406), // Rule ID 286 //
7478 /* 7400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7479 /* 7403 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FMAD'
7480 /* 7403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7481 /* 7406 */ // Label 422: @7406
7482 /* 7406 */ GIM_Reject,
7483 /* 7407 */ // Label 69: @7407
7484 /* 7407 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7418), // Rule ID 274 //
7485 /* 7412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7486 /* 7415 */ // Combiner Rule #185: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
7487 /* 7415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7488 /* 7418 */ // Label 423: @7418
7489 /* 7418 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7429), // Rule ID 285 //
7490 /* 7423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7491 /* 7426 */ // Combiner Rule #190: redundant_neg_operands; wip_match_opcode 'G_FDIV'
7492 /* 7426 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7493 /* 7429 */ // Label 424: @7429
7494 /* 7429 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7440), // Rule ID 317 //
7495 /* 7434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7496 /* 7437 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FDIV'
7497 /* 7437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7498 /* 7440 */ // Label 425: @7440
7499 /* 7440 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7451), // Rule ID 329 //
7500 /* 7445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7501 /* 7448 */ // MIs[0] dst
7502 /* 7448 */ // No operand predicates
7503 /* 7448 */ // MIs[0] src1
7504 /* 7448 */ // No operand predicates
7505 /* 7448 */ // MIs[0] src2
7506 /* 7448 */ // No operand predicates
7507 /* 7448 */ // Combiner Rule #207: fdiv_repeated_divison
7508 /* 7448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7509 /* 7451 */ // Label 426: @7451
7510 /* 7451 */ GIM_Reject,
7511 /* 7452 */ // Label 70: @7452
7512 /* 7452 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7463), // Rule ID 318 //
7513 /* 7457 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7514 /* 7460 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FREM'
7515 /* 7460 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7516 /* 7463 */ // Label 427: @7463
7517 /* 7463 */ GIM_Reject,
7518 /* 7464 */ // Label 71: @7464
7519 /* 7464 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7485), // Rule ID 215 //
7520 /* 7469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7521 /* 7472 */ // MIs[0] dst
7522 /* 7472 */ // No operand predicates
7523 /* 7472 */ // MIs[0] float
7524 /* 7472 */ // No operand predicates
7525 /* 7472 */ // MIs[0] int
7526 /* 7472 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7527 /* 7476 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7528 /* 7480 */ // MIs[1] imm
7529 /* 7480 */ // No operand predicates
7530 /* 7480 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7531 /* 7482 */ // Combiner Rule #163: expand_const_fpowi
7532 /* 7482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7533 /* 7485 */ // Label 428: @7485
7534 /* 7485 */ GIM_Reject,
7535 /* 7486 */ // Label 72: @7486
7536 /* 7486 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7507), // Rule ID 189 //
7537 /* 7491 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
7538 /* 7494 */ // MIs[0] dst
7539 /* 7494 */ // No operand predicates
7540 /* 7494 */ // MIs[0] src0
7541 /* 7494 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7542 /* 7498 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7543 /* 7502 */ // MIs[1] cst
7544 /* 7502 */ // No operand predicates
7545 /* 7502 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7546 /* 7504 */ // Combiner Rule #145: constant_fold_flog2
7547 /* 7504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7548 /* 7507 */ // Label 429: @7507
7549 /* 7507 */ GIM_Reject,
7550 /* 7508 */ // Label 73: @7508
7551 /* 7508 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7519), // Rule ID 403 //
7552 /* 7513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
7553 /* 7516 */ // Combiner Rule #249: foldable_fneg; wip_match_opcode 'G_FNEG'
7554 /* 7516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
7555 /* 7519 */ // Label 430: @7519
7556 /* 7519 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7540), // Rule ID 186 //
7557 /* 7524 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7558 /* 7527 */ // MIs[0] dst
7559 /* 7527 */ // No operand predicates
7560 /* 7527 */ // MIs[0] src0
7561 /* 7527 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7562 /* 7531 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7563 /* 7535 */ // MIs[1] cst
7564 /* 7535 */ // No operand predicates
7565 /* 7535 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7566 /* 7537 */ // Combiner Rule #142: constant_fold_fneg
7567 /* 7537 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7568 /* 7540 */ // Label 431: @7540
7569 /* 7540 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7569), // Rule ID 136 //
7570 /* 7545 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
7571 /* 7548 */ // MIs[0] dst
7572 /* 7548 */ // No operand predicates
7573 /* 7548 */ // MIs[0] t
7574 /* 7548 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7575 /* 7552 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7576 /* 7556 */ // MIs[1] src
7577 /* 7556 */ // No operand predicates
7578 /* 7556 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7579 /* 7561 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7580 /* 7563 */ // Combiner Rule #98: fneg_fneg_fold
7581 /* 7563 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7582 /* 7568 */ GIR_EraseRootFromParent_Done,
7583 /* 7569 */ // Label 432: @7569
7584 /* 7569 */ GIM_Reject,
7585 /* 7570 */ // Label 74: @7570
7586 /* 7570 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7591), // Rule ID 191 //
7587 /* 7575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
7588 /* 7578 */ // MIs[0] dst
7589 /* 7578 */ // No operand predicates
7590 /* 7578 */ // MIs[0] src0
7591 /* 7578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7592 /* 7582 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7593 /* 7586 */ // MIs[1] cst
7594 /* 7586 */ // No operand predicates
7595 /* 7586 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7596 /* 7588 */ // Combiner Rule #147: constant_fold_fpext
7597 /* 7588 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7598 /* 7591 */ // Label 433: @7591
7599 /* 7591 */ GIM_Reject,
7600 /* 7592 */ // Label 75: @7592
7601 /* 7592 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7613), // Rule ID 190 //
7602 /* 7597 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
7603 /* 7600 */ // MIs[0] dst
7604 /* 7600 */ // No operand predicates
7605 /* 7600 */ // MIs[0] src0
7606 /* 7600 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7607 /* 7604 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7608 /* 7608 */ // MIs[1] cst
7609 /* 7608 */ // No operand predicates
7610 /* 7608 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7611 /* 7610 */ // Combiner Rule #146: constant_fold_fptrunc
7612 /* 7610 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7613 /* 7613 */ // Label 434: @7613
7614 /* 7613 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7634), // Rule ID 146 //
7615 /* 7618 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7616 /* 7621 */ // MIs[0] dst
7617 /* 7621 */ // No operand predicates
7618 /* 7621 */ // MIs[0] src1
7619 /* 7621 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7620 /* 7625 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7621 /* 7629 */ // MIs[1] src0
7622 /* 7629 */ // No operand predicates
7623 /* 7629 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7624 /* 7631 */ // Combiner Rule #106: fptrunc_fpext_fold
7625 /* 7631 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7626 /* 7634 */ // Label 435: @7634
7627 /* 7634 */ GIM_Reject,
7628 /* 7635 */ // Label 76: @7635
7629 /* 7635 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7656), // Rule ID 98 //
7630 /* 7640 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7631 /* 7643 */ // MIs[0] dst
7632 /* 7643 */ // No operand predicates
7633 /* 7643 */ // MIs[0] __unary_undef_to_undef_match_0.x
7634 /* 7643 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7635 /* 7647 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7636 /* 7651 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7637 /* 7653 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7638 /* 7653 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7639 /* 7656 */ // Label 436: @7656
7640 /* 7656 */ GIM_Reject,
7641 /* 7657 */ // Label 77: @7657
7642 /* 7657 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7678), // Rule ID 99 //
7643 /* 7662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7644 /* 7665 */ // MIs[0] dst
7645 /* 7665 */ // No operand predicates
7646 /* 7665 */ // MIs[0] __unary_undef_to_undef_match_0.x
7647 /* 7665 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7648 /* 7669 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7649 /* 7673 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7650 /* 7675 */ // Combiner Rule #83: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7651 /* 7675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7652 /* 7678 */ // Label 437: @7678
7653 /* 7678 */ GIM_Reject,
7654 /* 7679 */ // Label 78: @7679
7655 /* 7679 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7690), // Rule ID 82 //
7656 /* 7684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
7657 /* 7687 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7658 /* 7687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7659 /* 7690 */ // Label 438: @7690
7660 /* 7690 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7705), // Rule ID 199 //
7661 /* 7695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
7662 /* 7698 */ // MIs[0] dst
7663 /* 7698 */ // No operand predicates
7664 /* 7698 */ // MIs[0] Operand 1
7665 /* 7698 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7666 /* 7702 */ // Combiner Rule #155: itof_const_zero_fold_si
7667 /* 7702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7668 /* 7705 */ // Label 439: @7705
7669 /* 7705 */ GIM_Reject,
7670 /* 7706 */ // Label 79: @7706
7671 /* 7706 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7717), // Rule ID 81 //
7672 /* 7711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
7673 /* 7714 */ // Combiner Rule #77: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7674 /* 7714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7675 /* 7717 */ // Label 440: @7717
7676 /* 7717 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7732), // Rule ID 200 //
7677 /* 7722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
7678 /* 7725 */ // MIs[0] dst
7679 /* 7725 */ // No operand predicates
7680 /* 7725 */ // MIs[0] Operand 1
7681 /* 7725 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7682 /* 7729 */ // Combiner Rule #156: itof_const_zero_fold_ui
7683 /* 7729 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7684 /* 7732 */ // Label 441: @7732
7685 /* 7732 */ GIM_Reject,
7686 /* 7733 */ // Label 80: @7733
7687 /* 7733 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7762), // Rule ID 25 //
7688 /* 7738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7689 /* 7741 */ // MIs[0] dst
7690 /* 7741 */ // No operand predicates
7691 /* 7741 */ // MIs[0] src
7692 /* 7741 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7693 /* 7745 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7694 /* 7749 */ // MIs[1] __idempotent_prop_match_0.x
7695 /* 7749 */ // No operand predicates
7696 /* 7749 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7697 /* 7754 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7698 /* 7756 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
7699 /* 7756 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7700 /* 7761 */ GIR_EraseRootFromParent_Done,
7701 /* 7762 */ // Label 442: @7762
7702 /* 7762 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7783), // Rule ID 187 //
7703 /* 7767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
7704 /* 7770 */ // MIs[0] dst
7705 /* 7770 */ // No operand predicates
7706 /* 7770 */ // MIs[0] src0
7707 /* 7770 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7708 /* 7774 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7709 /* 7778 */ // MIs[1] cst
7710 /* 7778 */ // No operand predicates
7711 /* 7778 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7712 /* 7780 */ // Combiner Rule #143: constant_fold_fabs
7713 /* 7780 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7714 /* 7783 */ // Label 443: @7783
7715 /* 7783 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7811), // Rule ID 280 //
7716 /* 7788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
7717 /* 7791 */ // MIs[0] dst
7718 /* 7791 */ // No operand predicates
7719 /* 7791 */ // MIs[0] tmp
7720 /* 7791 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7721 /* 7795 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7722 /* 7799 */ // MIs[1] x
7723 /* 7799 */ // No operand predicates
7724 /* 7799 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7725 /* 7801 */ // Combiner Rule #188: fabs_fneg_fold
7726 /* 7801 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7727 /* 7804 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7728 /* 7806 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7729 /* 7810 */ GIR_EraseRootFromParent_Done,
7730 /* 7811 */ // Label 444: @7811
7731 /* 7811 */ GIM_Reject,
7732 /* 7812 */ // Label 81: @7812
7733 /* 7812 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7841), // Rule ID 26 //
7734 /* 7817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7735 /* 7820 */ // MIs[0] dst
7736 /* 7820 */ // No operand predicates
7737 /* 7820 */ // MIs[0] src
7738 /* 7820 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7739 /* 7824 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7740 /* 7828 */ // MIs[1] __idempotent_prop_match_0.x
7741 /* 7828 */ // No operand predicates
7742 /* 7828 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7743 /* 7833 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7744 /* 7835 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
7745 /* 7835 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7746 /* 7840 */ GIR_EraseRootFromParent_Done,
7747 /* 7841 */ // Label 445: @7841
7748 /* 7841 */ GIM_Reject,
7749 /* 7842 */ // Label 82: @7842
7750 /* 7842 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7853), // Rule ID 211 //
7751 /* 7847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7752 /* 7850 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7753 /* 7850 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7754 /* 7853 */ // Label 446: @7853
7755 /* 7853 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7864), // Rule ID 319 //
7756 /* 7858 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7757 /* 7861 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7758 /* 7861 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7759 /* 7864 */ // Label 447: @7864
7760 /* 7864 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7875), // Rule ID 356 //
7761 /* 7869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7762 /* 7872 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7763 /* 7872 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7764 /* 7875 */ // Label 448: @7875
7765 /* 7875 */ GIM_Reject,
7766 /* 7876 */ // Label 83: @7876
7767 /* 7876 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7887), // Rule ID 212 //
7768 /* 7881 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7769 /* 7884 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7770 /* 7884 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7771 /* 7887 */ // Label 449: @7887
7772 /* 7887 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7898), // Rule ID 320 //
7773 /* 7892 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7774 /* 7895 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7775 /* 7895 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7776 /* 7898 */ // Label 450: @7898
7777 /* 7898 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7909), // Rule ID 357 //
7778 /* 7903 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7779 /* 7906 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7780 /* 7906 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7781 /* 7909 */ // Label 451: @7909
7782 /* 7909 */ GIM_Reject,
7783 /* 7910 */ // Label 84: @7910
7784 /* 7910 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7921), // Rule ID 358 //
7785 /* 7915 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7786 /* 7918 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7787 /* 7918 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7788 /* 7921 */ // Label 452: @7921
7789 /* 7921 */ GIM_Reject,
7790 /* 7922 */ // Label 85: @7922
7791 /* 7922 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7933), // Rule ID 359 //
7792 /* 7927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7793 /* 7930 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7794 /* 7930 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7795 /* 7933 */ // Label 453: @7933
7796 /* 7933 */ GIM_Reject,
7797 /* 7934 */ // Label 86: @7934
7798 /* 7934 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7945), // Rule ID 213 //
7799 /* 7939 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7800 /* 7942 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7801 /* 7942 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7802 /* 7945 */ // Label 454: @7945
7803 /* 7945 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7956), // Rule ID 321 //
7804 /* 7950 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7805 /* 7953 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7806 /* 7953 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7807 /* 7956 */ // Label 455: @7956
7808 /* 7956 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7967), // Rule ID 360 //
7809 /* 7961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7810 /* 7964 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7811 /* 7964 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7812 /* 7967 */ // Label 456: @7967
7813 /* 7967 */ GIM_Reject,
7814 /* 7968 */ // Label 87: @7968
7815 /* 7968 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7979), // Rule ID 214 //
7816 /* 7973 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7817 /* 7976 */ // Combiner Rule #162: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7818 /* 7976 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7819 /* 7979 */ // Label 457: @7979
7820 /* 7979 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7990), // Rule ID 322 //
7821 /* 7984 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7822 /* 7987 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7823 /* 7987 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7824 /* 7990 */ // Label 458: @7990
7825 /* 7990 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(8001), // Rule ID 361 //
7826 /* 7995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
7827 /* 7998 */ // Combiner Rule #212: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7828 /* 7998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7829 /* 8001 */ // Label 459: @8001
7830 /* 8001 */ GIM_Reject,
7831 /* 8002 */ // Label 88: @8002
7832 /* 8002 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(8013), // Rule ID 158 //
7833 /* 8007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
7834 /* 8010 */ // Combiner Rule #114: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7835 /* 8010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7836 /* 8013 */ // Label 460: @8013
7837 /* 8013 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(8024), // Rule ID 160 //
7838 /* 8018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
7839 /* 8021 */ // Combiner Rule #116: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7840 /* 8021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7841 /* 8024 */ // Label 461: @8024
7842 /* 8024 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(8035), // Rule ID 201 //
7843 /* 8029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7844 /* 8032 */ // Combiner Rule #157: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7845 /* 8032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7846 /* 8035 */ // Label 462: @8035
7847 /* 8035 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(8046), // Rule ID 217 //
7848 /* 8040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
7849 /* 8043 */ // Combiner Rule #165: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7850 /* 8043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7851 /* 8046 */ // Label 463: @8046
7852 /* 8046 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(8057), // Rule ID 254 //
7853 /* 8051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7854 /* 8054 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7855 /* 8054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7856 /* 8057 */ // Label 464: @8057
7857 /* 8057 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(8068), // Rule ID 299 //
7858 /* 8062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7859 /* 8065 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7860 /* 8065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7861 /* 8068 */ // Label 465: @8068
7862 /* 8068 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(8091), // Rule ID 117 //
7863 /* 8073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
7864 /* 8076 */ // MIs[0] dst
7865 /* 8076 */ // No operand predicates
7866 /* 8076 */ // MIs[0] lhs
7867 /* 8076 */ // No operand predicates
7868 /* 8076 */ // MIs[0] Operand 2
7869 /* 8076 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7870 /* 8080 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7871 /* 8085 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
7872 /* 8085 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7873 /* 8090 */ GIR_EraseRootFromParent_Done,
7874 /* 8091 */ // Label 466: @8091
7875 /* 8091 */ GIM_Reject,
7876 /* 8092 */ // Label 89: @8092
7877 /* 8092 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(8103), // Rule ID 267 //
7878 /* 8097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7879 /* 8100 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SMIN'
7880 /* 8100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7881 /* 8103 */ // Label 467: @8103
7882 /* 8103 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(8114), // Rule ID 310 //
7883 /* 8108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7884 /* 8111 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7885 /* 8111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7886 /* 8114 */ // Label 468: @8114
7887 /* 8114 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(8125), // Rule ID 338 //
7888 /* 8119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7889 /* 8122 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7890 /* 8122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7891 /* 8125 */ // Label 469: @8125
7892 /* 8125 */ GIM_Reject,
7893 /* 8126 */ // Label 90: @8126
7894 /* 8126 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(8137), // Rule ID 268 //
7895 /* 8131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7896 /* 8134 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_SMAX'
7897 /* 8134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7898 /* 8137 */ // Label 470: @8137
7899 /* 8137 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(8148), // Rule ID 311 //
7900 /* 8142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7901 /* 8145 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7902 /* 8145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7903 /* 8148 */ // Label 471: @8148
7904 /* 8148 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(8159), // Rule ID 339 //
7905 /* 8153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7906 /* 8156 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7907 /* 8156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7908 /* 8159 */ // Label 472: @8159
7909 /* 8159 */ GIM_Reject,
7910 /* 8160 */ // Label 91: @8160
7911 /* 8160 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(8171), // Rule ID 269 //
7912 /* 8165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7913 /* 8168 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UMIN'
7914 /* 8168 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7915 /* 8171 */ // Label 473: @8171
7916 /* 8171 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(8182), // Rule ID 312 //
7917 /* 8176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7918 /* 8179 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7919 /* 8179 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7920 /* 8182 */ // Label 474: @8182
7921 /* 8182 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(8193), // Rule ID 340 //
7922 /* 8187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7923 /* 8190 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7924 /* 8190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7925 /* 8193 */ // Label 475: @8193
7926 /* 8193 */ GIM_Reject,
7927 /* 8194 */ // Label 92: @8194
7928 /* 8194 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(8205), // Rule ID 270 //
7929 /* 8199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
7930 /* 8202 */ // Combiner Rule #184: constant_fold_binop; wip_match_opcode 'G_UMAX'
7931 /* 8202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7932 /* 8205 */ // Label 476: @8205
7933 /* 8205 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(8216), // Rule ID 313 //
7934 /* 8210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
7935 /* 8213 */ // Combiner Rule #200: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7936 /* 8213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7937 /* 8216 */ // Label 477: @8216
7938 /* 8216 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(8227), // Rule ID 341 //
7939 /* 8221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
7940 /* 8224 */ // Combiner Rule #211: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7941 /* 8224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7942 /* 8227 */ // Label 478: @8227
7943 /* 8227 */ GIM_Reject,
7944 /* 8228 */ // Label 93: @8228
7945 /* 8228 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(8239), // Rule ID 92 //
7946 /* 8233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7947 /* 8236 */ // Combiner Rule #82: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7948 /* 8236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7949 /* 8239 */ // Label 479: @8239
7950 /* 8239 */ GIM_Reject,
7951 /* 8240 */ // Label 94: @8240
7952 /* 8240 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(8251), // Rule ID 185 //
7953 /* 8245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
7954 /* 8248 */ // Combiner Rule #141: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7955 /* 8248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7956 /* 8251 */ // Label 480: @8251
7957 /* 8251 */ GIM_Reject,
7958 /* 8252 */ // Label 95: @8252
7959 /* 8252 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(8263), // Rule ID 32 //
7960 /* 8257 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
7961 /* 8260 */ // Combiner Rule #30: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7962 /* 8260 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7963 /* 8263 */ // Label 481: @8263
7964 /* 8263 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(8274), // Rule ID 73 //
7965 /* 8268 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
7966 /* 8271 */ // Combiner Rule #71: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7967 /* 8271 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7968 /* 8274 */ // Label 482: @8274
7969 /* 8274 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(8285), // Rule ID 107 //
7970 /* 8279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
7971 /* 8282 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7972 /* 8282 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7973 /* 8285 */ // Label 483: @8285
7974 /* 8285 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(8324), // Rule ID 44 //
7975 /* 8290 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
7976 /* 8293 */ // MIs[0] root
7977 /* 8293 */ // No operand predicates
7978 /* 8293 */ // MIs[0] src
7979 /* 8293 */ // No operand predicates
7980 /* 8293 */ // MIs[0] elt
7981 /* 8293 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7982 /* 8297 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
7983 /* 8301 */ // MIs[1] src
7984 /* 8301 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7985 /* 8306 */ // MIs[1] idx
7986 /* 8306 */ // No operand predicates
7987 /* 8306 */ // MIs[0] idx
7988 /* 8306 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
7989 /* 8311 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7990 /* 8316 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7991 /* 8318 */ // Combiner Rule #42: insert_vector_element_extract_vector_element
7992 /* 8318 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7993 /* 8323 */ GIR_EraseRootFromParent_Done,
7994 /* 8324 */ // Label 484: @8324
7995 /* 8324 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8357), // Rule ID 30 //
7996 /* 8329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
7997 /* 8332 */ // MIs[0] root
7998 /* 8332 */ // No operand predicates
7999 /* 8332 */ // MIs[0] src
8000 /* 8332 */ // No operand predicates
8001 /* 8332 */ // MIs[0] elt
8002 /* 8332 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8003 /* 8336 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8004 /* 8340 */ // MIs[0] idx
8005 /* 8340 */ // No operand predicates
8006 /* 8340 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
8007 /* 8344 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8008 /* 8349 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8009 /* 8351 */ // Combiner Rule #28: insert_vector_element_elt_undef
8010 /* 8351 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8011 /* 8356 */ GIR_EraseRootFromParent_Done,
8012 /* 8357 */ // Label 485: @8357
8013 /* 8357 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8381), // Rule ID 29 //
8014 /* 8362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
8015 /* 8365 */ // MIs[0] root
8016 /* 8365 */ // No operand predicates
8017 /* 8365 */ // MIs[0] src
8018 /* 8365 */ // No operand predicates
8019 /* 8365 */ // MIs[0] elt
8020 /* 8365 */ // No operand predicates
8021 /* 8365 */ // MIs[0] idx
8022 /* 8365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
8023 /* 8369 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8024 /* 8373 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8025 /* 8375 */ // Combiner Rule #27: insert_vector_element_idx_undef
8026 /* 8375 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8027 /* 8378 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8028 /* 8380 */ GIR_EraseRootFromParent_Done,
8029 /* 8381 */ // Label 486: @8381
8030 /* 8381 */ GIM_Reject,
8031 /* 8382 */ // Label 96: @8382
8032 /* 8382 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8393), // Rule ID 31 //
8033 /* 8387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
8034 /* 8390 */ // Combiner Rule #29: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8035 /* 8390 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
8036 /* 8393 */ // Label 487: @8393
8037 /* 8393 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8404), // Rule ID 74 //
8038 /* 8398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
8039 /* 8401 */ // Combiner Rule #72: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8040 /* 8401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
8041 /* 8404 */ // Label 488: @8404
8042 /* 8404 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8415), // Rule ID 80 //
8043 /* 8409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
8044 /* 8412 */ // Combiner Rule #76: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8045 /* 8412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
8046 /* 8415 */ // Label 489: @8415
8047 /* 8415 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8426), // Rule ID 108 //
8048 /* 8420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8049 /* 8423 */ // Combiner Rule #88: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
8050 /* 8423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
8051 /* 8426 */ // Label 490: @8426
8052 /* 8426 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8450), // Rule ID 42 //
8053 /* 8431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
8054 /* 8434 */ // MIs[0] root
8055 /* 8434 */ // No operand predicates
8056 /* 8434 */ // MIs[0] src
8057 /* 8434 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8058 /* 8438 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8059 /* 8442 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
8060 /* 8445 */ // MIs[1] x
8061 /* 8445 */ // No operand predicates
8062 /* 8445 */ // MIs[1] y
8063 /* 8445 */ // No operand predicates
8064 /* 8445 */ // MIs[1] z
8065 /* 8445 */ // No operand predicates
8066 /* 8445 */ // MIs[1] a
8067 /* 8445 */ // No operand predicates
8068 /* 8445 */ // MIs[1] b
8069 /* 8445 */ // No operand predicates
8070 /* 8445 */ // MIs[1] c
8071 /* 8445 */ // No operand predicates
8072 /* 8445 */ // MIs[1] d
8073 /* 8445 */ // No operand predicates
8074 /* 8445 */ // MIs[1] e
8075 /* 8445 */ // No operand predicates
8076 /* 8445 */ // MIs[0] idx
8077 /* 8445 */ // No operand predicates
8078 /* 8445 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8079 /* 8447 */ // Combiner Rule #40: extract_vector_element_build_vector_trunc8
8080 /* 8447 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8081 /* 8450 */ // Label 491: @8450
8082 /* 8450 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8474), // Rule ID 41 //
8083 /* 8455 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
8084 /* 8458 */ // MIs[0] root
8085 /* 8458 */ // No operand predicates
8086 /* 8458 */ // MIs[0] src
8087 /* 8458 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8088 /* 8462 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8089 /* 8466 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
8090 /* 8469 */ // MIs[1] x
8091 /* 8469 */ // No operand predicates
8092 /* 8469 */ // MIs[1] y
8093 /* 8469 */ // No operand predicates
8094 /* 8469 */ // MIs[1] z
8095 /* 8469 */ // No operand predicates
8096 /* 8469 */ // MIs[1] a
8097 /* 8469 */ // No operand predicates
8098 /* 8469 */ // MIs[1] b
8099 /* 8469 */ // No operand predicates
8100 /* 8469 */ // MIs[1] c
8101 /* 8469 */ // No operand predicates
8102 /* 8469 */ // MIs[1] d
8103 /* 8469 */ // No operand predicates
8104 /* 8469 */ // MIs[0] idx
8105 /* 8469 */ // No operand predicates
8106 /* 8469 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8107 /* 8471 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc7
8108 /* 8471 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8109 /* 8474 */ // Label 492: @8474
8110 /* 8474 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8498), // Rule ID 40 //
8111 /* 8479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
8112 /* 8482 */ // MIs[0] root
8113 /* 8482 */ // No operand predicates
8114 /* 8482 */ // MIs[0] src
8115 /* 8482 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8116 /* 8486 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8117 /* 8490 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
8118 /* 8493 */ // MIs[1] x
8119 /* 8493 */ // No operand predicates
8120 /* 8493 */ // MIs[1] y
8121 /* 8493 */ // No operand predicates
8122 /* 8493 */ // MIs[1] z
8123 /* 8493 */ // No operand predicates
8124 /* 8493 */ // MIs[1] a
8125 /* 8493 */ // No operand predicates
8126 /* 8493 */ // MIs[1] b
8127 /* 8493 */ // No operand predicates
8128 /* 8493 */ // MIs[1] c
8129 /* 8493 */ // No operand predicates
8130 /* 8493 */ // MIs[0] idx
8131 /* 8493 */ // No operand predicates
8132 /* 8493 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8133 /* 8495 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc6
8134 /* 8495 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8135 /* 8498 */ // Label 493: @8498
8136 /* 8498 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8522), // Rule ID 39 //
8137 /* 8503 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
8138 /* 8506 */ // MIs[0] root
8139 /* 8506 */ // No operand predicates
8140 /* 8506 */ // MIs[0] src
8141 /* 8506 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8142 /* 8510 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8143 /* 8514 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
8144 /* 8517 */ // MIs[1] x
8145 /* 8517 */ // No operand predicates
8146 /* 8517 */ // MIs[1] y
8147 /* 8517 */ // No operand predicates
8148 /* 8517 */ // MIs[1] z
8149 /* 8517 */ // No operand predicates
8150 /* 8517 */ // MIs[1] a
8151 /* 8517 */ // No operand predicates
8152 /* 8517 */ // MIs[1] b
8153 /* 8517 */ // No operand predicates
8154 /* 8517 */ // MIs[0] idx
8155 /* 8517 */ // No operand predicates
8156 /* 8517 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8157 /* 8519 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc5
8158 /* 8519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8159 /* 8522 */ // Label 494: @8522
8160 /* 8522 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8546), // Rule ID 38 //
8161 /* 8527 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
8162 /* 8530 */ // MIs[0] root
8163 /* 8530 */ // No operand predicates
8164 /* 8530 */ // MIs[0] src
8165 /* 8530 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8166 /* 8534 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8167 /* 8538 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
8168 /* 8541 */ // MIs[1] x
8169 /* 8541 */ // No operand predicates
8170 /* 8541 */ // MIs[1] y
8171 /* 8541 */ // No operand predicates
8172 /* 8541 */ // MIs[1] z
8173 /* 8541 */ // No operand predicates
8174 /* 8541 */ // MIs[1] a
8175 /* 8541 */ // No operand predicates
8176 /* 8541 */ // MIs[0] idx
8177 /* 8541 */ // No operand predicates
8178 /* 8541 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8179 /* 8543 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc4
8180 /* 8543 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8181 /* 8546 */ // Label 495: @8546
8182 /* 8546 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8570), // Rule ID 37 //
8183 /* 8551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
8184 /* 8554 */ // MIs[0] root
8185 /* 8554 */ // No operand predicates
8186 /* 8554 */ // MIs[0] src
8187 /* 8554 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8188 /* 8558 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8189 /* 8562 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
8190 /* 8565 */ // MIs[1] x
8191 /* 8565 */ // No operand predicates
8192 /* 8565 */ // MIs[1] y
8193 /* 8565 */ // No operand predicates
8194 /* 8565 */ // MIs[1] z
8195 /* 8565 */ // No operand predicates
8196 /* 8565 */ // MIs[0] idx
8197 /* 8565 */ // No operand predicates
8198 /* 8565 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8199 /* 8567 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc3
8200 /* 8567 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8201 /* 8570 */ // Label 496: @8570
8202 /* 8570 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8604), // Rule ID 33 //
8203 /* 8575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
8204 /* 8578 */ // MIs[0] root
8205 /* 8578 */ // No operand predicates
8206 /* 8578 */ // MIs[0] src
8207 /* 8578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8208 /* 8582 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8209 /* 8586 */ // MIs[1] x
8210 /* 8586 */ // No operand predicates
8211 /* 8586 */ // MIs[1] value
8212 /* 8586 */ // No operand predicates
8213 /* 8586 */ // MIs[1] idx
8214 /* 8586 */ // No operand predicates
8215 /* 8586 */ // MIs[0] idx
8216 /* 8586 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
8217 /* 8591 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8218 /* 8596 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8219 /* 8598 */ // Combiner Rule #31: extract_vector_element_not_const
8220 /* 8598 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8221 /* 8603 */ GIR_EraseRootFromParent_Done,
8222 /* 8604 */ // Label 497: @8604
8223 /* 8604 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8625), // Rule ID 34 //
8224 /* 8609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
8225 /* 8612 */ // MIs[0] root
8226 /* 8612 */ // No operand predicates
8227 /* 8612 */ // MIs[0] src
8228 /* 8612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8229 /* 8616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8230 /* 8620 */ // MIs[1] x
8231 /* 8620 */ // No operand predicates
8232 /* 8620 */ // MIs[1] value
8233 /* 8620 */ // No operand predicates
8234 /* 8620 */ // MIs[1] idx2
8235 /* 8620 */ // No operand predicates
8236 /* 8620 */ // MIs[0] idx1
8237 /* 8620 */ // No operand predicates
8238 /* 8620 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8239 /* 8622 */ // Combiner Rule #32: extract_vector_element_different_indices
8240 /* 8622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
8241 /* 8625 */ // Label 498: @8625
8242 /* 8625 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8654), // Rule ID 43 //
8243 /* 8630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
8244 /* 8633 */ // MIs[0] root
8245 /* 8633 */ // No operand predicates
8246 /* 8633 */ // MIs[0] src
8247 /* 8633 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8248 /* 8637 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
8249 /* 8641 */ // MIs[1] src1
8250 /* 8641 */ // No operand predicates
8251 /* 8641 */ // MIs[1] src2
8252 /* 8641 */ // No operand predicates
8253 /* 8641 */ // MIs[1] mask
8254 /* 8641 */ // No operand predicates
8255 /* 8641 */ // MIs[0] idx
8256 /* 8641 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8257 /* 8645 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8258 /* 8649 */ // MIs[2] imm
8259 /* 8649 */ // No operand predicates
8260 /* 8649 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8261 /* 8651 */ // Combiner Rule #41: extract_vector_element_shuffle_vector
8262 /* 8651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8263 /* 8654 */ // Label 499: @8654
8264 /* 8654 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8678), // Rule ID 36 //
8265 /* 8659 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
8266 /* 8662 */ // MIs[0] root
8267 /* 8662 */ // No operand predicates
8268 /* 8662 */ // MIs[0] src
8269 /* 8662 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8270 /* 8666 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8271 /* 8670 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
8272 /* 8673 */ // MIs[1] x
8273 /* 8673 */ // No operand predicates
8274 /* 8673 */ // MIs[1] y
8275 /* 8673 */ // No operand predicates
8276 /* 8673 */ // MIs[0] idx
8277 /* 8673 */ // No operand predicates
8278 /* 8673 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8279 /* 8675 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc2
8280 /* 8675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8281 /* 8678 */ // Label 500: @8678
8282 /* 8678 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(8710), // Rule ID 35 //
8283 /* 8683 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
8284 /* 8686 */ // MIs[0] root
8285 /* 8686 */ // No operand predicates
8286 /* 8686 */ // MIs[0] src
8287 /* 8686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8288 /* 8690 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
8289 /* 8694 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
8290 /* 8697 */ // MIs[1] unused
8291 /* 8697 */ // No operand predicates
8292 /* 8697 */ // MIs[0] idx
8293 /* 8697 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8294 /* 8701 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8295 /* 8705 */ // MIs[2] imm
8296 /* 8705 */ // No operand predicates
8297 /* 8705 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8298 /* 8707 */ // Combiner Rule #33: extract_vector_element_build_vector
8299 /* 8707 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
8300 /* 8710 */ // Label 501: @8710
8301 /* 8710 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(8734), // Rule ID 27 //
8302 /* 8715 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
8303 /* 8718 */ // MIs[0] root
8304 /* 8718 */ // No operand predicates
8305 /* 8718 */ // MIs[0] vector
8306 /* 8718 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8307 /* 8722 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8308 /* 8726 */ // MIs[0] idx
8309 /* 8726 */ // No operand predicates
8310 /* 8726 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8311 /* 8728 */ // Combiner Rule #25: match_extract_of_element_undef_vector
8312 /* 8728 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8313 /* 8731 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8314 /* 8733 */ GIR_EraseRootFromParent_Done,
8315 /* 8734 */ // Label 502: @8734
8316 /* 8734 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(8758), // Rule ID 28 //
8317 /* 8739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
8318 /* 8742 */ // MIs[0] root
8319 /* 8742 */ // No operand predicates
8320 /* 8742 */ // MIs[0] vector
8321 /* 8742 */ // No operand predicates
8322 /* 8742 */ // MIs[0] idx
8323 /* 8742 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8324 /* 8746 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8325 /* 8750 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8326 /* 8752 */ // Combiner Rule #26: match_extract_of_element_undef_index
8327 /* 8752 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8328 /* 8755 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8329 /* 8757 */ GIR_EraseRootFromParent_Done,
8330 /* 8758 */ // Label 503: @8758
8331 /* 8758 */ GIM_Reject,
8332 /* 8759 */ // Label 97: @8759
8333 /* 8759 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(8770), // Rule ID 103 //
8334 /* 8764 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
8335 /* 8767 */ // Combiner Rule #85: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
8336 /* 8767 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
8337 /* 8770 */ // Label 504: @8770
8338 /* 8770 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(8781), // Rule ID 105 //
8339 /* 8775 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
8340 /* 8778 */ // Combiner Rule #86: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8341 /* 8778 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
8342 /* 8781 */ // Label 505: @8781
8343 /* 8781 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(8792), // Rule ID 369 //
8344 /* 8786 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
8345 /* 8789 */ // Combiner Rule #220: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
8346 /* 8789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
8347 /* 8792 */ // Label 506: @8792
8348 /* 8792 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(8803), // Rule ID 371 //
8349 /* 8797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
8350 /* 8800 */ // Combiner Rule #222: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8351 /* 8800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
8352 /* 8803 */ // Label 507: @8803
8353 /* 8803 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(8824), // Rule ID 370 //
8354 /* 8808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
8355 /* 8811 */ // MIs[0] root
8356 /* 8811 */ // No operand predicates
8357 /* 8811 */ // MIs[0] src1
8358 /* 8811 */ // No operand predicates
8359 /* 8811 */ // MIs[0] undef
8360 /* 8811 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8361 /* 8815 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8362 /* 8819 */ // MIs[0] mask
8363 /* 8819 */ // No operand predicates
8364 /* 8819 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8365 /* 8821 */ // Combiner Rule #221: combine_shuffle_undef_rhs
8366 /* 8821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
8367 /* 8824 */ // Label 508: @8824
8368 /* 8824 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(8835), // Rule ID 404 //
8369 /* 8829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
8370 /* 8832 */ // MIs[0] dst
8371 /* 8832 */ // No operand predicates
8372 /* 8832 */ // MIs[0] src1
8373 /* 8832 */ // No operand predicates
8374 /* 8832 */ // MIs[0] src2
8375 /* 8832 */ // No operand predicates
8376 /* 8832 */ // MIs[0] mask
8377 /* 8832 */ // No operand predicates
8378 /* 8832 */ // Combiner Rule #250: combine_shuffle_vector_to_build_vector
8379 /* 8832 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner160),
8380 /* 8835 */ // Label 509: @8835
8381 /* 8835 */ GIM_Reject,
8382 /* 8836 */ // Label 98: @8836
8383 /* 8836 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(8847), // Rule ID 392 //
8384 /* 8841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
8385 /* 8844 */ // MIs[0] dst
8386 /* 8844 */ // No operand predicates
8387 /* 8844 */ // MIs[0] src
8388 /* 8844 */ // No operand predicates
8389 /* 8844 */ // Combiner Rule #241: ctlz_to_ctls
8390 /* 8844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8391 /* 8847 */ // Label 510: @8847
8392 /* 8847 */ GIM_Reject,
8393 /* 8848 */ // Label 99: @8848
8394 /* 8848 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(8859), // Rule ID 393 //
8395 /* 8853 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
8396 /* 8856 */ // MIs[0] dst
8397 /* 8856 */ // No operand predicates
8398 /* 8856 */ // MIs[0] src
8399 /* 8856 */ // No operand predicates
8400 /* 8856 */ // Combiner Rule #242: ctlz_zero_undef_to_ctls
8401 /* 8856 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8402 /* 8859 */ // Label 511: @8859
8403 /* 8859 */ GIM_Reject,
8404 /* 8860 */ // Label 100: @8860
8405 /* 8860 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(8904), // Rule ID 245 //
8406 /* 8865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
8407 /* 8868 */ // MIs[0] d
8408 /* 8868 */ // No operand predicates
8409 /* 8868 */ // MIs[0] src
8410 /* 8868 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8411 /* 8872 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
8412 /* 8876 */ // MIs[1] rev
8413 /* 8876 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8414 /* 8880 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8415 /* 8884 */ // MIs[2] val
8416 /* 8884 */ // No operand predicates
8417 /* 8884 */ // MIs[1] amt
8418 /* 8884 */ // No operand predicates
8419 /* 8884 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
8420 /* 8888 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8421 /* 8890 */ // Combiner Rule #178: bitreverse_lshr
8422 /* 8890 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8423 /* 8893 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8424 /* 8895 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8425 /* 8899 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8426 /* 8903 */ GIR_EraseRootFromParent_Done,
8427 /* 8904 */ // Label 512: @8904
8428 /* 8904 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(8948), // Rule ID 244 //
8429 /* 8909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
8430 /* 8912 */ // MIs[0] d
8431 /* 8912 */ // No operand predicates
8432 /* 8912 */ // MIs[0] src
8433 /* 8912 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8434 /* 8916 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
8435 /* 8920 */ // MIs[1] rev
8436 /* 8920 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8437 /* 8924 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8438 /* 8928 */ // MIs[2] val
8439 /* 8928 */ // No operand predicates
8440 /* 8928 */ // MIs[1] amt
8441 /* 8928 */ // No operand predicates
8442 /* 8928 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
8443 /* 8932 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8444 /* 8934 */ // Combiner Rule #177: bitreverse_shl
8445 /* 8934 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
8446 /* 8937 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8447 /* 8939 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8448 /* 8943 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8449 /* 8947 */ GIR_EraseRootFromParent_Done,
8450 /* 8948 */ // Label 513: @8948
8451 /* 8948 */ GIM_Reject,
8452 /* 8949 */ // Label 101: @8949
8453 /* 8949 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(8970), // Rule ID 192 //
8454 /* 8954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
8455 /* 8957 */ // MIs[0] dst
8456 /* 8957 */ // No operand predicates
8457 /* 8957 */ // MIs[0] src0
8458 /* 8957 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8459 /* 8961 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8460 /* 8965 */ // MIs[1] cst
8461 /* 8965 */ // No operand predicates
8462 /* 8965 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8463 /* 8967 */ // Combiner Rule #148: constant_fold_fceil
8464 /* 8967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8465 /* 8970 */ // Label 514: @8970
8466 /* 8970 */ GIM_Reject,
8467 /* 8971 */ // Label 102: @8971
8468 /* 8971 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(8992), // Rule ID 188 //
8469 /* 8976 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
8470 /* 8979 */ // MIs[0] dst
8471 /* 8979 */ // No operand predicates
8472 /* 8979 */ // MIs[0] src0
8473 /* 8979 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8474 /* 8983 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8475 /* 8987 */ // MIs[1] cst
8476 /* 8987 */ // No operand predicates
8477 /* 8987 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8478 /* 8989 */ // Combiner Rule #144: constant_fold_fsqrt
8479 /* 8989 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8480 /* 8992 */ // Label 515: @8992
8481 /* 8992 */ GIM_Reject,
8482 /* 8993 */ // Label 103: @8993
8483 /* 8993 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(9014), // Rule ID 193 //
8484 /* 8998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
8485 /* 9001 */ // MIs[0] dst
8486 /* 9001 */ // No operand predicates
8487 /* 9001 */ // MIs[0] src0
8488 /* 9001 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8489 /* 9005 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8490 /* 9009 */ // MIs[1] cst
8491 /* 9009 */ // No operand predicates
8492 /* 9009 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8493 /* 9011 */ // Combiner Rule #149: constant_fold_ffloor
8494 /* 9011 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8495 /* 9014 */ // Label 516: @9014
8496 /* 9014 */ GIM_Reject,
8497 /* 9015 */ // Label 104: @9015
8498 /* 9015 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(9036), // Rule ID 197 //
8499 /* 9020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
8500 /* 9023 */ // MIs[0] dst
8501 /* 9023 */ // No operand predicates
8502 /* 9023 */ // MIs[0] src0
8503 /* 9023 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8504 /* 9027 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8505 /* 9031 */ // MIs[1] cst
8506 /* 9031 */ // No operand predicates
8507 /* 9031 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8508 /* 9033 */ // Combiner Rule #153: constant_fold_frint
8509 /* 9033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8510 /* 9036 */ // Label 517: @9036
8511 /* 9036 */ GIM_Reject,
8512 /* 9037 */ // Label 105: @9037
8513 /* 9037 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(9058), // Rule ID 198 //
8514 /* 9042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
8515 /* 9045 */ // MIs[0] dst
8516 /* 9045 */ // No operand predicates
8517 /* 9045 */ // MIs[0] src0
8518 /* 9045 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8519 /* 9049 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8520 /* 9053 */ // MIs[1] cst
8521 /* 9053 */ // No operand predicates
8522 /* 9053 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8523 /* 9055 */ // Combiner Rule #154: constant_fold_fnearbyint
8524 /* 9055 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8525 /* 9058 */ // Label 518: @9058
8526 /* 9058 */ GIM_Reject,
8527 /* 9059 */ // Label 106: @9059
8528 /* 9059 */ GIM_Reject,
8529 /* 9060 */ }; // Size: 9060 bytes
8530 return MatchTable0;
8531}
8532#undef GIMT_Encode2
8533#undef GIMT_Encode4
8534#undef GIMT_Encode8
8535
8536
8537#endif // GET_GICOMBINER_IMPL
8538
8539#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8540
8541AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
8542AvailableFunctionFeatures()
8543
8544#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8545
8546#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8547
8548, State(0),
8549ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
8550
8551#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8552
8553