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 240; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 16; // "copy_prop"
52 case 'm': // 3 strings to match.
53 switch (RuleIdentifier[1]) {
54 default: break;
55 case 'a': // 1 string to match.
56 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
57 break;
58 return 211; // "match_ors"
59 case 'u': // 2 strings to match.
60 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
61 break;
62 switch (RuleIdentifier[8]) {
63 default: break;
64 case '0': // 1 string to match.
65 return 157; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 156; // "mulo_by_2"
68 }
69 break;
70 }
71 break;
72 case 'n': // 1 string to match.
73 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
74 break;
75 return 216; // "nneg_zext"
76 }
77 break;
78 case 10: // 7 strings to match.
79 switch (RuleIdentifier[0]) {
80 default: break;
81 case 'i': // 1 string to match.
82 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
83 break;
84 return 93; // "i2p_to_p2i"
85 case 'm': // 2 strings to match.
86 switch (RuleIdentifier[1]) {
87 default: break;
88 case 'a': // 1 string to match.
89 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
90 break;
91 return 210; // "match_ands"
92 case 'u': // 1 string to match.
93 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
94 break;
95 return 17; // "mul_to_shl"
96 }
97 break;
98 case 'p': // 1 string to match.
99 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
100 break;
101 return 92; // "p2i_to_i2p"
102 case 's': // 2 strings to match.
103 switch (RuleIdentifier[1]) {
104 default: break;
105 case 'e': // 1 string to match.
106 if (memcmp(RuleIdentifier.data()+2, "xt_trunc", 8) != 0)
107 break;
108 return 214; // "sext_trunc"
109 case 'u': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
111 break;
112 return 18; // "sub_to_add"
113 }
114 break;
115 case 'z': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
117 break;
118 return 215; // "zext_trunc"
119 }
120 break;
121 case 11: // 8 strings to match.
122 switch (RuleIdentifier[0]) {
123 default: break;
124 case 'a': // 1 string to match.
125 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
126 break;
127 return 98; // "add_sub_reg"
128 case 'm': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
130 break;
131 return 231; // "match_addos"
132 case 's': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
134 break;
135 return 205; // "sub_add_reg"
136 case 't': // 4 strings to match.
137 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
138 break;
139 switch (RuleIdentifier[6]) {
140 default: break;
141 case 's': // 3 strings to match.
142 switch (RuleIdentifier[7]) {
143 default: break;
144 case 'h': // 1 string to match.
145 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
146 break;
147 return 136; // "trunc_shift"
148 case 's': // 2 strings to match.
149 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
150 break;
151 switch (RuleIdentifier[10]) {
152 default: break;
153 case 's': // 1 string to match.
154 return 233; // "trunc_ssats"
155 case 'u': // 1 string to match.
156 return 234; // "trunc_ssatu"
157 }
158 break;
159 }
160 break;
161 case 'u': // 1 string to match.
162 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
163 break;
164 return 235; // "trunc_usatu"
165 }
166 break;
167 case 'u': // 1 string to match.
168 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
169 break;
170 return 224; // "unmerge_cst"
171 }
172 break;
173 case 12: // 12 strings to match.
174 switch (RuleIdentifier[0]) {
175 default: break;
176 case 'A': // 1 string to match.
177 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
178 break;
179 return 4; // "APlusBMinusB"
180 case 'B': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
182 break;
183 return 5; // "BMinusAPlusA"
184 case 'a': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
186 break;
187 return 158; // "adde_to_addo"
188 case 'c': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
190 break;
191 return 238; // "ctlz_to_ctls"
192 case 'f': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
194 break;
195 return 207; // "fsub_to_fneg"
196 case 'm': // 1 string to match.
197 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
198 break;
199 return 186; // "mulh_to_lshr"
200 case 'n': // 1 string to match.
201 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
202 break;
203 return 137; // "not_cmp_fold"
204 case 'r': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
206 break;
207 return 132; // "redundant_or"
208 case 's': // 2 strings to match.
209 switch (RuleIdentifier[1]) {
210 default: break;
211 case 'd': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
213 break;
214 return 201; // "sdiv_by_pow2"
215 case 'e': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
217 break;
218 return 51; // "sext_of_sext"
219 }
220 break;
221 case 'u': // 1 string to match.
222 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
223 break;
224 return 200; // "udiv_by_pow2"
225 case 'z': // 1 string to match.
226 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
227 break;
228 return 49; // "zext_of_zext"
229 }
230 break;
231 case 13: // 17 strings to match.
232 switch (RuleIdentifier[0]) {
233 default: break;
234 case 'a': // 1 string to match.
235 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
236 break;
237 return 40; // "add_of_vscale"
238 case 'c': // 1 string to match.
239 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
240 break;
241 return 176; // "commute_shift"
242 case 'f': // 1 string to match.
243 if (memcmp(RuleIdentifier.data()+1, "oldable_fneg", 12) != 0)
244 break;
245 return 244; // "foldable_fneg"
246 case 'l': // 1 string to match.
247 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
248 break;
249 return 72; // "load_and_mask"
250 case 'm': // 3 strings to match.
251 switch (RuleIdentifier[1]) {
252 default: break;
253 case 'a': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
255 break;
256 return 129; // "match_selects"
257 case 'e': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
259 break;
260 return 223; // "merge_unmerge"
261 case 'u': // 1 string to match.
262 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
263 break;
264 return 41; // "mul_of_vscale"
265 }
266 break;
267 case 'r': // 1 string to match.
268 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
269 break;
270 return 130; // "redundant_and"
271 case 's': // 5 strings to match.
272 switch (RuleIdentifier[1]) {
273 default: break;
274 case 'a': // 1 string to match.
275 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
276 break;
277 return 89; // "same_val_zero"
278 case 'd': // 1 string to match.
279 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
280 break;
281 return 203; // "sdiv_by_const"
282 case 'h': // 1 string to match.
283 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
284 break;
285 return 42; // "shl_of_vscale"
286 case 'r': // 1 string to match.
287 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
288 break;
289 return 199; // "srem_by_const"
290 case 'u': // 1 string to match.
291 if (memcmp(RuleIdentifier.data()+2, "b_of_vscale", 11) != 0)
292 break;
293 return 43; // "sub_of_vscale"
294 }
295 break;
296 case 'u': // 4 strings to match.
297 switch (RuleIdentifier[1]) {
298 default: break;
299 case 'd': // 1 string to match.
300 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
301 break;
302 return 202; // "udiv_by_const"
303 case 'n': // 2 strings to match.
304 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
305 break;
306 switch (RuleIdentifier[8]) {
307 default: break;
308 case 'm': // 1 string to match.
309 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
310 break;
311 return 222; // "unmerge_merge"
312 case 'u': // 1 string to match.
313 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
314 break;
315 return 225; // "unmerge_undef"
316 }
317 break;
318 case 'r': // 1 string to match.
319 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
320 break;
321 return 198; // "urem_by_const"
322 }
323 break;
324 }
325 break;
326 case 14: // 16 strings to match.
327 switch (RuleIdentifier[0]) {
328 default: break;
329 case 'A': // 2 strings to match.
330 switch (RuleIdentifier[1]) {
331 default: break;
332 case 'M': // 1 string to match.
333 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
334 break;
335 return 15; // "AMinusC1PlusC2"
336 case 'P': // 1 string to match.
337 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
338 break;
339 return 11; // "APlusC1MinusC2"
340 }
341 break;
342 case 'C': // 1 string to match.
343 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
344 break;
345 return 12; // "C2MinusAPlusC1"
346 case 'N': // 1 string to match.
347 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
348 break;
349 return 10; // "NotAPlusNegOne"
350 case 'a': // 2 strings to match.
351 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
352 break;
353 switch (RuleIdentifier[10]) {
354 default: break;
355 case 's': // 1 string to match.
356 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
357 break;
358 return 55; // "anyext_of_sext"
359 case 'z': // 1 string to match.
360 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
361 break;
362 return 54; // "anyext_of_zext"
363 }
364 break;
365 case 'b': // 2 strings to match.
366 if (RuleIdentifier[1] != 'i')
367 break;
368 switch (RuleIdentifier[2]) {
369 default: break;
370 case 'n': // 1 string to match.
371 if (memcmp(RuleIdentifier.data()+3, "op_same_val", 11) != 0)
372 break;
373 return 88; // "binop_same_val"
374 case 't': // 1 string to match.
375 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
376 break;
377 return 174; // "bitreverse_shl"
378 }
379 break;
380 case 'f': // 2 strings to match.
381 switch (RuleIdentifier[1]) {
382 default: break;
383 case 'a': // 1 string to match.
384 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
385 break;
386 return 185; // "fabs_fneg_fold"
387 case 'n': // 1 string to match.
388 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
389 break;
390 return 95; // "fneg_fneg_fold"
391 }
392 break;
393 case 'm': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
395 break;
396 return 20; // "mul_by_neg_one"
397 case 'r': // 1 string to match.
398 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
399 break;
400 return 111; // "reassoc_ptradd"
401 case 's': // 3 strings to match.
402 switch (RuleIdentifier[1]) {
403 default: break;
404 case 'e': // 2 strings to match.
405 switch (RuleIdentifier[2]) {
406 default: break;
407 case 'l': // 1 string to match.
408 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
409 break;
410 return 57; // "select_of_zext"
411 case 'x': // 1 string to match.
412 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
413 break;
414 return 52; // "sext_of_anyext"
415 }
416 break;
417 case 'h': // 1 string to match.
418 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
419 break;
420 return 110; // "shifts_too_big"
421 }
422 break;
423 case 'z': // 1 string to match.
424 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
425 break;
426 return 50; // "zext_of_anyext"
427 }
428 break;
429 case 15: // 12 strings to match.
430 switch (RuleIdentifier[0]) {
431 default: break;
432 case 'A': // 2 strings to match.
433 switch (RuleIdentifier[1]) {
434 default: break;
435 case 'M': // 1 string to match.
436 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
437 break;
438 return 13; // "AMinusC1MinusC2"
439 case 'P': // 1 string to match.
440 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
441 break;
442 return 3; // "APlusZeroMinusB"
443 }
444 break;
445 case 'C': // 1 string to match.
446 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
447 break;
448 return 14; // "C1Minus2MinusC2"
449 case 'Z': // 1 string to match.
450 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
451 break;
452 return 2; // "ZeroMinusAPlusB"
453 case 'b': // 1 string to match.
454 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
455 break;
456 return 175; // "bitreverse_lshr"
457 case 'e': // 1 string to match.
458 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
459 break;
460 return 71; // "extending_loads"
461 case 'i': // 1 string to match.
462 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
463 break;
464 return 21; // "idempotent_prop"
465 case 'l': // 1 string to match.
466 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
467 break;
468 return 165; // "load_or_combine"
469 case 'n': // 1 string to match.
470 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
471 break;
472 return 65; // "narrow_binop_or"
473 case 'o': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
475 break;
476 return 155; // "overlapping_and"
477 case 's': // 1 string to match.
478 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
479 break;
480 return 86; // "select_same_val"
481 case 'z': // 1 string to match.
482 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
483 break;
484 return 134; // "zext_trunc_fold"
485 }
486 break;
487 case 16: // 14 strings to match.
488 switch (RuleIdentifier[0]) {
489 default: break;
490 case 'a': // 1 string to match.
491 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
492 break;
493 return 53; // "anyext_of_anyext"
494 case 'c': // 1 string to match.
495 if (memcmp(RuleIdentifier.data()+1, "lamp_i64_to_i16", 15) != 0)
496 break;
497 return 243; // "clamp_i64_to_i16"
498 case 'n': // 5 strings to match.
499 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
500 break;
501 switch (RuleIdentifier[13]) {
502 default: break;
503 case 'a': // 2 strings to match.
504 switch (RuleIdentifier[14]) {
505 default: break;
506 case 'd': // 1 string to match.
507 if (RuleIdentifier[15] != 'd')
508 break;
509 return 61; // "narrow_binop_add"
510 case 'n': // 1 string to match.
511 if (RuleIdentifier[15] != 'd')
512 break;
513 return 64; // "narrow_binop_and"
514 }
515 break;
516 case 'm': // 1 string to match.
517 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
518 break;
519 return 63; // "narrow_binop_mul"
520 case 's': // 1 string to match.
521 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
522 break;
523 return 62; // "narrow_binop_sub"
524 case 'x': // 1 string to match.
525 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
526 break;
527 return 66; // "narrow_binop_xor"
528 }
529 break;
530 case 's': // 4 strings to match.
531 switch (RuleIdentifier[1]) {
532 default: break;
533 case 'e': // 3 strings to match.
534 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
535 break;
536 switch (RuleIdentifier[7]) {
537 default: break;
538 case 'o': // 1 string to match.
539 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
540 break;
541 return 58; // "select_of_anyext"
542 case 't': // 1 string to match.
543 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
544 break;
545 return 206; // "select_to_minmax"
546 case 'u': // 1 string to match.
547 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
548 break;
549 return 126; // "select_undef_cmp"
550 }
551 break;
552 case 'u': // 1 string to match.
553 if (memcmp(RuleIdentifier.data()+2, "b_one_from_sub", 14) != 0)
554 break;
555 return 241; // "sub_one_from_sub"
556 }
557 break;
558 case 't': // 2 strings to match.
559 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
560 break;
561 switch (RuleIdentifier[12]) {
562 default: break;
563 case 's': // 1 string to match.
564 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
565 break;
566 return 47; // "truncate_of_sext"
567 case 'z': // 1 string to match.
568 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
569 break;
570 return 46; // "truncate_of_zext"
571 }
572 break;
573 case 'u': // 1 string to match.
574 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
575 break;
576 return 74; // "undef_to_fp_zero"
577 }
578 break;
579 case 17: // 14 strings to match.
580 switch (RuleIdentifier[0]) {
581 default: break;
582 case 'A': // 2 strings to match.
583 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
584 break;
585 switch (RuleIdentifier[11]) {
586 default: break;
587 case 'A': // 1 string to match.
588 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
589 break;
590 return 8; // "APlusBMinusAplusC"
591 case 'C': // 1 string to match.
592 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
593 break;
594 return 9; // "APlusBMinusCPlusA"
595 }
596 break;
597 case 'a': // 2 strings to match.
598 switch (RuleIdentifier[1]) {
599 default: break;
600 case 'd': // 1 string to match.
601 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
602 break;
603 return 19; // "add_p2i_to_ptradd"
604 case 'n': // 1 string to match.
605 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
606 break;
607 return 94; // "anyext_trunc_fold"
608 }
609 break;
610 case 'c': // 3 strings to match.
611 switch (RuleIdentifier[1]) {
612 default: break;
613 case 'a': // 2 strings to match.
614 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
615 break;
616 switch (RuleIdentifier[13]) {
617 default: break;
618 case 'f': // 1 string to match.
619 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
620 break;
621 return 115; // "canonicalize_fcmp"
622 case 'i': // 1 string to match.
623 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
624 break;
625 return 114; // "canonicalize_icmp"
626 }
627 break;
628 case 'o': // 1 string to match.
629 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fma", 15) != 0)
630 break;
631 return 183; // "constant_fold_fma"
632 }
633 break;
634 case 'd': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
636 break;
637 return 166; // "div_rem_to_divrem"
638 case 'e': // 1 string to match.
639 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
640 break;
641 return 84; // "erase_undef_store"
642 case 'p': // 1 string to match.
643 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
644 break;
645 return 162; // "ptr_add_with_zero"
646 case 's': // 2 strings to match.
647 switch (RuleIdentifier[1]) {
648 default: break;
649 case 'e': // 1 string to match.
650 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
651 break;
652 return 128; // "select_to_iminmax"
653 case 'h': // 1 string to match.
654 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
655 break;
656 return 163; // "shift_immed_chain"
657 }
658 break;
659 case 'u': // 2 strings to match.
660 switch (RuleIdentifier[1]) {
661 default: break;
662 case 'n': // 1 string to match.
663 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
664 break;
665 return 75; // "undef_to_int_zero"
666 case 'r': // 1 string to match.
667 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
668 break;
669 return 133; // "urem_pow2_to_mask"
670 }
671 break;
672 }
673 break;
674 case 18: // 13 strings to match.
675 switch (RuleIdentifier[0]) {
676 default: break;
677 case 'A': // 3 strings to match.
678 switch (RuleIdentifier[1]) {
679 default: break;
680 case 'M': // 2 strings to match.
681 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
682 break;
683 switch (RuleIdentifier[11]) {
684 default: break;
685 case 'B': // 1 string to match.
686 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
687 break;
688 return 7; // "AMinusBPlusBMinusC"
689 case 'C': // 1 string to match.
690 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
691 break;
692 return 6; // "AMinusBPlusCMinusA"
693 }
694 break;
695 case 'P': // 1 string to match.
696 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
697 break;
698 return 0; // "APlusBMinusCMinusB"
699 }
700 break;
701 case 'b': // 1 string to match.
702 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
703 break;
704 return 90; // "binop_left_to_zero"
705 case 'c': // 4 strings to match.
706 if (RuleIdentifier[1] != 'o')
707 break;
708 switch (RuleIdentifier[2]) {
709 default: break;
710 case 'm': // 2 strings to match.
711 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
712 break;
713 switch (RuleIdentifier[8]) {
714 default: break;
715 case 'm': // 1 string to match.
716 if (memcmp(RuleIdentifier.data()+9, "inmax_nan", 9) != 0)
717 break;
718 return 159; // "combine_minmax_nan"
719 case 'o': // 1 string to match.
720 if (memcmp(RuleIdentifier.data()+9, "r_s64_s32", 9) != 0)
721 break;
722 return 248; // "combine_or_s64_s32"
723 }
724 break;
725 case 'n': // 2 strings to match.
726 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
727 break;
728 switch (RuleIdentifier[15]) {
729 default: break;
730 case 'a': // 1 string to match.
731 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
732 break;
733 return 140; // "constant_fold_fabs"
734 case 'n': // 1 string to match.
735 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
736 break;
737 return 139; // "constant_fold_fneg"
738 }
739 break;
740 }
741 break;
742 case 'e': // 1 string to match.
743 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
744 break;
745 return 160; // "expand_const_fpowi"
746 case 'f': // 1 string to match.
747 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
748 break;
749 return 103; // "fptrunc_fpext_fold"
750 case 's': // 2 strings to match.
751 if (RuleIdentifier[1] != 'e')
752 break;
753 switch (RuleIdentifier[2]) {
754 default: break;
755 case 'l': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
757 break;
758 return 59; // "select_of_truncate"
759 case 'x': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
761 break;
762 return 123; // "sext_inreg_of_load"
763 }
764 break;
765 case 't': // 1 string to match.
766 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
767 break;
768 return 48; // "truncate_of_anyext"
769 }
770 break;
771 case 19: // 19 strings to match.
772 switch (RuleIdentifier[0]) {
773 default: break;
774 case 'A': // 1 string to match.
775 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
776 break;
777 return 1; // "AMinusBMinusCMinusC"
778 case 'b': // 1 string to match.
779 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
780 break;
781 return 91; // "binop_right_to_zero"
782 case 'c': // 7 strings to match.
783 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
784 break;
785 switch (RuleIdentifier[5]) {
786 default: break;
787 case '_': // 1 string to match.
788 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
789 break;
790 return 154; // "const_ptradd_to_i2p"
791 case 'a': // 6 strings to match.
792 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
793 break;
794 switch (RuleIdentifier[14]) {
795 default: break;
796 case 'b': // 1 string to match.
797 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
798 break;
799 return 181; // "constant_fold_binop"
800 case 'f': // 5 strings to match.
801 switch (RuleIdentifier[15]) {
802 default: break;
803 case 'c': // 1 string to match.
804 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
805 break;
806 return 145; // "constant_fold_fceil"
807 case 'l': // 1 string to match.
808 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
809 break;
810 return 142; // "constant_fold_flog2"
811 case 'p': // 1 string to match.
812 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
813 break;
814 return 144; // "constant_fold_fpext"
815 case 'r': // 1 string to match.
816 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
817 break;
818 return 150; // "constant_fold_frint"
819 case 's': // 1 string to match.
820 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
821 break;
822 return 141; // "constant_fold_fsqrt"
823 }
824 break;
825 }
826 break;
827 }
828 break;
829 case 'e': // 1 string to match.
830 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
831 break;
832 return 107; // "extend_through_phis"
833 case 'i': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
835 break;
836 return 67; // "integer_of_truncate"
837 case 'm': // 1 string to match.
838 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
839 break;
840 return 229; // "merge_of_x_and_zero"
841 case 'p': // 1 string to match.
842 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
843 break;
844 return 113; // "ptr_add_immed_chain"
845 case 'r': // 2 strings to match.
846 switch (RuleIdentifier[1]) {
847 default: break;
848 case 'e': // 1 string to match.
849 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
850 break;
851 return 112; // "reassoc_comm_binops"
852 case 'i': // 1 string to match.
853 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
854 break;
855 return 87; // "right_identity_zero"
856 }
857 break;
858 case 's': // 3 strings to match.
859 switch (RuleIdentifier[1]) {
860 default: break;
861 case 'e': // 1 string to match.
862 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
863 break;
864 return 127; // "select_constant_cmp"
865 case 'i': // 2 strings to match.
866 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
867 break;
868 switch (RuleIdentifier[9]) {
869 default: break;
870 case 'a': // 1 string to match.
871 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
872 break;
873 return 108; // "simplify_add_to_sub"
874 case 'n': // 1 string to match.
875 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
876 break;
877 return 212; // "simplify_neg_minmax"
878 }
879 break;
880 }
881 break;
882 case 'u': // 1 string to match.
883 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
884 break;
885 return 79; // "unary_undef_to_zero"
886 }
887 break;
888 case 20: // 8 strings to match.
889 switch (RuleIdentifier[0]) {
890 default: break;
891 case 'a': // 1 string to match.
892 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
893 break;
894 return 188; // "and_or_disjoint_mask"
895 case 'b': // 1 string to match.
896 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
897 break;
898 return 102; // "bitcast_bitcast_fold"
899 case 'c': // 1 string to match.
900 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
901 break;
902 return 146; // "constant_fold_ffloor"
903 case 'm': // 1 string to match.
904 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
905 break;
906 return 228; // "merge_of_x_and_undef"
907 case 'r': // 2 strings to match.
908 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
909 break;
910 switch (RuleIdentifier[4]) {
911 default: break;
912 case 'c': // 1 string to match.
913 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
914 break;
915 return 124; // "reduce_shl_of_extend"
916 case 'n': // 1 string to match.
917 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
918 break;
919 return 131; // "redundant_sext_inreg"
920 }
921 break;
922 case 'u': // 2 strings to match.
923 if (RuleIdentifier[1] != 'n')
924 break;
925 switch (RuleIdentifier[2]) {
926 default: break;
927 case 'a': // 1 string to match.
928 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
929 break;
930 return 80; // "unary_undef_to_undef"
931 case 'm': // 1 string to match.
932 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
933 break;
934 return 227; // "unmerge_zext_to_zext"
935 }
936 break;
937 }
938 break;
939 case 21: // 10 strings to match.
940 switch (RuleIdentifier[0]) {
941 default: break;
942 case 'c': // 4 strings to match.
943 if (RuleIdentifier[1] != 'o')
944 break;
945 switch (RuleIdentifier[2]) {
946 default: break;
947 case 'm': // 2 strings to match.
948 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
949 break;
950 switch (RuleIdentifier[8]) {
951 default: break;
952 case 'b': // 1 string to match.
953 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
954 break;
955 return 230; // "combine_build_unmerge"
956 case 'c': // 1 string to match.
957 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
958 break;
959 return 213; // "combine_concat_vector"
960 }
961 break;
962 case 'n': // 2 strings to match.
963 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
964 break;
965 switch (RuleIdentifier[14]) {
966 default: break;
967 case 'c': // 1 string to match.
968 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
969 break;
970 return 184; // "constant_fold_cast_op"
971 case 'f': // 1 string to match.
972 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
973 break;
974 return 143; // "constant_fold_fptrunc"
975 }
976 break;
977 }
978 break;
979 case 'f': // 1 string to match.
980 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
981 break;
982 return 204; // "fdiv_repeated_divison"
983 case 'i': // 1 string to match.
984 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
985 break;
986 return 27; // "insert_vector_elt_oob"
987 case 'l': // 1 string to match.
988 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
989 break;
990 return 237; // "lshr_of_trunc_of_lshr"
991 case 'r': // 1 string to match.
992 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
993 break;
994 return 97; // "right_identity_one_fp"
995 case 'u': // 2 strings to match.
996 if (RuleIdentifier[1] != 'n')
997 break;
998 switch (RuleIdentifier[2]) {
999 default: break;
1000 case 'd': // 1 string to match.
1001 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1002 break;
1003 return 76; // "undef_to_negative_one"
1004 case 'm': // 1 string to match.
1005 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1006 break;
1007 return 226; // "unmerge_dead_to_trunc"
1008 }
1009 break;
1010 }
1011 break;
1012 case 22: // 13 strings to match.
1013 switch (RuleIdentifier[0]) {
1014 default: break;
1015 case 'c': // 2 strings to match.
1016 if (RuleIdentifier[1] != 'o')
1017 break;
1018 switch (RuleIdentifier[2]) {
1019 default: break;
1020 case 'm': // 1 string to match.
1021 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1022 break;
1023 return 217; // "combine_shuffle_concat"
1024 case 'n': // 1 string to match.
1025 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1026 break;
1027 return 182; // "constant_fold_fp_binop"
1028 }
1029 break;
1030 case 'f': // 4 strings to match.
1031 switch (RuleIdentifier[1]) {
1032 default: break;
1033 case 'o': // 1 string to match.
1034 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1035 break;
1036 return 197; // "fold_binop_into_select"
1037 case 'u': // 3 strings to match.
1038 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1039 break;
1040 switch (RuleIdentifier[13]) {
1041 default: break;
1042 case 'l': // 1 string to match.
1043 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1044 break;
1045 return 170; // "funnel_shift_left_zero"
1046 case 'o': // 1 string to match.
1047 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1048 break;
1049 return 171; // "funnel_shift_overshift"
1050 case 't': // 1 string to match.
1051 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1052 break;
1053 return 168; // "funnel_shift_to_rotate"
1054 }
1055 break;
1056 }
1057 break;
1058 case 'i': // 1 string to match.
1059 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1060 break;
1061 return 117; // "icmp_to_lhs_known_bits"
1062 case 'm': // 1 string to match.
1063 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1064 break;
1065 return 232; // "match_subo_no_overflow"
1066 case 'p': // 1 string to match.
1067 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1068 break;
1069 return 81; // "propagate_undef_any_op"
1070 case 'r': // 2 strings to match.
1071 switch (RuleIdentifier[1]) {
1072 default: break;
1073 case 'e': // 1 string to match.
1074 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1075 break;
1076 return 187; // "redundant_neg_operands"
1077 case 'i': // 1 string to match.
1078 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1079 break;
1080 return 96; // "right_identity_one_int"
1081 }
1082 break;
1083 case 's': // 1 string to match.
1084 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1085 break;
1086 return 121; // "shl_ashr_to_sext_inreg"
1087 case 't': // 1 string to match.
1088 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1089 break;
1090 return 100; // "trunc_buildvector_fold"
1091 }
1092 break;
1093 case 23: // 7 strings to match.
1094 switch (RuleIdentifier[0]) {
1095 default: break;
1096 case 'b': // 1 string to match.
1097 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1098 break;
1099 return 60; // "buildvector_of_truncate"
1100 case 'c': // 1 string to match.
1101 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1102 break;
1103 return 239; // "ctlz_zero_undef_to_ctls"
1104 case 'f': // 1 string to match.
1105 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1106 break;
1107 return 169; // "funnel_shift_right_zero"
1108 case 'i': // 2 strings to match.
1109 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1110 break;
1111 switch (RuleIdentifier[21]) {
1112 default: break;
1113 case 's': // 1 string to match.
1114 if (RuleIdentifier[22] != 'i')
1115 break;
1116 return 152; // "itof_const_zero_fold_si"
1117 case 'u': // 1 string to match.
1118 if (RuleIdentifier[22] != 'i')
1119 break;
1120 return 153; // "itof_const_zero_fold_ui"
1121 }
1122 break;
1123 case 'p': // 1 string to match.
1124 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1125 break;
1126 return 82; // "propagate_undef_all_ops"
1127 case 't': // 1 string to match.
1128 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1129 break;
1130 return 236; // "truncusatu_to_fptouisat"
1131 }
1132 break;
1133 case 24: // 7 strings to match.
1134 switch (RuleIdentifier[0]) {
1135 default: break;
1136 case 'b': // 1 string to match.
1137 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1138 break;
1139 return 77; // "binop_left_undef_to_zero"
1140 case 'c': // 1 string to match.
1141 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1142 break;
1143 return 151; // "constant_fold_fnearbyint"
1144 case 'm': // 1 string to match.
1145 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1146 break;
1147 return 26; // "match_extract_of_element"
1148 case 'n': // 1 string to match.
1149 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1150 break;
1151 return 125; // "narrow_binop_feeding_and"
1152 case 's': // 2 strings to match.
1153 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1154 break;
1155 switch (RuleIdentifier[11]) {
1156 default: break;
1157 case 'o': // 1 string to match.
1158 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1159 break;
1160 return 56; // "sext_inreg_of_sext_inreg"
1161 case 't': // 1 string to match.
1162 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1163 break;
1164 return 135; // "sext_inreg_to_zext_inreg"
1165 }
1166 break;
1167 case 'x': // 1 string to match.
1168 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1169 break;
1170 return 161; // "xor_of_and_with_same_reg"
1171 }
1172 break;
1173 case 25: // 7 strings to match.
1174 switch (RuleIdentifier[0]) {
1175 default: break;
1176 case 'b': // 3 strings to match.
1177 switch (RuleIdentifier[1]) {
1178 default: break;
1179 case 'i': // 2 strings to match.
1180 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1181 break;
1182 switch (RuleIdentifier[22]) {
1183 default: break;
1184 case 'a': // 1 string to match.
1185 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1186 break;
1187 return 178; // "bitfield_extract_from_and"
1188 case 's': // 1 string to match.
1189 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1190 break;
1191 return 179; // "bitfield_extract_from_shr"
1192 }
1193 break;
1194 case 'u': // 1 string to match.
1195 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1196 break;
1197 return 99; // "buildvector_identity_fold"
1198 }
1199 break;
1200 case 'c': // 1 string to match.
1201 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1202 break;
1203 return 218; // "combine_shuffle_undef_rhs"
1204 case 'e': // 1 string to match.
1205 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1206 break;
1207 return 69; // "extract_vec_elt_build_vec"
1208 case 'n': // 1 string to match.
1209 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1210 break;
1211 return 122; // "neg_and_one_to_sext_inreg"
1212 case 'r': // 1 string to match.
1213 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1214 break;
1215 return 106; // "right_identity_neg_one_fp"
1216 }
1217 break;
1218 case 26: // 4 strings to match.
1219 switch (RuleIdentifier[0]) {
1220 default: break;
1221 case 'b': // 1 string to match.
1222 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1223 break;
1224 return 78; // "binop_right_undef_to_undef"
1225 case 'c': // 1 string to match.
1226 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1227 break;
1228 return 209; // "commute_fp_constant_to_rhs"
1229 case 'f': // 1 string to match.
1230 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1231 break;
1232 return 167; // "funnel_shift_from_or_shift"
1233 case 'r': // 1 string to match.
1234 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1235 break;
1236 return 104; // "right_identity_neg_zero_fp"
1237 }
1238 break;
1239 case 27: // 6 strings to match.
1240 switch (RuleIdentifier[0]) {
1241 default: break;
1242 case 'c': // 2 strings to match.
1243 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1244 break;
1245 switch (RuleIdentifier[3]) {
1246 default: break;
1247 case 'b': // 1 string to match.
1248 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1249 break;
1250 return 220; // "combine_use_vector_truncate"
1251 case 'm': // 1 string to match.
1252 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1253 break;
1254 return 208; // "commute_int_constant_to_rhs"
1255 }
1256 break;
1257 case 'd': // 1 string to match.
1258 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1259 break;
1260 return 119; // "double_icmp_zero_or_combine"
1261 case 'r': // 1 string to match.
1262 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1263 break;
1264 return 120; // "redundant_binop_in_equality"
1265 case 't': // 1 string to match.
1266 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1267 break;
1268 return 101; // "trunc_lshr_buildvector_fold"
1269 case 'u': // 1 string to match.
1270 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1271 break;
1272 return 221; // "unmerge_anyext_build_vector"
1273 }
1274 break;
1275 case 28: // 5 strings to match.
1276 switch (RuleIdentifier[0]) {
1277 default: break;
1278 case 'c': // 1 string to match.
1279 if (memcmp(RuleIdentifier.data()+1, "ombine_or_s64_with_s32_mask", 27) != 0)
1280 break;
1281 return 246; // "combine_or_s64_with_s32_mask"
1282 case 'd': // 1 string to match.
1283 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1284 break;
1285 return 118; // "double_icmp_zero_and_combine"
1286 case 'o': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1288 break;
1289 return 138; // "opt_brcond_by_inverting_cond"
1290 case 'p': // 1 string to match.
1291 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1292 break;
1293 return 83; // "propagate_undef_shuffle_mask"
1294 case 's': // 1 string to match.
1295 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1296 break;
1297 return 164; // "shift_of_shifted_logic_chain"
1298 }
1299 break;
1300 case 29: // 7 strings to match.
1301 switch (RuleIdentifier[0]) {
1302 default: break;
1303 case 'b': // 1 string to match.
1304 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1305 break;
1306 return 180; // "bitfield_extract_from_shr_and"
1307 case 'c': // 5 strings to match.
1308 if (RuleIdentifier[1] != 'o')
1309 break;
1310 switch (RuleIdentifier[2]) {
1311 default: break;
1312 case 'm': // 3 strings to match.
1313 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1314 break;
1315 switch (RuleIdentifier[8]) {
1316 default: break;
1317 case 'a': // 1 string to match.
1318 if (memcmp(RuleIdentifier.data()+9, "nd_s64_with_s32_mask", 20) != 0)
1319 break;
1320 return 247; // "combine_and_s64_with_s32_mask"
1321 case 'e': // 1 string to match.
1322 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1323 break;
1324 return 73; // "combine_extracted_vector_load"
1325 case 's': // 1 string to match.
1326 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1327 break;
1328 return 219; // "combine_shuffle_disjoint_mask"
1329 }
1330 break;
1331 case 'n': // 2 strings to match.
1332 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1333 break;
1334 switch (RuleIdentifier[24]) {
1335 default: break;
1336 case 'r': // 1 string to match.
1337 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1338 break;
1339 return 148; // "constant_fold_intrinsic_round"
1340 case 't': // 1 string to match.
1341 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1342 break;
1343 return 147; // "constant_fold_intrinsic_trunc"
1344 }
1345 break;
1346 }
1347 break;
1348 case 'i': // 1 string to match.
1349 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1350 break;
1351 return 116; // "icmp_to_true_false_known_bits"
1352 }
1353 break;
1354 case 30: // 2 strings to match.
1355 switch (RuleIdentifier[0]) {
1356 default: break;
1357 case 'f': // 1 string to match.
1358 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1359 break;
1360 return 44; // "freeze_of_non_undef_non_poison"
1361 case 'r': // 1 string to match.
1362 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1363 break;
1364 return 105; // "right_identity_neg_zero_fp_nsz"
1365 }
1366 break;
1367 case 31: // 2 strings to match.
1368 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1369 break;
1370 switch (RuleIdentifier[22]) {
1371 default: break;
1372 case 'e': // 1 string to match.
1373 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1374 break;
1375 return 25; // "insert_vector_element_elt_undef"
1376 case 'i': // 1 string to match.
1377 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1378 break;
1379 return 24; // "insert_vector_element_idx_undef"
1380 }
1381 break;
1382 case 32: // 4 strings to match.
1383 switch (RuleIdentifier[0]) {
1384 default: break;
1385 case 'b': // 1 string to match.
1386 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1387 break;
1388 return 177; // "bitfield_extract_from_sext_inreg"
1389 case 'c': // 2 strings to match.
1390 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1391 break;
1392 switch (RuleIdentifier[9]) {
1393 default: break;
1394 case 'a': // 1 string to match.
1395 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1396 break;
1397 return 189; // "combine_fadd_fmul_to_fmad_or_fma"
1398 case 's': // 1 string to match.
1399 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1400 break;
1401 return 193; // "combine_fsub_fmul_to_fmad_or_fma"
1402 }
1403 break;
1404 case 'e': // 1 string to match.
1405 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1406 break;
1407 return 28; // "extract_vector_element_not_const"
1408 }
1409 break;
1410 case 33: // 1 string to match.
1411 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1412 break;
1413 return 149; // "constant_fold_intrinsic_roundeven"
1414 case 34: // 2 strings to match.
1415 switch (RuleIdentifier[0]) {
1416 default: break;
1417 case 'c': // 1 string to match.
1418 if (memcmp(RuleIdentifier.data()+1, "ombine_fmul_with_select_to_fldexp", 33) != 0)
1419 break;
1420 return 242; // "combine_fmul_with_select_to_fldexp"
1421 case 'e': // 1 string to match.
1422 if (memcmp(RuleIdentifier.data()+1, "xtract_all_elts_from_build_vector", 33) != 0)
1423 break;
1424 return 70; // "extract_all_elts_from_build_vector"
1425 }
1426 break;
1427 case 35: // 1 string to match.
1428 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1429 break;
1430 return 30; // "extract_vector_element_build_vector"
1431 case 36: // 4 strings to match.
1432 switch (RuleIdentifier[0]) {
1433 default: break;
1434 case 'c': // 2 strings to match.
1435 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1436 break;
1437 switch (RuleIdentifier[8]) {
1438 default: break;
1439 case 'f': // 1 string to match.
1440 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1441 break;
1442 return 191; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1443 case 'i': // 1 string to match.
1444 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1445 break;
1446 return 68; // "combine_insert_vec_elts_build_vector"
1447 }
1448 break;
1449 case 'i': // 1 string to match.
1450 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1451 break;
1452 return 85; // "insert_extract_vec_elt_out_of_bounds"
1453 case 'm': // 1 string to match.
1454 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1455 break;
1456 return 23; // "match_extract_of_element_undef_index"
1457 }
1458 break;
1459 case 37: // 4 strings to match.
1460 switch (RuleIdentifier[0]) {
1461 default: break;
1462 case 'c': // 1 string to match.
1463 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1464 break;
1465 return 194; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1466 case 'e': // 1 string to match.
1467 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1468 break;
1469 return 38; // "extract_vector_element_shuffle_vector"
1470 case 'h': // 1 string to match.
1471 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1472 break;
1473 return 109; // "hoist_logic_op_with_same_opcode_hands"
1474 case 'm': // 1 string to match.
1475 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1476 break;
1477 return 22; // "match_extract_of_element_undef_vector"
1478 }
1479 break;
1480 case 38: // 3 strings to match.
1481 if (memcmp(RuleIdentifier.data()+0, "combine_", 8) != 0)
1482 break;
1483 switch (RuleIdentifier[8]) {
1484 default: break;
1485 case 'f': // 2 strings to match.
1486 switch (RuleIdentifier[9]) {
1487 default: break;
1488 case 'a': // 1 string to match.
1489 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1490 break;
1491 return 190; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1492 case 's': // 1 string to match.
1493 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1494 break;
1495 return 195; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1496 }
1497 break;
1498 case 's': // 1 string to match.
1499 if (memcmp(RuleIdentifier.data()+9, "huffle_vector_to_build_vector", 29) != 0)
1500 break;
1501 return 245; // "combine_shuffle_vector_to_build_vector"
1502 }
1503 break;
1504 case 40: // 1 string to match.
1505 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1506 break;
1507 return 29; // "extract_vector_element_different_indices"
1508 case 42: // 9 strings to match.
1509 switch (RuleIdentifier[0]) {
1510 default: break;
1511 case 'c': // 1 string to match.
1512 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1513 break;
1514 return 192; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1515 case 'e': // 7 strings to match.
1516 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1517 break;
1518 switch (RuleIdentifier[41]) {
1519 default: break;
1520 case '2': // 1 string to match.
1521 return 31; // "extract_vector_element_build_vector_trunc2"
1522 case '3': // 1 string to match.
1523 return 32; // "extract_vector_element_build_vector_trunc3"
1524 case '4': // 1 string to match.
1525 return 33; // "extract_vector_element_build_vector_trunc4"
1526 case '5': // 1 string to match.
1527 return 34; // "extract_vector_element_build_vector_trunc5"
1528 case '6': // 1 string to match.
1529 return 35; // "extract_vector_element_build_vector_trunc6"
1530 case '7': // 1 string to match.
1531 return 36; // "extract_vector_element_build_vector_trunc7"
1532 case '8': // 1 string to match.
1533 return 37; // "extract_vector_element_build_vector_trunc8"
1534 }
1535 break;
1536 case 'f': // 1 string to match.
1537 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1538 break;
1539 return 172; // "funnel_shift_or_shift_to_funnel_shift_left"
1540 }
1541 break;
1542 case 43: // 2 strings to match.
1543 switch (RuleIdentifier[0]) {
1544 default: break;
1545 case 'c': // 1 string to match.
1546 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1547 break;
1548 return 196; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1549 case 'f': // 1 string to match.
1550 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1551 break;
1552 return 173; // "funnel_shift_or_shift_to_funnel_shift_right"
1553 }
1554 break;
1555 case 44: // 1 string to match.
1556 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1557 break;
1558 return 39; // "insert_vector_element_extract_vector_element"
1559 case 46: // 1 string to match.
1560 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1561 break;
1562 return 45; // "push_freeze_to_prevent_poison_from_propagating"
1563 }
1564#endif // ifndef NDEBUG
1565
1566 return std::nullopt;
1567}
1568static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1569 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1570 if (!RangePair.second.empty()) {
1571 const auto First = getRuleIdxForIdentifier(RangePair.first);
1572 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1573 if (!First || !Last)
1574 return std::nullopt;
1575 if (First >= Last)
1576 report_fatal_error("Beginning of range should be before end of range");
1577 return {{*First, *Last + 1}};
1578 }
1579 if (RangePair.first == "*") {
1580 return {{0, 249}};
1581 }
1582 const auto I = getRuleIdxForIdentifier(RangePair.first);
1583 if (!I)
1584 return std::nullopt;
1585 return {{*I, *I + 1}};
1586}
1587
1588bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1589 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1590 if (!MaybeRange)
1591 return false;
1592 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1593 DisabledRules.reset(I);
1594 return true;
1595}
1596
1597bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1598 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1599 if (!MaybeRange)
1600 return false;
1601 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1602 DisabledRules.set(I);
1603 return true;
1604}
1605
1606static std::vector<std::string> AMDGPUPreLegalizerCombinerOption;
1607static cl::list<std::string> AMDGPUPreLegalizerCombinerDisableOption(
1608 "amdgpuprelegalizercombiner-disable-rule",
1609 cl::desc("Disable one or more combiner rules temporarily in the AMDGPUPreLegalizerCombiner pass"),
1610 cl::CommaSeparated,
1611 cl::Hidden,
1612 cl::cat(GICombinerOptionCategory),
1613 cl::callback([](const std::string &Str) {
1614 AMDGPUPreLegalizerCombinerOption.push_back(Str);
1615 }));
1616static cl::list<std::string> AMDGPUPreLegalizerCombinerOnlyEnableOption(
1617 "amdgpuprelegalizercombiner-only-enable-rule",
1618 cl::desc("Disable all rules in the AMDGPUPreLegalizerCombiner pass then re-enable the specified ones"),
1619 cl::Hidden,
1620 cl::cat(GICombinerOptionCategory),
1621 cl::callback([](const std::string &CommaSeparatedArg) {
1622 StringRef Str = CommaSeparatedArg;
1623 AMDGPUPreLegalizerCombinerOption.push_back("*");
1624 do {
1625 auto X = Str.split(",");
1626 AMDGPUPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1627 Str = X.second;
1628 } while (!Str.empty());
1629 }));
1630
1631
1632bool AMDGPUPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1633 return !DisabledRules.test(RuleID);
1634}
1635bool AMDGPUPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1636 for (StringRef Identifier : AMDGPUPreLegalizerCombinerOption) {
1637 bool Enabled = Identifier.consume_front("!");
1638 if (Enabled && !setRuleEnabled(Identifier))
1639 return false;
1640 if (!Enabled && !setRuleDisabled(Identifier))
1641 return false;
1642 }
1643 return true;
1644}
1645
1646
1647#endif // GET_GICOMBINER_TYPES
1648
1649#ifdef GET_GICOMBINER_TYPES
1650
1651const unsigned MAX_SUBTARGET_PREDICATES = 0;
1652using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1653
1654#endif // GET_GICOMBINER_TYPES
1655
1656#ifdef GET_GICOMBINER_CLASS_MEMBERS
1657
1658PredicateBitset AvailableModuleFeatures;
1659mutable PredicateBitset AvailableFunctionFeatures;
1660PredicateBitset getAvailableFeatures() const {
1661 return AvailableModuleFeatures | AvailableFunctionFeatures;
1662}
1663PredicateBitset
1664computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const;
1665PredicateBitset
1666computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget,
1667 const MachineFunction *MF) const;
1668void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1669
1670#endif // GET_GICOMBINER_CLASS_MEMBERS
1671
1672#ifdef GET_GICOMBINER_CLASS_MEMBERS
1673
1674 mutable MatcherState State;
1675 typedef ComplexRendererFns(AMDGPUPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1676 typedef void(AMDGPUPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1677 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1678 static AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1679 static AMDGPUPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1680 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1681 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1682 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1683 const uint8_t *getMatchTable() const override;
1684 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1685 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1686 bool testSimplePredicate(unsigned PredicateID) const override;
1687 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1688
1689#endif // GET_GICOMBINER_CLASS_MEMBERS
1690
1691#ifdef GET_GICOMBINER_IMPL
1692
1693// LLT Objects.
1694enum {
1695 GILLT_s32,
1696 GILLT_s64,
1697};
1698const static size_t NumTypeObjects = 2;
1699const static LLT TypeObjects[] = {
1700 LLT::scalar(32),
1701 LLT::scalar(64),
1702};
1703
1704// Bits for subtarget features that participate in instruction matching.
1705enum SubtargetFeatureBits : uint8_t {
1706};
1707
1708PredicateBitset AMDGPUPreLegalizerCombinerImpl::
1709computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const {
1710 PredicateBitset Features{};
1711 return Features;
1712}
1713
1714void AMDGPUPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1715 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AMDGPUSubtarget *)&MF.getSubtarget(), &MF);
1716}
1717PredicateBitset AMDGPUPreLegalizerCombinerImpl::
1718computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget, const MachineFunction *MF) const {
1719 PredicateBitset Features{};
1720 return Features;
1721}
1722
1723// Feature bitsets.
1724enum {
1725 GIFBS_Invalid,
1726};
1727constexpr static PredicateBitset FeatureBitsets[] {
1728 {}, // GIFBS_Invalid
1729};
1730
1731// ComplexPattern predicates.
1732enum {
1733 GICP_Invalid,
1734};
1735// See constructor for table contents
1736
1737AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn
1738AMDGPUPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1739 nullptr, // GICP_Invalid
1740};
1741
1742enum {
1743 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1744 GICXXPred_MI_Predicate_GICombiner1,
1745 GICXXPred_MI_Predicate_GICombiner2,
1746 GICXXPred_MI_Predicate_GICombiner3,
1747 GICXXPred_MI_Predicate_GICombiner4,
1748 GICXXPred_MI_Predicate_GICombiner5,
1749 GICXXPred_MI_Predicate_GICombiner6,
1750 GICXXPred_MI_Predicate_GICombiner7,
1751 GICXXPred_MI_Predicate_GICombiner8,
1752 GICXXPred_MI_Predicate_GICombiner9,
1753 GICXXPred_MI_Predicate_GICombiner10,
1754 GICXXPred_MI_Predicate_GICombiner11,
1755 GICXXPred_MI_Predicate_GICombiner12,
1756 GICXXPred_MI_Predicate_GICombiner13,
1757 GICXXPred_MI_Predicate_GICombiner14,
1758 GICXXPred_MI_Predicate_GICombiner15,
1759 GICXXPred_MI_Predicate_GICombiner16,
1760};
1761bool AMDGPUPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1762 switch (PredicateID) {
1763 case GICXXPred_MI_Predicate_GICombiner0: {
1764 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1765 }
1766 case GICXXPred_MI_Predicate_GICombiner1: {
1767 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1768 }
1769 case GICXXPred_MI_Predicate_GICombiner2: {
1770 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1771 }
1772 case GICXXPred_MI_Predicate_GICombiner3: {
1773 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1774 }
1775 case GICXXPred_MI_Predicate_GICombiner4: {
1776 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1777 }
1778 case GICXXPred_MI_Predicate_GICombiner5: {
1779 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1780 }
1781 case GICXXPred_MI_Predicate_GICombiner6: {
1782 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1783 }
1784 case GICXXPred_MI_Predicate_GICombiner7: {
1785 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1786 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1787 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1788 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1789 }
1790 case GICXXPred_MI_Predicate_GICombiner8: {
1791 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1792 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1793 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1794 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1795 }
1796 case GICXXPred_MI_Predicate_GICombiner9: {
1797 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1798 Helper.isLegalOrBeforeLegalizer(
1799 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1800 }
1801 case GICXXPred_MI_Predicate_GICombiner10: {
1802 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1803 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1804 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1805 }
1806 case GICXXPred_MI_Predicate_GICombiner11: {
1807 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1808 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1809 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1810 }
1811 case GICXXPred_MI_Predicate_GICombiner12: {
1812 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1813 }
1814 case GICXXPred_MI_Predicate_GICombiner13: {
1815 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1816 }
1817 case GICXXPred_MI_Predicate_GICombiner14: {
1818 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1819 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1820 }
1821 case GICXXPred_MI_Predicate_GICombiner15: {
1822 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1823 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1824 }
1825 case GICXXPred_MI_Predicate_GICombiner16: {
1826 return Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(1).getReg()) ||
1827 Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(2).getReg());
1828 }
1829 }
1830 llvm_unreachable("Unknown predicate");
1831 return false;
1832}
1833bool AMDGPUPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1834 llvm_unreachable("Unknown predicate");
1835 return false;
1836}
1837bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1838 llvm_unreachable("Unknown predicate");
1839 return false;
1840}
1841bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1842 llvm_unreachable("Unknown predicate");
1843 return false;
1844}
1845bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1846 llvm_unreachable("Unknown predicate");
1847 return false;
1848}
1849enum {
1850 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1851 GICXXPred_Simple_IsRule1Enabled,
1852 GICXXPred_Simple_IsRule2Enabled,
1853 GICXXPred_Simple_IsRule3Enabled,
1854 GICXXPred_Simple_IsRule4Enabled,
1855 GICXXPred_Simple_IsRule5Enabled,
1856 GICXXPred_Simple_IsRule6Enabled,
1857 GICXXPred_Simple_IsRule7Enabled,
1858 GICXXPred_Simple_IsRule8Enabled,
1859 GICXXPred_Simple_IsRule9Enabled,
1860 GICXXPred_Simple_IsRule10Enabled,
1861 GICXXPred_Simple_IsRule11Enabled,
1862 GICXXPred_Simple_IsRule12Enabled,
1863 GICXXPred_Simple_IsRule13Enabled,
1864 GICXXPred_Simple_IsRule14Enabled,
1865 GICXXPred_Simple_IsRule15Enabled,
1866 GICXXPred_Simple_IsRule16Enabled,
1867 GICXXPred_Simple_IsRule17Enabled,
1868 GICXXPred_Simple_IsRule18Enabled,
1869 GICXXPred_Simple_IsRule19Enabled,
1870 GICXXPred_Simple_IsRule20Enabled,
1871 GICXXPred_Simple_IsRule21Enabled,
1872 GICXXPred_Simple_IsRule22Enabled,
1873 GICXXPred_Simple_IsRule23Enabled,
1874 GICXXPred_Simple_IsRule24Enabled,
1875 GICXXPred_Simple_IsRule25Enabled,
1876 GICXXPred_Simple_IsRule26Enabled,
1877 GICXXPred_Simple_IsRule27Enabled,
1878 GICXXPred_Simple_IsRule28Enabled,
1879 GICXXPred_Simple_IsRule29Enabled,
1880 GICXXPred_Simple_IsRule30Enabled,
1881 GICXXPred_Simple_IsRule31Enabled,
1882 GICXXPred_Simple_IsRule32Enabled,
1883 GICXXPred_Simple_IsRule33Enabled,
1884 GICXXPred_Simple_IsRule34Enabled,
1885 GICXXPred_Simple_IsRule35Enabled,
1886 GICXXPred_Simple_IsRule36Enabled,
1887 GICXXPred_Simple_IsRule37Enabled,
1888 GICXXPred_Simple_IsRule38Enabled,
1889 GICXXPred_Simple_IsRule39Enabled,
1890 GICXXPred_Simple_IsRule40Enabled,
1891 GICXXPred_Simple_IsRule41Enabled,
1892 GICXXPred_Simple_IsRule42Enabled,
1893 GICXXPred_Simple_IsRule43Enabled,
1894 GICXXPred_Simple_IsRule44Enabled,
1895 GICXXPred_Simple_IsRule45Enabled,
1896 GICXXPred_Simple_IsRule46Enabled,
1897 GICXXPred_Simple_IsRule47Enabled,
1898 GICXXPred_Simple_IsRule48Enabled,
1899 GICXXPred_Simple_IsRule49Enabled,
1900 GICXXPred_Simple_IsRule50Enabled,
1901 GICXXPred_Simple_IsRule51Enabled,
1902 GICXXPred_Simple_IsRule52Enabled,
1903 GICXXPred_Simple_IsRule53Enabled,
1904 GICXXPred_Simple_IsRule54Enabled,
1905 GICXXPred_Simple_IsRule55Enabled,
1906 GICXXPred_Simple_IsRule56Enabled,
1907 GICXXPred_Simple_IsRule57Enabled,
1908 GICXXPred_Simple_IsRule58Enabled,
1909 GICXXPred_Simple_IsRule59Enabled,
1910 GICXXPred_Simple_IsRule60Enabled,
1911 GICXXPred_Simple_IsRule61Enabled,
1912 GICXXPred_Simple_IsRule62Enabled,
1913 GICXXPred_Simple_IsRule63Enabled,
1914 GICXXPred_Simple_IsRule64Enabled,
1915 GICXXPred_Simple_IsRule65Enabled,
1916 GICXXPred_Simple_IsRule66Enabled,
1917 GICXXPred_Simple_IsRule67Enabled,
1918 GICXXPred_Simple_IsRule68Enabled,
1919 GICXXPred_Simple_IsRule69Enabled,
1920 GICXXPred_Simple_IsRule70Enabled,
1921 GICXXPred_Simple_IsRule71Enabled,
1922 GICXXPred_Simple_IsRule72Enabled,
1923 GICXXPred_Simple_IsRule73Enabled,
1924 GICXXPred_Simple_IsRule74Enabled,
1925 GICXXPred_Simple_IsRule75Enabled,
1926 GICXXPred_Simple_IsRule76Enabled,
1927 GICXXPred_Simple_IsRule77Enabled,
1928 GICXXPred_Simple_IsRule78Enabled,
1929 GICXXPred_Simple_IsRule79Enabled,
1930 GICXXPred_Simple_IsRule80Enabled,
1931 GICXXPred_Simple_IsRule81Enabled,
1932 GICXXPred_Simple_IsRule82Enabled,
1933 GICXXPred_Simple_IsRule83Enabled,
1934 GICXXPred_Simple_IsRule84Enabled,
1935 GICXXPred_Simple_IsRule85Enabled,
1936 GICXXPred_Simple_IsRule86Enabled,
1937 GICXXPred_Simple_IsRule87Enabled,
1938 GICXXPred_Simple_IsRule88Enabled,
1939 GICXXPred_Simple_IsRule89Enabled,
1940 GICXXPred_Simple_IsRule90Enabled,
1941 GICXXPred_Simple_IsRule91Enabled,
1942 GICXXPred_Simple_IsRule92Enabled,
1943 GICXXPred_Simple_IsRule93Enabled,
1944 GICXXPred_Simple_IsRule94Enabled,
1945 GICXXPred_Simple_IsRule95Enabled,
1946 GICXXPred_Simple_IsRule96Enabled,
1947 GICXXPred_Simple_IsRule97Enabled,
1948 GICXXPred_Simple_IsRule98Enabled,
1949 GICXXPred_Simple_IsRule99Enabled,
1950 GICXXPred_Simple_IsRule100Enabled,
1951 GICXXPred_Simple_IsRule101Enabled,
1952 GICXXPred_Simple_IsRule102Enabled,
1953 GICXXPred_Simple_IsRule103Enabled,
1954 GICXXPred_Simple_IsRule104Enabled,
1955 GICXXPred_Simple_IsRule105Enabled,
1956 GICXXPred_Simple_IsRule106Enabled,
1957 GICXXPred_Simple_IsRule107Enabled,
1958 GICXXPred_Simple_IsRule108Enabled,
1959 GICXXPred_Simple_IsRule109Enabled,
1960 GICXXPred_Simple_IsRule110Enabled,
1961 GICXXPred_Simple_IsRule111Enabled,
1962 GICXXPred_Simple_IsRule112Enabled,
1963 GICXXPred_Simple_IsRule113Enabled,
1964 GICXXPred_Simple_IsRule114Enabled,
1965 GICXXPred_Simple_IsRule115Enabled,
1966 GICXXPred_Simple_IsRule116Enabled,
1967 GICXXPred_Simple_IsRule117Enabled,
1968 GICXXPred_Simple_IsRule118Enabled,
1969 GICXXPred_Simple_IsRule119Enabled,
1970 GICXXPred_Simple_IsRule120Enabled,
1971 GICXXPred_Simple_IsRule121Enabled,
1972 GICXXPred_Simple_IsRule122Enabled,
1973 GICXXPred_Simple_IsRule123Enabled,
1974 GICXXPred_Simple_IsRule124Enabled,
1975 GICXXPred_Simple_IsRule125Enabled,
1976 GICXXPred_Simple_IsRule126Enabled,
1977 GICXXPred_Simple_IsRule127Enabled,
1978 GICXXPred_Simple_IsRule128Enabled,
1979 GICXXPred_Simple_IsRule129Enabled,
1980 GICXXPred_Simple_IsRule130Enabled,
1981 GICXXPred_Simple_IsRule131Enabled,
1982 GICXXPred_Simple_IsRule132Enabled,
1983 GICXXPred_Simple_IsRule133Enabled,
1984 GICXXPred_Simple_IsRule134Enabled,
1985 GICXXPred_Simple_IsRule135Enabled,
1986 GICXXPred_Simple_IsRule136Enabled,
1987 GICXXPred_Simple_IsRule137Enabled,
1988 GICXXPred_Simple_IsRule138Enabled,
1989 GICXXPred_Simple_IsRule139Enabled,
1990 GICXXPred_Simple_IsRule140Enabled,
1991 GICXXPred_Simple_IsRule141Enabled,
1992 GICXXPred_Simple_IsRule142Enabled,
1993 GICXXPred_Simple_IsRule143Enabled,
1994 GICXXPred_Simple_IsRule144Enabled,
1995 GICXXPred_Simple_IsRule145Enabled,
1996 GICXXPred_Simple_IsRule146Enabled,
1997 GICXXPred_Simple_IsRule147Enabled,
1998 GICXXPred_Simple_IsRule148Enabled,
1999 GICXXPred_Simple_IsRule149Enabled,
2000 GICXXPred_Simple_IsRule150Enabled,
2001 GICXXPred_Simple_IsRule151Enabled,
2002 GICXXPred_Simple_IsRule152Enabled,
2003 GICXXPred_Simple_IsRule153Enabled,
2004 GICXXPred_Simple_IsRule154Enabled,
2005 GICXXPred_Simple_IsRule155Enabled,
2006 GICXXPred_Simple_IsRule156Enabled,
2007 GICXXPred_Simple_IsRule157Enabled,
2008 GICXXPred_Simple_IsRule158Enabled,
2009 GICXXPred_Simple_IsRule159Enabled,
2010 GICXXPred_Simple_IsRule160Enabled,
2011 GICXXPred_Simple_IsRule161Enabled,
2012 GICXXPred_Simple_IsRule162Enabled,
2013 GICXXPred_Simple_IsRule163Enabled,
2014 GICXXPred_Simple_IsRule164Enabled,
2015 GICXXPred_Simple_IsRule165Enabled,
2016 GICXXPred_Simple_IsRule166Enabled,
2017 GICXXPred_Simple_IsRule167Enabled,
2018 GICXXPred_Simple_IsRule168Enabled,
2019 GICXXPred_Simple_IsRule169Enabled,
2020 GICXXPred_Simple_IsRule170Enabled,
2021 GICXXPred_Simple_IsRule171Enabled,
2022 GICXXPred_Simple_IsRule172Enabled,
2023 GICXXPred_Simple_IsRule173Enabled,
2024 GICXXPred_Simple_IsRule174Enabled,
2025 GICXXPred_Simple_IsRule175Enabled,
2026 GICXXPred_Simple_IsRule176Enabled,
2027 GICXXPred_Simple_IsRule177Enabled,
2028 GICXXPred_Simple_IsRule178Enabled,
2029 GICXXPred_Simple_IsRule179Enabled,
2030 GICXXPred_Simple_IsRule180Enabled,
2031 GICXXPred_Simple_IsRule181Enabled,
2032 GICXXPred_Simple_IsRule182Enabled,
2033 GICXXPred_Simple_IsRule183Enabled,
2034 GICXXPred_Simple_IsRule184Enabled,
2035 GICXXPred_Simple_IsRule185Enabled,
2036 GICXXPred_Simple_IsRule186Enabled,
2037 GICXXPred_Simple_IsRule187Enabled,
2038 GICXXPred_Simple_IsRule188Enabled,
2039 GICXXPred_Simple_IsRule189Enabled,
2040 GICXXPred_Simple_IsRule190Enabled,
2041 GICXXPred_Simple_IsRule191Enabled,
2042 GICXXPred_Simple_IsRule192Enabled,
2043 GICXXPred_Simple_IsRule193Enabled,
2044 GICXXPred_Simple_IsRule194Enabled,
2045 GICXXPred_Simple_IsRule195Enabled,
2046 GICXXPred_Simple_IsRule196Enabled,
2047 GICXXPred_Simple_IsRule197Enabled,
2048 GICXXPred_Simple_IsRule198Enabled,
2049 GICXXPred_Simple_IsRule199Enabled,
2050 GICXXPred_Simple_IsRule200Enabled,
2051 GICXXPred_Simple_IsRule201Enabled,
2052 GICXXPred_Simple_IsRule202Enabled,
2053 GICXXPred_Simple_IsRule203Enabled,
2054 GICXXPred_Simple_IsRule204Enabled,
2055 GICXXPred_Simple_IsRule205Enabled,
2056 GICXXPred_Simple_IsRule206Enabled,
2057 GICXXPred_Simple_IsRule207Enabled,
2058 GICXXPred_Simple_IsRule208Enabled,
2059 GICXXPred_Simple_IsRule209Enabled,
2060 GICXXPred_Simple_IsRule210Enabled,
2061 GICXXPred_Simple_IsRule211Enabled,
2062 GICXXPred_Simple_IsRule212Enabled,
2063 GICXXPred_Simple_IsRule213Enabled,
2064 GICXXPred_Simple_IsRule214Enabled,
2065 GICXXPred_Simple_IsRule215Enabled,
2066 GICXXPred_Simple_IsRule216Enabled,
2067 GICXXPred_Simple_IsRule217Enabled,
2068 GICXXPred_Simple_IsRule218Enabled,
2069 GICXXPred_Simple_IsRule219Enabled,
2070 GICXXPred_Simple_IsRule220Enabled,
2071 GICXXPred_Simple_IsRule221Enabled,
2072 GICXXPred_Simple_IsRule222Enabled,
2073 GICXXPred_Simple_IsRule223Enabled,
2074 GICXXPred_Simple_IsRule224Enabled,
2075 GICXXPred_Simple_IsRule225Enabled,
2076 GICXXPred_Simple_IsRule226Enabled,
2077 GICXXPred_Simple_IsRule227Enabled,
2078 GICXXPred_Simple_IsRule228Enabled,
2079 GICXXPred_Simple_IsRule229Enabled,
2080 GICXXPred_Simple_IsRule230Enabled,
2081 GICXXPred_Simple_IsRule231Enabled,
2082 GICXXPred_Simple_IsRule232Enabled,
2083 GICXXPred_Simple_IsRule233Enabled,
2084 GICXXPred_Simple_IsRule234Enabled,
2085 GICXXPred_Simple_IsRule235Enabled,
2086 GICXXPred_Simple_IsRule236Enabled,
2087 GICXXPred_Simple_IsRule237Enabled,
2088 GICXXPred_Simple_IsRule238Enabled,
2089 GICXXPred_Simple_IsRule239Enabled,
2090 GICXXPred_Simple_IsRule240Enabled,
2091 GICXXPred_Simple_IsRule241Enabled,
2092 GICXXPred_Simple_IsRule242Enabled,
2093 GICXXPred_Simple_IsRule243Enabled,
2094 GICXXPred_Simple_IsRule244Enabled,
2095 GICXXPred_Simple_IsRule245Enabled,
2096 GICXXPred_Simple_IsRule246Enabled,
2097 GICXXPred_Simple_IsRule247Enabled,
2098 GICXXPred_Simple_IsRule248Enabled,
2099};
2100
2101bool AMDGPUPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2102 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2103}
2104// Custom renderers.
2105enum {
2106 GICR_Invalid,
2107};
2108AMDGPUPreLegalizerCombinerImpl::CustomRendererFn
2109AMDGPUPreLegalizerCombinerImpl::CustomRenderers[] = {
2110 nullptr, // GICR_Invalid
2111};
2112
2113bool AMDGPUPreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2114 const TargetSubtargetInfo &ST = MF.getSubtarget();
2115 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2116 B.setInstrAndDebugLoc(I);
2117 State.MIs.clear();
2118 State.MIs.push_back(&I);
2119 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2120 return true;
2121 }
2122
2123 return false;
2124}
2125
2126enum {
2127 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2128 GICXXCustomAction_GICombiner1,
2129 GICXXCustomAction_GICombiner2,
2130 GICXXCustomAction_GICombiner3,
2131 GICXXCustomAction_GICombiner4,
2132 GICXXCustomAction_GICombiner5,
2133 GICXXCustomAction_GICombiner6,
2134 GICXXCustomAction_GICombiner7,
2135 GICXXCustomAction_GICombiner8,
2136 GICXXCustomAction_GICombiner9,
2137 GICXXCustomAction_GICombiner10,
2138 GICXXCustomAction_GICombiner11,
2139 GICXXCustomAction_GICombiner12,
2140 GICXXCustomAction_GICombiner13,
2141 GICXXCustomAction_GICombiner14,
2142 GICXXCustomAction_GICombiner15,
2143 GICXXCustomAction_GICombiner16,
2144 GICXXCustomAction_GICombiner17,
2145 GICXXCustomAction_GICombiner18,
2146 GICXXCustomAction_GICombiner19,
2147 GICXXCustomAction_GICombiner20,
2148 GICXXCustomAction_GICombiner21,
2149 GICXXCustomAction_GICombiner22,
2150 GICXXCustomAction_GICombiner23,
2151 GICXXCustomAction_GICombiner24,
2152 GICXXCustomAction_GICombiner25,
2153 GICXXCustomAction_GICombiner26,
2154 GICXXCustomAction_GICombiner27,
2155 GICXXCustomAction_GICombiner28,
2156 GICXXCustomAction_GICombiner29,
2157 GICXXCustomAction_GICombiner30,
2158 GICXXCustomAction_GICombiner31,
2159 GICXXCustomAction_GICombiner32,
2160 GICXXCustomAction_GICombiner33,
2161 GICXXCustomAction_GICombiner34,
2162 GICXXCustomAction_GICombiner35,
2163 GICXXCustomAction_GICombiner36,
2164 GICXXCustomAction_GICombiner37,
2165 GICXXCustomAction_GICombiner38,
2166 GICXXCustomAction_GICombiner39,
2167 GICXXCustomAction_GICombiner40,
2168 GICXXCustomAction_GICombiner41,
2169 GICXXCustomAction_GICombiner42,
2170 GICXXCustomAction_GICombiner43,
2171 GICXXCustomAction_GICombiner44,
2172 GICXXCustomAction_GICombiner45,
2173 GICXXCustomAction_GICombiner46,
2174 GICXXCustomAction_GICombiner47,
2175 GICXXCustomAction_GICombiner48,
2176 GICXXCustomAction_GICombiner49,
2177 GICXXCustomAction_GICombiner50,
2178 GICXXCustomAction_GICombiner51,
2179 GICXXCustomAction_GICombiner52,
2180 GICXXCustomAction_GICombiner53,
2181 GICXXCustomAction_GICombiner54,
2182 GICXXCustomAction_GICombiner55,
2183 GICXXCustomAction_GICombiner56,
2184 GICXXCustomAction_GICombiner57,
2185 GICXXCustomAction_GICombiner58,
2186 GICXXCustomAction_GICombiner59,
2187 GICXXCustomAction_GICombiner60,
2188 GICXXCustomAction_GICombiner61,
2189 GICXXCustomAction_GICombiner62,
2190 GICXXCustomAction_GICombiner63,
2191 GICXXCustomAction_GICombiner64,
2192 GICXXCustomAction_GICombiner65,
2193 GICXXCustomAction_GICombiner66,
2194 GICXXCustomAction_GICombiner67,
2195 GICXXCustomAction_GICombiner68,
2196 GICXXCustomAction_GICombiner69,
2197 GICXXCustomAction_GICombiner70,
2198 GICXXCustomAction_GICombiner71,
2199 GICXXCustomAction_GICombiner72,
2200 GICXXCustomAction_GICombiner73,
2201 GICXXCustomAction_GICombiner74,
2202 GICXXCustomAction_GICombiner75,
2203 GICXXCustomAction_GICombiner76,
2204 GICXXCustomAction_GICombiner77,
2205 GICXXCustomAction_GICombiner78,
2206 GICXXCustomAction_GICombiner79,
2207 GICXXCustomAction_GICombiner80,
2208 GICXXCustomAction_GICombiner81,
2209 GICXXCustomAction_GICombiner82,
2210 GICXXCustomAction_GICombiner83,
2211 GICXXCustomAction_GICombiner84,
2212 GICXXCustomAction_GICombiner85,
2213 GICXXCustomAction_GICombiner86,
2214 GICXXCustomAction_GICombiner87,
2215 GICXXCustomAction_GICombiner88,
2216 GICXXCustomAction_GICombiner89,
2217 GICXXCustomAction_GICombiner90,
2218 GICXXCustomAction_GICombiner91,
2219 GICXXCustomAction_GICombiner92,
2220 GICXXCustomAction_GICombiner93,
2221 GICXXCustomAction_GICombiner94,
2222 GICXXCustomAction_GICombiner95,
2223 GICXXCustomAction_GICombiner96,
2224 GICXXCustomAction_GICombiner97,
2225 GICXXCustomAction_GICombiner98,
2226 GICXXCustomAction_GICombiner99,
2227 GICXXCustomAction_GICombiner100,
2228 GICXXCustomAction_GICombiner101,
2229 GICXXCustomAction_GICombiner102,
2230 GICXXCustomAction_GICombiner103,
2231 GICXXCustomAction_GICombiner104,
2232 GICXXCustomAction_GICombiner105,
2233 GICXXCustomAction_GICombiner106,
2234 GICXXCustomAction_GICombiner107,
2235 GICXXCustomAction_GICombiner108,
2236 GICXXCustomAction_GICombiner109,
2237 GICXXCustomAction_GICombiner110,
2238 GICXXCustomAction_GICombiner111,
2239 GICXXCustomAction_GICombiner112,
2240 GICXXCustomAction_GICombiner113,
2241 GICXXCustomAction_GICombiner114,
2242 GICXXCustomAction_GICombiner115,
2243 GICXXCustomAction_GICombiner116,
2244 GICXXCustomAction_GICombiner117,
2245 GICXXCustomAction_GICombiner118,
2246 GICXXCustomAction_GICombiner119,
2247 GICXXCustomAction_GICombiner120,
2248 GICXXCustomAction_GICombiner121,
2249 GICXXCustomAction_GICombiner122,
2250 GICXXCustomAction_GICombiner123,
2251 GICXXCustomAction_GICombiner124,
2252 GICXXCustomAction_GICombiner125,
2253 GICXXCustomAction_GICombiner126,
2254 GICXXCustomAction_GICombiner127,
2255 GICXXCustomAction_GICombiner128,
2256 GICXXCustomAction_GICombiner129,
2257 GICXXCustomAction_GICombiner130,
2258 GICXXCustomAction_GICombiner131,
2259 GICXXCustomAction_GICombiner132,
2260 GICXXCustomAction_GICombiner133,
2261 GICXXCustomAction_GICombiner134,
2262 GICXXCustomAction_GICombiner135,
2263 GICXXCustomAction_GICombiner136,
2264 GICXXCustomAction_GICombiner137,
2265 GICXXCustomAction_GICombiner138,
2266 GICXXCustomAction_GICombiner139,
2267 GICXXCustomAction_GICombiner140,
2268 GICXXCustomAction_GICombiner141,
2269 GICXXCustomAction_GICombiner142,
2270 GICXXCustomAction_GICombiner143,
2271 GICXXCustomAction_GICombiner144,
2272 GICXXCustomAction_GICombiner145,
2273 GICXXCustomAction_GICombiner146,
2274 GICXXCustomAction_GICombiner147,
2275 GICXXCustomAction_GICombiner148,
2276 GICXXCustomAction_GICombiner149,
2277 GICXXCustomAction_GICombiner150,
2278 GICXXCustomAction_GICombiner151,
2279 GICXXCustomAction_GICombiner152,
2280 GICXXCustomAction_GICombiner153,
2281 GICXXCustomAction_GICombiner154,
2282 GICXXCustomAction_GICombiner155,
2283 GICXXCustomAction_GICombiner156,
2284 GICXXCustomAction_GICombiner157,
2285 GICXXCustomAction_GICombiner158,
2286 GICXXCustomAction_GICombiner159,
2287};
2288bool AMDGPUPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2289 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2290 switch(ApplyID) {
2291 case GICXXCustomAction_GICombiner0:{
2292 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2293 // Match Patterns
2294 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2295 return false;
2296 }
2297 // Apply Patterns
2298 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2299 return true;
2300 }
2301 case GICXXCustomAction_GICombiner1:{
2302 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2303 // Match Patterns
2304 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2305 return false;
2306 }
2307 // Apply Patterns
2308 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2309 return true;
2310 }
2311 case GICXXCustomAction_GICombiner2:{
2312 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2313 // Match Patterns
2314 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2315 return false;
2316 }
2317 // Apply Patterns
2318 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2319 return true;
2320 }
2321 case GICXXCustomAction_GICombiner3:{
2322 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2323 // Match Patterns
2324 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2325 return false;
2326 }
2327 // Apply Patterns
2328 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2329 return true;
2330 }
2331 case GICXXCustomAction_GICombiner4:{
2332 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2333 // Match Patterns
2334 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2335 return false;
2336 }
2337 // Apply Patterns
2338 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2339 return true;
2340 }
2341 case GICXXCustomAction_GICombiner5:{
2342 // Match Patterns
2343 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2344 return false;
2345 }
2346 // Apply Patterns
2347 Helper.applyCombineCopy(*State.MIs[0]);
2348 return true;
2349 }
2350 case GICXXCustomAction_GICombiner6:{
2351 unsigned GIMatchData_matchinfo;
2352 // Match Patterns
2353 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2354 return false;
2355 }
2356 // Apply Patterns
2357 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2358 return true;
2359 }
2360 case GICXXCustomAction_GICombiner7:{
2361 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2362 // Match Patterns
2363 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2364 return false;
2365 }
2366 // Apply Patterns
2367 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2368 return true;
2369 }
2370 case GICXXCustomAction_GICombiner8:{
2371 std::pair<Register, bool> GIMatchData_info;
2372 // Match Patterns
2373 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2374 return false;
2375 }
2376 // Apply Patterns
2377 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2378 return true;
2379 }
2380 case GICXXCustomAction_GICombiner9:{
2381 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2382 // Match Patterns
2383 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2384 return false;
2385 }
2386 // Apply Patterns
2387 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2388 return true;
2389 }
2390 case GICXXCustomAction_GICombiner10:{
2391 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2392 // Match Patterns
2393 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2394 return false;
2395 }
2396 // Apply Patterns
2397 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2398 return true;
2399 }
2400 case GICXXCustomAction_GICombiner11:{
2401 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2402 // Match Patterns
2403 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2404 return false;
2405 }
2406 // Apply Patterns
2407 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2408 return true;
2409 }
2410 case GICXXCustomAction_GICombiner12:{
2411 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2412 // Match Patterns
2413 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2414 GIMatchData_matchinfo);}()) {
2415 return false;
2416 }
2417 // Apply Patterns
2418 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2419 return true;
2420 }
2421 case GICXXCustomAction_GICombiner13:{
2422 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2423 // Match Patterns
2424 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2425 return false;
2426 }
2427 // Apply Patterns
2428 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2429 return true;
2430 }
2431 case GICXXCustomAction_GICombiner14:{
2432 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2433 // Match Patterns
2434 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2435 GIMatchData_matchinfo);}()) {
2436 return false;
2437 }
2438 // Apply Patterns
2439 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2440 return true;
2441 }
2442 case GICXXCustomAction_GICombiner15:{
2443 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2444 // Match Patterns
2445 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2446 return false;
2447 }
2448 // Apply Patterns
2449 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2450 return true;
2451 }
2452 case GICXXCustomAction_GICombiner16:{
2453 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2454 // Match Patterns
2455 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2456 return false;
2457 }
2458 // Apply Patterns
2459 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2460 return true;
2461 }
2462 case GICXXCustomAction_GICombiner17:{
2463 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2464 // Match Patterns
2465 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2466 return false;
2467 }
2468 // Apply Patterns
2469 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2470 return true;
2471 }
2472 case GICXXCustomAction_GICombiner18:{
2473 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2474 // Match Patterns
2475 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2476 return false;
2477 }
2478 // Apply Patterns
2479 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2480 return true;
2481 }
2482 case GICXXCustomAction_GICombiner19:{
2483 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2484 // Match Patterns
2485 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2486 return false;
2487 }
2488 // Apply Patterns
2489 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2490 return true;
2491 }
2492 case GICXXCustomAction_GICombiner20:{
2493 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2494 // Match Patterns
2495 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2496 return false;
2497 }
2498 // Apply Patterns
2499 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2500 return true;
2501 }
2502 case GICXXCustomAction_GICombiner21:{
2503 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2504 // Match Patterns
2505 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2506 return false;
2507 }
2508 // Apply Patterns
2509 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2510 return true;
2511 }
2512 case GICXXCustomAction_GICombiner22:{
2513 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2514 // Match Patterns
2515 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2516 return false;
2517 }
2518 // Apply Patterns
2519 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2520 return true;
2521 }
2522 case GICXXCustomAction_GICombiner23:{
2523 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2524 // Match Patterns
2525 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2526 return false;
2527 }
2528 // Apply Patterns
2529 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2530 return true;
2531 }
2532 case GICXXCustomAction_GICombiner24:{
2533 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2534 // Match Patterns
2535 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2536 return false;
2537 }
2538 // Apply Patterns
2539 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2540 return true;
2541 }
2542 case GICXXCustomAction_GICombiner25:{
2543 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2544 // Match Patterns
2545 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2546 return false;
2547 }
2548 // Apply Patterns
2549 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2550 return true;
2551 }
2552 case GICXXCustomAction_GICombiner26:{
2553 APInt GIMatchData_matchinfo;
2554 // Match Patterns
2555 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2556 return false;
2557 }
2558 // Apply Patterns
2559 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2560 return true;
2561 }
2562 case GICXXCustomAction_GICombiner27:{
2563 SmallVector<Register> GIMatchData_info;
2564 // Match Patterns
2565 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2566 return false;
2567 }
2568 // Apply Patterns
2569 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2570 return true;
2571 }
2572 case GICXXCustomAction_GICombiner28:{
2573 Register GIMatchData_matchinfo;
2574 // Match Patterns
2575 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2576 return false;
2577 }
2578 // Apply Patterns
2579 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2580 return true;
2581 }
2582 case GICXXCustomAction_GICombiner29:{
2583 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2584 // Match Patterns
2585 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2586 return false;
2587 }
2588 // Apply Patterns
2589 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2590 return true;
2591 }
2592 case GICXXCustomAction_GICombiner30:{
2593 PreferredTuple GIMatchData_matchinfo;
2594 // Match Patterns
2595 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2596 return false;
2597 }
2598 // Apply Patterns
2599 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2600 return true;
2601 }
2602 case GICXXCustomAction_GICombiner31:{
2603 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2604 // Match Patterns
2605 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2606 return false;
2607 }
2608 // Apply Patterns
2609 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2610 return true;
2611 }
2612 case GICXXCustomAction_GICombiner32:{
2613 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2614 // Match Patterns
2615 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2616 return false;
2617 }
2618 // Apply Patterns
2619 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2620 return true;
2621 }
2622 case GICXXCustomAction_GICombiner33:{
2623 // Match Patterns
2624 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2625 return false;
2626 }
2627 // Apply Patterns
2628 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2629 return true;
2630 }
2631 case GICXXCustomAction_GICombiner34:{
2632 // Match Patterns
2633 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2634 return false;
2635 }
2636 // Apply Patterns
2637 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2638 return true;
2639 }
2640 case GICXXCustomAction_GICombiner35:{
2641 // Match Patterns
2642 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2643 return false;
2644 }
2645 // Apply Patterns
2646 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2647 return true;
2648 }
2649 case GICXXCustomAction_GICombiner36:{
2650 // Match Patterns
2651 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2652 return false;
2653 }
2654 // Apply Patterns
2655 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2656 return true;
2657 }
2658 case GICXXCustomAction_GICombiner37:{
2659 // Match Patterns
2660 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2661 return false;
2662 }
2663 // Apply Patterns
2664 Helper.replaceInstWithUndef(*State.MIs[0]);
2665 return true;
2666 }
2667 case GICXXCustomAction_GICombiner38:{
2668 // Apply Patterns
2669 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2670 return true;
2671 }
2672 case GICXXCustomAction_GICombiner39:{
2673 // Match Patterns
2674 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2675 return false;
2676 }
2677 // Apply Patterns
2678 Helper.replaceInstWithUndef(*State.MIs[0]);
2679 return true;
2680 }
2681 case GICXXCustomAction_GICombiner40:{
2682 // Match Patterns
2683 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2684 return false;
2685 }
2686 // Apply Patterns
2687 Helper.replaceInstWithUndef(*State.MIs[0]);
2688 return true;
2689 }
2690 case GICXXCustomAction_GICombiner41:{
2691 // Match Patterns
2692 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2693 return false;
2694 }
2695 // Apply Patterns
2696 Helper.replaceInstWithUndef(*State.MIs[0]);
2697 return true;
2698 }
2699 case GICXXCustomAction_GICombiner42:{
2700 // Match Patterns
2701 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2702 return false;
2703 }
2704 // Apply Patterns
2705 Helper.eraseInst(*State.MIs[0]);
2706 return true;
2707 }
2708 case GICXXCustomAction_GICombiner43:{
2709 // Match Patterns
2710 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2711 return false;
2712 }
2713 // Apply Patterns
2714 Helper.replaceInstWithUndef(*State.MIs[0]);
2715 return true;
2716 }
2717 case GICXXCustomAction_GICombiner44:{
2718 // Match Patterns
2719 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2720 return false;
2721 }
2722 // Apply Patterns
2723 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2724 return true;
2725 }
2726 case GICXXCustomAction_GICombiner45:{
2727 Register GIMatchData_info;
2728 // Match Patterns
2729 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2730 return false;
2731 }
2732 // Apply Patterns
2733 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2734 return true;
2735 }
2736 case GICXXCustomAction_GICombiner46:{
2737 Register GIMatchData_info;
2738 // Match Patterns
2739 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2740 return false;
2741 }
2742 // Apply Patterns
2743 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2744 return true;
2745 }
2746 case GICXXCustomAction_GICombiner47:{
2747 Register GIMatchData_matchinfo;
2748 // Match Patterns
2749 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2750 return false;
2751 }
2752 // Apply Patterns
2753 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2754 return true;
2755 }
2756 case GICXXCustomAction_GICombiner48:{
2757 Register GIMatchData_matchinfo;
2758 // Match Patterns
2759 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2760 return false;
2761 }
2762 // Apply Patterns
2763 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2764 return true;
2765 }
2766 case GICXXCustomAction_GICombiner49:{
2767 Register GIMatchData_matchinfo;
2768 // Match Patterns
2769 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2770 return false;
2771 }
2772 // Apply Patterns
2773 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2774 return true;
2775 }
2776 case GICXXCustomAction_GICombiner50:{
2777 Register GIMatchData_matchinfo;
2778 // Match Patterns
2779 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2780 return false;
2781 }
2782 // Apply Patterns
2783 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2784 return true;
2785 }
2786 case GICXXCustomAction_GICombiner51:{
2787 // Match Patterns
2788 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2789 return false;
2790 }
2791 // Apply Patterns
2792 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2793 return true;
2794 }
2795 case GICXXCustomAction_GICombiner52:{
2796 MachineInstr* GIMatchData_matchinfo;
2797 // Match Patterns
2798 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2799 return false;
2800 }
2801 // Apply Patterns
2802 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2803 return true;
2804 }
2805 case GICXXCustomAction_GICombiner53:{
2806 std::tuple<Register, Register> GIMatchData_info;
2807 // Match Patterns
2808 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2809 return false;
2810 }
2811 // Apply Patterns
2812 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2813 return true;
2814 }
2815 case GICXXCustomAction_GICombiner54:{
2816 InstructionStepsMatchInfo GIMatchData_info;
2817 // Match Patterns
2818 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2819 return false;
2820 }
2821 // Apply Patterns
2822 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2823 return true;
2824 }
2825 case GICXXCustomAction_GICombiner55:{
2826 std::optional<int64_t> GIMatchData_matchinfo;
2827 // Match Patterns
2828 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2829 return false;
2830 }
2831 // Apply Patterns
2832 if (GIMatchData_matchinfo) {
2833 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2834 } else {
2835 Helper.replaceInstWithUndef(*State.MIs[0]);
2836 }
2837 return true;
2838 }
2839 case GICXXCustomAction_GICombiner56:{
2840 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2841 // Match Patterns
2842 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2843 return false;
2844 }
2845 // Apply Patterns
2846 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2847 return true;
2848 }
2849 case GICXXCustomAction_GICombiner57:{
2850 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2851 // Match Patterns
2852 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2853 return false;
2854 }
2855 // Apply Patterns
2856 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2857 return true;
2858 }
2859 case GICXXCustomAction_GICombiner58:{
2860 PtrAddChain GIMatchData_matchinfo;
2861 // Match Patterns
2862 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2863 return false;
2864 }
2865 // Apply Patterns
2866 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2867 return true;
2868 }
2869 case GICXXCustomAction_GICombiner59:{
2870 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2871 // Match Patterns
2872 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2873 return false;
2874 }
2875 // Apply Patterns
2876 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2877 return true;
2878 }
2879 case GICXXCustomAction_GICombiner60:{
2880 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2881 // Match Patterns
2882 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2883 return false;
2884 }
2885 // Apply Patterns
2886 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2887 return true;
2888 }
2889 case GICXXCustomAction_GICombiner61:{
2890 int64_t GIMatchData_matchinfo;
2891 // Match Patterns
2892 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2893 return false;
2894 }
2895 // Apply Patterns
2896 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2897 return true;
2898 }
2899 case GICXXCustomAction_GICombiner62:{
2900 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2901 // Match Patterns
2902 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2903 return false;
2904 }
2905 // Apply Patterns
2906 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2907 return true;
2908 }
2909 case GICXXCustomAction_GICombiner63:{
2910 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2911 // Match Patterns
2912 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2913 return false;
2914 }
2915 // Apply Patterns
2916 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2917 return true;
2918 }
2919 case GICXXCustomAction_GICombiner64:{
2920 std::tuple<Register, int64_t> GIMatchData_info;
2921 // Match Patterns
2922 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2923 return false;
2924 }
2925 // Apply Patterns
2926 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2927 return true;
2928 }
2929 case GICXXCustomAction_GICombiner65:{
2930 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2931 // Match Patterns
2932 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2933 return false;
2934 }
2935 // Apply Patterns
2936 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2937 return true;
2938 }
2939 case GICXXCustomAction_GICombiner66:{
2940 RegisterImmPair GIMatchData_matchinfo;
2941 // Match Patterns
2942 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2943 return false;
2944 }
2945 // Apply Patterns
2946 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2947 return true;
2948 }
2949 case GICXXCustomAction_GICombiner67:{
2950 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2951 // Match Patterns
2952 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2953 return false;
2954 }
2955 // Apply Patterns
2956 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2957 return true;
2958 }
2959 case GICXXCustomAction_GICombiner68:{
2960 unsigned GIMatchData_matchinfo;
2961 // Match Patterns
2962 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2963 return false;
2964 }
2965 // Apply Patterns
2966 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
2967 return true;
2968 }
2969 case GICXXCustomAction_GICombiner69:{
2970 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2971 // Match Patterns
2972 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
2973 return false;
2974 }
2975 // Apply Patterns
2976 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
2977 return true;
2978 }
2979 case GICXXCustomAction_GICombiner70:{
2980 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2981 // Match Patterns
2982 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
2983 return false;
2984 }
2985 // Apply Patterns
2986 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2987 return true;
2988 }
2989 case GICXXCustomAction_GICombiner71:{
2990 Register GIMatchData_matchinfo;
2991 // Match Patterns
2992 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2993 return false;
2994 }
2995 // Apply Patterns
2996 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2997 return true;
2998 }
2999 case GICXXCustomAction_GICombiner72:{
3000 // Match Patterns
3001 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
3002 return false;
3003 }
3004 // Apply Patterns
3005 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
3006 return true;
3007 }
3008 case GICXXCustomAction_GICombiner73:{
3009 Register GIMatchData_matchinfo;
3010 // Match Patterns
3011 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3012 return false;
3013 }
3014 // Apply Patterns
3015 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3016 return true;
3017 }
3018 case GICXXCustomAction_GICombiner74:{
3019 // Match Patterns
3020 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
3021 return false;
3022 }
3023 // Apply Patterns
3024 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3025 return true;
3026 }
3027 case GICXXCustomAction_GICombiner75:{
3028 Register GIMatchData_matchinfo;
3029 // Match Patterns
3030 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3031 return false;
3032 }
3033 // Apply Patterns
3034 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3035 return true;
3036 }
3037 case GICXXCustomAction_GICombiner76:{
3038 // Match Patterns
3039 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3040 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3041 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3042 return false;
3043 }
3044 // Apply Patterns
3045 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3046 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3047 State.MIs[0]->eraseFromParent();
3048 return true;
3049 }
3050 case GICXXCustomAction_GICombiner77:{
3051 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3052 // Match Patterns
3053 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3054 return false;
3055 }
3056 // Apply Patterns
3057 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3058 return true;
3059 }
3060 case GICXXCustomAction_GICombiner78:{
3061 SmallVector<Register> GIMatchData_info;
3062 // Match Patterns
3063 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3064 return false;
3065 }
3066 // Apply Patterns
3067 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3068 return true;
3069 }
3070 case GICXXCustomAction_GICombiner79:{
3071 MachineInstr * GIMatchData_matchinfo;
3072 // Match Patterns
3073 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3074 return false;
3075 }
3076 // Apply Patterns
3077 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3078 return true;
3079 }
3080 case GICXXCustomAction_GICombiner80:{
3081 // Apply Patterns
3082 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3083 return true;
3084 }
3085 case GICXXCustomAction_GICombiner81:{
3086 // Apply Patterns
3087 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3088 return true;
3089 }
3090 case GICXXCustomAction_GICombiner82:{
3091 APInt GIMatchData_info;
3092 // Match Patterns
3093 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3094 return false;
3095 }
3096 // Apply Patterns
3097 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3098 return true;
3099 }
3100 case GICXXCustomAction_GICombiner83:{
3101 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3102 // Match Patterns
3103 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3104 return false;
3105 }
3106 // Apply Patterns
3107 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3108 return true;
3109 }
3110 case GICXXCustomAction_GICombiner84:{
3111 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3112 // Match Patterns
3113 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3114 return false;
3115 }
3116 // Apply Patterns
3117 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3118 return true;
3119 }
3120 case GICXXCustomAction_GICombiner85:{
3121 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3122 // Match Patterns
3123 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3124 return false;
3125 }
3126 // Apply Patterns
3127 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3128 return true;
3129 }
3130 case GICXXCustomAction_GICombiner86:{
3131 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3132 // Match Patterns
3133 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3134 return false;
3135 }
3136 // Apply Patterns
3137 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3138 return true;
3139 }
3140 case GICXXCustomAction_GICombiner87:{
3141 unsigned GIMatchData_info;
3142 // Match Patterns
3143 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3144 return false;
3145 }
3146 // Apply Patterns
3147 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3148 return true;
3149 }
3150 case GICXXCustomAction_GICombiner88:{
3151 // Match Patterns
3152 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3153 return false;
3154 }
3155 // Apply Patterns
3156 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3157 return true;
3158 }
3159 case GICXXCustomAction_GICombiner89:{
3160 std::pair<Register, Register> GIMatchData_matchinfo;
3161 // Match Patterns
3162 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3163 return false;
3164 }
3165 // Apply Patterns
3166 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3167 return true;
3168 }
3169 case GICXXCustomAction_GICombiner90:{
3170 // Match Patterns
3171 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3172 return false;
3173 }
3174 // Apply Patterns
3175 Helper.applyPtrAddZero(*State.MIs[0]);
3176 return true;
3177 }
3178 case GICXXCustomAction_GICombiner91:{
3179 RegisterImmPair GIMatchData_matchinfo;
3180 // Match Patterns
3181 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3182 return false;
3183 }
3184 // Apply Patterns
3185 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3186 return true;
3187 }
3188 case GICXXCustomAction_GICombiner92:{
3189 ShiftOfShiftedLogic GIMatchData_matchinfo;
3190 // Match Patterns
3191 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3192 return false;
3193 }
3194 // Apply Patterns
3195 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3196 return true;
3197 }
3198 case GICXXCustomAction_GICombiner93:{
3199 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3200 // Match Patterns
3201 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3202 return false;
3203 }
3204 // Apply Patterns
3205 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3206 return true;
3207 }
3208 case GICXXCustomAction_GICombiner94:{
3209 MachineInstr * GIMatchData_matchinfo;
3210 // Match Patterns
3211 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3212 return false;
3213 }
3214 // Apply Patterns
3215 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3216 return true;
3217 }
3218 case GICXXCustomAction_GICombiner95:{
3219 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3220 // Match Patterns
3221 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3222 return false;
3223 }
3224 // Apply Patterns
3225 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3226 return true;
3227 }
3228 case GICXXCustomAction_GICombiner96:{
3229 // Match Patterns
3230 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3231 return false;
3232 }
3233 // Apply Patterns
3234 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3235 return true;
3236 }
3237 case GICXXCustomAction_GICombiner97:{
3238 // Match Patterns
3239 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3240 return false;
3241 }
3242 // Apply Patterns
3243 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3244 return true;
3245 }
3246 case GICXXCustomAction_GICombiner98:{
3247 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3248 // Match Patterns
3249 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3250 return false;
3251 }
3252 // Apply Patterns
3253 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3254 return true;
3255 }
3256 case GICXXCustomAction_GICombiner99:{
3257 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3258 // Match Patterns
3259 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3260 return false;
3261 }
3262 // Apply Patterns
3263 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3264 return true;
3265 }
3266 case GICXXCustomAction_GICombiner100:{
3267 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3268 // Match Patterns
3269 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3270 return false;
3271 }
3272 // Apply Patterns
3273 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3274 return true;
3275 }
3276 case GICXXCustomAction_GICombiner101:{
3277 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3278 // Match Patterns
3279 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3280 return false;
3281 }
3282 // Apply Patterns
3283 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3284 return true;
3285 }
3286 case GICXXCustomAction_GICombiner102:{
3287 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3288 // Match Patterns
3289 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3290 return false;
3291 }
3292 // Apply Patterns
3293 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3294 return true;
3295 }
3296 case GICXXCustomAction_GICombiner103:{
3297 APInt GIMatchData_matchinfo;
3298 // Match Patterns
3299 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3300 return false;
3301 }
3302 // Apply Patterns
3303 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3304 return true;
3305 }
3306 case GICXXCustomAction_GICombiner104:{
3307 ConstantFP* GIMatchData_matchinfo;
3308 // Match Patterns
3309 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3310 return false;
3311 }
3312 // Apply Patterns
3313 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3314 return true;
3315 }
3316 case GICXXCustomAction_GICombiner105:{
3317 ConstantFP* GIMatchData_matchinfo;
3318 // Match Patterns
3319 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3320 return false;
3321 }
3322 // Apply Patterns
3323 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3324 return true;
3325 }
3326 case GICXXCustomAction_GICombiner106:{
3327 APInt GIMatchData_matchinfo;
3328 // Match Patterns
3329 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3330 return false;
3331 }
3332 // Apply Patterns
3333 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3334 return true;
3335 }
3336 case GICXXCustomAction_GICombiner107:{
3337 // Match Patterns
3338 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3339 return false;
3340 }
3341 // Apply Patterns
3342 Helper.applyUMulHToLShr(*State.MIs[0]);
3343 return true;
3344 }
3345 case GICXXCustomAction_GICombiner108:{
3346 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3347 // Match Patterns
3348 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3349 return false;
3350 }
3351 // Apply Patterns
3352 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3353 return true;
3354 }
3355 case GICXXCustomAction_GICombiner109:{
3356 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3357 // Match Patterns
3358 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3359 return false;
3360 }
3361 // Apply Patterns
3362 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3363 return true;
3364 }
3365 case GICXXCustomAction_GICombiner110:{
3366 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3367 // Match Patterns
3368 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3369 GIMatchData_info);}()) {
3370 return false;
3371 }
3372 // Apply Patterns
3373 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3374 return true;
3375 }
3376 case GICXXCustomAction_GICombiner111:{
3377 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3378 // Match Patterns
3379 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3380 GIMatchData_info);}()) {
3381 return false;
3382 }
3383 // Apply Patterns
3384 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3385 return true;
3386 }
3387 case GICXXCustomAction_GICombiner112:{
3388 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3389 // Match Patterns
3390 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3391 GIMatchData_info);}()) {
3392 return false;
3393 }
3394 // Apply Patterns
3395 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3396 return true;
3397 }
3398 case GICXXCustomAction_GICombiner113:{
3399 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3400 // Match Patterns
3401 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3402 *State.MIs[0], GIMatchData_info);}()) {
3403 return false;
3404 }
3405 // Apply Patterns
3406 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3407 return true;
3408 }
3409 case GICXXCustomAction_GICombiner114:{
3410 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3411 // Match Patterns
3412 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3413 GIMatchData_info);}()) {
3414 return false;
3415 }
3416 // Apply Patterns
3417 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3418 return true;
3419 }
3420 case GICXXCustomAction_GICombiner115:{
3421 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3422 // Match Patterns
3423 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3424 GIMatchData_info);}()) {
3425 return false;
3426 }
3427 // Apply Patterns
3428 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3429 return true;
3430 }
3431 case GICXXCustomAction_GICombiner116:{
3432 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3433 // Match Patterns
3434 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3435 GIMatchData_info);}()) {
3436 return false;
3437 }
3438 // Apply Patterns
3439 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3440 return true;
3441 }
3442 case GICXXCustomAction_GICombiner117:{
3443 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3444 // Match Patterns
3445 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3446 *State.MIs[0], GIMatchData_info);}()) {
3447 return false;
3448 }
3449 // Apply Patterns
3450 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3451 return true;
3452 }
3453 case GICXXCustomAction_GICombiner118:{
3454 unsigned GIMatchData_select_op_no;
3455 // Match Patterns
3456 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3457 return false;
3458 }
3459 // Apply Patterns
3460 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3461 return true;
3462 }
3463 case GICXXCustomAction_GICombiner119:{
3464 // Match Patterns
3465 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3466 return false;
3467 }
3468 // Apply Patterns
3469 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3470 return true;
3471 }
3472 case GICXXCustomAction_GICombiner120:{
3473 // Match Patterns
3474 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3475 return false;
3476 }
3477 // Apply Patterns
3478 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3479 return true;
3480 }
3481 case GICXXCustomAction_GICombiner121:{
3482 // Match Patterns
3483 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3484 return false;
3485 }
3486 // Apply Patterns
3487 Helper.applyUDivByPow2(*State.MIs[0]);
3488 return true;
3489 }
3490 case GICXXCustomAction_GICombiner122:{
3491 // Match Patterns
3492 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3493 return false;
3494 }
3495 // Apply Patterns
3496 Helper.applySDivByPow2(*State.MIs[0]);
3497 return true;
3498 }
3499 case GICXXCustomAction_GICombiner123:{
3500 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3501 // Match Patterns
3502 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3503 return false;
3504 }
3505 // Apply Patterns
3506 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3507 return true;
3508 }
3509 case GICXXCustomAction_GICombiner124:{
3510 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3511 // Match Patterns
3512 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3513 return false;
3514 }
3515 // Apply Patterns
3516 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3517 return true;
3518 }
3519 case GICXXCustomAction_GICombiner125:{
3520 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3521 // Match Patterns
3522 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3523 return false;
3524 }
3525 // Apply Patterns
3526 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3527 return true;
3528 }
3529 case GICXXCustomAction_GICombiner126:{
3530 Register GIMatchData_matchinfo;
3531 // Match Patterns
3532 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3533 return false;
3534 }
3535 // Apply Patterns
3536 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3537 return true;
3538 }
3539 case GICXXCustomAction_GICombiner127:{
3540 // Match Patterns
3541 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3542 return false;
3543 }
3544 // Apply Patterns
3545 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3546 return true;
3547 }
3548 case GICXXCustomAction_GICombiner128:{
3549 // Match Patterns
3550 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3551 return false;
3552 }
3553 // Apply Patterns
3554 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3555 return true;
3556 }
3557 case GICXXCustomAction_GICombiner129:{
3558 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3559 // Match Patterns
3560 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3561 return false;
3562 }
3563 // Apply Patterns
3564 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3565 return true;
3566 }
3567 case GICXXCustomAction_GICombiner130:{
3568 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3569 // Match Patterns
3570 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3571 return false;
3572 }
3573 // Apply Patterns
3574 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3575 return true;
3576 }
3577 case GICXXCustomAction_GICombiner131:{
3578 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3579 // Match Patterns
3580 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3581 return false;
3582 }
3583 // Apply Patterns
3584 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3585 return true;
3586 }
3587 case GICXXCustomAction_GICombiner132:{
3588 SmallVector<Register> GIMatchData_matchinfo;
3589 // Match Patterns
3590 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3591 return false;
3592 }
3593 // Apply Patterns
3594 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3595 return true;
3596 }
3597 case GICXXCustomAction_GICombiner133:{
3598 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3599 // Match Patterns
3600 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3601 return false;
3602 }
3603 // Apply Patterns
3604 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3605 return true;
3606 }
3607 case GICXXCustomAction_GICombiner134:{
3608 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3609 // Match Patterns
3610 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3611 return false;
3612 }
3613 // Apply Patterns
3614 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3615 return true;
3616 }
3617 case GICXXCustomAction_GICombiner135:{
3618 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3619 // Match Patterns
3620 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3621 return false;
3622 }
3623 // Apply Patterns
3624 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3625 return true;
3626 }
3627 case GICXXCustomAction_GICombiner136:{
3628 SmallVector<Register> GIMatchData_matchinfo;
3629 // Match Patterns
3630 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3631 return false;
3632 }
3633 // Apply Patterns
3634 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3635 return true;
3636 }
3637 case GICXXCustomAction_GICombiner137:{
3638 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3639 // Match Patterns
3640 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3641 return false;
3642 }
3643 // Apply Patterns
3644 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3645 return true;
3646 }
3647 case GICXXCustomAction_GICombiner138:{
3648 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3649 // Match Patterns
3650 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3651 return false;
3652 }
3653 // Apply Patterns
3654 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3655 return true;
3656 }
3657 case GICXXCustomAction_GICombiner139:{
3658 Register GIMatchData_matchinfo;
3659 // Match Patterns
3660 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3661 return false;
3662 }
3663 // Apply Patterns
3664 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3665 return true;
3666 }
3667 case GICXXCustomAction_GICombiner140:{
3668 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3669 // Match Patterns
3670 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3671 return false;
3672 }
3673 // Apply Patterns
3674 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3675 return true;
3676 }
3677 case GICXXCustomAction_GICombiner141:{
3678 SmallVector<Register> GIMatchData_info;
3679 // Match Patterns
3680 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3681 return false;
3682 }
3683 // Apply Patterns
3684 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3685 return true;
3686 }
3687 case GICXXCustomAction_GICombiner142:{
3688 Register GIMatchData_src;
3689 // Match Patterns
3690 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3691 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3692 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3693 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3694 return false;
3695
3696 // Check counts match.
3697 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3698 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3699 if (NumMergeSrcs != NumUnmergeDefs)
3700 return false;
3701
3702 // Verify all merge sources match unmerge defs in order.
3703 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3704 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3705 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3706
3707 if (MergeSrc != UnmergeDef)
3708 return false;
3709
3710 if (!MRI.hasOneNonDBGUse(MergeSrc))
3711 return false;
3712 }
3713
3714 // Check size compatibility.
3715 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3716 LLT SrcTy = MRI.getType(GIMatchData_src);
3717 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3718 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3719 return false;
3720
3721 // Check bitcast legality.
3722 if (SrcTy != DstTy) {
3723 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3724 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3725 if (!Helper.isLegalOrBeforeLegalizer(Query))
3726 return false;
3727 }
3728
3729 return true;}()) {
3730 return false;
3731 }
3732 // Apply Patterns
3733 LLT SrcTy = MRI.getType(GIMatchData_src);
3734 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3735
3736 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3737
3738 if (SrcTy == DstTy) {
3739 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3740 } else {
3741 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3742 }
3743
3744 State.MIs[0]->eraseFromParent();
3745 return true;
3746 }
3747 case GICXXCustomAction_GICombiner143:{
3748 SmallVector<APInt, 8> GIMatchData_info;
3749 // Match Patterns
3750 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3751 return false;
3752 }
3753 // Apply Patterns
3754 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3755 return true;
3756 }
3757 case GICXXCustomAction_GICombiner144:{
3758 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3759 // Match Patterns
3760 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3761 return false;
3762 }
3763 // Apply Patterns
3764 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3765 return true;
3766 }
3767 case GICXXCustomAction_GICombiner145:{
3768 // Match Patterns
3769 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3770 return false;
3771 }
3772 // Apply Patterns
3773 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3774 return true;
3775 }
3776 case GICXXCustomAction_GICombiner146:{
3777 // Match Patterns
3778 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3779 return false;
3780 }
3781 // Apply Patterns
3782 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3783 return true;
3784 }
3785 case GICXXCustomAction_GICombiner147:{
3786 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3787 // Match Patterns
3788 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3789 return false;
3790 }
3791 // Apply Patterns
3792 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3793 return true;
3794 }
3795 case GICXXCustomAction_GICombiner148:{
3796 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3797 // Match Patterns
3798 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3799 return false;
3800 }
3801 // Apply Patterns
3802 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3803 return true;
3804 }
3805 case GICXXCustomAction_GICombiner149:{
3806 Register GIMatchData_unmergeSrc;
3807 // Match Patterns
3808 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3809 return false;
3810 }
3811 // Apply Patterns
3812 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3813 return true;
3814 }
3815 case GICXXCustomAction_GICombiner150:{
3816 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3817 // Match Patterns
3818 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3819 return false;
3820 }
3821 // Apply Patterns
3822 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3823 return true;
3824 }
3825 case GICXXCustomAction_GICombiner151:{
3826 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3827 // Match Patterns
3828 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3829 return false;
3830 }
3831 // Apply Patterns
3832 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3833 return true;
3834 }
3835 case GICXXCustomAction_GICombiner152:{
3836 Register GIMatchData_matchinfo;
3837 // Match Patterns
3838 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3839 return false;
3840 }
3841 // Apply Patterns
3842 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3843 return true;
3844 }
3845 case GICXXCustomAction_GICombiner153:{
3846 Register GIMatchData_matchinfo;
3847 // Match Patterns
3848 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3849 return false;
3850 }
3851 // Apply Patterns
3852 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3853 return true;
3854 }
3855 case GICXXCustomAction_GICombiner154:{
3856 LshrOfTruncOfLshr GIMatchData_matchinfo;
3857 // Match Patterns
3858 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3859 return false;
3860 }
3861 // Apply Patterns
3862 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3863 return true;
3864 }
3865 case GICXXCustomAction_GICombiner155:{
3866 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3867 // Match Patterns
3868 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3869 return false;
3870 }
3871 // Apply Patterns
3872 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3873 return true;
3874 }
3875 case GICXXCustomAction_GICombiner156:{
3876 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3877 // Match Patterns
3878 if(![&](){return Helper.matchCombineFmulWithSelectToFldexp(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3879 return false;
3880 }
3881 // Apply Patterns
3882 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3883 return true;
3884 }
3885 case GICXXCustomAction_GICombiner157:{
3886 ClampI64ToI16MatchInfo GIMatchData_matchinfo;
3887 // Match Patterns
3888 if(![&](){return matchClampI64ToI16(*State.MIs[0], MRI, MF, GIMatchData_matchinfo);}()) {
3889 return false;
3890 }
3891 // Apply Patterns
3892 applyClampI64ToI16(*State.MIs[0], GIMatchData_matchinfo);
3893 return true;
3894 }
3895 case GICXXCustomAction_GICombiner158:{
3896 MachineInstr * GIMatchData_matchinfo;
3897 // Match Patterns
3898 if(![&](){return Helper.matchFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3899 return false;
3900 }
3901 // Apply Patterns
3902 Helper.applyFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);
3903 return true;
3904 }
3905 case GICXXCustomAction_GICombiner159:{
3906 // Apply Patterns
3907 Helper.applyCombineShuffleToBuildVector(*State.MIs[0]);
3908 return true;
3909 }
3910 }
3911 llvm_unreachable("Unknown Apply Action");
3912}
3913#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3914#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
3915#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
3916#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)
3917#else
3918#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
3919#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3920#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)
3921#endif
3922const uint8_t *AMDGPUPreLegalizerCombinerImpl::getMatchTable() const {
3923 constexpr static uint8_t MatchTable0[] = {
3924 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(280), /*)*//*default:*//*Label 106*/ GIMT_Encode4(8849),
3925 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1050), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3926 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1062),
3927 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1795),
3928 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2319),
3929 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(2525),
3930 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2627),
3931 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(2740),
3932 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(2825), GIMT_Encode4(0), GIMT_Encode4(0),
3933 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(2932),
3934 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3327),
3935 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(4048), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3936 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(4248), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3937 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(4260), GIMT_Encode4(0),
3938 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(4327),
3939 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(4404),
3940 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(4469),
3941 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(4481),
3942 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(4493),
3943 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(4536),
3944 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(4569),
3945 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(4612), GIMT_Encode4(0), GIMT_Encode4(0),
3946 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(4676),
3947 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(4698), GIMT_Encode4(0), GIMT_Encode4(0),
3948 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(4720), GIMT_Encode4(0), GIMT_Encode4(0),
3949 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(4742),
3950 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(4754),
3951 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(4766), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3952 /* 350 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(4778), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3953 /* 486 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(4790),
3954 /* 490 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(4918), GIMT_Encode4(0), GIMT_Encode4(0),
3955 /* 502 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(5341), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3956 /* 522 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(5374),
3957 /* 526 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(5449),
3958 /* 530 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(5515),
3959 /* 534 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(5645),
3960 /* 538 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(5843),
3961 /* 542 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(6024),
3962 /* 546 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(6187),
3963 /* 550 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(6230),
3964 /* 554 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(6273),
3965 /* 558 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(6297),
3966 /* 562 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(6321),
3967 /* 566 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(6366), GIMT_Encode4(0), GIMT_Encode4(0),
3968 /* 578 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(6378),
3969 /* 582 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(6473),
3970 /* 586 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(6496),
3971 /* 590 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(6508),
3972 /* 594 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(6520),
3973 /* 598 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(6532),
3974 /* 602 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(6555),
3975 /* 606 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(6567),
3976 /* 610 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(6579),
3977 /* 614 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(6591),
3978 /* 618 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(6625),
3979 /* 622 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(6659),
3980 /* 626 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(6682),
3981 /* 630 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(6694),
3982 /* 634 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(6706), GIMT_Encode4(0), GIMT_Encode4(0),
3983 /* 646 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(6718),
3984 /* 650 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(6741),
3985 /* 654 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(6764),
3986 /* 658 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(6776),
3987 /* 662 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(6788),
3988 /* 666 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(6800), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3989 /* 686 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(6812),
3990 /* 690 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(6953),
3991 /* 694 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(7042),
3992 /* 698 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(7151),
3993 /* 702 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(7174),
3994 /* 706 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(7197),
3995 /* 710 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(7242), GIMT_Encode4(0), GIMT_Encode4(0),
3996 /* 722 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(7254), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3997 /* 742 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(7276), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3998 /* 758 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(7298),
3999 /* 762 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(7360),
4000 /* 766 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(7382),
4001 /* 770 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(7425),
4002 /* 774 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(7447),
4003 /* 778 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(7469),
4004 /* 782 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(7496), GIMT_Encode4(0), GIMT_Encode4(0),
4005 /* 794 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(7523), GIMT_Encode4(0), GIMT_Encode4(0),
4006 /* 806 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 81*/ GIMT_Encode4(7602),
4007 /* 810 */ /*TargetOpcode::G_FMINNUM*//*Label 82*/ GIMT_Encode4(7632),
4008 /* 814 */ /*TargetOpcode::G_FMAXNUM*//*Label 83*/ GIMT_Encode4(7666),
4009 /* 818 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 84*/ GIMT_Encode4(7700),
4010 /* 822 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 85*/ GIMT_Encode4(7712),
4011 /* 826 */ /*TargetOpcode::G_FMINIMUM*//*Label 86*/ GIMT_Encode4(7724),
4012 /* 830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 87*/ GIMT_Encode4(7758), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4013 /* 874 */ /*TargetOpcode::G_PTR_ADD*//*Label 88*/ GIMT_Encode4(7792), GIMT_Encode4(0),
4014 /* 882 */ /*TargetOpcode::G_SMIN*//*Label 89*/ GIMT_Encode4(7882),
4015 /* 886 */ /*TargetOpcode::G_SMAX*//*Label 90*/ GIMT_Encode4(7916),
4016 /* 890 */ /*TargetOpcode::G_UMIN*//*Label 91*/ GIMT_Encode4(7950),
4017 /* 894 */ /*TargetOpcode::G_UMAX*//*Label 92*/ GIMT_Encode4(7984),
4018 /* 898 */ /*TargetOpcode::G_ABS*//*Label 93*/ GIMT_Encode4(8018), GIMT_Encode4(0), GIMT_Encode4(0),
4019 /* 910 */ /*TargetOpcode::G_BR*//*Label 94*/ GIMT_Encode4(8030), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4020 /* 930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 95*/ GIMT_Encode4(8042),
4021 /* 934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(8172),
4022 /* 938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 97*/ GIMT_Encode4(8549), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4023 /* 962 */ /*TargetOpcode::G_CTLZ*//*Label 98*/ GIMT_Encode4(8626),
4024 /* 966 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 99*/ GIMT_Encode4(8638), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4025 /* 982 */ /*TargetOpcode::G_BITREVERSE*//*Label 100*/ GIMT_Encode4(8650),
4026 /* 986 */ /*TargetOpcode::G_FCEIL*//*Label 101*/ GIMT_Encode4(8739), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4027 /* 1034 */ /*TargetOpcode::G_FSQRT*//*Label 102*/ GIMT_Encode4(8761),
4028 /* 1038 */ /*TargetOpcode::G_FFLOOR*//*Label 103*/ GIMT_Encode4(8783),
4029 /* 1042 */ /*TargetOpcode::G_FRINT*//*Label 104*/ GIMT_Encode4(8805),
4030 /* 1046 */ /*TargetOpcode::G_FNEARBYINT*//*Label 105*/ GIMT_Encode4(8827),
4031 /* 1050 */ // Label 0: @1050
4032 /* 1050 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1061), // Rule ID 16 //
4033 /* 1055 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4034 /* 1058 */ // MIs[0] d
4035 /* 1058 */ // No operand predicates
4036 /* 1058 */ // MIs[0] s
4037 /* 1058 */ // No operand predicates
4038 /* 1058 */ // Combiner Rule #16: copy_prop
4039 /* 1058 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4040 /* 1061 */ // Label 107: @1061
4041 /* 1061 */ GIM_Reject,
4042 /* 1062 */ // Label 1: @1062
4043 /* 1062 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1073), // Rule ID 19 //
4044 /* 1067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4045 /* 1070 */ // Combiner Rule #19: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
4046 /* 1070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
4047 /* 1073 */ // Label 108: @1073
4048 /* 1073 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1084), // Rule ID 97 //
4049 /* 1078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
4050 /* 1081 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_ADD'
4051 /* 1081 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4052 /* 1084 */ // Label 109: @1084
4053 /* 1084 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1095), // Rule ID 148 //
4054 /* 1089 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
4055 /* 1092 */ // Combiner Rule #108: simplify_add_to_sub; wip_match_opcode 'G_ADD'
4056 /* 1092 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4057 /* 1095 */ // Label 110: @1095
4058 /* 1095 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1106), // Rule ID 250 //
4059 /* 1100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4060 /* 1103 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_ADD'
4061 /* 1103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4062 /* 1106 */ // Label 111: @1106
4063 /* 1106 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1117), // Rule ID 294 //
4064 /* 1111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4065 /* 1114 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_ADD'
4066 /* 1114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4067 /* 1117 */ // Label 112: @1117
4068 /* 1117 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1128), // Rule ID 330 //
4069 /* 1122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4070 /* 1125 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4071 /* 1125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4072 /* 1128 */ // Label 113: @1128
4073 /* 1128 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1216), // Rule ID 392 //
4074 /* 1133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
4075 /* 1136 */ // MIs[0] dst
4076 /* 1136 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4077 /* 1140 */ // MIs[0] __add_shift_match_0.shl_neg
4078 /* 1140 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4079 /* 1144 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4080 /* 1148 */ // MIs[1] __add_shift_match_0.neg_y
4081 /* 1148 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4082 /* 1152 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4083 /* 1156 */ // MIs[2] __add_shift_match_0.zero
4084 /* 1156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4085 /* 1160 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4086 /* 1164 */ // MIs[3] Operand 1
4087 /* 1164 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4088 /* 1175 */ // MIs[2] y
4089 /* 1175 */ // No operand predicates
4090 /* 1175 */ // MIs[1] n
4091 /* 1175 */ // No operand predicates
4092 /* 1175 */ // MIs[0] x
4093 /* 1175 */ // No operand predicates
4094 /* 1175 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
4095 /* 1179 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4096 /* 1181 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4097 /* 1184 */ // Combiner Rule #240: add_shift @ [__add_shift_match_0[1]]
4098 /* 1184 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4099 /* 1187 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4100 /* 1192 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4101 /* 1196 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4102 /* 1200 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4103 /* 1204 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4104 /* 1208 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4105 /* 1212 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4106 /* 1215 */ GIR_EraseRootFromParent_Done,
4107 /* 1216 */ // Label 114: @1216
4108 /* 1216 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1304), // Rule ID 391 //
4109 /* 1221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
4110 /* 1224 */ // MIs[0] dst
4111 /* 1224 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4112 /* 1228 */ // MIs[0] x
4113 /* 1228 */ // No operand predicates
4114 /* 1228 */ // MIs[0] __add_shift_match_0.shl_neg
4115 /* 1228 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4116 /* 1232 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4117 /* 1236 */ // MIs[1] __add_shift_match_0.neg_y
4118 /* 1236 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4119 /* 1240 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4120 /* 1244 */ // MIs[2] __add_shift_match_0.zero
4121 /* 1244 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4122 /* 1248 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4123 /* 1252 */ // MIs[3] Operand 1
4124 /* 1252 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4125 /* 1263 */ // MIs[2] y
4126 /* 1263 */ // No operand predicates
4127 /* 1263 */ // MIs[1] n
4128 /* 1263 */ // No operand predicates
4129 /* 1263 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
4130 /* 1267 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4131 /* 1269 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4132 /* 1272 */ // Combiner Rule #240: add_shift @ [__add_shift_match_0[0]]
4133 /* 1272 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4134 /* 1275 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4135 /* 1280 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4136 /* 1284 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4137 /* 1288 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4138 /* 1292 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4139 /* 1296 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4140 /* 1300 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4141 /* 1303 */ GIR_EraseRootFromParent_Done,
4142 /* 1304 */ // Label 115: @1304
4143 /* 1304 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1338), // Rule ID 2 //
4144 /* 1309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4145 /* 1312 */ // MIs[0] root
4146 /* 1312 */ // No operand predicates
4147 /* 1312 */ // MIs[0] sub
4148 /* 1312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4149 /* 1316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4150 /* 1320 */ // MIs[1] Operand 1
4151 /* 1320 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4152 /* 1324 */ // MIs[1] A
4153 /* 1324 */ // No operand predicates
4154 /* 1324 */ // MIs[0] B
4155 /* 1324 */ // No operand predicates
4156 /* 1324 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4157 /* 1326 */ // Combiner Rule #2: ZeroMinusAPlusB
4158 /* 1326 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4159 /* 1329 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4160 /* 1331 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4161 /* 1333 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4162 /* 1337 */ GIR_EraseRootFromParent_Done,
4163 /* 1338 */ // Label 116: @1338
4164 /* 1338 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1375), // Rule ID 15 //
4165 /* 1343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4166 /* 1346 */ // MIs[0] root
4167 /* 1346 */ // No operand predicates
4168 /* 1346 */ // MIs[0] sub
4169 /* 1346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4170 /* 1350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4171 /* 1354 */ // MIs[1] A
4172 /* 1354 */ // No operand predicates
4173 /* 1354 */ // MIs[1] c1
4174 /* 1354 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4175 /* 1358 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4176 /* 1362 */ // MIs[2] imm1
4177 /* 1362 */ // No operand predicates
4178 /* 1362 */ // MIs[0] c2
4179 /* 1362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4180 /* 1366 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4181 /* 1370 */ // MIs[3] imm2
4182 /* 1370 */ // No operand predicates
4183 /* 1370 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4184 /* 1372 */ // Combiner Rule #15: AMinusC1PlusC2
4185 /* 1372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4186 /* 1375 */ // Label 117: @1375
4187 /* 1375 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1409), // Rule ID 5 //
4188 /* 1380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4189 /* 1383 */ // MIs[0] root
4190 /* 1383 */ // No operand predicates
4191 /* 1383 */ // MIs[0] sub
4192 /* 1383 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4193 /* 1387 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4194 /* 1391 */ // MIs[1] B
4195 /* 1391 */ // No operand predicates
4196 /* 1391 */ // MIs[1] A
4197 /* 1391 */ // No operand predicates
4198 /* 1391 */ // MIs[0] A
4199 /* 1391 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4200 /* 1396 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4201 /* 1401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4202 /* 1403 */ // Combiner Rule #5: BMinusAPlusA
4203 /* 1403 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4204 /* 1408 */ GIR_EraseRootFromParent_Done,
4205 /* 1409 */ // Label 118: @1409
4206 /* 1409 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1443), // Rule ID 137 //
4207 /* 1414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4208 /* 1417 */ // MIs[0] dst
4209 /* 1417 */ // No operand predicates
4210 /* 1417 */ // MIs[0] __add_sub_reg_match_0.tmp
4211 /* 1417 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4212 /* 1421 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4213 /* 1425 */ // MIs[1] src
4214 /* 1425 */ // No operand predicates
4215 /* 1425 */ // MIs[1] __add_sub_reg_match_0.x
4216 /* 1425 */ // No operand predicates
4217 /* 1425 */ // MIs[0] __add_sub_reg_match_0.x
4218 /* 1425 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4219 /* 1430 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4220 /* 1435 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4221 /* 1437 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[1]]
4222 /* 1437 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4223 /* 1442 */ GIR_EraseRootFromParent_Done,
4224 /* 1443 */ // Label 119: @1443
4225 /* 1443 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1488), // Rule ID 7 //
4226 /* 1448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4227 /* 1451 */ // MIs[0] root
4228 /* 1451 */ // No operand predicates
4229 /* 1451 */ // MIs[0] sub1
4230 /* 1451 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4231 /* 1455 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4232 /* 1459 */ // MIs[1] A
4233 /* 1459 */ // No operand predicates
4234 /* 1459 */ // MIs[1] B
4235 /* 1459 */ // No operand predicates
4236 /* 1459 */ // MIs[0] sub2
4237 /* 1459 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4238 /* 1463 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4239 /* 1467 */ // MIs[2] B
4240 /* 1467 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4241 /* 1472 */ // MIs[2] C
4242 /* 1472 */ // No operand predicates
4243 /* 1472 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4244 /* 1474 */ // Combiner Rule #7: AMinusBPlusBMinusC
4245 /* 1474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4246 /* 1477 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4247 /* 1479 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4248 /* 1483 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4249 /* 1487 */ GIR_EraseRootFromParent_Done,
4250 /* 1488 */ // Label 120: @1488
4251 /* 1488 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1533), // Rule ID 6 //
4252 /* 1493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4253 /* 1496 */ // MIs[0] root
4254 /* 1496 */ // No operand predicates
4255 /* 1496 */ // MIs[0] sub1
4256 /* 1496 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4257 /* 1500 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4258 /* 1504 */ // MIs[1] A
4259 /* 1504 */ // No operand predicates
4260 /* 1504 */ // MIs[1] B
4261 /* 1504 */ // No operand predicates
4262 /* 1504 */ // MIs[0] sub2
4263 /* 1504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4264 /* 1508 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4265 /* 1512 */ // MIs[2] C
4266 /* 1512 */ // No operand predicates
4267 /* 1512 */ // MIs[2] A
4268 /* 1512 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4269 /* 1517 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4270 /* 1519 */ // Combiner Rule #6: AMinusBPlusCMinusA
4271 /* 1519 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4272 /* 1522 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4273 /* 1524 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4274 /* 1528 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4275 /* 1532 */ GIR_EraseRootFromParent_Done,
4276 /* 1533 */ // Label 121: @1533
4277 /* 1533 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1568), // Rule ID 42 //
4278 /* 1538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
4279 /* 1541 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4280 /* 1547 */ // MIs[0] root
4281 /* 1547 */ // No operand predicates
4282 /* 1547 */ // MIs[0] left
4283 /* 1547 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4284 /* 1551 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4285 /* 1555 */ // MIs[1] imm1
4286 /* 1555 */ // No operand predicates
4287 /* 1555 */ // MIs[0] right
4288 /* 1555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4289 /* 1559 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4290 /* 1563 */ // MIs[2] imm2
4291 /* 1563 */ // No operand predicates
4292 /* 1563 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4293 /* 1565 */ // Combiner Rule #40: add_of_vscale
4294 /* 1565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4295 /* 1568 */ // Label 122: @1568
4296 /* 1568 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1602), // Rule ID 3 //
4297 /* 1573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4298 /* 1576 */ // MIs[0] root
4299 /* 1576 */ // No operand predicates
4300 /* 1576 */ // MIs[0] A
4301 /* 1576 */ // No operand predicates
4302 /* 1576 */ // MIs[0] sub
4303 /* 1576 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4304 /* 1580 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4305 /* 1584 */ // MIs[1] Operand 1
4306 /* 1584 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4307 /* 1588 */ // MIs[1] B
4308 /* 1588 */ // No operand predicates
4309 /* 1588 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4310 /* 1590 */ // Combiner Rule #3: APlusZeroMinusB
4311 /* 1590 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4312 /* 1593 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4313 /* 1595 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4314 /* 1597 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4315 /* 1601 */ GIR_EraseRootFromParent_Done,
4316 /* 1602 */ // Label 123: @1602
4317 /* 1602 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1636), // Rule ID 4 //
4318 /* 1607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4319 /* 1610 */ // MIs[0] root
4320 /* 1610 */ // No operand predicates
4321 /* 1610 */ // MIs[0] A
4322 /* 1610 */ // No operand predicates
4323 /* 1610 */ // MIs[0] sub
4324 /* 1610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4325 /* 1614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4326 /* 1618 */ // MIs[1] B
4327 /* 1618 */ // No operand predicates
4328 /* 1618 */ // MIs[1] A
4329 /* 1618 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4330 /* 1623 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4331 /* 1628 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4332 /* 1630 */ // Combiner Rule #4: APlusBMinusB
4333 /* 1630 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4334 /* 1635 */ GIR_EraseRootFromParent_Done,
4335 /* 1636 */ // Label 124: @1636
4336 /* 1636 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1670), // Rule ID 136 //
4337 /* 1641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4338 /* 1644 */ // MIs[0] dst
4339 /* 1644 */ // No operand predicates
4340 /* 1644 */ // MIs[0] __add_sub_reg_match_0.x
4341 /* 1644 */ // No operand predicates
4342 /* 1644 */ // MIs[0] __add_sub_reg_match_0.tmp
4343 /* 1644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4344 /* 1648 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4345 /* 1652 */ // MIs[1] src
4346 /* 1652 */ // No operand predicates
4347 /* 1652 */ // MIs[1] __add_sub_reg_match_0.x
4348 /* 1652 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4349 /* 1657 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4350 /* 1662 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4351 /* 1664 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[0]]
4352 /* 1664 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4353 /* 1669 */ GIR_EraseRootFromParent_Done,
4354 /* 1670 */ // Label 125: @1670
4355 /* 1670 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1715), // Rule ID 8 //
4356 /* 1675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4357 /* 1678 */ // MIs[0] root
4358 /* 1678 */ // No operand predicates
4359 /* 1678 */ // MIs[0] A
4360 /* 1678 */ // No operand predicates
4361 /* 1678 */ // MIs[0] sub1
4362 /* 1678 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4363 /* 1682 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4364 /* 1686 */ // MIs[1] B
4365 /* 1686 */ // No operand predicates
4366 /* 1686 */ // MIs[1] add1
4367 /* 1686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4368 /* 1690 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4369 /* 1694 */ // MIs[2] A
4370 /* 1694 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4371 /* 1699 */ // MIs[2] C
4372 /* 1699 */ // No operand predicates
4373 /* 1699 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4374 /* 1701 */ // Combiner Rule #8: APlusBMinusAplusC
4375 /* 1701 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4376 /* 1704 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4377 /* 1706 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4378 /* 1710 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4379 /* 1714 */ GIR_EraseRootFromParent_Done,
4380 /* 1715 */ // Label 126: @1715
4381 /* 1715 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1760), // Rule ID 9 //
4382 /* 1720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4383 /* 1723 */ // MIs[0] root
4384 /* 1723 */ // No operand predicates
4385 /* 1723 */ // MIs[0] A
4386 /* 1723 */ // No operand predicates
4387 /* 1723 */ // MIs[0] sub1
4388 /* 1723 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4389 /* 1727 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4390 /* 1731 */ // MIs[1] B
4391 /* 1731 */ // No operand predicates
4392 /* 1731 */ // MIs[1] add1
4393 /* 1731 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4394 /* 1735 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4395 /* 1739 */ // MIs[2] C
4396 /* 1739 */ // No operand predicates
4397 /* 1739 */ // MIs[2] A
4398 /* 1739 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4399 /* 1744 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4400 /* 1746 */ // Combiner Rule #9: APlusBMinusCPlusA
4401 /* 1746 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4402 /* 1749 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4403 /* 1751 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4404 /* 1755 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4405 /* 1759 */ GIR_EraseRootFromParent_Done,
4406 /* 1760 */ // Label 127: @1760
4407 /* 1760 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1783), // Rule ID 108 //
4408 /* 1765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4409 /* 1768 */ // MIs[0] dst
4410 /* 1768 */ // No operand predicates
4411 /* 1768 */ // MIs[0] lhs
4412 /* 1768 */ // No operand predicates
4413 /* 1768 */ // MIs[0] Operand 2
4414 /* 1768 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4415 /* 1772 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4416 /* 1777 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[1]]
4417 /* 1777 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4418 /* 1782 */ GIR_EraseRootFromParent_Done,
4419 /* 1783 */ // Label 128: @1783
4420 /* 1783 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1794), // Rule ID 156 //
4421 /* 1788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4422 /* 1791 */ // MIs[0] root
4423 /* 1791 */ // No operand predicates
4424 /* 1791 */ // MIs[0] src1
4425 /* 1791 */ // No operand predicates
4426 /* 1791 */ // MIs[0] src2
4427 /* 1791 */ // No operand predicates
4428 /* 1791 */ // Combiner Rule #112: reassoc_comm_binops
4429 /* 1791 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4430 /* 1794 */ // Label 129: @1794
4431 /* 1794 */ GIM_Reject,
4432 /* 1795 */ // Label 2: @1795
4433 /* 1795 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1806), // Rule ID 98 //
4434 /* 1800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
4435 /* 1803 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4436 /* 1803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4437 /* 1806 */ // Label 130: @1806
4438 /* 1806 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1817), // Rule ID 258 //
4439 /* 1811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4440 /* 1814 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SUB'
4441 /* 1814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4442 /* 1817 */ // Label 131: @1817
4443 /* 1817 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1828), // Rule ID 295 //
4444 /* 1822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4445 /* 1825 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SUB'
4446 /* 1825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4447 /* 1828 */ // Label 132: @1828
4448 /* 1828 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1839), // Rule ID 327 //
4449 /* 1833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
4450 /* 1836 */ // Combiner Rule #205: sub_add_reg; wip_match_opcode 'G_SUB'
4451 /* 1836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4452 /* 1839 */ // Label 133: @1839
4453 /* 1839 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1850), // Rule ID 361 //
4454 /* 1844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
4455 /* 1847 */ // Combiner Rule #212: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4456 /* 1847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4457 /* 1850 */ // Label 134: @1850
4458 /* 1850 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1927), // Rule ID 393 //
4459 /* 1855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
4460 /* 1858 */ // MIs[0] dst
4461 /* 1858 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4462 /* 1862 */ // MIs[0] sub1
4463 /* 1862 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4464 /* 1866 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4465 /* 1870 */ // MIs[1] a
4466 /* 1870 */ // No operand predicates
4467 /* 1870 */ // MIs[1] b
4468 /* 1870 */ // No operand predicates
4469 /* 1870 */ // MIs[0] Operand 2
4470 /* 1870 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4471 /* 1874 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4472 /* 1878 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4473 /* 1880 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4474 /* 1883 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4475 /* 1893 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4476 /* 1896 */ // Combiner Rule #241: sub_one_from_sub
4477 /* 1896 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4478 /* 1899 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4479 /* 1904 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4480 /* 1908 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4481 /* 1911 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4482 /* 1915 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4483 /* 1919 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4484 /* 1922 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4485 /* 1926 */ GIR_EraseRootFromParent_Done,
4486 /* 1927 */ // Label 135: @1927
4487 /* 1927 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1972), // Rule ID 0 //
4488 /* 1932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4489 /* 1935 */ // MIs[0] root
4490 /* 1935 */ // No operand predicates
4491 /* 1935 */ // MIs[0] add1
4492 /* 1935 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4493 /* 1939 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4494 /* 1943 */ // MIs[1] A
4495 /* 1943 */ // No operand predicates
4496 /* 1943 */ // MIs[1] sub1
4497 /* 1943 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4498 /* 1947 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4499 /* 1951 */ // MIs[2] B
4500 /* 1951 */ // No operand predicates
4501 /* 1951 */ // MIs[2] C
4502 /* 1951 */ // No operand predicates
4503 /* 1951 */ // MIs[0] B
4504 /* 1951 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4505 /* 1956 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4506 /* 1958 */ // Combiner Rule #0: APlusBMinusCMinusB
4507 /* 1958 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4508 /* 1961 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4509 /* 1963 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4510 /* 1967 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4511 /* 1971 */ GIR_EraseRootFromParent_Done,
4512 /* 1972 */ // Label 136: @1972
4513 /* 1972 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2009), // Rule ID 11 //
4514 /* 1977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4515 /* 1980 */ // MIs[0] root
4516 /* 1980 */ // No operand predicates
4517 /* 1980 */ // MIs[0] add
4518 /* 1980 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4519 /* 1984 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4520 /* 1988 */ // MIs[1] A
4521 /* 1988 */ // No operand predicates
4522 /* 1988 */ // MIs[1] c1
4523 /* 1988 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4524 /* 1992 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4525 /* 1996 */ // MIs[2] imm1
4526 /* 1996 */ // No operand predicates
4527 /* 1996 */ // MIs[0] c2
4528 /* 1996 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4529 /* 2000 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4530 /* 2004 */ // MIs[3] imm2
4531 /* 2004 */ // No operand predicates
4532 /* 2004 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4533 /* 2006 */ // Combiner Rule #11: APlusC1MinusC2
4534 /* 2006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4535 /* 2009 */ // Label 137: @2009
4536 /* 2009 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2046), // Rule ID 14 //
4537 /* 2014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4538 /* 2017 */ // MIs[0] root
4539 /* 2017 */ // No operand predicates
4540 /* 2017 */ // MIs[0] sub1
4541 /* 2017 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4542 /* 2021 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4543 /* 2025 */ // MIs[1] c1
4544 /* 2025 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4545 /* 2029 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4546 /* 2033 */ // MIs[2] imm1
4547 /* 2033 */ // No operand predicates
4548 /* 2033 */ // MIs[1] A
4549 /* 2033 */ // No operand predicates
4550 /* 2033 */ // MIs[0] c2
4551 /* 2033 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4552 /* 2037 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4553 /* 2041 */ // MIs[3] imm2
4554 /* 2041 */ // No operand predicates
4555 /* 2041 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4556 /* 2043 */ // Combiner Rule #14: C1Minus2MinusC2
4557 /* 2043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4558 /* 2046 */ // Label 138: @2046
4559 /* 2046 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2091), // Rule ID 1 //
4560 /* 2051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4561 /* 2054 */ // MIs[0] root
4562 /* 2054 */ // No operand predicates
4563 /* 2054 */ // MIs[0] sub2
4564 /* 2054 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4565 /* 2058 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4566 /* 2062 */ // MIs[1] A
4567 /* 2062 */ // No operand predicates
4568 /* 2062 */ // MIs[1] sub1
4569 /* 2062 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4570 /* 2066 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4571 /* 2070 */ // MIs[2] B
4572 /* 2070 */ // No operand predicates
4573 /* 2070 */ // MIs[2] C
4574 /* 2070 */ // No operand predicates
4575 /* 2070 */ // MIs[0] C
4576 /* 2070 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4577 /* 2075 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4578 /* 2077 */ // Combiner Rule #1: AMinusBMinusCMinusC
4579 /* 2077 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4580 /* 2080 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4581 /* 2082 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4582 /* 2086 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4583 /* 2090 */ GIR_EraseRootFromParent_Done,
4584 /* 2091 */ // Label 139: @2091
4585 /* 2091 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2128), // Rule ID 13 //
4586 /* 2096 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
4587 /* 2099 */ // MIs[0] root
4588 /* 2099 */ // No operand predicates
4589 /* 2099 */ // MIs[0] sub1
4590 /* 2099 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4591 /* 2103 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4592 /* 2107 */ // MIs[1] A
4593 /* 2107 */ // No operand predicates
4594 /* 2107 */ // MIs[1] c1
4595 /* 2107 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4596 /* 2111 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4597 /* 2115 */ // MIs[2] imm1
4598 /* 2115 */ // No operand predicates
4599 /* 2115 */ // MIs[0] c2
4600 /* 2115 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4601 /* 2119 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4602 /* 2123 */ // MIs[3] imm2
4603 /* 2123 */ // No operand predicates
4604 /* 2123 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4605 /* 2125 */ // Combiner Rule #13: AMinusC1MinusC2
4606 /* 2125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4607 /* 2128 */ // Label 140: @2128
4608 /* 2128 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2171), // Rule ID 166 //
4609 /* 2133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
4610 /* 2136 */ // MIs[0] dst
4611 /* 2136 */ // No operand predicates
4612 /* 2136 */ // MIs[0] Operand 1
4613 /* 2136 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4614 /* 2140 */ // MIs[0] and
4615 /* 2140 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4616 /* 2144 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4617 /* 2148 */ // MIs[1] x
4618 /* 2148 */ // No operand predicates
4619 /* 2148 */ // MIs[1] Operand 2
4620 /* 2148 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4621 /* 2152 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
4622 /* 2156 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4623 /* 2158 */ // Combiner Rule #122: neg_and_one_to_sext_inreg
4624 /* 2158 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4625 /* 2161 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4626 /* 2163 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4627 /* 2167 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4628 /* 2170 */ GIR_EraseRootFromParent_Done,
4629 /* 2171 */ // Label 141: @2171
4630 /* 2171 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2208), // Rule ID 12 //
4631 /* 2176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4632 /* 2179 */ // MIs[0] root
4633 /* 2179 */ // No operand predicates
4634 /* 2179 */ // MIs[0] c2
4635 /* 2179 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4636 /* 2183 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4637 /* 2187 */ // MIs[1] imm2
4638 /* 2187 */ // No operand predicates
4639 /* 2187 */ // MIs[0] add
4640 /* 2187 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4641 /* 2191 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4642 /* 2195 */ // MIs[2] A
4643 /* 2195 */ // No operand predicates
4644 /* 2195 */ // MIs[2] c1
4645 /* 2195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4646 /* 2199 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4647 /* 2203 */ // MIs[3] imm1
4648 /* 2203 */ // No operand predicates
4649 /* 2203 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4650 /* 2205 */ // Combiner Rule #12: C2MinusAPlusC1
4651 /* 2205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4652 /* 2208 */ // Label 142: @2208
4653 /* 2208 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2247), // Rule ID 119 //
4654 /* 2213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4655 /* 2216 */ // MIs[0] dst
4656 /* 2216 */ // No operand predicates
4657 /* 2216 */ // MIs[0] x
4658 /* 2216 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
4659 /* 2220 */ // MIs[0] x
4660 /* 2220 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4661 /* 2225 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4662 /* 2228 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4663 /* 2238 */ // Combiner Rule #89: same_val_zero @ [__same_val_zero_match_0[0]]
4664 /* 2238 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4665 /* 2241 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4666 /* 2243 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4667 /* 2246 */ GIR_EraseRootFromParent_Done,
4668 /* 2247 */ // Label 143: @2247
4669 /* 2247 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2274), // Rule ID 45 //
4670 /* 2252 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4671 /* 2255 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4672 /* 2261 */ // MIs[0] root
4673 /* 2261 */ // No operand predicates
4674 /* 2261 */ // MIs[0] x
4675 /* 2261 */ // No operand predicates
4676 /* 2261 */ // MIs[0] right
4677 /* 2261 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4678 /* 2265 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4679 /* 2269 */ // MIs[1] imm
4680 /* 2269 */ // No operand predicates
4681 /* 2269 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4682 /* 2271 */ // Combiner Rule #43: sub_of_vscale
4683 /* 2271 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4684 /* 2274 */ // Label 144: @2274
4685 /* 2274 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2297), // Rule ID 107 //
4686 /* 2279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4687 /* 2282 */ // MIs[0] dst
4688 /* 2282 */ // No operand predicates
4689 /* 2282 */ // MIs[0] lhs
4690 /* 2282 */ // No operand predicates
4691 /* 2282 */ // MIs[0] Operand 2
4692 /* 2282 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4693 /* 2286 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4694 /* 2291 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[0]]
4695 /* 2291 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4696 /* 2296 */ GIR_EraseRootFromParent_Done,
4697 /* 2297 */ // Label 145: @2297
4698 /* 2297 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2318), // Rule ID 18 //
4699 /* 2302 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4700 /* 2305 */ // MIs[0] d
4701 /* 2305 */ // No operand predicates
4702 /* 2305 */ // MIs[0] op1
4703 /* 2305 */ // No operand predicates
4704 /* 2305 */ // MIs[0] c
4705 /* 2305 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4706 /* 2309 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4707 /* 2313 */ // MIs[1] imm
4708 /* 2313 */ // No operand predicates
4709 /* 2313 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4710 /* 2315 */ // Combiner Rule #18: sub_to_add
4711 /* 2315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4712 /* 2318 */ // Label 146: @2318
4713 /* 2318 */ GIM_Reject,
4714 /* 2319 */ // Label 3: @2319
4715 /* 2319 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2330), // Rule ID 81 //
4716 /* 2324 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4717 /* 2327 */ // Combiner Rule #75: undef_to_int_zero; wip_match_opcode 'G_MUL'
4718 /* 2327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4719 /* 2330 */ // Label 147: @2330
4720 /* 2330 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2341), // Rule ID 255 //
4721 /* 2335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4722 /* 2338 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_MUL'
4723 /* 2338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4724 /* 2341 */ // Label 148: @2341
4725 /* 2341 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2352), // Rule ID 331 //
4726 /* 2346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4727 /* 2349 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4728 /* 2349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4729 /* 2352 */ // Label 149: @2352
4730 /* 2352 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2392), // Rule ID 20 //
4731 /* 2357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
4732 /* 2360 */ // MIs[0] dst
4733 /* 2360 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4734 /* 2364 */ // MIs[0] x
4735 /* 2364 */ // No operand predicates
4736 /* 2364 */ // MIs[0] Operand 2
4737 /* 2364 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
4738 /* 2368 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4739 /* 2371 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4740 /* 2381 */ // Combiner Rule #20: mul_by_neg_one
4741 /* 2381 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4742 /* 2384 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4743 /* 2386 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4744 /* 2389 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4745 /* 2391 */ GIR_EraseRootFromParent_Done,
4746 /* 2392 */ // Label 150: @2392
4747 /* 2392 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2427), // Rule ID 43 //
4748 /* 2397 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
4749 /* 2400 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4750 /* 2406 */ // MIs[0] root
4751 /* 2406 */ // No operand predicates
4752 /* 2406 */ // MIs[0] left
4753 /* 2406 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4754 /* 2410 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4755 /* 2414 */ // MIs[1] scale
4756 /* 2414 */ // No operand predicates
4757 /* 2414 */ // MIs[0] x
4758 /* 2414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4759 /* 2418 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4760 /* 2422 */ // MIs[2] imm1
4761 /* 2422 */ // No operand predicates
4762 /* 2422 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4763 /* 2424 */ // Combiner Rule #41: mul_of_vscale
4764 /* 2424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4765 /* 2427 */ // Label 151: @2427
4766 /* 2427 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2467), // Rule ID 128 //
4767 /* 2432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4768 /* 2435 */ // MIs[0] dst
4769 /* 2435 */ // No operand predicates
4770 /* 2435 */ // MIs[0] zero
4771 /* 2435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4772 /* 2439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4773 /* 2443 */ // MIs[1] Operand 1
4774 /* 2443 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4775 /* 2454 */ // MIs[0] rhs
4776 /* 2454 */ // No operand predicates
4777 /* 2454 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4778 /* 2459 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4779 /* 2461 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
4780 /* 2461 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4781 /* 2466 */ GIR_EraseRootFromParent_Done,
4782 /* 2467 */ // Label 152: @2467
4783 /* 2467 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2490), // Rule ID 129 //
4784 /* 2472 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
4785 /* 2475 */ // MIs[0] dst
4786 /* 2475 */ // No operand predicates
4787 /* 2475 */ // MIs[0] lhs
4788 /* 2475 */ // No operand predicates
4789 /* 2475 */ // MIs[0] zero
4790 /* 2475 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4791 /* 2479 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4792 /* 2484 */ // Combiner Rule #91: binop_right_to_zero
4793 /* 2484 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4794 /* 2489 */ GIR_EraseRootFromParent_Done,
4795 /* 2490 */ // Label 153: @2490
4796 /* 2490 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2513), // Rule ID 134 //
4797 /* 2495 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4798 /* 2498 */ // MIs[0] dst
4799 /* 2498 */ // No operand predicates
4800 /* 2498 */ // MIs[0] x
4801 /* 2498 */ // No operand predicates
4802 /* 2498 */ // MIs[0] Operand 2
4803 /* 2498 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4804 /* 2502 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4805 /* 2507 */ // Combiner Rule #96: right_identity_one_int
4806 /* 2507 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4807 /* 2512 */ GIR_EraseRootFromParent_Done,
4808 /* 2513 */ // Label 154: @2513
4809 /* 2513 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2524), // Rule ID 17 //
4810 /* 2518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4811 /* 2521 */ // MIs[0] d
4812 /* 2521 */ // No operand predicates
4813 /* 2521 */ // MIs[0] op1
4814 /* 2521 */ // No operand predicates
4815 /* 2521 */ // MIs[0] op2
4816 /* 2521 */ // No operand predicates
4817 /* 2521 */ // Combiner Rule #17: mul_to_shl
4818 /* 2521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4819 /* 2524 */ // Label 155: @2524
4820 /* 2524 */ GIM_Reject,
4821 /* 2525 */ // Label 4: @2525
4822 /* 2525 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2536), // Rule ID 226 //
4823 /* 2530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4824 /* 2533 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
4825 /* 2533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4826 /* 2536 */ // Label 156: @2536
4827 /* 2536 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2547), // Rule ID 261 //
4828 /* 2541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4829 /* 2544 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SDIV'
4830 /* 2544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4831 /* 2547 */ // Label 157: @2547
4832 /* 2547 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2558), // Rule ID 300 //
4833 /* 2552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4834 /* 2555 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SDIV'
4835 /* 2555 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4836 /* 2558 */ // Label 158: @2558
4837 /* 2558 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2598), // Rule ID 124 //
4838 /* 2563 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4839 /* 2566 */ // MIs[0] dst
4840 /* 2566 */ // No operand predicates
4841 /* 2566 */ // MIs[0] zero
4842 /* 2566 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4843 /* 2570 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4844 /* 2574 */ // MIs[1] Operand 1
4845 /* 2574 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4846 /* 2585 */ // MIs[0] rhs
4847 /* 2585 */ // No operand predicates
4848 /* 2585 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4849 /* 2590 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4850 /* 2592 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
4851 /* 2592 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4852 /* 2597 */ GIR_EraseRootFromParent_Done,
4853 /* 2598 */ // Label 159: @2598
4854 /* 2598 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2615), // Rule ID 323 //
4855 /* 2603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
4856 /* 2606 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4857 /* 2612 */ // MIs[0] dst
4858 /* 2612 */ // No operand predicates
4859 /* 2612 */ // MIs[0] x
4860 /* 2612 */ // No operand predicates
4861 /* 2612 */ // MIs[0] y
4862 /* 2612 */ // No operand predicates
4863 /* 2612 */ // Combiner Rule #201: sdiv_by_pow2
4864 /* 2612 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
4865 /* 2615 */ // Label 160: @2615
4866 /* 2615 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2626), // Rule ID 325 //
4867 /* 2620 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
4868 /* 2623 */ // MIs[0] dst
4869 /* 2623 */ // No operand predicates
4870 /* 2623 */ // MIs[0] x
4871 /* 2623 */ // No operand predicates
4872 /* 2623 */ // MIs[0] y
4873 /* 2623 */ // No operand predicates
4874 /* 2623 */ // Combiner Rule #203: sdiv_by_const
4875 /* 2623 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4876 /* 2626 */ // Label 161: @2626
4877 /* 2626 */ GIM_Reject,
4878 /* 2627 */ // Label 5: @2627
4879 /* 2627 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2638), // Rule ID 84 //
4880 /* 2632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
4881 /* 2635 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
4882 /* 2635 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4883 /* 2638 */ // Label 162: @2638
4884 /* 2638 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2649), // Rule ID 227 //
4885 /* 2643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4886 /* 2646 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
4887 /* 2646 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4888 /* 2649 */ // Label 163: @2649
4889 /* 2649 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2660), // Rule ID 260 //
4890 /* 2654 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4891 /* 2657 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UDIV'
4892 /* 2657 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4893 /* 2660 */ // Label 164: @2660
4894 /* 2660 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2671), // Rule ID 302 //
4895 /* 2665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4896 /* 2668 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UDIV'
4897 /* 2668 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4898 /* 2671 */ // Label 165: @2671
4899 /* 2671 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2711), // Rule ID 125 //
4900 /* 2676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4901 /* 2679 */ // MIs[0] dst
4902 /* 2679 */ // No operand predicates
4903 /* 2679 */ // MIs[0] zero
4904 /* 2679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4905 /* 2683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4906 /* 2687 */ // MIs[1] Operand 1
4907 /* 2687 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4908 /* 2698 */ // MIs[0] rhs
4909 /* 2698 */ // No operand predicates
4910 /* 2698 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4911 /* 2703 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4912 /* 2705 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
4913 /* 2705 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4914 /* 2710 */ GIR_EraseRootFromParent_Done,
4915 /* 2711 */ // Label 166: @2711
4916 /* 2711 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2728), // Rule ID 322 //
4917 /* 2716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4918 /* 2719 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4919 /* 2725 */ // MIs[0] dst
4920 /* 2725 */ // No operand predicates
4921 /* 2725 */ // MIs[0] x
4922 /* 2725 */ // No operand predicates
4923 /* 2725 */ // MIs[0] y
4924 /* 2725 */ // No operand predicates
4925 /* 2725 */ // Combiner Rule #200: udiv_by_pow2
4926 /* 2725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
4927 /* 2728 */ // Label 167: @2728
4928 /* 2728 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2739), // Rule ID 324 //
4929 /* 2733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
4930 /* 2736 */ // MIs[0] dst
4931 /* 2736 */ // No operand predicates
4932 /* 2736 */ // MIs[0] x
4933 /* 2736 */ // No operand predicates
4934 /* 2736 */ // MIs[0] y
4935 /* 2736 */ // No operand predicates
4936 /* 2736 */ // Combiner Rule #202: udiv_by_const
4937 /* 2736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4938 /* 2739 */ // Label 168: @2739
4939 /* 2739 */ GIM_Reject,
4940 /* 2740 */ // Label 6: @2740
4941 /* 2740 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2751), // Rule ID 228 //
4942 /* 2745 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4943 /* 2748 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_SREM'
4944 /* 2748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4945 /* 2751 */ // Label 169: @2751
4946 /* 2751 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2762), // Rule ID 263 //
4947 /* 2756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4948 /* 2759 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SREM'
4949 /* 2759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4950 /* 2762 */ // Label 170: @2762
4951 /* 2762 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2773), // Rule ID 301 //
4952 /* 2767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4953 /* 2770 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SREM'
4954 /* 2770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4955 /* 2773 */ // Label 171: @2773
4956 /* 2773 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2813), // Rule ID 126 //
4957 /* 2778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4958 /* 2781 */ // MIs[0] dst
4959 /* 2781 */ // No operand predicates
4960 /* 2781 */ // MIs[0] zero
4961 /* 2781 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4962 /* 2785 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4963 /* 2789 */ // MIs[1] Operand 1
4964 /* 2789 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4965 /* 2800 */ // MIs[0] rhs
4966 /* 2800 */ // No operand predicates
4967 /* 2800 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4968 /* 2805 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4969 /* 2807 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
4970 /* 2807 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4971 /* 2812 */ GIR_EraseRootFromParent_Done,
4972 /* 2813 */ // Label 172: @2813
4973 /* 2813 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2824), // Rule ID 321 //
4974 /* 2818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
4975 /* 2821 */ // MIs[0] dst
4976 /* 2821 */ // No operand predicates
4977 /* 2821 */ // MIs[0] x
4978 /* 2821 */ // No operand predicates
4979 /* 2821 */ // MIs[0] y
4980 /* 2821 */ // No operand predicates
4981 /* 2821 */ // Combiner Rule #199: srem_by_const
4982 /* 2821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4983 /* 2824 */ // Label 173: @2824
4984 /* 2824 */ GIM_Reject,
4985 /* 2825 */ // Label 7: @2825
4986 /* 2825 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2836), // Rule ID 85 //
4987 /* 2830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
4988 /* 2833 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
4989 /* 2833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4990 /* 2836 */ // Label 174: @2836
4991 /* 2836 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2847), // Rule ID 177 //
4992 /* 2841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
4993 /* 2844 */ // Combiner Rule #133: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
4994 /* 2844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
4995 /* 2847 */ // Label 175: @2847
4996 /* 2847 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2858), // Rule ID 229 //
4997 /* 2852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4998 /* 2855 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_UREM'
4999 /* 2855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
5000 /* 2858 */ // Label 176: @2858
5001 /* 2858 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2869), // Rule ID 262 //
5002 /* 2863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5003 /* 2866 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UREM'
5004 /* 2866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5005 /* 2869 */ // Label 177: @2869
5006 /* 2869 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2880), // Rule ID 303 //
5007 /* 2874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5008 /* 2877 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UREM'
5009 /* 2877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5010 /* 2880 */ // Label 178: @2880
5011 /* 2880 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2920), // Rule ID 127 //
5012 /* 2885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5013 /* 2888 */ // MIs[0] dst
5014 /* 2888 */ // No operand predicates
5015 /* 2888 */ // MIs[0] zero
5016 /* 2888 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5017 /* 2892 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5018 /* 2896 */ // MIs[1] Operand 1
5019 /* 2896 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5020 /* 2907 */ // MIs[0] rhs
5021 /* 2907 */ // No operand predicates
5022 /* 2907 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5023 /* 2912 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5024 /* 2914 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5025 /* 2914 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5026 /* 2919 */ GIR_EraseRootFromParent_Done,
5027 /* 2920 */ // Label 179: @2920
5028 /* 2920 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2931), // Rule ID 320 //
5029 /* 2925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
5030 /* 2928 */ // MIs[0] dst
5031 /* 2928 */ // No operand predicates
5032 /* 2928 */ // MIs[0] x
5033 /* 2928 */ // No operand predicates
5034 /* 2928 */ // MIs[0] y
5035 /* 2928 */ // No operand predicates
5036 /* 2928 */ // Combiner Rule #198: urem_by_const
5037 /* 2928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
5038 /* 2931 */ // Label 180: @2931
5039 /* 2931 */ GIM_Reject,
5040 /* 2932 */ // Label 8: @2932
5041 /* 2932 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2943), // Rule ID 76 //
5042 /* 2937 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
5043 /* 2940 */ // Combiner Rule #72: load_and_mask; wip_match_opcode 'G_AND'
5044 /* 2940 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
5045 /* 2943 */ // Label 181: @2943
5046 /* 2943 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2954), // Rule ID 80 //
5047 /* 2948 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5048 /* 2951 */ // Combiner Rule #75: undef_to_int_zero; wip_match_opcode 'G_AND'
5049 /* 2951 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
5050 /* 2954 */ // Label 182: @2954
5051 /* 2954 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2965), // Rule ID 149 //
5052 /* 2959 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5053 /* 2962 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5054 /* 2962 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5055 /* 2965 */ // Label 183: @2965
5056 /* 2965 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2976), // Rule ID 169 //
5057 /* 2970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
5058 /* 2973 */ // Combiner Rule #125: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
5059 /* 2973 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
5060 /* 2976 */ // Label 184: @2976
5061 /* 2976 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2987), // Rule ID 174 //
5062 /* 2981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
5063 /* 2984 */ // Combiner Rule #130: redundant_and; wip_match_opcode 'G_AND'
5064 /* 2984 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
5065 /* 2987 */ // Label 185: @2987
5066 /* 2987 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2998), // Rule ID 199 //
5067 /* 2992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
5068 /* 2995 */ // Combiner Rule #155: overlapping_and; wip_match_opcode 'G_AND'
5069 /* 2995 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
5070 /* 2998 */ // Label 186: @2998
5071 /* 2998 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3009), // Rule ID 252 //
5072 /* 3003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5073 /* 3006 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_AND'
5074 /* 3006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5075 /* 3009 */ // Label 187: @3009
5076 /* 3009 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3020), // Rule ID 285 //
5077 /* 3014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
5078 /* 3017 */ // Combiner Rule #188: and_or_disjoint_mask; wip_match_opcode 'G_AND'
5079 /* 3017 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5080 /* 3020 */ // Label 188: @3020
5081 /* 3020 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3031), // Rule ID 297 //
5082 /* 3025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5083 /* 3028 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_AND'
5084 /* 3028 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5085 /* 3031 */ // Label 189: @3031
5086 /* 3031 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3042), // Rule ID 332 //
5087 /* 3036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5088 /* 3039 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
5089 /* 3039 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5090 /* 3042 */ // Label 190: @3042
5091 /* 3042 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3053), // Rule ID 359 //
5092 /* 3047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
5093 /* 3050 */ // Combiner Rule #210: match_ands; wip_match_opcode 'G_AND'
5094 /* 3050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
5095 /* 3053 */ // Label 191: @3053
5096 /* 3053 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3151), // Rule ID 162 //
5097 /* 3058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
5098 /* 3061 */ // MIs[0] root
5099 /* 3061 */ // No operand predicates
5100 /* 3061 */ // MIs[0] d1
5101 /* 3061 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5102 /* 3065 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5103 /* 3069 */ // MIs[1] p
5104 /* 3069 */ // No operand predicates
5105 /* 3069 */ // MIs[1] s1
5106 /* 3069 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5107 /* 3073 */ // MIs[1] Operand 3
5108 /* 3073 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5109 /* 3077 */ // MIs[0] d2
5110 /* 3077 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5111 /* 3081 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5112 /* 3085 */ // MIs[2] p
5113 /* 3085 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5114 /* 3090 */ // MIs[2] s2
5115 /* 3090 */ // No operand predicates
5116 /* 3090 */ // MIs[2] Operand 3
5117 /* 3090 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5118 /* 3094 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
5119 /* 3098 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5120 /* 3100 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5121 /* 3103 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5122 /* 3113 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5123 /* 3116 */ // Combiner Rule #118: double_icmp_zero_and_combine
5124 /* 3116 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5125 /* 3119 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5126 /* 3124 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5127 /* 3128 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5128 /* 3132 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5129 /* 3136 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5130 /* 3140 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5131 /* 3144 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5132 /* 3147 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5133 /* 3150 */ GIR_EraseRootFromParent_Done,
5134 /* 3151 */ // Label 192: @3151
5135 /* 3151 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3188), // Rule ID 245 //
5136 /* 3156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5137 /* 3159 */ // MIs[0] root
5138 /* 3159 */ // No operand predicates
5139 /* 3159 */ // MIs[0] shift
5140 /* 3159 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5141 /* 3163 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5142 /* 3167 */ // MIs[1] x
5143 /* 3167 */ // No operand predicates
5144 /* 3167 */ // MIs[1] lsb
5145 /* 3167 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5146 /* 3171 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5147 /* 3175 */ // MIs[2] imm1
5148 /* 3175 */ // No operand predicates
5149 /* 3175 */ // MIs[0] mask
5150 /* 3175 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5151 /* 3179 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5152 /* 3183 */ // MIs[3] imm2
5153 /* 3183 */ // No operand predicates
5154 /* 3183 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5155 /* 3185 */ // Combiner Rule #178: bitfield_extract_from_and
5156 /* 3185 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5157 /* 3188 */ // Label 193: @3188
5158 /* 3188 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3302), // Rule ID 399 //
5159 /* 3193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
5160 /* 3196 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
5161 /* 3199 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
5162 /* 3202 */ // MIs[0] dst
5163 /* 3202 */ // No operand predicates
5164 /* 3202 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
5165 /* 3206 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_s32,
5166 /* 3209 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_s32,
5167 /* 3212 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
5168 /* 3215 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
5169 /* 3218 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
5170 /* 3221 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
5171 /* 3224 */ // Combiner Rule #247: combine_and_s64_with_s32_mask
5172 /* 3224 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5173 /* 3227 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5174 /* 3232 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5175 /* 3237 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5176 /* 3239 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5177 /* 3243 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5178 /* 3248 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5179 /* 3253 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
5180 /* 3257 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5181 /* 3261 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5182 /* 3266 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
5183 /* 3269 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5184 /* 3272 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
5185 /* 3276 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5186 /* 3281 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
5187 /* 3284 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
5188 /* 3287 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5189 /* 3291 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
5190 /* 3295 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
5191 /* 3298 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
5192 /* 3301 */ GIR_EraseRootFromParent_Done,
5193 /* 3302 */ // Label 194: @3302
5194 /* 3302 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3326), // Rule ID 117 //
5195 /* 3307 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5196 /* 3310 */ // MIs[0] dst
5197 /* 3310 */ // No operand predicates
5198 /* 3310 */ // MIs[0] src
5199 /* 3310 */ // No operand predicates
5200 /* 3310 */ // MIs[0] src
5201 /* 3310 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5202 /* 3315 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5203 /* 3320 */ // Combiner Rule #88: binop_same_val @ [__binop_same_val_match_0[0]]
5204 /* 3320 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5205 /* 3325 */ GIR_EraseRootFromParent_Done,
5206 /* 3326 */ // Label 195: @3326
5207 /* 3326 */ GIM_Reject,
5208 /* 3327 */ // Label 9: @3327
5209 /* 3327 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3338), // Rule ID 82 //
5210 /* 3332 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
5211 /* 3335 */ // Combiner Rule #76: undef_to_negative_one; wip_match_opcode 'G_OR'
5212 /* 3335 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5213 /* 3338 */ // Label 196: @3338
5214 /* 3338 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3349), // Rule ID 150 //
5215 /* 3343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5216 /* 3346 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5217 /* 3346 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5218 /* 3349 */ // Label 197: @3349
5219 /* 3349 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3360), // Rule ID 176 //
5220 /* 3354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5221 /* 3357 */ // Combiner Rule #132: redundant_or; wip_match_opcode 'G_OR'
5222 /* 3357 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5223 /* 3360 */ // Label 198: @3360
5224 /* 3360 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3371), // Rule ID 225 //
5225 /* 3365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5226 /* 3368 */ // Combiner Rule #165: load_or_combine; wip_match_opcode 'G_OR'
5227 /* 3368 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5228 /* 3371 */ // Label 199: @3371
5229 /* 3371 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3382), // Rule ID 230 //
5230 /* 3376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
5231 /* 3379 */ // Combiner Rule #167: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5232 /* 3379 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5233 /* 3382 */ // Label 200: @3382
5234 /* 3382 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3393), // Rule ID 256 //
5235 /* 3387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5236 /* 3390 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_OR'
5237 /* 3390 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5238 /* 3393 */ // Label 201: @3393
5239 /* 3393 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3404), // Rule ID 298 //
5240 /* 3398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5241 /* 3401 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_OR'
5242 /* 3401 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5243 /* 3404 */ // Label 202: @3404
5244 /* 3404 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3415), // Rule ID 333 //
5245 /* 3409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5246 /* 3412 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5247 /* 3412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5248 /* 3415 */ // Label 203: @3415
5249 /* 3415 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3426), // Rule ID 360 //
5250 /* 3420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5251 /* 3423 */ // Combiner Rule #211: match_ors; wip_match_opcode 'G_OR'
5252 /* 3423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5253 /* 3426 */ // Label 204: @3426
5254 /* 3426 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3513), // Rule ID 401 //
5255 /* 3431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
5256 /* 3434 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
5257 /* 3437 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
5258 /* 3440 */ // MIs[0] dst
5259 /* 3440 */ // No operand predicates
5260 /* 3440 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5261 /* 3444 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5262 /* 3448 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
5263 /* 3452 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5264 /* 3456 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5265 /* 3458 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5266 /* 3461 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5267 /* 3464 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5268 /* 3467 */ // Combiner Rule #248: combine_or_s64_s32 @ [dst[1]]
5269 /* 3467 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5270 /* 3470 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5271 /* 3475 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5272 /* 3480 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
5273 /* 3482 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5274 /* 3486 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5275 /* 3491 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5276 /* 3494 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
5277 /* 3498 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5278 /* 3502 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
5279 /* 3506 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5280 /* 3509 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
5281 /* 3512 */ GIR_EraseRootFromParent_Done,
5282 /* 3513 */ // Label 205: @3513
5283 /* 3513 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3560), // Rule ID 237 //
5284 /* 3518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5285 /* 3521 */ // MIs[0] root
5286 /* 3521 */ // No operand predicates
5287 /* 3521 */ // MIs[0] out1
5288 /* 3521 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5289 /* 3525 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5290 /* 3529 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5291 /* 3529 */ // No operand predicates
5292 /* 3529 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5293 /* 3529 */ // No operand predicates
5294 /* 3529 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5295 /* 3529 */ // No operand predicates
5296 /* 3529 */ // MIs[0] out2
5297 /* 3529 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5298 /* 3533 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5299 /* 3537 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5300 /* 3537 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5301 /* 3542 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5302 /* 3542 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5303 /* 3547 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5304 /* 3552 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5305 /* 3554 */ // Combiner Rule #172: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5306 /* 3554 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5307 /* 3559 */ GIR_EraseRootFromParent_Done,
5308 /* 3560 */ // Label 206: @3560
5309 /* 3560 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3607), // Rule ID 239 //
5310 /* 3565 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5311 /* 3568 */ // MIs[0] root
5312 /* 3568 */ // No operand predicates
5313 /* 3568 */ // MIs[0] out1
5314 /* 3568 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5315 /* 3572 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5316 /* 3576 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5317 /* 3576 */ // No operand predicates
5318 /* 3576 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5319 /* 3576 */ // No operand predicates
5320 /* 3576 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5321 /* 3576 */ // No operand predicates
5322 /* 3576 */ // MIs[0] out2
5323 /* 3576 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5324 /* 3580 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5325 /* 3584 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5326 /* 3584 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5327 /* 3589 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5328 /* 3589 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5329 /* 3594 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5330 /* 3599 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5331 /* 3601 */ // Combiner Rule #173: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5332 /* 3601 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5333 /* 3606 */ GIR_EraseRootFromParent_Done,
5334 /* 3607 */ // Label 207: @3607
5335 /* 3607 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3705), // Rule ID 163 //
5336 /* 3612 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
5337 /* 3615 */ // MIs[0] root
5338 /* 3615 */ // No operand predicates
5339 /* 3615 */ // MIs[0] d1
5340 /* 3615 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5341 /* 3619 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5342 /* 3623 */ // MIs[1] p
5343 /* 3623 */ // No operand predicates
5344 /* 3623 */ // MIs[1] s1
5345 /* 3623 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5346 /* 3627 */ // MIs[1] Operand 3
5347 /* 3627 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5348 /* 3631 */ // MIs[0] d2
5349 /* 3631 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5350 /* 3635 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5351 /* 3639 */ // MIs[2] p
5352 /* 3639 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5353 /* 3644 */ // MIs[2] s2
5354 /* 3644 */ // No operand predicates
5355 /* 3644 */ // MIs[2] Operand 3
5356 /* 3644 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5357 /* 3648 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
5358 /* 3652 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5359 /* 3654 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5360 /* 3657 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5361 /* 3667 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5362 /* 3670 */ // Combiner Rule #119: double_icmp_zero_or_combine
5363 /* 3670 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5364 /* 3673 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5365 /* 3678 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5366 /* 3682 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5367 /* 3686 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5368 /* 3690 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5369 /* 3694 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5370 /* 3698 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5371 /* 3701 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5372 /* 3704 */ GIR_EraseRootFromParent_Done,
5373 /* 3705 */ // Label 208: @3705
5374 /* 3705 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3752), // Rule ID 240 //
5375 /* 3710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5376 /* 3713 */ // MIs[0] root
5377 /* 3713 */ // No operand predicates
5378 /* 3713 */ // MIs[0] out2
5379 /* 3713 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5380 /* 3717 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5381 /* 3721 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5382 /* 3721 */ // No operand predicates
5383 /* 3721 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5384 /* 3721 */ // No operand predicates
5385 /* 3721 */ // MIs[0] out1
5386 /* 3721 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5387 /* 3725 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5388 /* 3729 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5389 /* 3729 */ // No operand predicates
5390 /* 3729 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5391 /* 3729 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5392 /* 3734 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5393 /* 3734 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5394 /* 3739 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5395 /* 3744 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5396 /* 3746 */ // Combiner Rule #173: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5397 /* 3746 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5398 /* 3751 */ GIR_EraseRootFromParent_Done,
5399 /* 3752 */ // Label 209: @3752
5400 /* 3752 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3799), // Rule ID 238 //
5401 /* 3757 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5402 /* 3760 */ // MIs[0] root
5403 /* 3760 */ // No operand predicates
5404 /* 3760 */ // MIs[0] out2
5405 /* 3760 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5406 /* 3764 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5407 /* 3768 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5408 /* 3768 */ // No operand predicates
5409 /* 3768 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5410 /* 3768 */ // No operand predicates
5411 /* 3768 */ // MIs[0] out1
5412 /* 3768 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5413 /* 3772 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5414 /* 3776 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5415 /* 3776 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5416 /* 3781 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5417 /* 3781 */ // No operand predicates
5418 /* 3781 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5419 /* 3781 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5420 /* 3786 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5421 /* 3791 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5422 /* 3793 */ // Combiner Rule #172: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5423 /* 3793 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5424 /* 3798 */ GIR_EraseRootFromParent_Done,
5425 /* 3799 */ // Label 210: @3799
5426 /* 3799 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(4000),
5427 /* 3804 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_s64,
5428 /* 3807 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_s64,
5429 /* 3810 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3891), // Rule ID 400 //
5430 /* 3815 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
5431 /* 3818 */ // MIs[0] dst
5432 /* 3818 */ // No operand predicates
5433 /* 3818 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5434 /* 3822 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5435 /* 3826 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_s32,
5436 /* 3830 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5437 /* 3834 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5438 /* 3836 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5439 /* 3839 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5440 /* 3842 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5441 /* 3845 */ // Combiner Rule #248: combine_or_s64_s32 @ [dst[0]]
5442 /* 3845 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5443 /* 3848 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5444 /* 3853 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5445 /* 3858 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5446 /* 3860 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5447 /* 3864 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5448 /* 3869 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5449 /* 3872 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
5450 /* 3876 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5451 /* 3880 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
5452 /* 3884 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5453 /* 3887 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
5454 /* 3890 */ GIR_EraseRootFromParent_Done,
5455 /* 3891 */ // Label 212: @3891
5456 /* 3891 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3999), // Rule ID 398 //
5457 /* 3896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
5458 /* 3899 */ // MIs[0] dst
5459 /* 3899 */ // No operand predicates
5460 /* 3899 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
5461 /* 3903 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_s32,
5462 /* 3906 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_s32,
5463 /* 3909 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_s32,
5464 /* 3912 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_s32,
5465 /* 3915 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_s32,
5466 /* 3918 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_s32,
5467 /* 3921 */ // Combiner Rule #246: combine_or_s64_with_s32_mask
5468 /* 3921 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5469 /* 3924 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5470 /* 3929 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5471 /* 3934 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5472 /* 3936 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
5473 /* 3940 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5474 /* 3945 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5475 /* 3950 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
5476 /* 3954 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5477 /* 3958 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5478 /* 3963 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
5479 /* 3966 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5480 /* 3969 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5481 /* 3973 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5482 /* 3978 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
5483 /* 3981 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
5484 /* 3984 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
5485 /* 3988 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
5486 /* 3992 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
5487 /* 3995 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
5488 /* 3998 */ GIR_EraseRootFromParent_Done,
5489 /* 3999 */ // Label 213: @3999
5490 /* 3999 */ GIM_Reject,
5491 /* 4000 */ // Label 211: @4000
5492 /* 4000 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(4024), // Rule ID 118 //
5493 /* 4005 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5494 /* 4008 */ // MIs[0] dst
5495 /* 4008 */ // No operand predicates
5496 /* 4008 */ // MIs[0] src
5497 /* 4008 */ // No operand predicates
5498 /* 4008 */ // MIs[0] src
5499 /* 4008 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5500 /* 4013 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5501 /* 4018 */ // Combiner Rule #88: binop_same_val @ [__binop_same_val_match_0[1]]
5502 /* 4018 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5503 /* 4023 */ GIR_EraseRootFromParent_Done,
5504 /* 4024 */ // Label 214: @4024
5505 /* 4024 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(4047), // Rule ID 109 //
5506 /* 4029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5507 /* 4032 */ // MIs[0] dst
5508 /* 4032 */ // No operand predicates
5509 /* 4032 */ // MIs[0] lhs
5510 /* 4032 */ // No operand predicates
5511 /* 4032 */ // MIs[0] Operand 2
5512 /* 4032 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5513 /* 4036 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5514 /* 4041 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[2]]
5515 /* 4041 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5516 /* 4046 */ GIR_EraseRootFromParent_Done,
5517 /* 4047 */ // Label 215: @4047
5518 /* 4047 */ GIM_Reject,
5519 /* 4048 */ // Label 10: @4048
5520 /* 4048 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(4059), // Rule ID 99 //
5521 /* 4053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5522 /* 4056 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5523 /* 4056 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5524 /* 4059 */ // Label 216: @4059
5525 /* 4059 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(4070), // Rule ID 151 //
5526 /* 4064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5527 /* 4067 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5528 /* 4067 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5529 /* 4070 */ // Label 217: @4070
5530 /* 4070 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(4081), // Rule ID 181 //
5531 /* 4075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
5532 /* 4078 */ // Combiner Rule #137: not_cmp_fold; wip_match_opcode 'G_XOR'
5533 /* 4078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5534 /* 4081 */ // Label 218: @4081
5535 /* 4081 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(4092), // Rule ID 213 //
5536 /* 4086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
5537 /* 4089 */ // Combiner Rule #161: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5538 /* 4089 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5539 /* 4092 */ // Label 219: @4092
5540 /* 4092 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4103), // Rule ID 259 //
5541 /* 4097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5542 /* 4100 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_XOR'
5543 /* 4100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5544 /* 4103 */ // Label 220: @4103
5545 /* 4103 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4114), // Rule ID 299 //
5546 /* 4108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5547 /* 4111 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_XOR'
5548 /* 4111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5549 /* 4114 */ // Label 221: @4114
5550 /* 4114 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4125), // Rule ID 334 //
5551 /* 4119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5552 /* 4122 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5553 /* 4122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5554 /* 4125 */ // Label 222: @4125
5555 /* 4125 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4185), // Rule ID 10 //
5556 /* 4130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5557 /* 4133 */ // MIs[0] root
5558 /* 4133 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5559 /* 4137 */ // MIs[0] add
5560 /* 4137 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5561 /* 4141 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5562 /* 4145 */ // MIs[1] A
5563 /* 4145 */ // No operand predicates
5564 /* 4145 */ // MIs[1] Operand 2
5565 /* 4145 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
5566 /* 4149 */ // MIs[0] Operand 2
5567 /* 4149 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5568 /* 4153 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5569 /* 4157 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5570 /* 4159 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5571 /* 4162 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5572 /* 4172 */ // Combiner Rule #10: NotAPlusNegOne
5573 /* 4172 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5574 /* 4175 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5575 /* 4177 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5576 /* 4180 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5577 /* 4184 */ GIR_EraseRootFromParent_Done,
5578 /* 4185 */ // Label 223: @4185
5579 /* 4185 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4224), // Rule ID 120 //
5580 /* 4190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
5581 /* 4193 */ // MIs[0] dst
5582 /* 4193 */ // No operand predicates
5583 /* 4193 */ // MIs[0] x
5584 /* 4193 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5585 /* 4197 */ // MIs[0] x
5586 /* 4197 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5587 /* 4202 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5588 /* 4205 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5589 /* 4215 */ // Combiner Rule #89: same_val_zero @ [__same_val_zero_match_0[1]]
5590 /* 4215 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5591 /* 4218 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5592 /* 4220 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5593 /* 4223 */ GIR_EraseRootFromParent_Done,
5594 /* 4224 */ // Label 224: @4224
5595 /* 4224 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4247), // Rule ID 110 //
5596 /* 4229 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5597 /* 4232 */ // MIs[0] dst
5598 /* 4232 */ // No operand predicates
5599 /* 4232 */ // MIs[0] lhs
5600 /* 4232 */ // No operand predicates
5601 /* 4232 */ // MIs[0] Operand 2
5602 /* 4232 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5603 /* 4236 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5604 /* 4241 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[3]]
5605 /* 4241 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5606 /* 4246 */ GIR_EraseRootFromParent_Done,
5607 /* 4247 */ // Label 225: @4247
5608 /* 4247 */ GIM_Reject,
5609 /* 4248 */ // Label 11: @4248
5610 /* 4248 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4259), // Rule ID 147 //
5611 /* 4253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5612 /* 4256 */ // Combiner Rule #107: extend_through_phis; wip_match_opcode 'G_PHI'
5613 /* 4256 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5614 /* 4259 */ // Label 226: @4259
5615 /* 4259 */ GIM_Reject,
5616 /* 4260 */ // Label 12: @4260
5617 /* 4260 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4271), // Rule ID 370 //
5618 /* 4265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5619 /* 4268 */ // Combiner Rule #221: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5620 /* 4268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5621 /* 4271 */ // Label 227: @4271
5622 /* 4271 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4282), // Rule ID 371 //
5623 /* 4276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5624 /* 4279 */ // Combiner Rule #222: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5625 /* 4279 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5626 /* 4282 */ // Label 228: @4282
5627 /* 4282 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4293), // Rule ID 373 //
5628 /* 4287 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5629 /* 4290 */ // Combiner Rule #224: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5630 /* 4290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5631 /* 4293 */ // Label 229: @4293
5632 /* 4293 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4304), // Rule ID 374 //
5633 /* 4298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5634 /* 4301 */ // Combiner Rule #225: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5635 /* 4301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5636 /* 4304 */ // Label 230: @4304
5637 /* 4304 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4315), // Rule ID 375 //
5638 /* 4309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5639 /* 4312 */ // Combiner Rule #226: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5640 /* 4312 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5641 /* 4315 */ // Label 231: @4315
5642 /* 4315 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4326), // Rule ID 376 //
5643 /* 4320 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5644 /* 4323 */ // Combiner Rule #227: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5645 /* 4323 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5646 /* 4326 */ // Label 232: @4326
5647 /* 4326 */ GIM_Reject,
5648 /* 4327 */ // Label 13: @4327
5649 /* 4327 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4341), // Rule ID 372 //
5650 /* 4332 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5651 /* 4335 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5652 /* 4338 */ // MIs[0] dst
5653 /* 4338 */ // No operand predicates
5654 /* 4338 */ // MIs[0] merge_srcs
5655 /* 4338 */ // No operand predicates
5656 /* 4338 */ // Combiner Rule #223: merge_unmerge
5657 /* 4338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5658 /* 4341 */ // Label 233: @4341
5659 /* 4341 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4403),
5660 /* 4346 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5661 /* 4349 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4370), // Rule ID 377 //
5662 /* 4354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5663 /* 4357 */ // MIs[0] root
5664 /* 4357 */ // No operand predicates
5665 /* 4357 */ // MIs[0] x
5666 /* 4357 */ // No operand predicates
5667 /* 4357 */ // MIs[0] undef
5668 /* 4357 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5669 /* 4361 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5670 /* 4365 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5671 /* 4367 */ // Combiner Rule #228: merge_of_x_and_undef
5672 /* 4367 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5673 /* 4370 */ // Label 235: @4370
5674 /* 4370 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4402), // Rule ID 378 //
5675 /* 4375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
5676 /* 4378 */ // MIs[0] root
5677 /* 4378 */ // No operand predicates
5678 /* 4378 */ // MIs[0] x
5679 /* 4378 */ // No operand predicates
5680 /* 4378 */ // MIs[0] zero
5681 /* 4378 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5682 /* 4382 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5683 /* 4386 */ // MIs[1] Operand 1
5684 /* 4386 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5685 /* 4397 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5686 /* 4399 */ // Combiner Rule #229: merge_of_x_and_zero
5687 /* 4399 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5688 /* 4402 */ // Label 236: @4402
5689 /* 4402 */ GIM_Reject,
5690 /* 4403 */ // Label 234: @4403
5691 /* 4403 */ GIM_Reject,
5692 /* 4404 */ // Label 14: @4404
5693 /* 4404 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4415), // Rule ID 72 //
5694 /* 4409 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5695 /* 4412 */ // Combiner Rule #70: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5696 /* 4412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5697 /* 4415 */ // Label 237: @4415
5698 /* 4415 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4426), // Rule ID 101 //
5699 /* 4420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
5700 /* 4423 */ // Combiner Rule #82: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5701 /* 4423 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5702 /* 4426 */ // Label 238: @4426
5703 /* 4426 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4437), // Rule ID 139 //
5704 /* 4431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5705 /* 4434 */ // Combiner Rule #99: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5706 /* 4434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5707 /* 4437 */ // Label 239: @4437
5708 /* 4437 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4468),
5709 /* 4442 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5710 /* 4445 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4456), // Rule ID 369 //
5711 /* 4450 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5712 /* 4453 */ // MIs[0] dst
5713 /* 4453 */ // No operand predicates
5714 /* 4453 */ // MIs[0] unused
5715 /* 4453 */ // No operand predicates
5716 /* 4453 */ // Combiner Rule #220: combine_use_vector_truncate
5717 /* 4453 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5718 /* 4456 */ // Label 241: @4456
5719 /* 4456 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4467), // Rule ID 379 //
5720 /* 4461 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5721 /* 4464 */ // MIs[0] dst
5722 /* 4464 */ // No operand predicates
5723 /* 4464 */ // MIs[0] unused
5724 /* 4464 */ // No operand predicates
5725 /* 4464 */ // Combiner Rule #230: combine_build_unmerge
5726 /* 4464 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5727 /* 4467 */ // Label 242: @4467
5728 /* 4467 */ GIM_Reject,
5729 /* 4468 */ // Label 240: @4468
5730 /* 4468 */ GIM_Reject,
5731 /* 4469 */ // Label 15: @4469
5732 /* 4469 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4480), // Rule ID 138 //
5733 /* 4474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5734 /* 4477 */ // Combiner Rule #99: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5735 /* 4477 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5736 /* 4480 */ // Label 243: @4480
5737 /* 4480 */ GIM_Reject,
5738 /* 4481 */ // Label 16: @4481
5739 /* 4481 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4492), // Rule ID 362 //
5740 /* 4486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5741 /* 4489 */ // Combiner Rule #213: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5742 /* 4489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5743 /* 4492 */ // Label 244: @4492
5744 /* 4492 */ GIM_Reject,
5745 /* 4493 */ // Label 17: @4493
5746 /* 4493 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4514), // Rule ID 131 //
5747 /* 4498 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5748 /* 4501 */ // MIs[0] dst
5749 /* 4501 */ // No operand predicates
5750 /* 4501 */ // MIs[0] t
5751 /* 4501 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5752 /* 4505 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5753 /* 4509 */ // MIs[1] ptr
5754 /* 4509 */ // No operand predicates
5755 /* 4509 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5756 /* 4511 */ // Combiner Rule #93: i2p_to_p2i
5757 /* 4511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5758 /* 4514 */ // Label 245: @4514
5759 /* 4514 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4535), // Rule ID 93 //
5760 /* 4519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5761 /* 4522 */ // MIs[0] dst
5762 /* 4522 */ // No operand predicates
5763 /* 4522 */ // MIs[0] __unary_undef_to_undef_match_0.x
5764 /* 4522 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5765 /* 4526 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5766 /* 4530 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5767 /* 4532 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5768 /* 4532 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5769 /* 4535 */ // Label 246: @4535
5770 /* 4535 */ GIM_Reject,
5771 /* 4536 */ // Label 18: @4536
5772 /* 4536 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4547), // Rule ID 130 //
5773 /* 4541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5774 /* 4544 */ // Combiner Rule #92: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5775 /* 4544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5776 /* 4547 */ // Label 247: @4547
5777 /* 4547 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4568), // Rule ID 94 //
5778 /* 4552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5779 /* 4555 */ // MIs[0] dst
5780 /* 4555 */ // No operand predicates
5781 /* 4555 */ // MIs[0] __unary_undef_to_undef_match_0.x
5782 /* 4555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5783 /* 4559 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5784 /* 4563 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5785 /* 4565 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5786 /* 4565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5787 /* 4568 */ // Label 248: @4568
5788 /* 4568 */ GIM_Reject,
5789 /* 4569 */ // Label 19: @4569
5790 /* 4569 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4590), // Rule ID 142 //
5791 /* 4574 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5792 /* 4577 */ // MIs[0] dst
5793 /* 4577 */ // No operand predicates
5794 /* 4577 */ // MIs[0] src1
5795 /* 4577 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5796 /* 4581 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5797 /* 4585 */ // MIs[1] src0
5798 /* 4585 */ // No operand predicates
5799 /* 4585 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5800 /* 4587 */ // Combiner Rule #102: bitcast_bitcast_fold
5801 /* 4587 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5802 /* 4590 */ // Label 249: @4590
5803 /* 4590 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4611), // Rule ID 91 //
5804 /* 4595 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5805 /* 4598 */ // MIs[0] dst
5806 /* 4598 */ // No operand predicates
5807 /* 4598 */ // MIs[0] __unary_undef_to_undef_match_0.x
5808 /* 4598 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5809 /* 4602 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5810 /* 4606 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5811 /* 4608 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
5812 /* 4608 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5813 /* 4611 */ // Label 250: @4611
5814 /* 4611 */ GIM_Reject,
5815 /* 4612 */ // Label 20: @4612
5816 /* 4612 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4641), // Rule ID 21 //
5817 /* 4617 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5818 /* 4620 */ // MIs[0] dst
5819 /* 4620 */ // No operand predicates
5820 /* 4620 */ // MIs[0] src
5821 /* 4620 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5822 /* 4624 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
5823 /* 4628 */ // MIs[1] __idempotent_prop_match_0.x
5824 /* 4628 */ // No operand predicates
5825 /* 4628 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5826 /* 4633 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5827 /* 4635 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[0]]
5828 /* 4635 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5829 /* 4640 */ GIR_EraseRootFromParent_Done,
5830 /* 4641 */ // Label 251: @4641
5831 /* 4641 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4664), // Rule ID 46 //
5832 /* 4646 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5833 /* 4649 */ // MIs[0] root
5834 /* 4649 */ // No operand predicates
5835 /* 4649 */ // MIs[0] src
5836 /* 4649 */ // No operand predicates
5837 /* 4649 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5838 /* 4653 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5839 /* 4658 */ // Combiner Rule #44: freeze_of_non_undef_non_poison
5840 /* 4658 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5841 /* 4663 */ GIR_EraseRootFromParent_Done,
5842 /* 4664 */ // Label 252: @4664
5843 /* 4664 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4675), // Rule ID 47 //
5844 /* 4669 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5845 /* 4672 */ // MIs[0] dst
5846 /* 4672 */ // No operand predicates
5847 /* 4672 */ // MIs[0] src
5848 /* 4672 */ // No operand predicates
5849 /* 4672 */ // Combiner Rule #45: push_freeze_to_prevent_poison_from_propagating
5850 /* 4672 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
5851 /* 4675 */ // Label 253: @4675
5852 /* 4675 */ GIM_Reject,
5853 /* 4676 */ // Label 21: @4676
5854 /* 4676 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4697), // Rule ID 191 //
5855 /* 4681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
5856 /* 4684 */ // MIs[0] dst
5857 /* 4684 */ // No operand predicates
5858 /* 4684 */ // MIs[0] src0
5859 /* 4684 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5860 /* 4688 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5861 /* 4692 */ // MIs[1] cst
5862 /* 4692 */ // No operand predicates
5863 /* 4692 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5864 /* 4694 */ // Combiner Rule #147: constant_fold_intrinsic_trunc
5865 /* 4694 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5866 /* 4697 */ // Label 254: @4697
5867 /* 4697 */ GIM_Reject,
5868 /* 4698 */ // Label 22: @4698
5869 /* 4698 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4719), // Rule ID 192 //
5870 /* 4703 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
5871 /* 4706 */ // MIs[0] dst
5872 /* 4706 */ // No operand predicates
5873 /* 4706 */ // MIs[0] src0
5874 /* 4706 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5875 /* 4710 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5876 /* 4714 */ // MIs[1] cst
5877 /* 4714 */ // No operand predicates
5878 /* 4714 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5879 /* 4716 */ // Combiner Rule #148: constant_fold_intrinsic_round
5880 /* 4716 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5881 /* 4719 */ // Label 255: @4719
5882 /* 4719 */ GIM_Reject,
5883 /* 4720 */ // Label 23: @4720
5884 /* 4720 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4741), // Rule ID 193 //
5885 /* 4725 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
5886 /* 4728 */ // MIs[0] dst
5887 /* 4728 */ // No operand predicates
5888 /* 4728 */ // MIs[0] src0
5889 /* 4728 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5890 /* 4732 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5891 /* 4736 */ // MIs[1] cst
5892 /* 4736 */ // No operand predicates
5893 /* 4736 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5894 /* 4738 */ // Combiner Rule #149: constant_fold_intrinsic_roundeven
5895 /* 4738 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5896 /* 4741 */ // Label 256: @4741
5897 /* 4741 */ GIM_Reject,
5898 /* 4742 */ // Label 24: @4742
5899 /* 4742 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4753), // Rule ID 73 //
5900 /* 4747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5901 /* 4750 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_LOAD'
5902 /* 4750 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5903 /* 4753 */ // Label 257: @4753
5904 /* 4753 */ GIM_Reject,
5905 /* 4754 */ // Label 25: @4754
5906 /* 4754 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4765), // Rule ID 74 //
5907 /* 4759 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5908 /* 4762 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_SEXTLOAD'
5909 /* 4762 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5910 /* 4765 */ // Label 258: @4765
5911 /* 4765 */ GIM_Reject,
5912 /* 4766 */ // Label 26: @4766
5913 /* 4766 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4777), // Rule ID 75 //
5914 /* 4771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5915 /* 4774 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
5916 /* 4774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5917 /* 4777 */ // Label 259: @4777
5918 /* 4777 */ GIM_Reject,
5919 /* 4778 */ // Label 27: @4778
5920 /* 4778 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4789), // Rule ID 103 //
5921 /* 4783 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5922 /* 4786 */ // Combiner Rule #84: erase_undef_store; wip_match_opcode 'G_STORE'
5923 /* 4786 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
5924 /* 4789 */ // Label 260: @4789
5925 /* 4789 */ GIM_Reject,
5926 /* 4790 */ // Label 28: @4790
5927 /* 4790 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4801), // Rule ID 132 //
5928 /* 4795 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5929 /* 4798 */ // Combiner Rule #94: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
5930 /* 4798 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
5931 /* 4801 */ // Label 261: @4801
5932 /* 4801 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4812), // Rule ID 276 //
5933 /* 4806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5934 /* 4809 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
5935 /* 4809 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5936 /* 4812 */ // Label 262: @4812
5937 /* 4812 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4833), // Rule ID 60 //
5938 /* 4817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
5939 /* 4820 */ // MIs[0] root
5940 /* 4820 */ // No operand predicates
5941 /* 4820 */ // MIs[0] select
5942 /* 4820 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5943 /* 4824 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5944 /* 4828 */ // MIs[1] cond
5945 /* 4828 */ // No operand predicates
5946 /* 4828 */ // MIs[1] true
5947 /* 4828 */ // No operand predicates
5948 /* 4828 */ // MIs[1] false
5949 /* 4828 */ // No operand predicates
5950 /* 4828 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5951 /* 4830 */ // Combiner Rule #58: select_of_anyext
5952 /* 4830 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5953 /* 4833 */ // Label 263: @4833
5954 /* 4833 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4854), // Rule ID 55 //
5955 /* 4838 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
5956 /* 4841 */ // MIs[0] root
5957 /* 4841 */ // No operand predicates
5958 /* 4841 */ // MIs[0] second
5959 /* 4841 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5960 /* 4845 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5961 /* 4849 */ // MIs[1] src
5962 /* 4849 */ // No operand predicates
5963 /* 4849 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5964 /* 4851 */ // Combiner Rule #53: anyext_of_anyext
5965 /* 4851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5966 /* 4854 */ // Label 264: @4854
5967 /* 4854 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4875), // Rule ID 57 //
5968 /* 4859 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
5969 /* 4862 */ // MIs[0] root
5970 /* 4862 */ // No operand predicates
5971 /* 4862 */ // MIs[0] second
5972 /* 4862 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5973 /* 4866 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5974 /* 4870 */ // MIs[1] src
5975 /* 4870 */ // No operand predicates
5976 /* 4870 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5977 /* 4872 */ // Combiner Rule #55: anyext_of_sext
5978 /* 4872 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5979 /* 4875 */ // Label 265: @4875
5980 /* 4875 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4896), // Rule ID 56 //
5981 /* 4880 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
5982 /* 4883 */ // MIs[0] root
5983 /* 4883 */ // No operand predicates
5984 /* 4883 */ // MIs[0] second
5985 /* 4883 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5986 /* 4887 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5987 /* 4891 */ // MIs[1] src
5988 /* 4891 */ // No operand predicates
5989 /* 4891 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5990 /* 4893 */ // Combiner Rule #54: anyext_of_zext
5991 /* 4893 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5992 /* 4896 */ // Label 266: @4896
5993 /* 4896 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4917), // Rule ID 92 //
5994 /* 4901 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5995 /* 4904 */ // MIs[0] dst
5996 /* 4904 */ // No operand predicates
5997 /* 4904 */ // MIs[0] __unary_undef_to_undef_match_0.x
5998 /* 4904 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5999 /* 4908 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6000 /* 4912 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6001 /* 4914 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
6002 /* 4914 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6003 /* 4917 */ // Label 267: @4917
6004 /* 4917 */ GIM_Reject,
6005 /* 4918 */ // Label 29: @4918
6006 /* 4918 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4929), // Rule ID 140 //
6007 /* 4923 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
6008 /* 4926 */ // Combiner Rule #100: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
6009 /* 4926 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
6010 /* 4929 */ // Label 268: @4929
6011 /* 4929 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4940), // Rule ID 141 //
6012 /* 4934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
6013 /* 4937 */ // Combiner Rule #101: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
6014 /* 4937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
6015 /* 4940 */ // Label 269: @4940
6016 /* 4940 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4951), // Rule ID 180 //
6017 /* 4945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
6018 /* 4948 */ // Combiner Rule #136: trunc_shift; wip_match_opcode 'G_TRUNC'
6019 /* 4948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
6020 /* 4951 */ // Label 270: @4951
6021 /* 4951 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4962), // Rule ID 395 //
6022 /* 4956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
6023 /* 4959 */ // Combiner Rule #243: clamp_i64_to_i16; wip_match_opcode 'G_TRUNC'
6024 /* 4959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
6025 /* 4962 */ // Label 271: @4962
6026 /* 4962 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4983), // Rule ID 61 //
6027 /* 4967 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
6028 /* 4970 */ // MIs[0] root
6029 /* 4970 */ // No operand predicates
6030 /* 4970 */ // MIs[0] select
6031 /* 4970 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6032 /* 4974 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6033 /* 4978 */ // MIs[1] cond
6034 /* 4978 */ // No operand predicates
6035 /* 4978 */ // MIs[1] true
6036 /* 4978 */ // No operand predicates
6037 /* 4978 */ // MIs[1] false
6038 /* 4978 */ // No operand predicates
6039 /* 4978 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6040 /* 4980 */ // Combiner Rule #59: select_of_truncate
6041 /* 4980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6042 /* 4983 */ // Label 272: @4983
6043 /* 4983 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5012), // Rule ID 63 //
6044 /* 4988 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
6045 /* 4991 */ // MIs[0] root
6046 /* 4991 */ // No operand predicates
6047 /* 4991 */ // MIs[0] binop
6048 /* 4991 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6049 /* 4995 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6050 /* 4999 */ // MIs[1] x
6051 /* 4999 */ // No operand predicates
6052 /* 4999 */ // MIs[1] const
6053 /* 4999 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6054 /* 5003 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6055 /* 5007 */ // MIs[2] imm
6056 /* 5007 */ // No operand predicates
6057 /* 5007 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6058 /* 5009 */ // Combiner Rule #61: narrow_binop_add
6059 /* 5009 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6060 /* 5012 */ // Label 273: @5012
6061 /* 5012 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5041), // Rule ID 66 //
6062 /* 5017 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
6063 /* 5020 */ // MIs[0] root
6064 /* 5020 */ // No operand predicates
6065 /* 5020 */ // MIs[0] binop
6066 /* 5020 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6067 /* 5024 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6068 /* 5028 */ // MIs[1] x
6069 /* 5028 */ // No operand predicates
6070 /* 5028 */ // MIs[1] const
6071 /* 5028 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6072 /* 5032 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6073 /* 5036 */ // MIs[2] imm
6074 /* 5036 */ // No operand predicates
6075 /* 5036 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6076 /* 5038 */ // Combiner Rule #64: narrow_binop_and
6077 /* 5038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6078 /* 5041 */ // Label 274: @5041
6079 /* 5041 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5070), // Rule ID 65 //
6080 /* 5046 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
6081 /* 5049 */ // MIs[0] root
6082 /* 5049 */ // No operand predicates
6083 /* 5049 */ // MIs[0] binop
6084 /* 5049 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6085 /* 5053 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
6086 /* 5057 */ // MIs[1] x
6087 /* 5057 */ // No operand predicates
6088 /* 5057 */ // MIs[1] const
6089 /* 5057 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6090 /* 5061 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6091 /* 5065 */ // MIs[2] imm
6092 /* 5065 */ // No operand predicates
6093 /* 5065 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6094 /* 5067 */ // Combiner Rule #63: narrow_binop_mul
6095 /* 5067 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6096 /* 5070 */ // Label 275: @5070
6097 /* 5070 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5099), // Rule ID 67 //
6098 /* 5075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
6099 /* 5078 */ // MIs[0] root
6100 /* 5078 */ // No operand predicates
6101 /* 5078 */ // MIs[0] binop
6102 /* 5078 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6103 /* 5082 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6104 /* 5086 */ // MIs[1] x
6105 /* 5086 */ // No operand predicates
6106 /* 5086 */ // MIs[1] const
6107 /* 5086 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6108 /* 5090 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6109 /* 5094 */ // MIs[2] imm
6110 /* 5094 */ // No operand predicates
6111 /* 5094 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6112 /* 5096 */ // Combiner Rule #65: narrow_binop_or
6113 /* 5096 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6114 /* 5099 */ // Label 276: @5099
6115 /* 5099 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5128), // Rule ID 64 //
6116 /* 5104 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
6117 /* 5107 */ // MIs[0] root
6118 /* 5107 */ // No operand predicates
6119 /* 5107 */ // MIs[0] binop
6120 /* 5107 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6121 /* 5111 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
6122 /* 5115 */ // MIs[1] x
6123 /* 5115 */ // No operand predicates
6124 /* 5115 */ // MIs[1] const
6125 /* 5115 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6126 /* 5119 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6127 /* 5123 */ // MIs[2] imm
6128 /* 5123 */ // No operand predicates
6129 /* 5123 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6130 /* 5125 */ // Combiner Rule #62: narrow_binop_sub
6131 /* 5125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6132 /* 5128 */ // Label 277: @5128
6133 /* 5128 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5160), // Rule ID 386 //
6134 /* 5133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6135 /* 5136 */ // MIs[0] dst
6136 /* 5136 */ // No operand predicates
6137 /* 5136 */ // MIs[0] min
6138 /* 5136 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6139 /* 5140 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
6140 /* 5144 */ // MIs[1] x
6141 /* 5144 */ // No operand predicates
6142 /* 5144 */ // MIs[1] y
6143 /* 5144 */ // No operand predicates
6144 /* 5144 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
6145 /* 5148 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6146 /* 5150 */ // Combiner Rule #235: trunc_usatu
6147 /* 5150 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
6148 /* 5153 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6149 /* 5155 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6150 /* 5159 */ GIR_EraseRootFromParent_Done,
6151 /* 5160 */ // Label 278: @5160
6152 /* 5160 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5189), // Rule ID 68 //
6153 /* 5165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
6154 /* 5168 */ // MIs[0] root
6155 /* 5168 */ // No operand predicates
6156 /* 5168 */ // MIs[0] binop
6157 /* 5168 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6158 /* 5172 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6159 /* 5176 */ // MIs[1] x
6160 /* 5176 */ // No operand predicates
6161 /* 5176 */ // MIs[1] const
6162 /* 5176 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6163 /* 5180 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6164 /* 5184 */ // MIs[2] imm
6165 /* 5184 */ // No operand predicates
6166 /* 5184 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6167 /* 5186 */ // Combiner Rule #66: narrow_binop_xor
6168 /* 5186 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
6169 /* 5189 */ // Label 279: @5189
6170 /* 5189 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5210), // Rule ID 50 //
6171 /* 5194 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
6172 /* 5197 */ // MIs[0] root
6173 /* 5197 */ // No operand predicates
6174 /* 5197 */ // MIs[0] ext
6175 /* 5197 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6176 /* 5201 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6177 /* 5205 */ // MIs[1] src
6178 /* 5205 */ // No operand predicates
6179 /* 5205 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6180 /* 5207 */ // Combiner Rule #48: truncate_of_anyext
6181 /* 5207 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6182 /* 5210 */ // Label 280: @5210
6183 /* 5210 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5234), // Rule ID 62 //
6184 /* 5215 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
6185 /* 5218 */ // MIs[0] root
6186 /* 5218 */ // No operand predicates
6187 /* 5218 */ // MIs[0] bv
6188 /* 5218 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6189 /* 5222 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
6190 /* 5226 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
6191 /* 5229 */ // MIs[1] unused
6192 /* 5229 */ // No operand predicates
6193 /* 5229 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6194 /* 5231 */ // Combiner Rule #60: buildvector_of_truncate
6195 /* 5231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
6196 /* 5234 */ // Label 281: @5234
6197 /* 5234 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5255), // Rule ID 49 //
6198 /* 5239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
6199 /* 5242 */ // MIs[0] root
6200 /* 5242 */ // No operand predicates
6201 /* 5242 */ // MIs[0] ext
6202 /* 5242 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6203 /* 5246 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6204 /* 5250 */ // MIs[1] src
6205 /* 5250 */ // No operand predicates
6206 /* 5250 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6207 /* 5252 */ // Combiner Rule #47: truncate_of_sext
6208 /* 5252 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6209 /* 5255 */ // Label 282: @5255
6210 /* 5255 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5276), // Rule ID 48 //
6211 /* 5260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
6212 /* 5263 */ // MIs[0] root
6213 /* 5263 */ // No operand predicates
6214 /* 5263 */ // MIs[0] ext
6215 /* 5263 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6216 /* 5267 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6217 /* 5271 */ // MIs[1] src
6218 /* 5271 */ // No operand predicates
6219 /* 5271 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6220 /* 5273 */ // Combiner Rule #46: truncate_of_zext
6221 /* 5273 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
6222 /* 5276 */ // Label 283: @5276
6223 /* 5276 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5297), // Rule ID 90 //
6224 /* 5281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
6225 /* 5284 */ // MIs[0] dst
6226 /* 5284 */ // No operand predicates
6227 /* 5284 */ // MIs[0] __unary_undef_to_undef_match_0.x
6228 /* 5284 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6229 /* 5288 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6230 /* 5292 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6231 /* 5294 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
6232 /* 5294 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
6233 /* 5297 */ // Label 284: @5297
6234 /* 5297 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5318), // Rule ID 69 //
6235 /* 5302 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6236 /* 5305 */ // MIs[0] root
6237 /* 5305 */ // No operand predicates
6238 /* 5305 */ // MIs[0] int
6239 /* 5305 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6240 /* 5309 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6241 /* 5313 */ // MIs[1] imm
6242 /* 5313 */ // No operand predicates
6243 /* 5313 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6244 /* 5315 */ // Combiner Rule #67: integer_of_truncate
6245 /* 5315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6246 /* 5318 */ // Label 285: @5318
6247 /* 5318 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5329), // Rule ID 384 //
6248 /* 5323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6249 /* 5326 */ // MIs[0] dst
6250 /* 5326 */ // No operand predicates
6251 /* 5326 */ // MIs[0] src
6252 /* 5326 */ // No operand predicates
6253 /* 5326 */ // Combiner Rule #233: trunc_ssats
6254 /* 5326 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6255 /* 5329 */ // Label 286: @5329
6256 /* 5329 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5340), // Rule ID 385 //
6257 /* 5334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6258 /* 5337 */ // MIs[0] dst
6259 /* 5337 */ // No operand predicates
6260 /* 5337 */ // MIs[0] src
6261 /* 5337 */ // No operand predicates
6262 /* 5337 */ // Combiner Rule #234: trunc_ssatu
6263 /* 5337 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
6264 /* 5340 */ // Label 287: @5340
6265 /* 5340 */ GIM_Reject,
6266 /* 5341 */ // Label 30: @5341
6267 /* 5341 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5373), // Rule ID 387 //
6268 /* 5346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6269 /* 5349 */ // MIs[0] dst
6270 /* 5349 */ // No operand predicates
6271 /* 5349 */ // MIs[0] src
6272 /* 5349 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6273 /* 5353 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6274 /* 5357 */ // MIs[1] x
6275 /* 5357 */ // No operand predicates
6276 /* 5357 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6277 /* 5361 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6278 /* 5363 */ // Combiner Rule #236: truncusatu_to_fptouisat
6279 /* 5363 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6280 /* 5366 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6281 /* 5368 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6282 /* 5372 */ GIR_EraseRootFromParent_Done,
6283 /* 5373 */ // Label 288: @5373
6284 /* 5373 */ GIM_Reject,
6285 /* 5374 */ // Label 31: @5374
6286 /* 5374 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5385), // Rule ID 275 //
6287 /* 5379 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6288 /* 5382 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6289 /* 5382 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6290 /* 5385 */ // Label 289: @5385
6291 /* 5385 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5406), // Rule ID 54 //
6292 /* 5390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
6293 /* 5393 */ // MIs[0] root
6294 /* 5393 */ // No operand predicates
6295 /* 5393 */ // MIs[0] second
6296 /* 5393 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6297 /* 5397 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6298 /* 5401 */ // MIs[1] src
6299 /* 5401 */ // No operand predicates
6300 /* 5401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6301 /* 5403 */ // Combiner Rule #52: sext_of_anyext
6302 /* 5403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6303 /* 5406 */ // Label 290: @5406
6304 /* 5406 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5427), // Rule ID 53 //
6305 /* 5411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6306 /* 5414 */ // MIs[0] root
6307 /* 5414 */ // No operand predicates
6308 /* 5414 */ // MIs[0] second
6309 /* 5414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6310 /* 5418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6311 /* 5422 */ // MIs[1] src
6312 /* 5422 */ // No operand predicates
6313 /* 5422 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6314 /* 5424 */ // Combiner Rule #51: sext_of_sext
6315 /* 5424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6316 /* 5427 */ // Label 291: @5427
6317 /* 5427 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5448), // Rule ID 363 //
6318 /* 5432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
6319 /* 5435 */ // MIs[0] root
6320 /* 5435 */ // No operand predicates
6321 /* 5435 */ // MIs[0] src
6322 /* 5435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6323 /* 5439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6324 /* 5443 */ // MIs[1] x
6325 /* 5443 */ // No operand predicates
6326 /* 5443 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6327 /* 5445 */ // Combiner Rule #214: sext_trunc
6328 /* 5445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6329 /* 5448 */ // Label 292: @5448
6330 /* 5448 */ GIM_Reject,
6331 /* 5449 */ // Label 32: @5449
6332 /* 5449 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5460), // Rule ID 167 //
6333 /* 5454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6334 /* 5457 */ // Combiner Rule #123: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6335 /* 5457 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6336 /* 5460 */ // Label 293: @5460
6337 /* 5460 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5471), // Rule ID 175 //
6338 /* 5465 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
6339 /* 5468 */ // Combiner Rule #131: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6340 /* 5468 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6341 /* 5471 */ // Label 294: @5471
6342 /* 5471 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5482), // Rule ID 244 //
6343 /* 5476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6344 /* 5479 */ // Combiner Rule #177: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6345 /* 5479 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6346 /* 5482 */ // Label 295: @5482
6347 /* 5482 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5503), // Rule ID 58 //
6348 /* 5487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6349 /* 5490 */ // MIs[0] dst
6350 /* 5490 */ // No operand predicates
6351 /* 5490 */ // MIs[0] x
6352 /* 5490 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6353 /* 5494 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6354 /* 5498 */ // MIs[1] src
6355 /* 5498 */ // No operand predicates
6356 /* 5498 */ // MIs[1] a
6357 /* 5498 */ // No operand predicates
6358 /* 5498 */ // MIs[0] b
6359 /* 5498 */ // No operand predicates
6360 /* 5498 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6361 /* 5500 */ // Combiner Rule #56: sext_inreg_of_sext_inreg
6362 /* 5500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6363 /* 5503 */ // Label 296: @5503
6364 /* 5503 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5514), // Rule ID 179 //
6365 /* 5508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
6366 /* 5511 */ // MIs[0] dst
6367 /* 5511 */ // No operand predicates
6368 /* 5511 */ // MIs[0] src
6369 /* 5511 */ // No operand predicates
6370 /* 5511 */ // MIs[0] imm
6371 /* 5511 */ // No operand predicates
6372 /* 5511 */ // Combiner Rule #135: sext_inreg_to_zext_inreg
6373 /* 5511 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6374 /* 5514 */ // Label 297: @5514
6375 /* 5514 */ GIM_Reject,
6376 /* 5515 */ // Label 33: @5515
6377 /* 5515 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5526), // Rule ID 178 //
6378 /* 5520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
6379 /* 5523 */ // Combiner Rule #134: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6380 /* 5523 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6381 /* 5526 */ // Label 298: @5526
6382 /* 5526 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5537), // Rule ID 274 //
6383 /* 5531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6384 /* 5534 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6385 /* 5534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6386 /* 5537 */ // Label 299: @5537
6387 /* 5537 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5558), // Rule ID 59 //
6388 /* 5542 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6389 /* 5545 */ // MIs[0] root
6390 /* 5545 */ // No operand predicates
6391 /* 5545 */ // MIs[0] select
6392 /* 5545 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6393 /* 5549 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6394 /* 5553 */ // MIs[1] cond
6395 /* 5553 */ // No operand predicates
6396 /* 5553 */ // MIs[1] true
6397 /* 5553 */ // No operand predicates
6398 /* 5553 */ // MIs[1] false
6399 /* 5553 */ // No operand predicates
6400 /* 5553 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6401 /* 5555 */ // Combiner Rule #57: select_of_zext
6402 /* 5555 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6403 /* 5558 */ // Label 300: @5558
6404 /* 5558 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5579), // Rule ID 52 //
6405 /* 5563 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6406 /* 5566 */ // MIs[0] root
6407 /* 5566 */ // No operand predicates
6408 /* 5566 */ // MIs[0] second
6409 /* 5566 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6410 /* 5570 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6411 /* 5574 */ // MIs[1] src
6412 /* 5574 */ // No operand predicates
6413 /* 5574 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6414 /* 5576 */ // Combiner Rule #50: zext_of_anyext
6415 /* 5576 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6416 /* 5579 */ // Label 301: @5579
6417 /* 5579 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5606), // Rule ID 364 //
6418 /* 5584 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6419 /* 5587 */ // MIs[0] root
6420 /* 5587 */ // No operand predicates
6421 /* 5587 */ // MIs[0] src
6422 /* 5587 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6423 /* 5591 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6424 /* 5595 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6425 /* 5601 */ // MIs[1] x
6426 /* 5601 */ // No operand predicates
6427 /* 5601 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6428 /* 5603 */ // Combiner Rule #215: zext_trunc
6429 /* 5603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6430 /* 5606 */ // Label 302: @5606
6431 /* 5606 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5627), // Rule ID 51 //
6432 /* 5611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6433 /* 5614 */ // MIs[0] root
6434 /* 5614 */ // No operand predicates
6435 /* 5614 */ // MIs[0] second
6436 /* 5614 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6437 /* 5618 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6438 /* 5622 */ // MIs[1] src
6439 /* 5622 */ // No operand predicates
6440 /* 5622 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6441 /* 5624 */ // Combiner Rule #49: zext_of_zext
6442 /* 5624 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6443 /* 5627 */ // Label 303: @5627
6444 /* 5627 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5644), // Rule ID 365 //
6445 /* 5632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
6446 /* 5635 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6447 /* 5641 */ // MIs[0] root
6448 /* 5641 */ // No operand predicates
6449 /* 5641 */ // MIs[0] x
6450 /* 5641 */ // No operand predicates
6451 /* 5641 */ // Combiner Rule #216: nneg_zext
6452 /* 5641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6453 /* 5644 */ // Label 304: @5644
6454 /* 5644 */ GIM_Reject,
6455 /* 5645 */ // Label 34: @5645
6456 /* 5645 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5656), // Rule ID 83 //
6457 /* 5650 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6458 /* 5653 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6459 /* 5653 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6460 /* 5656 */ // Label 305: @5656
6461 /* 5656 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5667), // Rule ID 86 //
6462 /* 5661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6463 /* 5664 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6464 /* 5664 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6465 /* 5667 */ // Label 306: @5667
6466 /* 5667 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5678), // Rule ID 215 //
6467 /* 5672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6468 /* 5675 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_SHL'
6469 /* 5675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6470 /* 5678 */ // Label 307: @5678
6471 /* 5678 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5689), // Rule ID 220 //
6472 /* 5683 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6473 /* 5686 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6474 /* 5686 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6475 /* 5689 */ // Label 308: @5689
6476 /* 5689 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5700), // Rule ID 243 //
6477 /* 5694 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
6478 /* 5697 */ // Combiner Rule #176: commute_shift; wip_match_opcode 'G_SHL'
6479 /* 5697 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6480 /* 5700 */ // Label 309: @5700
6481 /* 5700 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5711), // Rule ID 257 //
6482 /* 5705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6483 /* 5708 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SHL'
6484 /* 5708 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6485 /* 5711 */ // Label 310: @5711
6486 /* 5711 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5722), // Rule ID 306 //
6487 /* 5716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6488 /* 5719 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SHL'
6489 /* 5719 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6490 /* 5722 */ // Label 311: @5722
6491 /* 5722 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5757), // Rule ID 44 //
6492 /* 5727 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
6493 /* 5730 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6494 /* 5736 */ // MIs[0] root
6495 /* 5736 */ // No operand predicates
6496 /* 5736 */ // MIs[0] left
6497 /* 5736 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6498 /* 5740 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6499 /* 5744 */ // MIs[1] imm
6500 /* 5744 */ // No operand predicates
6501 /* 5744 */ // MIs[0] x
6502 /* 5744 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6503 /* 5748 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6504 /* 5752 */ // MIs[2] imm1
6505 /* 5752 */ // No operand predicates
6506 /* 5752 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6507 /* 5754 */ // Combiner Rule #42: shl_of_vscale
6508 /* 5754 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6509 /* 5757 */ // Label 312: @5757
6510 /* 5757 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5797), // Rule ID 121 //
6511 /* 5762 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6512 /* 5765 */ // MIs[0] dst
6513 /* 5765 */ // No operand predicates
6514 /* 5765 */ // MIs[0] zero
6515 /* 5765 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6516 /* 5769 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6517 /* 5773 */ // MIs[1] Operand 1
6518 /* 5773 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6519 /* 5784 */ // MIs[0] rhs
6520 /* 5784 */ // No operand predicates
6521 /* 5784 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6522 /* 5789 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6523 /* 5791 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6524 /* 5791 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6525 /* 5796 */ GIR_EraseRootFromParent_Done,
6526 /* 5797 */ // Label 313: @5797
6527 /* 5797 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5820), // Rule ID 111 //
6528 /* 5802 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6529 /* 5805 */ // MIs[0] dst
6530 /* 5805 */ // No operand predicates
6531 /* 5805 */ // MIs[0] lhs
6532 /* 5805 */ // No operand predicates
6533 /* 5805 */ // MIs[0] Operand 2
6534 /* 5805 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6535 /* 5809 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6536 /* 5814 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[4]]
6537 /* 5814 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6538 /* 5819 */ GIR_EraseRootFromParent_Done,
6539 /* 5820 */ // Label 314: @5820
6540 /* 5820 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5831), // Rule ID 152 //
6541 /* 5825 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6542 /* 5828 */ // MIs[0] root
6543 /* 5828 */ // No operand predicates
6544 /* 5828 */ // MIs[0] mi.shifted
6545 /* 5828 */ // No operand predicates
6546 /* 5828 */ // MIs[0] mi.amt
6547 /* 5828 */ // No operand predicates
6548 /* 5828 */ // Combiner Rule #110: shifts_too_big @ [mi[0]]
6549 /* 5828 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6550 /* 5831 */ // Label 315: @5831
6551 /* 5831 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5842), // Rule ID 168 //
6552 /* 5836 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6553 /* 5839 */ // MIs[0] dst
6554 /* 5839 */ // No operand predicates
6555 /* 5839 */ // MIs[0] src0
6556 /* 5839 */ // No operand predicates
6557 /* 5839 */ // MIs[0] src1
6558 /* 5839 */ // No operand predicates
6559 /* 5839 */ // Combiner Rule #124: reduce_shl_of_extend
6560 /* 5839 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6561 /* 5842 */ // Label 316: @5842
6562 /* 5842 */ GIM_Reject,
6563 /* 5843 */ // Label 35: @5843
6564 /* 5843 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5854), // Rule ID 88 //
6565 /* 5848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6566 /* 5851 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6567 /* 5851 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6568 /* 5854 */ // Label 317: @5854
6569 /* 5854 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5865), // Rule ID 217 //
6570 /* 5859 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6571 /* 5862 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_LSHR'
6572 /* 5862 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6573 /* 5865 */ // Label 318: @5865
6574 /* 5865 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5876), // Rule ID 222 //
6575 /* 5870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6576 /* 5873 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6577 /* 5873 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6578 /* 5876 */ // Label 319: @5876
6579 /* 5876 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5887), // Rule ID 247 //
6580 /* 5881 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6581 /* 5884 */ // Combiner Rule #179: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6582 /* 5884 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6583 /* 5887 */ // Label 320: @5887
6584 /* 5887 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5898), // Rule ID 249 //
6585 /* 5892 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6586 /* 5895 */ // Combiner Rule #180: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6587 /* 5895 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6588 /* 5898 */ // Label 321: @5898
6589 /* 5898 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5909), // Rule ID 254 //
6590 /* 5903 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6591 /* 5906 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_LSHR'
6592 /* 5906 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6593 /* 5909 */ // Label 322: @5909
6594 /* 5909 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5920), // Rule ID 304 //
6595 /* 5914 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6596 /* 5917 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6597 /* 5917 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6598 /* 5920 */ // Label 323: @5920
6599 /* 5920 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5949), // Rule ID 388 //
6600 /* 5925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6601 /* 5928 */ // MIs[0] dst
6602 /* 5928 */ // No operand predicates
6603 /* 5928 */ // MIs[0] d2
6604 /* 5928 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6605 /* 5932 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6606 /* 5936 */ // MIs[1] d1
6607 /* 5936 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6608 /* 5940 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6609 /* 5944 */ // MIs[2] x
6610 /* 5944 */ // No operand predicates
6611 /* 5944 */ // MIs[2] y
6612 /* 5944 */ // No operand predicates
6613 /* 5944 */ // MIs[0] z
6614 /* 5944 */ // No operand predicates
6615 /* 5944 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6616 /* 5946 */ // Combiner Rule #237: lshr_of_trunc_of_lshr
6617 /* 5946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6618 /* 5949 */ // Label 324: @5949
6619 /* 5949 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5989), // Rule ID 122 //
6620 /* 5954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6621 /* 5957 */ // MIs[0] dst
6622 /* 5957 */ // No operand predicates
6623 /* 5957 */ // MIs[0] zero
6624 /* 5957 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6625 /* 5961 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6626 /* 5965 */ // MIs[1] Operand 1
6627 /* 5965 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6628 /* 5976 */ // MIs[0] rhs
6629 /* 5976 */ // No operand predicates
6630 /* 5976 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6631 /* 5981 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6632 /* 5983 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6633 /* 5983 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6634 /* 5988 */ GIR_EraseRootFromParent_Done,
6635 /* 5989 */ // Label 325: @5989
6636 /* 5989 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6012), // Rule ID 113 //
6637 /* 5994 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6638 /* 5997 */ // MIs[0] dst
6639 /* 5997 */ // No operand predicates
6640 /* 5997 */ // MIs[0] lhs
6641 /* 5997 */ // No operand predicates
6642 /* 5997 */ // MIs[0] Operand 2
6643 /* 5997 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6644 /* 6001 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6645 /* 6006 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[6]]
6646 /* 6006 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6647 /* 6011 */ GIR_EraseRootFromParent_Done,
6648 /* 6012 */ // Label 326: @6012
6649 /* 6012 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6023), // Rule ID 154 //
6650 /* 6017 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6651 /* 6020 */ // MIs[0] root
6652 /* 6020 */ // No operand predicates
6653 /* 6020 */ // MIs[0] mi.shifted
6654 /* 6020 */ // No operand predicates
6655 /* 6020 */ // MIs[0] mi.amt
6656 /* 6020 */ // No operand predicates
6657 /* 6020 */ // Combiner Rule #110: shifts_too_big @ [mi[2]]
6658 /* 6020 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6659 /* 6023 */ // Label 327: @6023
6660 /* 6023 */ GIM_Reject,
6661 /* 6024 */ // Label 36: @6024
6662 /* 6024 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6035), // Rule ID 87 //
6663 /* 6029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6664 /* 6032 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6665 /* 6032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6666 /* 6035 */ // Label 328: @6035
6667 /* 6035 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6046), // Rule ID 165 //
6668 /* 6040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
6669 /* 6043 */ // Combiner Rule #121: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6670 /* 6043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6671 /* 6046 */ // Label 329: @6046
6672 /* 6046 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6057), // Rule ID 216 //
6673 /* 6051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6674 /* 6054 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_ASHR'
6675 /* 6054 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6676 /* 6057 */ // Label 330: @6057
6677 /* 6057 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6068), // Rule ID 221 //
6678 /* 6062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6679 /* 6065 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6680 /* 6065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6681 /* 6068 */ // Label 331: @6068
6682 /* 6068 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6079), // Rule ID 246 //
6683 /* 6073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6684 /* 6076 */ // Combiner Rule #179: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6685 /* 6076 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6686 /* 6079 */ // Label 332: @6079
6687 /* 6079 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6090), // Rule ID 248 //
6688 /* 6084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6689 /* 6087 */ // Combiner Rule #180: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6690 /* 6087 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6691 /* 6090 */ // Label 333: @6090
6692 /* 6090 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6101), // Rule ID 253 //
6693 /* 6095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6694 /* 6098 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_ASHR'
6695 /* 6098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6696 /* 6101 */ // Label 334: @6101
6697 /* 6101 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6112), // Rule ID 305 //
6698 /* 6106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6699 /* 6109 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6700 /* 6109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6701 /* 6112 */ // Label 335: @6112
6702 /* 6112 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6152), // Rule ID 123 //
6703 /* 6117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6704 /* 6120 */ // MIs[0] dst
6705 /* 6120 */ // No operand predicates
6706 /* 6120 */ // MIs[0] zero
6707 /* 6120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6708 /* 6124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6709 /* 6128 */ // MIs[1] Operand 1
6710 /* 6128 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6711 /* 6139 */ // MIs[0] rhs
6712 /* 6139 */ // No operand predicates
6713 /* 6139 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6714 /* 6144 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6715 /* 6146 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6716 /* 6146 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6717 /* 6151 */ GIR_EraseRootFromParent_Done,
6718 /* 6152 */ // Label 336: @6152
6719 /* 6152 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6175), // Rule ID 112 //
6720 /* 6157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6721 /* 6160 */ // MIs[0] dst
6722 /* 6160 */ // No operand predicates
6723 /* 6160 */ // MIs[0] lhs
6724 /* 6160 */ // No operand predicates
6725 /* 6160 */ // MIs[0] Operand 2
6726 /* 6160 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6727 /* 6164 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6728 /* 6169 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[5]]
6729 /* 6169 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6730 /* 6174 */ GIR_EraseRootFromParent_Done,
6731 /* 6175 */ // Label 337: @6175
6732 /* 6175 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6186), // Rule ID 153 //
6733 /* 6180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6734 /* 6183 */ // MIs[0] root
6735 /* 6183 */ // No operand predicates
6736 /* 6183 */ // MIs[0] mi.shifted
6737 /* 6183 */ // No operand predicates
6738 /* 6183 */ // MIs[0] mi.amt
6739 /* 6183 */ // No operand predicates
6740 /* 6183 */ // Combiner Rule #110: shifts_too_big @ [mi[1]]
6741 /* 6183 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6742 /* 6186 */ // Label 338: @6186
6743 /* 6186 */ GIM_Reject,
6744 /* 6187 */ // Label 37: @6187
6745 /* 6187 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6198), // Rule ID 231 //
6746 /* 6192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6747 /* 6195 */ // Combiner Rule #168: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6748 /* 6195 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6749 /* 6198 */ // Label 339: @6198
6750 /* 6198 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6209), // Rule ID 235 //
6751 /* 6203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6752 /* 6206 */ // Combiner Rule #171: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6753 /* 6206 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6754 /* 6209 */ // Label 340: @6209
6755 /* 6209 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6229), // Rule ID 234 //
6756 /* 6214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
6757 /* 6217 */ // MIs[0] x
6758 /* 6217 */ // No operand predicates
6759 /* 6217 */ // MIs[0] y
6760 /* 6217 */ // No operand predicates
6761 /* 6217 */ // MIs[0] z
6762 /* 6217 */ // No operand predicates
6763 /* 6217 */ // MIs[0] Operand 3
6764 /* 6217 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6765 /* 6221 */ // Combiner Rule #170: funnel_shift_left_zero
6766 /* 6221 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6767 /* 6224 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6768 /* 6226 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6769 /* 6228 */ GIR_EraseRootFromParent_Done,
6770 /* 6229 */ // Label 341: @6229
6771 /* 6229 */ GIM_Reject,
6772 /* 6230 */ // Label 38: @6230
6773 /* 6230 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(6241), // Rule ID 232 //
6774 /* 6235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6775 /* 6238 */ // Combiner Rule #168: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6776 /* 6238 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6777 /* 6241 */ // Label 342: @6241
6778 /* 6241 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(6252), // Rule ID 236 //
6779 /* 6246 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6780 /* 6249 */ // Combiner Rule #171: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6781 /* 6249 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6782 /* 6252 */ // Label 343: @6252
6783 /* 6252 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(6272), // Rule ID 233 //
6784 /* 6257 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6785 /* 6260 */ // MIs[0] x
6786 /* 6260 */ // No operand predicates
6787 /* 6260 */ // MIs[0] y
6788 /* 6260 */ // No operand predicates
6789 /* 6260 */ // MIs[0] z
6790 /* 6260 */ // No operand predicates
6791 /* 6260 */ // MIs[0] Operand 3
6792 /* 6260 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6793 /* 6264 */ // Combiner Rule #169: funnel_shift_right_zero
6794 /* 6264 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6795 /* 6267 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6796 /* 6269 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6797 /* 6271 */ GIR_EraseRootFromParent_Done,
6798 /* 6272 */ // Label 344: @6272
6799 /* 6272 */ GIM_Reject,
6800 /* 6273 */ // Label 39: @6273
6801 /* 6273 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(6296), // Rule ID 116 //
6802 /* 6278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6803 /* 6281 */ // MIs[0] dst
6804 /* 6281 */ // No operand predicates
6805 /* 6281 */ // MIs[0] lhs
6806 /* 6281 */ // No operand predicates
6807 /* 6281 */ // MIs[0] Operand 2
6808 /* 6281 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6809 /* 6285 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6810 /* 6290 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[9]]
6811 /* 6290 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6812 /* 6295 */ GIR_EraseRootFromParent_Done,
6813 /* 6296 */ // Label 345: @6296
6814 /* 6296 */ GIM_Reject,
6815 /* 6297 */ // Label 40: @6297
6816 /* 6297 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(6320), // Rule ID 115 //
6817 /* 6302 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6818 /* 6305 */ // MIs[0] dst
6819 /* 6305 */ // No operand predicates
6820 /* 6305 */ // MIs[0] lhs
6821 /* 6305 */ // No operand predicates
6822 /* 6305 */ // MIs[0] Operand 2
6823 /* 6305 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6824 /* 6309 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6825 /* 6314 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[8]]
6826 /* 6314 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6827 /* 6319 */ GIR_EraseRootFromParent_Done,
6828 /* 6320 */ // Label 346: @6320
6829 /* 6320 */ GIM_Reject,
6830 /* 6321 */ // Label 41: @6321
6831 /* 6321 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(6332), // Rule ID 160 //
6832 /* 6326 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
6833 /* 6329 */ // Combiner Rule #116: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
6834 /* 6329 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
6835 /* 6332 */ // Label 347: @6332
6836 /* 6332 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(6343), // Rule ID 161 //
6837 /* 6337 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
6838 /* 6340 */ // Combiner Rule #117: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
6839 /* 6340 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
6840 /* 6343 */ // Label 348: @6343
6841 /* 6343 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6354), // Rule ID 164 //
6842 /* 6348 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
6843 /* 6351 */ // Combiner Rule #120: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
6844 /* 6351 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
6845 /* 6354 */ // Label 349: @6354
6846 /* 6354 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6365), // Rule ID 158 //
6847 /* 6359 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
6848 /* 6362 */ // MIs[0] root
6849 /* 6362 */ // No operand predicates
6850 /* 6362 */ // MIs[0] pred
6851 /* 6362 */ // No operand predicates
6852 /* 6362 */ // MIs[0] lhs
6853 /* 6362 */ // No operand predicates
6854 /* 6362 */ // MIs[0] rhs
6855 /* 6362 */ // No operand predicates
6856 /* 6362 */ // Combiner Rule #114: canonicalize_icmp
6857 /* 6362 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6858 /* 6365 */ // Label 350: @6365
6859 /* 6365 */ GIM_Reject,
6860 /* 6366 */ // Label 42: @6366
6861 /* 6366 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6377), // Rule ID 159 //
6862 /* 6371 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
6863 /* 6374 */ // MIs[0] root
6864 /* 6374 */ // No operand predicates
6865 /* 6374 */ // MIs[0] pred
6866 /* 6374 */ // No operand predicates
6867 /* 6374 */ // MIs[0] lhs
6868 /* 6374 */ // No operand predicates
6869 /* 6374 */ // MIs[0] rhs
6870 /* 6374 */ // No operand predicates
6871 /* 6374 */ // Combiner Rule #115: canonicalize_fcmp
6872 /* 6374 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
6873 /* 6377 */ // Label 351: @6377
6874 /* 6377 */ GIM_Reject,
6875 /* 6378 */ // Label 43: @6378
6876 /* 6378 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6389), // Rule ID 106 //
6877 /* 6383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6878 /* 6386 */ // Combiner Rule #86: select_same_val; wip_match_opcode 'G_SELECT'
6879 /* 6386 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
6880 /* 6389 */ // Label 352: @6389
6881 /* 6389 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6400), // Rule ID 171 //
6882 /* 6394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6883 /* 6397 */ // Combiner Rule #127: select_constant_cmp; wip_match_opcode 'G_SELECT'
6884 /* 6397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
6885 /* 6400 */ // Label 353: @6400
6886 /* 6400 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6411), // Rule ID 173 //
6887 /* 6405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6888 /* 6408 */ // Combiner Rule #129: match_selects; wip_match_opcode 'G_SELECT'
6889 /* 6408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
6890 /* 6411 */ // Label 354: @6411
6891 /* 6411 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6422), // Rule ID 328 //
6892 /* 6416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6893 /* 6419 */ // Combiner Rule #206: select_to_minmax; wip_match_opcode 'G_SELECT'
6894 /* 6419 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
6895 /* 6422 */ // Label 355: @6422
6896 /* 6422 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6443), // Rule ID 172 //
6897 /* 6427 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
6898 /* 6430 */ // MIs[0] root
6899 /* 6430 */ // No operand predicates
6900 /* 6430 */ // MIs[0] tst
6901 /* 6430 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6902 /* 6434 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6903 /* 6438 */ // MIs[1] tst1
6904 /* 6438 */ // No operand predicates
6905 /* 6438 */ // MIs[1] a
6906 /* 6438 */ // No operand predicates
6907 /* 6438 */ // MIs[1] b
6908 /* 6438 */ // No operand predicates
6909 /* 6438 */ // MIs[0] x
6910 /* 6438 */ // No operand predicates
6911 /* 6438 */ // MIs[0] y
6912 /* 6438 */ // No operand predicates
6913 /* 6438 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6914 /* 6440 */ // Combiner Rule #128: select_to_iminmax
6915 /* 6440 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
6916 /* 6443 */ // Label 356: @6443
6917 /* 6443 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6472), // Rule ID 170 //
6918 /* 6448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6919 /* 6451 */ // MIs[0] dst
6920 /* 6451 */ // No operand predicates
6921 /* 6451 */ // MIs[0] undef
6922 /* 6451 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6923 /* 6455 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6924 /* 6459 */ // MIs[0] x
6925 /* 6459 */ // No operand predicates
6926 /* 6459 */ // MIs[0] y
6927 /* 6459 */ // No operand predicates
6928 /* 6459 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6929 /* 6464 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6930 /* 6466 */ // Combiner Rule #126: select_undef_cmp
6931 /* 6466 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6932 /* 6471 */ GIR_EraseRootFromParent_Done,
6933 /* 6472 */ // Label 357: @6472
6934 /* 6472 */ GIM_Reject,
6935 /* 6473 */ // Label 44: @6473
6936 /* 6473 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6484), // Rule ID 339 //
6937 /* 6478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6938 /* 6481 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
6939 /* 6481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6940 /* 6484 */ // Label 358: @6484
6941 /* 6484 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6495), // Rule ID 381 //
6942 /* 6489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6943 /* 6492 */ // Combiner Rule #231: match_addos; wip_match_opcode 'G_UADDO'
6944 /* 6492 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6945 /* 6495 */ // Label 359: @6495
6946 /* 6495 */ GIM_Reject,
6947 /* 6496 */ // Label 45: @6496
6948 /* 6496 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6507), // Rule ID 204 //
6949 /* 6501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6950 /* 6504 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_UADDE'
6951 /* 6504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6952 /* 6507 */ // Label 360: @6507
6953 /* 6507 */ GIM_Reject,
6954 /* 6508 */ // Label 46: @6508
6955 /* 6508 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6519), // Rule ID 383 //
6956 /* 6513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6957 /* 6516 */ // Combiner Rule #232: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
6958 /* 6516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6959 /* 6519 */ // Label 361: @6519
6960 /* 6519 */ GIM_Reject,
6961 /* 6520 */ // Label 47: @6520
6962 /* 6520 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6531), // Rule ID 206 //
6963 /* 6525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6964 /* 6528 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_USUBE'
6965 /* 6528 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6966 /* 6531 */ // Label 362: @6531
6967 /* 6531 */ GIM_Reject,
6968 /* 6532 */ // Label 48: @6532
6969 /* 6532 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6543), // Rule ID 340 //
6970 /* 6537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6971 /* 6540 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
6972 /* 6540 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6973 /* 6543 */ // Label 363: @6543
6974 /* 6543 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6554), // Rule ID 380 //
6975 /* 6548 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6976 /* 6551 */ // Combiner Rule #231: match_addos; wip_match_opcode 'G_SADDO'
6977 /* 6551 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6978 /* 6554 */ // Label 364: @6554
6979 /* 6554 */ GIM_Reject,
6980 /* 6555 */ // Label 49: @6555
6981 /* 6555 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6566), // Rule ID 205 //
6982 /* 6560 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6983 /* 6563 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_SADDE'
6984 /* 6563 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6985 /* 6566 */ // Label 365: @6566
6986 /* 6566 */ GIM_Reject,
6987 /* 6567 */ // Label 50: @6567
6988 /* 6567 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6578), // Rule ID 382 //
6989 /* 6572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6990 /* 6575 */ // Combiner Rule #232: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
6991 /* 6575 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6992 /* 6578 */ // Label 366: @6578
6993 /* 6578 */ GIM_Reject,
6994 /* 6579 */ // Label 51: @6579
6995 /* 6579 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6590), // Rule ID 207 //
6996 /* 6584 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6997 /* 6587 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_SSUBE'
6998 /* 6587 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6999 /* 6590 */ // Label 367: @6590
7000 /* 6590 */ GIM_Reject,
7001 /* 6591 */ // Label 52: @6591
7002 /* 6591 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6602), // Rule ID 200 //
7003 /* 6596 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
7004 /* 6599 */ // Combiner Rule #156: mulo_by_2; wip_match_opcode 'G_UMULO'
7005 /* 6599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7006 /* 6602 */ // Label 368: @6602
7007 /* 6602 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6613), // Rule ID 202 //
7008 /* 6607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7009 /* 6610 */ // Combiner Rule #157: mulo_by_0; wip_match_opcode 'G_UMULO'
7010 /* 6610 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7011 /* 6613 */ // Label 369: @6613
7012 /* 6613 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6624), // Rule ID 341 //
7013 /* 6618 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7014 /* 6621 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
7015 /* 6621 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7016 /* 6624 */ // Label 370: @6624
7017 /* 6624 */ GIM_Reject,
7018 /* 6625 */ // Label 53: @6625
7019 /* 6625 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6636), // Rule ID 201 //
7020 /* 6630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
7021 /* 6633 */ // Combiner Rule #156: mulo_by_2; wip_match_opcode 'G_SMULO'
7022 /* 6633 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
7023 /* 6636 */ // Label 371: @6636
7024 /* 6636 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6647), // Rule ID 203 //
7025 /* 6641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
7026 /* 6644 */ // Combiner Rule #157: mulo_by_0; wip_match_opcode 'G_SMULO'
7027 /* 6644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
7028 /* 6647 */ // Label 372: @6647
7029 /* 6647 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6658), // Rule ID 342 //
7030 /* 6652 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7031 /* 6655 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
7032 /* 6655 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7033 /* 6658 */ // Label 373: @6658
7034 /* 6658 */ GIM_Reject,
7035 /* 6659 */ // Label 54: @6659
7036 /* 6659 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6670), // Rule ID 278 //
7037 /* 6664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
7038 /* 6667 */ // Combiner Rule #186: mulh_to_lshr; wip_match_opcode 'G_UMULH'
7039 /* 6667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
7040 /* 6670 */ // Label 374: @6670
7041 /* 6670 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6681), // Rule ID 343 //
7042 /* 6675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7043 /* 6678 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
7044 /* 6678 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7045 /* 6681 */ // Label 375: @6681
7046 /* 6681 */ GIM_Reject,
7047 /* 6682 */ // Label 55: @6682
7048 /* 6682 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6693), // Rule ID 344 //
7049 /* 6687 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7050 /* 6690 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
7051 /* 6690 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7052 /* 6693 */ // Label 376: @6693
7053 /* 6693 */ GIM_Reject,
7054 /* 6694 */ // Label 56: @6694
7055 /* 6694 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6705), // Rule ID 345 //
7056 /* 6699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7057 /* 6702 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
7058 /* 6702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7059 /* 6705 */ // Label 377: @6705
7060 /* 6705 */ GIM_Reject,
7061 /* 6706 */ // Label 57: @6706
7062 /* 6706 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6717), // Rule ID 346 //
7063 /* 6711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7064 /* 6714 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
7065 /* 6714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7066 /* 6717 */ // Label 378: @6717
7067 /* 6717 */ GIM_Reject,
7068 /* 6718 */ // Label 58: @6718
7069 /* 6718 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6729), // Rule ID 219 //
7070 /* 6723 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7071 /* 6726 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
7072 /* 6726 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7073 /* 6729 */ // Label 379: @6729
7074 /* 6729 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6740), // Rule ID 223 //
7075 /* 6734 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7076 /* 6737 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
7077 /* 6737 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7078 /* 6740 */ // Label 380: @6740
7079 /* 6740 */ GIM_Reject,
7080 /* 6741 */ // Label 59: @6741
7081 /* 6741 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6752), // Rule ID 218 //
7082 /* 6746 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
7083 /* 6749 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
7084 /* 6749 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
7085 /* 6752 */ // Label 381: @6752
7086 /* 6752 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6763), // Rule ID 224 //
7087 /* 6757 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
7088 /* 6760 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
7089 /* 6760 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
7090 /* 6763 */ // Label 382: @6763
7091 /* 6763 */ GIM_Reject,
7092 /* 6764 */ // Label 60: @6764
7093 /* 6764 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6775), // Rule ID 347 //
7094 /* 6769 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7095 /* 6772 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
7096 /* 6772 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7097 /* 6775 */ // Label 383: @6775
7098 /* 6775 */ GIM_Reject,
7099 /* 6776 */ // Label 61: @6776
7100 /* 6776 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6787), // Rule ID 348 //
7101 /* 6781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7102 /* 6784 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
7103 /* 6784 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7104 /* 6787 */ // Label 384: @6787
7105 /* 6787 */ GIM_Reject,
7106 /* 6788 */ // Label 62: @6788
7107 /* 6788 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6799), // Rule ID 349 //
7108 /* 6793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7109 /* 6796 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
7110 /* 6796 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7111 /* 6799 */ // Label 385: @6799
7112 /* 6799 */ GIM_Reject,
7113 /* 6800 */ // Label 63: @6800
7114 /* 6800 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6811), // Rule ID 350 //
7115 /* 6805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7116 /* 6808 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
7117 /* 6808 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7118 /* 6811 */ // Label 386: @6811
7119 /* 6811 */ GIM_Reject,
7120 /* 6812 */ // Label 64: @6812
7121 /* 6812 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6823), // Rule ID 268 //
7122 /* 6817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7123 /* 6820 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
7124 /* 6820 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7125 /* 6823 */ // Label 387: @6823
7126 /* 6823 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6834), // Rule ID 279 //
7127 /* 6828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7128 /* 6831 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FADD'
7129 /* 6831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7130 /* 6834 */ // Label 388: @6834
7131 /* 6834 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6845), // Rule ID 286 //
7132 /* 6839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
7133 /* 6842 */ // Combiner Rule #189: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7134 /* 6842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
7135 /* 6845 */ // Label 389: @6845
7136 /* 6845 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6856), // Rule ID 287 //
7137 /* 6850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7138 /* 6853 */ // Combiner Rule #190: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7139 /* 6853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
7140 /* 6856 */ // Label 390: @6856
7141 /* 6856 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6867), // Rule ID 288 //
7142 /* 6861 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
7143 /* 6864 */ // Combiner Rule #191: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7144 /* 6864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
7145 /* 6867 */ // Label 391: @6867
7146 /* 6867 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(6878), // Rule ID 289 //
7147 /* 6872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
7148 /* 6875 */ // Combiner Rule #192: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
7149 /* 6875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
7150 /* 6878 */ // Label 392: @6878
7151 /* 6878 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(6889), // Rule ID 312 //
7152 /* 6883 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7153 /* 6886 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FADD'
7154 /* 6886 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7155 /* 6889 */ // Label 393: @6889
7156 /* 6889 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(6900), // Rule ID 351 //
7157 /* 6894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7158 /* 6897 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
7159 /* 6897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7160 /* 6900 */ // Label 394: @6900
7161 /* 6900 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(6923), // Rule ID 144 //
7162 /* 6905 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7163 /* 6908 */ // MIs[0] dst
7164 /* 6908 */ // No operand predicates
7165 /* 6908 */ // MIs[0] x
7166 /* 6908 */ // No operand predicates
7167 /* 6908 */ // MIs[0] y
7168 /* 6908 */ // No operand predicates
7169 /* 6908 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7170 /* 6912 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7171 /* 6917 */ // Combiner Rule #104: right_identity_neg_zero_fp
7172 /* 6917 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7173 /* 6922 */ GIR_EraseRootFromParent_Done,
7174 /* 6923 */ // Label 395: @6923
7175 /* 6923 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(6952), // Rule ID 145 //
7176 /* 6928 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
7177 /* 6931 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
7178 /* 6937 */ // MIs[0] dst
7179 /* 6937 */ // No operand predicates
7180 /* 6937 */ // MIs[0] x
7181 /* 6937 */ // No operand predicates
7182 /* 6937 */ // MIs[0] y
7183 /* 6937 */ // No operand predicates
7184 /* 6937 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
7185 /* 6941 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7186 /* 6946 */ // Combiner Rule #105: right_identity_neg_zero_fp_nsz
7187 /* 6946 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7188 /* 6951 */ GIR_EraseRootFromParent_Done,
7189 /* 6952 */ // Label 396: @6952
7190 /* 6952 */ GIM_Reject,
7191 /* 6953 */ // Label 65: @6953
7192 /* 6953 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(6964), // Rule ID 269 //
7193 /* 6958 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7194 /* 6961 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
7195 /* 6961 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7196 /* 6964 */ // Label 397: @6964
7197 /* 6964 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(6975), // Rule ID 280 //
7198 /* 6969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7199 /* 6972 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FSUB'
7200 /* 6972 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7201 /* 6975 */ // Label 398: @6975
7202 /* 6975 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(6986), // Rule ID 290 //
7203 /* 6980 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
7204 /* 6983 */ // Combiner Rule #193: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7205 /* 6983 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
7206 /* 6986 */ // Label 399: @6986
7207 /* 6986 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(6997), // Rule ID 291 //
7208 /* 6991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
7209 /* 6994 */ // Combiner Rule #194: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7210 /* 6994 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
7211 /* 6997 */ // Label 400: @6997
7212 /* 6997 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(7008), // Rule ID 292 //
7213 /* 7002 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
7214 /* 7005 */ // Combiner Rule #195: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7215 /* 7005 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
7216 /* 7008 */ // Label 401: @7008
7217 /* 7008 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(7019), // Rule ID 293 //
7218 /* 7013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
7219 /* 7016 */ // Combiner Rule #196: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
7220 /* 7016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
7221 /* 7019 */ // Label 402: @7019
7222 /* 7019 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(7030), // Rule ID 313 //
7223 /* 7024 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7224 /* 7027 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FSUB'
7225 /* 7027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7226 /* 7030 */ // Label 403: @7030
7227 /* 7030 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(7041), // Rule ID 329 //
7228 /* 7035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
7229 /* 7038 */ // Combiner Rule #207: fsub_to_fneg; wip_match_opcode 'G_FSUB'
7230 /* 7038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
7231 /* 7041 */ // Label 404: @7041
7232 /* 7041 */ GIM_Reject,
7233 /* 7042 */ // Label 66: @7042
7234 /* 7042 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(7053), // Rule ID 270 //
7235 /* 7047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7236 /* 7050 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
7237 /* 7050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7238 /* 7053 */ // Label 405: @7053
7239 /* 7053 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(7064), // Rule ID 281 //
7240 /* 7058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7241 /* 7061 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMUL'
7242 /* 7061 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7243 /* 7064 */ // Label 406: @7064
7244 /* 7064 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(7075), // Rule ID 311 //
7245 /* 7069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7246 /* 7072 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMUL'
7247 /* 7072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7248 /* 7075 */ // Label 407: @7075
7249 /* 7075 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(7086), // Rule ID 352 //
7250 /* 7080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7251 /* 7083 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
7252 /* 7083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7253 /* 7086 */ // Label 408: @7086
7254 /* 7086 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(7107), // Rule ID 394 //
7255 /* 7091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
7256 /* 7094 */ // MIs[0] dst
7257 /* 7094 */ // No operand predicates
7258 /* 7094 */ // MIs[0] x
7259 /* 7094 */ // No operand predicates
7260 /* 7094 */ // MIs[0] select
7261 /* 7094 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7262 /* 7098 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7263 /* 7102 */ // MIs[1] y
7264 /* 7102 */ // No operand predicates
7265 /* 7102 */ // MIs[1] A
7266 /* 7102 */ // No operand predicates
7267 /* 7102 */ // MIs[1] B
7268 /* 7102 */ // No operand predicates
7269 /* 7102 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7270 /* 7104 */ // Combiner Rule #242: combine_fmul_with_select_to_fldexp
7271 /* 7104 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
7272 /* 7107 */ // Label 409: @7107
7273 /* 7107 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(7130), // Rule ID 135 //
7274 /* 7112 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7275 /* 7115 */ // MIs[0] dst
7276 /* 7115 */ // No operand predicates
7277 /* 7115 */ // MIs[0] x
7278 /* 7115 */ // No operand predicates
7279 /* 7115 */ // MIs[0] y
7280 /* 7115 */ // No operand predicates
7281 /* 7115 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
7282 /* 7119 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7283 /* 7124 */ // Combiner Rule #97: right_identity_one_fp
7284 /* 7124 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7285 /* 7129 */ GIR_EraseRootFromParent_Done,
7286 /* 7130 */ // Label 410: @7130
7287 /* 7130 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(7150), // Rule ID 146 //
7288 /* 7135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7289 /* 7138 */ // MIs[0] dst
7290 /* 7138 */ // No operand predicates
7291 /* 7138 */ // MIs[0] x
7292 /* 7138 */ // No operand predicates
7293 /* 7138 */ // MIs[0] y
7294 /* 7138 */ // No operand predicates
7295 /* 7138 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7296 /* 7142 */ // Combiner Rule #106: right_identity_neg_one_fp
7297 /* 7142 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
7298 /* 7145 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7299 /* 7147 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7300 /* 7149 */ GIR_EraseRootFromParent_Done,
7301 /* 7150 */ // Label 411: @7150
7302 /* 7150 */ GIM_Reject,
7303 /* 7151 */ // Label 67: @7151
7304 /* 7151 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(7162), // Rule ID 273 //
7305 /* 7156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7306 /* 7159 */ // Combiner Rule #183: constant_fold_fma; wip_match_opcode 'G_FMA'
7307 /* 7159 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7308 /* 7162 */ // Label 412: @7162
7309 /* 7162 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(7173), // Rule ID 284 //
7310 /* 7167 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7311 /* 7170 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMA'
7312 /* 7170 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7313 /* 7173 */ // Label 413: @7173
7314 /* 7173 */ GIM_Reject,
7315 /* 7174 */ // Label 68: @7174
7316 /* 7174 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(7185), // Rule ID 272 //
7317 /* 7179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7318 /* 7182 */ // Combiner Rule #183: constant_fold_fma; wip_match_opcode 'G_FMAD'
7319 /* 7182 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7320 /* 7185 */ // Label 414: @7185
7321 /* 7185 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(7196), // Rule ID 283 //
7322 /* 7190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7323 /* 7193 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMAD'
7324 /* 7193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7325 /* 7196 */ // Label 415: @7196
7326 /* 7196 */ GIM_Reject,
7327 /* 7197 */ // Label 69: @7197
7328 /* 7197 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(7208), // Rule ID 271 //
7329 /* 7202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7330 /* 7205 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
7331 /* 7205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7332 /* 7208 */ // Label 416: @7208
7333 /* 7208 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(7219), // Rule ID 282 //
7334 /* 7213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7335 /* 7216 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FDIV'
7336 /* 7216 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7337 /* 7219 */ // Label 417: @7219
7338 /* 7219 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(7230), // Rule ID 314 //
7339 /* 7224 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7340 /* 7227 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FDIV'
7341 /* 7227 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7342 /* 7230 */ // Label 418: @7230
7343 /* 7230 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(7241), // Rule ID 326 //
7344 /* 7235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7345 /* 7238 */ // MIs[0] dst
7346 /* 7238 */ // No operand predicates
7347 /* 7238 */ // MIs[0] src1
7348 /* 7238 */ // No operand predicates
7349 /* 7238 */ // MIs[0] src2
7350 /* 7238 */ // No operand predicates
7351 /* 7238 */ // Combiner Rule #204: fdiv_repeated_divison
7352 /* 7238 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7353 /* 7241 */ // Label 419: @7241
7354 /* 7241 */ GIM_Reject,
7355 /* 7242 */ // Label 70: @7242
7356 /* 7242 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(7253), // Rule ID 315 //
7357 /* 7247 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7358 /* 7250 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FREM'
7359 /* 7250 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7360 /* 7253 */ // Label 420: @7253
7361 /* 7253 */ GIM_Reject,
7362 /* 7254 */ // Label 71: @7254
7363 /* 7254 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(7275), // Rule ID 212 //
7364 /* 7259 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7365 /* 7262 */ // MIs[0] dst
7366 /* 7262 */ // No operand predicates
7367 /* 7262 */ // MIs[0] float
7368 /* 7262 */ // No operand predicates
7369 /* 7262 */ // MIs[0] int
7370 /* 7262 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7371 /* 7266 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7372 /* 7270 */ // MIs[1] imm
7373 /* 7270 */ // No operand predicates
7374 /* 7270 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7375 /* 7272 */ // Combiner Rule #160: expand_const_fpowi
7376 /* 7272 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7377 /* 7275 */ // Label 421: @7275
7378 /* 7275 */ GIM_Reject,
7379 /* 7276 */ // Label 72: @7276
7380 /* 7276 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(7297), // Rule ID 186 //
7381 /* 7281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7382 /* 7284 */ // MIs[0] dst
7383 /* 7284 */ // No operand predicates
7384 /* 7284 */ // MIs[0] src0
7385 /* 7284 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7386 /* 7288 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7387 /* 7292 */ // MIs[1] cst
7388 /* 7292 */ // No operand predicates
7389 /* 7292 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7390 /* 7294 */ // Combiner Rule #142: constant_fold_flog2
7391 /* 7294 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7392 /* 7297 */ // Label 422: @7297
7393 /* 7297 */ GIM_Reject,
7394 /* 7298 */ // Label 73: @7298
7395 /* 7298 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7309), // Rule ID 396 //
7396 /* 7303 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
7397 /* 7306 */ // Combiner Rule #244: foldable_fneg; wip_match_opcode 'G_FNEG'
7398 /* 7306 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
7399 /* 7309 */ // Label 423: @7309
7400 /* 7309 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7330), // Rule ID 183 //
7401 /* 7314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7402 /* 7317 */ // MIs[0] dst
7403 /* 7317 */ // No operand predicates
7404 /* 7317 */ // MIs[0] src0
7405 /* 7317 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7406 /* 7321 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7407 /* 7325 */ // MIs[1] cst
7408 /* 7325 */ // No operand predicates
7409 /* 7325 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7410 /* 7327 */ // Combiner Rule #139: constant_fold_fneg
7411 /* 7327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7412 /* 7330 */ // Label 424: @7330
7413 /* 7330 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7359), // Rule ID 133 //
7414 /* 7335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
7415 /* 7338 */ // MIs[0] dst
7416 /* 7338 */ // No operand predicates
7417 /* 7338 */ // MIs[0] t
7418 /* 7338 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7419 /* 7342 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7420 /* 7346 */ // MIs[1] src
7421 /* 7346 */ // No operand predicates
7422 /* 7346 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7423 /* 7351 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7424 /* 7353 */ // Combiner Rule #95: fneg_fneg_fold
7425 /* 7353 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7426 /* 7358 */ GIR_EraseRootFromParent_Done,
7427 /* 7359 */ // Label 425: @7359
7428 /* 7359 */ GIM_Reject,
7429 /* 7360 */ // Label 74: @7360
7430 /* 7360 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7381), // Rule ID 188 //
7431 /* 7365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7432 /* 7368 */ // MIs[0] dst
7433 /* 7368 */ // No operand predicates
7434 /* 7368 */ // MIs[0] src0
7435 /* 7368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7436 /* 7372 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7437 /* 7376 */ // MIs[1] cst
7438 /* 7376 */ // No operand predicates
7439 /* 7376 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7440 /* 7378 */ // Combiner Rule #144: constant_fold_fpext
7441 /* 7378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7442 /* 7381 */ // Label 426: @7381
7443 /* 7381 */ GIM_Reject,
7444 /* 7382 */ // Label 75: @7382
7445 /* 7382 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7403), // Rule ID 187 //
7446 /* 7387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
7447 /* 7390 */ // MIs[0] dst
7448 /* 7390 */ // No operand predicates
7449 /* 7390 */ // MIs[0] src0
7450 /* 7390 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7451 /* 7394 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7452 /* 7398 */ // MIs[1] cst
7453 /* 7398 */ // No operand predicates
7454 /* 7398 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7455 /* 7400 */ // Combiner Rule #143: constant_fold_fptrunc
7456 /* 7400 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7457 /* 7403 */ // Label 427: @7403
7458 /* 7403 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7424), // Rule ID 143 //
7459 /* 7408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7460 /* 7411 */ // MIs[0] dst
7461 /* 7411 */ // No operand predicates
7462 /* 7411 */ // MIs[0] src1
7463 /* 7411 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7464 /* 7415 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7465 /* 7419 */ // MIs[1] src0
7466 /* 7419 */ // No operand predicates
7467 /* 7419 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7468 /* 7421 */ // Combiner Rule #103: fptrunc_fpext_fold
7469 /* 7421 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7470 /* 7424 */ // Label 428: @7424
7471 /* 7424 */ GIM_Reject,
7472 /* 7425 */ // Label 76: @7425
7473 /* 7425 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7446), // Rule ID 95 //
7474 /* 7430 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7475 /* 7433 */ // MIs[0] dst
7476 /* 7433 */ // No operand predicates
7477 /* 7433 */ // MIs[0] __unary_undef_to_undef_match_0.x
7478 /* 7433 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7479 /* 7437 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7480 /* 7441 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7481 /* 7443 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7482 /* 7443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7483 /* 7446 */ // Label 429: @7446
7484 /* 7446 */ GIM_Reject,
7485 /* 7447 */ // Label 77: @7447
7486 /* 7447 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7468), // Rule ID 96 //
7487 /* 7452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7488 /* 7455 */ // MIs[0] dst
7489 /* 7455 */ // No operand predicates
7490 /* 7455 */ // MIs[0] __unary_undef_to_undef_match_0.x
7491 /* 7455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7492 /* 7459 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7493 /* 7463 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7494 /* 7465 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7495 /* 7465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7496 /* 7468 */ // Label 430: @7468
7497 /* 7468 */ GIM_Reject,
7498 /* 7469 */ // Label 78: @7469
7499 /* 7469 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7480), // Rule ID 79 //
7500 /* 7474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7501 /* 7477 */ // Combiner Rule #74: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7502 /* 7477 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7503 /* 7480 */ // Label 431: @7480
7504 /* 7480 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7495), // Rule ID 196 //
7505 /* 7485 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
7506 /* 7488 */ // MIs[0] dst
7507 /* 7488 */ // No operand predicates
7508 /* 7488 */ // MIs[0] Operand 1
7509 /* 7488 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7510 /* 7492 */ // Combiner Rule #152: itof_const_zero_fold_si
7511 /* 7492 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7512 /* 7495 */ // Label 432: @7495
7513 /* 7495 */ GIM_Reject,
7514 /* 7496 */ // Label 79: @7496
7515 /* 7496 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7507), // Rule ID 78 //
7516 /* 7501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7517 /* 7504 */ // Combiner Rule #74: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7518 /* 7504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7519 /* 7507 */ // Label 433: @7507
7520 /* 7507 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7522), // Rule ID 197 //
7521 /* 7512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
7522 /* 7515 */ // MIs[0] dst
7523 /* 7515 */ // No operand predicates
7524 /* 7515 */ // MIs[0] Operand 1
7525 /* 7515 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7526 /* 7519 */ // Combiner Rule #153: itof_const_zero_fold_ui
7527 /* 7519 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7528 /* 7522 */ // Label 434: @7522
7529 /* 7522 */ GIM_Reject,
7530 /* 7523 */ // Label 80: @7523
7531 /* 7523 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7552), // Rule ID 22 //
7532 /* 7528 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7533 /* 7531 */ // MIs[0] dst
7534 /* 7531 */ // No operand predicates
7535 /* 7531 */ // MIs[0] src
7536 /* 7531 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7537 /* 7535 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7538 /* 7539 */ // MIs[1] __idempotent_prop_match_0.x
7539 /* 7539 */ // No operand predicates
7540 /* 7539 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7541 /* 7544 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7542 /* 7546 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[1]]
7543 /* 7546 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7544 /* 7551 */ GIR_EraseRootFromParent_Done,
7545 /* 7552 */ // Label 435: @7552
7546 /* 7552 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7573), // Rule ID 184 //
7547 /* 7557 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7548 /* 7560 */ // MIs[0] dst
7549 /* 7560 */ // No operand predicates
7550 /* 7560 */ // MIs[0] src0
7551 /* 7560 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7552 /* 7564 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7553 /* 7568 */ // MIs[1] cst
7554 /* 7568 */ // No operand predicates
7555 /* 7568 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7556 /* 7570 */ // Combiner Rule #140: constant_fold_fabs
7557 /* 7570 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7558 /* 7573 */ // Label 436: @7573
7559 /* 7573 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7601), // Rule ID 277 //
7560 /* 7578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7561 /* 7581 */ // MIs[0] dst
7562 /* 7581 */ // No operand predicates
7563 /* 7581 */ // MIs[0] tmp
7564 /* 7581 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7565 /* 7585 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7566 /* 7589 */ // MIs[1] x
7567 /* 7589 */ // No operand predicates
7568 /* 7589 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7569 /* 7591 */ // Combiner Rule #185: fabs_fneg_fold
7570 /* 7591 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7571 /* 7594 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7572 /* 7596 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7573 /* 7600 */ GIR_EraseRootFromParent_Done,
7574 /* 7601 */ // Label 437: @7601
7575 /* 7601 */ GIM_Reject,
7576 /* 7602 */ // Label 81: @7602
7577 /* 7602 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7631), // Rule ID 23 //
7578 /* 7607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7579 /* 7610 */ // MIs[0] dst
7580 /* 7610 */ // No operand predicates
7581 /* 7610 */ // MIs[0] src
7582 /* 7610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7583 /* 7614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7584 /* 7618 */ // MIs[1] __idempotent_prop_match_0.x
7585 /* 7618 */ // No operand predicates
7586 /* 7618 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7587 /* 7623 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7588 /* 7625 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[2]]
7589 /* 7625 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7590 /* 7630 */ GIR_EraseRootFromParent_Done,
7591 /* 7631 */ // Label 438: @7631
7592 /* 7631 */ GIM_Reject,
7593 /* 7632 */ // Label 82: @7632
7594 /* 7632 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7643), // Rule ID 208 //
7595 /* 7637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7596 /* 7640 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7597 /* 7640 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7598 /* 7643 */ // Label 439: @7643
7599 /* 7643 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7654), // Rule ID 316 //
7600 /* 7648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7601 /* 7651 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7602 /* 7651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7603 /* 7654 */ // Label 440: @7654
7604 /* 7654 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7665), // Rule ID 353 //
7605 /* 7659 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7606 /* 7662 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7607 /* 7662 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7608 /* 7665 */ // Label 441: @7665
7609 /* 7665 */ GIM_Reject,
7610 /* 7666 */ // Label 83: @7666
7611 /* 7666 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7677), // Rule ID 209 //
7612 /* 7671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7613 /* 7674 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7614 /* 7674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7615 /* 7677 */ // Label 442: @7677
7616 /* 7677 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7688), // Rule ID 317 //
7617 /* 7682 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7618 /* 7685 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7619 /* 7685 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7620 /* 7688 */ // Label 443: @7688
7621 /* 7688 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7699), // Rule ID 354 //
7622 /* 7693 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7623 /* 7696 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7624 /* 7696 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7625 /* 7699 */ // Label 444: @7699
7626 /* 7699 */ GIM_Reject,
7627 /* 7700 */ // Label 84: @7700
7628 /* 7700 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7711), // Rule ID 355 //
7629 /* 7705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7630 /* 7708 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7631 /* 7708 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7632 /* 7711 */ // Label 445: @7711
7633 /* 7711 */ GIM_Reject,
7634 /* 7712 */ // Label 85: @7712
7635 /* 7712 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7723), // Rule ID 356 //
7636 /* 7717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7637 /* 7720 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7638 /* 7720 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7639 /* 7723 */ // Label 446: @7723
7640 /* 7723 */ GIM_Reject,
7641 /* 7724 */ // Label 86: @7724
7642 /* 7724 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7735), // Rule ID 210 //
7643 /* 7729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7644 /* 7732 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7645 /* 7732 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7646 /* 7735 */ // Label 447: @7735
7647 /* 7735 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7746), // Rule ID 318 //
7648 /* 7740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7649 /* 7743 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7650 /* 7743 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7651 /* 7746 */ // Label 448: @7746
7652 /* 7746 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7757), // Rule ID 357 //
7653 /* 7751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7654 /* 7754 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7655 /* 7754 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7656 /* 7757 */ // Label 449: @7757
7657 /* 7757 */ GIM_Reject,
7658 /* 7758 */ // Label 87: @7758
7659 /* 7758 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7769), // Rule ID 211 //
7660 /* 7763 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7661 /* 7766 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7662 /* 7766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7663 /* 7769 */ // Label 450: @7769
7664 /* 7769 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7780), // Rule ID 319 //
7665 /* 7774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7666 /* 7777 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7667 /* 7777 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7668 /* 7780 */ // Label 451: @7780
7669 /* 7780 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7791), // Rule ID 358 //
7670 /* 7785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7671 /* 7788 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7672 /* 7788 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7673 /* 7791 */ // Label 452: @7791
7674 /* 7791 */ GIM_Reject,
7675 /* 7792 */ // Label 88: @7792
7676 /* 7792 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7803), // Rule ID 155 //
7677 /* 7797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7678 /* 7800 */ // Combiner Rule #111: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7679 /* 7800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7680 /* 7803 */ // Label 453: @7803
7681 /* 7803 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7814), // Rule ID 157 //
7682 /* 7808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
7683 /* 7811 */ // Combiner Rule #113: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7684 /* 7811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7685 /* 7814 */ // Label 454: @7814
7686 /* 7814 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7825), // Rule ID 198 //
7687 /* 7819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
7688 /* 7822 */ // Combiner Rule #154: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7689 /* 7822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7690 /* 7825 */ // Label 455: @7825
7691 /* 7825 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7836), // Rule ID 214 //
7692 /* 7830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7693 /* 7833 */ // Combiner Rule #162: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7694 /* 7833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7695 /* 7836 */ // Label 456: @7836
7696 /* 7836 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7847), // Rule ID 251 //
7697 /* 7841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7698 /* 7844 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7699 /* 7844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7700 /* 7847 */ // Label 457: @7847
7701 /* 7847 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7858), // Rule ID 296 //
7702 /* 7852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7703 /* 7855 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7704 /* 7855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7705 /* 7858 */ // Label 458: @7858
7706 /* 7858 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(7881), // Rule ID 114 //
7707 /* 7863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
7708 /* 7866 */ // MIs[0] dst
7709 /* 7866 */ // No operand predicates
7710 /* 7866 */ // MIs[0] lhs
7711 /* 7866 */ // No operand predicates
7712 /* 7866 */ // MIs[0] Operand 2
7713 /* 7866 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7714 /* 7870 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7715 /* 7875 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[7]]
7716 /* 7875 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7717 /* 7880 */ GIR_EraseRootFromParent_Done,
7718 /* 7881 */ // Label 459: @7881
7719 /* 7881 */ GIM_Reject,
7720 /* 7882 */ // Label 89: @7882
7721 /* 7882 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(7893), // Rule ID 264 //
7722 /* 7887 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7723 /* 7890 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SMIN'
7724 /* 7890 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7725 /* 7893 */ // Label 460: @7893
7726 /* 7893 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(7904), // Rule ID 307 //
7727 /* 7898 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7728 /* 7901 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7729 /* 7901 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7730 /* 7904 */ // Label 461: @7904
7731 /* 7904 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(7915), // Rule ID 335 //
7732 /* 7909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7733 /* 7912 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7734 /* 7912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7735 /* 7915 */ // Label 462: @7915
7736 /* 7915 */ GIM_Reject,
7737 /* 7916 */ // Label 90: @7916
7738 /* 7916 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(7927), // Rule ID 265 //
7739 /* 7921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7740 /* 7924 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SMAX'
7741 /* 7924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7742 /* 7927 */ // Label 463: @7927
7743 /* 7927 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(7938), // Rule ID 308 //
7744 /* 7932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7745 /* 7935 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7746 /* 7935 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7747 /* 7938 */ // Label 464: @7938
7748 /* 7938 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(7949), // Rule ID 336 //
7749 /* 7943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7750 /* 7946 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7751 /* 7946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7752 /* 7949 */ // Label 465: @7949
7753 /* 7949 */ GIM_Reject,
7754 /* 7950 */ // Label 91: @7950
7755 /* 7950 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(7961), // Rule ID 266 //
7756 /* 7955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7757 /* 7958 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UMIN'
7758 /* 7958 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7759 /* 7961 */ // Label 466: @7961
7760 /* 7961 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(7972), // Rule ID 309 //
7761 /* 7966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7762 /* 7969 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7763 /* 7969 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7764 /* 7972 */ // Label 467: @7972
7765 /* 7972 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(7983), // Rule ID 337 //
7766 /* 7977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7767 /* 7980 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7768 /* 7980 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7769 /* 7983 */ // Label 468: @7983
7770 /* 7983 */ GIM_Reject,
7771 /* 7984 */ // Label 92: @7984
7772 /* 7984 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(7995), // Rule ID 267 //
7773 /* 7989 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7774 /* 7992 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UMAX'
7775 /* 7992 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7776 /* 7995 */ // Label 469: @7995
7777 /* 7995 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(8006), // Rule ID 310 //
7778 /* 8000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7779 /* 8003 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7780 /* 8003 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7781 /* 8006 */ // Label 470: @8006
7782 /* 8006 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(8017), // Rule ID 338 //
7783 /* 8011 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7784 /* 8014 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7785 /* 8014 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7786 /* 8017 */ // Label 471: @8017
7787 /* 8017 */ GIM_Reject,
7788 /* 8018 */ // Label 93: @8018
7789 /* 8018 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(8029), // Rule ID 89 //
7790 /* 8023 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7791 /* 8026 */ // Combiner Rule #79: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7792 /* 8026 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7793 /* 8029 */ // Label 472: @8029
7794 /* 8029 */ GIM_Reject,
7795 /* 8030 */ // Label 94: @8030
7796 /* 8030 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(8041), // Rule ID 182 //
7797 /* 8035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7798 /* 8038 */ // Combiner Rule #138: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7799 /* 8038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7800 /* 8041 */ // Label 473: @8041
7801 /* 8041 */ GIM_Reject,
7802 /* 8042 */ // Label 95: @8042
7803 /* 8042 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(8053), // Rule ID 29 //
7804 /* 8047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
7805 /* 8050 */ // Combiner Rule #27: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7806 /* 8050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7807 /* 8053 */ // Label 474: @8053
7808 /* 8053 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(8064), // Rule ID 70 //
7809 /* 8058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7810 /* 8061 */ // Combiner Rule #68: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7811 /* 8061 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7812 /* 8064 */ // Label 475: @8064
7813 /* 8064 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(8075), // Rule ID 104 //
7814 /* 8069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7815 /* 8072 */ // Combiner Rule #85: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7816 /* 8072 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7817 /* 8075 */ // Label 476: @8075
7818 /* 8075 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(8114), // Rule ID 41 //
7819 /* 8080 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
7820 /* 8083 */ // MIs[0] root
7821 /* 8083 */ // No operand predicates
7822 /* 8083 */ // MIs[0] src
7823 /* 8083 */ // No operand predicates
7824 /* 8083 */ // MIs[0] elt
7825 /* 8083 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7826 /* 8087 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
7827 /* 8091 */ // MIs[1] src
7828 /* 8091 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7829 /* 8096 */ // MIs[1] idx
7830 /* 8096 */ // No operand predicates
7831 /* 8096 */ // MIs[0] idx
7832 /* 8096 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
7833 /* 8101 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7834 /* 8106 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7835 /* 8108 */ // Combiner Rule #39: insert_vector_element_extract_vector_element
7836 /* 8108 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7837 /* 8113 */ GIR_EraseRootFromParent_Done,
7838 /* 8114 */ // Label 477: @8114
7839 /* 8114 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(8147), // Rule ID 27 //
7840 /* 8119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
7841 /* 8122 */ // MIs[0] root
7842 /* 8122 */ // No operand predicates
7843 /* 8122 */ // MIs[0] src
7844 /* 8122 */ // No operand predicates
7845 /* 8122 */ // MIs[0] elt
7846 /* 8122 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7847 /* 8126 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7848 /* 8130 */ // MIs[0] idx
7849 /* 8130 */ // No operand predicates
7850 /* 8130 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
7851 /* 8134 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7852 /* 8139 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7853 /* 8141 */ // Combiner Rule #25: insert_vector_element_elt_undef
7854 /* 8141 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7855 /* 8146 */ GIR_EraseRootFromParent_Done,
7856 /* 8147 */ // Label 478: @8147
7857 /* 8147 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(8171), // Rule ID 26 //
7858 /* 8152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7859 /* 8155 */ // MIs[0] root
7860 /* 8155 */ // No operand predicates
7861 /* 8155 */ // MIs[0] src
7862 /* 8155 */ // No operand predicates
7863 /* 8155 */ // MIs[0] elt
7864 /* 8155 */ // No operand predicates
7865 /* 8155 */ // MIs[0] idx
7866 /* 8155 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
7867 /* 8159 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7868 /* 8163 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7869 /* 8165 */ // Combiner Rule #24: insert_vector_element_idx_undef
7870 /* 8165 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7871 /* 8168 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7872 /* 8170 */ GIR_EraseRootFromParent_Done,
7873 /* 8171 */ // Label 479: @8171
7874 /* 8171 */ GIM_Reject,
7875 /* 8172 */ // Label 96: @8172
7876 /* 8172 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(8183), // Rule ID 28 //
7877 /* 8177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
7878 /* 8180 */ // Combiner Rule #26: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7879 /* 8180 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
7880 /* 8183 */ // Label 480: @8183
7881 /* 8183 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(8194), // Rule ID 71 //
7882 /* 8188 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7883 /* 8191 */ // Combiner Rule #69: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7884 /* 8191 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7885 /* 8194 */ // Label 481: @8194
7886 /* 8194 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(8205), // Rule ID 77 //
7887 /* 8199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7888 /* 8202 */ // Combiner Rule #73: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7889 /* 8202 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7890 /* 8205 */ // Label 482: @8205
7891 /* 8205 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(8216), // Rule ID 105 //
7892 /* 8210 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7893 /* 8213 */ // Combiner Rule #85: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7894 /* 8213 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7895 /* 8216 */ // Label 483: @8216
7896 /* 8216 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(8240), // Rule ID 39 //
7897 /* 8221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
7898 /* 8224 */ // MIs[0] root
7899 /* 8224 */ // No operand predicates
7900 /* 8224 */ // MIs[0] src
7901 /* 8224 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7902 /* 8228 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7903 /* 8232 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
7904 /* 8235 */ // MIs[1] x
7905 /* 8235 */ // No operand predicates
7906 /* 8235 */ // MIs[1] y
7907 /* 8235 */ // No operand predicates
7908 /* 8235 */ // MIs[1] z
7909 /* 8235 */ // No operand predicates
7910 /* 8235 */ // MIs[1] a
7911 /* 8235 */ // No operand predicates
7912 /* 8235 */ // MIs[1] b
7913 /* 8235 */ // No operand predicates
7914 /* 8235 */ // MIs[1] c
7915 /* 8235 */ // No operand predicates
7916 /* 8235 */ // MIs[1] d
7917 /* 8235 */ // No operand predicates
7918 /* 8235 */ // MIs[1] e
7919 /* 8235 */ // No operand predicates
7920 /* 8235 */ // MIs[0] idx
7921 /* 8235 */ // No operand predicates
7922 /* 8235 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7923 /* 8237 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc8
7924 /* 8237 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7925 /* 8240 */ // Label 484: @8240
7926 /* 8240 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8264), // Rule ID 38 //
7927 /* 8245 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
7928 /* 8248 */ // MIs[0] root
7929 /* 8248 */ // No operand predicates
7930 /* 8248 */ // MIs[0] src
7931 /* 8248 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7932 /* 8252 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7933 /* 8256 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
7934 /* 8259 */ // MIs[1] x
7935 /* 8259 */ // No operand predicates
7936 /* 8259 */ // MIs[1] y
7937 /* 8259 */ // No operand predicates
7938 /* 8259 */ // MIs[1] z
7939 /* 8259 */ // No operand predicates
7940 /* 8259 */ // MIs[1] a
7941 /* 8259 */ // No operand predicates
7942 /* 8259 */ // MIs[1] b
7943 /* 8259 */ // No operand predicates
7944 /* 8259 */ // MIs[1] c
7945 /* 8259 */ // No operand predicates
7946 /* 8259 */ // MIs[1] d
7947 /* 8259 */ // No operand predicates
7948 /* 8259 */ // MIs[0] idx
7949 /* 8259 */ // No operand predicates
7950 /* 8259 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7951 /* 8261 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc7
7952 /* 8261 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7953 /* 8264 */ // Label 485: @8264
7954 /* 8264 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8288), // Rule ID 37 //
7955 /* 8269 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
7956 /* 8272 */ // MIs[0] root
7957 /* 8272 */ // No operand predicates
7958 /* 8272 */ // MIs[0] src
7959 /* 8272 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7960 /* 8276 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7961 /* 8280 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
7962 /* 8283 */ // MIs[1] x
7963 /* 8283 */ // No operand predicates
7964 /* 8283 */ // MIs[1] y
7965 /* 8283 */ // No operand predicates
7966 /* 8283 */ // MIs[1] z
7967 /* 8283 */ // No operand predicates
7968 /* 8283 */ // MIs[1] a
7969 /* 8283 */ // No operand predicates
7970 /* 8283 */ // MIs[1] b
7971 /* 8283 */ // No operand predicates
7972 /* 8283 */ // MIs[1] c
7973 /* 8283 */ // No operand predicates
7974 /* 8283 */ // MIs[0] idx
7975 /* 8283 */ // No operand predicates
7976 /* 8283 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7977 /* 8285 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc6
7978 /* 8285 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7979 /* 8288 */ // Label 486: @8288
7980 /* 8288 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8312), // Rule ID 36 //
7981 /* 8293 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
7982 /* 8296 */ // MIs[0] root
7983 /* 8296 */ // No operand predicates
7984 /* 8296 */ // MIs[0] src
7985 /* 8296 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7986 /* 8300 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7987 /* 8304 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
7988 /* 8307 */ // MIs[1] x
7989 /* 8307 */ // No operand predicates
7990 /* 8307 */ // MIs[1] y
7991 /* 8307 */ // No operand predicates
7992 /* 8307 */ // MIs[1] z
7993 /* 8307 */ // No operand predicates
7994 /* 8307 */ // MIs[1] a
7995 /* 8307 */ // No operand predicates
7996 /* 8307 */ // MIs[1] b
7997 /* 8307 */ // No operand predicates
7998 /* 8307 */ // MIs[0] idx
7999 /* 8307 */ // No operand predicates
8000 /* 8307 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8001 /* 8309 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc5
8002 /* 8309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8003 /* 8312 */ // Label 487: @8312
8004 /* 8312 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8336), // Rule ID 35 //
8005 /* 8317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
8006 /* 8320 */ // MIs[0] root
8007 /* 8320 */ // No operand predicates
8008 /* 8320 */ // MIs[0] src
8009 /* 8320 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8010 /* 8324 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8011 /* 8328 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
8012 /* 8331 */ // MIs[1] x
8013 /* 8331 */ // No operand predicates
8014 /* 8331 */ // MIs[1] y
8015 /* 8331 */ // No operand predicates
8016 /* 8331 */ // MIs[1] z
8017 /* 8331 */ // No operand predicates
8018 /* 8331 */ // MIs[1] a
8019 /* 8331 */ // No operand predicates
8020 /* 8331 */ // MIs[0] idx
8021 /* 8331 */ // No operand predicates
8022 /* 8331 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8023 /* 8333 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc4
8024 /* 8333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8025 /* 8336 */ // Label 488: @8336
8026 /* 8336 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8360), // Rule ID 34 //
8027 /* 8341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
8028 /* 8344 */ // MIs[0] root
8029 /* 8344 */ // No operand predicates
8030 /* 8344 */ // MIs[0] src
8031 /* 8344 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8032 /* 8348 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8033 /* 8352 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
8034 /* 8355 */ // MIs[1] x
8035 /* 8355 */ // No operand predicates
8036 /* 8355 */ // MIs[1] y
8037 /* 8355 */ // No operand predicates
8038 /* 8355 */ // MIs[1] z
8039 /* 8355 */ // No operand predicates
8040 /* 8355 */ // MIs[0] idx
8041 /* 8355 */ // No operand predicates
8042 /* 8355 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8043 /* 8357 */ // Combiner Rule #32: extract_vector_element_build_vector_trunc3
8044 /* 8357 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8045 /* 8360 */ // Label 489: @8360
8046 /* 8360 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8394), // Rule ID 30 //
8047 /* 8365 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
8048 /* 8368 */ // MIs[0] root
8049 /* 8368 */ // No operand predicates
8050 /* 8368 */ // MIs[0] src
8051 /* 8368 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8052 /* 8372 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8053 /* 8376 */ // MIs[1] x
8054 /* 8376 */ // No operand predicates
8055 /* 8376 */ // MIs[1] value
8056 /* 8376 */ // No operand predicates
8057 /* 8376 */ // MIs[1] idx
8058 /* 8376 */ // No operand predicates
8059 /* 8376 */ // MIs[0] idx
8060 /* 8376 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
8061 /* 8381 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8062 /* 8386 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8063 /* 8388 */ // Combiner Rule #28: extract_vector_element_not_const
8064 /* 8388 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
8065 /* 8393 */ GIR_EraseRootFromParent_Done,
8066 /* 8394 */ // Label 490: @8394
8067 /* 8394 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8415), // Rule ID 31 //
8068 /* 8399 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
8069 /* 8402 */ // MIs[0] root
8070 /* 8402 */ // No operand predicates
8071 /* 8402 */ // MIs[0] src
8072 /* 8402 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8073 /* 8406 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
8074 /* 8410 */ // MIs[1] x
8075 /* 8410 */ // No operand predicates
8076 /* 8410 */ // MIs[1] value
8077 /* 8410 */ // No operand predicates
8078 /* 8410 */ // MIs[1] idx2
8079 /* 8410 */ // No operand predicates
8080 /* 8410 */ // MIs[0] idx1
8081 /* 8410 */ // No operand predicates
8082 /* 8410 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8083 /* 8412 */ // Combiner Rule #29: extract_vector_element_different_indices
8084 /* 8412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
8085 /* 8415 */ // Label 491: @8415
8086 /* 8415 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8444), // Rule ID 40 //
8087 /* 8420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
8088 /* 8423 */ // MIs[0] root
8089 /* 8423 */ // No operand predicates
8090 /* 8423 */ // MIs[0] src
8091 /* 8423 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8092 /* 8427 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
8093 /* 8431 */ // MIs[1] src1
8094 /* 8431 */ // No operand predicates
8095 /* 8431 */ // MIs[1] src2
8096 /* 8431 */ // No operand predicates
8097 /* 8431 */ // MIs[1] mask
8098 /* 8431 */ // No operand predicates
8099 /* 8431 */ // MIs[0] idx
8100 /* 8431 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8101 /* 8435 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8102 /* 8439 */ // MIs[2] imm
8103 /* 8439 */ // No operand predicates
8104 /* 8439 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8105 /* 8441 */ // Combiner Rule #38: extract_vector_element_shuffle_vector
8106 /* 8441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
8107 /* 8444 */ // Label 492: @8444
8108 /* 8444 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8468), // Rule ID 33 //
8109 /* 8449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
8110 /* 8452 */ // MIs[0] root
8111 /* 8452 */ // No operand predicates
8112 /* 8452 */ // MIs[0] src
8113 /* 8452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8114 /* 8456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
8115 /* 8460 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
8116 /* 8463 */ // MIs[1] x
8117 /* 8463 */ // No operand predicates
8118 /* 8463 */ // MIs[1] y
8119 /* 8463 */ // No operand predicates
8120 /* 8463 */ // MIs[0] idx
8121 /* 8463 */ // No operand predicates
8122 /* 8463 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8123 /* 8465 */ // Combiner Rule #31: extract_vector_element_build_vector_trunc2
8124 /* 8465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
8125 /* 8468 */ // Label 493: @8468
8126 /* 8468 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8500), // Rule ID 32 //
8127 /* 8473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
8128 /* 8476 */ // MIs[0] root
8129 /* 8476 */ // No operand predicates
8130 /* 8476 */ // MIs[0] src
8131 /* 8476 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8132 /* 8480 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
8133 /* 8484 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
8134 /* 8487 */ // MIs[1] unused
8135 /* 8487 */ // No operand predicates
8136 /* 8487 */ // MIs[0] idx
8137 /* 8487 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8138 /* 8491 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8139 /* 8495 */ // MIs[2] imm
8140 /* 8495 */ // No operand predicates
8141 /* 8495 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8142 /* 8497 */ // Combiner Rule #30: extract_vector_element_build_vector
8143 /* 8497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
8144 /* 8500 */ // Label 494: @8500
8145 /* 8500 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8524), // Rule ID 24 //
8146 /* 8505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
8147 /* 8508 */ // MIs[0] root
8148 /* 8508 */ // No operand predicates
8149 /* 8508 */ // MIs[0] vector
8150 /* 8508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8151 /* 8512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8152 /* 8516 */ // MIs[0] idx
8153 /* 8516 */ // No operand predicates
8154 /* 8516 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8155 /* 8518 */ // Combiner Rule #22: match_extract_of_element_undef_vector
8156 /* 8518 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8157 /* 8521 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8158 /* 8523 */ GIR_EraseRootFromParent_Done,
8159 /* 8524 */ // Label 495: @8524
8160 /* 8524 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8548), // Rule ID 25 //
8161 /* 8529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
8162 /* 8532 */ // MIs[0] root
8163 /* 8532 */ // No operand predicates
8164 /* 8532 */ // MIs[0] vector
8165 /* 8532 */ // No operand predicates
8166 /* 8532 */ // MIs[0] idx
8167 /* 8532 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8168 /* 8536 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8169 /* 8540 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8170 /* 8542 */ // Combiner Rule #23: match_extract_of_element_undef_index
8171 /* 8542 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8172 /* 8545 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
8173 /* 8547 */ GIR_EraseRootFromParent_Done,
8174 /* 8548 */ // Label 496: @8548
8175 /* 8548 */ GIM_Reject,
8176 /* 8549 */ // Label 97: @8549
8177 /* 8549 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8560), // Rule ID 100 //
8178 /* 8554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
8179 /* 8557 */ // Combiner Rule #82: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
8180 /* 8557 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
8181 /* 8560 */ // Label 497: @8560
8182 /* 8560 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8571), // Rule ID 102 //
8183 /* 8565 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
8184 /* 8568 */ // Combiner Rule #83: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8185 /* 8568 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
8186 /* 8571 */ // Label 498: @8571
8187 /* 8571 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8582), // Rule ID 366 //
8188 /* 8576 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
8189 /* 8579 */ // Combiner Rule #217: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
8190 /* 8579 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
8191 /* 8582 */ // Label 499: @8582
8192 /* 8582 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8593), // Rule ID 368 //
8193 /* 8587 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
8194 /* 8590 */ // Combiner Rule #219: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
8195 /* 8590 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
8196 /* 8593 */ // Label 500: @8593
8197 /* 8593 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(8614), // Rule ID 367 //
8198 /* 8598 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
8199 /* 8601 */ // MIs[0] root
8200 /* 8601 */ // No operand predicates
8201 /* 8601 */ // MIs[0] src1
8202 /* 8601 */ // No operand predicates
8203 /* 8601 */ // MIs[0] undef
8204 /* 8601 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8205 /* 8605 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8206 /* 8609 */ // MIs[0] mask
8207 /* 8609 */ // No operand predicates
8208 /* 8609 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8209 /* 8611 */ // Combiner Rule #218: combine_shuffle_undef_rhs
8210 /* 8611 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
8211 /* 8614 */ // Label 501: @8614
8212 /* 8614 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(8625), // Rule ID 397 //
8213 /* 8619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
8214 /* 8622 */ // MIs[0] dst
8215 /* 8622 */ // No operand predicates
8216 /* 8622 */ // MIs[0] src1
8217 /* 8622 */ // No operand predicates
8218 /* 8622 */ // MIs[0] src2
8219 /* 8622 */ // No operand predicates
8220 /* 8622 */ // MIs[0] mask
8221 /* 8622 */ // No operand predicates
8222 /* 8622 */ // Combiner Rule #245: combine_shuffle_vector_to_build_vector
8223 /* 8622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner159),
8224 /* 8625 */ // Label 502: @8625
8225 /* 8625 */ GIM_Reject,
8226 /* 8626 */ // Label 98: @8626
8227 /* 8626 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(8637), // Rule ID 389 //
8228 /* 8631 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
8229 /* 8634 */ // MIs[0] dst
8230 /* 8634 */ // No operand predicates
8231 /* 8634 */ // MIs[0] src
8232 /* 8634 */ // No operand predicates
8233 /* 8634 */ // Combiner Rule #238: ctlz_to_ctls
8234 /* 8634 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8235 /* 8637 */ // Label 503: @8637
8236 /* 8637 */ GIM_Reject,
8237 /* 8638 */ // Label 99: @8638
8238 /* 8638 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(8649), // Rule ID 390 //
8239 /* 8643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
8240 /* 8646 */ // MIs[0] dst
8241 /* 8646 */ // No operand predicates
8242 /* 8646 */ // MIs[0] src
8243 /* 8646 */ // No operand predicates
8244 /* 8646 */ // Combiner Rule #239: ctlz_zero_undef_to_ctls
8245 /* 8646 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
8246 /* 8649 */ // Label 504: @8649
8247 /* 8649 */ GIM_Reject,
8248 /* 8650 */ // Label 100: @8650
8249 /* 8650 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(8694), // Rule ID 242 //
8250 /* 8655 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8251 /* 8658 */ // MIs[0] d
8252 /* 8658 */ // No operand predicates
8253 /* 8658 */ // MIs[0] src
8254 /* 8658 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8255 /* 8662 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
8256 /* 8666 */ // MIs[1] rev
8257 /* 8666 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8258 /* 8670 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8259 /* 8674 */ // MIs[2] val
8260 /* 8674 */ // No operand predicates
8261 /* 8674 */ // MIs[1] amt
8262 /* 8674 */ // No operand predicates
8263 /* 8674 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
8264 /* 8678 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8265 /* 8680 */ // Combiner Rule #175: bitreverse_lshr
8266 /* 8680 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8267 /* 8683 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8268 /* 8685 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8269 /* 8689 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8270 /* 8693 */ GIR_EraseRootFromParent_Done,
8271 /* 8694 */ // Label 505: @8694
8272 /* 8694 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(8738), // Rule ID 241 //
8273 /* 8699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8274 /* 8702 */ // MIs[0] d
8275 /* 8702 */ // No operand predicates
8276 /* 8702 */ // MIs[0] src
8277 /* 8702 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8278 /* 8706 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
8279 /* 8710 */ // MIs[1] rev
8280 /* 8710 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8281 /* 8714 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8282 /* 8718 */ // MIs[2] val
8283 /* 8718 */ // No operand predicates
8284 /* 8718 */ // MIs[1] amt
8285 /* 8718 */ // No operand predicates
8286 /* 8718 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
8287 /* 8722 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8288 /* 8724 */ // Combiner Rule #174: bitreverse_shl
8289 /* 8724 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
8290 /* 8727 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8291 /* 8729 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8292 /* 8733 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8293 /* 8737 */ GIR_EraseRootFromParent_Done,
8294 /* 8738 */ // Label 506: @8738
8295 /* 8738 */ GIM_Reject,
8296 /* 8739 */ // Label 101: @8739
8297 /* 8739 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(8760), // Rule ID 189 //
8298 /* 8744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
8299 /* 8747 */ // MIs[0] dst
8300 /* 8747 */ // No operand predicates
8301 /* 8747 */ // MIs[0] src0
8302 /* 8747 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8303 /* 8751 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8304 /* 8755 */ // MIs[1] cst
8305 /* 8755 */ // No operand predicates
8306 /* 8755 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8307 /* 8757 */ // Combiner Rule #145: constant_fold_fceil
8308 /* 8757 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8309 /* 8760 */ // Label 507: @8760
8310 /* 8760 */ GIM_Reject,
8311 /* 8761 */ // Label 102: @8761
8312 /* 8761 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(8782), // Rule ID 185 //
8313 /* 8766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
8314 /* 8769 */ // MIs[0] dst
8315 /* 8769 */ // No operand predicates
8316 /* 8769 */ // MIs[0] src0
8317 /* 8769 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8318 /* 8773 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8319 /* 8777 */ // MIs[1] cst
8320 /* 8777 */ // No operand predicates
8321 /* 8777 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8322 /* 8779 */ // Combiner Rule #141: constant_fold_fsqrt
8323 /* 8779 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8324 /* 8782 */ // Label 508: @8782
8325 /* 8782 */ GIM_Reject,
8326 /* 8783 */ // Label 103: @8783
8327 /* 8783 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(8804), // Rule ID 190 //
8328 /* 8788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8329 /* 8791 */ // MIs[0] dst
8330 /* 8791 */ // No operand predicates
8331 /* 8791 */ // MIs[0] src0
8332 /* 8791 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8333 /* 8795 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8334 /* 8799 */ // MIs[1] cst
8335 /* 8799 */ // No operand predicates
8336 /* 8799 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8337 /* 8801 */ // Combiner Rule #146: constant_fold_ffloor
8338 /* 8801 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8339 /* 8804 */ // Label 509: @8804
8340 /* 8804 */ GIM_Reject,
8341 /* 8805 */ // Label 104: @8805
8342 /* 8805 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(8826), // Rule ID 194 //
8343 /* 8810 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
8344 /* 8813 */ // MIs[0] dst
8345 /* 8813 */ // No operand predicates
8346 /* 8813 */ // MIs[0] src0
8347 /* 8813 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8348 /* 8817 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8349 /* 8821 */ // MIs[1] cst
8350 /* 8821 */ // No operand predicates
8351 /* 8821 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8352 /* 8823 */ // Combiner Rule #150: constant_fold_frint
8353 /* 8823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8354 /* 8826 */ // Label 510: @8826
8355 /* 8826 */ GIM_Reject,
8356 /* 8827 */ // Label 105: @8827
8357 /* 8827 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(8848), // Rule ID 195 //
8358 /* 8832 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
8359 /* 8835 */ // MIs[0] dst
8360 /* 8835 */ // No operand predicates
8361 /* 8835 */ // MIs[0] src0
8362 /* 8835 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8363 /* 8839 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8364 /* 8843 */ // MIs[1] cst
8365 /* 8843 */ // No operand predicates
8366 /* 8843 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8367 /* 8845 */ // Combiner Rule #151: constant_fold_fnearbyint
8368 /* 8845 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8369 /* 8848 */ // Label 511: @8848
8370 /* 8848 */ GIM_Reject,
8371 /* 8849 */ // Label 106: @8849
8372 /* 8849 */ GIM_Reject,
8373 /* 8850 */ }; // Size: 8850 bytes
8374 return MatchTable0;
8375}
8376#undef GIMT_Encode2
8377#undef GIMT_Encode4
8378#undef GIMT_Encode8
8379
8380
8381#endif // GET_GICOMBINER_IMPL
8382
8383#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8384
8385AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
8386AvailableFunctionFeatures()
8387
8388#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8389
8390#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8391
8392, State(0),
8393ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
8394
8395#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8396
8397