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: // 7 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 267; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 19; // "copy_prop"
52 case 'm': // 3 strings to match.
53 switch (RuleIdentifier[1]) {
54 default: break;
55 case 'a': // 1 string to match.
56 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
57 break;
58 return 230; // "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 169; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 168; // "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 241; // "nneg_zext"
76 case 'o': // 1 string to match.
77 if (memcmp(RuleIdentifier.data()+1, "r_xor_or", 8) != 0)
78 break;
79 return 235; // "or_xor_or"
80 }
81 break;
82 case 10: // 11 strings to match.
83 switch (RuleIdentifier[0]) {
84 default: break;
85 case 'S': // 2 strings to match.
86 if (memcmp(RuleIdentifier.data()+1, "ub", 2) != 0)
87 break;
88 switch (RuleIdentifier[3]) {
89 default: break;
90 case 'S': // 1 string to match.
91 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
92 break;
93 return 272; // "SubSmaxSub"
94 case 'U': // 1 string to match.
95 if (memcmp(RuleIdentifier.data()+4, "maxSub", 6) != 0)
96 break;
97 return 273; // "SubUmaxSub"
98 }
99 break;
100 case 'i': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
102 break;
103 return 96; // "i2p_to_p2i"
104 case 'm': // 2 strings to match.
105 switch (RuleIdentifier[1]) {
106 default: break;
107 case 'a': // 1 string to match.
108 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
109 break;
110 return 229; // "match_ands"
111 case 'u': // 1 string to match.
112 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
113 break;
114 return 20; // "mul_to_shl"
115 }
116 break;
117 case 'o': // 1 string to match.
118 if (memcmp(RuleIdentifier.data()+1, "r_xor_and", 9) != 0)
119 break;
120 return 236; // "or_xor_and"
121 case 'p': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
123 break;
124 return 95; // "p2i_to_i2p"
125 case 's': // 3 strings to match.
126 switch (RuleIdentifier[1]) {
127 default: break;
128 case 'e': // 2 strings to match.
129 switch (RuleIdentifier[2]) {
130 default: break;
131 case 'l': // 1 string to match.
132 if (memcmp(RuleIdentifier.data()+3, "ect_not", 7) != 0)
133 break;
134 return 137; // "select_not"
135 case 'x': // 1 string to match.
136 if (memcmp(RuleIdentifier.data()+3, "t_trunc", 7) != 0)
137 break;
138 return 239; // "sext_trunc"
139 }
140 break;
141 case 'u': // 1 string to match.
142 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
143 break;
144 return 21; // "sub_to_add"
145 }
146 break;
147 case 'z': // 1 string to match.
148 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
149 break;
150 return 240; // "zext_trunc"
151 }
152 break;
153 case 11: // 8 strings to match.
154 switch (RuleIdentifier[0]) {
155 default: break;
156 case 'a': // 1 string to match.
157 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
158 break;
159 return 101; // "add_sub_reg"
160 case 'm': // 1 string to match.
161 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
162 break;
163 return 256; // "match_addos"
164 case 's': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
166 break;
167 return 224; // "sub_add_reg"
168 case 't': // 4 strings to match.
169 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
170 break;
171 switch (RuleIdentifier[6]) {
172 default: break;
173 case 's': // 3 strings to match.
174 switch (RuleIdentifier[7]) {
175 default: break;
176 case 'h': // 1 string to match.
177 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
178 break;
179 return 148; // "trunc_shift"
180 case 's': // 2 strings to match.
181 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
182 break;
183 switch (RuleIdentifier[10]) {
184 default: break;
185 case 's': // 1 string to match.
186 return 258; // "trunc_ssats"
187 case 'u': // 1 string to match.
188 return 259; // "trunc_ssatu"
189 }
190 break;
191 }
192 break;
193 case 'u': // 1 string to match.
194 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
195 break;
196 return 260; // "trunc_usatu"
197 }
198 break;
199 case 'u': // 1 string to match.
200 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
201 break;
202 return 249; // "unmerge_cst"
203 }
204 break;
205 case 12: // 12 strings to match.
206 switch (RuleIdentifier[0]) {
207 default: break;
208 case 'A': // 1 string to match.
209 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
210 break;
211 return 4; // "APlusBMinusB"
212 case 'B': // 1 string to match.
213 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
214 break;
215 return 5; // "BMinusAPlusA"
216 case 'a': // 1 string to match.
217 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
218 break;
219 return 170; // "adde_to_addo"
220 case 'c': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
222 break;
223 return 263; // "ctlz_to_ctls"
224 case 'f': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
226 break;
227 return 226; // "fsub_to_fneg"
228 case 'm': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
230 break;
231 return 200; // "mulh_to_lshr"
232 case 'n': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
234 break;
235 return 149; // "not_cmp_fold"
236 case 'r': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
238 break;
239 return 144; // "redundant_or"
240 case 's': // 2 strings to match.
241 switch (RuleIdentifier[1]) {
242 default: break;
243 case 'd': // 1 string to match.
244 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
245 break;
246 return 220; // "sdiv_by_pow2"
247 case 'e': // 1 string to match.
248 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
249 break;
250 return 53; // "sext_of_sext"
251 }
252 break;
253 case 'u': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
255 break;
256 return 219; // "udiv_by_pow2"
257 case 'z': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
259 break;
260 return 51; // "zext_of_zext"
261 }
262 break;
263 case 13: // 19 strings to match.
264 switch (RuleIdentifier[0]) {
265 default: break;
266 case 'A': // 2 strings to match.
267 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
268 break;
269 switch (RuleIdentifier[12]) {
270 default: break;
271 case 'A': // 1 string to match.
272 return 12; // "AMinusBMinusA"
273 case 'C': // 1 string to match.
274 return 9; // "AMinusBMinusC"
275 }
276 break;
277 case 'a': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
279 break;
280 return 42; // "add_of_vscale"
281 case 'f': // 1 string to match.
282 if (memcmp(RuleIdentifier.data()+1, "oldable_fneg", 12) != 0)
283 break;
284 return 281; // "foldable_fneg"
285 case 'l': // 1 string to match.
286 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
287 break;
288 return 74; // "load_and_mask"
289 case 'm': // 3 strings to match.
290 switch (RuleIdentifier[1]) {
291 default: break;
292 case 'a': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
294 break;
295 return 135; // "match_selects"
296 case 'e': // 1 string to match.
297 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
298 break;
299 return 248; // "merge_unmerge"
300 case 'u': // 1 string to match.
301 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
302 break;
303 return 43; // "mul_of_vscale"
304 }
305 break;
306 case 'r': // 1 string to match.
307 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
308 break;
309 return 143; // "redundant_and"
310 case 's': // 6 strings to match.
311 switch (RuleIdentifier[1]) {
312 default: break;
313 case 'a': // 1 string to match.
314 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
315 break;
316 return 92; // "same_val_zero"
317 case 'd': // 1 string to match.
318 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
319 break;
320 return 222; // "sdiv_by_const"
321 case 'h': // 1 string to match.
322 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
323 break;
324 return 44; // "shl_of_vscale"
325 case 'r': // 1 string to match.
326 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
327 break;
328 return 218; // "srem_by_const"
329 case 'u': // 2 strings to match.
330 if (memcmp(RuleIdentifier.data()+2, "b_", 2) != 0)
331 break;
332 switch (RuleIdentifier[4]) {
333 default: break;
334 case 'm': // 1 string to match.
335 if (memcmp(RuleIdentifier.data()+5, "inus_one", 8) != 0)
336 break;
337 return 270; // "sub_minus_one"
338 case 'o': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+5, "f_vscale", 8) != 0)
340 break;
341 return 45; // "sub_of_vscale"
342 }
343 break;
344 }
345 break;
346 case 'u': // 4 strings to match.
347 switch (RuleIdentifier[1]) {
348 default: break;
349 case 'd': // 1 string to match.
350 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
351 break;
352 return 221; // "udiv_by_const"
353 case 'n': // 2 strings to match.
354 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
355 break;
356 switch (RuleIdentifier[8]) {
357 default: break;
358 case 'm': // 1 string to match.
359 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
360 break;
361 return 247; // "unmerge_merge"
362 case 'u': // 1 string to match.
363 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
364 break;
365 return 250; // "unmerge_undef"
366 }
367 break;
368 case 'r': // 1 string to match.
369 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
370 break;
371 return 217; // "urem_by_const"
372 }
373 break;
374 }
375 break;
376 case 14: // 17 strings to match.
377 switch (RuleIdentifier[0]) {
378 default: break;
379 case 'A': // 2 strings to match.
380 switch (RuleIdentifier[1]) {
381 default: break;
382 case 'M': // 1 string to match.
383 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
384 break;
385 return 18; // "AMinusC1PlusC2"
386 case 'P': // 1 string to match.
387 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
388 break;
389 return 14; // "APlusC1MinusC2"
390 }
391 break;
392 case 'C': // 1 string to match.
393 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
394 break;
395 return 15; // "C2MinusAPlusC1"
396 case 'N': // 1 string to match.
397 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
398 break;
399 return 13; // "NotAPlusNegOne"
400 case 'a': // 2 strings to match.
401 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
402 break;
403 switch (RuleIdentifier[10]) {
404 default: break;
405 case 's': // 1 string to match.
406 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
407 break;
408 return 57; // "anyext_of_sext"
409 case 'z': // 1 string to match.
410 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
411 break;
412 return 56; // "anyext_of_zext"
413 }
414 break;
415 case 'b': // 3 strings to match.
416 if (RuleIdentifier[1] != 'i')
417 break;
418 switch (RuleIdentifier[2]) {
419 default: break;
420 case 'n': // 2 strings to match.
421 if (memcmp(RuleIdentifier.data()+3, "op_", 3) != 0)
422 break;
423 switch (RuleIdentifier[6]) {
424 default: break;
425 case 's': // 1 string to match.
426 if (memcmp(RuleIdentifier.data()+7, "ame_val", 7) != 0)
427 break;
428 return 91; // "binop_same_val"
429 case 'w': // 1 string to match.
430 if (memcmp(RuleIdentifier.data()+7, "ith_neg", 7) != 0)
431 break;
432 return 269; // "binop_with_neg"
433 }
434 break;
435 case 't': // 1 string to match.
436 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
437 break;
438 return 186; // "bitreverse_shl"
439 }
440 break;
441 case 'f': // 2 strings to match.
442 switch (RuleIdentifier[1]) {
443 default: break;
444 case 'a': // 1 string to match.
445 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
446 break;
447 return 199; // "fabs_fneg_fold"
448 case 'n': // 1 string to match.
449 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
450 break;
451 return 98; // "fneg_fneg_fold"
452 }
453 break;
454 case 'm': // 1 string to match.
455 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
456 break;
457 return 23; // "mul_by_neg_one"
458 case 'r': // 1 string to match.
459 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
460 break;
461 return 115; // "reassoc_ptradd"
462 case 's': // 3 strings to match.
463 switch (RuleIdentifier[1]) {
464 default: break;
465 case 'e': // 2 strings to match.
466 switch (RuleIdentifier[2]) {
467 default: break;
468 case 'l': // 1 string to match.
469 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
470 break;
471 return 59; // "select_of_zext"
472 case 'x': // 1 string to match.
473 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
474 break;
475 return 54; // "sext_of_anyext"
476 }
477 break;
478 case 'h': // 1 string to match.
479 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
480 break;
481 return 114; // "shifts_too_big"
482 }
483 break;
484 case 'z': // 1 string to match.
485 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
486 break;
487 return 52; // "zext_of_anyext"
488 }
489 break;
490 case 15: // 14 strings to match.
491 switch (RuleIdentifier[0]) {
492 default: break;
493 case 'A': // 2 strings to match.
494 switch (RuleIdentifier[1]) {
495 default: break;
496 case 'M': // 1 string to match.
497 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
498 break;
499 return 16; // "AMinusC1MinusC2"
500 case 'P': // 1 string to match.
501 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
502 break;
503 return 3; // "APlusZeroMinusB"
504 }
505 break;
506 case 'C': // 1 string to match.
507 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
508 break;
509 return 17; // "C1Minus2MinusC2"
510 case 'G': // 1 string to match.
511 if (memcmp(RuleIdentifier.data()+1, "_FMA_fneg_fneg", 14) != 0)
512 break;
513 return 205; // "G_FMA_fneg_fneg"
514 case 'Z': // 1 string to match.
515 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
516 break;
517 return 2; // "ZeroMinusAPlusB"
518 case 'a': // 2 strings to match.
519 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
520 break;
521 switch (RuleIdentifier[8]) {
522 default: break;
523 case 's': // 1 string to match.
524 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
525 break;
526 return 277; // "avgceil_s_match"
527 case 'u': // 1 string to match.
528 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
529 break;
530 return 276; // "avgceil_u_match"
531 }
532 break;
533 case 'b': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
535 break;
536 return 187; // "bitreverse_lshr"
537 case 'e': // 1 string to match.
538 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
539 break;
540 return 73; // "extending_loads"
541 case 'i': // 1 string to match.
542 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
543 break;
544 return 24; // "idempotent_prop"
545 case 'l': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
547 break;
548 return 177; // "load_or_combine"
549 case 'n': // 1 string to match.
550 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
551 break;
552 return 67; // "narrow_binop_or"
553 case 'o': // 1 string to match.
554 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
555 break;
556 return 167; // "overlapping_and"
557 case 'z': // 1 string to match.
558 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
559 break;
560 return 146; // "zext_trunc_fold"
561 }
562 break;
563 case 16: // 23 strings to match.
564 switch (RuleIdentifier[0]) {
565 default: break;
566 case 'A': // 1 string to match.
567 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
568 break;
569 return 11; // "AMinusZeroMinusB"
570 case 'G': // 3 strings to match.
571 if (memcmp(RuleIdentifier.data()+1, "_F", 2) != 0)
572 break;
573 switch (RuleIdentifier[3]) {
574 default: break;
575 case 'D': // 1 string to match.
576 if (memcmp(RuleIdentifier.data()+4, "IV_fneg_fneg", 12) != 0)
577 break;
578 return 203; // "G_FDIV_fneg_fneg"
579 case 'M': // 2 strings to match.
580 switch (RuleIdentifier[4]) {
581 default: break;
582 case 'A': // 1 string to match.
583 if (memcmp(RuleIdentifier.data()+5, "D_fneg_fneg", 11) != 0)
584 break;
585 return 204; // "G_FMAD_fneg_fneg"
586 case 'U': // 1 string to match.
587 if (memcmp(RuleIdentifier.data()+5, "L_fneg_fneg", 11) != 0)
588 break;
589 return 202; // "G_FMUL_fneg_fneg"
590 }
591 break;
592 }
593 break;
594 case 'a': // 3 strings to match.
595 switch (RuleIdentifier[1]) {
596 default: break;
597 case 'n': // 1 string to match.
598 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
599 break;
600 return 55; // "anyext_of_anyext"
601 case 'v': // 2 strings to match.
602 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
603 break;
604 switch (RuleIdentifier[9]) {
605 default: break;
606 case 's': // 1 string to match.
607 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
608 break;
609 return 275; // "avgfloor_s_match"
610 case 'u': // 1 string to match.
611 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
612 break;
613 return 274; // "avgfloor_u_match"
614 }
615 break;
616 }
617 break;
618 case 'c': // 2 strings to match.
619 switch (RuleIdentifier[1]) {
620 default: break;
621 case 'l': // 1 string to match.
622 if (memcmp(RuleIdentifier.data()+2, "amp_i64_to_i16", 14) != 0)
623 break;
624 return 280; // "clamp_i64_to_i16"
625 case 'o': // 1 string to match.
626 if (memcmp(RuleIdentifier.data()+2, "mmute_shift_or", 14) != 0)
627 break;
628 return 189; // "commute_shift_or"
629 }
630 break;
631 case 'n': // 5 strings to match.
632 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
633 break;
634 switch (RuleIdentifier[13]) {
635 default: break;
636 case 'a': // 2 strings to match.
637 switch (RuleIdentifier[14]) {
638 default: break;
639 case 'd': // 1 string to match.
640 if (RuleIdentifier[15] != 'd')
641 break;
642 return 63; // "narrow_binop_add"
643 case 'n': // 1 string to match.
644 if (RuleIdentifier[15] != 'd')
645 break;
646 return 66; // "narrow_binop_and"
647 }
648 break;
649 case 'm': // 1 string to match.
650 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
651 break;
652 return 65; // "narrow_binop_mul"
653 case 's': // 1 string to match.
654 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
655 break;
656 return 64; // "narrow_binop_sub"
657 case 'x': // 1 string to match.
658 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
659 break;
660 return 68; // "narrow_binop_xor"
661 }
662 break;
663 case 'o': // 1 string to match.
664 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
665 break;
666 return 231; // "or_and_xor_to_or"
667 case 's': // 5 strings to match.
668 switch (RuleIdentifier[1]) {
669 default: break;
670 case 'e': // 3 strings to match.
671 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
672 break;
673 switch (RuleIdentifier[7]) {
674 default: break;
675 case 'o': // 1 string to match.
676 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
677 break;
678 return 60; // "select_of_anyext"
679 case 't': // 1 string to match.
680 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
681 break;
682 return 225; // "select_to_minmax"
683 case 'u': // 1 string to match.
684 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
685 break;
686 return 130; // "select_undef_cmp"
687 }
688 break;
689 case 'u': // 2 strings to match.
690 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
691 break;
692 switch (RuleIdentifier[5]) {
693 default: break;
694 case 'f': // 1 string to match.
695 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
696 break;
697 return 271; // "sub_of_mul_const"
698 case 'n': // 1 string to match.
699 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
700 break;
701 return 268; // "sub_one_from_sub"
702 }
703 break;
704 }
705 break;
706 case 't': // 2 strings to match.
707 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
708 break;
709 switch (RuleIdentifier[12]) {
710 default: break;
711 case 's': // 1 string to match.
712 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
713 break;
714 return 49; // "truncate_of_sext"
715 case 'z': // 1 string to match.
716 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
717 break;
718 return 48; // "truncate_of_zext"
719 }
720 break;
721 case 'u': // 1 string to match.
722 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
723 break;
724 return 76; // "undef_to_fp_zero"
725 }
726 break;
727 case 17: // 20 strings to match.
728 switch (RuleIdentifier[0]) {
729 default: break;
730 case 'A': // 2 strings to match.
731 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
732 break;
733 switch (RuleIdentifier[11]) {
734 default: break;
735 case 'A': // 1 string to match.
736 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
737 break;
738 return 8; // "APlusBMinusAplusC"
739 case 'C': // 1 string to match.
740 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
741 break;
742 return 10; // "APlusBMinusCPlusA"
743 }
744 break;
745 case 'a': // 3 strings to match.
746 switch (RuleIdentifier[1]) {
747 default: break;
748 case 'd': // 1 string to match.
749 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
750 break;
751 return 22; // "add_p2i_to_ptradd"
752 case 'n': // 2 strings to match.
753 switch (RuleIdentifier[2]) {
754 default: break;
755 case 'd': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
757 break;
758 return 233; // "and_xor_or_to_and"
759 case 'y': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
761 break;
762 return 97; // "anyext_trunc_fold"
763 }
764 break;
765 }
766 break;
767 case 'c': // 5 strings to match.
768 switch (RuleIdentifier[1]) {
769 default: break;
770 case 'a': // 2 strings to match.
771 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
772 break;
773 switch (RuleIdentifier[13]) {
774 default: break;
775 case 'f': // 1 string to match.
776 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
777 break;
778 return 119; // "canonicalize_fcmp"
779 case 'i': // 1 string to match.
780 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
781 break;
782 return 118; // "canonicalize_icmp"
783 }
784 break;
785 case 'o': // 3 strings to match.
786 switch (RuleIdentifier[2]) {
787 default: break;
788 case 'm': // 2 strings to match.
789 switch (RuleIdentifier[3]) {
790 default: break;
791 case 'b': // 1 string to match.
792 if (memcmp(RuleIdentifier.data()+4, "ine_or_of_and", 13) != 0)
793 break;
794 return 278; // "combine_or_of_and"
795 case 'm': // 1 string to match.
796 if (memcmp(RuleIdentifier.data()+4, "ute_shift_add", 13) != 0)
797 break;
798 return 188; // "commute_shift_add"
799 }
800 break;
801 case 'n': // 1 string to match.
802 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
803 break;
804 return 196; // "constant_fold_fma"
805 }
806 break;
807 }
808 break;
809 case 'd': // 1 string to match.
810 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
811 break;
812 return 178; // "div_rem_to_divrem"
813 case 'e': // 1 string to match.
814 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
815 break;
816 return 86; // "erase_undef_store"
817 case 'f': // 1 string to match.
818 if (memcmp(RuleIdentifier.data()+1, "old_fabs_fptrunc", 16) != 0)
819 break;
820 return 282; // "fold_fabs_fptrunc"
821 case 'p': // 1 string to match.
822 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
823 break;
824 return 174; // "ptr_add_with_zero"
825 case 's': // 4 strings to match.
826 switch (RuleIdentifier[1]) {
827 default: break;
828 case 'e': // 2 strings to match.
829 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
830 break;
831 switch (RuleIdentifier[7]) {
832 default: break;
833 case 't': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
835 break;
836 return 134; // "select_to_iminmax"
837 case 'z': // 1 string to match.
838 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
839 break;
840 return 136; // "select_zero_false"
841 }
842 break;
843 case 'h': // 1 string to match.
844 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
845 break;
846 return 175; // "shift_immed_chain"
847 case 'r': // 1 string to match.
848 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
849 break;
850 return 216; // "srem_pow2_to_mask"
851 }
852 break;
853 case 'u': // 2 strings to match.
854 switch (RuleIdentifier[1]) {
855 default: break;
856 case 'n': // 1 string to match.
857 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
858 break;
859 return 77; // "undef_to_int_zero"
860 case 'r': // 1 string to match.
861 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
862 break;
863 return 145; // "urem_pow2_to_mask"
864 }
865 break;
866 }
867 break;
868 case 18: // 13 strings to match.
869 switch (RuleIdentifier[0]) {
870 default: break;
871 case 'A': // 3 strings to match.
872 switch (RuleIdentifier[1]) {
873 default: break;
874 case 'M': // 2 strings to match.
875 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
876 break;
877 switch (RuleIdentifier[11]) {
878 default: break;
879 case 'B': // 1 string to match.
880 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
881 break;
882 return 7; // "AMinusBPlusBMinusC"
883 case 'C': // 1 string to match.
884 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
885 break;
886 return 6; // "AMinusBPlusCMinusA"
887 }
888 break;
889 case 'P': // 1 string to match.
890 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
891 break;
892 return 0; // "APlusBMinusCMinusB"
893 }
894 break;
895 case 'b': // 1 string to match.
896 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
897 break;
898 return 93; // "binop_left_to_zero"
899 case 'c': // 4 strings to match.
900 if (RuleIdentifier[1] != 'o')
901 break;
902 switch (RuleIdentifier[2]) {
903 default: break;
904 case 'm': // 2 strings to match.
905 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
906 break;
907 switch (RuleIdentifier[8]) {
908 default: break;
909 case 'm': // 1 string to match.
910 if (memcmp(RuleIdentifier.data()+9, "inmax_nan", 9) != 0)
911 break;
912 return 171; // "combine_minmax_nan"
913 case 'o': // 1 string to match.
914 if (memcmp(RuleIdentifier.data()+9, "r_s64_s32", 9) != 0)
915 break;
916 return 290; // "combine_or_s64_s32"
917 }
918 break;
919 case 'n': // 2 strings to match.
920 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
921 break;
922 switch (RuleIdentifier[15]) {
923 default: break;
924 case 'a': // 1 string to match.
925 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
926 break;
927 return 152; // "constant_fold_fabs"
928 case 'n': // 1 string to match.
929 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
930 break;
931 return 151; // "constant_fold_fneg"
932 }
933 break;
934 }
935 break;
936 case 'e': // 1 string to match.
937 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
938 break;
939 return 172; // "expand_const_fpowi"
940 case 'f': // 1 string to match.
941 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
942 break;
943 return 107; // "fptrunc_fpext_fold"
944 case 's': // 2 strings to match.
945 if (RuleIdentifier[1] != 'e')
946 break;
947 switch (RuleIdentifier[2]) {
948 default: break;
949 case 'l': // 1 string to match.
950 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
951 break;
952 return 61; // "select_of_truncate"
953 case 'x': // 1 string to match.
954 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
955 break;
956 return 127; // "sext_inreg_of_load"
957 }
958 break;
959 case 't': // 1 string to match.
960 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
961 break;
962 return 50; // "truncate_of_anyext"
963 }
964 break;
965 case 19: // 18 strings to match.
966 switch (RuleIdentifier[0]) {
967 default: break;
968 case 'A': // 1 string to match.
969 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
970 break;
971 return 1; // "AMinusBMinusCMinusC"
972 case 'b': // 1 string to match.
973 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
974 break;
975 return 94; // "binop_right_to_zero"
976 case 'c': // 7 strings to match.
977 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
978 break;
979 switch (RuleIdentifier[5]) {
980 default: break;
981 case '_': // 1 string to match.
982 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
983 break;
984 return 166; // "const_ptradd_to_i2p"
985 case 'a': // 6 strings to match.
986 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
987 break;
988 switch (RuleIdentifier[14]) {
989 default: break;
990 case 'b': // 1 string to match.
991 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
992 break;
993 return 194; // "constant_fold_binop"
994 case 'f': // 5 strings to match.
995 switch (RuleIdentifier[15]) {
996 default: break;
997 case 'c': // 1 string to match.
998 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
999 break;
1000 return 157; // "constant_fold_fceil"
1001 case 'l': // 1 string to match.
1002 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
1003 break;
1004 return 154; // "constant_fold_flog2"
1005 case 'p': // 1 string to match.
1006 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
1007 break;
1008 return 156; // "constant_fold_fpext"
1009 case 'r': // 1 string to match.
1010 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
1011 break;
1012 return 162; // "constant_fold_frint"
1013 case 's': // 1 string to match.
1014 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
1015 break;
1016 return 153; // "constant_fold_fsqrt"
1017 }
1018 break;
1019 }
1020 break;
1021 }
1022 break;
1023 case 'e': // 1 string to match.
1024 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
1025 break;
1026 return 111; // "extend_through_phis"
1027 case 'i': // 1 string to match.
1028 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
1029 break;
1030 return 69; // "integer_of_truncate"
1031 case 'm': // 1 string to match.
1032 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
1033 break;
1034 return 254; // "merge_of_x_and_zero"
1035 case 'p': // 1 string to match.
1036 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
1037 break;
1038 return 117; // "ptr_add_immed_chain"
1039 case 'r': // 2 strings to match.
1040 switch (RuleIdentifier[1]) {
1041 default: break;
1042 case 'e': // 1 string to match.
1043 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
1044 break;
1045 return 116; // "reassoc_comm_binops"
1046 case 'i': // 1 string to match.
1047 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
1048 break;
1049 return 90; // "right_identity_zero"
1050 }
1051 break;
1052 case 's': // 2 strings to match.
1053 if (memcmp(RuleIdentifier.data()+1, "implify_", 8) != 0)
1054 break;
1055 switch (RuleIdentifier[9]) {
1056 default: break;
1057 case 'a': // 1 string to match.
1058 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
1059 break;
1060 return 112; // "simplify_add_to_sub"
1061 case 'n': // 1 string to match.
1062 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1063 break;
1064 return 237; // "simplify_neg_minmax"
1065 }
1066 break;
1067 case 'u': // 1 string to match.
1068 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1069 break;
1070 return 81; // "unary_undef_to_zero"
1071 }
1072 break;
1073 case 20: // 9 strings to match.
1074 switch (RuleIdentifier[0]) {
1075 default: break;
1076 case 'a': // 1 string to match.
1077 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1078 break;
1079 return 206; // "and_or_disjoint_mask"
1080 case 'b': // 1 string to match.
1081 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1082 break;
1083 return 105; // "bitcast_bitcast_fold"
1084 case 'c': // 1 string to match.
1085 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1086 break;
1087 return 158; // "constant_fold_ffloor"
1088 case 'm': // 1 string to match.
1089 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1090 break;
1091 return 253; // "merge_of_x_and_undef"
1092 case 'o': // 1 string to match.
1093 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1094 break;
1095 return 232; // "or_and_xor_to_xor_or"
1096 case 'r': // 2 strings to match.
1097 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1098 break;
1099 switch (RuleIdentifier[4]) {
1100 default: break;
1101 case 'c': // 1 string to match.
1102 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1103 break;
1104 return 128; // "reduce_shl_of_extend"
1105 case 'n': // 1 string to match.
1106 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1107 break;
1108 return 138; // "redundant_sext_inreg"
1109 }
1110 break;
1111 case 'u': // 2 strings to match.
1112 if (RuleIdentifier[1] != 'n')
1113 break;
1114 switch (RuleIdentifier[2]) {
1115 default: break;
1116 case 'a': // 1 string to match.
1117 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1118 break;
1119 return 82; // "unary_undef_to_undef"
1120 case 'm': // 1 string to match.
1121 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1122 break;
1123 return 252; // "unmerge_zext_to_zext"
1124 }
1125 break;
1126 }
1127 break;
1128 case 21: // 12 strings to match.
1129 switch (RuleIdentifier[0]) {
1130 default: break;
1131 case 'a': // 1 string to match.
1132 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1133 break;
1134 return 234; // "and_xor_or_to_xor_and"
1135 case 'c': // 4 strings to match.
1136 if (RuleIdentifier[1] != 'o')
1137 break;
1138 switch (RuleIdentifier[2]) {
1139 default: break;
1140 case 'm': // 2 strings to match.
1141 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1142 break;
1143 switch (RuleIdentifier[8]) {
1144 default: break;
1145 case 'b': // 1 string to match.
1146 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1147 break;
1148 return 255; // "combine_build_unmerge"
1149 case 'c': // 1 string to match.
1150 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1151 break;
1152 return 238; // "combine_concat_vector"
1153 }
1154 break;
1155 case 'n': // 2 strings to match.
1156 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1157 break;
1158 switch (RuleIdentifier[14]) {
1159 default: break;
1160 case 'c': // 1 string to match.
1161 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1162 break;
1163 return 197; // "constant_fold_cast_op"
1164 case 'f': // 1 string to match.
1165 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1166 break;
1167 return 155; // "constant_fold_fptrunc"
1168 }
1169 break;
1170 }
1171 break;
1172 case 'f': // 1 string to match.
1173 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1174 break;
1175 return 223; // "fdiv_repeated_divison"
1176 case 'i': // 1 string to match.
1177 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1178 break;
1179 return 29; // "insert_vector_elt_oob"
1180 case 'l': // 1 string to match.
1181 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1182 break;
1183 return 262; // "lshr_of_trunc_of_lshr"
1184 case 'r': // 1 string to match.
1185 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1186 break;
1187 return 100; // "right_identity_one_fp"
1188 case 's': // 1 string to match.
1189 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_equiv", 20) != 0)
1190 break;
1191 return 89; // "select_same_val_equiv"
1192 case 'u': // 2 strings to match.
1193 if (RuleIdentifier[1] != 'n')
1194 break;
1195 switch (RuleIdentifier[2]) {
1196 default: break;
1197 case 'd': // 1 string to match.
1198 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1199 break;
1200 return 78; // "undef_to_negative_one"
1201 case 'm': // 1 string to match.
1202 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1203 break;
1204 return 251; // "unmerge_dead_to_trunc"
1205 }
1206 break;
1207 }
1208 break;
1209 case 22: // 13 strings to match.
1210 switch (RuleIdentifier[0]) {
1211 default: break;
1212 case 'c': // 3 strings to match.
1213 if (RuleIdentifier[1] != 'o')
1214 break;
1215 switch (RuleIdentifier[2]) {
1216 default: break;
1217 case 'm': // 2 strings to match.
1218 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_", 13) != 0)
1219 break;
1220 switch (RuleIdentifier[16]) {
1221 default: break;
1222 case 'c': // 1 string to match.
1223 if (memcmp(RuleIdentifier.data()+17, "oncat", 5) != 0)
1224 break;
1225 return 242; // "combine_shuffle_concat"
1226 case 'v': // 1 string to match.
1227 if (memcmp(RuleIdentifier.data()+17, "ector", 5) != 0)
1228 break;
1229 return 283; // "combine_shuffle_vector"
1230 }
1231 break;
1232 case 'n': // 1 string to match.
1233 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1234 break;
1235 return 195; // "constant_fold_fp_binop"
1236 }
1237 break;
1238 case 'f': // 4 strings to match.
1239 switch (RuleIdentifier[1]) {
1240 default: break;
1241 case 'o': // 1 string to match.
1242 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1243 break;
1244 return 215; // "fold_binop_into_select"
1245 case 'u': // 3 strings to match.
1246 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1247 break;
1248 switch (RuleIdentifier[13]) {
1249 default: break;
1250 case 'l': // 1 string to match.
1251 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1252 break;
1253 return 182; // "funnel_shift_left_zero"
1254 case 'o': // 1 string to match.
1255 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1256 break;
1257 return 183; // "funnel_shift_overshift"
1258 case 't': // 1 string to match.
1259 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1260 break;
1261 return 180; // "funnel_shift_to_rotate"
1262 }
1263 break;
1264 }
1265 break;
1266 case 'i': // 1 string to match.
1267 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1268 break;
1269 return 121; // "icmp_to_lhs_known_bits"
1270 case 'm': // 1 string to match.
1271 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1272 break;
1273 return 257; // "match_subo_no_overflow"
1274 case 'p': // 1 string to match.
1275 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1276 break;
1277 return 83; // "propagate_undef_any_op"
1278 case 'r': // 1 string to match.
1279 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
1280 break;
1281 return 99; // "right_identity_one_int"
1282 case 's': // 1 string to match.
1283 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1284 break;
1285 return 125; // "shl_ashr_to_sext_inreg"
1286 case 't': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1288 break;
1289 return 103; // "trunc_buildvector_fold"
1290 }
1291 break;
1292 case 23: // 7 strings to match.
1293 switch (RuleIdentifier[0]) {
1294 default: break;
1295 case 'b': // 1 string to match.
1296 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1297 break;
1298 return 62; // "buildvector_of_truncate"
1299 case 'f': // 1 string to match.
1300 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1301 break;
1302 return 181; // "funnel_shift_right_zero"
1303 case 'i': // 2 strings to match.
1304 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1305 break;
1306 switch (RuleIdentifier[21]) {
1307 default: break;
1308 case 's': // 1 string to match.
1309 if (RuleIdentifier[22] != 'i')
1310 break;
1311 return 164; // "itof_const_zero_fold_si"
1312 case 'u': // 1 string to match.
1313 if (RuleIdentifier[22] != 'i')
1314 break;
1315 return 165; // "itof_const_zero_fold_ui"
1316 }
1317 break;
1318 case 'p': // 1 string to match.
1319 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1320 break;
1321 return 84; // "propagate_undef_all_ops"
1322 case 's': // 1 string to match.
1323 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_trivial", 22) != 0)
1324 break;
1325 return 88; // "select_same_val_trivial"
1326 case 't': // 1 string to match.
1327 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1328 break;
1329 return 261; // "truncusatu_to_fptouisat"
1330 }
1331 break;
1332 case 24: // 13 strings to match.
1333 switch (RuleIdentifier[0]) {
1334 default: break;
1335 case 'b': // 1 string to match.
1336 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1337 break;
1338 return 79; // "binop_left_undef_to_zero"
1339 case 'c': // 4 strings to match.
1340 switch (RuleIdentifier[1]) {
1341 default: break;
1342 case 'o': // 1 string to match.
1343 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1344 break;
1345 return 163; // "constant_fold_fnearbyint"
1346 case 't': // 3 strings to match.
1347 switch (RuleIdentifier[2]) {
1348 default: break;
1349 case 'l': // 2 strings to match.
1350 if (memcmp(RuleIdentifier.data()+3, "z_", 2) != 0)
1351 break;
1352 switch (RuleIdentifier[5]) {
1353 default: break;
1354 case 't': // 1 string to match.
1355 if (memcmp(RuleIdentifier.data()+6, "o_ctlz_zero_poison", 18) != 0)
1356 break;
1357 return 265; // "ctlz_to_ctlz_zero_poison"
1358 case 'z': // 1 string to match.
1359 if (memcmp(RuleIdentifier.data()+6, "ero_poison_to_ctls", 18) != 0)
1360 break;
1361 return 264; // "ctlz_zero_poison_to_ctls"
1362 }
1363 break;
1364 case 't': // 1 string to match.
1365 if (memcmp(RuleIdentifier.data()+3, "z_to_cttz_zero_poison", 21) != 0)
1366 break;
1367 return 266; // "cttz_to_cttz_zero_poison"
1368 }
1369 break;
1370 }
1371 break;
1372 case 'm': // 1 string to match.
1373 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1374 break;
1375 return 28; // "match_extract_of_element"
1376 case 'n': // 1 string to match.
1377 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1378 break;
1379 return 129; // "narrow_binop_feeding_and"
1380 case 's': // 3 strings to match.
1381 if (RuleIdentifier[1] != 'e')
1382 break;
1383 switch (RuleIdentifier[2]) {
1384 default: break;
1385 case 'l': // 1 string to match.
1386 if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp_true", 21) != 0)
1387 break;
1388 return 132; // "select_constant_cmp_true"
1389 case 'x': // 2 strings to match.
1390 if (memcmp(RuleIdentifier.data()+3, "t_inreg_", 8) != 0)
1391 break;
1392 switch (RuleIdentifier[11]) {
1393 default: break;
1394 case 'o': // 1 string to match.
1395 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1396 break;
1397 return 58; // "sext_inreg_of_sext_inreg"
1398 case 't': // 1 string to match.
1399 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1400 break;
1401 return 147; // "sext_inreg_to_zext_inreg"
1402 }
1403 break;
1404 }
1405 break;
1406 case 't': // 2 strings to match.
1407 if (memcmp(RuleIdentifier.data()+1, "runc_lshr16_unmerge_", 20) != 0)
1408 break;
1409 switch (RuleIdentifier[21]) {
1410 default: break;
1411 case 'f': // 1 string to match.
1412 if (memcmp(RuleIdentifier.data()+22, "16", 2) != 0)
1413 break;
1414 return 286; // "trunc_lshr16_unmerge_f16"
1415 case 'i': // 1 string to match.
1416 if (memcmp(RuleIdentifier.data()+22, "16", 2) != 0)
1417 break;
1418 return 285; // "trunc_lshr16_unmerge_i16"
1419 }
1420 break;
1421 case 'x': // 1 string to match.
1422 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1423 break;
1424 return 173; // "xor_of_and_with_same_reg"
1425 }
1426 break;
1427 case 25: // 11 strings to match.
1428 switch (RuleIdentifier[0]) {
1429 default: break;
1430 case 'b': // 3 strings to match.
1431 switch (RuleIdentifier[1]) {
1432 default: break;
1433 case 'i': // 2 strings to match.
1434 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1435 break;
1436 switch (RuleIdentifier[22]) {
1437 default: break;
1438 case 'a': // 1 string to match.
1439 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1440 break;
1441 return 191; // "bitfield_extract_from_and"
1442 case 's': // 1 string to match.
1443 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1444 break;
1445 return 192; // "bitfield_extract_from_shr"
1446 }
1447 break;
1448 case 'u': // 1 string to match.
1449 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1450 break;
1451 return 102; // "buildvector_identity_fold"
1452 }
1453 break;
1454 case 'c': // 1 string to match.
1455 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1456 break;
1457 return 243; // "combine_shuffle_undef_rhs"
1458 case 'e': // 1 string to match.
1459 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1460 break;
1461 return 71; // "extract_vec_elt_build_vec"
1462 case 'n': // 1 string to match.
1463 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1464 break;
1465 return 126; // "neg_and_one_to_sext_inreg"
1466 case 'r': // 3 strings to match.
1467 switch (RuleIdentifier[1]) {
1468 default: break;
1469 case 'e': // 2 strings to match.
1470 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
1471 break;
1472 switch (RuleIdentifier[10]) {
1473 default: break;
1474 case 'a': // 1 string to match.
1475 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1476 break;
1477 return 140; // "redundant_aext_sext_inreg"
1478 case 'z': // 1 string to match.
1479 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1480 break;
1481 return 139; // "redundant_zext_sext_inreg"
1482 }
1483 break;
1484 case 'i': // 1 string to match.
1485 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
1486 break;
1487 return 110; // "right_identity_neg_one_fp"
1488 }
1489 break;
1490 case 's': // 1 string to match.
1491 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_false", 24) != 0)
1492 break;
1493 return 131; // "select_constant_cmp_false"
1494 case 't': // 1 string to match.
1495 if (memcmp(RuleIdentifier.data()+1, "runc_lshr16_unmerge_bf16", 24) != 0)
1496 break;
1497 return 287; // "trunc_lshr16_unmerge_bf16"
1498 }
1499 break;
1500 case 26: // 6 strings to match.
1501 switch (RuleIdentifier[0]) {
1502 default: break;
1503 case 'b': // 2 strings to match.
1504 if (RuleIdentifier[1] != 'i')
1505 break;
1506 switch (RuleIdentifier[2]) {
1507 default: break;
1508 case 'n': // 1 string to match.
1509 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1510 break;
1511 return 80; // "binop_right_undef_to_undef"
1512 case 't': // 1 string to match.
1513 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1514 break;
1515 return 106; // "bitcast_bitcast_to_bitcast"
1516 }
1517 break;
1518 case 'c': // 2 strings to match.
1519 if (RuleIdentifier[1] != 'o')
1520 break;
1521 switch (RuleIdentifier[2]) {
1522 default: break;
1523 case 'm': // 1 string to match.
1524 if (memcmp(RuleIdentifier.data()+3, "mute_fp_constant_to_rhs", 23) != 0)
1525 break;
1526 return 228; // "commute_fp_constant_to_rhs"
1527 case 'n': // 1 string to match.
1528 if (memcmp(RuleIdentifier.data()+3, "stant_fold_unary_int_op", 23) != 0)
1529 break;
1530 return 198; // "constant_fold_unary_int_op"
1531 }
1532 break;
1533 case 'f': // 1 string to match.
1534 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1535 break;
1536 return 179; // "funnel_shift_from_or_shift"
1537 case 'r': // 1 string to match.
1538 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1539 break;
1540 return 108; // "right_identity_neg_zero_fp"
1541 }
1542 break;
1543 case 27: // 7 strings to match.
1544 switch (RuleIdentifier[0]) {
1545 default: break;
1546 case 'c': // 2 strings to match.
1547 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1548 break;
1549 switch (RuleIdentifier[3]) {
1550 default: break;
1551 case 'b': // 1 string to match.
1552 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1553 break;
1554 return 245; // "combine_use_vector_truncate"
1555 case 'm': // 1 string to match.
1556 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1557 break;
1558 return 227; // "commute_int_constant_to_rhs"
1559 }
1560 break;
1561 case 'd': // 1 string to match.
1562 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1563 break;
1564 return 123; // "double_icmp_zero_or_combine"
1565 case 'r': // 1 string to match.
1566 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1567 break;
1568 return 124; // "redundant_binop_in_equality"
1569 case 's': // 1 string to match.
1570 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general", 26) != 0)
1571 break;
1572 return 133; // "select_constant_cmp_general"
1573 case 't': // 1 string to match.
1574 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1575 break;
1576 return 104; // "trunc_lshr_buildvector_fold"
1577 case 'u': // 1 string to match.
1578 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1579 break;
1580 return 246; // "unmerge_anyext_build_vector"
1581 }
1582 break;
1583 case 28: // 6 strings to match.
1584 switch (RuleIdentifier[0]) {
1585 default: break;
1586 case 'c': // 1 string to match.
1587 if (memcmp(RuleIdentifier.data()+1, "ombine_or_s64_with_s32_mask", 27) != 0)
1588 break;
1589 return 288; // "combine_or_s64_with_s32_mask"
1590 case 'd': // 1 string to match.
1591 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1592 break;
1593 return 122; // "double_icmp_zero_and_combine"
1594 case 'e': // 1 string to match.
1595 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_undef", 27) != 0)
1596 break;
1597 return 25; // "extract_vector_element_undef"
1598 case 'o': // 1 string to match.
1599 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1600 break;
1601 return 150; // "opt_brcond_by_inverting_cond"
1602 case 'p': // 1 string to match.
1603 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1604 break;
1605 return 85; // "propagate_undef_shuffle_mask"
1606 case 's': // 1 string to match.
1607 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1608 break;
1609 return 176; // "shift_of_shifted_logic_chain"
1610 }
1611 break;
1612 case 29: // 7 strings to match.
1613 switch (RuleIdentifier[0]) {
1614 default: break;
1615 case 'b': // 1 string to match.
1616 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1617 break;
1618 return 193; // "bitfield_extract_from_shr_and"
1619 case 'c': // 5 strings to match.
1620 if (RuleIdentifier[1] != 'o')
1621 break;
1622 switch (RuleIdentifier[2]) {
1623 default: break;
1624 case 'm': // 3 strings to match.
1625 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1626 break;
1627 switch (RuleIdentifier[8]) {
1628 default: break;
1629 case 'a': // 1 string to match.
1630 if (memcmp(RuleIdentifier.data()+9, "nd_s64_with_s32_mask", 20) != 0)
1631 break;
1632 return 289; // "combine_and_s64_with_s32_mask"
1633 case 'e': // 1 string to match.
1634 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1635 break;
1636 return 75; // "combine_extracted_vector_load"
1637 case 's': // 1 string to match.
1638 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1639 break;
1640 return 244; // "combine_shuffle_disjoint_mask"
1641 }
1642 break;
1643 case 'n': // 2 strings to match.
1644 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1645 break;
1646 switch (RuleIdentifier[24]) {
1647 default: break;
1648 case 'r': // 1 string to match.
1649 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1650 break;
1651 return 160; // "constant_fold_intrinsic_round"
1652 case 't': // 1 string to match.
1653 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1654 break;
1655 return 159; // "constant_fold_intrinsic_trunc"
1656 }
1657 break;
1658 }
1659 break;
1660 case 'i': // 1 string to match.
1661 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1662 break;
1663 return 120; // "icmp_to_true_false_known_bits"
1664 }
1665 break;
1666 case 30: // 2 strings to match.
1667 switch (RuleIdentifier[0]) {
1668 default: break;
1669 case 'f': // 1 string to match.
1670 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1671 break;
1672 return 46; // "freeze_of_non_undef_non_poison"
1673 case 'r': // 1 string to match.
1674 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1675 break;
1676 return 109; // "right_identity_neg_zero_fp_nsz"
1677 }
1678 break;
1679 case 31: // 2 strings to match.
1680 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1681 break;
1682 switch (RuleIdentifier[22]) {
1683 default: break;
1684 case 'e': // 1 string to match.
1685 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1686 break;
1687 return 27; // "insert_vector_element_elt_undef"
1688 case 'i': // 1 string to match.
1689 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1690 break;
1691 return 26; // "insert_vector_element_idx_undef"
1692 }
1693 break;
1694 case 32: // 5 strings to match.
1695 switch (RuleIdentifier[0]) {
1696 default: break;
1697 case 'b': // 1 string to match.
1698 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1699 break;
1700 return 190; // "bitfield_extract_from_sext_inreg"
1701 case 'c': // 2 strings to match.
1702 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1703 break;
1704 switch (RuleIdentifier[9]) {
1705 default: break;
1706 case 'a': // 1 string to match.
1707 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1708 break;
1709 return 207; // "combine_fadd_fmul_to_fmad_or_fma"
1710 case 's': // 1 string to match.
1711 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1712 break;
1713 return 211; // "combine_fsub_fmul_to_fmad_or_fma"
1714 }
1715 break;
1716 case 'e': // 1 string to match.
1717 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1718 break;
1719 return 30; // "extract_vector_element_not_const"
1720 case 'r': // 1 string to match.
1721 if (memcmp(RuleIdentifier.data()+1, "edundant_neg_operands_fadd_fsub", 31) != 0)
1722 break;
1723 return 201; // "redundant_neg_operands_fadd_fsub"
1724 }
1725 break;
1726 case 33: // 3 strings to match.
1727 switch (RuleIdentifier[0]) {
1728 default: break;
1729 case 'c': // 1 string to match.
1730 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
1731 break;
1732 return 161; // "constant_fold_intrinsic_roundeven"
1733 case 'r': // 2 strings to match.
1734 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1735 break;
1736 switch (RuleIdentifier[10]) {
1737 default: break;
1738 case 'a': // 1 string to match.
1739 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1740 break;
1741 return 142; // "redundant_aext_unmerge_sext_inreg"
1742 case 'z': // 1 string to match.
1743 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1744 break;
1745 return 141; // "redundant_zext_unmerge_sext_inreg"
1746 }
1747 break;
1748 }
1749 break;
1750 case 34: // 2 strings to match.
1751 switch (RuleIdentifier[0]) {
1752 default: break;
1753 case 'c': // 1 string to match.
1754 if (memcmp(RuleIdentifier.data()+1, "ombine_fmul_with_select_to_fldexp", 33) != 0)
1755 break;
1756 return 279; // "combine_fmul_with_select_to_fldexp"
1757 case 'e': // 1 string to match.
1758 if (memcmp(RuleIdentifier.data()+1, "xtract_all_elts_from_build_vector", 33) != 0)
1759 break;
1760 return 72; // "extract_all_elts_from_build_vector"
1761 }
1762 break;
1763 case 35: // 1 string to match.
1764 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1765 break;
1766 return 32; // "extract_vector_element_build_vector"
1767 case 36: // 3 strings to match.
1768 switch (RuleIdentifier[0]) {
1769 default: break;
1770 case 'c': // 2 strings to match.
1771 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1772 break;
1773 switch (RuleIdentifier[8]) {
1774 default: break;
1775 case 'f': // 1 string to match.
1776 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1777 break;
1778 return 209; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1779 case 'i': // 1 string to match.
1780 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1781 break;
1782 return 70; // "combine_insert_vec_elts_build_vector"
1783 }
1784 break;
1785 case 'i': // 1 string to match.
1786 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1787 break;
1788 return 87; // "insert_extract_vec_elt_out_of_bounds"
1789 }
1790 break;
1791 case 37: // 3 strings to match.
1792 switch (RuleIdentifier[0]) {
1793 default: break;
1794 case 'c': // 1 string to match.
1795 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1796 break;
1797 return 212; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1798 case 'e': // 1 string to match.
1799 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1800 break;
1801 return 40; // "extract_vector_element_shuffle_vector"
1802 case 'h': // 1 string to match.
1803 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1804 break;
1805 return 113; // "hoist_logic_op_with_same_opcode_hands"
1806 }
1807 break;
1808 case 38: // 3 strings to match.
1809 if (memcmp(RuleIdentifier.data()+0, "combine_", 8) != 0)
1810 break;
1811 switch (RuleIdentifier[8]) {
1812 default: break;
1813 case 'f': // 2 strings to match.
1814 switch (RuleIdentifier[9]) {
1815 default: break;
1816 case 'a': // 1 string to match.
1817 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1818 break;
1819 return 208; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1820 case 's': // 1 string to match.
1821 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1822 break;
1823 return 213; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1824 }
1825 break;
1826 case 's': // 1 string to match.
1827 if (memcmp(RuleIdentifier.data()+9, "huffle_vector_to_build_vector", 29) != 0)
1828 break;
1829 return 284; // "combine_shuffle_vector_to_build_vector"
1830 }
1831 break;
1832 case 40: // 1 string to match.
1833 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1834 break;
1835 return 31; // "extract_vector_element_different_indices"
1836 case 42: // 9 strings to match.
1837 switch (RuleIdentifier[0]) {
1838 default: break;
1839 case 'c': // 1 string to match.
1840 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1841 break;
1842 return 210; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1843 case 'e': // 7 strings to match.
1844 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1845 break;
1846 switch (RuleIdentifier[41]) {
1847 default: break;
1848 case '2': // 1 string to match.
1849 return 33; // "extract_vector_element_build_vector_trunc2"
1850 case '3': // 1 string to match.
1851 return 34; // "extract_vector_element_build_vector_trunc3"
1852 case '4': // 1 string to match.
1853 return 35; // "extract_vector_element_build_vector_trunc4"
1854 case '5': // 1 string to match.
1855 return 36; // "extract_vector_element_build_vector_trunc5"
1856 case '6': // 1 string to match.
1857 return 37; // "extract_vector_element_build_vector_trunc6"
1858 case '7': // 1 string to match.
1859 return 38; // "extract_vector_element_build_vector_trunc7"
1860 case '8': // 1 string to match.
1861 return 39; // "extract_vector_element_build_vector_trunc8"
1862 }
1863 break;
1864 case 'f': // 1 string to match.
1865 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1866 break;
1867 return 184; // "funnel_shift_or_shift_to_funnel_shift_left"
1868 }
1869 break;
1870 case 43: // 2 strings to match.
1871 switch (RuleIdentifier[0]) {
1872 default: break;
1873 case 'c': // 1 string to match.
1874 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1875 break;
1876 return 214; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1877 case 'f': // 1 string to match.
1878 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1879 break;
1880 return 185; // "funnel_shift_or_shift_to_funnel_shift_right"
1881 }
1882 break;
1883 case 44: // 1 string to match.
1884 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1885 break;
1886 return 41; // "insert_vector_element_extract_vector_element"
1887 case 46: // 1 string to match.
1888 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1889 break;
1890 return 47; // "push_freeze_to_prevent_poison_from_propagating"
1891 }
1892#endif // ifndef NDEBUG
1893
1894 return std::nullopt;
1895}
1896static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1897 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1898 if (!RangePair.second.empty()) {
1899 const auto First = getRuleIdxForIdentifier(RangePair.first);
1900 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1901 if (!First || !Last)
1902 return std::nullopt;
1903 if (First >= Last)
1904 report_fatal_error("Beginning of range should be before end of range");
1905 return {{*First, *Last + 1}};
1906 }
1907 if (RangePair.first == "*") {
1908 return {{0, 291}};
1909 }
1910 const auto I = getRuleIdxForIdentifier(RangePair.first);
1911 if (!I)
1912 return std::nullopt;
1913 return {{*I, *I + 1}};
1914}
1915
1916bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1917 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1918 if (!MaybeRange)
1919 return false;
1920 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1921 DisabledRules.reset(I);
1922 return true;
1923}
1924
1925bool AMDGPUPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1926 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1927 if (!MaybeRange)
1928 return false;
1929 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1930 DisabledRules.set(I);
1931 return true;
1932}
1933
1934static std::vector<std::string> AMDGPUPreLegalizerCombinerOption;
1935static cl::list<std::string> AMDGPUPreLegalizerCombinerDisableOption(
1936 "amdgpuprelegalizercombiner-disable-rule",
1937 cl::desc("Disable one or more combiner rules temporarily in the AMDGPUPreLegalizerCombiner pass"),
1938 cl::CommaSeparated,
1939 cl::Hidden,
1940 cl::cat(GICombinerOptionCategory),
1941 cl::callback([](const std::string &Str) {
1942 AMDGPUPreLegalizerCombinerOption.push_back(Str);
1943 }));
1944static cl::list<std::string> AMDGPUPreLegalizerCombinerOnlyEnableOption(
1945 "amdgpuprelegalizercombiner-only-enable-rule",
1946 cl::desc("Disable all rules in the AMDGPUPreLegalizerCombiner pass then re-enable the specified ones"),
1947 cl::Hidden,
1948 cl::cat(GICombinerOptionCategory),
1949 cl::callback([](const std::string &CommaSeparatedArg) {
1950 StringRef Str = CommaSeparatedArg;
1951 AMDGPUPreLegalizerCombinerOption.push_back("*");
1952 do {
1953 auto X = Str.split(",");
1954 AMDGPUPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1955 Str = X.second;
1956 } while (!Str.empty());
1957 }));
1958
1959
1960bool AMDGPUPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1961 return !DisabledRules.test(RuleID);
1962}
1963bool AMDGPUPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1964 for (StringRef Identifier : AMDGPUPreLegalizerCombinerOption) {
1965 bool Enabled = Identifier.consume_front("!");
1966 if (Enabled && !setRuleEnabled(Identifier))
1967 return false;
1968 if (!Enabled && !setRuleDisabled(Identifier))
1969 return false;
1970 }
1971 return true;
1972}
1973
1974
1975#endif // GET_GICOMBINER_TYPES
1976
1977#ifdef GET_GICOMBINER_TYPES
1978
1979const unsigned MAX_SUBTARGET_PREDICATES = 0;
1980using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1981
1982#endif // GET_GICOMBINER_TYPES
1983
1984#ifdef GET_GICOMBINER_CLASS_MEMBERS
1985
1986 bool canMatchOpcode(unsigned Opc) const override;
1987 uint32_t getRootFlagsToDrop() const override;
1988
1989#endif // GET_GICOMBINER_CLASS_MEMBERS
1990
1991#ifdef GET_GICOMBINER_CLASS_MEMBERS
1992
1993PredicateBitset AvailableModuleFeatures;
1994mutable PredicateBitset AvailableFunctionFeatures;
1995PredicateBitset getAvailableFeatures() const {
1996 return AvailableModuleFeatures | AvailableFunctionFeatures;
1997}
1998PredicateBitset
1999computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const;
2000PredicateBitset
2001computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget,
2002 const MachineFunction *MF) const;
2003void setupGeneratedPerFunctionState(MachineFunction &MF) override;
2004
2005#endif // GET_GICOMBINER_CLASS_MEMBERS
2006
2007#ifdef GET_GICOMBINER_CLASS_MEMBERS
2008
2009 mutable MatcherState State;
2010 typedef ComplexRendererFns(AMDGPUPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
2011 typedef void(AMDGPUPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
2012 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
2013 static AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
2014 static AMDGPUPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
2015 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
2016 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
2017 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
2018 const uint8_t *getMatchTable() const override;
2019 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
2020 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
2021 bool testSimplePredicate(unsigned PredicateID) const override;
2022 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
2023
2024#endif // GET_GICOMBINER_CLASS_MEMBERS
2025
2026#ifdef GET_GICOMBINER_IMPL
2027
2028// LLT Objects.
2029enum {
2030 GILLT_i16,
2031 GILLT_i32,
2032 GILLT_i64,
2033 GILLT_f16,
2034 GILLT_bf16,
2035};
2036const static size_t NumTypeObjects = 5;
2037const static LLT TypeObjects[] = {
2038 LLT(LLT::Kind::INTEGER, ElementCount::getFixed(0), 16),
2039 LLT(LLT::Kind::INTEGER, ElementCount::getFixed(0), 32),
2040 LLT(LLT::Kind::INTEGER, ElementCount::getFixed(0), 64),
2041 LLT(LLT::Kind::FLOAT, ElementCount::getFixed(0), 16, LLT::FpSemantics::S_IEEEhalf),
2042 LLT(LLT::Kind::FLOAT, ElementCount::getFixed(0), 16, LLT::FpSemantics::S_BFloat),
2043};
2044
2045// Bits for subtarget features that participate in instruction matching.
2046enum SubtargetFeatureBits : uint8_t {
2047};
2048
2049PredicateBitset AMDGPUPreLegalizerCombinerImpl::
2050computeAvailableModuleFeatures(const AMDGPUSubtarget *Subtarget) const {
2051 PredicateBitset Features{};
2052 return Features;
2053}
2054
2055void AMDGPUPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
2056 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AMDGPUSubtarget *)&MF.getSubtarget(), &MF);
2057}
2058PredicateBitset AMDGPUPreLegalizerCombinerImpl::
2059computeAvailableFunctionFeatures(const AMDGPUSubtarget *Subtarget, const MachineFunction *MF) const {
2060 PredicateBitset Features{};
2061 return Features;
2062}
2063
2064// Feature bitsets.
2065enum {
2066 GIFBS_Invalid,
2067};
2068constexpr static PredicateBitset FeatureBitsets[] {
2069 {}, // GIFBS_Invalid
2070};
2071
2072// ComplexPattern predicates.
2073enum {
2074 GICP_Invalid,
2075};
2076// See constructor for table contents
2077
2078AMDGPUPreLegalizerCombinerImpl::ComplexMatcherMemFn
2079AMDGPUPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
2080 nullptr, // GICP_Invalid
2081};
2082
2083enum {
2084 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
2085 GICXXPred_MI_Predicate_GICombiner1,
2086 GICXXPred_MI_Predicate_GICombiner2,
2087 GICXXPred_MI_Predicate_GICombiner3,
2088 GICXXPred_MI_Predicate_GICombiner4,
2089 GICXXPred_MI_Predicate_GICombiner5,
2090 GICXXPred_MI_Predicate_GICombiner6,
2091 GICXXPred_MI_Predicate_GICombiner7,
2092 GICXXPred_MI_Predicate_GICombiner8,
2093 GICXXPred_MI_Predicate_GICombiner9,
2094 GICXXPred_MI_Predicate_GICombiner10,
2095 GICXXPred_MI_Predicate_GICombiner11,
2096 GICXXPred_MI_Predicate_GICombiner12,
2097 GICXXPred_MI_Predicate_GICombiner13,
2098 GICXXPred_MI_Predicate_GICombiner14,
2099 GICXXPred_MI_Predicate_GICombiner15,
2100 GICXXPred_MI_Predicate_GICombiner16,
2101 GICXXPred_MI_Predicate_GICombiner17,
2102 GICXXPred_MI_Predicate_GICombiner18,
2103 GICXXPred_MI_Predicate_GICombiner19,
2104 GICXXPred_MI_Predicate_GICombiner20,
2105 GICXXPred_MI_Predicate_GICombiner21,
2106 GICXXPred_MI_Predicate_GICombiner22,
2107 GICXXPred_MI_Predicate_GICombiner23,
2108 GICXXPred_MI_Predicate_GICombiner24,
2109 GICXXPred_MI_Predicate_GICombiner25,
2110 GICXXPred_MI_Predicate_GICombiner26,
2111 GICXXPred_MI_Predicate_GICombiner27,
2112 GICXXPred_MI_Predicate_GICombiner28,
2113 GICXXPred_MI_Predicate_GICombiner29,
2114 GICXXPred_MI_Predicate_GICombiner30,
2115 GICXXPred_MI_Predicate_GICombiner31,
2116 GICXXPred_MI_Predicate_GICombiner32,
2117 GICXXPred_MI_Predicate_GICombiner33,
2118};
2119bool AMDGPUPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
2120 switch (PredicateID) {
2121 case GICXXPred_MI_Predicate_GICombiner0: {
2122 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2123 }
2124 case GICXXPred_MI_Predicate_GICombiner1: {
2125 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
2126 }
2127 case GICXXPred_MI_Predicate_GICombiner2: {
2128 return MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarSizeInBits() ==
2129 MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2130 }
2131 case GICXXPred_MI_Predicate_GICombiner3: {
2132 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2133 }
2134 case GICXXPred_MI_Predicate_GICombiner4: {
2135 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2136 }
2137 case GICXXPred_MI_Predicate_GICombiner5: {
2138 return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
2139 }
2140 case GICXXPred_MI_Predicate_GICombiner6: {
2141 return Helper.matchSelectSameVal(*State.MIs[0]);
2142 }
2143 case GICXXPred_MI_Predicate_GICombiner7: {
2144 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
2145 }
2146 case GICXXPred_MI_Predicate_GICombiner8: {
2147 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
2148 }
2149 case GICXXPred_MI_Predicate_GICombiner9: {
2150 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
2151 }
2152 case GICXXPred_MI_Predicate_GICombiner10: {
2153 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
2154 }
2155 case GICXXPred_MI_Predicate_GICombiner11: {
2156 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
2157 }
2158 case GICXXPred_MI_Predicate_GICombiner12: {
2159 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
2160 }
2161 case GICXXPred_MI_Predicate_GICombiner13: {
2162 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
2163 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2164 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2165 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2166 }
2167 case GICXXPred_MI_Predicate_GICombiner14: {
2168 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
2169 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2170 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2171 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2172 }
2173 case GICXXPred_MI_Predicate_GICombiner15: {
2174 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2175 Helper.isLegalOrBeforeLegalizer({
2176 TargetOpcode::G_SEXT_INREG,
2177 {MRI.getType(State.MIs[1]->getOperand(1).getReg())},
2178 {},
2179 {1}
2180 });
2181 }
2182 case GICXXPred_MI_Predicate_GICombiner16: {
2183 return !isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI) &&
2184 MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
2185 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2186 }
2187 case GICXXPred_MI_Predicate_GICombiner17: {
2188 return Helper.matchRedundantSExtInReg(*State.MIs[0]);
2189 }
2190 case GICXXPred_MI_Predicate_GICombiner18: {
2191 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
2192 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2193 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
2194 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
2195 llvm_unreachable("GICombiner18 should have returned");
2196 }
2197 case GICXXPred_MI_Predicate_GICombiner19: {
2198 return Helper.matchPtrAddZero(*State.MIs[0]);
2199 }
2200 case GICXXPred_MI_Predicate_GICombiner20: {
2201 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
2202 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2203 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2204 }
2205 case GICXXPred_MI_Predicate_GICombiner21: {
2206 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
2207 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2208 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2209 }
2210 case GICXXPred_MI_Predicate_GICombiner22: {
2211 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2212 isConstantOrConstantSplatVector(State.MIs[1]->getOperand(2).getReg(), MRI) &&
2213 isConstantOrConstantSplatVector(State.MIs[0]->getOperand(2).getReg(), MRI) &&
2214 Helper.isDesirableToCommuteWithShift(*State.MIs[0]);
2215 }
2216 case GICXXPred_MI_Predicate_GICombiner23: {
2217 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
2218 }
2219 case GICXXPred_MI_Predicate_GICombiner24: {
2220 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
2221 }
2222 case GICXXPred_MI_Predicate_GICombiner25: {
2223 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2224 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2225 }
2226 case GICXXPred_MI_Predicate_GICombiner26: {
2227 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2228 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2229 }
2230 case GICXXPred_MI_Predicate_GICombiner27: {
2231 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
2232 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2233 }
2234 case GICXXPred_MI_Predicate_GICombiner28: {
2235 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_UAVGFLOOR);
2236 }
2237 case GICXXPred_MI_Predicate_GICombiner29: {
2238 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_SAVGFLOOR);
2239 }
2240 case GICXXPred_MI_Predicate_GICombiner30: {
2241 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_UAVGCEIL);
2242 }
2243 case GICXXPred_MI_Predicate_GICombiner31: {
2244 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_SAVGCEIL);
2245 }
2246 case GICXXPred_MI_Predicate_GICombiner32: {
2247 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2248 Helper.isLegalOrBeforeLegalizer(
2249 {TargetOpcode::G_UNMERGE_VALUES,
2250 {LLT::integer(16), LLT::integer(32)}});
2251 }
2252 case GICXXPred_MI_Predicate_GICombiner33: {
2253 return Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(1).getReg()) ||
2254 Helper.matchConstantIs32BitMask(State.MIs[0]->getOperand(2).getReg());
2255 }
2256 }
2257 llvm_unreachable("Unknown predicate");
2258 return false;
2259}
2260bool AMDGPUPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
2261 llvm_unreachable("Unknown predicate");
2262 return false;
2263}
2264bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
2265 llvm_unreachable("Unknown predicate");
2266 return false;
2267}
2268bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2269 llvm_unreachable("Unknown predicate");
2270 return false;
2271}
2272bool AMDGPUPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2273 llvm_unreachable("Unknown predicate");
2274 return false;
2275}
2276enum {
2277 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2278 GICXXPred_Simple_IsRule1Enabled,
2279 GICXXPred_Simple_IsRule2Enabled,
2280 GICXXPred_Simple_IsRule3Enabled,
2281 GICXXPred_Simple_IsRule4Enabled,
2282 GICXXPred_Simple_IsRule5Enabled,
2283 GICXXPred_Simple_IsRule6Enabled,
2284 GICXXPred_Simple_IsRule7Enabled,
2285 GICXXPred_Simple_IsRule8Enabled,
2286 GICXXPred_Simple_IsRule9Enabled,
2287 GICXXPred_Simple_IsRule10Enabled,
2288 GICXXPred_Simple_IsRule11Enabled,
2289 GICXXPred_Simple_IsRule12Enabled,
2290 GICXXPred_Simple_IsRule13Enabled,
2291 GICXXPred_Simple_IsRule14Enabled,
2292 GICXXPred_Simple_IsRule15Enabled,
2293 GICXXPred_Simple_IsRule16Enabled,
2294 GICXXPred_Simple_IsRule17Enabled,
2295 GICXXPred_Simple_IsRule18Enabled,
2296 GICXXPred_Simple_IsRule19Enabled,
2297 GICXXPred_Simple_IsRule20Enabled,
2298 GICXXPred_Simple_IsRule21Enabled,
2299 GICXXPred_Simple_IsRule22Enabled,
2300 GICXXPred_Simple_IsRule23Enabled,
2301 GICXXPred_Simple_IsRule24Enabled,
2302 GICXXPred_Simple_IsRule25Enabled,
2303 GICXXPred_Simple_IsRule26Enabled,
2304 GICXXPred_Simple_IsRule27Enabled,
2305 GICXXPred_Simple_IsRule28Enabled,
2306 GICXXPred_Simple_IsRule29Enabled,
2307 GICXXPred_Simple_IsRule30Enabled,
2308 GICXXPred_Simple_IsRule31Enabled,
2309 GICXXPred_Simple_IsRule32Enabled,
2310 GICXXPred_Simple_IsRule33Enabled,
2311 GICXXPred_Simple_IsRule34Enabled,
2312 GICXXPred_Simple_IsRule35Enabled,
2313 GICXXPred_Simple_IsRule36Enabled,
2314 GICXXPred_Simple_IsRule37Enabled,
2315 GICXXPred_Simple_IsRule38Enabled,
2316 GICXXPred_Simple_IsRule39Enabled,
2317 GICXXPred_Simple_IsRule40Enabled,
2318 GICXXPred_Simple_IsRule41Enabled,
2319 GICXXPred_Simple_IsRule42Enabled,
2320 GICXXPred_Simple_IsRule43Enabled,
2321 GICXXPred_Simple_IsRule44Enabled,
2322 GICXXPred_Simple_IsRule45Enabled,
2323 GICXXPred_Simple_IsRule46Enabled,
2324 GICXXPred_Simple_IsRule47Enabled,
2325 GICXXPred_Simple_IsRule48Enabled,
2326 GICXXPred_Simple_IsRule49Enabled,
2327 GICXXPred_Simple_IsRule50Enabled,
2328 GICXXPred_Simple_IsRule51Enabled,
2329 GICXXPred_Simple_IsRule52Enabled,
2330 GICXXPred_Simple_IsRule53Enabled,
2331 GICXXPred_Simple_IsRule54Enabled,
2332 GICXXPred_Simple_IsRule55Enabled,
2333 GICXXPred_Simple_IsRule56Enabled,
2334 GICXXPred_Simple_IsRule57Enabled,
2335 GICXXPred_Simple_IsRule58Enabled,
2336 GICXXPred_Simple_IsRule59Enabled,
2337 GICXXPred_Simple_IsRule60Enabled,
2338 GICXXPred_Simple_IsRule61Enabled,
2339 GICXXPred_Simple_IsRule62Enabled,
2340 GICXXPred_Simple_IsRule63Enabled,
2341 GICXXPred_Simple_IsRule64Enabled,
2342 GICXXPred_Simple_IsRule65Enabled,
2343 GICXXPred_Simple_IsRule66Enabled,
2344 GICXXPred_Simple_IsRule67Enabled,
2345 GICXXPred_Simple_IsRule68Enabled,
2346 GICXXPred_Simple_IsRule69Enabled,
2347 GICXXPred_Simple_IsRule70Enabled,
2348 GICXXPred_Simple_IsRule71Enabled,
2349 GICXXPred_Simple_IsRule72Enabled,
2350 GICXXPred_Simple_IsRule73Enabled,
2351 GICXXPred_Simple_IsRule74Enabled,
2352 GICXXPred_Simple_IsRule75Enabled,
2353 GICXXPred_Simple_IsRule76Enabled,
2354 GICXXPred_Simple_IsRule77Enabled,
2355 GICXXPred_Simple_IsRule78Enabled,
2356 GICXXPred_Simple_IsRule79Enabled,
2357 GICXXPred_Simple_IsRule80Enabled,
2358 GICXXPred_Simple_IsRule81Enabled,
2359 GICXXPred_Simple_IsRule82Enabled,
2360 GICXXPred_Simple_IsRule83Enabled,
2361 GICXXPred_Simple_IsRule84Enabled,
2362 GICXXPred_Simple_IsRule85Enabled,
2363 GICXXPred_Simple_IsRule86Enabled,
2364 GICXXPred_Simple_IsRule87Enabled,
2365 GICXXPred_Simple_IsRule88Enabled,
2366 GICXXPred_Simple_IsRule89Enabled,
2367 GICXXPred_Simple_IsRule90Enabled,
2368 GICXXPred_Simple_IsRule91Enabled,
2369 GICXXPred_Simple_IsRule92Enabled,
2370 GICXXPred_Simple_IsRule93Enabled,
2371 GICXXPred_Simple_IsRule94Enabled,
2372 GICXXPred_Simple_IsRule95Enabled,
2373 GICXXPred_Simple_IsRule96Enabled,
2374 GICXXPred_Simple_IsRule97Enabled,
2375 GICXXPred_Simple_IsRule98Enabled,
2376 GICXXPred_Simple_IsRule99Enabled,
2377 GICXXPred_Simple_IsRule100Enabled,
2378 GICXXPred_Simple_IsRule101Enabled,
2379 GICXXPred_Simple_IsRule102Enabled,
2380 GICXXPred_Simple_IsRule103Enabled,
2381 GICXXPred_Simple_IsRule104Enabled,
2382 GICXXPred_Simple_IsRule105Enabled,
2383 GICXXPred_Simple_IsRule106Enabled,
2384 GICXXPred_Simple_IsRule107Enabled,
2385 GICXXPred_Simple_IsRule108Enabled,
2386 GICXXPred_Simple_IsRule109Enabled,
2387 GICXXPred_Simple_IsRule110Enabled,
2388 GICXXPred_Simple_IsRule111Enabled,
2389 GICXXPred_Simple_IsRule112Enabled,
2390 GICXXPred_Simple_IsRule113Enabled,
2391 GICXXPred_Simple_IsRule114Enabled,
2392 GICXXPred_Simple_IsRule115Enabled,
2393 GICXXPred_Simple_IsRule116Enabled,
2394 GICXXPred_Simple_IsRule117Enabled,
2395 GICXXPred_Simple_IsRule118Enabled,
2396 GICXXPred_Simple_IsRule119Enabled,
2397 GICXXPred_Simple_IsRule120Enabled,
2398 GICXXPred_Simple_IsRule121Enabled,
2399 GICXXPred_Simple_IsRule122Enabled,
2400 GICXXPred_Simple_IsRule123Enabled,
2401 GICXXPred_Simple_IsRule124Enabled,
2402 GICXXPred_Simple_IsRule125Enabled,
2403 GICXXPred_Simple_IsRule126Enabled,
2404 GICXXPred_Simple_IsRule127Enabled,
2405 GICXXPred_Simple_IsRule128Enabled,
2406 GICXXPred_Simple_IsRule129Enabled,
2407 GICXXPred_Simple_IsRule130Enabled,
2408 GICXXPred_Simple_IsRule131Enabled,
2409 GICXXPred_Simple_IsRule132Enabled,
2410 GICXXPred_Simple_IsRule133Enabled,
2411 GICXXPred_Simple_IsRule134Enabled,
2412 GICXXPred_Simple_IsRule135Enabled,
2413 GICXXPred_Simple_IsRule136Enabled,
2414 GICXXPred_Simple_IsRule137Enabled,
2415 GICXXPred_Simple_IsRule138Enabled,
2416 GICXXPred_Simple_IsRule139Enabled,
2417 GICXXPred_Simple_IsRule140Enabled,
2418 GICXXPred_Simple_IsRule141Enabled,
2419 GICXXPred_Simple_IsRule142Enabled,
2420 GICXXPred_Simple_IsRule143Enabled,
2421 GICXXPred_Simple_IsRule144Enabled,
2422 GICXXPred_Simple_IsRule145Enabled,
2423 GICXXPred_Simple_IsRule146Enabled,
2424 GICXXPred_Simple_IsRule147Enabled,
2425 GICXXPred_Simple_IsRule148Enabled,
2426 GICXXPred_Simple_IsRule149Enabled,
2427 GICXXPred_Simple_IsRule150Enabled,
2428 GICXXPred_Simple_IsRule151Enabled,
2429 GICXXPred_Simple_IsRule152Enabled,
2430 GICXXPred_Simple_IsRule153Enabled,
2431 GICXXPred_Simple_IsRule154Enabled,
2432 GICXXPred_Simple_IsRule155Enabled,
2433 GICXXPred_Simple_IsRule156Enabled,
2434 GICXXPred_Simple_IsRule157Enabled,
2435 GICXXPred_Simple_IsRule158Enabled,
2436 GICXXPred_Simple_IsRule159Enabled,
2437 GICXXPred_Simple_IsRule160Enabled,
2438 GICXXPred_Simple_IsRule161Enabled,
2439 GICXXPred_Simple_IsRule162Enabled,
2440 GICXXPred_Simple_IsRule163Enabled,
2441 GICXXPred_Simple_IsRule164Enabled,
2442 GICXXPred_Simple_IsRule165Enabled,
2443 GICXXPred_Simple_IsRule166Enabled,
2444 GICXXPred_Simple_IsRule167Enabled,
2445 GICXXPred_Simple_IsRule168Enabled,
2446 GICXXPred_Simple_IsRule169Enabled,
2447 GICXXPred_Simple_IsRule170Enabled,
2448 GICXXPred_Simple_IsRule171Enabled,
2449 GICXXPred_Simple_IsRule172Enabled,
2450 GICXXPred_Simple_IsRule173Enabled,
2451 GICXXPred_Simple_IsRule174Enabled,
2452 GICXXPred_Simple_IsRule175Enabled,
2453 GICXXPred_Simple_IsRule176Enabled,
2454 GICXXPred_Simple_IsRule177Enabled,
2455 GICXXPred_Simple_IsRule178Enabled,
2456 GICXXPred_Simple_IsRule179Enabled,
2457 GICXXPred_Simple_IsRule180Enabled,
2458 GICXXPred_Simple_IsRule181Enabled,
2459 GICXXPred_Simple_IsRule182Enabled,
2460 GICXXPred_Simple_IsRule183Enabled,
2461 GICXXPred_Simple_IsRule184Enabled,
2462 GICXXPred_Simple_IsRule185Enabled,
2463 GICXXPred_Simple_IsRule186Enabled,
2464 GICXXPred_Simple_IsRule187Enabled,
2465 GICXXPred_Simple_IsRule188Enabled,
2466 GICXXPred_Simple_IsRule189Enabled,
2467 GICXXPred_Simple_IsRule190Enabled,
2468 GICXXPred_Simple_IsRule191Enabled,
2469 GICXXPred_Simple_IsRule192Enabled,
2470 GICXXPred_Simple_IsRule193Enabled,
2471 GICXXPred_Simple_IsRule194Enabled,
2472 GICXXPred_Simple_IsRule195Enabled,
2473 GICXXPred_Simple_IsRule196Enabled,
2474 GICXXPred_Simple_IsRule197Enabled,
2475 GICXXPred_Simple_IsRule198Enabled,
2476 GICXXPred_Simple_IsRule199Enabled,
2477 GICXXPred_Simple_IsRule200Enabled,
2478 GICXXPred_Simple_IsRule201Enabled,
2479 GICXXPred_Simple_IsRule202Enabled,
2480 GICXXPred_Simple_IsRule203Enabled,
2481 GICXXPred_Simple_IsRule204Enabled,
2482 GICXXPred_Simple_IsRule205Enabled,
2483 GICXXPred_Simple_IsRule206Enabled,
2484 GICXXPred_Simple_IsRule207Enabled,
2485 GICXXPred_Simple_IsRule208Enabled,
2486 GICXXPred_Simple_IsRule209Enabled,
2487 GICXXPred_Simple_IsRule210Enabled,
2488 GICXXPred_Simple_IsRule211Enabled,
2489 GICXXPred_Simple_IsRule212Enabled,
2490 GICXXPred_Simple_IsRule213Enabled,
2491 GICXXPred_Simple_IsRule214Enabled,
2492 GICXXPred_Simple_IsRule215Enabled,
2493 GICXXPred_Simple_IsRule216Enabled,
2494 GICXXPred_Simple_IsRule217Enabled,
2495 GICXXPred_Simple_IsRule218Enabled,
2496 GICXXPred_Simple_IsRule219Enabled,
2497 GICXXPred_Simple_IsRule220Enabled,
2498 GICXXPred_Simple_IsRule221Enabled,
2499 GICXXPred_Simple_IsRule222Enabled,
2500 GICXXPred_Simple_IsRule223Enabled,
2501 GICXXPred_Simple_IsRule224Enabled,
2502 GICXXPred_Simple_IsRule225Enabled,
2503 GICXXPred_Simple_IsRule226Enabled,
2504 GICXXPred_Simple_IsRule227Enabled,
2505 GICXXPred_Simple_IsRule228Enabled,
2506 GICXXPred_Simple_IsRule229Enabled,
2507 GICXXPred_Simple_IsRule230Enabled,
2508 GICXXPred_Simple_IsRule231Enabled,
2509 GICXXPred_Simple_IsRule232Enabled,
2510 GICXXPred_Simple_IsRule233Enabled,
2511 GICXXPred_Simple_IsRule234Enabled,
2512 GICXXPred_Simple_IsRule235Enabled,
2513 GICXXPred_Simple_IsRule236Enabled,
2514 GICXXPred_Simple_IsRule237Enabled,
2515 GICXXPred_Simple_IsRule238Enabled,
2516 GICXXPred_Simple_IsRule239Enabled,
2517 GICXXPred_Simple_IsRule240Enabled,
2518 GICXXPred_Simple_IsRule241Enabled,
2519 GICXXPred_Simple_IsRule242Enabled,
2520 GICXXPred_Simple_IsRule243Enabled,
2521 GICXXPred_Simple_IsRule244Enabled,
2522 GICXXPred_Simple_IsRule245Enabled,
2523 GICXXPred_Simple_IsRule246Enabled,
2524 GICXXPred_Simple_IsRule247Enabled,
2525 GICXXPred_Simple_IsRule248Enabled,
2526 GICXXPred_Simple_IsRule249Enabled,
2527 GICXXPred_Simple_IsRule250Enabled,
2528 GICXXPred_Simple_IsRule251Enabled,
2529 GICXXPred_Simple_IsRule252Enabled,
2530 GICXXPred_Simple_IsRule253Enabled,
2531 GICXXPred_Simple_IsRule254Enabled,
2532 GICXXPred_Simple_IsRule255Enabled,
2533 GICXXPred_Simple_IsRule256Enabled,
2534 GICXXPred_Simple_IsRule257Enabled,
2535 GICXXPred_Simple_IsRule258Enabled,
2536 GICXXPred_Simple_IsRule259Enabled,
2537 GICXXPred_Simple_IsRule260Enabled,
2538 GICXXPred_Simple_IsRule261Enabled,
2539 GICXXPred_Simple_IsRule262Enabled,
2540 GICXXPred_Simple_IsRule263Enabled,
2541 GICXXPred_Simple_IsRule264Enabled,
2542 GICXXPred_Simple_IsRule265Enabled,
2543 GICXXPred_Simple_IsRule266Enabled,
2544 GICXXPred_Simple_IsRule267Enabled,
2545 GICXXPred_Simple_IsRule268Enabled,
2546 GICXXPred_Simple_IsRule269Enabled,
2547 GICXXPred_Simple_IsRule270Enabled,
2548 GICXXPred_Simple_IsRule271Enabled,
2549 GICXXPred_Simple_IsRule272Enabled,
2550 GICXXPred_Simple_IsRule273Enabled,
2551 GICXXPred_Simple_IsRule274Enabled,
2552 GICXXPred_Simple_IsRule275Enabled,
2553 GICXXPred_Simple_IsRule276Enabled,
2554 GICXXPred_Simple_IsRule277Enabled,
2555 GICXXPred_Simple_IsRule278Enabled,
2556 GICXXPred_Simple_IsRule279Enabled,
2557 GICXXPred_Simple_IsRule280Enabled,
2558 GICXXPred_Simple_IsRule281Enabled,
2559 GICXXPred_Simple_IsRule282Enabled,
2560 GICXXPred_Simple_IsRule283Enabled,
2561 GICXXPred_Simple_IsRule284Enabled,
2562 GICXXPred_Simple_IsRule285Enabled,
2563 GICXXPred_Simple_IsRule286Enabled,
2564 GICXXPred_Simple_IsRule287Enabled,
2565 GICXXPred_Simple_IsRule288Enabled,
2566 GICXXPred_Simple_IsRule289Enabled,
2567 GICXXPred_Simple_IsRule290Enabled,
2568};
2569
2570bool AMDGPUPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2571 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2572}
2573// Custom renderers.
2574enum {
2575 GICR_Invalid,
2576};
2577AMDGPUPreLegalizerCombinerImpl::CustomRendererFn
2578AMDGPUPreLegalizerCombinerImpl::CustomRenderers[] = {
2579 nullptr, // GICR_Invalid
2580};
2581
2582bool AMDGPUPreLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
2583 switch (Opc) {
2584 case TargetOpcode::G_FCMP:
2585 case TargetOpcode::G_FMA:
2586 case TargetOpcode::G_FMAD:
2587 case TargetOpcode::G_FSHL:
2588 case TargetOpcode::G_FSHR:
2589 case TargetOpcode::G_ICMP:
2590 case TargetOpcode::G_INSERT_VECTOR_ELT:
2591 case TargetOpcode::G_SELECT:
2592 case TargetOpcode::G_SHUFFLE_VECTOR:
2593 case TargetOpcode::G_ADD:
2594 case TargetOpcode::G_AND:
2595 case TargetOpcode::G_ASHR:
2596 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
2597 case TargetOpcode::G_FADD:
2598 case TargetOpcode::G_FCOPYSIGN:
2599 case TargetOpcode::G_FDIV:
2600 case TargetOpcode::G_FMAXIMUM:
2601 case TargetOpcode::G_FMAXIMUMNUM:
2602 case TargetOpcode::G_FMAXNUM:
2603 case TargetOpcode::G_FMINIMUM:
2604 case TargetOpcode::G_FMINIMUMNUM:
2605 case TargetOpcode::G_FMINNUM:
2606 case TargetOpcode::G_FMUL:
2607 case TargetOpcode::G_FPOWI:
2608 case TargetOpcode::G_FREM:
2609 case TargetOpcode::G_FSUB:
2610 case TargetOpcode::G_LSHR:
2611 case TargetOpcode::G_MERGE_VALUES:
2612 case TargetOpcode::G_MUL:
2613 case TargetOpcode::G_OR:
2614 case TargetOpcode::G_PTR_ADD:
2615 case TargetOpcode::G_ROTL:
2616 case TargetOpcode::G_ROTR:
2617 case TargetOpcode::G_SDIV:
2618 case TargetOpcode::G_SEXT_INREG:
2619 case TargetOpcode::G_SHL:
2620 case TargetOpcode::G_SREM:
2621 case TargetOpcode::G_SUB:
2622 case TargetOpcode::G_UDIV:
2623 case TargetOpcode::G_UMULH:
2624 case TargetOpcode::G_UREM:
2625 case TargetOpcode::G_XOR:
2626 case TargetOpcode::COPY:
2627 case TargetOpcode::G_ABS:
2628 case TargetOpcode::G_ANYEXT:
2629 case TargetOpcode::G_BITCAST:
2630 case TargetOpcode::G_BITREVERSE:
2631 case TargetOpcode::G_BSWAP:
2632 case TargetOpcode::G_BUILD_VECTOR:
2633 case TargetOpcode::G_CONCAT_VECTORS:
2634 case TargetOpcode::G_CTLZ:
2635 case TargetOpcode::G_CTLZ_ZERO_POISON:
2636 case TargetOpcode::G_CTPOP:
2637 case TargetOpcode::G_CTTZ:
2638 case TargetOpcode::G_CTTZ_ZERO_POISON:
2639 case TargetOpcode::G_FABS:
2640 case TargetOpcode::G_FCANONICALIZE:
2641 case TargetOpcode::G_FCEIL:
2642 case TargetOpcode::G_FFLOOR:
2643 case TargetOpcode::G_FLOG2:
2644 case TargetOpcode::G_FNEARBYINT:
2645 case TargetOpcode::G_FNEG:
2646 case TargetOpcode::G_FPEXT:
2647 case TargetOpcode::G_FPTOSI:
2648 case TargetOpcode::G_FPTOUI:
2649 case TargetOpcode::G_FPTRUNC:
2650 case TargetOpcode::G_FREEZE:
2651 case TargetOpcode::G_FRINT:
2652 case TargetOpcode::G_FSQRT:
2653 case TargetOpcode::G_INTRINSIC_ROUND:
2654 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
2655 case TargetOpcode::G_INTRINSIC_TRUNC:
2656 case TargetOpcode::G_INTTOPTR:
2657 case TargetOpcode::G_PHI:
2658 case TargetOpcode::G_PTRTOINT:
2659 case TargetOpcode::G_SEXT:
2660 case TargetOpcode::G_SITOFP:
2661 case TargetOpcode::G_TRUNC:
2662 case TargetOpcode::G_TRUNC_USAT_U:
2663 case TargetOpcode::G_UITOFP:
2664 case TargetOpcode::G_ZEXT:
2665 case TargetOpcode::G_BR:
2666 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
2667 case TargetOpcode::G_FMAXNUM_IEEE:
2668 case TargetOpcode::G_FMINNUM_IEEE:
2669 case TargetOpcode::G_LOAD:
2670 case TargetOpcode::G_SADDE:
2671 case TargetOpcode::G_SADDO:
2672 case TargetOpcode::G_SADDSAT:
2673 case TargetOpcode::G_SEXTLOAD:
2674 case TargetOpcode::G_SMAX:
2675 case TargetOpcode::G_SMIN:
2676 case TargetOpcode::G_SMULFIX:
2677 case TargetOpcode::G_SMULFIXSAT:
2678 case TargetOpcode::G_SMULH:
2679 case TargetOpcode::G_SMULO:
2680 case TargetOpcode::G_SSHLSAT:
2681 case TargetOpcode::G_SSUBE:
2682 case TargetOpcode::G_SSUBO:
2683 case TargetOpcode::G_STORE:
2684 case TargetOpcode::G_UADDE:
2685 case TargetOpcode::G_UADDO:
2686 case TargetOpcode::G_UADDSAT:
2687 case TargetOpcode::G_UMAX:
2688 case TargetOpcode::G_UMIN:
2689 case TargetOpcode::G_UMULFIX:
2690 case TargetOpcode::G_UMULFIXSAT:
2691 case TargetOpcode::G_UMULO:
2692 case TargetOpcode::G_UNMERGE_VALUES:
2693 case TargetOpcode::G_USHLSAT:
2694 case TargetOpcode::G_USUBE:
2695 case TargetOpcode::G_USUBO:
2696 case TargetOpcode::G_ZEXTLOAD:
2697 return true;
2698 default:
2699 return false;
2700 }
2701}
2702
2703uint32_t AMDGPUPreLegalizerCombinerImpl::getRootFlagsToDrop() const {
2704 return MachineInstr::getPoisonGeneratingFlags();
2705}
2706
2707bool AMDGPUPreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2708 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2709 State.MIs.clear();
2710 State.MIs.push_back(&I);
2711 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2712 return true;
2713 }
2714
2715 return false;
2716}
2717
2718enum {
2719 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2720 GICXXCustomAction_GICombiner1,
2721 GICXXCustomAction_GICombiner2,
2722 GICXXCustomAction_GICombiner3,
2723 GICXXCustomAction_GICombiner4,
2724 GICXXCustomAction_GICombiner5,
2725 GICXXCustomAction_GICombiner6,
2726 GICXXCustomAction_GICombiner7,
2727 GICXXCustomAction_GICombiner8,
2728 GICXXCustomAction_GICombiner9,
2729 GICXXCustomAction_GICombiner10,
2730 GICXXCustomAction_GICombiner11,
2731 GICXXCustomAction_GICombiner12,
2732 GICXXCustomAction_GICombiner13,
2733 GICXXCustomAction_GICombiner14,
2734 GICXXCustomAction_GICombiner15,
2735 GICXXCustomAction_GICombiner16,
2736 GICXXCustomAction_GICombiner17,
2737 GICXXCustomAction_GICombiner18,
2738 GICXXCustomAction_GICombiner19,
2739 GICXXCustomAction_GICombiner20,
2740 GICXXCustomAction_GICombiner21,
2741 GICXXCustomAction_GICombiner22,
2742 GICXXCustomAction_GICombiner23,
2743 GICXXCustomAction_GICombiner24,
2744 GICXXCustomAction_GICombiner25,
2745 GICXXCustomAction_GICombiner26,
2746 GICXXCustomAction_GICombiner27,
2747 GICXXCustomAction_GICombiner28,
2748 GICXXCustomAction_GICombiner29,
2749 GICXXCustomAction_GICombiner30,
2750 GICXXCustomAction_GICombiner31,
2751 GICXXCustomAction_GICombiner32,
2752 GICXXCustomAction_GICombiner33,
2753 GICXXCustomAction_GICombiner34,
2754 GICXXCustomAction_GICombiner35,
2755 GICXXCustomAction_GICombiner36,
2756 GICXXCustomAction_GICombiner37,
2757 GICXXCustomAction_GICombiner38,
2758 GICXXCustomAction_GICombiner39,
2759 GICXXCustomAction_GICombiner40,
2760 GICXXCustomAction_GICombiner41,
2761 GICXXCustomAction_GICombiner42,
2762 GICXXCustomAction_GICombiner43,
2763 GICXXCustomAction_GICombiner44,
2764 GICXXCustomAction_GICombiner45,
2765 GICXXCustomAction_GICombiner46,
2766 GICXXCustomAction_GICombiner47,
2767 GICXXCustomAction_GICombiner48,
2768 GICXXCustomAction_GICombiner49,
2769 GICXXCustomAction_GICombiner50,
2770 GICXXCustomAction_GICombiner51,
2771 GICXXCustomAction_GICombiner52,
2772 GICXXCustomAction_GICombiner53,
2773 GICXXCustomAction_GICombiner54,
2774 GICXXCustomAction_GICombiner55,
2775 GICXXCustomAction_GICombiner56,
2776 GICXXCustomAction_GICombiner57,
2777 GICXXCustomAction_GICombiner58,
2778 GICXXCustomAction_GICombiner59,
2779 GICXXCustomAction_GICombiner60,
2780 GICXXCustomAction_GICombiner61,
2781 GICXXCustomAction_GICombiner62,
2782 GICXXCustomAction_GICombiner63,
2783 GICXXCustomAction_GICombiner64,
2784 GICXXCustomAction_GICombiner65,
2785 GICXXCustomAction_GICombiner66,
2786 GICXXCustomAction_GICombiner67,
2787 GICXXCustomAction_GICombiner68,
2788 GICXXCustomAction_GICombiner69,
2789 GICXXCustomAction_GICombiner70,
2790 GICXXCustomAction_GICombiner71,
2791 GICXXCustomAction_GICombiner72,
2792 GICXXCustomAction_GICombiner73,
2793 GICXXCustomAction_GICombiner74,
2794 GICXXCustomAction_GICombiner75,
2795 GICXXCustomAction_GICombiner76,
2796 GICXXCustomAction_GICombiner77,
2797 GICXXCustomAction_GICombiner78,
2798 GICXXCustomAction_GICombiner79,
2799 GICXXCustomAction_GICombiner80,
2800 GICXXCustomAction_GICombiner81,
2801 GICXXCustomAction_GICombiner82,
2802 GICXXCustomAction_GICombiner83,
2803 GICXXCustomAction_GICombiner84,
2804 GICXXCustomAction_GICombiner85,
2805 GICXXCustomAction_GICombiner86,
2806 GICXXCustomAction_GICombiner87,
2807 GICXXCustomAction_GICombiner88,
2808 GICXXCustomAction_GICombiner89,
2809 GICXXCustomAction_GICombiner90,
2810 GICXXCustomAction_GICombiner91,
2811 GICXXCustomAction_GICombiner92,
2812 GICXXCustomAction_GICombiner93,
2813 GICXXCustomAction_GICombiner94,
2814 GICXXCustomAction_GICombiner95,
2815 GICXXCustomAction_GICombiner96,
2816 GICXXCustomAction_GICombiner97,
2817 GICXXCustomAction_GICombiner98,
2818 GICXXCustomAction_GICombiner99,
2819 GICXXCustomAction_GICombiner100,
2820 GICXXCustomAction_GICombiner101,
2821 GICXXCustomAction_GICombiner102,
2822 GICXXCustomAction_GICombiner103,
2823 GICXXCustomAction_GICombiner104,
2824 GICXXCustomAction_GICombiner105,
2825 GICXXCustomAction_GICombiner106,
2826 GICXXCustomAction_GICombiner107,
2827 GICXXCustomAction_GICombiner108,
2828 GICXXCustomAction_GICombiner109,
2829 GICXXCustomAction_GICombiner110,
2830 GICXXCustomAction_GICombiner111,
2831 GICXXCustomAction_GICombiner112,
2832 GICXXCustomAction_GICombiner113,
2833 GICXXCustomAction_GICombiner114,
2834 GICXXCustomAction_GICombiner115,
2835 GICXXCustomAction_GICombiner116,
2836 GICXXCustomAction_GICombiner117,
2837 GICXXCustomAction_GICombiner118,
2838 GICXXCustomAction_GICombiner119,
2839 GICXXCustomAction_GICombiner120,
2840 GICXXCustomAction_GICombiner121,
2841 GICXXCustomAction_GICombiner122,
2842 GICXXCustomAction_GICombiner123,
2843 GICXXCustomAction_GICombiner124,
2844 GICXXCustomAction_GICombiner125,
2845 GICXXCustomAction_GICombiner126,
2846 GICXXCustomAction_GICombiner127,
2847 GICXXCustomAction_GICombiner128,
2848 GICXXCustomAction_GICombiner129,
2849 GICXXCustomAction_GICombiner130,
2850 GICXXCustomAction_GICombiner131,
2851 GICXXCustomAction_GICombiner132,
2852 GICXXCustomAction_GICombiner133,
2853 GICXXCustomAction_GICombiner134,
2854 GICXXCustomAction_GICombiner135,
2855 GICXXCustomAction_GICombiner136,
2856 GICXXCustomAction_GICombiner137,
2857 GICXXCustomAction_GICombiner138,
2858 GICXXCustomAction_GICombiner139,
2859 GICXXCustomAction_GICombiner140,
2860 GICXXCustomAction_GICombiner141,
2861 GICXXCustomAction_GICombiner142,
2862 GICXXCustomAction_GICombiner143,
2863 GICXXCustomAction_GICombiner144,
2864 GICXXCustomAction_GICombiner145,
2865 GICXXCustomAction_GICombiner146,
2866 GICXXCustomAction_GICombiner147,
2867 GICXXCustomAction_GICombiner148,
2868 GICXXCustomAction_GICombiner149,
2869 GICXXCustomAction_GICombiner150,
2870 GICXXCustomAction_GICombiner151,
2871 GICXXCustomAction_GICombiner152,
2872 GICXXCustomAction_GICombiner153,
2873 GICXXCustomAction_GICombiner154,
2874};
2875bool AMDGPUPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2876 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2877 switch(ApplyID) {
2878 case GICXXCustomAction_GICombiner0:{
2879 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2880 // Match Patterns
2881 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2882 return false;
2883 }
2884 // Apply Patterns
2885 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2886 return true;
2887 }
2888 case GICXXCustomAction_GICombiner1:{
2889 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2890 // Match Patterns
2891 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2892 return false;
2893 }
2894 // Apply Patterns
2895 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2896 return true;
2897 }
2898 case GICXXCustomAction_GICombiner2:{
2899 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2900 // Match Patterns
2901 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2902 return false;
2903 }
2904 // Apply Patterns
2905 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2906 return true;
2907 }
2908 case GICXXCustomAction_GICombiner3:{
2909 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2910 // Match Patterns
2911 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2912 return false;
2913 }
2914 // Apply Patterns
2915 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2916 return true;
2917 }
2918 case GICXXCustomAction_GICombiner4:{
2919 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2920 // Match Patterns
2921 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2922 return false;
2923 }
2924 // Apply Patterns
2925 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2926 return true;
2927 }
2928 case GICXXCustomAction_GICombiner5:{
2929 // Match Patterns
2930 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2931 return false;
2932 }
2933 // Apply Patterns
2934 Helper.applyCombineCopy(*State.MIs[0]);
2935 return true;
2936 }
2937 case GICXXCustomAction_GICombiner6:{
2938 unsigned GIMatchData_matchinfo;
2939 // Match Patterns
2940 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2941 return false;
2942 }
2943 // Apply Patterns
2944 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2945 return true;
2946 }
2947 case GICXXCustomAction_GICombiner7:{
2948 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2949 // Match Patterns
2950 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2951 return false;
2952 }
2953 // Apply Patterns
2954 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2955 return true;
2956 }
2957 case GICXXCustomAction_GICombiner8:{
2958 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2959 // Match Patterns
2960 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2961 return false;
2962 }
2963 // Apply Patterns
2964 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2965 return true;
2966 }
2967 case GICXXCustomAction_GICombiner9:{
2968 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2969 // Match Patterns
2970 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2971 return false;
2972 }
2973 // Apply Patterns
2974 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2975 return true;
2976 }
2977 case GICXXCustomAction_GICombiner10:{
2978 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2979 // Match Patterns
2980 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2981 return false;
2982 }
2983 // Apply Patterns
2984 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2985 return true;
2986 }
2987 case GICXXCustomAction_GICombiner11:{
2988 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2989 // Match Patterns
2990 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2991 GIMatchData_matchinfo);}()) {
2992 return false;
2993 }
2994 // Apply Patterns
2995 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2996 return true;
2997 }
2998 case GICXXCustomAction_GICombiner12:{
2999 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3000 // Match Patterns
3001 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3002 return false;
3003 }
3004 // Apply Patterns
3005 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3006 return true;
3007 }
3008 case GICXXCustomAction_GICombiner13:{
3009 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3010 // Match Patterns
3011 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
3012 GIMatchData_matchinfo);}()) {
3013 return false;
3014 }
3015 // Apply Patterns
3016 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3017 return true;
3018 }
3019 case GICXXCustomAction_GICombiner14:{
3020 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3021 // Match Patterns
3022 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3023 return false;
3024 }
3025 // Apply Patterns
3026 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3027 return true;
3028 }
3029 case GICXXCustomAction_GICombiner15:{
3030 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3031 // Match Patterns
3032 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3033 return false;
3034 }
3035 // Apply Patterns
3036 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3037 return true;
3038 }
3039 case GICXXCustomAction_GICombiner16:{
3040 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3041 // Match Patterns
3042 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3043 return false;
3044 }
3045 // Apply Patterns
3046 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3047 return true;
3048 }
3049 case GICXXCustomAction_GICombiner17:{
3050 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3051 // Match Patterns
3052 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3053 return false;
3054 }
3055 // Apply Patterns
3056 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3057 return true;
3058 }
3059 case GICXXCustomAction_GICombiner18:{
3060 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3061 // Match Patterns
3062 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
3063 return false;
3064 }
3065 // Apply Patterns
3066 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3067 return true;
3068 }
3069 case GICXXCustomAction_GICombiner19:{
3070 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3071 // Match Patterns
3072 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3073 return false;
3074 }
3075 // Apply Patterns
3076 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3077 return true;
3078 }
3079 case GICXXCustomAction_GICombiner20:{
3080 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3081 // Match Patterns
3082 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3083 return false;
3084 }
3085 // Apply Patterns
3086 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3087 return true;
3088 }
3089 case GICXXCustomAction_GICombiner21:{
3090 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3091 // Match Patterns
3092 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3093 return false;
3094 }
3095 // Apply Patterns
3096 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3097 return true;
3098 }
3099 case GICXXCustomAction_GICombiner22:{
3100 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3101 // Match Patterns
3102 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3103 return false;
3104 }
3105 // Apply Patterns
3106 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3107 return true;
3108 }
3109 case GICXXCustomAction_GICombiner23:{
3110 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3111 // Match Patterns
3112 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3113 return false;
3114 }
3115 // Apply Patterns
3116 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3117 return true;
3118 }
3119 case GICXXCustomAction_GICombiner24:{
3120 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3121 // Match Patterns
3122 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3123 return false;
3124 }
3125 // Apply Patterns
3126 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3127 return true;
3128 }
3129 case GICXXCustomAction_GICombiner25:{
3130 APInt GIMatchData_matchinfo;
3131 // Match Patterns
3132 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
3133 return false;
3134 }
3135 // Apply Patterns
3136 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3137 return true;
3138 }
3139 case GICXXCustomAction_GICombiner26:{
3140 SmallVector<Register> GIMatchData_info;
3141 // Match Patterns
3142 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
3143 return false;
3144 }
3145 // Apply Patterns
3146 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
3147 return true;
3148 }
3149 case GICXXCustomAction_GICombiner27:{
3150 Register GIMatchData_matchinfo;
3151 // Match Patterns
3152 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
3153 return false;
3154 }
3155 // Apply Patterns
3156 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
3157 return true;
3158 }
3159 case GICXXCustomAction_GICombiner28:{
3160 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
3161 // Match Patterns
3162 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3163 return false;
3164 }
3165 // Apply Patterns
3166 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
3167 return true;
3168 }
3169 case GICXXCustomAction_GICombiner29:{
3170 PreferredTuple GIMatchData_matchinfo;
3171 // Match Patterns
3172 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
3173 return false;
3174 }
3175 // Apply Patterns
3176 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
3177 return true;
3178 }
3179 case GICXXCustomAction_GICombiner30:{
3180 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3181 // Match Patterns
3182 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3183 return false;
3184 }
3185 // Apply Patterns
3186 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3187 return true;
3188 }
3189 case GICXXCustomAction_GICombiner31:{
3190 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3191 // Match Patterns
3192 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3193 return false;
3194 }
3195 // Apply Patterns
3196 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3197 return true;
3198 }
3199 case GICXXCustomAction_GICombiner32:{
3200 // Apply Patterns
3201 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3202 return true;
3203 }
3204 case GICXXCustomAction_GICombiner33:{
3205 // Apply Patterns
3206 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), 0);
3207 return true;
3208 }
3209 case GICXXCustomAction_GICombiner34:{
3210 // Apply Patterns
3211 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), -1);
3212 return true;
3213 }
3214 case GICXXCustomAction_GICombiner35:{
3215 // Apply Patterns
3216 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
3217 return true;
3218 }
3219 case GICXXCustomAction_GICombiner36:{
3220 // Match Patterns
3221 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
3222 return false;
3223 }
3224 // Apply Patterns
3225 Helper.replaceInstWithUndef(*State.MIs[0]);
3226 return true;
3227 }
3228 case GICXXCustomAction_GICombiner37:{
3229 // Match Patterns
3230 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
3231 return false;
3232 }
3233 // Apply Patterns
3234 Helper.eraseInst(*State.MIs[0]);
3235 return true;
3236 }
3237 case GICXXCustomAction_GICombiner38:{
3238 // Match Patterns
3239 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
3240 return false;
3241 }
3242 // Apply Patterns
3243 Helper.replaceInstWithUndef(*State.MIs[0]);
3244 return true;
3245 }
3246 case GICXXCustomAction_GICombiner39:{
3247 Register GIMatchData_info;
3248 // Match Patterns
3249 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
3250 return false;
3251 }
3252 // Apply Patterns
3253 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
3254 return true;
3255 }
3256 case GICXXCustomAction_GICombiner40:{
3257 Register GIMatchData_matchinfo;
3258 // Match Patterns
3259 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3260 return false;
3261 }
3262 // Apply Patterns
3263 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3264 return true;
3265 }
3266 case GICXXCustomAction_GICombiner41:{
3267 Register GIMatchData_matchinfo;
3268 // Match Patterns
3269 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3270 return false;
3271 }
3272 // Apply Patterns
3273 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3274 return true;
3275 }
3276 case GICXXCustomAction_GICombiner42:{
3277 Register GIMatchData_matchinfo;
3278 // Match Patterns
3279 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3280 return false;
3281 }
3282 // Apply Patterns
3283 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3284 return true;
3285 }
3286 case GICXXCustomAction_GICombiner43:{
3287 Register GIMatchData_matchinfo;
3288 // Match Patterns
3289 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3290 return false;
3291 }
3292 // Apply Patterns
3293 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3294 return true;
3295 }
3296 case GICXXCustomAction_GICombiner44:{
3297 // Match Patterns
3298 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
3299 return false;
3300 }
3301 // Apply Patterns
3302 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3303 return true;
3304 }
3305 case GICXXCustomAction_GICombiner45:{
3306 MachineInstr* GIMatchData_matchinfo;
3307 // Match Patterns
3308 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3309 return false;
3310 }
3311 // Apply Patterns
3312 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3313 return true;
3314 }
3315 case GICXXCustomAction_GICombiner46:{
3316 InstructionStepsMatchInfo GIMatchData_info;
3317 // Match Patterns
3318 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3319 return false;
3320 }
3321 // Apply Patterns
3322 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3323 return true;
3324 }
3325 case GICXXCustomAction_GICombiner47:{
3326 std::optional<int64_t> GIMatchData_matchinfo;
3327 // Match Patterns
3328 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3329 return false;
3330 }
3331 // Apply Patterns
3332 if (GIMatchData_matchinfo) {
3333 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3334 } else {
3335 Helper.replaceInstWithUndef(*State.MIs[0]);
3336 }
3337 return true;
3338 }
3339 case GICXXCustomAction_GICombiner48:{
3340 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3341 // Match Patterns
3342 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3343 return false;
3344 }
3345 // Apply Patterns
3346 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3347 return true;
3348 }
3349 case GICXXCustomAction_GICombiner49:{
3350 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3351 // Match Patterns
3352 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3353 return false;
3354 }
3355 // Apply Patterns
3356 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3357 return true;
3358 }
3359 case GICXXCustomAction_GICombiner50:{
3360 PtrAddChain GIMatchData_matchinfo;
3361 // Match Patterns
3362 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3363 return false;
3364 }
3365 // Apply Patterns
3366 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3367 return true;
3368 }
3369 case GICXXCustomAction_GICombiner51:{
3370 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3371 // Match Patterns
3372 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3373 return false;
3374 }
3375 // Apply Patterns
3376 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3377 return true;
3378 }
3379 case GICXXCustomAction_GICombiner52:{
3380 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3381 // Match Patterns
3382 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3383 return false;
3384 }
3385 // Apply Patterns
3386 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3387 return true;
3388 }
3389 case GICXXCustomAction_GICombiner53:{
3390 int64_t GIMatchData_matchinfo;
3391 // Match Patterns
3392 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3393 return false;
3394 }
3395 // Apply Patterns
3396 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3397 return true;
3398 }
3399 case GICXXCustomAction_GICombiner54:{
3400 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3401 // Match Patterns
3402 if(![&](){return Helper.matchICmpToLHSKnownBits(*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_GICombiner55:{
3410 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3411 // Match Patterns
3412 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3413 return false;
3414 }
3415 // Apply Patterns
3416 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3417 return true;
3418 }
3419 case GICXXCustomAction_GICombiner56:{
3420 std::tuple<Register, int64_t> GIMatchData_info;
3421 // Match Patterns
3422 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3423 return false;
3424 }
3425 // Apply Patterns
3426 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3427 return true;
3428 }
3429 case GICXXCustomAction_GICombiner57:{
3430 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3431 // Match Patterns
3432 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3433 return false;
3434 }
3435 // Apply Patterns
3436 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3437 return true;
3438 }
3439 case GICXXCustomAction_GICombiner58:{
3440 RegisterImmPair GIMatchData_matchinfo;
3441 // Match Patterns
3442 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3443 return false;
3444 }
3445 // Apply Patterns
3446 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3447 return true;
3448 }
3449 case GICXXCustomAction_GICombiner59:{
3450 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3451 // Match Patterns
3452 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3453 return false;
3454 }
3455 // Apply Patterns
3456 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3457 return true;
3458 }
3459 case GICXXCustomAction_GICombiner60:{
3460 unsigned GIMatchData_matchinfo;
3461 // Match Patterns
3462 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3463 return false;
3464 }
3465 // Apply Patterns
3466 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3467 return true;
3468 }
3469 case GICXXCustomAction_GICombiner61:{
3470 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3471 // Match Patterns
3472 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3473 return false;
3474 }
3475 // Apply Patterns
3476 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3477 return true;
3478 }
3479 case GICXXCustomAction_GICombiner62:{
3480 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3481 // Match Patterns
3482 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3483 return false;
3484 }
3485 // Apply Patterns
3486 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3487 return true;
3488 }
3489 case GICXXCustomAction_GICombiner63:{
3490 // Match Patterns
3491 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
3492 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
3493 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
3494 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
3495 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
3496 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
3497 return false;
3498 }
3499 // Apply Patterns
3500 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
3501 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
3502 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
3503 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
3504 State.MIs[0]->eraseFromParent();
3505 return true;
3506 }
3507 case GICXXCustomAction_GICombiner64:{
3508 Register GIMatchData_matchinfo;
3509 // Match Patterns
3510 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3511 return false;
3512 }
3513 // Apply Patterns
3514 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3515 return true;
3516 }
3517 case GICXXCustomAction_GICombiner65:{
3518 Register GIMatchData_matchinfo;
3519 // Match Patterns
3520 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3521 return false;
3522 }
3523 // Apply Patterns
3524 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3525 return true;
3526 }
3527 case GICXXCustomAction_GICombiner66:{
3528 // Match Patterns
3529 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3530 return false;
3531 }
3532 // Apply Patterns
3533 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3534 return true;
3535 }
3536 case GICXXCustomAction_GICombiner67:{
3537 Register GIMatchData_matchinfo;
3538 // Match Patterns
3539 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3540 return false;
3541 }
3542 // Apply Patterns
3543 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3544 return true;
3545 }
3546 case GICXXCustomAction_GICombiner68:{
3547 // Match Patterns
3548 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3549 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3550 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3551 return false;
3552 }
3553 // Apply Patterns
3554 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3555 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3556 State.MIs[0]->eraseFromParent();
3557 return true;
3558 }
3559 case GICXXCustomAction_GICombiner69:{
3560 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3561 // Match Patterns
3562 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3563 return false;
3564 }
3565 // Apply Patterns
3566 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3567 return true;
3568 }
3569 case GICXXCustomAction_GICombiner70:{
3570 SmallVector<Register> GIMatchData_info;
3571 // Match Patterns
3572 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3573 return false;
3574 }
3575 // Apply Patterns
3576 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3577 return true;
3578 }
3579 case GICXXCustomAction_GICombiner71:{
3580 MachineInstr * GIMatchData_matchinfo;
3581 // Match Patterns
3582 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3583 return false;
3584 }
3585 // Apply Patterns
3586 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3587 return true;
3588 }
3589 case GICXXCustomAction_GICombiner72:{
3590 // Apply Patterns
3591 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3592 return true;
3593 }
3594 case GICXXCustomAction_GICombiner73:{
3595 APInt GIMatchData_info;
3596 // Match Patterns
3597 if(![&](){LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3598 APInt NewCst = State.MIs[2]->getOperand(1).getCImm()->getValue().zextOrTrunc(
3599 DstTy.getSizeInBits());
3600 NewCst += State.MIs[3]->getOperand(1).getCImm()->getValue().sextOrTrunc(
3601 DstTy.getSizeInBits());
3602 GIMatchData_info = NewCst;
3603 return true;}()) {
3604 return false;
3605 }
3606 // Apply Patterns
3607 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3608 Helper.getBuilder().buildConstant(State.MIs[0]->getOperand(0), GIMatchData_info);
3609 State.MIs[0]->eraseFromParent();
3610 return true;
3611 }
3612 case GICXXCustomAction_GICombiner74:{
3613 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3614 // Match Patterns
3615 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3616 return false;
3617 }
3618 // Apply Patterns
3619 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3620 return true;
3621 }
3622 case GICXXCustomAction_GICombiner75:{
3623 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3624 // Match Patterns
3625 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3626 return false;
3627 }
3628 // Apply Patterns
3629 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3630 return true;
3631 }
3632 case GICXXCustomAction_GICombiner76:{
3633 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3634 // Match Patterns
3635 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3636 return false;
3637 }
3638 // Apply Patterns
3639 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3640 return true;
3641 }
3642 case GICXXCustomAction_GICombiner77:{
3643 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3644 // Match Patterns
3645 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3646 return false;
3647 }
3648 // Apply Patterns
3649 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3650 return true;
3651 }
3652 case GICXXCustomAction_GICombiner78:{
3653 unsigned GIMatchData_info;
3654 // Match Patterns
3655 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3656 return false;
3657 }
3658 // Apply Patterns
3659 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3660 return true;
3661 }
3662 case GICXXCustomAction_GICombiner79:{
3663 // Match Patterns
3664 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3665 return false;
3666 }
3667 // Apply Patterns
3668 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3669 return true;
3670 }
3671 case GICXXCustomAction_GICombiner80:{
3672 std::pair<Register, Register> GIMatchData_matchinfo;
3673 // Match Patterns
3674 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3675 return false;
3676 }
3677 // Apply Patterns
3678 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3679 return true;
3680 }
3681 case GICXXCustomAction_GICombiner81:{
3682 RegisterImmPair GIMatchData_matchinfo;
3683 // Match Patterns
3684 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3685 return false;
3686 }
3687 // Apply Patterns
3688 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3689 return true;
3690 }
3691 case GICXXCustomAction_GICombiner82:{
3692 ShiftOfShiftedLogic GIMatchData_matchinfo;
3693 // Match Patterns
3694 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3695 return false;
3696 }
3697 // Apply Patterns
3698 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3699 return true;
3700 }
3701 case GICXXCustomAction_GICombiner83:{
3702 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3703 // Match Patterns
3704 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3705 return false;
3706 }
3707 // Apply Patterns
3708 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3709 return true;
3710 }
3711 case GICXXCustomAction_GICombiner84:{
3712 MachineInstr * GIMatchData_matchinfo;
3713 // Match Patterns
3714 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3715 return false;
3716 }
3717 // Apply Patterns
3718 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3719 return true;
3720 }
3721 case GICXXCustomAction_GICombiner85:{
3722 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3723 // Match Patterns
3724 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3725 return false;
3726 }
3727 // Apply Patterns
3728 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3729 return true;
3730 }
3731 case GICXXCustomAction_GICombiner86:{
3732 // Match Patterns
3733 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3734 return false;
3735 }
3736 // Apply Patterns
3737 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3738 return true;
3739 }
3740 case GICXXCustomAction_GICombiner87:{
3741 // Match Patterns
3742 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3743 return false;
3744 }
3745 // Apply Patterns
3746 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3747 return true;
3748 }
3749 case GICXXCustomAction_GICombiner88:{
3750 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3751 // Match Patterns
3752 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3753 return false;
3754 }
3755 // Apply Patterns
3756 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3757 return true;
3758 }
3759 case GICXXCustomAction_GICombiner89:{
3760 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3761 // Match Patterns
3762 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3763 return false;
3764 }
3765 // Apply Patterns
3766 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3767 return true;
3768 }
3769 case GICXXCustomAction_GICombiner90:{
3770 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3771 // Match Patterns
3772 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3773 return false;
3774 }
3775 // Apply Patterns
3776 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3777 return true;
3778 }
3779 case GICXXCustomAction_GICombiner91:{
3780 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3781 // Match Patterns
3782 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3783 return false;
3784 }
3785 // Apply Patterns
3786 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3787 return true;
3788 }
3789 case GICXXCustomAction_GICombiner92:{
3790 APInt GIMatchData_matchinfo;
3791 // Match Patterns
3792 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3793 return false;
3794 }
3795 // Apply Patterns
3796 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3797 return true;
3798 }
3799 case GICXXCustomAction_GICombiner93:{
3800 ConstantFP* GIMatchData_matchinfo;
3801 // Match Patterns
3802 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3803 return false;
3804 }
3805 // Apply Patterns
3806 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3807 return true;
3808 }
3809 case GICXXCustomAction_GICombiner94:{
3810 ConstantFP* GIMatchData_matchinfo;
3811 // Match Patterns
3812 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3813 return false;
3814 }
3815 // Apply Patterns
3816 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3817 return true;
3818 }
3819 case GICXXCustomAction_GICombiner95:{
3820 APInt GIMatchData_matchinfo;
3821 // Match Patterns
3822 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3823 return false;
3824 }
3825 // Apply Patterns
3826 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3827 return true;
3828 }
3829 case GICXXCustomAction_GICombiner96:{
3830 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3831 // Match Patterns
3832 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3833 return false;
3834 }
3835 // Apply Patterns
3836 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3837 return true;
3838 }
3839 case GICXXCustomAction_GICombiner97:{
3840 // Match Patterns
3841 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3842 return false;
3843 }
3844 // Apply Patterns
3845 Helper.applyUMulHToLShr(*State.MIs[0]);
3846 return true;
3847 }
3848 case GICXXCustomAction_GICombiner98:{
3849 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3850 // Match Patterns
3851 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3852 return false;
3853 }
3854 // Apply Patterns
3855 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3856 return true;
3857 }
3858 case GICXXCustomAction_GICombiner99:{
3859 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3860 // Match Patterns
3861 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3862 return false;
3863 }
3864 // Apply Patterns
3865 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3866 return true;
3867 }
3868 case GICXXCustomAction_GICombiner100:{
3869 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3870 // Match Patterns
3871 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3872 GIMatchData_info);}()) {
3873 return false;
3874 }
3875 // Apply Patterns
3876 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3877 return true;
3878 }
3879 case GICXXCustomAction_GICombiner101:{
3880 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3881 // Match Patterns
3882 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3883 GIMatchData_info);}()) {
3884 return false;
3885 }
3886 // Apply Patterns
3887 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3888 return true;
3889 }
3890 case GICXXCustomAction_GICombiner102:{
3891 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3892 // Match Patterns
3893 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3894 GIMatchData_info);}()) {
3895 return false;
3896 }
3897 // Apply Patterns
3898 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3899 return true;
3900 }
3901 case GICXXCustomAction_GICombiner103:{
3902 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3903 // Match Patterns
3904 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3905 *State.MIs[0], GIMatchData_info);}()) {
3906 return false;
3907 }
3908 // Apply Patterns
3909 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3910 return true;
3911 }
3912 case GICXXCustomAction_GICombiner104:{
3913 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3914 // Match Patterns
3915 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3916 GIMatchData_info);}()) {
3917 return false;
3918 }
3919 // Apply Patterns
3920 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3921 return true;
3922 }
3923 case GICXXCustomAction_GICombiner105:{
3924 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3925 // Match Patterns
3926 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3927 GIMatchData_info);}()) {
3928 return false;
3929 }
3930 // Apply Patterns
3931 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3932 return true;
3933 }
3934 case GICXXCustomAction_GICombiner106:{
3935 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3936 // Match Patterns
3937 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3938 GIMatchData_info);}()) {
3939 return false;
3940 }
3941 // Apply Patterns
3942 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3943 return true;
3944 }
3945 case GICXXCustomAction_GICombiner107:{
3946 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3947 // Match Patterns
3948 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3949 *State.MIs[0], GIMatchData_info);}()) {
3950 return false;
3951 }
3952 // Apply Patterns
3953 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3954 return true;
3955 }
3956 case GICXXCustomAction_GICombiner108:{
3957 unsigned GIMatchData_select_op_no;
3958 // Match Patterns
3959 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3960 return false;
3961 }
3962 // Apply Patterns
3963 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3964 return true;
3965 }
3966 case GICXXCustomAction_GICombiner109:{
3967 // Match Patterns
3968 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
3969 /*OrNegative=*/true);}()) {
3970 return false;
3971 }
3972 // Apply Patterns
3973 Helper.applySimplifySRemByPow2(*State.MIs[0]);
3974 return true;
3975 }
3976 case GICXXCustomAction_GICombiner110:{
3977 // Match Patterns
3978 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3979 return false;
3980 }
3981 // Apply Patterns
3982 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3983 return true;
3984 }
3985 case GICXXCustomAction_GICombiner111:{
3986 // Match Patterns
3987 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3988 return false;
3989 }
3990 // Apply Patterns
3991 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3992 return true;
3993 }
3994 case GICXXCustomAction_GICombiner112:{
3995 // Match Patterns
3996 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3997 return false;
3998 }
3999 // Apply Patterns
4000 Helper.applyUDivByPow2(*State.MIs[0]);
4001 return true;
4002 }
4003 case GICXXCustomAction_GICombiner113:{
4004 // Match Patterns
4005 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
4006 return false;
4007 }
4008 // Apply Patterns
4009 Helper.applySDivByPow2(*State.MIs[0]);
4010 return true;
4011 }
4012 case GICXXCustomAction_GICombiner114:{
4013 SmallVector<MachineInstr *> GIMatchData_matchinfo;
4014 // Match Patterns
4015 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
4016 return false;
4017 }
4018 // Apply Patterns
4019 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
4020 return true;
4021 }
4022 case GICXXCustomAction_GICombiner115:{
4023 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4024 // Match Patterns
4025 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4026 return false;
4027 }
4028 // Apply Patterns
4029 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4030 return true;
4031 }
4032 case GICXXCustomAction_GICombiner116:{
4033 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4034 // Match Patterns
4035 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
4036 return false;
4037 }
4038 // Apply Patterns
4039 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4040 return true;
4041 }
4042 case GICXXCustomAction_GICombiner117:{
4043 Register GIMatchData_matchinfo;
4044 // Match Patterns
4045 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4046 return false;
4047 }
4048 // Apply Patterns
4049 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
4050 return true;
4051 }
4052 case GICXXCustomAction_GICombiner118:{
4053 // Match Patterns
4054 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
4055 return false;
4056 }
4057 // Apply Patterns
4058 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4059 return true;
4060 }
4061 case GICXXCustomAction_GICombiner119:{
4062 // Match Patterns
4063 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
4064 return false;
4065 }
4066 // Apply Patterns
4067 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4068 return true;
4069 }
4070 case GICXXCustomAction_GICombiner120:{
4071 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4072 // Match Patterns
4073 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
4074 return false;
4075 }
4076 // Apply Patterns
4077 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4078 return true;
4079 }
4080 case GICXXCustomAction_GICombiner121:{
4081 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4082 // Match Patterns
4083 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
4084 return false;
4085 }
4086 // Apply Patterns
4087 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4088 return true;
4089 }
4090 case GICXXCustomAction_GICombiner122:{
4091 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4092 // Match Patterns
4093 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
4094 return false;
4095 }
4096 // Apply Patterns
4097 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4098 return true;
4099 }
4100 case GICXXCustomAction_GICombiner123:{
4101 SmallVector<Register> GIMatchData_matchinfo;
4102 // Match Patterns
4103 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
4104 return false;
4105 }
4106 // Apply Patterns
4107 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
4108 return true;
4109 }
4110 case GICXXCustomAction_GICombiner124:{
4111 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4112 // Match Patterns
4113 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4114 return false;
4115 }
4116 // Apply Patterns
4117 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4118 return true;
4119 }
4120 case GICXXCustomAction_GICombiner125:{
4121 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4122 // Match Patterns
4123 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4124 return false;
4125 }
4126 // Apply Patterns
4127 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4128 return true;
4129 }
4130 case GICXXCustomAction_GICombiner126:{
4131 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4132 // Match Patterns
4133 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4134 return false;
4135 }
4136 // Apply Patterns
4137 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4138 return true;
4139 }
4140 case GICXXCustomAction_GICombiner127:{
4141 SmallVector<Register> GIMatchData_matchinfo;
4142 // Match Patterns
4143 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
4144 return false;
4145 }
4146 // Apply Patterns
4147 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
4148 return true;
4149 }
4150 case GICXXCustomAction_GICombiner128:{
4151 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4152 // Match Patterns
4153 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4154 return false;
4155 }
4156 // Apply Patterns
4157 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4158 return true;
4159 }
4160 case GICXXCustomAction_GICombiner129:{
4161 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4162 // Match Patterns
4163 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
4164 return false;
4165 }
4166 // Apply Patterns
4167 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4168 return true;
4169 }
4170 case GICXXCustomAction_GICombiner130:{
4171 Register GIMatchData_matchinfo;
4172 // Match Patterns
4173 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
4174 return false;
4175 }
4176 // Apply Patterns
4177 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
4178 return true;
4179 }
4180 case GICXXCustomAction_GICombiner131:{
4181 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4182 // Match Patterns
4183 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4184 return false;
4185 }
4186 // Apply Patterns
4187 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4188 return true;
4189 }
4190 case GICXXCustomAction_GICombiner132:{
4191 SmallVector<Register> GIMatchData_info;
4192 // Match Patterns
4193 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
4194 return false;
4195 }
4196 // Apply Patterns
4197 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4198 return true;
4199 }
4200 case GICXXCustomAction_GICombiner133:{
4201 Register GIMatchData_src;
4202 // Match Patterns
4203 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4204 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4205 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4206 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4207 return false;
4208
4209 // Check counts match.
4210 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4211 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4212 if (NumMergeSrcs != NumUnmergeDefs)
4213 return false;
4214
4215 // Verify all merge sources match unmerge defs in order.
4216 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4217 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4218 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4219
4220 if (MergeSrc != UnmergeDef)
4221 return false;
4222
4223 if (!MRI.hasOneNonDBGUse(MergeSrc))
4224 return false;
4225 }
4226
4227 // Check size compatibility.
4228 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4229 LLT SrcTy = MRI.getType(GIMatchData_src);
4230 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4231 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4232 return false;
4233
4234 // Check bitcast legality.
4235 if (SrcTy != DstTy) {
4236 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4237 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4238 if (!Helper.isLegalOrBeforeLegalizer(Query))
4239 return false;
4240 }
4241
4242 return true;}()) {
4243 return false;
4244 }
4245 // Apply Patterns
4246 LLT SrcTy = MRI.getType(GIMatchData_src);
4247 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4248
4249 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4250
4251 if (SrcTy == DstTy) {
4252 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4253 } else {
4254 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4255 }
4256
4257 State.MIs[0]->eraseFromParent();
4258 return true;
4259 }
4260 case GICXXCustomAction_GICombiner134:{
4261 SmallVector<APInt, 8> GIMatchData_info;
4262 // Match Patterns
4263 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4264 return false;
4265 }
4266 // Apply Patterns
4267 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4268 return true;
4269 }
4270 case GICXXCustomAction_GICombiner135:{
4271 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4272 // Match Patterns
4273 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4274 return false;
4275 }
4276 // Apply Patterns
4277 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4278 return true;
4279 }
4280 case GICXXCustomAction_GICombiner136:{
4281 // Match Patterns
4282 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4283 return false;
4284 }
4285 // Apply Patterns
4286 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4287 return true;
4288 }
4289 case GICXXCustomAction_GICombiner137:{
4290 // Match Patterns
4291 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4292 return false;
4293 }
4294 // Apply Patterns
4295 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4296 return true;
4297 }
4298 case GICXXCustomAction_GICombiner138:{
4299 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4300 // Match Patterns
4301 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
4302 return false;
4303 }
4304 // Apply Patterns
4305 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4306 return true;
4307 }
4308 case GICXXCustomAction_GICombiner139:{
4309 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4310 // Match Patterns
4311 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
4312 return false;
4313 }
4314 // Apply Patterns
4315 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4316 return true;
4317 }
4318 case GICXXCustomAction_GICombiner140:{
4319 Register GIMatchData_unmergeSrc;
4320 // Match Patterns
4321 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4322 return false;
4323 }
4324 // Apply Patterns
4325 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4326 return true;
4327 }
4328 case GICXXCustomAction_GICombiner141:{
4329 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4330 // Match Patterns
4331 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4332 return false;
4333 }
4334 // Apply Patterns
4335 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4336 return true;
4337 }
4338 case GICXXCustomAction_GICombiner142:{
4339 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4340 // Match Patterns
4341 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4342 return false;
4343 }
4344 // Apply Patterns
4345 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4346 return true;
4347 }
4348 case GICXXCustomAction_GICombiner143:{
4349 Register GIMatchData_matchinfo;
4350 // Match Patterns
4351 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4352 return false;
4353 }
4354 // Apply Patterns
4355 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4356 return true;
4357 }
4358 case GICXXCustomAction_GICombiner144:{
4359 Register GIMatchData_matchinfo;
4360 // Match Patterns
4361 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4362 return false;
4363 }
4364 // Apply Patterns
4365 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4366 return true;
4367 }
4368 case GICXXCustomAction_GICombiner145:{
4369 LshrOfTruncOfLshr GIMatchData_matchinfo;
4370 // Match Patterns
4371 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4372 return false;
4373 }
4374 // Apply Patterns
4375 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4376 return true;
4377 }
4378 case GICXXCustomAction_GICombiner146:{
4379 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4380 // Match Patterns
4381 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4382 return false;
4383 }
4384 // Apply Patterns
4385 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4386 return true;
4387 }
4388 case GICXXCustomAction_GICombiner147:{
4389 // Match Patterns
4390 if(![&](){return Helper.matchCountZeroToZeroPoison(*State.MIs[0]);}()) {
4391 return false;
4392 }
4393 // Apply Patterns
4394 Helper.applyCountZeroToZeroPoison(*State.MIs[0]);
4395 return true;
4396 }
4397 case GICXXCustomAction_GICombiner148:{
4398 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4399 // Match Patterns
4400 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4401 return false;
4402 }
4403 // Apply Patterns
4404 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4405 return true;
4406 }
4407 case GICXXCustomAction_GICombiner149:{
4408 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4409 // Match Patterns
4410 if(![&](){return Helper.matchCombineFmulWithSelectToFldexp(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
4411 return false;
4412 }
4413 // Apply Patterns
4414 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4415 return true;
4416 }
4417 case GICXXCustomAction_GICombiner150:{
4418 ClampI64ToI16MatchInfo GIMatchData_matchinfo;
4419 // Match Patterns
4420 if(![&](){return matchClampI64ToI16(*State.MIs[0], MRI, MF, GIMatchData_matchinfo);}()) {
4421 return false;
4422 }
4423 // Apply Patterns
4424 applyClampI64ToI16(*State.MIs[0], GIMatchData_matchinfo);
4425 return true;
4426 }
4427 case GICXXCustomAction_GICombiner151:{
4428 MachineInstr * GIMatchData_matchinfo;
4429 // Match Patterns
4430 if(![&](){return Helper.matchFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4431 return false;
4432 }
4433 // Apply Patterns
4434 Helper.applyFoldableFneg(*State.MIs[0], GIMatchData_matchinfo);
4435 return true;
4436 }
4437 case GICXXCustomAction_GICombiner152:{
4438 // Match Patterns
4439 if(![&](){return Helper.matchFoldFAbsFptrunc(*State.MIs[0], *State.MIs[1]);}()) {
4440 return false;
4441 }
4442 // Apply Patterns
4443 Helper.applyFoldFAbsFptrunc(*State.MIs[0], *State.MIs[1]);
4444 return true;
4445 }
4446 case GICXXCustomAction_GICombiner153:{
4447 SmallVector<Register> GIMatchData_matchinfo;
4448 // Match Patterns
4449 if(![&](){return Helper.matchCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4450 return false;
4451 }
4452 // Apply Patterns
4453 Helper.applyCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);
4454 return true;
4455 }
4456 case GICXXCustomAction_GICombiner154:{
4457 // Apply Patterns
4458 Helper.applyCombineShuffleToBuildVector(*State.MIs[0]);
4459 return true;
4460 }
4461 }
4462 llvm_unreachable("Unknown Apply Action");
4463}
4464#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4465#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4466#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4467#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)
4468#else
4469#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4470#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4471#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)
4472#endif
4473const uint8_t *AMDGPUPreLegalizerCombinerImpl::getMatchTable() const {
4474 constexpr static uint8_t MatchTable0[] = {
4475 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(286), /*)*//*default:*//*Label 113*/ GIMT_Encode4(11913),
4476 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1074), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4477 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1086),
4478 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(2036),
4479 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(3048),
4480 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3285),
4481 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3387),
4482 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3510),
4483 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3606), GIMT_Encode4(0), GIMT_Encode4(0),
4484 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(3723),
4485 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(4295),
4486 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(5429), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4487 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(5671), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4488 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(5686), GIMT_Encode4(0),
4489 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(5753),
4490 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(5830),
4491 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(5895),
4492 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(5907),
4493 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(5922),
4494 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(5965),
4495 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(6020),
4496 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(6095), GIMT_Encode4(0), GIMT_Encode4(0),
4497 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(6159),
4498 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(6181), GIMT_Encode4(0), GIMT_Encode4(0),
4499 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(6203), GIMT_Encode4(0), GIMT_Encode4(0),
4500 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(6225),
4501 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(6237),
4502 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(6249), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4503 /* 354 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(6261), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4504 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(6273),
4505 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(6401), GIMT_Encode4(0), GIMT_Encode4(0),
4506 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(7090), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4507 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(7123),
4508 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(7198),
4509 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(7420),
4510 /* 550 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(7550),
4511 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(7913),
4512 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(8270),
4513 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(8609),
4514 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(8652),
4515 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(8695),
4516 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(8719),
4517 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(8743),
4518 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(8788), GIMT_Encode4(0), GIMT_Encode4(0),
4519 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(8800),
4520 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(9096),
4521 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(9119),
4522 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(9131),
4523 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(9143),
4524 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(9155),
4525 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(9178),
4526 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(9190),
4527 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(9202),
4528 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(9214),
4529 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(9248),
4530 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(9282),
4531 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(9305),
4532 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(9317),
4533 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(9329), GIMT_Encode4(0), GIMT_Encode4(0),
4534 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(9341),
4535 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(9364),
4536 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(9387),
4537 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(9399),
4538 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(9411),
4539 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(9423), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4540 /* 702 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(9435),
4541 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(9576),
4542 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(9665),
4543 /* 714 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(9806),
4544 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(9863),
4545 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(9920),
4546 /* 726 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(9997), GIMT_Encode4(0), GIMT_Encode4(0),
4547 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(10020), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4548 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(10042), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4549 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(10064),
4550 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(10126),
4551 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(10148),
4552 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(10191),
4553 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(10213),
4554 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(10235),
4555 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(10272), GIMT_Encode4(0), GIMT_Encode4(0),
4556 /* 810 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(10309),
4557 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 81*/ GIMT_Encode4(10409), GIMT_Encode4(0),
4558 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 82*/ GIMT_Encode4(10421),
4559 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 83*/ GIMT_Encode4(10451),
4560 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 84*/ GIMT_Encode4(10496),
4561 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 85*/ GIMT_Encode4(10541),
4562 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 86*/ GIMT_Encode4(10553),
4563 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 87*/ GIMT_Encode4(10565),
4564 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 88*/ GIMT_Encode4(10610),
4565 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 89*/ GIMT_Encode4(10655),
4566 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 90*/ GIMT_Encode4(10667), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4567 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 91*/ GIMT_Encode4(10679), GIMT_Encode4(0),
4568 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 92*/ GIMT_Encode4(10804),
4569 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 93*/ GIMT_Encode4(10838),
4570 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 94*/ GIMT_Encode4(10872),
4571 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 95*/ GIMT_Encode4(10906),
4572 /* 914 */ /*TargetOpcode::G_ABS*//*Label 96*/ GIMT_Encode4(10940), GIMT_Encode4(0), GIMT_Encode4(0),
4573 /* 926 */ /*TargetOpcode::G_BR*//*Label 97*/ GIMT_Encode4(10973), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4574 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 98*/ GIMT_Encode4(10985),
4575 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(11115),
4576 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 100*/ GIMT_Encode4(11492), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4577 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 101*/ GIMT_Encode4(11587),
4578 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 102*/ GIMT_Encode4(11610),
4579 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 103*/ GIMT_Encode4(11622),
4580 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 104*/ GIMT_Encode4(11656), GIMT_Encode4(0),
4581 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 105*/ GIMT_Encode4(11679),
4582 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 106*/ GIMT_Encode4(11691),
4583 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 107*/ GIMT_Encode4(11703), GIMT_Encode4(0), GIMT_Encode4(0),
4584 /* 1010 */ /*TargetOpcode::G_FCEIL*//*Label 108*/ GIMT_Encode4(11803), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4585 /* 1058 */ /*TargetOpcode::G_FSQRT*//*Label 109*/ GIMT_Encode4(11825),
4586 /* 1062 */ /*TargetOpcode::G_FFLOOR*//*Label 110*/ GIMT_Encode4(11847),
4587 /* 1066 */ /*TargetOpcode::G_FRINT*//*Label 111*/ GIMT_Encode4(11869),
4588 /* 1070 */ /*TargetOpcode::G_FNEARBYINT*//*Label 112*/ GIMT_Encode4(11891),
4589 /* 1074 */ // Label 0: @1074
4590 /* 1074 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1085), // Rule ID 19 //
4591 /* 1079 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4592 /* 1082 */ // MIs[0] d
4593 /* 1082 */ // No operand predicates
4594 /* 1082 */ // MIs[0] s
4595 /* 1082 */ // No operand predicates
4596 /* 1082 */ // Combiner Rule #19: copy_prop
4597 /* 1082 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4598 /* 1085 */ // Label 114: @1085
4599 /* 1085 */ GIM_Reject,
4600 /* 1086 */ // Label 1: @1086
4601 /* 1086 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1097), // Rule ID 272 //
4602 /* 1091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
4603 /* 1094 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_ADD'
4604 /* 1094 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
4605 /* 1097 */ // Label 115: @1097
4606 /* 1097 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1108), // Rule ID 332 //
4607 /* 1102 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
4608 /* 1105 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_ADD'
4609 /* 1105 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
4610 /* 1108 */ // Label 116: @1108
4611 /* 1108 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1119), // Rule ID 369 //
4612 /* 1113 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
4613 /* 1116 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4614 /* 1116 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4615 /* 1119 */ // Label 117: @1119
4616 /* 1119 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1207), // Rule ID 439 //
4617 /* 1124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
4618 /* 1127 */ // MIs[0] dst
4619 /* 1127 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4620 /* 1131 */ // MIs[0] __add_shift_match_0.shl_neg
4621 /* 1131 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4622 /* 1135 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4623 /* 1139 */ // MIs[1] __add_shift_match_0.neg_y
4624 /* 1139 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4625 /* 1143 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4626 /* 1147 */ // MIs[2] __add_shift_match_0.zero
4627 /* 1147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4628 /* 1151 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4629 /* 1155 */ // MIs[3] Operand 1
4630 /* 1155 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4631 /* 1166 */ // MIs[2] y
4632 /* 1166 */ // No operand predicates
4633 /* 1166 */ // MIs[1] n
4634 /* 1166 */ // No operand predicates
4635 /* 1166 */ // MIs[0] x
4636 /* 1166 */ // No operand predicates
4637 /* 1166 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
4638 /* 1170 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4639 /* 1172 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4640 /* 1175 */ // Combiner Rule #267: add_shift @ [__add_shift_match_0[1]]
4641 /* 1175 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4642 /* 1178 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4643 /* 1183 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4644 /* 1187 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4645 /* 1191 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4646 /* 1195 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4647 /* 1199 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4648 /* 1203 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4649 /* 1206 */ GIR_EraseRootFromParent_Done,
4650 /* 1207 */ // Label 118: @1207
4651 /* 1207 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1295), // Rule ID 438 //
4652 /* 1212 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
4653 /* 1215 */ // MIs[0] dst
4654 /* 1215 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4655 /* 1219 */ // MIs[0] x
4656 /* 1219 */ // No operand predicates
4657 /* 1219 */ // MIs[0] __add_shift_match_0.shl_neg
4658 /* 1219 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4659 /* 1223 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4660 /* 1227 */ // MIs[1] __add_shift_match_0.neg_y
4661 /* 1227 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4662 /* 1231 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4663 /* 1235 */ // MIs[2] __add_shift_match_0.zero
4664 /* 1235 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4665 /* 1239 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4666 /* 1243 */ // MIs[3] Operand 1
4667 /* 1243 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4668 /* 1254 */ // MIs[2] y
4669 /* 1254 */ // No operand predicates
4670 /* 1254 */ // MIs[1] n
4671 /* 1254 */ // No operand predicates
4672 /* 1254 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
4673 /* 1258 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4674 /* 1260 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4675 /* 1263 */ // Combiner Rule #267: add_shift @ [__add_shift_match_0[0]]
4676 /* 1263 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4677 /* 1266 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4678 /* 1271 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4679 /* 1275 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4680 /* 1279 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4681 /* 1283 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4682 /* 1287 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4683 /* 1291 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4684 /* 1294 */ GIR_EraseRootFromParent_Done,
4685 /* 1295 */ // Label 119: @1295
4686 /* 1295 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1329), // Rule ID 2 //
4687 /* 1300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4688 /* 1303 */ // MIs[0] root
4689 /* 1303 */ // No operand predicates
4690 /* 1303 */ // MIs[0] sub
4691 /* 1303 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4692 /* 1307 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4693 /* 1311 */ // MIs[1] Operand 1
4694 /* 1311 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4695 /* 1315 */ // MIs[1] A
4696 /* 1315 */ // No operand predicates
4697 /* 1315 */ // MIs[0] B
4698 /* 1315 */ // No operand predicates
4699 /* 1315 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4700 /* 1317 */ // Combiner Rule #2: ZeroMinusAPlusB
4701 /* 1317 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4702 /* 1320 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4703 /* 1322 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4704 /* 1324 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4705 /* 1328 */ GIR_EraseRootFromParent_Done,
4706 /* 1329 */ // Label 120: @1329
4707 /* 1329 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1378), // Rule ID 160 //
4708 /* 1334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4709 /* 1337 */ // MIs[0] dst
4710 /* 1337 */ // No operand predicates
4711 /* 1337 */ // MIs[0] __simplify_add_to_sub_match_0.neg
4712 /* 1337 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4713 /* 1341 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4714 /* 1345 */ // MIs[1] __simplify_add_to_sub_match_0.zero
4715 /* 1345 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4716 /* 1349 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4717 /* 1353 */ // MIs[2] Operand 1
4718 /* 1353 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(0),
4719 /* 1364 */ // MIs[1] newrhs
4720 /* 1364 */ // No operand predicates
4721 /* 1364 */ // MIs[0] newlhs
4722 /* 1364 */ // No operand predicates
4723 /* 1364 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4724 /* 1366 */ // Combiner Rule #112: simplify_add_to_sub @ [__simplify_add_to_sub_match_0[0]]
4725 /* 1366 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4726 /* 1369 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4727 /* 1371 */ GIR_RootToRootCopy, /*OpIdx*/2, // newlhs
4728 /* 1373 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // newrhs
4729 /* 1377 */ GIR_EraseRootFromParent_Done,
4730 /* 1378 */ // Label 121: @1378
4731 /* 1378 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1415), // Rule ID 18 //
4732 /* 1383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4733 /* 1386 */ // MIs[0] root
4734 /* 1386 */ // No operand predicates
4735 /* 1386 */ // MIs[0] sub
4736 /* 1386 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4737 /* 1390 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4738 /* 1394 */ // MIs[1] A
4739 /* 1394 */ // No operand predicates
4740 /* 1394 */ // MIs[1] c1
4741 /* 1394 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4742 /* 1398 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4743 /* 1402 */ // MIs[2] imm1
4744 /* 1402 */ // No operand predicates
4745 /* 1402 */ // MIs[0] c2
4746 /* 1402 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4747 /* 1406 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4748 /* 1410 */ // MIs[3] imm2
4749 /* 1410 */ // No operand predicates
4750 /* 1410 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4751 /* 1412 */ // Combiner Rule #18: AMinusC1PlusC2
4752 /* 1412 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4753 /* 1415 */ // Label 122: @1415
4754 /* 1415 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1449), // Rule ID 5 //
4755 /* 1420 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4756 /* 1423 */ // MIs[0] root
4757 /* 1423 */ // No operand predicates
4758 /* 1423 */ // MIs[0] sub
4759 /* 1423 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4760 /* 1427 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4761 /* 1431 */ // MIs[1] B
4762 /* 1431 */ // No operand predicates
4763 /* 1431 */ // MIs[1] A
4764 /* 1431 */ // No operand predicates
4765 /* 1431 */ // MIs[0] A
4766 /* 1431 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4767 /* 1436 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4768 /* 1441 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4769 /* 1443 */ // Combiner Rule #5: BMinusAPlusA
4770 /* 1443 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4771 /* 1448 */ GIR_EraseRootFromParent_Done,
4772 /* 1449 */ // Label 123: @1449
4773 /* 1449 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1483), // Rule ID 148 //
4774 /* 1454 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4775 /* 1457 */ // MIs[0] dst
4776 /* 1457 */ // No operand predicates
4777 /* 1457 */ // MIs[0] __add_sub_reg_match_0.tmp
4778 /* 1457 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4779 /* 1461 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4780 /* 1465 */ // MIs[1] src
4781 /* 1465 */ // No operand predicates
4782 /* 1465 */ // MIs[1] __add_sub_reg_match_0.x
4783 /* 1465 */ // No operand predicates
4784 /* 1465 */ // MIs[0] __add_sub_reg_match_0.x
4785 /* 1465 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4786 /* 1470 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4787 /* 1475 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4788 /* 1477 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4789 /* 1477 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4790 /* 1482 */ GIR_EraseRootFromParent_Done,
4791 /* 1483 */ // Label 124: @1483
4792 /* 1483 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1528), // Rule ID 7 //
4793 /* 1488 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4794 /* 1491 */ // MIs[0] root
4795 /* 1491 */ // No operand predicates
4796 /* 1491 */ // MIs[0] sub1
4797 /* 1491 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4798 /* 1495 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4799 /* 1499 */ // MIs[1] A
4800 /* 1499 */ // No operand predicates
4801 /* 1499 */ // MIs[1] B
4802 /* 1499 */ // No operand predicates
4803 /* 1499 */ // MIs[0] sub2
4804 /* 1499 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4805 /* 1503 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4806 /* 1507 */ // MIs[2] B
4807 /* 1507 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4808 /* 1512 */ // MIs[2] C
4809 /* 1512 */ // No operand predicates
4810 /* 1512 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4811 /* 1514 */ // Combiner Rule #7: AMinusBPlusBMinusC
4812 /* 1514 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4813 /* 1517 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4814 /* 1519 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4815 /* 1523 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4816 /* 1527 */ GIR_EraseRootFromParent_Done,
4817 /* 1528 */ // Label 125: @1528
4818 /* 1528 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1573), // Rule ID 6 //
4819 /* 1533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4820 /* 1536 */ // MIs[0] root
4821 /* 1536 */ // No operand predicates
4822 /* 1536 */ // MIs[0] sub1
4823 /* 1536 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4824 /* 1540 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4825 /* 1544 */ // MIs[1] A
4826 /* 1544 */ // No operand predicates
4827 /* 1544 */ // MIs[1] B
4828 /* 1544 */ // No operand predicates
4829 /* 1544 */ // MIs[0] sub2
4830 /* 1544 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4831 /* 1548 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4832 /* 1552 */ // MIs[2] C
4833 /* 1552 */ // No operand predicates
4834 /* 1552 */ // MIs[2] A
4835 /* 1552 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4836 /* 1557 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4837 /* 1559 */ // Combiner Rule #6: AMinusBPlusCMinusA
4838 /* 1559 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4839 /* 1562 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4840 /* 1564 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4841 /* 1568 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4842 /* 1572 */ GIR_EraseRootFromParent_Done,
4843 /* 1573 */ // Label 126: @1573
4844 /* 1573 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1628), // Rule ID 22 //
4845 /* 1578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4846 /* 1581 */ // MIs[0] dst
4847 /* 1581 */ // No operand predicates
4848 /* 1581 */ // MIs[0] __add_p2i_to_ptradd_match_0.x
4849 /* 1581 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4850 /* 1585 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
4851 /* 1589 */ // MIs[1] ptr
4852 /* 1589 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
4853 /* 1593 */ // MIs[0] other
4854 /* 1593 */ // No operand predicates
4855 /* 1593 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
4856 /* 1597 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4857 /* 1599 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4858 /* 1602 */ // Combiner Rule #22: add_p2i_to_ptradd @ [__add_p2i_to_ptradd_match_0[0]]
4859 /* 1602 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTR_ADD),
4860 /* 1605 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4861 /* 1610 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
4862 /* 1614 */ GIR_RootToRootCopy, /*OpIdx*/2, // other
4863 /* 1616 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTRTOINT),
4864 /* 1620 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4865 /* 1624 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4866 /* 1627 */ GIR_EraseRootFromParent_Done,
4867 /* 1628 */ // Label 127: @1628
4868 /* 1628 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1663), // Rule ID 46 //
4869 /* 1633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
4870 /* 1636 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4871 /* 1642 */ // MIs[0] root
4872 /* 1642 */ // No operand predicates
4873 /* 1642 */ // MIs[0] left
4874 /* 1642 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4875 /* 1646 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4876 /* 1650 */ // MIs[1] imm1
4877 /* 1650 */ // No operand predicates
4878 /* 1650 */ // MIs[0] right
4879 /* 1650 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4880 /* 1654 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4881 /* 1658 */ // MIs[2] imm2
4882 /* 1658 */ // No operand predicates
4883 /* 1658 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4884 /* 1660 */ // Combiner Rule #42: add_of_vscale
4885 /* 1660 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
4886 /* 1663 */ // Label 128: @1663
4887 /* 1663 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1684), // Rule ID 104 //
4888 /* 1668 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
4889 /* 1671 */ // MIs[0] dst
4890 /* 1671 */ // No operand predicates
4891 /* 1671 */ // MIs[0] __propagate_undef_any_op_match_0.x
4892 /* 1671 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4893 /* 1675 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4894 /* 1679 */ // MIs[0] __propagate_undef_any_op_match_0.y
4895 /* 1679 */ // No operand predicates
4896 /* 1679 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4897 /* 1681 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[0]]
4898 /* 1681 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
4899 /* 1684 */ // Label 129: @1684
4900 /* 1684 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1718), // Rule ID 3 //
4901 /* 1689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4902 /* 1692 */ // MIs[0] root
4903 /* 1692 */ // No operand predicates
4904 /* 1692 */ // MIs[0] A
4905 /* 1692 */ // No operand predicates
4906 /* 1692 */ // MIs[0] sub
4907 /* 1692 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4908 /* 1696 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4909 /* 1700 */ // MIs[1] Operand 1
4910 /* 1700 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4911 /* 1704 */ // MIs[1] B
4912 /* 1704 */ // No operand predicates
4913 /* 1704 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4914 /* 1706 */ // Combiner Rule #3: APlusZeroMinusB
4915 /* 1706 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4916 /* 1709 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4917 /* 1711 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4918 /* 1713 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4919 /* 1717 */ GIR_EraseRootFromParent_Done,
4920 /* 1718 */ // Label 130: @1718
4921 /* 1718 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1767), // Rule ID 161 //
4922 /* 1723 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4923 /* 1726 */ // MIs[0] dst
4924 /* 1726 */ // No operand predicates
4925 /* 1726 */ // MIs[0] newlhs
4926 /* 1726 */ // No operand predicates
4927 /* 1726 */ // MIs[0] __simplify_add_to_sub_match_0.neg
4928 /* 1726 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4929 /* 1730 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4930 /* 1734 */ // MIs[1] __simplify_add_to_sub_match_0.zero
4931 /* 1734 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4932 /* 1738 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4933 /* 1742 */ // MIs[2] Operand 1
4934 /* 1742 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(0),
4935 /* 1753 */ // MIs[1] newrhs
4936 /* 1753 */ // No operand predicates
4937 /* 1753 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4938 /* 1755 */ // Combiner Rule #112: simplify_add_to_sub @ [__simplify_add_to_sub_match_0[1]]
4939 /* 1755 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4940 /* 1758 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4941 /* 1760 */ GIR_RootToRootCopy, /*OpIdx*/1, // newlhs
4942 /* 1762 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // newrhs
4943 /* 1766 */ GIR_EraseRootFromParent_Done,
4944 /* 1767 */ // Label 131: @1767
4945 /* 1767 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1801), // Rule ID 4 //
4946 /* 1772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4947 /* 1775 */ // MIs[0] root
4948 /* 1775 */ // No operand predicates
4949 /* 1775 */ // MIs[0] A
4950 /* 1775 */ // No operand predicates
4951 /* 1775 */ // MIs[0] sub
4952 /* 1775 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4953 /* 1779 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4954 /* 1783 */ // MIs[1] B
4955 /* 1783 */ // No operand predicates
4956 /* 1783 */ // MIs[1] A
4957 /* 1783 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4958 /* 1788 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4959 /* 1793 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4960 /* 1795 */ // Combiner Rule #4: APlusBMinusB
4961 /* 1795 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4962 /* 1800 */ GIR_EraseRootFromParent_Done,
4963 /* 1801 */ // Label 132: @1801
4964 /* 1801 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1835), // Rule ID 147 //
4965 /* 1806 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4966 /* 1809 */ // MIs[0] dst
4967 /* 1809 */ // No operand predicates
4968 /* 1809 */ // MIs[0] __add_sub_reg_match_0.x
4969 /* 1809 */ // No operand predicates
4970 /* 1809 */ // MIs[0] __add_sub_reg_match_0.tmp
4971 /* 1809 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4972 /* 1813 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4973 /* 1817 */ // MIs[1] src
4974 /* 1817 */ // No operand predicates
4975 /* 1817 */ // MIs[1] __add_sub_reg_match_0.x
4976 /* 1817 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4977 /* 1822 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4978 /* 1827 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4979 /* 1829 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
4980 /* 1829 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4981 /* 1834 */ GIR_EraseRootFromParent_Done,
4982 /* 1835 */ // Label 133: @1835
4983 /* 1835 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1880), // Rule ID 8 //
4984 /* 1840 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4985 /* 1843 */ // MIs[0] root
4986 /* 1843 */ // No operand predicates
4987 /* 1843 */ // MIs[0] A
4988 /* 1843 */ // No operand predicates
4989 /* 1843 */ // MIs[0] sub1
4990 /* 1843 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4991 /* 1847 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4992 /* 1851 */ // MIs[1] B
4993 /* 1851 */ // No operand predicates
4994 /* 1851 */ // MIs[1] add1
4995 /* 1851 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4996 /* 1855 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4997 /* 1859 */ // MIs[2] A
4998 /* 1859 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4999 /* 1864 */ // MIs[2] C
5000 /* 1864 */ // No operand predicates
5001 /* 1864 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5002 /* 1866 */ // Combiner Rule #8: APlusBMinusAplusC
5003 /* 1866 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5004 /* 1869 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5005 /* 1871 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5006 /* 1875 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5007 /* 1879 */ GIR_EraseRootFromParent_Done,
5008 /* 1880 */ // Label 134: @1880
5009 /* 1880 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1925), // Rule ID 10 //
5010 /* 1885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5011 /* 1888 */ // MIs[0] root
5012 /* 1888 */ // No operand predicates
5013 /* 1888 */ // MIs[0] A
5014 /* 1888 */ // No operand predicates
5015 /* 1888 */ // MIs[0] sub1
5016 /* 1888 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5017 /* 1892 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5018 /* 1896 */ // MIs[1] B
5019 /* 1896 */ // No operand predicates
5020 /* 1896 */ // MIs[1] add1
5021 /* 1896 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5022 /* 1900 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5023 /* 1904 */ // MIs[2] C
5024 /* 1904 */ // No operand predicates
5025 /* 1904 */ // MIs[2] A
5026 /* 1904 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5027 /* 1909 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5028 /* 1911 */ // Combiner Rule #10: APlusBMinusCPlusA
5029 /* 1911 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5030 /* 1914 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5031 /* 1916 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5032 /* 1920 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
5033 /* 1924 */ GIR_EraseRootFromParent_Done,
5034 /* 1925 */ // Label 135: @1925
5035 /* 1925 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1980), // Rule ID 23 //
5036 /* 1930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
5037 /* 1933 */ // MIs[0] dst
5038 /* 1933 */ // No operand predicates
5039 /* 1933 */ // MIs[0] other
5040 /* 1933 */ // No operand predicates
5041 /* 1933 */ // MIs[0] __add_p2i_to_ptradd_match_0.x
5042 /* 1933 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5043 /* 1937 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5044 /* 1941 */ // MIs[1] ptr
5045 /* 1941 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5046 /* 1945 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5047 /* 1949 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5048 /* 1951 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5049 /* 1954 */ // Combiner Rule #22: add_p2i_to_ptradd @ [__add_p2i_to_ptradd_match_0[1]]
5050 /* 1954 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTR_ADD),
5051 /* 1957 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5052 /* 1962 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
5053 /* 1966 */ GIR_RootToRootCopy, /*OpIdx*/1, // other
5054 /* 1968 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5055 /* 1972 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5056 /* 1976 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5057 /* 1979 */ GIR_EraseRootFromParent_Done,
5058 /* 1980 */ // Label 136: @1980
5059 /* 1980 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2001), // Rule ID 107 //
5060 /* 1985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5061 /* 1988 */ // MIs[0] dst
5062 /* 1988 */ // No operand predicates
5063 /* 1988 */ // MIs[0] __propagate_undef_any_op_match_0.x
5064 /* 1988 */ // No operand predicates
5065 /* 1988 */ // MIs[0] __propagate_undef_any_op_match_0.y
5066 /* 1988 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5067 /* 1992 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5068 /* 1996 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5069 /* 1998 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[3]]
5070 /* 1998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5071 /* 2001 */ // Label 137: @2001
5072 /* 2001 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2024), // Rule ID 119 //
5073 /* 2006 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5074 /* 2009 */ // MIs[0] dst
5075 /* 2009 */ // No operand predicates
5076 /* 2009 */ // MIs[0] lhs
5077 /* 2009 */ // No operand predicates
5078 /* 2009 */ // MIs[0] Operand 2
5079 /* 2009 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5080 /* 2013 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5081 /* 2018 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
5082 /* 2018 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5083 /* 2023 */ GIR_EraseRootFromParent_Done,
5084 /* 2024 */ // Label 138: @2024
5085 /* 2024 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2035), // Rule ID 169 //
5086 /* 2029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
5087 /* 2032 */ // MIs[0] root
5088 /* 2032 */ // No operand predicates
5089 /* 2032 */ // MIs[0] src1
5090 /* 2032 */ // No operand predicates
5091 /* 2032 */ // MIs[0] src2
5092 /* 2032 */ // No operand predicates
5093 /* 2032 */ // Combiner Rule #116: reassoc_comm_binops
5094 /* 2032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
5095 /* 2035 */ // Label 139: @2035
5096 /* 2035 */ GIM_Reject,
5097 /* 2036 */ // Label 2: @2036
5098 /* 2036 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2047), // Rule ID 280 //
5099 /* 2041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5100 /* 2044 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SUB'
5101 /* 2044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5102 /* 2047 */ // Label 140: @2047
5103 /* 2047 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2058), // Rule ID 333 //
5104 /* 2052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5105 /* 2055 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SUB'
5106 /* 2055 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5107 /* 2058 */ // Label 141: @2058
5108 /* 2058 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2135), // Rule ID 440 //
5109 /* 2063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule268Enabled),
5110 /* 2066 */ // MIs[0] dst
5111 /* 2066 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5112 /* 2070 */ // MIs[0] sub1
5113 /* 2070 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5114 /* 2074 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5115 /* 2078 */ // MIs[1] a
5116 /* 2078 */ // No operand predicates
5117 /* 2078 */ // MIs[1] b
5118 /* 2078 */ // No operand predicates
5119 /* 2078 */ // MIs[0] Operand 2
5120 /* 2078 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5121 /* 2082 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5122 /* 2086 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5123 /* 2088 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5124 /* 2091 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5125 /* 2101 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5126 /* 2104 */ // Combiner Rule #268: sub_one_from_sub
5127 /* 2104 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5128 /* 2107 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5129 /* 2112 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
5130 /* 2116 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5131 /* 2119 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5132 /* 2123 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5133 /* 2127 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5134 /* 2130 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
5135 /* 2134 */ GIR_EraseRootFromParent_Done,
5136 /* 2135 */ // Label 142: @2135
5137 /* 2135 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2229), // Rule ID 446 //
5138 /* 2140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule272Enabled),
5139 /* 2143 */ // MIs[0] root
5140 /* 2143 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5141 /* 2147 */ // MIs[0] Operand 1
5142 /* 2147 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5143 /* 2151 */ // MIs[0] max
5144 /* 2151 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5145 /* 2155 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
5146 /* 2159 */ // MIs[1] A
5147 /* 2159 */ // No operand predicates
5148 /* 2159 */ // MIs[1] sub
5149 /* 2159 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5150 /* 2163 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5151 /* 2167 */ // MIs[2] Operand 1
5152 /* 2167 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5153 /* 2171 */ // MIs[2] A
5154 /* 2171 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5155 /* 2176 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5156 /* 2180 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5157 /* 2182 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5158 /* 2185 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5159 /* 2195 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5160 /* 2198 */ // Combiner Rule #272: SubSmaxSub
5161 /* 2198 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5162 /* 2201 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5163 /* 2206 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5164 /* 2209 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5165 /* 2213 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
5166 /* 2217 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5167 /* 2221 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5168 /* 2225 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5169 /* 2228 */ GIR_EraseRootFromParent_Done,
5170 /* 2229 */ // Label 143: @2229
5171 /* 2229 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2323), // Rule ID 447 //
5172 /* 2234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule273Enabled),
5173 /* 2237 */ // MIs[0] root
5174 /* 2237 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5175 /* 2241 */ // MIs[0] Operand 1
5176 /* 2241 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5177 /* 2245 */ // MIs[0] max
5178 /* 2245 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5179 /* 2249 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
5180 /* 2253 */ // MIs[1] A
5181 /* 2253 */ // No operand predicates
5182 /* 2253 */ // MIs[1] sub
5183 /* 2253 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5184 /* 2257 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5185 /* 2261 */ // MIs[2] Operand 1
5186 /* 2261 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5187 /* 2265 */ // MIs[2] A
5188 /* 2265 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5189 /* 2270 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5190 /* 2274 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5191 /* 2276 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5192 /* 2279 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5193 /* 2289 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5194 /* 2292 */ // Combiner Rule #273: SubUmaxSub
5195 /* 2292 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5196 /* 2295 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5197 /* 2300 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5198 /* 2303 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5199 /* 2307 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
5200 /* 2311 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5201 /* 2315 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5202 /* 2319 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5203 /* 2322 */ GIR_EraseRootFromParent_Done,
5204 /* 2323 */ // Label 144: @2323
5205 /* 2323 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2363), // Rule ID 444 //
5206 /* 2328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule270Enabled),
5207 /* 2331 */ // MIs[0] root
5208 /* 2331 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5209 /* 2335 */ // MIs[0] Operand 1
5210 /* 2335 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
5211 /* 2339 */ // MIs[0] op1
5212 /* 2339 */ // No operand predicates
5213 /* 2339 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5214 /* 2342 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
5215 /* 2352 */ // Combiner Rule #270: sub_minus_one
5216 /* 2352 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5217 /* 2355 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5218 /* 2357 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
5219 /* 2359 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5220 /* 2362 */ GIR_EraseRootFromParent_Done,
5221 /* 2363 */ // Label 145: @2363
5222 /* 2363 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2463), // Rule ID 445 //
5223 /* 2368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
5224 /* 2371 */ // MIs[0] d
5225 /* 2371 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5226 /* 2375 */ // MIs[0] a
5227 /* 2375 */ // No operand predicates
5228 /* 2375 */ // MIs[0] mul
5229 /* 2375 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5230 /* 2379 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5231 /* 2383 */ // MIs[1] x
5232 /* 2383 */ // No operand predicates
5233 /* 2383 */ // MIs[1] c
5234 /* 2383 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5235 /* 2387 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5236 /* 2391 */ // MIs[2] imm
5237 /* 2391 */ // No operand predicates
5238 /* 2391 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5239 /* 2395 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5240 /* 2397 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5241 /* 2400 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5242 /* 2403 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5243 /* 2413 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5244 /* 2416 */ // Combiner Rule #271: sub_of_mul_const
5245 /* 2416 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5246 /* 2419 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5247 /* 2424 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5248 /* 2427 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
5249 /* 2431 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
5250 /* 2435 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5251 /* 2440 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5252 /* 2444 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5253 /* 2447 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5254 /* 2451 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
5255 /* 2455 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
5256 /* 2459 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5257 /* 2462 */ GIR_EraseRootFromParent_Done,
5258 /* 2463 */ // Label 146: @2463
5259 /* 2463 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2524), // Rule ID 9 //
5260 /* 2468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
5261 /* 2471 */ // MIs[0] root
5262 /* 2471 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5263 /* 2475 */ // MIs[0] A
5264 /* 2475 */ // No operand predicates
5265 /* 2475 */ // MIs[0] sub1
5266 /* 2475 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5267 /* 2479 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5268 /* 2483 */ // MIs[1] B
5269 /* 2483 */ // No operand predicates
5270 /* 2483 */ // MIs[1] C
5271 /* 2483 */ // No operand predicates
5272 /* 2483 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5273 /* 2487 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5274 /* 2489 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5275 /* 2492 */ // Combiner Rule #9: AMinusBMinusC
5276 /* 2492 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5277 /* 2495 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5278 /* 2500 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
5279 /* 2504 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5280 /* 2508 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5281 /* 2512 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5282 /* 2516 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
5283 /* 2520 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5284 /* 2523 */ GIR_EraseRootFromParent_Done,
5285 /* 2524 */ // Label 147: @2524
5286 /* 2524 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2569), // Rule ID 0 //
5287 /* 2529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
5288 /* 2532 */ // MIs[0] root
5289 /* 2532 */ // No operand predicates
5290 /* 2532 */ // MIs[0] add1
5291 /* 2532 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5292 /* 2536 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5293 /* 2540 */ // MIs[1] A
5294 /* 2540 */ // No operand predicates
5295 /* 2540 */ // MIs[1] sub1
5296 /* 2540 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5297 /* 2544 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5298 /* 2548 */ // MIs[2] B
5299 /* 2548 */ // No operand predicates
5300 /* 2548 */ // MIs[2] C
5301 /* 2548 */ // No operand predicates
5302 /* 2548 */ // MIs[0] B
5303 /* 2548 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5304 /* 2553 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5305 /* 2555 */ // Combiner Rule #0: APlusBMinusCMinusB
5306 /* 2555 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5307 /* 2558 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5308 /* 2560 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5309 /* 2564 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5310 /* 2568 */ GIR_EraseRootFromParent_Done,
5311 /* 2569 */ // Label 148: @2569
5312 /* 2569 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2606), // Rule ID 14 //
5313 /* 2574 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5314 /* 2577 */ // MIs[0] root
5315 /* 2577 */ // No operand predicates
5316 /* 2577 */ // MIs[0] add
5317 /* 2577 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5318 /* 2581 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5319 /* 2585 */ // MIs[1] A
5320 /* 2585 */ // No operand predicates
5321 /* 2585 */ // MIs[1] c1
5322 /* 2585 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5323 /* 2589 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5324 /* 2593 */ // MIs[2] imm1
5325 /* 2593 */ // No operand predicates
5326 /* 2593 */ // MIs[0] c2
5327 /* 2593 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5328 /* 2597 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5329 /* 2601 */ // MIs[3] imm2
5330 /* 2601 */ // No operand predicates
5331 /* 2601 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5332 /* 2603 */ // Combiner Rule #14: APlusC1MinusC2
5333 /* 2603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
5334 /* 2606 */ // Label 149: @2606
5335 /* 2606 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2643), // Rule ID 17 //
5336 /* 2611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5337 /* 2614 */ // MIs[0] root
5338 /* 2614 */ // No operand predicates
5339 /* 2614 */ // MIs[0] sub1
5340 /* 2614 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5341 /* 2618 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5342 /* 2622 */ // MIs[1] c1
5343 /* 2622 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5344 /* 2626 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5345 /* 2630 */ // MIs[2] imm1
5346 /* 2630 */ // No operand predicates
5347 /* 2630 */ // MIs[1] A
5348 /* 2630 */ // No operand predicates
5349 /* 2630 */ // MIs[0] c2
5350 /* 2630 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5351 /* 2634 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5352 /* 2638 */ // MIs[3] imm2
5353 /* 2638 */ // No operand predicates
5354 /* 2638 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5355 /* 2640 */ // Combiner Rule #17: C1Minus2MinusC2
5356 /* 2640 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5357 /* 2643 */ // Label 150: @2643
5358 /* 2643 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2688), // Rule ID 1 //
5359 /* 2648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5360 /* 2651 */ // MIs[0] root
5361 /* 2651 */ // No operand predicates
5362 /* 2651 */ // MIs[0] sub2
5363 /* 2651 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5364 /* 2655 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5365 /* 2659 */ // MIs[1] A
5366 /* 2659 */ // No operand predicates
5367 /* 2659 */ // MIs[1] sub1
5368 /* 2659 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5369 /* 2663 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5370 /* 2667 */ // MIs[2] B
5371 /* 2667 */ // No operand predicates
5372 /* 2667 */ // MIs[2] C
5373 /* 2667 */ // No operand predicates
5374 /* 2667 */ // MIs[0] C
5375 /* 2667 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5376 /* 2672 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5377 /* 2674 */ // Combiner Rule #1: AMinusBMinusCMinusC
5378 /* 2674 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5379 /* 2677 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5380 /* 2679 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5381 /* 2683 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5382 /* 2687 */ GIR_EraseRootFromParent_Done,
5383 /* 2688 */ // Label 151: @2688
5384 /* 2688 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2725), // Rule ID 16 //
5385 /* 2693 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5386 /* 2696 */ // MIs[0] root
5387 /* 2696 */ // No operand predicates
5388 /* 2696 */ // MIs[0] sub1
5389 /* 2696 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5390 /* 2700 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5391 /* 2704 */ // MIs[1] A
5392 /* 2704 */ // No operand predicates
5393 /* 2704 */ // MIs[1] c1
5394 /* 2704 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5395 /* 2708 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5396 /* 2712 */ // MIs[2] imm1
5397 /* 2712 */ // No operand predicates
5398 /* 2712 */ // MIs[0] c2
5399 /* 2712 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5400 /* 2716 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5401 /* 2720 */ // MIs[3] imm2
5402 /* 2720 */ // No operand predicates
5403 /* 2720 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5404 /* 2722 */ // Combiner Rule #16: AMinusC1MinusC2
5405 /* 2722 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5406 /* 2725 */ // Label 152: @2725
5407 /* 2725 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2746), // Rule ID 105 //
5408 /* 2730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5409 /* 2733 */ // MIs[0] dst
5410 /* 2733 */ // No operand predicates
5411 /* 2733 */ // MIs[0] __propagate_undef_any_op_match_0.x
5412 /* 2733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5413 /* 2737 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5414 /* 2741 */ // MIs[0] __propagate_undef_any_op_match_0.y
5415 /* 2741 */ // No operand predicates
5416 /* 2741 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5417 /* 2743 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[1]]
5418 /* 2743 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5419 /* 2746 */ // Label 153: @2746
5420 /* 2746 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2789), // Rule ID 179 //
5421 /* 2751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5422 /* 2754 */ // MIs[0] dst
5423 /* 2754 */ // No operand predicates
5424 /* 2754 */ // MIs[0] Operand 1
5425 /* 2754 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5426 /* 2758 */ // MIs[0] and
5427 /* 2758 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5428 /* 2762 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5429 /* 2766 */ // MIs[1] x
5430 /* 2766 */ // No operand predicates
5431 /* 2766 */ // MIs[1] Operand 2
5432 /* 2766 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5433 /* 2770 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
5434 /* 2774 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5435 /* 2776 */ // Combiner Rule #126: neg_and_one_to_sext_inreg
5436 /* 2776 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5437 /* 2779 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5438 /* 2781 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5439 /* 2785 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5440 /* 2788 */ GIR_EraseRootFromParent_Done,
5441 /* 2789 */ // Label 154: @2789
5442 /* 2789 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2826), // Rule ID 15 //
5443 /* 2794 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5444 /* 2797 */ // MIs[0] root
5445 /* 2797 */ // No operand predicates
5446 /* 2797 */ // MIs[0] c2
5447 /* 2797 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5448 /* 2801 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5449 /* 2805 */ // MIs[1] imm2
5450 /* 2805 */ // No operand predicates
5451 /* 2805 */ // MIs[0] add
5452 /* 2805 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5453 /* 2809 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5454 /* 2813 */ // MIs[2] A
5455 /* 2813 */ // No operand predicates
5456 /* 2813 */ // MIs[2] c1
5457 /* 2813 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5458 /* 2817 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5459 /* 2821 */ // MIs[3] imm1
5460 /* 2821 */ // No operand predicates
5461 /* 2821 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5462 /* 2823 */ // Combiner Rule #15: C2MinusAPlusC1
5463 /* 2823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5464 /* 2826 */ // Label 155: @2826
5465 /* 2826 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2865), // Rule ID 130 //
5466 /* 2831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5467 /* 2834 */ // MIs[0] dst
5468 /* 2834 */ // No operand predicates
5469 /* 2834 */ // MIs[0] x
5470 /* 2834 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5471 /* 2838 */ // MIs[0] x
5472 /* 2838 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5473 /* 2843 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5474 /* 2846 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5475 /* 2856 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
5476 /* 2856 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5477 /* 2859 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5478 /* 2861 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5479 /* 2864 */ GIR_EraseRootFromParent_Done,
5480 /* 2865 */ // Label 156: @2865
5481 /* 2865 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2899), // Rule ID 12 //
5482 /* 2870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5483 /* 2873 */ // MIs[0] root
5484 /* 2873 */ // No operand predicates
5485 /* 2873 */ // MIs[0] A
5486 /* 2873 */ // No operand predicates
5487 /* 2873 */ // MIs[0] add
5488 /* 2873 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5489 /* 2877 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5490 /* 2881 */ // MIs[1] A
5491 /* 2881 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5492 /* 2886 */ // MIs[1] B
5493 /* 2886 */ // No operand predicates
5494 /* 2886 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5495 /* 2891 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5496 /* 2893 */ // Combiner Rule #12: AMinusBMinusA
5497 /* 2893 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5498 /* 2898 */ GIR_EraseRootFromParent_Done,
5499 /* 2899 */ // Label 157: @2899
5500 /* 2899 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2933), // Rule ID 11 //
5501 /* 2904 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5502 /* 2907 */ // MIs[0] root
5503 /* 2907 */ // No operand predicates
5504 /* 2907 */ // MIs[0] A
5505 /* 2907 */ // No operand predicates
5506 /* 2907 */ // MIs[0] sub1
5507 /* 2907 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5508 /* 2911 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5509 /* 2915 */ // MIs[1] Operand 1
5510 /* 2915 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5511 /* 2919 */ // MIs[1] B
5512 /* 2919 */ // No operand predicates
5513 /* 2919 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5514 /* 2921 */ // Combiner Rule #11: AMinusZeroMinusB
5515 /* 2921 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5516 /* 2924 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5517 /* 2926 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5518 /* 2928 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5519 /* 2932 */ GIR_EraseRootFromParent_Done,
5520 /* 2933 */ // Label 158: @2933
5521 /* 2933 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2960), // Rule ID 49 //
5522 /* 2938 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5523 /* 2941 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5524 /* 2947 */ // MIs[0] root
5525 /* 2947 */ // No operand predicates
5526 /* 2947 */ // MIs[0] x
5527 /* 2947 */ // No operand predicates
5528 /* 2947 */ // MIs[0] right
5529 /* 2947 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5530 /* 2951 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5531 /* 2955 */ // MIs[1] imm
5532 /* 2955 */ // No operand predicates
5533 /* 2955 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5534 /* 2957 */ // Combiner Rule #45: sub_of_vscale
5535 /* 2957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
5536 /* 2960 */ // Label 159: @2960
5537 /* 2960 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2981), // Rule ID 108 //
5538 /* 2965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5539 /* 2968 */ // MIs[0] dst
5540 /* 2968 */ // No operand predicates
5541 /* 2968 */ // MIs[0] __propagate_undef_any_op_match_0.x
5542 /* 2968 */ // No operand predicates
5543 /* 2968 */ // MIs[0] __propagate_undef_any_op_match_0.y
5544 /* 2968 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5545 /* 2972 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5546 /* 2976 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5547 /* 2978 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[4]]
5548 /* 2978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5549 /* 2981 */ // Label 160: @2981
5550 /* 2981 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(3004), // Rule ID 118 //
5551 /* 2986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5552 /* 2989 */ // MIs[0] dst
5553 /* 2989 */ // No operand predicates
5554 /* 2989 */ // MIs[0] lhs
5555 /* 2989 */ // No operand predicates
5556 /* 2989 */ // MIs[0] Operand 2
5557 /* 2989 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5558 /* 2993 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5559 /* 2998 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
5560 /* 2998 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5561 /* 3003 */ GIR_EraseRootFromParent_Done,
5562 /* 3004 */ // Label 161: @3004
5563 /* 3004 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(3025), // Rule ID 21 //
5564 /* 3009 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5565 /* 3012 */ // MIs[0] d
5566 /* 3012 */ // No operand predicates
5567 /* 3012 */ // MIs[0] op1
5568 /* 3012 */ // No operand predicates
5569 /* 3012 */ // MIs[0] c
5570 /* 3012 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5571 /* 3016 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5572 /* 3020 */ // MIs[1] imm
5573 /* 3020 */ // No operand predicates
5574 /* 3020 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5575 /* 3022 */ // Combiner Rule #21: sub_to_add
5576 /* 3022 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5577 /* 3025 */ // Label 162: @3025
5578 /* 3025 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(3036), // Rule ID 366 //
5579 /* 3030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5580 /* 3033 */ // MIs[0] dst
5581 /* 3033 */ // No operand predicates
5582 /* 3033 */ // MIs[0] src1
5583 /* 3033 */ // No operand predicates
5584 /* 3033 */ // MIs[0] src2
5585 /* 3033 */ // No operand predicates
5586 /* 3033 */ // Combiner Rule #224: sub_add_reg
5587 /* 3033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
5588 /* 3036 */ // Label 163: @3036
5589 /* 3036 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(3047), // Rule ID 406 //
5590 /* 3041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
5591 /* 3044 */ // MIs[0] dst
5592 /* 3044 */ // No operand predicates
5593 /* 3044 */ // MIs[0] src1
5594 /* 3044 */ // No operand predicates
5595 /* 3044 */ // MIs[0] src2
5596 /* 3044 */ // No operand predicates
5597 /* 3044 */ // Combiner Rule #237: simplify_neg_minmax
5598 /* 3044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5599 /* 3047 */ // Label 164: @3047
5600 /* 3047 */ GIM_Reject,
5601 /* 3048 */ // Label 3: @3048
5602 /* 3048 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(3059), // Rule ID 277 //
5603 /* 3053 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5604 /* 3056 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_MUL'
5605 /* 3056 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5606 /* 3059 */ // Label 165: @3059
5607 /* 3059 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(3070), // Rule ID 370 //
5608 /* 3064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5609 /* 3067 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
5610 /* 3067 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5611 /* 3070 */ // Label 166: @3070
5612 /* 3070 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(3110), // Rule ID 24 //
5613 /* 3075 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5614 /* 3078 */ // MIs[0] dst
5615 /* 3078 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5616 /* 3082 */ // MIs[0] x
5617 /* 3082 */ // No operand predicates
5618 /* 3082 */ // MIs[0] Operand 2
5619 /* 3082 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5620 /* 3086 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5621 /* 3089 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5622 /* 3099 */ // Combiner Rule #23: mul_by_neg_one
5623 /* 3099 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5624 /* 3102 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5625 /* 3104 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5626 /* 3107 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5627 /* 3109 */ GIR_EraseRootFromParent_Done,
5628 /* 3110 */ // Label 167: @3110
5629 /* 3110 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(3145), // Rule ID 47 //
5630 /* 3115 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
5631 /* 3118 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5632 /* 3124 */ // MIs[0] root
5633 /* 3124 */ // No operand predicates
5634 /* 3124 */ // MIs[0] left
5635 /* 3124 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5636 /* 3128 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5637 /* 3132 */ // MIs[1] scale
5638 /* 3132 */ // No operand predicates
5639 /* 3132 */ // MIs[0] x
5640 /* 3132 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5641 /* 3136 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5642 /* 3140 */ // MIs[2] imm1
5643 /* 3140 */ // No operand predicates
5644 /* 3140 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5645 /* 3142 */ // Combiner Rule #43: mul_of_vscale
5646 /* 3142 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
5647 /* 3145 */ // Label 168: @3145
5648 /* 3145 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3166), // Rule ID 85 //
5649 /* 3150 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
5650 /* 3153 */ // MIs[0] dst
5651 /* 3153 */ // No operand predicates
5652 /* 3153 */ // MIs[0] __undef_to_int_zero_match_0.x
5653 /* 3153 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5654 /* 3157 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5655 /* 3161 */ // MIs[0] __undef_to_int_zero_match_0.y
5656 /* 3161 */ // No operand predicates
5657 /* 3161 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5658 /* 3163 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[1]]
5659 /* 3163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
5660 /* 3166 */ // Label 169: @3166
5661 /* 3166 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3206), // Rule ID 139 //
5662 /* 3171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5663 /* 3174 */ // MIs[0] dst
5664 /* 3174 */ // No operand predicates
5665 /* 3174 */ // MIs[0] zero
5666 /* 3174 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5667 /* 3178 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5668 /* 3182 */ // MIs[1] Operand 1
5669 /* 3182 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5670 /* 3193 */ // MIs[0] rhs
5671 /* 3193 */ // No operand predicates
5672 /* 3193 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5673 /* 3198 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5674 /* 3200 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5675 /* 3200 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5676 /* 3205 */ GIR_EraseRootFromParent_Done,
5677 /* 3206 */ // Label 170: @3206
5678 /* 3206 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3227), // Rule ID 87 //
5679 /* 3211 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
5680 /* 3214 */ // MIs[0] dst
5681 /* 3214 */ // No operand predicates
5682 /* 3214 */ // MIs[0] __undef_to_int_zero_match_0.x
5683 /* 3214 */ // No operand predicates
5684 /* 3214 */ // MIs[0] __undef_to_int_zero_match_0.y
5685 /* 3214 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5686 /* 3218 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5687 /* 3222 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5688 /* 3224 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[3]]
5689 /* 3224 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
5690 /* 3227 */ // Label 171: @3227
5691 /* 3227 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3250), // Rule ID 140 //
5692 /* 3232 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5693 /* 3235 */ // MIs[0] dst
5694 /* 3235 */ // No operand predicates
5695 /* 3235 */ // MIs[0] lhs
5696 /* 3235 */ // No operand predicates
5697 /* 3235 */ // MIs[0] zero
5698 /* 3235 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5699 /* 3239 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5700 /* 3244 */ // Combiner Rule #94: binop_right_to_zero
5701 /* 3244 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5702 /* 3249 */ GIR_EraseRootFromParent_Done,
5703 /* 3250 */ // Label 172: @3250
5704 /* 3250 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3273), // Rule ID 145 //
5705 /* 3255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5706 /* 3258 */ // MIs[0] dst
5707 /* 3258 */ // No operand predicates
5708 /* 3258 */ // MIs[0] x
5709 /* 3258 */ // No operand predicates
5710 /* 3258 */ // MIs[0] Operand 2
5711 /* 3258 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5712 /* 3262 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5713 /* 3267 */ // Combiner Rule #99: right_identity_one_int
5714 /* 3267 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5715 /* 3272 */ GIR_EraseRootFromParent_Done,
5716 /* 3273 */ // Label 173: @3273
5717 /* 3273 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3284), // Rule ID 20 //
5718 /* 3278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5719 /* 3281 */ // MIs[0] d
5720 /* 3281 */ // No operand predicates
5721 /* 3281 */ // MIs[0] op1
5722 /* 3281 */ // No operand predicates
5723 /* 3281 */ // MIs[0] op2
5724 /* 3281 */ // No operand predicates
5725 /* 3281 */ // Combiner Rule #20: mul_to_shl
5726 /* 3281 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5727 /* 3284 */ // Label 174: @3284
5728 /* 3284 */ GIM_Reject,
5729 /* 3285 */ // Label 4: @3285
5730 /* 3285 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3296), // Rule ID 247 //
5731 /* 3290 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5732 /* 3293 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5733 /* 3293 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5734 /* 3296 */ // Label 175: @3296
5735 /* 3296 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3307), // Rule ID 283 //
5736 /* 3301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5737 /* 3304 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SDIV'
5738 /* 3304 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5739 /* 3307 */ // Label 176: @3307
5740 /* 3307 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3318), // Rule ID 338 //
5741 /* 3312 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5742 /* 3315 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5743 /* 3315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5744 /* 3318 */ // Label 177: @3318
5745 /* 3318 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3358), // Rule ID 135 //
5746 /* 3323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5747 /* 3326 */ // MIs[0] dst
5748 /* 3326 */ // No operand predicates
5749 /* 3326 */ // MIs[0] zero
5750 /* 3326 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5751 /* 3330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5752 /* 3334 */ // MIs[1] Operand 1
5753 /* 3334 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5754 /* 3345 */ // MIs[0] rhs
5755 /* 3345 */ // No operand predicates
5756 /* 3345 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5757 /* 3350 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5758 /* 3352 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5759 /* 3352 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5760 /* 3357 */ GIR_EraseRootFromParent_Done,
5761 /* 3358 */ // Label 178: @3358
5762 /* 3358 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3375), // Rule ID 362 //
5763 /* 3363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5764 /* 3366 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5765 /* 3372 */ // MIs[0] dst
5766 /* 3372 */ // No operand predicates
5767 /* 3372 */ // MIs[0] x
5768 /* 3372 */ // No operand predicates
5769 /* 3372 */ // MIs[0] y
5770 /* 3372 */ // No operand predicates
5771 /* 3372 */ // Combiner Rule #220: sdiv_by_pow2
5772 /* 3372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
5773 /* 3375 */ // Label 179: @3375
5774 /* 3375 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3386), // Rule ID 364 //
5775 /* 3380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5776 /* 3383 */ // MIs[0] dst
5777 /* 3383 */ // No operand predicates
5778 /* 3383 */ // MIs[0] x
5779 /* 3383 */ // No operand predicates
5780 /* 3383 */ // MIs[0] y
5781 /* 3383 */ // No operand predicates
5782 /* 3383 */ // Combiner Rule #222: sdiv_by_const
5783 /* 3383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
5784 /* 3386 */ // Label 180: @3386
5785 /* 3386 */ GIM_Reject,
5786 /* 3387 */ // Label 5: @3387
5787 /* 3387 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3398), // Rule ID 248 //
5788 /* 3392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5789 /* 3395 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
5790 /* 3395 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5791 /* 3398 */ // Label 181: @3398
5792 /* 3398 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3409), // Rule ID 282 //
5793 /* 3403 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5794 /* 3406 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UDIV'
5795 /* 3406 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5796 /* 3409 */ // Label 182: @3409
5797 /* 3409 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3420), // Rule ID 340 //
5798 /* 3414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5799 /* 3417 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UDIV'
5800 /* 3417 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5801 /* 3420 */ // Label 183: @3420
5802 /* 3420 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3441), // Rule ID 91 //
5803 /* 3425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5804 /* 3428 */ // MIs[0] dst
5805 /* 3428 */ // No operand predicates
5806 /* 3428 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
5807 /* 3428 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5808 /* 3432 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5809 /* 3436 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
5810 /* 3436 */ // No operand predicates
5811 /* 3436 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5812 /* 3438 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[1]]
5813 /* 3438 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
5814 /* 3441 */ // Label 184: @3441
5815 /* 3441 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3481), // Rule ID 136 //
5816 /* 3446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5817 /* 3449 */ // MIs[0] dst
5818 /* 3449 */ // No operand predicates
5819 /* 3449 */ // MIs[0] zero
5820 /* 3449 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5821 /* 3453 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5822 /* 3457 */ // MIs[1] Operand 1
5823 /* 3457 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5824 /* 3468 */ // MIs[0] rhs
5825 /* 3468 */ // No operand predicates
5826 /* 3468 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5827 /* 3473 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5828 /* 3475 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
5829 /* 3475 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5830 /* 3480 */ GIR_EraseRootFromParent_Done,
5831 /* 3481 */ // Label 185: @3481
5832 /* 3481 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3498), // Rule ID 361 //
5833 /* 3486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
5834 /* 3489 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5835 /* 3495 */ // MIs[0] dst
5836 /* 3495 */ // No operand predicates
5837 /* 3495 */ // MIs[0] x
5838 /* 3495 */ // No operand predicates
5839 /* 3495 */ // MIs[0] y
5840 /* 3495 */ // No operand predicates
5841 /* 3495 */ // Combiner Rule #219: udiv_by_pow2
5842 /* 3495 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
5843 /* 3498 */ // Label 186: @3498
5844 /* 3498 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3509), // Rule ID 363 //
5845 /* 3503 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5846 /* 3506 */ // MIs[0] dst
5847 /* 3506 */ // No operand predicates
5848 /* 3506 */ // MIs[0] x
5849 /* 3506 */ // No operand predicates
5850 /* 3506 */ // MIs[0] y
5851 /* 3506 */ // No operand predicates
5852 /* 3506 */ // Combiner Rule #221: udiv_by_const
5853 /* 3506 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
5854 /* 3509 */ // Label 187: @3509
5855 /* 3509 */ GIM_Reject,
5856 /* 3510 */ // Label 6: @3510
5857 /* 3510 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3521), // Rule ID 249 //
5858 /* 3515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5859 /* 3518 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_SREM'
5860 /* 3518 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5861 /* 3521 */ // Label 188: @3521
5862 /* 3521 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3532), // Rule ID 285 //
5863 /* 3526 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5864 /* 3529 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SREM'
5865 /* 3529 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5866 /* 3532 */ // Label 189: @3532
5867 /* 3532 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3543), // Rule ID 339 //
5868 /* 3537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5869 /* 3540 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SREM'
5870 /* 3540 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5871 /* 3543 */ // Label 190: @3543
5872 /* 3543 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3583), // Rule ID 137 //
5873 /* 3548 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5874 /* 3551 */ // MIs[0] dst
5875 /* 3551 */ // No operand predicates
5876 /* 3551 */ // MIs[0] zero
5877 /* 3551 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5878 /* 3555 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5879 /* 3559 */ // MIs[1] Operand 1
5880 /* 3559 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5881 /* 3570 */ // MIs[0] rhs
5882 /* 3570 */ // No operand predicates
5883 /* 3570 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5884 /* 3575 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5885 /* 3577 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
5886 /* 3577 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5887 /* 3582 */ GIR_EraseRootFromParent_Done,
5888 /* 3583 */ // Label 191: @3583
5889 /* 3583 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3594), // Rule ID 358 //
5890 /* 3588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
5891 /* 3591 */ // MIs[0] dst
5892 /* 3591 */ // No operand predicates
5893 /* 3591 */ // MIs[0] x
5894 /* 3591 */ // No operand predicates
5895 /* 3591 */ // MIs[0] y
5896 /* 3591 */ // No operand predicates
5897 /* 3591 */ // Combiner Rule #216: srem_pow2_to_mask
5898 /* 3591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
5899 /* 3594 */ // Label 192: @3594
5900 /* 3594 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3605), // Rule ID 360 //
5901 /* 3599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
5902 /* 3602 */ // MIs[0] dst
5903 /* 3602 */ // No operand predicates
5904 /* 3602 */ // MIs[0] x
5905 /* 3602 */ // No operand predicates
5906 /* 3602 */ // MIs[0] y
5907 /* 3602 */ // No operand predicates
5908 /* 3602 */ // Combiner Rule #218: srem_by_const
5909 /* 3602 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
5910 /* 3605 */ // Label 193: @3605
5911 /* 3605 */ GIM_Reject,
5912 /* 3606 */ // Label 7: @3606
5913 /* 3606 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3617), // Rule ID 250 //
5914 /* 3611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5915 /* 3614 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_UREM'
5916 /* 3614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5917 /* 3617 */ // Label 194: @3617
5918 /* 3617 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3628), // Rule ID 284 //
5919 /* 3622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5920 /* 3625 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UREM'
5921 /* 3625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5922 /* 3628 */ // Label 195: @3628
5923 /* 3628 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3639), // Rule ID 341 //
5924 /* 3633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5925 /* 3636 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UREM'
5926 /* 3636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5927 /* 3639 */ // Label 196: @3639
5928 /* 3639 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3660), // Rule ID 92 //
5929 /* 3644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5930 /* 3647 */ // MIs[0] dst
5931 /* 3647 */ // No operand predicates
5932 /* 3647 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
5933 /* 3647 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5934 /* 3651 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5935 /* 3655 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
5936 /* 3655 */ // No operand predicates
5937 /* 3655 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5938 /* 3657 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[2]]
5939 /* 3657 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
5940 /* 3660 */ // Label 197: @3660
5941 /* 3660 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3700), // Rule ID 138 //
5942 /* 3665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5943 /* 3668 */ // MIs[0] dst
5944 /* 3668 */ // No operand predicates
5945 /* 3668 */ // MIs[0] zero
5946 /* 3668 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5947 /* 3672 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5948 /* 3676 */ // MIs[1] Operand 1
5949 /* 3676 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5950 /* 3687 */ // MIs[0] rhs
5951 /* 3687 */ // No operand predicates
5952 /* 3687 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5953 /* 3692 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5954 /* 3694 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
5955 /* 3694 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5956 /* 3699 */ GIR_EraseRootFromParent_Done,
5957 /* 3700 */ // Label 198: @3700
5958 /* 3700 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3711), // Rule ID 198 //
5959 /* 3705 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
5960 /* 3708 */ // MIs[0] dst
5961 /* 3708 */ // No operand predicates
5962 /* 3708 */ // MIs[0] x
5963 /* 3708 */ // No operand predicates
5964 /* 3708 */ // MIs[0] y
5965 /* 3708 */ // No operand predicates
5966 /* 3708 */ // Combiner Rule #145: urem_pow2_to_mask
5967 /* 3708 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
5968 /* 3711 */ // Label 199: @3711
5969 /* 3711 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3722), // Rule ID 359 //
5970 /* 3716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
5971 /* 3719 */ // MIs[0] dst
5972 /* 3719 */ // No operand predicates
5973 /* 3719 */ // MIs[0] x
5974 /* 3719 */ // No operand predicates
5975 /* 3719 */ // MIs[0] y
5976 /* 3719 */ // No operand predicates
5977 /* 3719 */ // Combiner Rule #217: urem_by_const
5978 /* 3719 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
5979 /* 3722 */ // Label 200: @3722
5980 /* 3722 */ GIM_Reject,
5981 /* 3723 */ // Label 8: @3723
5982 /* 3723 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3734), // Rule ID 162 //
5983 /* 3728 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
5984 /* 3731 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
5985 /* 3731 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5986 /* 3734 */ // Label 201: @3734
5987 /* 3734 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3745), // Rule ID 220 //
5988 /* 3739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
5989 /* 3742 */ // Combiner Rule #167: overlapping_and; wip_match_opcode 'G_AND'
5990 /* 3742 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
5991 /* 3745 */ // Label 202: @3745
5992 /* 3745 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3756), // Rule ID 274 //
5993 /* 3750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5994 /* 3753 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_AND'
5995 /* 3753 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5996 /* 3756 */ // Label 203: @3756
5997 /* 3756 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3767), // Rule ID 335 //
5998 /* 3761 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5999 /* 3764 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_AND'
6000 /* 3764 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6001 /* 3767 */ // Label 204: @3767
6002 /* 3767 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3778), // Rule ID 371 //
6003 /* 3772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6004 /* 3775 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
6005 /* 3775 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6006 /* 3778 */ // Label 205: @3778
6007 /* 3778 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3789), // Rule ID 441 //
6008 /* 3783 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
6009 /* 3786 */ // Combiner Rule #269: binop_with_neg; wip_match_opcode 'G_AND'
6010 /* 3786 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6011 /* 3789 */ // Label 206: @3789
6012 /* 3789 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3875), // Rule ID 403 //
6013 /* 3794 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6014 /* 3797 */ // MIs[0] root
6015 /* 3797 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6016 /* 3801 */ // MIs[0] or
6017 /* 3801 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6018 /* 3805 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6019 /* 3809 */ // MIs[1] x
6020 /* 3809 */ // No operand predicates
6021 /* 3809 */ // MIs[1] y
6022 /* 3809 */ // No operand predicates
6023 /* 3809 */ // MIs[0] not
6024 /* 3809 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6025 /* 3813 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6026 /* 3817 */ // MIs[2] y
6027 /* 3817 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6028 /* 3822 */ // MIs[2] Operand 2
6029 /* 3822 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6030 /* 3826 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6031 /* 3828 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6032 /* 3831 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6033 /* 3841 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6034 /* 3844 */ // Combiner Rule #234: and_xor_or_to_xor_and
6035 /* 3844 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6036 /* 3847 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6037 /* 3852 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6038 /* 3856 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6039 /* 3859 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6040 /* 3863 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6041 /* 3867 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6042 /* 3871 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6043 /* 3874 */ GIR_EraseRootFromParent_Done,
6044 /* 3875 */ // Label 207: @3875
6045 /* 3875 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3973), // Rule ID 175 //
6046 /* 3880 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6047 /* 3883 */ // MIs[0] root
6048 /* 3883 */ // No operand predicates
6049 /* 3883 */ // MIs[0] d1
6050 /* 3883 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6051 /* 3887 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6052 /* 3891 */ // MIs[1] p
6053 /* 3891 */ // No operand predicates
6054 /* 3891 */ // MIs[1] s1
6055 /* 3891 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6056 /* 3895 */ // MIs[1] Operand 3
6057 /* 3895 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6058 /* 3899 */ // MIs[0] d2
6059 /* 3899 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6060 /* 3903 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6061 /* 3907 */ // MIs[2] p
6062 /* 3907 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6063 /* 3912 */ // MIs[2] s2
6064 /* 3912 */ // No operand predicates
6065 /* 3912 */ // MIs[2] Operand 3
6066 /* 3912 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6067 /* 3916 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6068 /* 3920 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6069 /* 3922 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6070 /* 3925 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6071 /* 3935 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6072 /* 3938 */ // Combiner Rule #122: double_icmp_zero_and_combine
6073 /* 3938 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6074 /* 3941 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6075 /* 3946 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6076 /* 3950 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6077 /* 3954 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6078 /* 3958 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6079 /* 3962 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6080 /* 3966 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6081 /* 3969 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6082 /* 3972 */ GIR_EraseRootFromParent_Done,
6083 /* 3973 */ // Label 208: @3973
6084 /* 3973 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(4010), // Rule ID 267 //
6085 /* 3978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6086 /* 3981 */ // MIs[0] root
6087 /* 3981 */ // No operand predicates
6088 /* 3981 */ // MIs[0] shift
6089 /* 3981 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6090 /* 3985 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6091 /* 3989 */ // MIs[1] x
6092 /* 3989 */ // No operand predicates
6093 /* 3989 */ // MIs[1] lsb
6094 /* 3989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6095 /* 3993 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6096 /* 3997 */ // MIs[2] imm1
6097 /* 3997 */ // No operand predicates
6098 /* 3997 */ // MIs[0] mask
6099 /* 3997 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
6100 /* 4001 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6101 /* 4005 */ // MIs[3] imm2
6102 /* 4005 */ // No operand predicates
6103 /* 4005 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
6104 /* 4007 */ // Combiner Rule #191: bitfield_extract_from_and
6105 /* 4007 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
6106 /* 4010 */ // Label 209: @4010
6107 /* 4010 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(4059), // Rule ID 402 //
6108 /* 4015 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6109 /* 4018 */ // MIs[0] root
6110 /* 4018 */ // No operand predicates
6111 /* 4018 */ // MIs[0] or
6112 /* 4018 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6113 /* 4022 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6114 /* 4026 */ // MIs[1] x
6115 /* 4026 */ // No operand predicates
6116 /* 4026 */ // MIs[1] not
6117 /* 4026 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6118 /* 4030 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6119 /* 4034 */ // MIs[2] y
6120 /* 4034 */ // No operand predicates
6121 /* 4034 */ // MIs[2] Operand 2
6122 /* 4034 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6123 /* 4038 */ // MIs[0] y
6124 /* 4038 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6125 /* 4043 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6126 /* 4045 */ // Combiner Rule #233: and_xor_or_to_and
6127 /* 4045 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6128 /* 4048 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6129 /* 4050 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6130 /* 4054 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6131 /* 4058 */ GIR_EraseRootFromParent_Done,
6132 /* 4059 */ // Label 210: @4059
6133 /* 4059 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(4080), // Rule ID 84 //
6134 /* 4064 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6135 /* 4067 */ // MIs[0] dst
6136 /* 4067 */ // No operand predicates
6137 /* 4067 */ // MIs[0] __undef_to_int_zero_match_0.x
6138 /* 4067 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6139 /* 4071 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6140 /* 4075 */ // MIs[0] __undef_to_int_zero_match_0.y
6141 /* 4075 */ // No operand predicates
6142 /* 4075 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6143 /* 4077 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[0]]
6144 /* 4077 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
6145 /* 4080 */ // Label 211: @4080
6146 /* 4080 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(4194), // Rule ID 466 //
6147 /* 4085 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule289Enabled),
6148 /* 4088 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i64,
6149 /* 4091 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_i64,
6150 /* 4094 */ // MIs[0] dst
6151 /* 4094 */ // No operand predicates
6152 /* 4094 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
6153 /* 4098 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_i32,
6154 /* 4101 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_i32,
6155 /* 4104 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_i32,
6156 /* 4107 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_i32,
6157 /* 4110 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_i32,
6158 /* 4113 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i32,
6159 /* 4116 */ // Combiner Rule #289: combine_and_s64_with_s32_mask
6160 /* 4116 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6161 /* 4119 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6162 /* 4124 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6163 /* 4129 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6164 /* 4131 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6165 /* 4135 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6166 /* 4140 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6167 /* 4145 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
6168 /* 4149 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6169 /* 4153 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6170 /* 4158 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
6171 /* 4161 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6172 /* 4164 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6173 /* 4168 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6174 /* 4173 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
6175 /* 4176 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
6176 /* 4179 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6177 /* 4183 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
6178 /* 4187 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
6179 /* 4190 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
6180 /* 4193 */ GIR_EraseRootFromParent_Done,
6181 /* 4194 */ // Label 212: @4194
6182 /* 4194 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(4218), // Rule ID 128 //
6183 /* 4199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6184 /* 4202 */ // MIs[0] dst
6185 /* 4202 */ // No operand predicates
6186 /* 4202 */ // MIs[0] src
6187 /* 4202 */ // No operand predicates
6188 /* 4202 */ // MIs[0] src
6189 /* 4202 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6190 /* 4207 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6191 /* 4212 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
6192 /* 4212 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6193 /* 4217 */ GIR_EraseRootFromParent_Done,
6194 /* 4218 */ // Label 213: @4218
6195 /* 4218 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(4239), // Rule ID 86 //
6196 /* 4223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6197 /* 4226 */ // MIs[0] dst
6198 /* 4226 */ // No operand predicates
6199 /* 4226 */ // MIs[0] __undef_to_int_zero_match_0.x
6200 /* 4226 */ // No operand predicates
6201 /* 4226 */ // MIs[0] __undef_to_int_zero_match_0.y
6202 /* 4226 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6203 /* 4230 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6204 /* 4234 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6205 /* 4236 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[2]]
6206 /* 4236 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
6207 /* 4239 */ // Label 214: @4239
6208 /* 4239 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(4250), // Rule ID 80 //
6209 /* 4244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6210 /* 4247 */ // MIs[0] dst
6211 /* 4247 */ // No operand predicates
6212 /* 4247 */ // MIs[0] src1
6213 /* 4247 */ // No operand predicates
6214 /* 4247 */ // MIs[0] src2
6215 /* 4247 */ // No operand predicates
6216 /* 4247 */ // Combiner Rule #74: load_and_mask
6217 /* 4247 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6218 /* 4250 */ // Label 215: @4250
6219 /* 4250 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(4261), // Rule ID 182 //
6220 /* 4255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6221 /* 4258 */ // MIs[0] dst
6222 /* 4258 */ // No operand predicates
6223 /* 4258 */ // MIs[0] src1
6224 /* 4258 */ // No operand predicates
6225 /* 4258 */ // MIs[0] src2
6226 /* 4258 */ // No operand predicates
6227 /* 4258 */ // Combiner Rule #129: narrow_binop_feeding_and
6228 /* 4258 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6229 /* 4261 */ // Label 216: @4261
6230 /* 4261 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(4272), // Rule ID 196 //
6231 /* 4266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
6232 /* 4269 */ // MIs[0] dst
6233 /* 4269 */ // No operand predicates
6234 /* 4269 */ // MIs[0] src1
6235 /* 4269 */ // No operand predicates
6236 /* 4269 */ // MIs[0] src2
6237 /* 4269 */ // No operand predicates
6238 /* 4269 */ // Combiner Rule #143: redundant_and
6239 /* 4269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6240 /* 4272 */ // Label 217: @4272
6241 /* 4272 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(4283), // Rule ID 323 //
6242 /* 4277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6243 /* 4280 */ // MIs[0] dst
6244 /* 4280 */ // No operand predicates
6245 /* 4280 */ // MIs[0] src1
6246 /* 4280 */ // No operand predicates
6247 /* 4280 */ // MIs[0] src2
6248 /* 4280 */ // No operand predicates
6249 /* 4280 */ // Combiner Rule #206: and_or_disjoint_mask
6250 /* 4280 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6251 /* 4283 */ // Label 218: @4283
6252 /* 4283 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(4294), // Rule ID 398 //
6253 /* 4288 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6254 /* 4291 */ // MIs[0] dst
6255 /* 4291 */ // No operand predicates
6256 /* 4291 */ // MIs[0] src1
6257 /* 4291 */ // No operand predicates
6258 /* 4291 */ // MIs[0] src2
6259 /* 4291 */ // No operand predicates
6260 /* 4291 */ // Combiner Rule #229: match_ands
6261 /* 4291 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6262 /* 4294 */ // Label 219: @4294
6263 /* 4294 */ GIM_Reject,
6264 /* 4295 */ // Label 9: @4295
6265 /* 4295 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4306), // Rule ID 163 //
6266 /* 4300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6267 /* 4303 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
6268 /* 4303 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6269 /* 4306 */ // Label 220: @4306
6270 /* 4306 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4317), // Rule ID 278 //
6271 /* 4311 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6272 /* 4314 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_OR'
6273 /* 4314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6274 /* 4317 */ // Label 221: @4317
6275 /* 4317 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4328), // Rule ID 336 //
6276 /* 4322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6277 /* 4325 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_OR'
6278 /* 4325 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6279 /* 4328 */ // Label 222: @4328
6280 /* 4328 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4339), // Rule ID 372 //
6281 /* 4333 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6282 /* 4336 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
6283 /* 4336 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6284 /* 4339 */ // Label 223: @4339
6285 /* 4339 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4350), // Rule ID 442 //
6286 /* 4344 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
6287 /* 4347 */ // Combiner Rule #269: binop_with_neg; wip_match_opcode 'G_OR'
6288 /* 4347 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6289 /* 4350 */ // Label 224: @4350
6290 /* 4350 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4436), // Rule ID 401 //
6291 /* 4355 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6292 /* 4358 */ // MIs[0] root
6293 /* 4358 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6294 /* 4362 */ // MIs[0] and
6295 /* 4362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6296 /* 4366 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6297 /* 4370 */ // MIs[1] x
6298 /* 4370 */ // No operand predicates
6299 /* 4370 */ // MIs[1] y
6300 /* 4370 */ // No operand predicates
6301 /* 4370 */ // MIs[0] not
6302 /* 4370 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6303 /* 4374 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6304 /* 4378 */ // MIs[2] y
6305 /* 4378 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6306 /* 4383 */ // MIs[2] Operand 2
6307 /* 4383 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6308 /* 4387 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6309 /* 4389 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6310 /* 4392 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6311 /* 4402 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6312 /* 4405 */ // Combiner Rule #232: or_and_xor_to_xor_or
6313 /* 4405 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6314 /* 4408 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6315 /* 4413 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6316 /* 4417 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6317 /* 4420 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6318 /* 4424 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6319 /* 4428 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6320 /* 4432 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6321 /* 4435 */ GIR_EraseRootFromParent_Done,
6322 /* 4436 */ // Label 225: @4436
6323 /* 4436 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4523), // Rule ID 468 //
6324 /* 4441 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule290Enabled),
6325 /* 4444 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i64,
6326 /* 4447 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_i64,
6327 /* 4450 */ // MIs[0] dst
6328 /* 4450 */ // No operand predicates
6329 /* 4450 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6330 /* 4454 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6331 /* 4458 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_i32,
6332 /* 4462 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
6333 /* 4466 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6334 /* 4468 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
6335 /* 4471 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6336 /* 4474 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6337 /* 4477 */ // Combiner Rule #290: combine_or_s64_s32 @ [dst[1]]
6338 /* 4477 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6339 /* 4480 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6340 /* 4485 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6341 /* 4490 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
6342 /* 4492 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6343 /* 4496 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6344 /* 4501 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6345 /* 4504 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
6346 /* 4508 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6347 /* 4512 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
6348 /* 4516 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6349 /* 4519 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
6350 /* 4522 */ GIR_EraseRootFromParent_Done,
6351 /* 4523 */ // Label 226: @4523
6352 /* 4523 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4570), // Rule ID 258 //
6353 /* 4528 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6354 /* 4531 */ // MIs[0] root
6355 /* 4531 */ // No operand predicates
6356 /* 4531 */ // MIs[0] out1
6357 /* 4531 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6358 /* 4535 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
6359 /* 4539 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6360 /* 4539 */ // No operand predicates
6361 /* 4539 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6362 /* 4539 */ // No operand predicates
6363 /* 4539 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6364 /* 4539 */ // No operand predicates
6365 /* 4539 */ // MIs[0] out2
6366 /* 4539 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6367 /* 4543 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
6368 /* 4547 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6369 /* 4547 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6370 /* 4552 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6371 /* 4552 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6372 /* 4557 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6373 /* 4562 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6374 /* 4564 */ // Combiner Rule #184: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
6375 /* 4564 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6376 /* 4569 */ GIR_EraseRootFromParent_Done,
6377 /* 4570 */ // Label 227: @4570
6378 /* 4570 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4617), // Rule ID 260 //
6379 /* 4575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6380 /* 4578 */ // MIs[0] root
6381 /* 4578 */ // No operand predicates
6382 /* 4578 */ // MIs[0] out1
6383 /* 4578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6384 /* 4582 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
6385 /* 4586 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6386 /* 4586 */ // No operand predicates
6387 /* 4586 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6388 /* 4586 */ // No operand predicates
6389 /* 4586 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6390 /* 4586 */ // No operand predicates
6391 /* 4586 */ // MIs[0] out2
6392 /* 4586 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6393 /* 4590 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6394 /* 4594 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6395 /* 4594 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6396 /* 4599 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6397 /* 4599 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6398 /* 4604 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6399 /* 4609 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6400 /* 4611 */ // Combiner Rule #185: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
6401 /* 4611 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6402 /* 4616 */ GIR_EraseRootFromParent_Done,
6403 /* 4617 */ // Label 228: @4617
6404 /* 4617 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4715), // Rule ID 176 //
6405 /* 4622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6406 /* 4625 */ // MIs[0] root
6407 /* 4625 */ // No operand predicates
6408 /* 4625 */ // MIs[0] d1
6409 /* 4625 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6410 /* 4629 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6411 /* 4633 */ // MIs[1] p
6412 /* 4633 */ // No operand predicates
6413 /* 4633 */ // MIs[1] s1
6414 /* 4633 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6415 /* 4637 */ // MIs[1] Operand 3
6416 /* 4637 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6417 /* 4641 */ // MIs[0] d2
6418 /* 4641 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6419 /* 4645 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6420 /* 4649 */ // MIs[2] p
6421 /* 4649 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6422 /* 4654 */ // MIs[2] s2
6423 /* 4654 */ // No operand predicates
6424 /* 4654 */ // MIs[2] Operand 3
6425 /* 4654 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6426 /* 4658 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
6427 /* 4662 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6428 /* 4664 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6429 /* 4667 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6430 /* 4677 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6431 /* 4680 */ // Combiner Rule #123: double_icmp_zero_or_combine
6432 /* 4680 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6433 /* 4683 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6434 /* 4688 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6435 /* 4692 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6436 /* 4696 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6437 /* 4700 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6438 /* 4704 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6439 /* 4708 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6440 /* 4711 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6441 /* 4714 */ GIR_EraseRootFromParent_Done,
6442 /* 4715 */ // Label 229: @4715
6443 /* 4715 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4764), // Rule ID 400 //
6444 /* 4720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6445 /* 4723 */ // MIs[0] root
6446 /* 4723 */ // No operand predicates
6447 /* 4723 */ // MIs[0] and
6448 /* 4723 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6449 /* 4727 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6450 /* 4731 */ // MIs[1] x
6451 /* 4731 */ // No operand predicates
6452 /* 4731 */ // MIs[1] not
6453 /* 4731 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6454 /* 4735 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6455 /* 4739 */ // MIs[2] y
6456 /* 4739 */ // No operand predicates
6457 /* 4739 */ // MIs[2] Operand 2
6458 /* 4739 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6459 /* 4743 */ // MIs[0] y
6460 /* 4743 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6461 /* 4748 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6462 /* 4750 */ // Combiner Rule #231: or_and_xor_to_or
6463 /* 4750 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6464 /* 4753 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6465 /* 4755 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6466 /* 4759 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6467 /* 4763 */ GIR_EraseRootFromParent_Done,
6468 /* 4764 */ // Label 230: @4764
6469 /* 4764 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4798), // Rule ID 452 //
6470 /* 4769 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6471 /* 4772 */ // MIs[0] dst
6472 /* 4772 */ // No operand predicates
6473 /* 4772 */ // MIs[0] __combine_or_of_and_match_0.and
6474 /* 4772 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6475 /* 4776 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6476 /* 4780 */ // MIs[1] x
6477 /* 4780 */ // No operand predicates
6478 /* 4780 */ // MIs[1] y
6479 /* 4780 */ // No operand predicates
6480 /* 4780 */ // MIs[0] x
6481 /* 4780 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6482 /* 4785 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6483 /* 4790 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6484 /* 4792 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
6485 /* 4792 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6486 /* 4797 */ GIR_EraseRootFromParent_Done,
6487 /* 4798 */ // Label 231: @4798
6488 /* 4798 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4832), // Rule ID 453 //
6489 /* 4803 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6490 /* 4806 */ // MIs[0] dst
6491 /* 4806 */ // No operand predicates
6492 /* 4806 */ // MIs[0] __combine_or_of_and_match_0.and
6493 /* 4806 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6494 /* 4810 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6495 /* 4814 */ // MIs[1] y
6496 /* 4814 */ // No operand predicates
6497 /* 4814 */ // MIs[1] x
6498 /* 4814 */ // No operand predicates
6499 /* 4814 */ // MIs[0] x
6500 /* 4814 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6501 /* 4819 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6502 /* 4824 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6503 /* 4826 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
6504 /* 4826 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6505 /* 4831 */ GIR_EraseRootFromParent_Done,
6506 /* 4832 */ // Label 232: @4832
6507 /* 4832 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4879), // Rule ID 261 //
6508 /* 4837 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6509 /* 4840 */ // MIs[0] root
6510 /* 4840 */ // No operand predicates
6511 /* 4840 */ // MIs[0] out2
6512 /* 4840 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6513 /* 4844 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6514 /* 4848 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6515 /* 4848 */ // No operand predicates
6516 /* 4848 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6517 /* 4848 */ // No operand predicates
6518 /* 4848 */ // MIs[0] out1
6519 /* 4848 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6520 /* 4852 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
6521 /* 4856 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6522 /* 4856 */ // No operand predicates
6523 /* 4856 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6524 /* 4856 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6525 /* 4861 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6526 /* 4861 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6527 /* 4866 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6528 /* 4871 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6529 /* 4873 */ // Combiner Rule #185: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6530 /* 4873 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6531 /* 4878 */ GIR_EraseRootFromParent_Done,
6532 /* 4879 */ // Label 233: @4879
6533 /* 4879 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4926), // Rule ID 259 //
6534 /* 4884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6535 /* 4887 */ // MIs[0] root
6536 /* 4887 */ // No operand predicates
6537 /* 4887 */ // MIs[0] out2
6538 /* 4887 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6539 /* 4891 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6540 /* 4895 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6541 /* 4895 */ // No operand predicates
6542 /* 4895 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6543 /* 4895 */ // No operand predicates
6544 /* 4895 */ // MIs[0] out1
6545 /* 4895 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6546 /* 4899 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6547 /* 4903 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6548 /* 4903 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6549 /* 4908 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6550 /* 4908 */ // No operand predicates
6551 /* 4908 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6552 /* 4908 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6553 /* 4913 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6554 /* 4918 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6555 /* 4920 */ // Combiner Rule #184: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6556 /* 4920 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6557 /* 4925 */ GIR_EraseRootFromParent_Done,
6558 /* 4926 */ // Label 234: @4926
6559 /* 4926 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4976), // Rule ID 405 //
6560 /* 4931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6561 /* 4934 */ // MIs[0] root
6562 /* 4934 */ // No operand predicates
6563 /* 4934 */ // MIs[0] xor
6564 /* 4934 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6565 /* 4938 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6566 /* 4942 */ // MIs[1] x
6567 /* 4942 */ // No operand predicates
6568 /* 4942 */ // MIs[1] y
6569 /* 4942 */ // No operand predicates
6570 /* 4942 */ // MIs[0] and
6571 /* 4942 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6572 /* 4946 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_AND),
6573 /* 4950 */ // MIs[2] x
6574 /* 4950 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6575 /* 4955 */ // MIs[2] y
6576 /* 4955 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6577 /* 4960 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6578 /* 4962 */ // Combiner Rule #236: or_xor_and
6579 /* 4962 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6580 /* 4965 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6581 /* 4967 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6582 /* 4971 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6583 /* 4975 */ GIR_EraseRootFromParent_Done,
6584 /* 4976 */ // Label 235: @4976
6585 /* 4976 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(5026), // Rule ID 404 //
6586 /* 4981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6587 /* 4984 */ // MIs[0] root
6588 /* 4984 */ // No operand predicates
6589 /* 4984 */ // MIs[0] xor
6590 /* 4984 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6591 /* 4988 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6592 /* 4992 */ // MIs[1] x
6593 /* 4992 */ // No operand predicates
6594 /* 4992 */ // MIs[1] y
6595 /* 4992 */ // No operand predicates
6596 /* 4992 */ // MIs[0] or
6597 /* 4992 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6598 /* 4996 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_OR),
6599 /* 5000 */ // MIs[2] x
6600 /* 5000 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6601 /* 5005 */ // MIs[2] y
6602 /* 5005 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6603 /* 5010 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6604 /* 5012 */ // Combiner Rule #235: or_xor_or
6605 /* 5012 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6606 /* 5015 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6607 /* 5017 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6608 /* 5021 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6609 /* 5025 */ GIR_EraseRootFromParent_Done,
6610 /* 5026 */ // Label 236: @5026
6611 /* 5026 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(5047), // Rule ID 88 //
6612 /* 5031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6613 /* 5034 */ // MIs[0] dst
6614 /* 5034 */ // No operand predicates
6615 /* 5034 */ // MIs[0] __undef_to_negative_one_match_0.x
6616 /* 5034 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6617 /* 5038 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6618 /* 5042 */ // MIs[0] __undef_to_negative_one_match_0.y
6619 /* 5042 */ // No operand predicates
6620 /* 5042 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6621 /* 5044 */ // Combiner Rule #78: undef_to_negative_one @ [__undef_to_negative_one_match_0[0]]
6622 /* 5044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
6623 /* 5047 */ // Label 237: @5047
6624 /* 5047 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(5248),
6625 /* 5052 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i64,
6626 /* 5055 */ GIM_RootCheckType, /*Op*/2, /*Type*/GILLT_i64,
6627 /* 5058 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(5139), // Rule ID 467 //
6628 /* 5063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule290Enabled),
6629 /* 5066 */ // MIs[0] dst
6630 /* 5066 */ // No operand predicates
6631 /* 5066 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6632 /* 5070 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6633 /* 5074 */ GIM_CheckType, /*MI*/1, /*Op*/1, /*Type*/GILLT_i32,
6634 /* 5078 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
6635 /* 5082 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6636 /* 5084 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
6637 /* 5087 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6638 /* 5090 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6639 /* 5093 */ // Combiner Rule #290: combine_or_s64_s32 @ [dst[0]]
6640 /* 5093 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6641 /* 5096 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6642 /* 5101 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6643 /* 5106 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6644 /* 5108 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6645 /* 5112 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6646 /* 5117 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6647 /* 5120 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // y
6648 /* 5124 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6649 /* 5128 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
6650 /* 5132 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6651 /* 5135 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
6652 /* 5138 */ GIR_EraseRootFromParent_Done,
6653 /* 5139 */ // Label 239: @5139
6654 /* 5139 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(5247), // Rule ID 465 //
6655 /* 5144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule288Enabled),
6656 /* 5147 */ // MIs[0] dst
6657 /* 5147 */ // No operand predicates
6658 /* 5147 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner33),
6659 /* 5151 */ GIR_MakeTempReg, /*TempRegID*/5, /*TypeID*/GILLT_i32,
6660 /* 5154 */ GIR_MakeTempReg, /*TempRegID*/4, /*TypeID*/GILLT_i32,
6661 /* 5157 */ GIR_MakeTempReg, /*TempRegID*/3, /*TypeID*/GILLT_i32,
6662 /* 5160 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/GILLT_i32,
6663 /* 5163 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_i32,
6664 /* 5166 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i32,
6665 /* 5169 */ // Combiner Rule #288: combine_or_s64_with_s32_mask
6666 /* 5169 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6667 /* 5172 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6668 /* 5177 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6669 /* 5182 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
6670 /* 5184 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
6671 /* 5188 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6672 /* 5193 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/3, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6673 /* 5198 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // y
6674 /* 5202 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6675 /* 5206 */ GIR_AddTempRegister, /*InsnID*/2, /*TempRegID*/4, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6676 /* 5211 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
6677 /* 5214 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
6678 /* 5217 */ GIR_BuildMI, /*InsnID*/3, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6679 /* 5221 */ GIR_AddTempRegister, /*InsnID*/3, /*TempRegID*/5, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6680 /* 5226 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/1,
6681 /* 5229 */ GIR_AddSimpleTempRegister, /*InsnID*/3, /*TempRegID*/3,
6682 /* 5232 */ GIR_BuildMI, /*InsnID*/4, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MERGE_VALUES),
6683 /* 5236 */ GIR_Copy, /*NewInsnID*/4, /*OldInsnID*/0, /*OpIdx*/0, // dst
6684 /* 5240 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/4,
6685 /* 5243 */ GIR_AddSimpleTempRegister, /*InsnID*/4, /*TempRegID*/5,
6686 /* 5246 */ GIR_EraseRootFromParent_Done,
6687 /* 5247 */ // Label 240: @5247
6688 /* 5247 */ GIM_Reject,
6689 /* 5248 */ // Label 238: @5248
6690 /* 5248 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(5272), // Rule ID 129 //
6691 /* 5253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6692 /* 5256 */ // MIs[0] dst
6693 /* 5256 */ // No operand predicates
6694 /* 5256 */ // MIs[0] src
6695 /* 5256 */ // No operand predicates
6696 /* 5256 */ // MIs[0] src
6697 /* 5256 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6698 /* 5261 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6699 /* 5266 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
6700 /* 5266 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6701 /* 5271 */ GIR_EraseRootFromParent_Done,
6702 /* 5272 */ // Label 241: @5272
6703 /* 5272 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(5306), // Rule ID 454 //
6704 /* 5277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6705 /* 5280 */ // MIs[0] dst
6706 /* 5280 */ // No operand predicates
6707 /* 5280 */ // MIs[0] x
6708 /* 5280 */ // No operand predicates
6709 /* 5280 */ // MIs[0] __combine_or_of_and_match_0.and
6710 /* 5280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6711 /* 5284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6712 /* 5288 */ // MIs[1] x
6713 /* 5288 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
6714 /* 5293 */ // MIs[1] y
6715 /* 5293 */ // No operand predicates
6716 /* 5293 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6717 /* 5298 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6718 /* 5300 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
6719 /* 5300 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6720 /* 5305 */ GIR_EraseRootFromParent_Done,
6721 /* 5306 */ // Label 242: @5306
6722 /* 5306 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(5340), // Rule ID 455 //
6723 /* 5311 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6724 /* 5314 */ // MIs[0] dst
6725 /* 5314 */ // No operand predicates
6726 /* 5314 */ // MIs[0] x
6727 /* 5314 */ // No operand predicates
6728 /* 5314 */ // MIs[0] __combine_or_of_and_match_0.and
6729 /* 5314 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6730 /* 5318 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6731 /* 5322 */ // MIs[1] y
6732 /* 5322 */ // No operand predicates
6733 /* 5322 */ // MIs[1] x
6734 /* 5322 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6735 /* 5327 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6736 /* 5332 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6737 /* 5334 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
6738 /* 5334 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6739 /* 5339 */ GIR_EraseRootFromParent_Done,
6740 /* 5340 */ // Label 243: @5340
6741 /* 5340 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(5361), // Rule ID 89 //
6742 /* 5345 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6743 /* 5348 */ // MIs[0] dst
6744 /* 5348 */ // No operand predicates
6745 /* 5348 */ // MIs[0] __undef_to_negative_one_match_0.x
6746 /* 5348 */ // No operand predicates
6747 /* 5348 */ // MIs[0] __undef_to_negative_one_match_0.y
6748 /* 5348 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6749 /* 5352 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6750 /* 5356 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6751 /* 5358 */ // Combiner Rule #78: undef_to_negative_one @ [__undef_to_negative_one_match_0[1]]
6752 /* 5358 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
6753 /* 5361 */ // Label 244: @5361
6754 /* 5361 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(5384), // Rule ID 120 //
6755 /* 5366 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6756 /* 5369 */ // MIs[0] dst
6757 /* 5369 */ // No operand predicates
6758 /* 5369 */ // MIs[0] lhs
6759 /* 5369 */ // No operand predicates
6760 /* 5369 */ // MIs[0] Operand 2
6761 /* 5369 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6762 /* 5373 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6763 /* 5378 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
6764 /* 5378 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6765 /* 5383 */ GIR_EraseRootFromParent_Done,
6766 /* 5384 */ // Label 245: @5384
6767 /* 5384 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(5395), // Rule ID 197 //
6768 /* 5389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
6769 /* 5392 */ // MIs[0] dst
6770 /* 5392 */ // No operand predicates
6771 /* 5392 */ // MIs[0] src1
6772 /* 5392 */ // No operand predicates
6773 /* 5392 */ // MIs[0] src2
6774 /* 5392 */ // No operand predicates
6775 /* 5392 */ // Combiner Rule #144: redundant_or
6776 /* 5392 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6777 /* 5395 */ // Label 246: @5395
6778 /* 5395 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(5406), // Rule ID 246 //
6779 /* 5400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6780 /* 5403 */ // MIs[0] dst
6781 /* 5403 */ // No operand predicates
6782 /* 5403 */ // MIs[0] src1
6783 /* 5403 */ // No operand predicates
6784 /* 5403 */ // MIs[0] src2
6785 /* 5403 */ // No operand predicates
6786 /* 5403 */ // Combiner Rule #177: load_or_combine
6787 /* 5403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
6788 /* 5406 */ // Label 247: @5406
6789 /* 5406 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(5417), // Rule ID 251 //
6790 /* 5411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6791 /* 5414 */ // MIs[0] dst
6792 /* 5414 */ // No operand predicates
6793 /* 5414 */ // MIs[0] src1
6794 /* 5414 */ // No operand predicates
6795 /* 5414 */ // MIs[0] src2
6796 /* 5414 */ // No operand predicates
6797 /* 5414 */ // Combiner Rule #179: funnel_shift_from_or_shift
6798 /* 5414 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6799 /* 5417 */ // Label 248: @5417
6800 /* 5417 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(5428), // Rule ID 399 //
6801 /* 5422 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
6802 /* 5425 */ // MIs[0] dst
6803 /* 5425 */ // No operand predicates
6804 /* 5425 */ // MIs[0] src1
6805 /* 5425 */ // No operand predicates
6806 /* 5425 */ // MIs[0] src2
6807 /* 5425 */ // No operand predicates
6808 /* 5425 */ // Combiner Rule #230: match_ors
6809 /* 5425 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
6810 /* 5428 */ // Label 249: @5428
6811 /* 5428 */ GIM_Reject,
6812 /* 5429 */ // Label 10: @5429
6813 /* 5429 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(5440), // Rule ID 164 //
6814 /* 5434 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6815 /* 5437 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
6816 /* 5437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6817 /* 5440 */ // Label 250: @5440
6818 /* 5440 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(5451), // Rule ID 281 //
6819 /* 5445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6820 /* 5448 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_XOR'
6821 /* 5448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6822 /* 5451 */ // Label 251: @5451
6823 /* 5451 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(5462), // Rule ID 337 //
6824 /* 5456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6825 /* 5459 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_XOR'
6826 /* 5459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6827 /* 5462 */ // Label 252: @5462
6828 /* 5462 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(5473), // Rule ID 373 //
6829 /* 5467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6830 /* 5470 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
6831 /* 5470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6832 /* 5473 */ // Label 253: @5473
6833 /* 5473 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(5484), // Rule ID 443 //
6834 /* 5478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
6835 /* 5481 */ // Combiner Rule #269: binop_with_neg; wip_match_opcode 'G_XOR'
6836 /* 5481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6837 /* 5484 */ // Label 254: @5484
6838 /* 5484 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(5544), // Rule ID 13 //
6839 /* 5489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6840 /* 5492 */ // MIs[0] root
6841 /* 5492 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6842 /* 5496 */ // MIs[0] add
6843 /* 5496 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6844 /* 5500 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6845 /* 5504 */ // MIs[1] A
6846 /* 5504 */ // No operand predicates
6847 /* 5504 */ // MIs[1] Operand 2
6848 /* 5504 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
6849 /* 5508 */ // MIs[0] Operand 2
6850 /* 5508 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6851 /* 5512 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
6852 /* 5516 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6853 /* 5518 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6854 /* 5521 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6855 /* 5531 */ // Combiner Rule #13: NotAPlusNegOne
6856 /* 5531 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6857 /* 5534 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6858 /* 5536 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6859 /* 5539 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
6860 /* 5543 */ GIR_EraseRootFromParent_Done,
6861 /* 5544 */ // Label 255: @5544
6862 /* 5544 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(5565), // Rule ID 106 //
6863 /* 5549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6864 /* 5552 */ // MIs[0] dst
6865 /* 5552 */ // No operand predicates
6866 /* 5552 */ // MIs[0] __propagate_undef_any_op_match_0.x
6867 /* 5552 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6868 /* 5556 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6869 /* 5560 */ // MIs[0] __propagate_undef_any_op_match_0.y
6870 /* 5560 */ // No operand predicates
6871 /* 5560 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6872 /* 5562 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[2]]
6873 /* 5562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
6874 /* 5565 */ // Label 256: @5565
6875 /* 5565 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(5604), // Rule ID 131 //
6876 /* 5570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
6877 /* 5573 */ // MIs[0] dst
6878 /* 5573 */ // No operand predicates
6879 /* 5573 */ // MIs[0] x
6880 /* 5573 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
6881 /* 5577 */ // MIs[0] x
6882 /* 5577 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6883 /* 5582 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6884 /* 5585 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6885 /* 5595 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
6886 /* 5595 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6887 /* 5598 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6888 /* 5600 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6889 /* 5603 */ GIR_EraseRootFromParent_Done,
6890 /* 5604 */ // Label 257: @5604
6891 /* 5604 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(5625), // Rule ID 109 //
6892 /* 5609 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6893 /* 5612 */ // MIs[0] dst
6894 /* 5612 */ // No operand predicates
6895 /* 5612 */ // MIs[0] __propagate_undef_any_op_match_0.x
6896 /* 5612 */ // No operand predicates
6897 /* 5612 */ // MIs[0] __propagate_undef_any_op_match_0.y
6898 /* 5612 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6899 /* 5616 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6900 /* 5620 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6901 /* 5622 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[5]]
6902 /* 5622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
6903 /* 5625 */ // Label 258: @5625
6904 /* 5625 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(5648), // Rule ID 121 //
6905 /* 5630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6906 /* 5633 */ // MIs[0] dst
6907 /* 5633 */ // No operand predicates
6908 /* 5633 */ // MIs[0] lhs
6909 /* 5633 */ // No operand predicates
6910 /* 5633 */ // MIs[0] Operand 2
6911 /* 5633 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6912 /* 5637 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6913 /* 5642 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
6914 /* 5642 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6915 /* 5647 */ GIR_EraseRootFromParent_Done,
6916 /* 5648 */ // Label 259: @5648
6917 /* 5648 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(5659), // Rule ID 202 //
6918 /* 5653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
6919 /* 5656 */ // MIs[0] dst
6920 /* 5656 */ // No operand predicates
6921 /* 5656 */ // MIs[0] src1
6922 /* 5656 */ // No operand predicates
6923 /* 5656 */ // MIs[0] src2
6924 /* 5656 */ // No operand predicates
6925 /* 5656 */ // Combiner Rule #149: not_cmp_fold
6926 /* 5656 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
6927 /* 5659 */ // Label 260: @5659
6928 /* 5659 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(5670), // Rule ID 234 //
6929 /* 5664 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
6930 /* 5667 */ // MIs[0] dst
6931 /* 5667 */ // No operand predicates
6932 /* 5667 */ // MIs[0] src1
6933 /* 5667 */ // No operand predicates
6934 /* 5667 */ // MIs[0] src2
6935 /* 5667 */ // No operand predicates
6936 /* 5667 */ // Combiner Rule #173: xor_of_and_with_same_reg
6937 /* 5667 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
6938 /* 5670 */ // Label 261: @5670
6939 /* 5670 */ GIM_Reject,
6940 /* 5671 */ // Label 11: @5671
6941 /* 5671 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(5685), // Rule ID 159 //
6942 /* 5676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
6943 /* 5679 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6944 /* 5682 */ // MIs[0] dst
6945 /* 5682 */ // No operand predicates
6946 /* 5682 */ // MIs[0] srcs
6947 /* 5682 */ // No operand predicates
6948 /* 5682 */ // Combiner Rule #111: extend_through_phis
6949 /* 5682 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
6950 /* 5685 */ // Label 262: @5685
6951 /* 5685 */ GIM_Reject,
6952 /* 5686 */ // Label 12: @5686
6953 /* 5686 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(5697), // Rule ID 415 //
6954 /* 5691 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
6955 /* 5694 */ // Combiner Rule #246: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
6956 /* 5694 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
6957 /* 5697 */ // Label 263: @5697
6958 /* 5697 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5708), // Rule ID 416 //
6959 /* 5702 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
6960 /* 5705 */ // Combiner Rule #247: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
6961 /* 5705 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
6962 /* 5708 */ // Label 264: @5708
6963 /* 5708 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5719), // Rule ID 418 //
6964 /* 5713 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
6965 /* 5716 */ // Combiner Rule #249: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
6966 /* 5716 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6967 /* 5719 */ // Label 265: @5719
6968 /* 5719 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5730), // Rule ID 419 //
6969 /* 5724 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
6970 /* 5727 */ // Combiner Rule #250: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
6971 /* 5727 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6972 /* 5730 */ // Label 266: @5730
6973 /* 5730 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5741), // Rule ID 420 //
6974 /* 5735 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
6975 /* 5738 */ // Combiner Rule #251: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
6976 /* 5738 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
6977 /* 5741 */ // Label 267: @5741
6978 /* 5741 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5752), // Rule ID 421 //
6979 /* 5746 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
6980 /* 5749 */ // Combiner Rule #252: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
6981 /* 5749 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
6982 /* 5752 */ // Label 268: @5752
6983 /* 5752 */ GIM_Reject,
6984 /* 5753 */ // Label 13: @5753
6985 /* 5753 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5767), // Rule ID 417 //
6986 /* 5758 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
6987 /* 5761 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
6988 /* 5764 */ // MIs[0] dst
6989 /* 5764 */ // No operand predicates
6990 /* 5764 */ // MIs[0] merge_srcs
6991 /* 5764 */ // No operand predicates
6992 /* 5764 */ // Combiner Rule #248: merge_unmerge
6993 /* 5764 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6994 /* 5767 */ // Label 269: @5767
6995 /* 5767 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5829),
6996 /* 5772 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
6997 /* 5775 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5796), // Rule ID 422 //
6998 /* 5780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
6999 /* 5783 */ // MIs[0] root
7000 /* 5783 */ // No operand predicates
7001 /* 5783 */ // MIs[0] x
7002 /* 5783 */ // No operand predicates
7003 /* 5783 */ // MIs[0] undef
7004 /* 5783 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7005 /* 5787 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7006 /* 5791 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7007 /* 5793 */ // Combiner Rule #253: merge_of_x_and_undef
7008 /* 5793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7009 /* 5796 */ // Label 271: @5796
7010 /* 5796 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5828), // Rule ID 423 //
7011 /* 5801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
7012 /* 5804 */ // MIs[0] root
7013 /* 5804 */ // No operand predicates
7014 /* 5804 */ // MIs[0] x
7015 /* 5804 */ // No operand predicates
7016 /* 5804 */ // MIs[0] zero
7017 /* 5804 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7018 /* 5808 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7019 /* 5812 */ // MIs[1] Operand 1
7020 /* 5812 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7021 /* 5823 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7022 /* 5825 */ // Combiner Rule #254: merge_of_x_and_zero
7023 /* 5825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
7024 /* 5828 */ // Label 272: @5828
7025 /* 5828 */ GIM_Reject,
7026 /* 5829 */ // Label 270: @5829
7027 /* 5829 */ GIM_Reject,
7028 /* 5830 */ // Label 14: @5830
7029 /* 5830 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5841), // Rule ID 111 //
7030 /* 5835 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
7031 /* 5838 */ // Combiner Rule #84: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
7032 /* 5838 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7033 /* 5841 */ // Label 273: @5841
7034 /* 5841 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5852), // Rule ID 150 //
7035 /* 5846 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
7036 /* 5849 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
7037 /* 5849 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
7038 /* 5852 */ // Label 274: @5852
7039 /* 5852 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5894),
7040 /* 5857 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7041 /* 5860 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5871), // Rule ID 76 //
7042 /* 5865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
7043 /* 5868 */ // MIs[0] dst
7044 /* 5868 */ // No operand predicates
7045 /* 5868 */ // MIs[0] srcs
7046 /* 5868 */ // No operand predicates
7047 /* 5868 */ // Combiner Rule #72: extract_all_elts_from_build_vector
7048 /* 5868 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7049 /* 5871 */ // Label 276: @5871
7050 /* 5871 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5882), // Rule ID 414 //
7051 /* 5876 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
7052 /* 5879 */ // MIs[0] dst
7053 /* 5879 */ // No operand predicates
7054 /* 5879 */ // MIs[0] unused
7055 /* 5879 */ // No operand predicates
7056 /* 5879 */ // Combiner Rule #245: combine_use_vector_truncate
7057 /* 5879 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
7058 /* 5882 */ // Label 277: @5882
7059 /* 5882 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5893), // Rule ID 424 //
7060 /* 5887 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
7061 /* 5890 */ // MIs[0] dst
7062 /* 5890 */ // No operand predicates
7063 /* 5890 */ // MIs[0] unused
7064 /* 5890 */ // No operand predicates
7065 /* 5890 */ // Combiner Rule #255: combine_build_unmerge
7066 /* 5890 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
7067 /* 5893 */ // Label 278: @5893
7068 /* 5893 */ GIM_Reject,
7069 /* 5894 */ // Label 275: @5894
7070 /* 5894 */ GIM_Reject,
7071 /* 5895 */ // Label 15: @5895
7072 /* 5895 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5906), // Rule ID 149 //
7073 /* 5900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
7074 /* 5903 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
7075 /* 5903 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
7076 /* 5906 */ // Label 279: @5906
7077 /* 5906 */ GIM_Reject,
7078 /* 5907 */ // Label 16: @5907
7079 /* 5907 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5921), // Rule ID 407 //
7080 /* 5912 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
7081 /* 5915 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7082 /* 5918 */ // MIs[0] dst
7083 /* 5918 */ // No operand predicates
7084 /* 5918 */ // MIs[0] srcs
7085 /* 5918 */ // No operand predicates
7086 /* 5918 */ // Combiner Rule #238: combine_concat_vector
7087 /* 5918 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7088 /* 5921 */ // Label 280: @5921
7089 /* 5921 */ GIM_Reject,
7090 /* 5922 */ // Label 17: @5922
7091 /* 5922 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5943), // Rule ID 142 //
7092 /* 5927 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
7093 /* 5930 */ // MIs[0] dst
7094 /* 5930 */ // No operand predicates
7095 /* 5930 */ // MIs[0] t
7096 /* 5930 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7097 /* 5934 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
7098 /* 5938 */ // MIs[1] ptr
7099 /* 5938 */ // No operand predicates
7100 /* 5938 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7101 /* 5940 */ // Combiner Rule #96: i2p_to_p2i
7102 /* 5940 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
7103 /* 5943 */ // Label 281: @5943
7104 /* 5943 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5964), // Rule ID 100 //
7105 /* 5948 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7106 /* 5951 */ // MIs[0] dst
7107 /* 5951 */ // No operand predicates
7108 /* 5951 */ // MIs[0] __unary_undef_to_undef_match_0.x
7109 /* 5951 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7110 /* 5955 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7111 /* 5959 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7112 /* 5961 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
7113 /* 5961 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7114 /* 5964 */ // Label 282: @5964
7115 /* 5964 */ GIM_Reject,
7116 /* 5965 */ // Label 18: @5965
7117 /* 5965 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5998), // Rule ID 141 //
7118 /* 5970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
7119 /* 5973 */ // MIs[0] dst
7120 /* 5973 */ // No operand predicates
7121 /* 5973 */ // MIs[0] mid
7122 /* 5973 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7123 /* 5977 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
7124 /* 5981 */ // MIs[1] x
7125 /* 5981 */ // No operand predicates
7126 /* 5981 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
7127 /* 5985 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7128 /* 5990 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7129 /* 5992 */ // Combiner Rule #95: p2i_to_i2p
7130 /* 5992 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7131 /* 5997 */ GIR_EraseRootFromParent_Done,
7132 /* 5998 */ // Label 283: @5998
7133 /* 5998 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(6019), // Rule ID 101 //
7134 /* 6003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7135 /* 6006 */ // MIs[0] dst
7136 /* 6006 */ // No operand predicates
7137 /* 6006 */ // MIs[0] __unary_undef_to_undef_match_0.x
7138 /* 6006 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7139 /* 6010 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7140 /* 6014 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7141 /* 6016 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
7142 /* 6016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7143 /* 6019 */ // Label 284: @6019
7144 /* 6019 */ GIM_Reject,
7145 /* 6020 */ // Label 19: @6020
7146 /* 6020 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(6052), // Rule ID 154 //
7147 /* 6025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7148 /* 6028 */ // MIs[0] dst
7149 /* 6028 */ // No operand predicates
7150 /* 6028 */ // MIs[0] src1
7151 /* 6028 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7152 /* 6032 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
7153 /* 6036 */ // MIs[1] src0
7154 /* 6036 */ // No operand predicates
7155 /* 6036 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
7156 /* 6040 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7157 /* 6042 */ // Combiner Rule #106: bitcast_bitcast_to_bitcast
7158 /* 6042 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
7159 /* 6045 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7160 /* 6047 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
7161 /* 6051 */ GIR_EraseRootFromParent_Done,
7162 /* 6052 */ // Label 285: @6052
7163 /* 6052 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(6073), // Rule ID 153 //
7164 /* 6057 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
7165 /* 6060 */ // MIs[0] dst
7166 /* 6060 */ // No operand predicates
7167 /* 6060 */ // MIs[0] src1
7168 /* 6060 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7169 /* 6064 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
7170 /* 6068 */ // MIs[1] src0
7171 /* 6068 */ // No operand predicates
7172 /* 6068 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7173 /* 6070 */ // Combiner Rule #105: bitcast_bitcast_fold
7174 /* 6070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
7175 /* 6073 */ // Label 286: @6073
7176 /* 6073 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(6094), // Rule ID 98 //
7177 /* 6078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7178 /* 6081 */ // MIs[0] dst
7179 /* 6081 */ // No operand predicates
7180 /* 6081 */ // MIs[0] __unary_undef_to_undef_match_0.x
7181 /* 6081 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7182 /* 6085 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7183 /* 6089 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7184 /* 6091 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
7185 /* 6091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7186 /* 6094 */ // Label 287: @6094
7187 /* 6094 */ GIM_Reject,
7188 /* 6095 */ // Label 20: @6095
7189 /* 6095 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(6124), // Rule ID 25 //
7190 /* 6100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7191 /* 6103 */ // MIs[0] dst
7192 /* 6103 */ // No operand predicates
7193 /* 6103 */ // MIs[0] src
7194 /* 6103 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7195 /* 6107 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
7196 /* 6111 */ // MIs[1] __idempotent_prop_match_0.x
7197 /* 6111 */ // No operand predicates
7198 /* 6111 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7199 /* 6116 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7200 /* 6118 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
7201 /* 6118 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7202 /* 6123 */ GIR_EraseRootFromParent_Done,
7203 /* 6124 */ // Label 288: @6124
7204 /* 6124 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(6147), // Rule ID 50 //
7205 /* 6129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
7206 /* 6132 */ // MIs[0] root
7207 /* 6132 */ // No operand predicates
7208 /* 6132 */ // MIs[0] src
7209 /* 6132 */ // No operand predicates
7210 /* 6132 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7211 /* 6136 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7212 /* 6141 */ // Combiner Rule #46: freeze_of_non_undef_non_poison
7213 /* 6141 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7214 /* 6146 */ GIR_EraseRootFromParent_Done,
7215 /* 6147 */ // Label 289: @6147
7216 /* 6147 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(6158), // Rule ID 51 //
7217 /* 6152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
7218 /* 6155 */ // MIs[0] dst
7219 /* 6155 */ // No operand predicates
7220 /* 6155 */ // MIs[0] src
7221 /* 6155 */ // No operand predicates
7222 /* 6155 */ // Combiner Rule #47: push_freeze_to_prevent_poison_from_propagating
7223 /* 6155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
7224 /* 6158 */ // Label 290: @6158
7225 /* 6158 */ GIM_Reject,
7226 /* 6159 */ // Label 21: @6159
7227 /* 6159 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(6180), // Rule ID 212 //
7228 /* 6164 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7229 /* 6167 */ // MIs[0] dst
7230 /* 6167 */ // No operand predicates
7231 /* 6167 */ // MIs[0] src0
7232 /* 6167 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7233 /* 6171 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7234 /* 6175 */ // MIs[1] cst
7235 /* 6175 */ // No operand predicates
7236 /* 6175 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7237 /* 6177 */ // Combiner Rule #159: constant_fold_intrinsic_trunc
7238 /* 6177 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7239 /* 6180 */ // Label 291: @6180
7240 /* 6180 */ GIM_Reject,
7241 /* 6181 */ // Label 22: @6181
7242 /* 6181 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(6202), // Rule ID 213 //
7243 /* 6186 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7244 /* 6189 */ // MIs[0] dst
7245 /* 6189 */ // No operand predicates
7246 /* 6189 */ // MIs[0] src0
7247 /* 6189 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7248 /* 6193 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7249 /* 6197 */ // MIs[1] cst
7250 /* 6197 */ // No operand predicates
7251 /* 6197 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7252 /* 6199 */ // Combiner Rule #160: constant_fold_intrinsic_round
7253 /* 6199 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7254 /* 6202 */ // Label 292: @6202
7255 /* 6202 */ GIM_Reject,
7256 /* 6203 */ // Label 23: @6203
7257 /* 6203 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(6224), // Rule ID 214 //
7258 /* 6208 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7259 /* 6211 */ // MIs[0] dst
7260 /* 6211 */ // No operand predicates
7261 /* 6211 */ // MIs[0] src0
7262 /* 6211 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7263 /* 6215 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7264 /* 6219 */ // MIs[1] cst
7265 /* 6219 */ // No operand predicates
7266 /* 6219 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7267 /* 6221 */ // Combiner Rule #161: constant_fold_intrinsic_roundeven
7268 /* 6221 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7269 /* 6224 */ // Label 293: @6224
7270 /* 6224 */ GIM_Reject,
7271 /* 6225 */ // Label 24: @6225
7272 /* 6225 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(6236), // Rule ID 77 //
7273 /* 6230 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7274 /* 6233 */ // Combiner Rule #73: extending_loads; wip_match_opcode 'G_LOAD'
7275 /* 6233 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
7276 /* 6236 */ // Label 294: @6236
7277 /* 6236 */ GIM_Reject,
7278 /* 6237 */ // Label 25: @6237
7279 /* 6237 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(6248), // Rule ID 78 //
7280 /* 6242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7281 /* 6245 */ // Combiner Rule #73: extending_loads; wip_match_opcode 'G_SEXTLOAD'
7282 /* 6245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
7283 /* 6248 */ // Label 295: @6248
7284 /* 6248 */ GIM_Reject,
7285 /* 6249 */ // Label 26: @6249
7286 /* 6249 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(6260), // Rule ID 79 //
7287 /* 6254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7288 /* 6257 */ // Combiner Rule #73: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
7289 /* 6257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
7290 /* 6260 */ // Label 296: @6260
7291 /* 6260 */ GIM_Reject,
7292 /* 6261 */ // Label 27: @6261
7293 /* 6261 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(6272), // Rule ID 113 //
7294 /* 6266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
7295 /* 6269 */ // Combiner Rule #86: erase_undef_store; wip_match_opcode 'G_STORE'
7296 /* 6269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7297 /* 6272 */ // Label 297: @6272
7298 /* 6272 */ GIM_Reject,
7299 /* 6273 */ // Label 28: @6273
7300 /* 6273 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(6294), // Rule ID 64 //
7301 /* 6278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
7302 /* 6281 */ // MIs[0] root
7303 /* 6281 */ // No operand predicates
7304 /* 6281 */ // MIs[0] select
7305 /* 6281 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7306 /* 6285 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7307 /* 6289 */ // MIs[1] cond
7308 /* 6289 */ // No operand predicates
7309 /* 6289 */ // MIs[1] true
7310 /* 6289 */ // No operand predicates
7311 /* 6289 */ // MIs[1] false
7312 /* 6289 */ // No operand predicates
7313 /* 6289 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7314 /* 6291 */ // Combiner Rule #60: select_of_anyext
7315 /* 6291 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7316 /* 6294 */ // Label 298: @6294
7317 /* 6294 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(6315), // Rule ID 59 //
7318 /* 6299 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
7319 /* 6302 */ // MIs[0] root
7320 /* 6302 */ // No operand predicates
7321 /* 6302 */ // MIs[0] second
7322 /* 6302 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7323 /* 6306 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7324 /* 6310 */ // MIs[1] src
7325 /* 6310 */ // No operand predicates
7326 /* 6310 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7327 /* 6312 */ // Combiner Rule #55: anyext_of_anyext
7328 /* 6312 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7329 /* 6315 */ // Label 299: @6315
7330 /* 6315 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(6336), // Rule ID 61 //
7331 /* 6320 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
7332 /* 6323 */ // MIs[0] root
7333 /* 6323 */ // No operand predicates
7334 /* 6323 */ // MIs[0] second
7335 /* 6323 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7336 /* 6327 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7337 /* 6331 */ // MIs[1] src
7338 /* 6331 */ // No operand predicates
7339 /* 6331 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7340 /* 6333 */ // Combiner Rule #57: anyext_of_sext
7341 /* 6333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7342 /* 6336 */ // Label 300: @6336
7343 /* 6336 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(6357), // Rule ID 60 //
7344 /* 6341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
7345 /* 6344 */ // MIs[0] root
7346 /* 6344 */ // No operand predicates
7347 /* 6344 */ // MIs[0] second
7348 /* 6344 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7349 /* 6348 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7350 /* 6352 */ // MIs[1] src
7351 /* 6352 */ // No operand predicates
7352 /* 6352 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7353 /* 6354 */ // Combiner Rule #56: anyext_of_zext
7354 /* 6354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7355 /* 6357 */ // Label 301: @6357
7356 /* 6357 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(6378), // Rule ID 99 //
7357 /* 6362 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7358 /* 6365 */ // MIs[0] dst
7359 /* 6365 */ // No operand predicates
7360 /* 6365 */ // MIs[0] __unary_undef_to_undef_match_0.x
7361 /* 6365 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7362 /* 6369 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7363 /* 6373 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7364 /* 6375 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
7365 /* 6375 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7366 /* 6378 */ // Label 302: @6378
7367 /* 6378 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(6389), // Rule ID 143 //
7368 /* 6383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7369 /* 6386 */ // MIs[0] dst
7370 /* 6386 */ // No operand predicates
7371 /* 6386 */ // MIs[0] src
7372 /* 6386 */ // No operand predicates
7373 /* 6386 */ // Combiner Rule #97: anyext_trunc_fold
7374 /* 6386 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
7375 /* 6389 */ // Label 303: @6389
7376 /* 6389 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(6400), // Rule ID 306 //
7377 /* 6394 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7378 /* 6397 */ // MIs[0] dst
7379 /* 6397 */ // No operand predicates
7380 /* 6397 */ // MIs[0] d.src
7381 /* 6397 */ // No operand predicates
7382 /* 6397 */ // Combiner Rule #197: constant_fold_cast_op @ [d[2]]
7383 /* 6397 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
7384 /* 6400 */ // Label 304: @6400
7385 /* 6400 */ GIM_Reject,
7386 /* 6401 */ // Label 29: @6401
7387 /* 6401 */ GIM_SwitchType, /*MI*/0, /*Op*/0, /*[*/GIMT_Encode2(0), GIMT_Encode2(5), /*)*//*default:*//*Label 308*/ GIMT_Encode4(6667),
7388 /* 6412 */ /*GILLT_i16*//*Label 305*/ GIMT_Encode4(6432), GIMT_Encode4(0), GIMT_Encode4(0),
7389 /* 6424 */ /*GILLT_f16*//*Label 306*/ GIMT_Encode4(6499),
7390 /* 6428 */ /*GILLT_bf16*//*Label 307*/ GIMT_Encode4(6583),
7391 /* 6432 */ // Label 305: @6432
7392 /* 6432 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(6498), // Rule ID 462 //
7393 /* 6437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule285Enabled),
7394 /* 6440 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i32,
7395 /* 6443 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7396 /* 6447 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
7397 /* 6451 */ GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_i32,
7398 /* 6455 */ // MIs[1] src
7399 /* 6455 */ // No operand predicates
7400 /* 6455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7401 /* 6459 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7402 /* 6463 */ // MIs[2] Operand 1
7403 /* 6463 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(16),
7404 /* 6474 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
7405 /* 6478 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7406 /* 6480 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i16,
7407 /* 6483 */ // Combiner Rule #285: trunc_lshr16_unmerge_i16
7408 /* 6483 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7409 /* 6486 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7410 /* 6491 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7411 /* 6493 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7412 /* 6497 */ GIR_EraseRootFromParent_Done,
7413 /* 6498 */ // Label 309: @6498
7414 /* 6498 */ GIM_Reject,
7415 /* 6499 */ // Label 306: @6499
7416 /* 6499 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(6582), // Rule ID 463 //
7417 /* 6504 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule286Enabled),
7418 /* 6507 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i32,
7419 /* 6510 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7420 /* 6514 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
7421 /* 6518 */ GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_i32,
7422 /* 6522 */ // MIs[1] src
7423 /* 6522 */ // No operand predicates
7424 /* 6522 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7425 /* 6526 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7426 /* 6530 */ // MIs[2] Operand 1
7427 /* 6530 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(16),
7428 /* 6541 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
7429 /* 6545 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7430 /* 6547 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_i16,
7431 /* 6550 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i16,
7432 /* 6553 */ // Combiner Rule #286: trunc_lshr16_unmerge_f16
7433 /* 6553 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7434 /* 6556 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7435 /* 6561 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7436 /* 6566 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7437 /* 6570 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
7438 /* 6574 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7439 /* 6578 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
7440 /* 6581 */ GIR_EraseRootFromParent_Done,
7441 /* 6582 */ // Label 310: @6582
7442 /* 6582 */ GIM_Reject,
7443 /* 6583 */ // Label 307: @6583
7444 /* 6583 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(6666), // Rule ID 464 //
7445 /* 6588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule287Enabled),
7446 /* 6591 */ GIM_RootCheckType, /*Op*/1, /*Type*/GILLT_i32,
7447 /* 6594 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7448 /* 6598 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
7449 /* 6602 */ GIM_CheckType, /*MI*/1, /*Op*/2, /*Type*/GILLT_i32,
7450 /* 6606 */ // MIs[1] src
7451 /* 6606 */ // No operand predicates
7452 /* 6606 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7453 /* 6610 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7454 /* 6614 */ // MIs[2] Operand 1
7455 /* 6614 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(16),
7456 /* 6625 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner32),
7457 /* 6629 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7458 /* 6631 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/GILLT_i16,
7459 /* 6634 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/GILLT_i16,
7460 /* 6637 */ // Combiner Rule #287: trunc_lshr16_unmerge_bf16
7461 /* 6637 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7462 /* 6640 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7463 /* 6645 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
7464 /* 6650 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7465 /* 6654 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
7466 /* 6658 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
7467 /* 6662 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
7468 /* 6665 */ GIR_EraseRootFromParent_Done,
7469 /* 6666 */ // Label 311: @6666
7470 /* 6666 */ GIM_Reject,
7471 /* 6667 */ // Label 308: @6667
7472 /* 6667 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(6688), // Rule ID 65 //
7473 /* 6672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
7474 /* 6675 */ // MIs[0] root
7475 /* 6675 */ // No operand predicates
7476 /* 6675 */ // MIs[0] select
7477 /* 6675 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7478 /* 6679 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7479 /* 6683 */ // MIs[1] cond
7480 /* 6683 */ // No operand predicates
7481 /* 6683 */ // MIs[1] true
7482 /* 6683 */ // No operand predicates
7483 /* 6683 */ // MIs[1] false
7484 /* 6683 */ // No operand predicates
7485 /* 6683 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7486 /* 6685 */ // Combiner Rule #61: select_of_truncate
7487 /* 6685 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7488 /* 6688 */ // Label 312: @6688
7489 /* 6688 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(6717), // Rule ID 67 //
7490 /* 6693 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
7491 /* 6696 */ // MIs[0] root
7492 /* 6696 */ // No operand predicates
7493 /* 6696 */ // MIs[0] binop
7494 /* 6696 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7495 /* 6700 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7496 /* 6704 */ // MIs[1] x
7497 /* 6704 */ // No operand predicates
7498 /* 6704 */ // MIs[1] const
7499 /* 6704 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7500 /* 6708 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7501 /* 6712 */ // MIs[2] imm
7502 /* 6712 */ // No operand predicates
7503 /* 6712 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7504 /* 6714 */ // Combiner Rule #63: narrow_binop_add
7505 /* 6714 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7506 /* 6717 */ // Label 313: @6717
7507 /* 6717 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6746), // Rule ID 70 //
7508 /* 6722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
7509 /* 6725 */ // MIs[0] root
7510 /* 6725 */ // No operand predicates
7511 /* 6725 */ // MIs[0] binop
7512 /* 6725 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7513 /* 6729 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7514 /* 6733 */ // MIs[1] x
7515 /* 6733 */ // No operand predicates
7516 /* 6733 */ // MIs[1] const
7517 /* 6733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7518 /* 6737 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7519 /* 6741 */ // MIs[2] imm
7520 /* 6741 */ // No operand predicates
7521 /* 6741 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7522 /* 6743 */ // Combiner Rule #66: narrow_binop_and
7523 /* 6743 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7524 /* 6746 */ // Label 314: @6746
7525 /* 6746 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6775), // Rule ID 69 //
7526 /* 6751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
7527 /* 6754 */ // MIs[0] root
7528 /* 6754 */ // No operand predicates
7529 /* 6754 */ // MIs[0] binop
7530 /* 6754 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7531 /* 6758 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
7532 /* 6762 */ // MIs[1] x
7533 /* 6762 */ // No operand predicates
7534 /* 6762 */ // MIs[1] const
7535 /* 6762 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7536 /* 6766 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7537 /* 6770 */ // MIs[2] imm
7538 /* 6770 */ // No operand predicates
7539 /* 6770 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7540 /* 6772 */ // Combiner Rule #65: narrow_binop_mul
7541 /* 6772 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7542 /* 6775 */ // Label 315: @6775
7543 /* 6775 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6804), // Rule ID 71 //
7544 /* 6780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
7545 /* 6783 */ // MIs[0] root
7546 /* 6783 */ // No operand predicates
7547 /* 6783 */ // MIs[0] binop
7548 /* 6783 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7549 /* 6787 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
7550 /* 6791 */ // MIs[1] x
7551 /* 6791 */ // No operand predicates
7552 /* 6791 */ // MIs[1] const
7553 /* 6791 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7554 /* 6795 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7555 /* 6799 */ // MIs[2] imm
7556 /* 6799 */ // No operand predicates
7557 /* 6799 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7558 /* 6801 */ // Combiner Rule #67: narrow_binop_or
7559 /* 6801 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7560 /* 6804 */ // Label 316: @6804
7561 /* 6804 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6833), // Rule ID 68 //
7562 /* 6809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
7563 /* 6812 */ // MIs[0] root
7564 /* 6812 */ // No operand predicates
7565 /* 6812 */ // MIs[0] binop
7566 /* 6812 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7567 /* 6816 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
7568 /* 6820 */ // MIs[1] x
7569 /* 6820 */ // No operand predicates
7570 /* 6820 */ // MIs[1] const
7571 /* 6820 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7572 /* 6824 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7573 /* 6828 */ // MIs[2] imm
7574 /* 6828 */ // No operand predicates
7575 /* 6828 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7576 /* 6830 */ // Combiner Rule #64: narrow_binop_sub
7577 /* 6830 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7578 /* 6833 */ // Label 317: @6833
7579 /* 6833 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6865), // Rule ID 431 //
7580 /* 6838 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
7581 /* 6841 */ // MIs[0] dst
7582 /* 6841 */ // No operand predicates
7583 /* 6841 */ // MIs[0] min
7584 /* 6841 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7585 /* 6845 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
7586 /* 6849 */ // MIs[1] x
7587 /* 6849 */ // No operand predicates
7588 /* 6849 */ // MIs[1] y
7589 /* 6849 */ // No operand predicates
7590 /* 6849 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
7591 /* 6853 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7592 /* 6855 */ // Combiner Rule #260: trunc_usatu
7593 /* 6855 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
7594 /* 6858 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7595 /* 6860 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7596 /* 6864 */ GIR_EraseRootFromParent_Done,
7597 /* 6865 */ // Label 318: @6865
7598 /* 6865 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6894), // Rule ID 72 //
7599 /* 6870 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7600 /* 6873 */ // MIs[0] root
7601 /* 6873 */ // No operand predicates
7602 /* 6873 */ // MIs[0] binop
7603 /* 6873 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7604 /* 6877 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7605 /* 6881 */ // MIs[1] x
7606 /* 6881 */ // No operand predicates
7607 /* 6881 */ // MIs[1] const
7608 /* 6881 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7609 /* 6885 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7610 /* 6889 */ // MIs[2] imm
7611 /* 6889 */ // No operand predicates
7612 /* 6889 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7613 /* 6891 */ // Combiner Rule #68: narrow_binop_xor
7614 /* 6891 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7615 /* 6894 */ // Label 319: @6894
7616 /* 6894 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6915), // Rule ID 54 //
7617 /* 6899 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
7618 /* 6902 */ // MIs[0] root
7619 /* 6902 */ // No operand predicates
7620 /* 6902 */ // MIs[0] ext
7621 /* 6902 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7622 /* 6906 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7623 /* 6910 */ // MIs[1] src
7624 /* 6910 */ // No operand predicates
7625 /* 6910 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7626 /* 6912 */ // Combiner Rule #50: truncate_of_anyext
7627 /* 6912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7628 /* 6915 */ // Label 320: @6915
7629 /* 6915 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6939), // Rule ID 66 //
7630 /* 6920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
7631 /* 6923 */ // MIs[0] root
7632 /* 6923 */ // No operand predicates
7633 /* 6923 */ // MIs[0] bv
7634 /* 6923 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7635 /* 6927 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
7636 /* 6931 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
7637 /* 6934 */ // MIs[1] unused
7638 /* 6934 */ // No operand predicates
7639 /* 6934 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7640 /* 6936 */ // Combiner Rule #62: buildvector_of_truncate
7641 /* 6936 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7642 /* 6939 */ // Label 321: @6939
7643 /* 6939 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6960), // Rule ID 53 //
7644 /* 6944 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
7645 /* 6947 */ // MIs[0] root
7646 /* 6947 */ // No operand predicates
7647 /* 6947 */ // MIs[0] ext
7648 /* 6947 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7649 /* 6951 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7650 /* 6955 */ // MIs[1] src
7651 /* 6955 */ // No operand predicates
7652 /* 6955 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7653 /* 6957 */ // Combiner Rule #49: truncate_of_sext
7654 /* 6957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7655 /* 6960 */ // Label 322: @6960
7656 /* 6960 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6981), // Rule ID 52 //
7657 /* 6965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
7658 /* 6968 */ // MIs[0] root
7659 /* 6968 */ // No operand predicates
7660 /* 6968 */ // MIs[0] ext
7661 /* 6968 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7662 /* 6972 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7663 /* 6976 */ // MIs[1] src
7664 /* 6976 */ // No operand predicates
7665 /* 6976 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7666 /* 6978 */ // Combiner Rule #48: truncate_of_zext
7667 /* 6978 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7668 /* 6981 */ // Label 323: @6981
7669 /* 6981 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(7002), // Rule ID 97 //
7670 /* 6986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7671 /* 6989 */ // MIs[0] dst
7672 /* 6989 */ // No operand predicates
7673 /* 6989 */ // MIs[0] __unary_undef_to_undef_match_0.x
7674 /* 6989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7675 /* 6993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7676 /* 6997 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7677 /* 6999 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
7678 /* 6999 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7679 /* 7002 */ // Label 324: @7002
7680 /* 7002 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(7023), // Rule ID 73 //
7681 /* 7007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7682 /* 7010 */ // MIs[0] root
7683 /* 7010 */ // No operand predicates
7684 /* 7010 */ // MIs[0] int
7685 /* 7010 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7686 /* 7014 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7687 /* 7018 */ // MIs[1] imm
7688 /* 7018 */ // No operand predicates
7689 /* 7018 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7690 /* 7020 */ // Combiner Rule #69: integer_of_truncate
7691 /* 7020 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7692 /* 7023 */ // Label 325: @7023
7693 /* 7023 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(7034), // Rule ID 151 //
7694 /* 7028 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7695 /* 7031 */ // MIs[0] dst
7696 /* 7031 */ // No operand predicates
7697 /* 7031 */ // MIs[0] src
7698 /* 7031 */ // No operand predicates
7699 /* 7031 */ // Combiner Rule #103: trunc_buildvector_fold
7700 /* 7031 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
7701 /* 7034 */ // Label 326: @7034
7702 /* 7034 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(7045), // Rule ID 152 //
7703 /* 7039 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7704 /* 7042 */ // MIs[0] dst
7705 /* 7042 */ // No operand predicates
7706 /* 7042 */ // MIs[0] src
7707 /* 7042 */ // No operand predicates
7708 /* 7042 */ // Combiner Rule #104: trunc_lshr_buildvector_fold
7709 /* 7042 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7710 /* 7045 */ // Label 327: @7045
7711 /* 7045 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(7056), // Rule ID 201 //
7712 /* 7050 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
7713 /* 7053 */ // MIs[0] dst
7714 /* 7053 */ // No operand predicates
7715 /* 7053 */ // MIs[0] src
7716 /* 7053 */ // No operand predicates
7717 /* 7053 */ // Combiner Rule #148: trunc_shift
7718 /* 7053 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
7719 /* 7056 */ // Label 328: @7056
7720 /* 7056 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(7067), // Rule ID 429 //
7721 /* 7061 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
7722 /* 7064 */ // MIs[0] dst
7723 /* 7064 */ // No operand predicates
7724 /* 7064 */ // MIs[0] src
7725 /* 7064 */ // No operand predicates
7726 /* 7064 */ // Combiner Rule #258: trunc_ssats
7727 /* 7064 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
7728 /* 7067 */ // Label 329: @7067
7729 /* 7067 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(7078), // Rule ID 430 //
7730 /* 7072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
7731 /* 7075 */ // MIs[0] dst
7732 /* 7075 */ // No operand predicates
7733 /* 7075 */ // MIs[0] src
7734 /* 7075 */ // No operand predicates
7735 /* 7075 */ // Combiner Rule #259: trunc_ssatu
7736 /* 7075 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
7737 /* 7078 */ // Label 330: @7078
7738 /* 7078 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(7089), // Rule ID 457 //
7739 /* 7083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule280Enabled),
7740 /* 7086 */ // MIs[0] dst
7741 /* 7086 */ // No operand predicates
7742 /* 7086 */ // MIs[0] src
7743 /* 7086 */ // No operand predicates
7744 /* 7086 */ // Combiner Rule #280: clamp_i64_to_i16
7745 /* 7086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
7746 /* 7089 */ // Label 331: @7089
7747 /* 7089 */ GIM_Reject,
7748 /* 7090 */ // Label 30: @7090
7749 /* 7090 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(7122), // Rule ID 432 //
7750 /* 7095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
7751 /* 7098 */ // MIs[0] dst
7752 /* 7098 */ // No operand predicates
7753 /* 7098 */ // MIs[0] src
7754 /* 7098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7755 /* 7102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
7756 /* 7106 */ // MIs[1] x
7757 /* 7106 */ // No operand predicates
7758 /* 7106 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
7759 /* 7110 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7760 /* 7112 */ // Combiner Rule #261: truncusatu_to_fptouisat
7761 /* 7112 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
7762 /* 7115 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7763 /* 7117 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7764 /* 7121 */ GIR_EraseRootFromParent_Done,
7765 /* 7122 */ // Label 332: @7122
7766 /* 7122 */ GIM_Reject,
7767 /* 7123 */ // Label 31: @7123
7768 /* 7123 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(7144), // Rule ID 58 //
7769 /* 7128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
7770 /* 7131 */ // MIs[0] root
7771 /* 7131 */ // No operand predicates
7772 /* 7131 */ // MIs[0] second
7773 /* 7131 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7774 /* 7135 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7775 /* 7139 */ // MIs[1] src
7776 /* 7139 */ // No operand predicates
7777 /* 7139 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7778 /* 7141 */ // Combiner Rule #54: sext_of_anyext
7779 /* 7141 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7780 /* 7144 */ // Label 333: @7144
7781 /* 7144 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(7165), // Rule ID 57 //
7782 /* 7149 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
7783 /* 7152 */ // MIs[0] root
7784 /* 7152 */ // No operand predicates
7785 /* 7152 */ // MIs[0] second
7786 /* 7152 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7787 /* 7156 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7788 /* 7160 */ // MIs[1] src
7789 /* 7160 */ // No operand predicates
7790 /* 7160 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7791 /* 7162 */ // Combiner Rule #53: sext_of_sext
7792 /* 7162 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7793 /* 7165 */ // Label 334: @7165
7794 /* 7165 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(7186), // Rule ID 408 //
7795 /* 7170 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
7796 /* 7173 */ // MIs[0] root
7797 /* 7173 */ // No operand predicates
7798 /* 7173 */ // MIs[0] src
7799 /* 7173 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7800 /* 7177 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7801 /* 7181 */ // MIs[1] x
7802 /* 7181 */ // No operand predicates
7803 /* 7181 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7804 /* 7183 */ // Combiner Rule #239: sext_trunc
7805 /* 7183 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
7806 /* 7186 */ // Label 335: @7186
7807 /* 7186 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(7197), // Rule ID 305 //
7808 /* 7191 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7809 /* 7194 */ // MIs[0] dst
7810 /* 7194 */ // No operand predicates
7811 /* 7194 */ // MIs[0] d.src
7812 /* 7194 */ // No operand predicates
7813 /* 7194 */ // Combiner Rule #197: constant_fold_cast_op @ [d[1]]
7814 /* 7194 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
7815 /* 7197 */ // Label 336: @7197
7816 /* 7197 */ GIM_Reject,
7817 /* 7198 */ // Label 32: @7198
7818 /* 7198 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(7219), // Rule ID 62 //
7819 /* 7203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
7820 /* 7206 */ // MIs[0] dst
7821 /* 7206 */ // No operand predicates
7822 /* 7206 */ // MIs[0] x
7823 /* 7206 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7824 /* 7210 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
7825 /* 7214 */ // MIs[1] src
7826 /* 7214 */ // No operand predicates
7827 /* 7214 */ // MIs[1] a
7828 /* 7214 */ // No operand predicates
7829 /* 7214 */ // MIs[0] b
7830 /* 7214 */ // No operand predicates
7831 /* 7214 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7832 /* 7216 */ // Combiner Rule #58: sext_inreg_of_sext_inreg
7833 /* 7216 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7834 /* 7219 */ // Label 337: @7219
7835 /* 7219 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(7259), // Rule ID 195 //
7836 /* 7224 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7837 /* 7227 */ // MIs[0] dst
7838 /* 7227 */ // No operand predicates
7839 /* 7227 */ // MIs[0] tmp4
7840 /* 7227 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7841 /* 7231 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7842 /* 7235 */ // MIs[1] tmp2
7843 /* 7235 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7844 /* 7239 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7845 /* 7243 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7846 /* 7246 */ // MIs[2] tmp3
7847 /* 7246 */ // No operand predicates
7848 /* 7246 */ // MIs[2] tmp1
7849 /* 7246 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7850 /* 7250 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7851 /* 7254 */ // MIs[3] src
7852 /* 7254 */ // No operand predicates
7853 /* 7254 */ // MIs[0] amt
7854 /* 7254 */ // No operand predicates
7855 /* 7254 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7856 /* 7256 */ // Combiner Rule #142: redundant_aext_unmerge_sext_inreg
7857 /* 7256 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7858 /* 7259 */ // Label 338: @7259
7859 /* 7259 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(7291), // Rule ID 193 //
7860 /* 7264 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7861 /* 7267 */ // MIs[0] dst
7862 /* 7267 */ // No operand predicates
7863 /* 7267 */ // MIs[0] tmp
7864 /* 7267 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7865 /* 7271 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7866 /* 7275 */ // MIs[1] src
7867 /* 7275 */ // No operand predicates
7868 /* 7275 */ // MIs[0] amt
7869 /* 7275 */ // No operand predicates
7870 /* 7275 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
7871 /* 7279 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7872 /* 7281 */ // Combiner Rule #140: redundant_aext_sext_inreg
7873 /* 7281 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7874 /* 7284 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7875 /* 7286 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7876 /* 7290 */ GIR_EraseRootFromParent_Done,
7877 /* 7291 */ // Label 339: @7291
7878 /* 7291 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(7331), // Rule ID 194 //
7879 /* 7296 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
7880 /* 7299 */ // MIs[0] dst
7881 /* 7299 */ // No operand predicates
7882 /* 7299 */ // MIs[0] tmp4
7883 /* 7299 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7884 /* 7303 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7885 /* 7307 */ // MIs[1] tmp2
7886 /* 7307 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7887 /* 7311 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7888 /* 7315 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7889 /* 7318 */ // MIs[2] tmp3
7890 /* 7318 */ // No operand predicates
7891 /* 7318 */ // MIs[2] tmp1
7892 /* 7318 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7893 /* 7322 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7894 /* 7326 */ // MIs[3] src
7895 /* 7326 */ // No operand predicates
7896 /* 7326 */ // MIs[0] amt
7897 /* 7326 */ // No operand predicates
7898 /* 7326 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7899 /* 7328 */ // Combiner Rule #141: redundant_zext_unmerge_sext_inreg
7900 /* 7328 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7901 /* 7331 */ // Label 340: @7331
7902 /* 7331 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(7363), // Rule ID 192 //
7903 /* 7336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7904 /* 7339 */ // MIs[0] dst
7905 /* 7339 */ // No operand predicates
7906 /* 7339 */ // MIs[0] tmp
7907 /* 7339 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7908 /* 7343 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7909 /* 7347 */ // MIs[1] src
7910 /* 7347 */ // No operand predicates
7911 /* 7347 */ // MIs[0] amt
7912 /* 7347 */ // No operand predicates
7913 /* 7347 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
7914 /* 7351 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7915 /* 7353 */ // Combiner Rule #139: redundant_zext_sext_inreg
7916 /* 7353 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7917 /* 7356 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7918 /* 7358 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7919 /* 7362 */ GIR_EraseRootFromParent_Done,
7920 /* 7363 */ // Label 341: @7363
7921 /* 7363 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(7386), // Rule ID 191 //
7922 /* 7368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7923 /* 7371 */ // MIs[0] dst
7924 /* 7371 */ // No operand predicates
7925 /* 7371 */ // MIs[0] src
7926 /* 7371 */ // No operand predicates
7927 /* 7371 */ // MIs[0] sz
7928 /* 7371 */ // No operand predicates
7929 /* 7371 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
7930 /* 7375 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7931 /* 7380 */ // Combiner Rule #138: redundant_sext_inreg
7932 /* 7380 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7933 /* 7385 */ GIR_EraseRootFromParent_Done,
7934 /* 7386 */ // Label 342: @7386
7935 /* 7386 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(7397), // Rule ID 180 //
7936 /* 7391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
7937 /* 7394 */ // MIs[0] dst
7938 /* 7394 */ // No operand predicates
7939 /* 7394 */ // MIs[0] src
7940 /* 7394 */ // No operand predicates
7941 /* 7394 */ // MIs[0] sz
7942 /* 7394 */ // No operand predicates
7943 /* 7394 */ // Combiner Rule #127: sext_inreg_of_load
7944 /* 7394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
7945 /* 7397 */ // Label 343: @7397
7946 /* 7397 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(7408), // Rule ID 200 //
7947 /* 7402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
7948 /* 7405 */ // MIs[0] dst
7949 /* 7405 */ // No operand predicates
7950 /* 7405 */ // MIs[0] src
7951 /* 7405 */ // No operand predicates
7952 /* 7405 */ // MIs[0] imm
7953 /* 7405 */ // No operand predicates
7954 /* 7405 */ // Combiner Rule #147: sext_inreg_to_zext_inreg
7955 /* 7405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7956 /* 7408 */ // Label 344: @7408
7957 /* 7408 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(7419), // Rule ID 266 //
7958 /* 7413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7959 /* 7416 */ // MIs[0] dst
7960 /* 7416 */ // No operand predicates
7961 /* 7416 */ // MIs[0] src
7962 /* 7416 */ // No operand predicates
7963 /* 7416 */ // MIs[0] sz
7964 /* 7416 */ // No operand predicates
7965 /* 7416 */ // Combiner Rule #190: bitfield_extract_from_sext_inreg
7966 /* 7416 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7967 /* 7419 */ // Label 345: @7419
7968 /* 7419 */ GIM_Reject,
7969 /* 7420 */ // Label 33: @7420
7970 /* 7420 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(7441), // Rule ID 63 //
7971 /* 7425 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
7972 /* 7428 */ // MIs[0] root
7973 /* 7428 */ // No operand predicates
7974 /* 7428 */ // MIs[0] select
7975 /* 7428 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7976 /* 7432 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7977 /* 7436 */ // MIs[1] cond
7978 /* 7436 */ // No operand predicates
7979 /* 7436 */ // MIs[1] true
7980 /* 7436 */ // No operand predicates
7981 /* 7436 */ // MIs[1] false
7982 /* 7436 */ // No operand predicates
7983 /* 7436 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7984 /* 7438 */ // Combiner Rule #59: select_of_zext
7985 /* 7438 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7986 /* 7441 */ // Label 346: @7441
7987 /* 7441 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(7462), // Rule ID 56 //
7988 /* 7446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
7989 /* 7449 */ // MIs[0] root
7990 /* 7449 */ // No operand predicates
7991 /* 7449 */ // MIs[0] second
7992 /* 7449 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7993 /* 7453 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7994 /* 7457 */ // MIs[1] src
7995 /* 7457 */ // No operand predicates
7996 /* 7457 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7997 /* 7459 */ // Combiner Rule #52: zext_of_anyext
7998 /* 7459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7999 /* 7462 */ // Label 347: @7462
8000 /* 7462 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(7489), // Rule ID 409 //
8001 /* 7467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
8002 /* 7470 */ // MIs[0] root
8003 /* 7470 */ // No operand predicates
8004 /* 7470 */ // MIs[0] src
8005 /* 7470 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8006 /* 7474 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8007 /* 7478 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
8008 /* 7484 */ // MIs[1] x
8009 /* 7484 */ // No operand predicates
8010 /* 7484 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8011 /* 7486 */ // Combiner Rule #240: zext_trunc
8012 /* 7486 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
8013 /* 7489 */ // Label 348: @7489
8014 /* 7489 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(7510), // Rule ID 55 //
8015 /* 7494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
8016 /* 7497 */ // MIs[0] root
8017 /* 7497 */ // No operand predicates
8018 /* 7497 */ // MIs[0] second
8019 /* 7497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8020 /* 7501 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
8021 /* 7505 */ // MIs[1] src
8022 /* 7505 */ // No operand predicates
8023 /* 7505 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8024 /* 7507 */ // Combiner Rule #51: zext_of_zext
8025 /* 7507 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
8026 /* 7510 */ // Label 349: @7510
8027 /* 7510 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(7527), // Rule ID 410 //
8028 /* 7515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
8029 /* 7518 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
8030 /* 7524 */ // MIs[0] root
8031 /* 7524 */ // No operand predicates
8032 /* 7524 */ // MIs[0] x
8033 /* 7524 */ // No operand predicates
8034 /* 7524 */ // Combiner Rule #241: nneg_zext
8035 /* 7524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
8036 /* 7527 */ // Label 350: @7527
8037 /* 7527 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(7538), // Rule ID 199 //
8038 /* 7532 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8039 /* 7535 */ // MIs[0] dst
8040 /* 7535 */ // No operand predicates
8041 /* 7535 */ // MIs[0] src
8042 /* 7535 */ // No operand predicates
8043 /* 7535 */ // Combiner Rule #146: zext_trunc_fold
8044 /* 7535 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
8045 /* 7538 */ // Label 351: @7538
8046 /* 7538 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(7549), // Rule ID 304 //
8047 /* 7543 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
8048 /* 7546 */ // MIs[0] dst
8049 /* 7546 */ // No operand predicates
8050 /* 7546 */ // MIs[0] d.src
8051 /* 7546 */ // No operand predicates
8052 /* 7546 */ // Combiner Rule #197: constant_fold_cast_op @ [d[0]]
8053 /* 7546 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
8054 /* 7549 */ // Label 352: @7549
8055 /* 7549 */ GIM_Reject,
8056 /* 7550 */ // Label 34: @7550
8057 /* 7550 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(7561), // Rule ID 236 //
8058 /* 7555 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8059 /* 7558 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_SHL'
8060 /* 7558 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8061 /* 7561 */ // Label 353: @7561
8062 /* 7561 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(7572), // Rule ID 241 //
8063 /* 7566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
8064 /* 7569 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
8065 /* 7569 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8066 /* 7572 */ // Label 354: @7572
8067 /* 7572 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(7583), // Rule ID 279 //
8068 /* 7577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8069 /* 7580 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SHL'
8070 /* 7580 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8071 /* 7583 */ // Label 355: @7583
8072 /* 7583 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(7594), // Rule ID 344 //
8073 /* 7588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8074 /* 7591 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SHL'
8075 /* 7591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8076 /* 7594 */ // Label 356: @7594
8077 /* 7594 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(7672), // Rule ID 264 //
8078 /* 7599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8079 /* 7602 */ // MIs[0] dst
8080 /* 7602 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8081 /* 7606 */ // MIs[0] binop_dst
8082 /* 7606 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8083 /* 7610 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8084 /* 7614 */ // MIs[1] x
8085 /* 7614 */ // No operand predicates
8086 /* 7614 */ // MIs[1] c1
8087 /* 7614 */ // No operand predicates
8088 /* 7614 */ // MIs[0] c2
8089 /* 7614 */ // No operand predicates
8090 /* 7614 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
8091 /* 7618 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8092 /* 7620 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8093 /* 7623 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8094 /* 7626 */ // Combiner Rule #188: commute_shift_add
8095 /* 7626 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8096 /* 7629 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8097 /* 7634 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8098 /* 7638 */ GIR_RootToRootCopy, /*OpIdx*/2, // c2
8099 /* 7640 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8100 /* 7644 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8101 /* 7649 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // c1
8102 /* 7653 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // c2
8103 /* 7657 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
8104 /* 7661 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8105 /* 7665 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8106 /* 7668 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
8107 /* 7671 */ GIR_EraseRootFromParent_Done,
8108 /* 7672 */ // Label 357: @7672
8109 /* 7672 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(7750), // Rule ID 265 //
8110 /* 7677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
8111 /* 7680 */ // MIs[0] dst
8112 /* 7680 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8113 /* 7684 */ // MIs[0] binop_dst
8114 /* 7684 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8115 /* 7688 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
8116 /* 7692 */ // MIs[1] x
8117 /* 7692 */ // No operand predicates
8118 /* 7692 */ // MIs[1] c1
8119 /* 7692 */ // No operand predicates
8120 /* 7692 */ // MIs[0] c2
8121 /* 7692 */ // No operand predicates
8122 /* 7692 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
8123 /* 7696 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8124 /* 7698 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8125 /* 7701 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8126 /* 7704 */ // Combiner Rule #189: commute_shift_or
8127 /* 7704 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8128 /* 7707 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8129 /* 7712 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8130 /* 7716 */ GIR_RootToRootCopy, /*OpIdx*/2, // c2
8131 /* 7718 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8132 /* 7722 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8133 /* 7727 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // c1
8134 /* 7731 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // c2
8135 /* 7735 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
8136 /* 7739 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8137 /* 7743 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8138 /* 7746 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
8139 /* 7749 */ GIR_EraseRootFromParent_Done,
8140 /* 7750 */ // Label 358: @7750
8141 /* 7750 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(7785), // Rule ID 48 //
8142 /* 7755 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
8143 /* 7758 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
8144 /* 7764 */ // MIs[0] root
8145 /* 7764 */ // No operand predicates
8146 /* 7764 */ // MIs[0] left
8147 /* 7764 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8148 /* 7768 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
8149 /* 7772 */ // MIs[1] imm
8150 /* 7772 */ // No operand predicates
8151 /* 7772 */ // MIs[0] x
8152 /* 7772 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8153 /* 7776 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8154 /* 7780 */ // MIs[2] imm1
8155 /* 7780 */ // No operand predicates
8156 /* 7780 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8157 /* 7782 */ // Combiner Rule #44: shl_of_vscale
8158 /* 7782 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
8159 /* 7785 */ // Label 359: @7785
8160 /* 7785 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(7806), // Rule ID 90 //
8161 /* 7790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
8162 /* 7793 */ // MIs[0] dst
8163 /* 7793 */ // No operand predicates
8164 /* 7793 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
8165 /* 7793 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8166 /* 7797 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8167 /* 7801 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
8168 /* 7801 */ // No operand predicates
8169 /* 7801 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8170 /* 7803 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[0]]
8171 /* 7803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8172 /* 7806 */ // Label 360: @7806
8173 /* 7806 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7846), // Rule ID 132 //
8174 /* 7811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8175 /* 7814 */ // MIs[0] dst
8176 /* 7814 */ // No operand predicates
8177 /* 7814 */ // MIs[0] zero
8178 /* 7814 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8179 /* 7818 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8180 /* 7822 */ // MIs[1] Operand 1
8181 /* 7822 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8182 /* 7833 */ // MIs[0] rhs
8183 /* 7833 */ // No operand predicates
8184 /* 7833 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8185 /* 7838 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8186 /* 7840 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
8187 /* 7840 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8188 /* 7845 */ GIR_EraseRootFromParent_Done,
8189 /* 7846 */ // Label 361: @7846
8190 /* 7846 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7867), // Rule ID 93 //
8191 /* 7851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8192 /* 7854 */ // MIs[0] dst
8193 /* 7854 */ // No operand predicates
8194 /* 7854 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8195 /* 7854 */ // No operand predicates
8196 /* 7854 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8197 /* 7854 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8198 /* 7858 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8199 /* 7862 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8200 /* 7864 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[0]]
8201 /* 7864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8202 /* 7867 */ // Label 362: @7867
8203 /* 7867 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7890), // Rule ID 122 //
8204 /* 7872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8205 /* 7875 */ // MIs[0] dst
8206 /* 7875 */ // No operand predicates
8207 /* 7875 */ // MIs[0] lhs
8208 /* 7875 */ // No operand predicates
8209 /* 7875 */ // MIs[0] Operand 2
8210 /* 7875 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8211 /* 7879 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8212 /* 7884 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
8213 /* 7884 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8214 /* 7889 */ GIR_EraseRootFromParent_Done,
8215 /* 7890 */ // Label 363: @7890
8216 /* 7890 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7901), // Rule ID 165 //
8217 /* 7895 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8218 /* 7898 */ // MIs[0] root
8219 /* 7898 */ // No operand predicates
8220 /* 7898 */ // MIs[0] mi.shifted
8221 /* 7898 */ // No operand predicates
8222 /* 7898 */ // MIs[0] mi.amt
8223 /* 7898 */ // No operand predicates
8224 /* 7898 */ // Combiner Rule #114: shifts_too_big @ [mi[0]]
8225 /* 7898 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
8226 /* 7901 */ // Label 364: @7901
8227 /* 7901 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7912), // Rule ID 181 //
8228 /* 7906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
8229 /* 7909 */ // MIs[0] dst
8230 /* 7909 */ // No operand predicates
8231 /* 7909 */ // MIs[0] src0
8232 /* 7909 */ // No operand predicates
8233 /* 7909 */ // MIs[0] src1
8234 /* 7909 */ // No operand predicates
8235 /* 7909 */ // Combiner Rule #128: reduce_shl_of_extend
8236 /* 7909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
8237 /* 7912 */ // Label 365: @7912
8238 /* 7912 */ GIM_Reject,
8239 /* 7913 */ // Label 35: @7913
8240 /* 7913 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7924), // Rule ID 238 //
8241 /* 7918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8242 /* 7921 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_LSHR'
8243 /* 7921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8244 /* 7924 */ // Label 366: @7924
8245 /* 7924 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7935), // Rule ID 243 //
8246 /* 7929 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
8247 /* 7932 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
8248 /* 7932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8249 /* 7935 */ // Label 367: @7935
8250 /* 7935 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7946), // Rule ID 276 //
8251 /* 7940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8252 /* 7943 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_LSHR'
8253 /* 7943 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8254 /* 7946 */ // Label 368: @7946
8255 /* 7946 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7957), // Rule ID 342 //
8256 /* 7951 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8257 /* 7954 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_LSHR'
8258 /* 7954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8259 /* 7957 */ // Label 369: @7957
8260 /* 7957 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(8046), // Rule ID 450 //
8261 /* 7962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule276Enabled),
8262 /* 7965 */ // MIs[0] dst
8263 /* 7965 */ // No operand predicates
8264 /* 7965 */ // MIs[0] sum
8265 /* 7965 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8266 /* 7969 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8267 /* 7973 */ // MIs[1] inner
8268 /* 7973 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8269 /* 7977 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8270 /* 7981 */ // MIs[2] ext1
8271 /* 7981 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8272 /* 7985 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8273 /* 7989 */ // MIs[3] x
8274 /* 7989 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8275 /* 7993 */ // MIs[2] ext2
8276 /* 7993 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8277 /* 7997 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
8278 /* 8001 */ // MIs[4] y
8279 /* 8001 */ // No operand predicates
8280 /* 8001 */ // MIs[1] Operand 2
8281 /* 8001 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8282 /* 8005 */ // MIs[0] Operand 2
8283 /* 8005 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8284 /* 8009 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
8285 /* 8013 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8286 /* 8015 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8287 /* 8018 */ // Combiner Rule #276: avgceil_u_match
8288 /* 8018 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
8289 /* 8021 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8290 /* 8026 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8291 /* 8030 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8292 /* 8034 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
8293 /* 8038 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8294 /* 8042 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8295 /* 8045 */ GIR_EraseRootFromParent_Done,
8296 /* 8046 */ // Label 370: @8046
8297 /* 8046 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(8123), // Rule ID 448 //
8298 /* 8051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule274Enabled),
8299 /* 8054 */ // MIs[0] dst
8300 /* 8054 */ // No operand predicates
8301 /* 8054 */ // MIs[0] sum
8302 /* 8054 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8303 /* 8058 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8304 /* 8062 */ // MIs[1] ext1
8305 /* 8062 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8306 /* 8066 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
8307 /* 8070 */ // MIs[2] x
8308 /* 8070 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8309 /* 8074 */ // MIs[1] ext2
8310 /* 8074 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8311 /* 8078 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8312 /* 8082 */ // MIs[3] y
8313 /* 8082 */ // No operand predicates
8314 /* 8082 */ // MIs[0] Operand 2
8315 /* 8082 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8316 /* 8086 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
8317 /* 8090 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8318 /* 8092 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8319 /* 8095 */ // Combiner Rule #274: avgfloor_u_match
8320 /* 8095 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
8321 /* 8098 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8322 /* 8103 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8323 /* 8107 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8324 /* 8111 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
8325 /* 8115 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8326 /* 8119 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8327 /* 8122 */ GIR_EraseRootFromParent_Done,
8328 /* 8123 */ // Label 371: @8123
8329 /* 8123 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(8152), // Rule ID 433 //
8330 /* 8128 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
8331 /* 8131 */ // MIs[0] dst
8332 /* 8131 */ // No operand predicates
8333 /* 8131 */ // MIs[0] d2
8334 /* 8131 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8335 /* 8135 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8336 /* 8139 */ // MIs[1] d1
8337 /* 8139 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8338 /* 8143 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
8339 /* 8147 */ // MIs[2] x
8340 /* 8147 */ // No operand predicates
8341 /* 8147 */ // MIs[2] y
8342 /* 8147 */ // No operand predicates
8343 /* 8147 */ // MIs[0] z
8344 /* 8147 */ // No operand predicates
8345 /* 8147 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8346 /* 8149 */ // Combiner Rule #262: lshr_of_trunc_of_lshr
8347 /* 8149 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
8348 /* 8152 */ // Label 372: @8152
8349 /* 8152 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(8192), // Rule ID 133 //
8350 /* 8157 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8351 /* 8160 */ // MIs[0] dst
8352 /* 8160 */ // No operand predicates
8353 /* 8160 */ // MIs[0] zero
8354 /* 8160 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8355 /* 8164 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8356 /* 8168 */ // MIs[1] Operand 1
8357 /* 8168 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8358 /* 8179 */ // MIs[0] rhs
8359 /* 8179 */ // No operand predicates
8360 /* 8179 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8361 /* 8184 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8362 /* 8186 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
8363 /* 8186 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8364 /* 8191 */ GIR_EraseRootFromParent_Done,
8365 /* 8192 */ // Label 373: @8192
8366 /* 8192 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(8213), // Rule ID 95 //
8367 /* 8197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8368 /* 8200 */ // MIs[0] dst
8369 /* 8200 */ // No operand predicates
8370 /* 8200 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8371 /* 8200 */ // No operand predicates
8372 /* 8200 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8373 /* 8200 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8374 /* 8204 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8375 /* 8208 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8376 /* 8210 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[2]]
8377 /* 8210 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8378 /* 8213 */ // Label 374: @8213
8379 /* 8213 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(8236), // Rule ID 124 //
8380 /* 8218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8381 /* 8221 */ // MIs[0] dst
8382 /* 8221 */ // No operand predicates
8383 /* 8221 */ // MIs[0] lhs
8384 /* 8221 */ // No operand predicates
8385 /* 8221 */ // MIs[0] Operand 2
8386 /* 8221 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8387 /* 8225 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8388 /* 8230 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
8389 /* 8230 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8390 /* 8235 */ GIR_EraseRootFromParent_Done,
8391 /* 8236 */ // Label 375: @8236
8392 /* 8236 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(8247), // Rule ID 167 //
8393 /* 8241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8394 /* 8244 */ // MIs[0] root
8395 /* 8244 */ // No operand predicates
8396 /* 8244 */ // MIs[0] mi.shifted
8397 /* 8244 */ // No operand predicates
8398 /* 8244 */ // MIs[0] mi.amt
8399 /* 8244 */ // No operand predicates
8400 /* 8244 */ // Combiner Rule #114: shifts_too_big @ [mi[2]]
8401 /* 8244 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
8402 /* 8247 */ // Label 376: @8247
8403 /* 8247 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(8258), // Rule ID 269 //
8404 /* 8252 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8405 /* 8255 */ // MIs[0] dst
8406 /* 8255 */ // No operand predicates
8407 /* 8255 */ // MIs[0] root.src
8408 /* 8255 */ // No operand predicates
8409 /* 8255 */ // MIs[0] root.amt
8410 /* 8255 */ // No operand predicates
8411 /* 8255 */ // Combiner Rule #192: bitfield_extract_from_shr @ [root[1]]
8412 /* 8255 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
8413 /* 8258 */ // Label 377: @8258
8414 /* 8258 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(8269), // Rule ID 271 //
8415 /* 8263 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8416 /* 8266 */ // MIs[0] dst
8417 /* 8266 */ // No operand predicates
8418 /* 8266 */ // MIs[0] root.src
8419 /* 8266 */ // No operand predicates
8420 /* 8266 */ // MIs[0] root.amt
8421 /* 8266 */ // No operand predicates
8422 /* 8266 */ // Combiner Rule #193: bitfield_extract_from_shr_and @ [root[1]]
8423 /* 8266 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
8424 /* 8269 */ // Label 378: @8269
8425 /* 8269 */ GIM_Reject,
8426 /* 8270 */ // Label 36: @8270
8427 /* 8270 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(8281), // Rule ID 237 //
8428 /* 8275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8429 /* 8278 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_ASHR'
8430 /* 8278 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8431 /* 8281 */ // Label 379: @8281
8432 /* 8281 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(8292), // Rule ID 242 //
8433 /* 8286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
8434 /* 8289 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
8435 /* 8289 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8436 /* 8292 */ // Label 380: @8292
8437 /* 8292 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(8303), // Rule ID 275 //
8438 /* 8297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8439 /* 8300 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_ASHR'
8440 /* 8300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8441 /* 8303 */ // Label 381: @8303
8442 /* 8303 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(8314), // Rule ID 343 //
8443 /* 8308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8444 /* 8311 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_ASHR'
8445 /* 8311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8446 /* 8314 */ // Label 382: @8314
8447 /* 8314 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(8403), // Rule ID 451 //
8448 /* 8319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule277Enabled),
8449 /* 8322 */ // MIs[0] dst
8450 /* 8322 */ // No operand predicates
8451 /* 8322 */ // MIs[0] sum
8452 /* 8322 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8453 /* 8326 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8454 /* 8330 */ // MIs[1] inner
8455 /* 8330 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8456 /* 8334 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8457 /* 8338 */ // MIs[2] ext1
8458 /* 8338 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8459 /* 8342 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8460 /* 8346 */ // MIs[3] x
8461 /* 8346 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8462 /* 8350 */ // MIs[2] ext2
8463 /* 8350 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8464 /* 8354 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
8465 /* 8358 */ // MIs[4] y
8466 /* 8358 */ // No operand predicates
8467 /* 8358 */ // MIs[1] Operand 2
8468 /* 8358 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8469 /* 8362 */ // MIs[0] Operand 2
8470 /* 8362 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8471 /* 8366 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
8472 /* 8370 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8473 /* 8372 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8474 /* 8375 */ // Combiner Rule #277: avgceil_s_match
8475 /* 8375 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
8476 /* 8378 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8477 /* 8383 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8478 /* 8387 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8479 /* 8391 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8480 /* 8395 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8481 /* 8399 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8482 /* 8402 */ GIR_EraseRootFromParent_Done,
8483 /* 8403 */ // Label 383: @8403
8484 /* 8403 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(8480), // Rule ID 449 //
8485 /* 8408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule275Enabled),
8486 /* 8411 */ // MIs[0] dst
8487 /* 8411 */ // No operand predicates
8488 /* 8411 */ // MIs[0] sum
8489 /* 8411 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8490 /* 8415 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8491 /* 8419 */ // MIs[1] ext1
8492 /* 8419 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8493 /* 8423 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
8494 /* 8427 */ // MIs[2] x
8495 /* 8427 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8496 /* 8431 */ // MIs[1] ext2
8497 /* 8431 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8498 /* 8435 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8499 /* 8439 */ // MIs[3] y
8500 /* 8439 */ // No operand predicates
8501 /* 8439 */ // MIs[0] Operand 2
8502 /* 8439 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8503 /* 8443 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
8504 /* 8447 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8505 /* 8449 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8506 /* 8452 */ // Combiner Rule #275: avgfloor_s_match
8507 /* 8452 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
8508 /* 8455 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8509 /* 8460 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8510 /* 8464 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8511 /* 8468 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8512 /* 8472 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8513 /* 8476 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8514 /* 8479 */ GIR_EraseRootFromParent_Done,
8515 /* 8480 */ // Label 384: @8480
8516 /* 8480 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(8520), // Rule ID 134 //
8517 /* 8485 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8518 /* 8488 */ // MIs[0] dst
8519 /* 8488 */ // No operand predicates
8520 /* 8488 */ // MIs[0] zero
8521 /* 8488 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8522 /* 8492 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8523 /* 8496 */ // MIs[1] Operand 1
8524 /* 8496 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8525 /* 8507 */ // MIs[0] rhs
8526 /* 8507 */ // No operand predicates
8527 /* 8507 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8528 /* 8512 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8529 /* 8514 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
8530 /* 8514 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8531 /* 8519 */ GIR_EraseRootFromParent_Done,
8532 /* 8520 */ // Label 385: @8520
8533 /* 8520 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(8541), // Rule ID 94 //
8534 /* 8525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8535 /* 8528 */ // MIs[0] dst
8536 /* 8528 */ // No operand predicates
8537 /* 8528 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8538 /* 8528 */ // No operand predicates
8539 /* 8528 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8540 /* 8528 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8541 /* 8532 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8542 /* 8536 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8543 /* 8538 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[1]]
8544 /* 8538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8545 /* 8541 */ // Label 386: @8541
8546 /* 8541 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(8564), // Rule ID 123 //
8547 /* 8546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8548 /* 8549 */ // MIs[0] dst
8549 /* 8549 */ // No operand predicates
8550 /* 8549 */ // MIs[0] lhs
8551 /* 8549 */ // No operand predicates
8552 /* 8549 */ // MIs[0] Operand 2
8553 /* 8549 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8554 /* 8553 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8555 /* 8558 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
8556 /* 8558 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8557 /* 8563 */ GIR_EraseRootFromParent_Done,
8558 /* 8564 */ // Label 387: @8564
8559 /* 8564 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(8575), // Rule ID 166 //
8560 /* 8569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8561 /* 8572 */ // MIs[0] root
8562 /* 8572 */ // No operand predicates
8563 /* 8572 */ // MIs[0] mi.shifted
8564 /* 8572 */ // No operand predicates
8565 /* 8572 */ // MIs[0] mi.amt
8566 /* 8572 */ // No operand predicates
8567 /* 8572 */ // Combiner Rule #114: shifts_too_big @ [mi[1]]
8568 /* 8572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
8569 /* 8575 */ // Label 388: @8575
8570 /* 8575 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(8586), // Rule ID 178 //
8571 /* 8580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
8572 /* 8583 */ // MIs[0] dst
8573 /* 8583 */ // No operand predicates
8574 /* 8583 */ // MIs[0] src1
8575 /* 8583 */ // No operand predicates
8576 /* 8583 */ // MIs[0] src2
8577 /* 8583 */ // No operand predicates
8578 /* 8583 */ // Combiner Rule #125: shl_ashr_to_sext_inreg
8579 /* 8583 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
8580 /* 8586 */ // Label 389: @8586
8581 /* 8586 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(8597), // Rule ID 268 //
8582 /* 8591 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8583 /* 8594 */ // MIs[0] dst
8584 /* 8594 */ // No operand predicates
8585 /* 8594 */ // MIs[0] root.src
8586 /* 8594 */ // No operand predicates
8587 /* 8594 */ // MIs[0] root.amt
8588 /* 8594 */ // No operand predicates
8589 /* 8594 */ // Combiner Rule #192: bitfield_extract_from_shr @ [root[0]]
8590 /* 8594 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
8591 /* 8597 */ // Label 390: @8597
8592 /* 8597 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(8608), // Rule ID 270 //
8593 /* 8602 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8594 /* 8605 */ // MIs[0] dst
8595 /* 8605 */ // No operand predicates
8596 /* 8605 */ // MIs[0] root.src
8597 /* 8605 */ // No operand predicates
8598 /* 8605 */ // MIs[0] root.amt
8599 /* 8605 */ // No operand predicates
8600 /* 8605 */ // Combiner Rule #193: bitfield_extract_from_shr_and @ [root[0]]
8601 /* 8605 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
8602 /* 8608 */ // Label 391: @8608
8603 /* 8608 */ GIM_Reject,
8604 /* 8609 */ // Label 37: @8609
8605 /* 8609 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(8629), // Rule ID 255 //
8606 /* 8614 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
8607 /* 8617 */ // MIs[0] x
8608 /* 8617 */ // No operand predicates
8609 /* 8617 */ // MIs[0] y
8610 /* 8617 */ // No operand predicates
8611 /* 8617 */ // MIs[0] z
8612 /* 8617 */ // No operand predicates
8613 /* 8617 */ // MIs[0] Operand 3
8614 /* 8617 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8615 /* 8621 */ // Combiner Rule #182: funnel_shift_left_zero
8616 /* 8621 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8617 /* 8624 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8618 /* 8626 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
8619 /* 8628 */ GIR_EraseRootFromParent_Done,
8620 /* 8629 */ // Label 392: @8629
8621 /* 8629 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(8640), // Rule ID 252 //
8622 /* 8634 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
8623 /* 8637 */ // MIs[0] dst
8624 /* 8637 */ // No operand predicates
8625 /* 8637 */ // MIs[0] root.x
8626 /* 8637 */ // No operand predicates
8627 /* 8637 */ // MIs[0] root.y
8628 /* 8637 */ // No operand predicates
8629 /* 8637 */ // MIs[0] root.amt
8630 /* 8637 */ // No operand predicates
8631 /* 8637 */ // Combiner Rule #180: funnel_shift_to_rotate @ [root[0]]
8632 /* 8637 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8633 /* 8640 */ // Label 393: @8640
8634 /* 8640 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(8651), // Rule ID 256 //
8635 /* 8645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
8636 /* 8648 */ // MIs[0] dst
8637 /* 8648 */ // No operand predicates
8638 /* 8648 */ // MIs[0] root.x
8639 /* 8648 */ // No operand predicates
8640 /* 8648 */ // MIs[0] root.y
8641 /* 8648 */ // No operand predicates
8642 /* 8648 */ // MIs[0] root.amt
8643 /* 8648 */ // No operand predicates
8644 /* 8648 */ // Combiner Rule #183: funnel_shift_overshift @ [root[0]]
8645 /* 8648 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8646 /* 8651 */ // Label 394: @8651
8647 /* 8651 */ GIM_Reject,
8648 /* 8652 */ // Label 38: @8652
8649 /* 8652 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(8672), // Rule ID 254 //
8650 /* 8657 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
8651 /* 8660 */ // MIs[0] x
8652 /* 8660 */ // No operand predicates
8653 /* 8660 */ // MIs[0] y
8654 /* 8660 */ // No operand predicates
8655 /* 8660 */ // MIs[0] z
8656 /* 8660 */ // No operand predicates
8657 /* 8660 */ // MIs[0] Operand 3
8658 /* 8660 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8659 /* 8664 */ // Combiner Rule #181: funnel_shift_right_zero
8660 /* 8664 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8661 /* 8667 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8662 /* 8669 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
8663 /* 8671 */ GIR_EraseRootFromParent_Done,
8664 /* 8672 */ // Label 395: @8672
8665 /* 8672 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(8683), // Rule ID 253 //
8666 /* 8677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
8667 /* 8680 */ // MIs[0] dst
8668 /* 8680 */ // No operand predicates
8669 /* 8680 */ // MIs[0] root.x
8670 /* 8680 */ // No operand predicates
8671 /* 8680 */ // MIs[0] root.y
8672 /* 8680 */ // No operand predicates
8673 /* 8680 */ // MIs[0] root.amt
8674 /* 8680 */ // No operand predicates
8675 /* 8680 */ // Combiner Rule #180: funnel_shift_to_rotate @ [root[1]]
8676 /* 8680 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8677 /* 8683 */ // Label 396: @8683
8678 /* 8683 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(8694), // Rule ID 257 //
8679 /* 8688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
8680 /* 8691 */ // MIs[0] dst
8681 /* 8691 */ // No operand predicates
8682 /* 8691 */ // MIs[0] root.x
8683 /* 8691 */ // No operand predicates
8684 /* 8691 */ // MIs[0] root.y
8685 /* 8691 */ // No operand predicates
8686 /* 8691 */ // MIs[0] root.amt
8687 /* 8691 */ // No operand predicates
8688 /* 8691 */ // Combiner Rule #183: funnel_shift_overshift @ [root[1]]
8689 /* 8691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8690 /* 8694 */ // Label 397: @8694
8691 /* 8694 */ GIM_Reject,
8692 /* 8695 */ // Label 39: @8695
8693 /* 8695 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(8718), // Rule ID 127 //
8694 /* 8700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8695 /* 8703 */ // MIs[0] dst
8696 /* 8703 */ // No operand predicates
8697 /* 8703 */ // MIs[0] lhs
8698 /* 8703 */ // No operand predicates
8699 /* 8703 */ // MIs[0] Operand 2
8700 /* 8703 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8701 /* 8707 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8702 /* 8712 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
8703 /* 8712 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8704 /* 8717 */ GIR_EraseRootFromParent_Done,
8705 /* 8718 */ // Label 398: @8718
8706 /* 8718 */ GIM_Reject,
8707 /* 8719 */ // Label 40: @8719
8708 /* 8719 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(8742), // Rule ID 126 //
8709 /* 8724 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8710 /* 8727 */ // MIs[0] dst
8711 /* 8727 */ // No operand predicates
8712 /* 8727 */ // MIs[0] lhs
8713 /* 8727 */ // No operand predicates
8714 /* 8727 */ // MIs[0] Operand 2
8715 /* 8727 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8716 /* 8731 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8717 /* 8736 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
8718 /* 8736 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8719 /* 8741 */ GIR_EraseRootFromParent_Done,
8720 /* 8742 */ // Label 399: @8742
8721 /* 8742 */ GIM_Reject,
8722 /* 8743 */ // Label 41: @8743
8723 /* 8743 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(8754), // Rule ID 171 //
8724 /* 8748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
8725 /* 8751 */ // MIs[0] root
8726 /* 8751 */ // No operand predicates
8727 /* 8751 */ // MIs[0] pred
8728 /* 8751 */ // No operand predicates
8729 /* 8751 */ // MIs[0] lhs
8730 /* 8751 */ // No operand predicates
8731 /* 8751 */ // MIs[0] rhs
8732 /* 8751 */ // No operand predicates
8733 /* 8751 */ // Combiner Rule #118: canonicalize_icmp
8734 /* 8751 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
8735 /* 8754 */ // Label 400: @8754
8736 /* 8754 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(8765), // Rule ID 173 //
8737 /* 8759 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
8738 /* 8762 */ // MIs[0] dst
8739 /* 8762 */ // No operand predicates
8740 /* 8762 */ // MIs[0] pred
8741 /* 8762 */ // No operand predicates
8742 /* 8762 */ // MIs[0] src1
8743 /* 8762 */ // No operand predicates
8744 /* 8762 */ // MIs[0] src2
8745 /* 8762 */ // No operand predicates
8746 /* 8762 */ // Combiner Rule #120: icmp_to_true_false_known_bits
8747 /* 8762 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
8748 /* 8765 */ // Label 401: @8765
8749 /* 8765 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(8776), // Rule ID 174 //
8750 /* 8770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
8751 /* 8773 */ // MIs[0] dst
8752 /* 8773 */ // No operand predicates
8753 /* 8773 */ // MIs[0] pred
8754 /* 8773 */ // No operand predicates
8755 /* 8773 */ // MIs[0] src1
8756 /* 8773 */ // No operand predicates
8757 /* 8773 */ // MIs[0] src2
8758 /* 8773 */ // No operand predicates
8759 /* 8773 */ // Combiner Rule #121: icmp_to_lhs_known_bits
8760 /* 8773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
8761 /* 8776 */ // Label 402: @8776
8762 /* 8776 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(8787), // Rule ID 177 //
8763 /* 8781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
8764 /* 8784 */ // MIs[0] dst
8765 /* 8784 */ // No operand predicates
8766 /* 8784 */ // MIs[0] pred
8767 /* 8784 */ // No operand predicates
8768 /* 8784 */ // MIs[0] src1
8769 /* 8784 */ // No operand predicates
8770 /* 8784 */ // MIs[0] src2
8771 /* 8784 */ // No operand predicates
8772 /* 8784 */ // Combiner Rule #124: redundant_binop_in_equality
8773 /* 8784 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
8774 /* 8787 */ // Label 403: @8787
8775 /* 8787 */ GIM_Reject,
8776 /* 8788 */ // Label 42: @8788
8777 /* 8788 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(8799), // Rule ID 172 //
8778 /* 8793 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
8779 /* 8796 */ // MIs[0] root
8780 /* 8796 */ // No operand predicates
8781 /* 8796 */ // MIs[0] pred
8782 /* 8796 */ // No operand predicates
8783 /* 8796 */ // MIs[0] lhs
8784 /* 8796 */ // No operand predicates
8785 /* 8796 */ // MIs[0] rhs
8786 /* 8796 */ // No operand predicates
8787 /* 8796 */ // Combiner Rule #119: canonicalize_fcmp
8788 /* 8796 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
8789 /* 8799 */ // Label 404: @8799
8790 /* 8799 */ GIM_Reject,
8791 /* 8800 */ // Label 43: @8800
8792 /* 8800 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(8849), // Rule ID 189 //
8793 /* 8805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
8794 /* 8808 */ // MIs[0] dst
8795 /* 8808 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8796 /* 8812 */ // MIs[0] c
8797 /* 8812 */ // No operand predicates
8798 /* 8812 */ // MIs[0] x
8799 /* 8812 */ // No operand predicates
8800 /* 8812 */ // MIs[0] Operand 3
8801 /* 8812 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8802 /* 8816 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
8803 /* 8820 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8804 /* 8823 */ // Combiner Rule #136: select_zero_false
8805 /* 8823 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
8806 /* 8826 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8807 /* 8831 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8808 /* 8833 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
8809 /* 8837 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8810 /* 8841 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
8811 /* 8845 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8812 /* 8848 */ GIR_EraseRootFromParent_Done,
8813 /* 8849 */ // Label 405: @8849
8814 /* 8849 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(8870), // Rule ID 187 //
8815 /* 8854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
8816 /* 8857 */ // MIs[0] root
8817 /* 8857 */ // No operand predicates
8818 /* 8857 */ // MIs[0] tst
8819 /* 8857 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8820 /* 8861 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
8821 /* 8865 */ // MIs[1] tst1
8822 /* 8865 */ // No operand predicates
8823 /* 8865 */ // MIs[1] a
8824 /* 8865 */ // No operand predicates
8825 /* 8865 */ // MIs[1] b
8826 /* 8865 */ // No operand predicates
8827 /* 8865 */ // MIs[0] x
8828 /* 8865 */ // No operand predicates
8829 /* 8865 */ // MIs[0] y
8830 /* 8865 */ // No operand predicates
8831 /* 8865 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8832 /* 8867 */ // Combiner Rule #134: select_to_iminmax
8833 /* 8867 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
8834 /* 8870 */ // Label 406: @8870
8835 /* 8870 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(8906), // Rule ID 190 //
8836 /* 8875 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
8837 /* 8878 */ // MIs[0] dst
8838 /* 8878 */ // No operand predicates
8839 /* 8878 */ // MIs[0] c
8840 /* 8878 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8841 /* 8882 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
8842 /* 8886 */ // MIs[1] src
8843 /* 8886 */ // No operand predicates
8844 /* 8886 */ // MIs[1] Operand 2
8845 /* 8886 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
8846 /* 8890 */ // MIs[0] x
8847 /* 8890 */ // No operand predicates
8848 /* 8890 */ // MIs[0] y
8849 /* 8890 */ // No operand predicates
8850 /* 8890 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8851 /* 8892 */ // Combiner Rule #137: select_not
8852 /* 8892 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
8853 /* 8895 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8854 /* 8897 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
8855 /* 8901 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
8856 /* 8903 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8857 /* 8905 */ GIR_EraseRootFromParent_Done,
8858 /* 8906 */ // Label 407: @8906
8859 /* 8906 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(8935), // Rule ID 183 //
8860 /* 8911 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
8861 /* 8914 */ // MIs[0] dst
8862 /* 8914 */ // No operand predicates
8863 /* 8914 */ // MIs[0] undef
8864 /* 8914 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8865 /* 8918 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8866 /* 8922 */ // MIs[0] x
8867 /* 8922 */ // No operand predicates
8868 /* 8922 */ // MIs[0] y
8869 /* 8922 */ // No operand predicates
8870 /* 8922 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8871 /* 8927 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8872 /* 8929 */ // Combiner Rule #130: select_undef_cmp
8873 /* 8929 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8874 /* 8934 */ GIR_EraseRootFromParent_Done,
8875 /* 8935 */ // Label 408: @8935
8876 /* 8935 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(8975), // Rule ID 184 //
8877 /* 8940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
8878 /* 8943 */ // MIs[0] dst
8879 /* 8943 */ // No operand predicates
8880 /* 8943 */ // MIs[0] cond
8881 /* 8943 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8882 /* 8947 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8883 /* 8951 */ // MIs[1] Operand 1
8884 /* 8951 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8885 /* 8962 */ // MIs[0] tval
8886 /* 8962 */ // No operand predicates
8887 /* 8962 */ // MIs[0] fval
8888 /* 8962 */ // No operand predicates
8889 /* 8962 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8890 /* 8967 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8891 /* 8969 */ // Combiner Rule #131: select_constant_cmp_false
8892 /* 8969 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8893 /* 8974 */ GIR_EraseRootFromParent_Done,
8894 /* 8975 */ // Label 409: @8975
8895 /* 8975 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(9015), // Rule ID 185 //
8896 /* 8980 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
8897 /* 8983 */ // MIs[0] dst
8898 /* 8983 */ // No operand predicates
8899 /* 8983 */ // MIs[0] cond
8900 /* 8983 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8901 /* 8987 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8902 /* 8991 */ // MIs[1] Operand 1
8903 /* 8991 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(1),
8904 /* 9002 */ // MIs[0] tval
8905 /* 9002 */ // No operand predicates
8906 /* 9002 */ // MIs[0] fval
8907 /* 9002 */ // No operand predicates
8908 /* 9002 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8909 /* 9007 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8910 /* 9009 */ // Combiner Rule #132: select_constant_cmp_true
8911 /* 9009 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8912 /* 9014 */ GIR_EraseRootFromParent_Done,
8913 /* 9015 */ // Label 410: @9015
8914 /* 9015 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(9039), // Rule ID 116 //
8915 /* 9020 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8916 /* 9023 */ // MIs[0] dst
8917 /* 9023 */ // No operand predicates
8918 /* 9023 */ // MIs[0] cond
8919 /* 9023 */ // No operand predicates
8920 /* 9023 */ // MIs[0] x
8921 /* 9023 */ // No operand predicates
8922 /* 9023 */ // MIs[0] x
8923 /* 9023 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/0, /*OtherOpIdx*/2,
8924 /* 9028 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8925 /* 9033 */ // Combiner Rule #88: select_same_val_trivial
8926 /* 9033 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8927 /* 9038 */ GIR_EraseRootFromParent_Done,
8928 /* 9039 */ // Label 411: @9039
8929 /* 9039 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(9062), // Rule ID 117 //
8930 /* 9044 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
8931 /* 9047 */ // MIs[0] dst
8932 /* 9047 */ // No operand predicates
8933 /* 9047 */ // MIs[0] cond
8934 /* 9047 */ // No operand predicates
8935 /* 9047 */ // MIs[0] tval
8936 /* 9047 */ // No operand predicates
8937 /* 9047 */ // MIs[0] fval
8938 /* 9047 */ // No operand predicates
8939 /* 9047 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
8940 /* 9051 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8941 /* 9056 */ // Combiner Rule #89: select_same_val_equiv
8942 /* 9056 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8943 /* 9061 */ GIR_EraseRootFromParent_Done,
8944 /* 9062 */ // Label 412: @9062
8945 /* 9062 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(9073), // Rule ID 186 //
8946 /* 9067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
8947 /* 9070 */ // MIs[0] dst
8948 /* 9070 */ // No operand predicates
8949 /* 9070 */ // MIs[0] cond
8950 /* 9070 */ // No operand predicates
8951 /* 9070 */ // MIs[0] tval
8952 /* 9070 */ // No operand predicates
8953 /* 9070 */ // MIs[0] fval
8954 /* 9070 */ // No operand predicates
8955 /* 9070 */ // Combiner Rule #133: select_constant_cmp_general
8956 /* 9070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
8957 /* 9073 */ // Label 413: @9073
8958 /* 9073 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(9084), // Rule ID 188 //
8959 /* 9078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
8960 /* 9081 */ // MIs[0] dst
8961 /* 9081 */ // No operand predicates
8962 /* 9081 */ // MIs[0] cond
8963 /* 9081 */ // No operand predicates
8964 /* 9081 */ // MIs[0] tval
8965 /* 9081 */ // No operand predicates
8966 /* 9081 */ // MIs[0] fval
8967 /* 9081 */ // No operand predicates
8968 /* 9081 */ // Combiner Rule #135: match_selects
8969 /* 9081 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
8970 /* 9084 */ // Label 414: @9084
8971 /* 9084 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(9095), // Rule ID 367 //
8972 /* 9089 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
8973 /* 9092 */ // MIs[0] dst
8974 /* 9092 */ // No operand predicates
8975 /* 9092 */ // MIs[0] cond
8976 /* 9092 */ // No operand predicates
8977 /* 9092 */ // MIs[0] tval
8978 /* 9092 */ // No operand predicates
8979 /* 9092 */ // MIs[0] fval
8980 /* 9092 */ // No operand predicates
8981 /* 9092 */ // Combiner Rule #225: select_to_minmax
8982 /* 9092 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
8983 /* 9095 */ // Label 415: @9095
8984 /* 9095 */ GIM_Reject,
8985 /* 9096 */ // Label 44: @9096
8986 /* 9096 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(9107), // Rule ID 378 //
8987 /* 9101 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
8988 /* 9104 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
8989 /* 9104 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
8990 /* 9107 */ // Label 416: @9107
8991 /* 9107 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(9118), // Rule ID 426 //
8992 /* 9112 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
8993 /* 9115 */ // Combiner Rule #256: match_addos; wip_match_opcode 'G_UADDO'
8994 /* 9115 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
8995 /* 9118 */ // Label 417: @9118
8996 /* 9118 */ GIM_Reject,
8997 /* 9119 */ // Label 45: @9119
8998 /* 9119 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(9130), // Rule ID 225 //
8999 /* 9124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9000 /* 9127 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_UADDE'
9001 /* 9127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9002 /* 9130 */ // Label 418: @9130
9003 /* 9130 */ GIM_Reject,
9004 /* 9131 */ // Label 46: @9131
9005 /* 9131 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(9142), // Rule ID 428 //
9006 /* 9136 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9007 /* 9139 */ // Combiner Rule #257: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
9008 /* 9139 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
9009 /* 9142 */ // Label 419: @9142
9010 /* 9142 */ GIM_Reject,
9011 /* 9143 */ // Label 47: @9143
9012 /* 9143 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(9154), // Rule ID 227 //
9013 /* 9148 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9014 /* 9151 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_USUBE'
9015 /* 9151 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9016 /* 9154 */ // Label 420: @9154
9017 /* 9154 */ GIM_Reject,
9018 /* 9155 */ // Label 48: @9155
9019 /* 9155 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(9166), // Rule ID 379 //
9020 /* 9160 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9021 /* 9163 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
9022 /* 9163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9023 /* 9166 */ // Label 421: @9166
9024 /* 9166 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(9177), // Rule ID 425 //
9025 /* 9171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
9026 /* 9174 */ // Combiner Rule #256: match_addos; wip_match_opcode 'G_SADDO'
9027 /* 9174 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
9028 /* 9177 */ // Label 422: @9177
9029 /* 9177 */ GIM_Reject,
9030 /* 9178 */ // Label 49: @9178
9031 /* 9178 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(9189), // Rule ID 226 //
9032 /* 9183 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9033 /* 9186 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_SADDE'
9034 /* 9186 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9035 /* 9189 */ // Label 423: @9189
9036 /* 9189 */ GIM_Reject,
9037 /* 9190 */ // Label 50: @9190
9038 /* 9190 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(9201), // Rule ID 427 //
9039 /* 9195 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9040 /* 9198 */ // Combiner Rule #257: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
9041 /* 9198 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
9042 /* 9201 */ // Label 424: @9201
9043 /* 9201 */ GIM_Reject,
9044 /* 9202 */ // Label 51: @9202
9045 /* 9202 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(9213), // Rule ID 228 //
9046 /* 9207 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9047 /* 9210 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_SSUBE'
9048 /* 9210 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9049 /* 9213 */ // Label 425: @9213
9050 /* 9213 */ GIM_Reject,
9051 /* 9214 */ // Label 52: @9214
9052 /* 9214 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(9225), // Rule ID 221 //
9053 /* 9219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
9054 /* 9222 */ // Combiner Rule #168: mulo_by_2; wip_match_opcode 'G_UMULO'
9055 /* 9222 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
9056 /* 9225 */ // Label 426: @9225
9057 /* 9225 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(9236), // Rule ID 223 //
9058 /* 9230 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9059 /* 9233 */ // Combiner Rule #169: mulo_by_0; wip_match_opcode 'G_UMULO'
9060 /* 9233 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
9061 /* 9236 */ // Label 427: @9236
9062 /* 9236 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(9247), // Rule ID 380 //
9063 /* 9241 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9064 /* 9244 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
9065 /* 9244 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9066 /* 9247 */ // Label 428: @9247
9067 /* 9247 */ GIM_Reject,
9068 /* 9248 */ // Label 53: @9248
9069 /* 9248 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(9259), // Rule ID 222 //
9070 /* 9253 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
9071 /* 9256 */ // Combiner Rule #168: mulo_by_2; wip_match_opcode 'G_SMULO'
9072 /* 9256 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
9073 /* 9259 */ // Label 429: @9259
9074 /* 9259 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(9270), // Rule ID 224 //
9075 /* 9264 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9076 /* 9267 */ // Combiner Rule #169: mulo_by_0; wip_match_opcode 'G_SMULO'
9077 /* 9267 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
9078 /* 9270 */ // Label 430: @9270
9079 /* 9270 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(9281), // Rule ID 381 //
9080 /* 9275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9081 /* 9278 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
9082 /* 9278 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9083 /* 9281 */ // Label 431: @9281
9084 /* 9281 */ GIM_Reject,
9085 /* 9282 */ // Label 54: @9282
9086 /* 9282 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(9293), // Rule ID 382 //
9087 /* 9287 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9088 /* 9290 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
9089 /* 9290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9090 /* 9293 */ // Label 432: @9293
9091 /* 9293 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(9304), // Rule ID 316 //
9092 /* 9298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
9093 /* 9301 */ // MIs[0] dst
9094 /* 9301 */ // No operand predicates
9095 /* 9301 */ // MIs[0] src1
9096 /* 9301 */ // No operand predicates
9097 /* 9301 */ // MIs[0] src2
9098 /* 9301 */ // No operand predicates
9099 /* 9301 */ // Combiner Rule #200: mulh_to_lshr
9100 /* 9301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
9101 /* 9304 */ // Label 433: @9304
9102 /* 9304 */ GIM_Reject,
9103 /* 9305 */ // Label 55: @9305
9104 /* 9305 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(9316), // Rule ID 383 //
9105 /* 9310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9106 /* 9313 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
9107 /* 9313 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9108 /* 9316 */ // Label 434: @9316
9109 /* 9316 */ GIM_Reject,
9110 /* 9317 */ // Label 56: @9317
9111 /* 9317 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(9328), // Rule ID 384 //
9112 /* 9322 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9113 /* 9325 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
9114 /* 9325 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9115 /* 9328 */ // Label 435: @9328
9116 /* 9328 */ GIM_Reject,
9117 /* 9329 */ // Label 57: @9329
9118 /* 9329 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(9340), // Rule ID 385 //
9119 /* 9334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9120 /* 9337 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
9121 /* 9337 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9122 /* 9340 */ // Label 436: @9340
9123 /* 9340 */ GIM_Reject,
9124 /* 9341 */ // Label 58: @9341
9125 /* 9341 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(9352), // Rule ID 240 //
9126 /* 9346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
9127 /* 9349 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
9128 /* 9349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9129 /* 9352 */ // Label 437: @9352
9130 /* 9352 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(9363), // Rule ID 244 //
9131 /* 9357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
9132 /* 9360 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
9133 /* 9360 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
9134 /* 9363 */ // Label 438: @9363
9135 /* 9363 */ GIM_Reject,
9136 /* 9364 */ // Label 59: @9364
9137 /* 9364 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(9375), // Rule ID 239 //
9138 /* 9369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
9139 /* 9372 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
9140 /* 9372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9141 /* 9375 */ // Label 439: @9375
9142 /* 9375 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(9386), // Rule ID 245 //
9143 /* 9380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
9144 /* 9383 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
9145 /* 9383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
9146 /* 9386 */ // Label 440: @9386
9147 /* 9386 */ GIM_Reject,
9148 /* 9387 */ // Label 60: @9387
9149 /* 9387 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(9398), // Rule ID 386 //
9150 /* 9392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9151 /* 9395 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
9152 /* 9395 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9153 /* 9398 */ // Label 441: @9398
9154 /* 9398 */ GIM_Reject,
9155 /* 9399 */ // Label 61: @9399
9156 /* 9399 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(9410), // Rule ID 387 //
9157 /* 9404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9158 /* 9407 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
9159 /* 9407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9160 /* 9410 */ // Label 442: @9410
9161 /* 9410 */ GIM_Reject,
9162 /* 9411 */ // Label 62: @9411
9163 /* 9411 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(9422), // Rule ID 388 //
9164 /* 9416 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9165 /* 9419 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
9166 /* 9419 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9167 /* 9422 */ // Label 443: @9422
9168 /* 9422 */ GIM_Reject,
9169 /* 9423 */ // Label 63: @9423
9170 /* 9423 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(9434), // Rule ID 389 //
9171 /* 9428 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9172 /* 9431 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
9173 /* 9431 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9174 /* 9434 */ // Label 444: @9434
9175 /* 9434 */ GIM_Reject,
9176 /* 9435 */ // Label 64: @9435
9177 /* 9435 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(9446), // Rule ID 317 //
9178 /* 9440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
9179 /* 9443 */ // Combiner Rule #201: redundant_neg_operands_fadd_fsub; wip_match_opcode 'G_FADD'
9180 /* 9443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
9181 /* 9446 */ // Label 445: @9446
9182 /* 9446 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(9457), // Rule ID 350 //
9183 /* 9451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9184 /* 9454 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FADD'
9185 /* 9454 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9186 /* 9457 */ // Label 446: @9457
9187 /* 9457 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(9468), // Rule ID 390 //
9188 /* 9462 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9189 /* 9465 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
9190 /* 9465 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9191 /* 9468 */ // Label 447: @9468
9192 /* 9468 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(9491), // Rule ID 156 //
9193 /* 9473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
9194 /* 9476 */ // MIs[0] dst
9195 /* 9476 */ // No operand predicates
9196 /* 9476 */ // MIs[0] x
9197 /* 9476 */ // No operand predicates
9198 /* 9476 */ // MIs[0] y
9199 /* 9476 */ // No operand predicates
9200 /* 9476 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
9201 /* 9480 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9202 /* 9485 */ // Combiner Rule #108: right_identity_neg_zero_fp
9203 /* 9485 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9204 /* 9490 */ GIR_EraseRootFromParent_Done,
9205 /* 9491 */ // Label 448: @9491
9206 /* 9491 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(9520), // Rule ID 157 //
9207 /* 9496 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
9208 /* 9499 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
9209 /* 9505 */ // MIs[0] dst
9210 /* 9505 */ // No operand predicates
9211 /* 9505 */ // MIs[0] x
9212 /* 9505 */ // No operand predicates
9213 /* 9505 */ // MIs[0] y
9214 /* 9505 */ // No operand predicates
9215 /* 9505 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
9216 /* 9509 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9217 /* 9514 */ // Combiner Rule #109: right_identity_neg_zero_fp_nsz
9218 /* 9514 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9219 /* 9519 */ GIR_EraseRootFromParent_Done,
9220 /* 9520 */ // Label 449: @9520
9221 /* 9520 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(9531), // Rule ID 290 //
9222 /* 9525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9223 /* 9528 */ // MIs[0] d
9224 /* 9528 */ // No operand predicates
9225 /* 9528 */ // MIs[0] mi.src0
9226 /* 9528 */ // No operand predicates
9227 /* 9528 */ // MIs[0] mi.src1
9228 /* 9528 */ // No operand predicates
9229 /* 9528 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[0]]
9230 /* 9528 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9231 /* 9531 */ // Label 450: @9531
9232 /* 9531 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(9542), // Rule ID 324 //
9233 /* 9536 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
9234 /* 9539 */ // MIs[0] dst
9235 /* 9539 */ // No operand predicates
9236 /* 9539 */ // MIs[0] src1
9237 /* 9539 */ // No operand predicates
9238 /* 9539 */ // MIs[0] src2
9239 /* 9539 */ // No operand predicates
9240 /* 9539 */ // Combiner Rule #207: combine_fadd_fmul_to_fmad_or_fma
9241 /* 9539 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
9242 /* 9542 */ // Label 451: @9542
9243 /* 9542 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(9553), // Rule ID 325 //
9244 /* 9547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9245 /* 9550 */ // MIs[0] dst
9246 /* 9550 */ // No operand predicates
9247 /* 9550 */ // MIs[0] src1
9248 /* 9550 */ // No operand predicates
9249 /* 9550 */ // MIs[0] src2
9250 /* 9550 */ // No operand predicates
9251 /* 9550 */ // Combiner Rule #208: combine_fadd_fpext_fmul_to_fmad_or_fma
9252 /* 9550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
9253 /* 9553 */ // Label 452: @9553
9254 /* 9553 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(9564), // Rule ID 326 //
9255 /* 9558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
9256 /* 9561 */ // MIs[0] dst
9257 /* 9561 */ // No operand predicates
9258 /* 9561 */ // MIs[0] src1
9259 /* 9561 */ // No operand predicates
9260 /* 9561 */ // MIs[0] src2
9261 /* 9561 */ // No operand predicates
9262 /* 9561 */ // Combiner Rule #209: combine_fadd_fma_fmul_to_fmad_or_fma
9263 /* 9561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
9264 /* 9564 */ // Label 453: @9564
9265 /* 9564 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(9575), // Rule ID 327 //
9266 /* 9569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
9267 /* 9572 */ // MIs[0] dst
9268 /* 9572 */ // No operand predicates
9269 /* 9572 */ // MIs[0] src1
9270 /* 9572 */ // No operand predicates
9271 /* 9572 */ // MIs[0] src2
9272 /* 9572 */ // No operand predicates
9273 /* 9572 */ // Combiner Rule #210: combine_fadd_fpext_fma_fmul_to_fmad_or_fma
9274 /* 9572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
9275 /* 9575 */ // Label 454: @9575
9276 /* 9575 */ GIM_Reject,
9277 /* 9576 */ // Label 65: @9576
9278 /* 9576 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(9587), // Rule ID 318 //
9279 /* 9581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
9280 /* 9584 */ // Combiner Rule #201: redundant_neg_operands_fadd_fsub; wip_match_opcode 'G_FSUB'
9281 /* 9584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
9282 /* 9587 */ // Label 455: @9587
9283 /* 9587 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(9598), // Rule ID 351 //
9284 /* 9592 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9285 /* 9595 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FSUB'
9286 /* 9595 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9287 /* 9598 */ // Label 456: @9598
9288 /* 9598 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(9609), // Rule ID 291 //
9289 /* 9603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9290 /* 9606 */ // MIs[0] d
9291 /* 9606 */ // No operand predicates
9292 /* 9606 */ // MIs[0] mi.src0
9293 /* 9606 */ // No operand predicates
9294 /* 9606 */ // MIs[0] mi.src1
9295 /* 9606 */ // No operand predicates
9296 /* 9606 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[1]]
9297 /* 9606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9298 /* 9609 */ // Label 457: @9609
9299 /* 9609 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(9620), // Rule ID 328 //
9300 /* 9614 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
9301 /* 9617 */ // MIs[0] dst
9302 /* 9617 */ // No operand predicates
9303 /* 9617 */ // MIs[0] src1
9304 /* 9617 */ // No operand predicates
9305 /* 9617 */ // MIs[0] src2
9306 /* 9617 */ // No operand predicates
9307 /* 9617 */ // Combiner Rule #211: combine_fsub_fmul_to_fmad_or_fma
9308 /* 9617 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9309 /* 9620 */ // Label 458: @9620
9310 /* 9620 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(9631), // Rule ID 329 //
9311 /* 9625 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
9312 /* 9628 */ // MIs[0] dst
9313 /* 9628 */ // No operand predicates
9314 /* 9628 */ // MIs[0] src1
9315 /* 9628 */ // No operand predicates
9316 /* 9628 */ // MIs[0] src2
9317 /* 9628 */ // No operand predicates
9318 /* 9628 */ // Combiner Rule #212: combine_fsub_fneg_fmul_to_fmad_or_fma
9319 /* 9628 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9320 /* 9631 */ // Label 459: @9631
9321 /* 9631 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(9642), // Rule ID 330 //
9322 /* 9636 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
9323 /* 9639 */ // MIs[0] dst
9324 /* 9639 */ // No operand predicates
9325 /* 9639 */ // MIs[0] src1
9326 /* 9639 */ // No operand predicates
9327 /* 9639 */ // MIs[0] src2
9328 /* 9639 */ // No operand predicates
9329 /* 9639 */ // Combiner Rule #213: combine_fsub_fpext_fmul_to_fmad_or_fma
9330 /* 9639 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
9331 /* 9642 */ // Label 460: @9642
9332 /* 9642 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(9653), // Rule ID 331 //
9333 /* 9647 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
9334 /* 9650 */ // MIs[0] dst
9335 /* 9650 */ // No operand predicates
9336 /* 9650 */ // MIs[0] src1
9337 /* 9650 */ // No operand predicates
9338 /* 9650 */ // MIs[0] src2
9339 /* 9650 */ // No operand predicates
9340 /* 9650 */ // Combiner Rule #214: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma
9341 /* 9650 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9342 /* 9653 */ // Label 461: @9653
9343 /* 9653 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(9664), // Rule ID 368 //
9344 /* 9658 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
9345 /* 9661 */ // MIs[0] dst
9346 /* 9661 */ // No operand predicates
9347 /* 9661 */ // MIs[0] src1
9348 /* 9661 */ // No operand predicates
9349 /* 9661 */ // MIs[0] src2
9350 /* 9661 */ // No operand predicates
9351 /* 9661 */ // Combiner Rule #226: fsub_to_fneg
9352 /* 9661 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
9353 /* 9664 */ // Label 462: @9664
9354 /* 9664 */ GIM_Reject,
9355 /* 9665 */ // Label 66: @9665
9356 /* 9665 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(9676), // Rule ID 349 //
9357 /* 9670 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9358 /* 9673 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMUL'
9359 /* 9673 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9360 /* 9676 */ // Label 463: @9676
9361 /* 9676 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(9687), // Rule ID 391 //
9362 /* 9681 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9363 /* 9684 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
9364 /* 9684 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9365 /* 9687 */ // Label 464: @9687
9366 /* 9687 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(9730), // Rule ID 319 //
9367 /* 9692 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
9368 /* 9695 */ // MIs[0] dst
9369 /* 9695 */ // No operand predicates
9370 /* 9695 */ // MIs[0] nx
9371 /* 9695 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9372 /* 9699 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9373 /* 9703 */ // MIs[1] x
9374 /* 9703 */ // No operand predicates
9375 /* 9703 */ // MIs[0] ny
9376 /* 9703 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9377 /* 9707 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9378 /* 9711 */ // MIs[2] y
9379 /* 9711 */ // No operand predicates
9380 /* 9711 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9381 /* 9713 */ // Combiner Rule #202: G_FMUL_fneg_fneg
9382 /* 9713 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMUL),
9383 /* 9716 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9384 /* 9718 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9385 /* 9722 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9386 /* 9726 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9387 /* 9729 */ GIR_EraseRootFromParent_Done,
9388 /* 9730 */ // Label 465: @9730
9389 /* 9730 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(9751), // Rule ID 456 //
9390 /* 9735 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule279Enabled),
9391 /* 9738 */ // MIs[0] dst
9392 /* 9738 */ // No operand predicates
9393 /* 9738 */ // MIs[0] x
9394 /* 9738 */ // No operand predicates
9395 /* 9738 */ // MIs[0] select
9396 /* 9738 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9397 /* 9742 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
9398 /* 9746 */ // MIs[1] y
9399 /* 9746 */ // No operand predicates
9400 /* 9746 */ // MIs[1] A
9401 /* 9746 */ // No operand predicates
9402 /* 9746 */ // MIs[1] B
9403 /* 9746 */ // No operand predicates
9404 /* 9746 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9405 /* 9748 */ // Combiner Rule #279: combine_fmul_with_select_to_fldexp
9406 /* 9748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
9407 /* 9751 */ // Label 466: @9751
9408 /* 9751 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(9774), // Rule ID 146 //
9409 /* 9756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
9410 /* 9759 */ // MIs[0] dst
9411 /* 9759 */ // No operand predicates
9412 /* 9759 */ // MIs[0] x
9413 /* 9759 */ // No operand predicates
9414 /* 9759 */ // MIs[0] y
9415 /* 9759 */ // No operand predicates
9416 /* 9759 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
9417 /* 9763 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9418 /* 9768 */ // Combiner Rule #100: right_identity_one_fp
9419 /* 9768 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9420 /* 9773 */ GIR_EraseRootFromParent_Done,
9421 /* 9774 */ // Label 467: @9774
9422 /* 9774 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(9794), // Rule ID 158 //
9423 /* 9779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
9424 /* 9782 */ // MIs[0] dst
9425 /* 9782 */ // No operand predicates
9426 /* 9782 */ // MIs[0] x
9427 /* 9782 */ // No operand predicates
9428 /* 9782 */ // MIs[0] y
9429 /* 9782 */ // No operand predicates
9430 /* 9782 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
9431 /* 9786 */ // Combiner Rule #110: right_identity_neg_one_fp
9432 /* 9786 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
9433 /* 9789 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9434 /* 9791 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
9435 /* 9793 */ GIR_EraseRootFromParent_Done,
9436 /* 9794 */ // Label 468: @9794
9437 /* 9794 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(9805), // Rule ID 292 //
9438 /* 9799 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9439 /* 9802 */ // MIs[0] d
9440 /* 9802 */ // No operand predicates
9441 /* 9802 */ // MIs[0] mi.src0
9442 /* 9802 */ // No operand predicates
9443 /* 9802 */ // MIs[0] mi.src1
9444 /* 9802 */ // No operand predicates
9445 /* 9802 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[2]]
9446 /* 9802 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9447 /* 9805 */ // Label 469: @9805
9448 /* 9805 */ GIM_Reject,
9449 /* 9806 */ // Label 67: @9806
9450 /* 9806 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(9851), // Rule ID 322 //
9451 /* 9811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
9452 /* 9814 */ // MIs[0] dst
9453 /* 9814 */ // No operand predicates
9454 /* 9814 */ // MIs[0] nx
9455 /* 9814 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9456 /* 9818 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9457 /* 9822 */ // MIs[1] x
9458 /* 9822 */ // No operand predicates
9459 /* 9822 */ // MIs[0] ny
9460 /* 9822 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9461 /* 9826 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9462 /* 9830 */ // MIs[2] y
9463 /* 9830 */ // No operand predicates
9464 /* 9830 */ // MIs[0] z
9465 /* 9830 */ // No operand predicates
9466 /* 9830 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9467 /* 9832 */ // Combiner Rule #205: G_FMA_fneg_fneg
9468 /* 9832 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMA),
9469 /* 9835 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9470 /* 9837 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9471 /* 9841 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9472 /* 9845 */ GIR_RootToRootCopy, /*OpIdx*/3, // z
9473 /* 9847 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9474 /* 9850 */ GIR_EraseRootFromParent_Done,
9475 /* 9851 */ // Label 470: @9851
9476 /* 9851 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(9862), // Rule ID 303 //
9477 /* 9856 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
9478 /* 9859 */ // MIs[0] dst
9479 /* 9859 */ // No operand predicates
9480 /* 9859 */ // MIs[0] d.src0
9481 /* 9859 */ // No operand predicates
9482 /* 9859 */ // MIs[0] d.src1
9483 /* 9859 */ // No operand predicates
9484 /* 9859 */ // MIs[0] d.src2
9485 /* 9859 */ // No operand predicates
9486 /* 9859 */ // Combiner Rule #196: constant_fold_fma @ [d[1]]
9487 /* 9859 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
9488 /* 9862 */ // Label 471: @9862
9489 /* 9862 */ GIM_Reject,
9490 /* 9863 */ // Label 68: @9863
9491 /* 9863 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(9908), // Rule ID 321 //
9492 /* 9868 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
9493 /* 9871 */ // MIs[0] dst
9494 /* 9871 */ // No operand predicates
9495 /* 9871 */ // MIs[0] nx
9496 /* 9871 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9497 /* 9875 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9498 /* 9879 */ // MIs[1] x
9499 /* 9879 */ // No operand predicates
9500 /* 9879 */ // MIs[0] ny
9501 /* 9879 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9502 /* 9883 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9503 /* 9887 */ // MIs[2] y
9504 /* 9887 */ // No operand predicates
9505 /* 9887 */ // MIs[0] z
9506 /* 9887 */ // No operand predicates
9507 /* 9887 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9508 /* 9889 */ // Combiner Rule #204: G_FMAD_fneg_fneg
9509 /* 9889 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAD),
9510 /* 9892 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9511 /* 9894 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9512 /* 9898 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9513 /* 9902 */ GIR_RootToRootCopy, /*OpIdx*/3, // z
9514 /* 9904 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9515 /* 9907 */ GIR_EraseRootFromParent_Done,
9516 /* 9908 */ // Label 472: @9908
9517 /* 9908 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(9919), // Rule ID 302 //
9518 /* 9913 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
9519 /* 9916 */ // MIs[0] dst
9520 /* 9916 */ // No operand predicates
9521 /* 9916 */ // MIs[0] d.src0
9522 /* 9916 */ // No operand predicates
9523 /* 9916 */ // MIs[0] d.src1
9524 /* 9916 */ // No operand predicates
9525 /* 9916 */ // MIs[0] d.src2
9526 /* 9916 */ // No operand predicates
9527 /* 9916 */ // Combiner Rule #196: constant_fold_fma @ [d[0]]
9528 /* 9916 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
9529 /* 9919 */ // Label 473: @9919
9530 /* 9919 */ GIM_Reject,
9531 /* 9920 */ // Label 69: @9920
9532 /* 9920 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(9931), // Rule ID 352 //
9533 /* 9925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9534 /* 9928 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FDIV'
9535 /* 9928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9536 /* 9931 */ // Label 474: @9931
9537 /* 9931 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(9974), // Rule ID 320 //
9538 /* 9936 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
9539 /* 9939 */ // MIs[0] dst
9540 /* 9939 */ // No operand predicates
9541 /* 9939 */ // MIs[0] nx
9542 /* 9939 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9543 /* 9943 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9544 /* 9947 */ // MIs[1] x
9545 /* 9947 */ // No operand predicates
9546 /* 9947 */ // MIs[0] ny
9547 /* 9947 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9548 /* 9951 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9549 /* 9955 */ // MIs[2] y
9550 /* 9955 */ // No operand predicates
9551 /* 9955 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9552 /* 9957 */ // Combiner Rule #203: G_FDIV_fneg_fneg
9553 /* 9957 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FDIV),
9554 /* 9960 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9555 /* 9962 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9556 /* 9966 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9557 /* 9970 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9558 /* 9973 */ GIR_EraseRootFromParent_Done,
9559 /* 9974 */ // Label 475: @9974
9560 /* 9974 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(9985), // Rule ID 293 //
9561 /* 9979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9562 /* 9982 */ // MIs[0] d
9563 /* 9982 */ // No operand predicates
9564 /* 9982 */ // MIs[0] mi.src0
9565 /* 9982 */ // No operand predicates
9566 /* 9982 */ // MIs[0] mi.src1
9567 /* 9982 */ // No operand predicates
9568 /* 9982 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[3]]
9569 /* 9982 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9570 /* 9985 */ // Label 476: @9985
9571 /* 9985 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(9996), // Rule ID 365 //
9572 /* 9990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
9573 /* 9993 */ // MIs[0] dst
9574 /* 9993 */ // No operand predicates
9575 /* 9993 */ // MIs[0] src1
9576 /* 9993 */ // No operand predicates
9577 /* 9993 */ // MIs[0] src2
9578 /* 9993 */ // No operand predicates
9579 /* 9993 */ // Combiner Rule #223: fdiv_repeated_divison
9580 /* 9993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
9581 /* 9996 */ // Label 477: @9996
9582 /* 9996 */ GIM_Reject,
9583 /* 9997 */ // Label 70: @9997
9584 /* 9997 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(10008), // Rule ID 353 //
9585 /* 10002 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9586 /* 10005 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FREM'
9587 /* 10005 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9588 /* 10008 */ // Label 478: @10008
9589 /* 10008 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(10019), // Rule ID 294 //
9590 /* 10013 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9591 /* 10016 */ // MIs[0] d
9592 /* 10016 */ // No operand predicates
9593 /* 10016 */ // MIs[0] mi.src0
9594 /* 10016 */ // No operand predicates
9595 /* 10016 */ // MIs[0] mi.src1
9596 /* 10016 */ // No operand predicates
9597 /* 10016 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[4]]
9598 /* 10016 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9599 /* 10019 */ // Label 479: @10019
9600 /* 10019 */ GIM_Reject,
9601 /* 10020 */ // Label 71: @10020
9602 /* 10020 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(10041), // Rule ID 233 //
9603 /* 10025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
9604 /* 10028 */ // MIs[0] dst
9605 /* 10028 */ // No operand predicates
9606 /* 10028 */ // MIs[0] float
9607 /* 10028 */ // No operand predicates
9608 /* 10028 */ // MIs[0] int
9609 /* 10028 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9610 /* 10032 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9611 /* 10036 */ // MIs[1] imm
9612 /* 10036 */ // No operand predicates
9613 /* 10036 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9614 /* 10038 */ // Combiner Rule #172: expand_const_fpowi
9615 /* 10038 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
9616 /* 10041 */ // Label 480: @10041
9617 /* 10041 */ GIM_Reject,
9618 /* 10042 */ // Label 72: @10042
9619 /* 10042 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(10063), // Rule ID 207 //
9620 /* 10047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
9621 /* 10050 */ // MIs[0] dst
9622 /* 10050 */ // No operand predicates
9623 /* 10050 */ // MIs[0] src0
9624 /* 10050 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9625 /* 10054 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9626 /* 10058 */ // MIs[1] cst
9627 /* 10058 */ // No operand predicates
9628 /* 10058 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9629 /* 10060 */ // Combiner Rule #154: constant_fold_flog2
9630 /* 10060 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9631 /* 10063 */ // Label 481: @10063
9632 /* 10063 */ GIM_Reject,
9633 /* 10064 */ // Label 73: @10064
9634 /* 10064 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(10085), // Rule ID 204 //
9635 /* 10069 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
9636 /* 10072 */ // MIs[0] dst
9637 /* 10072 */ // No operand predicates
9638 /* 10072 */ // MIs[0] src0
9639 /* 10072 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9640 /* 10076 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9641 /* 10080 */ // MIs[1] cst
9642 /* 10080 */ // No operand predicates
9643 /* 10080 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9644 /* 10082 */ // Combiner Rule #151: constant_fold_fneg
9645 /* 10082 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9646 /* 10085 */ // Label 482: @10085
9647 /* 10085 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(10114), // Rule ID 144 //
9648 /* 10090 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
9649 /* 10093 */ // MIs[0] dst
9650 /* 10093 */ // No operand predicates
9651 /* 10093 */ // MIs[0] t
9652 /* 10093 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9653 /* 10097 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9654 /* 10101 */ // MIs[1] src
9655 /* 10101 */ // No operand predicates
9656 /* 10101 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
9657 /* 10106 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9658 /* 10108 */ // Combiner Rule #98: fneg_fneg_fold
9659 /* 10108 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
9660 /* 10113 */ GIR_EraseRootFromParent_Done,
9661 /* 10114 */ // Label 483: @10114
9662 /* 10114 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(10125), // Rule ID 458 //
9663 /* 10119 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule281Enabled),
9664 /* 10122 */ // MIs[0] dst
9665 /* 10122 */ // No operand predicates
9666 /* 10122 */ // MIs[0] src
9667 /* 10122 */ // No operand predicates
9668 /* 10122 */ // Combiner Rule #281: foldable_fneg
9669 /* 10122 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
9670 /* 10125 */ // Label 484: @10125
9671 /* 10125 */ GIM_Reject,
9672 /* 10126 */ // Label 74: @10126
9673 /* 10126 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(10147), // Rule ID 209 //
9674 /* 10131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
9675 /* 10134 */ // MIs[0] dst
9676 /* 10134 */ // No operand predicates
9677 /* 10134 */ // MIs[0] src0
9678 /* 10134 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9679 /* 10138 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9680 /* 10142 */ // MIs[1] cst
9681 /* 10142 */ // No operand predicates
9682 /* 10142 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9683 /* 10144 */ // Combiner Rule #156: constant_fold_fpext
9684 /* 10144 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9685 /* 10147 */ // Label 485: @10147
9686 /* 10147 */ GIM_Reject,
9687 /* 10148 */ // Label 75: @10148
9688 /* 10148 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(10169), // Rule ID 208 //
9689 /* 10153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
9690 /* 10156 */ // MIs[0] dst
9691 /* 10156 */ // No operand predicates
9692 /* 10156 */ // MIs[0] src0
9693 /* 10156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9694 /* 10160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9695 /* 10164 */ // MIs[1] cst
9696 /* 10164 */ // No operand predicates
9697 /* 10164 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9698 /* 10166 */ // Combiner Rule #155: constant_fold_fptrunc
9699 /* 10166 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9700 /* 10169 */ // Label 486: @10169
9701 /* 10169 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(10190), // Rule ID 155 //
9702 /* 10174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
9703 /* 10177 */ // MIs[0] dst
9704 /* 10177 */ // No operand predicates
9705 /* 10177 */ // MIs[0] src1
9706 /* 10177 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9707 /* 10181 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
9708 /* 10185 */ // MIs[1] src0
9709 /* 10185 */ // No operand predicates
9710 /* 10185 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9711 /* 10187 */ // Combiner Rule #107: fptrunc_fpext_fold
9712 /* 10187 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
9713 /* 10190 */ // Label 487: @10190
9714 /* 10190 */ GIM_Reject,
9715 /* 10191 */ // Label 76: @10191
9716 /* 10191 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(10212), // Rule ID 102 //
9717 /* 10196 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
9718 /* 10199 */ // MIs[0] dst
9719 /* 10199 */ // No operand predicates
9720 /* 10199 */ // MIs[0] __unary_undef_to_undef_match_0.x
9721 /* 10199 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9722 /* 10203 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9723 /* 10207 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9724 /* 10209 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
9725 /* 10209 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
9726 /* 10212 */ // Label 488: @10212
9727 /* 10212 */ GIM_Reject,
9728 /* 10213 */ // Label 77: @10213
9729 /* 10213 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(10234), // Rule ID 103 //
9730 /* 10218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
9731 /* 10221 */ // MIs[0] dst
9732 /* 10221 */ // No operand predicates
9733 /* 10221 */ // MIs[0] __unary_undef_to_undef_match_0.x
9734 /* 10221 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9735 /* 10225 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9736 /* 10229 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9737 /* 10231 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
9738 /* 10231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
9739 /* 10234 */ // Label 489: @10234
9740 /* 10234 */ GIM_Reject,
9741 /* 10235 */ // Label 78: @10235
9742 /* 10235 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(10256), // Rule ID 83 //
9743 /* 10240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9744 /* 10243 */ // MIs[0] dst
9745 /* 10243 */ // No operand predicates
9746 /* 10243 */ // MIs[0] __undef_to_fp_zero_match_0.x
9747 /* 10243 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9748 /* 10247 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9749 /* 10251 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9750 /* 10253 */ // Combiner Rule #76: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[1]]
9751 /* 10253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9752 /* 10256 */ // Label 490: @10256
9753 /* 10256 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(10271), // Rule ID 217 //
9754 /* 10261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
9755 /* 10264 */ // MIs[0] dst
9756 /* 10264 */ // No operand predicates
9757 /* 10264 */ // MIs[0] Operand 1
9758 /* 10264 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
9759 /* 10268 */ // Combiner Rule #164: itof_const_zero_fold_si
9760 /* 10268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9761 /* 10271 */ // Label 491: @10271
9762 /* 10271 */ GIM_Reject,
9763 /* 10272 */ // Label 79: @10272
9764 /* 10272 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(10293), // Rule ID 82 //
9765 /* 10277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9766 /* 10280 */ // MIs[0] dst
9767 /* 10280 */ // No operand predicates
9768 /* 10280 */ // MIs[0] __undef_to_fp_zero_match_0.x
9769 /* 10280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9770 /* 10284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9771 /* 10288 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9772 /* 10290 */ // Combiner Rule #76: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[0]]
9773 /* 10290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9774 /* 10293 */ // Label 492: @10293
9775 /* 10293 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(10308), // Rule ID 218 //
9776 /* 10298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
9777 /* 10301 */ // MIs[0] dst
9778 /* 10301 */ // No operand predicates
9779 /* 10301 */ // MIs[0] Operand 1
9780 /* 10301 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
9781 /* 10305 */ // Combiner Rule #165: itof_const_zero_fold_ui
9782 /* 10305 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9783 /* 10308 */ // Label 493: @10308
9784 /* 10308 */ GIM_Reject,
9785 /* 10309 */ // Label 80: @10309
9786 /* 10309 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(10338), // Rule ID 26 //
9787 /* 10314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
9788 /* 10317 */ // MIs[0] dst
9789 /* 10317 */ // No operand predicates
9790 /* 10317 */ // MIs[0] src
9791 /* 10317 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9792 /* 10321 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
9793 /* 10325 */ // MIs[1] __idempotent_prop_match_0.x
9794 /* 10325 */ // No operand predicates
9795 /* 10325 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9796 /* 10330 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9797 /* 10332 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
9798 /* 10332 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9799 /* 10337 */ GIR_EraseRootFromParent_Done,
9800 /* 10338 */ // Label 494: @10338
9801 /* 10338 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(10359), // Rule ID 205 //
9802 /* 10343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
9803 /* 10346 */ // MIs[0] dst
9804 /* 10346 */ // No operand predicates
9805 /* 10346 */ // MIs[0] src0
9806 /* 10346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9807 /* 10350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9808 /* 10354 */ // MIs[1] cst
9809 /* 10354 */ // No operand predicates
9810 /* 10354 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9811 /* 10356 */ // Combiner Rule #152: constant_fold_fabs
9812 /* 10356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9813 /* 10359 */ // Label 495: @10359
9814 /* 10359 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(10387), // Rule ID 315 //
9815 /* 10364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
9816 /* 10367 */ // MIs[0] dst
9817 /* 10367 */ // No operand predicates
9818 /* 10367 */ // MIs[0] tmp
9819 /* 10367 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9820 /* 10371 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9821 /* 10375 */ // MIs[1] x
9822 /* 10375 */ // No operand predicates
9823 /* 10375 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9824 /* 10377 */ // Combiner Rule #199: fabs_fneg_fold
9825 /* 10377 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
9826 /* 10380 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9827 /* 10382 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9828 /* 10386 */ GIR_EraseRootFromParent_Done,
9829 /* 10387 */ // Label 496: @10387
9830 /* 10387 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(10408), // Rule ID 459 //
9831 /* 10392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule282Enabled),
9832 /* 10395 */ // MIs[0] dst
9833 /* 10395 */ // No operand predicates
9834 /* 10395 */ // MIs[0] round
9835 /* 10395 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9836 /* 10399 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTRUNC),
9837 /* 10403 */ // MIs[1] src
9838 /* 10403 */ // No operand predicates
9839 /* 10403 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9840 /* 10405 */ // Combiner Rule #282: fold_fabs_fptrunc
9841 /* 10405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
9842 /* 10408 */ // Label 497: @10408
9843 /* 10408 */ GIM_Reject,
9844 /* 10409 */ // Label 81: @10409
9845 /* 10409 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(10420), // Rule ID 295 //
9846 /* 10414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9847 /* 10417 */ // MIs[0] d
9848 /* 10417 */ // No operand predicates
9849 /* 10417 */ // MIs[0] mi.src0
9850 /* 10417 */ // No operand predicates
9851 /* 10417 */ // MIs[0] mi.src1
9852 /* 10417 */ // No operand predicates
9853 /* 10417 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[5]]
9854 /* 10417 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9855 /* 10420 */ // Label 498: @10420
9856 /* 10420 */ GIM_Reject,
9857 /* 10421 */ // Label 82: @10421
9858 /* 10421 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(10450), // Rule ID 27 //
9859 /* 10426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
9860 /* 10429 */ // MIs[0] dst
9861 /* 10429 */ // No operand predicates
9862 /* 10429 */ // MIs[0] src
9863 /* 10429 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9864 /* 10433 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
9865 /* 10437 */ // MIs[1] __idempotent_prop_match_0.x
9866 /* 10437 */ // No operand predicates
9867 /* 10437 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9868 /* 10442 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9869 /* 10444 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
9870 /* 10444 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9871 /* 10449 */ GIR_EraseRootFromParent_Done,
9872 /* 10450 */ // Label 499: @10450
9873 /* 10450 */ GIM_Reject,
9874 /* 10451 */ // Label 83: @10451
9875 /* 10451 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(10462), // Rule ID 354 //
9876 /* 10456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9877 /* 10459 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
9878 /* 10459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9879 /* 10462 */ // Label 500: @10462
9880 /* 10462 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(10473), // Rule ID 392 //
9881 /* 10467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9882 /* 10470 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
9883 /* 10470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9884 /* 10473 */ // Label 501: @10473
9885 /* 10473 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(10484), // Rule ID 229 //
9886 /* 10478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
9887 /* 10481 */ // MIs[0] dst
9888 /* 10481 */ // No operand predicates
9889 /* 10481 */ // MIs[0] root.src0
9890 /* 10481 */ // No operand predicates
9891 /* 10481 */ // MIs[0] root.src1
9892 /* 10481 */ // No operand predicates
9893 /* 10481 */ // Combiner Rule #171: combine_minmax_nan @ [root[0]]
9894 /* 10481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9895 /* 10484 */ // Label 502: @10484
9896 /* 10484 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(10495), // Rule ID 296 //
9897 /* 10489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9898 /* 10492 */ // MIs[0] d
9899 /* 10492 */ // No operand predicates
9900 /* 10492 */ // MIs[0] mi.src0
9901 /* 10492 */ // No operand predicates
9902 /* 10492 */ // MIs[0] mi.src1
9903 /* 10492 */ // No operand predicates
9904 /* 10492 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[6]]
9905 /* 10492 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9906 /* 10495 */ // Label 503: @10495
9907 /* 10495 */ GIM_Reject,
9908 /* 10496 */ // Label 84: @10496
9909 /* 10496 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(10507), // Rule ID 355 //
9910 /* 10501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9911 /* 10504 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
9912 /* 10504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9913 /* 10507 */ // Label 504: @10507
9914 /* 10507 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(10518), // Rule ID 393 //
9915 /* 10512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9916 /* 10515 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
9917 /* 10515 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9918 /* 10518 */ // Label 505: @10518
9919 /* 10518 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(10529), // Rule ID 230 //
9920 /* 10523 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
9921 /* 10526 */ // MIs[0] dst
9922 /* 10526 */ // No operand predicates
9923 /* 10526 */ // MIs[0] root.src0
9924 /* 10526 */ // No operand predicates
9925 /* 10526 */ // MIs[0] root.src1
9926 /* 10526 */ // No operand predicates
9927 /* 10526 */ // Combiner Rule #171: combine_minmax_nan @ [root[1]]
9928 /* 10526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9929 /* 10529 */ // Label 506: @10529
9930 /* 10529 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(10540), // Rule ID 297 //
9931 /* 10534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9932 /* 10537 */ // MIs[0] d
9933 /* 10537 */ // No operand predicates
9934 /* 10537 */ // MIs[0] mi.src0
9935 /* 10537 */ // No operand predicates
9936 /* 10537 */ // MIs[0] mi.src1
9937 /* 10537 */ // No operand predicates
9938 /* 10537 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[7]]
9939 /* 10537 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9940 /* 10540 */ // Label 507: @10540
9941 /* 10540 */ GIM_Reject,
9942 /* 10541 */ // Label 85: @10541
9943 /* 10541 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(10552), // Rule ID 394 //
9944 /* 10546 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9945 /* 10549 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
9946 /* 10549 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9947 /* 10552 */ // Label 508: @10552
9948 /* 10552 */ GIM_Reject,
9949 /* 10553 */ // Label 86: @10553
9950 /* 10553 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(10564), // Rule ID 395 //
9951 /* 10558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9952 /* 10561 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
9953 /* 10561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9954 /* 10564 */ // Label 509: @10564
9955 /* 10564 */ GIM_Reject,
9956 /* 10565 */ // Label 87: @10565
9957 /* 10565 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(10576), // Rule ID 356 //
9958 /* 10570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9959 /* 10573 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
9960 /* 10573 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9961 /* 10576 */ // Label 510: @10576
9962 /* 10576 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(10587), // Rule ID 396 //
9963 /* 10581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9964 /* 10584 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
9965 /* 10584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9966 /* 10587 */ // Label 511: @10587
9967 /* 10587 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(10598), // Rule ID 231 //
9968 /* 10592 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
9969 /* 10595 */ // MIs[0] dst
9970 /* 10595 */ // No operand predicates
9971 /* 10595 */ // MIs[0] root.src0
9972 /* 10595 */ // No operand predicates
9973 /* 10595 */ // MIs[0] root.src1
9974 /* 10595 */ // No operand predicates
9975 /* 10595 */ // Combiner Rule #171: combine_minmax_nan @ [root[2]]
9976 /* 10595 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9977 /* 10598 */ // Label 512: @10598
9978 /* 10598 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(10609), // Rule ID 298 //
9979 /* 10603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9980 /* 10606 */ // MIs[0] d
9981 /* 10606 */ // No operand predicates
9982 /* 10606 */ // MIs[0] mi.src0
9983 /* 10606 */ // No operand predicates
9984 /* 10606 */ // MIs[0] mi.src1
9985 /* 10606 */ // No operand predicates
9986 /* 10606 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[8]]
9987 /* 10606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9988 /* 10609 */ // Label 513: @10609
9989 /* 10609 */ GIM_Reject,
9990 /* 10610 */ // Label 88: @10610
9991 /* 10610 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(10621), // Rule ID 357 //
9992 /* 10615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9993 /* 10618 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
9994 /* 10618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9995 /* 10621 */ // Label 514: @10621
9996 /* 10621 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(10632), // Rule ID 397 //
9997 /* 10626 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9998 /* 10629 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
9999 /* 10629 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
10000 /* 10632 */ // Label 515: @10632
10001 /* 10632 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(10643), // Rule ID 232 //
10002 /* 10637 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
10003 /* 10640 */ // MIs[0] dst
10004 /* 10640 */ // No operand predicates
10005 /* 10640 */ // MIs[0] root.src0
10006 /* 10640 */ // No operand predicates
10007 /* 10640 */ // MIs[0] root.src1
10008 /* 10640 */ // No operand predicates
10009 /* 10640 */ // Combiner Rule #171: combine_minmax_nan @ [root[3]]
10010 /* 10640 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
10011 /* 10643 */ // Label 516: @10643
10012 /* 10643 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(10654), // Rule ID 299 //
10013 /* 10648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
10014 /* 10651 */ // MIs[0] d
10015 /* 10651 */ // No operand predicates
10016 /* 10651 */ // MIs[0] mi.src0
10017 /* 10651 */ // No operand predicates
10018 /* 10651 */ // MIs[0] mi.src1
10019 /* 10651 */ // No operand predicates
10020 /* 10651 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[9]]
10021 /* 10651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10022 /* 10654 */ // Label 517: @10654
10023 /* 10654 */ GIM_Reject,
10024 /* 10655 */ // Label 89: @10655
10025 /* 10655 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(10666), // Rule ID 300 //
10026 /* 10660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
10027 /* 10663 */ // MIs[0] d
10028 /* 10663 */ // No operand predicates
10029 /* 10663 */ // MIs[0] mi.src0
10030 /* 10663 */ // No operand predicates
10031 /* 10663 */ // MIs[0] mi.src1
10032 /* 10663 */ // No operand predicates
10033 /* 10663 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[10]]
10034 /* 10663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10035 /* 10666 */ // Label 518: @10666
10036 /* 10666 */ GIM_Reject,
10037 /* 10667 */ // Label 90: @10667
10038 /* 10667 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(10678), // Rule ID 301 //
10039 /* 10672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
10040 /* 10675 */ // MIs[0] d
10041 /* 10675 */ // No operand predicates
10042 /* 10675 */ // MIs[0] mi.src0
10043 /* 10675 */ // No operand predicates
10044 /* 10675 */ // MIs[0] mi.src1
10045 /* 10675 */ // No operand predicates
10046 /* 10675 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[11]]
10047 /* 10675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10048 /* 10678 */ // Label 519: @10678
10049 /* 10678 */ GIM_Reject,
10050 /* 10679 */ // Label 91: @10679
10051 /* 10679 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(10690), // Rule ID 273 //
10052 /* 10684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10053 /* 10687 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
10054 /* 10687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10055 /* 10690 */ // Label 520: @10690
10056 /* 10690 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(10701), // Rule ID 334 //
10057 /* 10695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10058 /* 10698 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
10059 /* 10698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10060 /* 10701 */ // Label 521: @10701
10061 /* 10701 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(10738), // Rule ID 219 //
10062 /* 10706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
10063 /* 10709 */ // MIs[0] dst
10064 /* 10709 */ // No operand predicates
10065 /* 10709 */ // MIs[0] base
10066 /* 10709 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10067 /* 10713 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
10068 /* 10717 */ // MIs[1] c1reg
10069 /* 10717 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
10070 /* 10721 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10071 /* 10725 */ // MIs[2] c1imm
10072 /* 10725 */ // No operand predicates
10073 /* 10725 */ // MIs[0] c2reg
10074 /* 10725 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
10075 /* 10729 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10076 /* 10733 */ // MIs[3] c2imm
10077 /* 10733 */ // No operand predicates
10078 /* 10733 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
10079 /* 10735 */ // Combiner Rule #166: const_ptradd_to_i2p
10080 /* 10735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
10081 /* 10738 */ // Label 522: @10738
10082 /* 10738 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(10761), // Rule ID 125 //
10083 /* 10743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
10084 /* 10746 */ // MIs[0] dst
10085 /* 10746 */ // No operand predicates
10086 /* 10746 */ // MIs[0] lhs
10087 /* 10746 */ // No operand predicates
10088 /* 10746 */ // MIs[0] Operand 2
10089 /* 10746 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
10090 /* 10750 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10091 /* 10755 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
10092 /* 10755 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10093 /* 10760 */ GIR_EraseRootFromParent_Done,
10094 /* 10761 */ // Label 523: @10761
10095 /* 10761 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(10781), // Rule ID 235 //
10096 /* 10766 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
10097 /* 10769 */ // MIs[0] dst
10098 /* 10769 */ // No operand predicates
10099 /* 10769 */ // MIs[0] base
10100 /* 10769 */ // No operand predicates
10101 /* 10769 */ // MIs[0] offset
10102 /* 10769 */ // No operand predicates
10103 /* 10769 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
10104 /* 10773 */ // Combiner Rule #174: ptr_add_with_zero
10105 /* 10773 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_INTTOPTR),
10106 /* 10776 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10107 /* 10778 */ GIR_RootToRootCopy, /*OpIdx*/2, // offset
10108 /* 10780 */ GIR_EraseRootFromParent_Done,
10109 /* 10781 */ // Label 524: @10781
10110 /* 10781 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(10792), // Rule ID 168 //
10111 /* 10786 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
10112 /* 10789 */ // MIs[0] dst
10113 /* 10789 */ // No operand predicates
10114 /* 10789 */ // MIs[0] base
10115 /* 10789 */ // No operand predicates
10116 /* 10789 */ // MIs[0] offset
10117 /* 10789 */ // No operand predicates
10118 /* 10789 */ // Combiner Rule #115: reassoc_ptradd
10119 /* 10789 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
10120 /* 10792 */ // Label 525: @10792
10121 /* 10792 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(10803), // Rule ID 170 //
10122 /* 10797 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
10123 /* 10800 */ // MIs[0] dst
10124 /* 10800 */ // No operand predicates
10125 /* 10800 */ // MIs[0] base
10126 /* 10800 */ // No operand predicates
10127 /* 10800 */ // MIs[0] offset
10128 /* 10800 */ // No operand predicates
10129 /* 10800 */ // Combiner Rule #117: ptr_add_immed_chain
10130 /* 10800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
10131 /* 10803 */ // Label 526: @10803
10132 /* 10803 */ GIM_Reject,
10133 /* 10804 */ // Label 92: @10804
10134 /* 10804 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(10815), // Rule ID 286 //
10135 /* 10809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10136 /* 10812 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SMIN'
10137 /* 10812 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10138 /* 10815 */ // Label 527: @10815
10139 /* 10815 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(10826), // Rule ID 345 //
10140 /* 10820 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10141 /* 10823 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SMIN'
10142 /* 10823 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10143 /* 10826 */ // Label 528: @10826
10144 /* 10826 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(10837), // Rule ID 374 //
10145 /* 10831 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10146 /* 10834 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
10147 /* 10834 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10148 /* 10837 */ // Label 529: @10837
10149 /* 10837 */ GIM_Reject,
10150 /* 10838 */ // Label 93: @10838
10151 /* 10838 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(10849), // Rule ID 287 //
10152 /* 10843 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10153 /* 10846 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SMAX'
10154 /* 10846 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10155 /* 10849 */ // Label 530: @10849
10156 /* 10849 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(10860), // Rule ID 346 //
10157 /* 10854 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10158 /* 10857 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SMAX'
10159 /* 10857 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10160 /* 10860 */ // Label 531: @10860
10161 /* 10860 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(10871), // Rule ID 375 //
10162 /* 10865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10163 /* 10868 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
10164 /* 10868 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10165 /* 10871 */ // Label 532: @10871
10166 /* 10871 */ GIM_Reject,
10167 /* 10872 */ // Label 94: @10872
10168 /* 10872 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(10883), // Rule ID 288 //
10169 /* 10877 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10170 /* 10880 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UMIN'
10171 /* 10880 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10172 /* 10883 */ // Label 533: @10883
10173 /* 10883 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(10894), // Rule ID 347 //
10174 /* 10888 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10175 /* 10891 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UMIN'
10176 /* 10891 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10177 /* 10894 */ // Label 534: @10894
10178 /* 10894 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(10905), // Rule ID 376 //
10179 /* 10899 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10180 /* 10902 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
10181 /* 10902 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10182 /* 10905 */ // Label 535: @10905
10183 /* 10905 */ GIM_Reject,
10184 /* 10906 */ // Label 95: @10906
10185 /* 10906 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(10917), // Rule ID 289 //
10186 /* 10911 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10187 /* 10914 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UMAX'
10188 /* 10914 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10189 /* 10917 */ // Label 536: @10917
10190 /* 10917 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(10928), // Rule ID 348 //
10191 /* 10922 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10192 /* 10925 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UMAX'
10193 /* 10925 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10194 /* 10928 */ // Label 537: @10928
10195 /* 10928 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(10939), // Rule ID 377 //
10196 /* 10933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10197 /* 10936 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
10198 /* 10936 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10199 /* 10939 */ // Label 538: @10939
10200 /* 10939 */ GIM_Reject,
10201 /* 10940 */ // Label 96: @10940
10202 /* 10940 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(10961), // Rule ID 96 //
10203 /* 10945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
10204 /* 10948 */ // MIs[0] dst
10205 /* 10948 */ // No operand predicates
10206 /* 10948 */ // MIs[0] __unary_undef_to_zero_match_0.x
10207 /* 10948 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10208 /* 10952 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10209 /* 10956 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10210 /* 10958 */ // Combiner Rule #81: unary_undef_to_zero @ [__unary_undef_to_zero_match_0[0]]
10211 /* 10958 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
10212 /* 10961 */ // Label 539: @10961
10213 /* 10961 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(10972), // Rule ID 312 //
10214 /* 10966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10215 /* 10969 */ // MIs[0] dst
10216 /* 10969 */ // No operand predicates
10217 /* 10969 */ // MIs[0] mi.src
10218 /* 10969 */ // No operand predicates
10219 /* 10969 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[5]]
10220 /* 10969 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10221 /* 10972 */ // Label 540: @10972
10222 /* 10972 */ GIM_Reject,
10223 /* 10973 */ // Label 97: @10973
10224 /* 10973 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(10984), // Rule ID 203 //
10225 /* 10978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
10226 /* 10981 */ // MIs[0] tgt
10227 /* 10981 */ // No operand predicates
10228 /* 10981 */ // Combiner Rule #150: opt_brcond_by_inverting_cond
10229 /* 10981 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
10230 /* 10984 */ // Label 541: @10984
10231 /* 10984 */ GIM_Reject,
10232 /* 10985 */ // Label 98: @10985
10233 /* 10985 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(10996), // Rule ID 114 //
10234 /* 10990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
10235 /* 10993 */ // Combiner Rule #87: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
10236 /* 10993 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
10237 /* 10996 */ // Label 542: @10996
10238 /* 10996 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(11035), // Rule ID 45 //
10239 /* 11001 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
10240 /* 11004 */ // MIs[0] root
10241 /* 11004 */ // No operand predicates
10242 /* 11004 */ // MIs[0] src
10243 /* 11004 */ // No operand predicates
10244 /* 11004 */ // MIs[0] elt
10245 /* 11004 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10246 /* 11008 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
10247 /* 11012 */ // MIs[1] src
10248 /* 11012 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
10249 /* 11017 */ // MIs[1] idx
10250 /* 11017 */ // No operand predicates
10251 /* 11017 */ // MIs[0] idx
10252 /* 11017 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
10253 /* 11022 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10254 /* 11027 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10255 /* 11029 */ // Combiner Rule #41: insert_vector_element_extract_vector_element
10256 /* 11029 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10257 /* 11034 */ GIR_EraseRootFromParent_Done,
10258 /* 11035 */ // Label 543: @11035
10259 /* 11035 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(11068), // Rule ID 31 //
10260 /* 11040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
10261 /* 11043 */ // MIs[0] root
10262 /* 11043 */ // No operand predicates
10263 /* 11043 */ // MIs[0] src
10264 /* 11043 */ // No operand predicates
10265 /* 11043 */ // MIs[0] elt
10266 /* 11043 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10267 /* 11047 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10268 /* 11051 */ // MIs[0] idx
10269 /* 11051 */ // No operand predicates
10270 /* 11051 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
10271 /* 11055 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10272 /* 11060 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10273 /* 11062 */ // Combiner Rule #27: insert_vector_element_elt_undef
10274 /* 11062 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10275 /* 11067 */ GIR_EraseRootFromParent_Done,
10276 /* 11068 */ // Label 544: @11068
10277 /* 11068 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(11092), // Rule ID 30 //
10278 /* 11073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
10279 /* 11076 */ // MIs[0] root
10280 /* 11076 */ // No operand predicates
10281 /* 11076 */ // MIs[0] src
10282 /* 11076 */ // No operand predicates
10283 /* 11076 */ // MIs[0] elt
10284 /* 11076 */ // No operand predicates
10285 /* 11076 */ // MIs[0] idx
10286 /* 11076 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
10287 /* 11080 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10288 /* 11084 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10289 /* 11086 */ // Combiner Rule #26: insert_vector_element_idx_undef
10290 /* 11086 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10291 /* 11089 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
10292 /* 11091 */ GIR_EraseRootFromParent_Done,
10293 /* 11092 */ // Label 545: @11092
10294 /* 11092 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(11103), // Rule ID 33 //
10295 /* 11097 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
10296 /* 11100 */ // MIs[0] dst
10297 /* 11100 */ // No operand predicates
10298 /* 11100 */ // MIs[0] src
10299 /* 11100 */ // No operand predicates
10300 /* 11100 */ // MIs[0] elt
10301 /* 11100 */ // No operand predicates
10302 /* 11100 */ // MIs[0] idx
10303 /* 11100 */ // No operand predicates
10304 /* 11100 */ // Combiner Rule #29: insert_vector_elt_oob
10305 /* 11100 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
10306 /* 11103 */ // Label 546: @11103
10307 /* 11103 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(11114), // Rule ID 74 //
10308 /* 11108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
10309 /* 11111 */ // MIs[0] dst
10310 /* 11111 */ // No operand predicates
10311 /* 11111 */ // MIs[0] src
10312 /* 11111 */ // No operand predicates
10313 /* 11111 */ // MIs[0] elt
10314 /* 11111 */ // No operand predicates
10315 /* 11111 */ // MIs[0] idx
10316 /* 11111 */ // No operand predicates
10317 /* 11111 */ // Combiner Rule #70: combine_insert_vec_elts_build_vector
10318 /* 11111 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
10319 /* 11114 */ // Label 547: @11114
10320 /* 11114 */ GIM_Reject,
10321 /* 11115 */ // Label 99: @11115
10322 /* 11115 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(11126), // Rule ID 115 //
10323 /* 11120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
10324 /* 11123 */ // Combiner Rule #87: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
10325 /* 11123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
10326 /* 11126 */ // Label 548: @11126
10327 /* 11126 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(11150), // Rule ID 43 //
10328 /* 11131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
10329 /* 11134 */ // MIs[0] root
10330 /* 11134 */ // No operand predicates
10331 /* 11134 */ // MIs[0] src
10332 /* 11134 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10333 /* 11138 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10334 /* 11142 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
10335 /* 11145 */ // MIs[1] x
10336 /* 11145 */ // No operand predicates
10337 /* 11145 */ // MIs[1] y
10338 /* 11145 */ // No operand predicates
10339 /* 11145 */ // MIs[1] z
10340 /* 11145 */ // No operand predicates
10341 /* 11145 */ // MIs[1] a
10342 /* 11145 */ // No operand predicates
10343 /* 11145 */ // MIs[1] b
10344 /* 11145 */ // No operand predicates
10345 /* 11145 */ // MIs[1] c
10346 /* 11145 */ // No operand predicates
10347 /* 11145 */ // MIs[1] d
10348 /* 11145 */ // No operand predicates
10349 /* 11145 */ // MIs[1] e
10350 /* 11145 */ // No operand predicates
10351 /* 11145 */ // MIs[0] idx
10352 /* 11145 */ // No operand predicates
10353 /* 11145 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10354 /* 11147 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc8
10355 /* 11147 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10356 /* 11150 */ // Label 549: @11150
10357 /* 11150 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(11174), // Rule ID 42 //
10358 /* 11155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
10359 /* 11158 */ // MIs[0] root
10360 /* 11158 */ // No operand predicates
10361 /* 11158 */ // MIs[0] src
10362 /* 11158 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10363 /* 11162 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10364 /* 11166 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
10365 /* 11169 */ // MIs[1] x
10366 /* 11169 */ // No operand predicates
10367 /* 11169 */ // MIs[1] y
10368 /* 11169 */ // No operand predicates
10369 /* 11169 */ // MIs[1] z
10370 /* 11169 */ // No operand predicates
10371 /* 11169 */ // MIs[1] a
10372 /* 11169 */ // No operand predicates
10373 /* 11169 */ // MIs[1] b
10374 /* 11169 */ // No operand predicates
10375 /* 11169 */ // MIs[1] c
10376 /* 11169 */ // No operand predicates
10377 /* 11169 */ // MIs[1] d
10378 /* 11169 */ // No operand predicates
10379 /* 11169 */ // MIs[0] idx
10380 /* 11169 */ // No operand predicates
10381 /* 11169 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10382 /* 11171 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc7
10383 /* 11171 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10384 /* 11174 */ // Label 550: @11174
10385 /* 11174 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(11198), // Rule ID 41 //
10386 /* 11179 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
10387 /* 11182 */ // MIs[0] root
10388 /* 11182 */ // No operand predicates
10389 /* 11182 */ // MIs[0] src
10390 /* 11182 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10391 /* 11186 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10392 /* 11190 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
10393 /* 11193 */ // MIs[1] x
10394 /* 11193 */ // No operand predicates
10395 /* 11193 */ // MIs[1] y
10396 /* 11193 */ // No operand predicates
10397 /* 11193 */ // MIs[1] z
10398 /* 11193 */ // No operand predicates
10399 /* 11193 */ // MIs[1] a
10400 /* 11193 */ // No operand predicates
10401 /* 11193 */ // MIs[1] b
10402 /* 11193 */ // No operand predicates
10403 /* 11193 */ // MIs[1] c
10404 /* 11193 */ // No operand predicates
10405 /* 11193 */ // MIs[0] idx
10406 /* 11193 */ // No operand predicates
10407 /* 11193 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10408 /* 11195 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc6
10409 /* 11195 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10410 /* 11198 */ // Label 551: @11198
10411 /* 11198 */ GIM_Try, /*On fail goto*//*Label 552*/ GIMT_Encode4(11222), // Rule ID 40 //
10412 /* 11203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
10413 /* 11206 */ // MIs[0] root
10414 /* 11206 */ // No operand predicates
10415 /* 11206 */ // MIs[0] src
10416 /* 11206 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10417 /* 11210 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10418 /* 11214 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
10419 /* 11217 */ // MIs[1] x
10420 /* 11217 */ // No operand predicates
10421 /* 11217 */ // MIs[1] y
10422 /* 11217 */ // No operand predicates
10423 /* 11217 */ // MIs[1] z
10424 /* 11217 */ // No operand predicates
10425 /* 11217 */ // MIs[1] a
10426 /* 11217 */ // No operand predicates
10427 /* 11217 */ // MIs[1] b
10428 /* 11217 */ // No operand predicates
10429 /* 11217 */ // MIs[0] idx
10430 /* 11217 */ // No operand predicates
10431 /* 11217 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10432 /* 11219 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc5
10433 /* 11219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10434 /* 11222 */ // Label 552: @11222
10435 /* 11222 */ GIM_Try, /*On fail goto*//*Label 553*/ GIMT_Encode4(11246), // Rule ID 39 //
10436 /* 11227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
10437 /* 11230 */ // MIs[0] root
10438 /* 11230 */ // No operand predicates
10439 /* 11230 */ // MIs[0] src
10440 /* 11230 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10441 /* 11234 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10442 /* 11238 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
10443 /* 11241 */ // MIs[1] x
10444 /* 11241 */ // No operand predicates
10445 /* 11241 */ // MIs[1] y
10446 /* 11241 */ // No operand predicates
10447 /* 11241 */ // MIs[1] z
10448 /* 11241 */ // No operand predicates
10449 /* 11241 */ // MIs[1] a
10450 /* 11241 */ // No operand predicates
10451 /* 11241 */ // MIs[0] idx
10452 /* 11241 */ // No operand predicates
10453 /* 11241 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10454 /* 11243 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc4
10455 /* 11243 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10456 /* 11246 */ // Label 553: @11246
10457 /* 11246 */ GIM_Try, /*On fail goto*//*Label 554*/ GIMT_Encode4(11270), // Rule ID 38 //
10458 /* 11251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
10459 /* 11254 */ // MIs[0] root
10460 /* 11254 */ // No operand predicates
10461 /* 11254 */ // MIs[0] src
10462 /* 11254 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10463 /* 11258 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10464 /* 11262 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
10465 /* 11265 */ // MIs[1] x
10466 /* 11265 */ // No operand predicates
10467 /* 11265 */ // MIs[1] y
10468 /* 11265 */ // No operand predicates
10469 /* 11265 */ // MIs[1] z
10470 /* 11265 */ // No operand predicates
10471 /* 11265 */ // MIs[0] idx
10472 /* 11265 */ // No operand predicates
10473 /* 11265 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10474 /* 11267 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc3
10475 /* 11267 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10476 /* 11270 */ // Label 554: @11270
10477 /* 11270 */ GIM_Try, /*On fail goto*//*Label 555*/ GIMT_Encode4(11304), // Rule ID 34 //
10478 /* 11275 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
10479 /* 11278 */ // MIs[0] root
10480 /* 11278 */ // No operand predicates
10481 /* 11278 */ // MIs[0] src
10482 /* 11278 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10483 /* 11282 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
10484 /* 11286 */ // MIs[1] x
10485 /* 11286 */ // No operand predicates
10486 /* 11286 */ // MIs[1] value
10487 /* 11286 */ // No operand predicates
10488 /* 11286 */ // MIs[1] idx
10489 /* 11286 */ // No operand predicates
10490 /* 11286 */ // MIs[0] idx
10491 /* 11286 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
10492 /* 11291 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
10493 /* 11296 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10494 /* 11298 */ // Combiner Rule #30: extract_vector_element_not_const
10495 /* 11298 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
10496 /* 11303 */ GIR_EraseRootFromParent_Done,
10497 /* 11304 */ // Label 555: @11304
10498 /* 11304 */ GIM_Try, /*On fail goto*//*Label 556*/ GIMT_Encode4(11325), // Rule ID 35 //
10499 /* 11309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
10500 /* 11312 */ // MIs[0] root
10501 /* 11312 */ // No operand predicates
10502 /* 11312 */ // MIs[0] src
10503 /* 11312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10504 /* 11316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
10505 /* 11320 */ // MIs[1] x
10506 /* 11320 */ // No operand predicates
10507 /* 11320 */ // MIs[1] value
10508 /* 11320 */ // No operand predicates
10509 /* 11320 */ // MIs[1] idx2
10510 /* 11320 */ // No operand predicates
10511 /* 11320 */ // MIs[0] idx1
10512 /* 11320 */ // No operand predicates
10513 /* 11320 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10514 /* 11322 */ // Combiner Rule #31: extract_vector_element_different_indices
10515 /* 11322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
10516 /* 11325 */ // Label 556: @11325
10517 /* 11325 */ GIM_Try, /*On fail goto*//*Label 557*/ GIMT_Encode4(11354), // Rule ID 44 //
10518 /* 11330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
10519 /* 11333 */ // MIs[0] root
10520 /* 11333 */ // No operand predicates
10521 /* 11333 */ // MIs[0] src
10522 /* 11333 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10523 /* 11337 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
10524 /* 11341 */ // MIs[1] src1
10525 /* 11341 */ // No operand predicates
10526 /* 11341 */ // MIs[1] src2
10527 /* 11341 */ // No operand predicates
10528 /* 11341 */ // MIs[1] mask
10529 /* 11341 */ // No operand predicates
10530 /* 11341 */ // MIs[0] idx
10531 /* 11341 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10532 /* 11345 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10533 /* 11349 */ // MIs[2] imm
10534 /* 11349 */ // No operand predicates
10535 /* 11349 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10536 /* 11351 */ // Combiner Rule #40: extract_vector_element_shuffle_vector
10537 /* 11351 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
10538 /* 11354 */ // Label 557: @11354
10539 /* 11354 */ GIM_Try, /*On fail goto*//*Label 558*/ GIMT_Encode4(11378), // Rule ID 37 //
10540 /* 11359 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
10541 /* 11362 */ // MIs[0] root
10542 /* 11362 */ // No operand predicates
10543 /* 11362 */ // MIs[0] src
10544 /* 11362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10545 /* 11366 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10546 /* 11370 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
10547 /* 11373 */ // MIs[1] x
10548 /* 11373 */ // No operand predicates
10549 /* 11373 */ // MIs[1] y
10550 /* 11373 */ // No operand predicates
10551 /* 11373 */ // MIs[0] idx
10552 /* 11373 */ // No operand predicates
10553 /* 11373 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10554 /* 11375 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc2
10555 /* 11375 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10556 /* 11378 */ // Label 558: @11378
10557 /* 11378 */ GIM_Try, /*On fail goto*//*Label 559*/ GIMT_Encode4(11410), // Rule ID 36 //
10558 /* 11383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
10559 /* 11386 */ // MIs[0] root
10560 /* 11386 */ // No operand predicates
10561 /* 11386 */ // MIs[0] src
10562 /* 11386 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10563 /* 11390 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
10564 /* 11394 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
10565 /* 11397 */ // MIs[1] unused
10566 /* 11397 */ // No operand predicates
10567 /* 11397 */ // MIs[0] idx
10568 /* 11397 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10569 /* 11401 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10570 /* 11405 */ // MIs[2] imm
10571 /* 11405 */ // No operand predicates
10572 /* 11405 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10573 /* 11407 */ // Combiner Rule #32: extract_vector_element_build_vector
10574 /* 11407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
10575 /* 11410 */ // Label 559: @11410
10576 /* 11410 */ GIM_Try, /*On fail goto*//*Label 560*/ GIMT_Encode4(11434), // Rule ID 28 //
10577 /* 11415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
10578 /* 11418 */ // MIs[0] root
10579 /* 11418 */ // No operand predicates
10580 /* 11418 */ // MIs[0] __extract_vector_element_undef_match_0.x
10581 /* 11418 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10582 /* 11422 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10583 /* 11426 */ // MIs[0] __extract_vector_element_undef_match_0.y
10584 /* 11426 */ // No operand predicates
10585 /* 11426 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10586 /* 11428 */ // Combiner Rule #25: extract_vector_element_undef @ [__extract_vector_element_undef_match_0[0]]
10587 /* 11428 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10588 /* 11431 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
10589 /* 11433 */ GIR_EraseRootFromParent_Done,
10590 /* 11434 */ // Label 560: @11434
10591 /* 11434 */ GIM_Try, /*On fail goto*//*Label 561*/ GIMT_Encode4(11458), // Rule ID 29 //
10592 /* 11439 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
10593 /* 11442 */ // MIs[0] root
10594 /* 11442 */ // No operand predicates
10595 /* 11442 */ // MIs[0] __extract_vector_element_undef_match_0.x
10596 /* 11442 */ // No operand predicates
10597 /* 11442 */ // MIs[0] __extract_vector_element_undef_match_0.y
10598 /* 11442 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10599 /* 11446 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10600 /* 11450 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10601 /* 11452 */ // Combiner Rule #25: extract_vector_element_undef @ [__extract_vector_element_undef_match_0[1]]
10602 /* 11452 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10603 /* 11455 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
10604 /* 11457 */ GIR_EraseRootFromParent_Done,
10605 /* 11458 */ // Label 561: @11458
10606 /* 11458 */ GIM_Try, /*On fail goto*//*Label 562*/ GIMT_Encode4(11469), // Rule ID 32 //
10607 /* 11463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
10608 /* 11466 */ // MIs[0] dst
10609 /* 11466 */ // No operand predicates
10610 /* 11466 */ // MIs[0] src
10611 /* 11466 */ // No operand predicates
10612 /* 11466 */ // MIs[0] idx
10613 /* 11466 */ // No operand predicates
10614 /* 11466 */ // Combiner Rule #28: match_extract_of_element
10615 /* 11466 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
10616 /* 11469 */ // Label 562: @11469
10617 /* 11469 */ GIM_Try, /*On fail goto*//*Label 563*/ GIMT_Encode4(11480), // Rule ID 75 //
10618 /* 11474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
10619 /* 11477 */ // MIs[0] dst
10620 /* 11477 */ // No operand predicates
10621 /* 11477 */ // MIs[0] src
10622 /* 11477 */ // No operand predicates
10623 /* 11477 */ // MIs[0] idx
10624 /* 11477 */ // No operand predicates
10625 /* 11477 */ // Combiner Rule #71: extract_vec_elt_build_vec
10626 /* 11477 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
10627 /* 11480 */ // Label 563: @11480
10628 /* 11480 */ GIM_Try, /*On fail goto*//*Label 564*/ GIMT_Encode4(11491), // Rule ID 81 //
10629 /* 11485 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
10630 /* 11488 */ // MIs[0] dst
10631 /* 11488 */ // No operand predicates
10632 /* 11488 */ // MIs[0] src
10633 /* 11488 */ // No operand predicates
10634 /* 11488 */ // MIs[0] idx
10635 /* 11488 */ // No operand predicates
10636 /* 11488 */ // Combiner Rule #75: combine_extracted_vector_load
10637 /* 11488 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
10638 /* 11491 */ // Label 564: @11491
10639 /* 11491 */ GIM_Reject,
10640 /* 11492 */ // Label 100: @11492
10641 /* 11492 */ GIM_Try, /*On fail goto*//*Label 565*/ GIMT_Encode4(11503), // Rule ID 110 //
10642 /* 11497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
10643 /* 11500 */ // Combiner Rule #84: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
10644 /* 11500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
10645 /* 11503 */ // Label 565: @11503
10646 /* 11503 */ GIM_Try, /*On fail goto*//*Label 566*/ GIMT_Encode4(11524), // Rule ID 412 //
10647 /* 11508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
10648 /* 11511 */ // MIs[0] root
10649 /* 11511 */ // No operand predicates
10650 /* 11511 */ // MIs[0] src1
10651 /* 11511 */ // No operand predicates
10652 /* 11511 */ // MIs[0] undef
10653 /* 11511 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10654 /* 11515 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10655 /* 11519 */ // MIs[0] mask
10656 /* 11519 */ // No operand predicates
10657 /* 11519 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10658 /* 11521 */ // Combiner Rule #243: combine_shuffle_undef_rhs
10659 /* 11521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
10660 /* 11524 */ // Label 566: @11524
10661 /* 11524 */ GIM_Try, /*On fail goto*//*Label 567*/ GIMT_Encode4(11542), // Rule ID 112 //
10662 /* 11529 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
10663 /* 11532 */ // MIs[0] dst
10664 /* 11532 */ // No operand predicates
10665 /* 11532 */ // MIs[0] src1
10666 /* 11532 */ // No operand predicates
10667 /* 11532 */ // MIs[0] src2
10668 /* 11532 */ // No operand predicates
10669 /* 11532 */ // MIs[0] mask
10670 /* 11532 */ // No operand predicates
10671 /* 11532 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
10672 /* 11536 */ // Combiner Rule #85: propagate_undef_shuffle_mask
10673 /* 11536 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10674 /* 11539 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10675 /* 11541 */ GIR_EraseRootFromParent_Done,
10676 /* 11542 */ // Label 567: @11542
10677 /* 11542 */ GIM_Try, /*On fail goto*//*Label 568*/ GIMT_Encode4(11553), // Rule ID 411 //
10678 /* 11547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
10679 /* 11550 */ // MIs[0] dst
10680 /* 11550 */ // No operand predicates
10681 /* 11550 */ // MIs[0] src1
10682 /* 11550 */ // No operand predicates
10683 /* 11550 */ // MIs[0] src2
10684 /* 11550 */ // No operand predicates
10685 /* 11550 */ // MIs[0] mask
10686 /* 11550 */ // No operand predicates
10687 /* 11550 */ // Combiner Rule #242: combine_shuffle_concat
10688 /* 11550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
10689 /* 11553 */ // Label 568: @11553
10690 /* 11553 */ GIM_Try, /*On fail goto*//*Label 569*/ GIMT_Encode4(11564), // Rule ID 413 //
10691 /* 11558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
10692 /* 11561 */ // MIs[0] dst
10693 /* 11561 */ // No operand predicates
10694 /* 11561 */ // MIs[0] src1
10695 /* 11561 */ // No operand predicates
10696 /* 11561 */ // MIs[0] src2
10697 /* 11561 */ // No operand predicates
10698 /* 11561 */ // MIs[0] mask
10699 /* 11561 */ // No operand predicates
10700 /* 11561 */ // Combiner Rule #244: combine_shuffle_disjoint_mask
10701 /* 11561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
10702 /* 11564 */ // Label 569: @11564
10703 /* 11564 */ GIM_Try, /*On fail goto*//*Label 570*/ GIMT_Encode4(11575), // Rule ID 460 //
10704 /* 11569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule283Enabled),
10705 /* 11572 */ // MIs[0] dst
10706 /* 11572 */ // No operand predicates
10707 /* 11572 */ // MIs[0] src1
10708 /* 11572 */ // No operand predicates
10709 /* 11572 */ // MIs[0] src2
10710 /* 11572 */ // No operand predicates
10711 /* 11572 */ // MIs[0] mask
10712 /* 11572 */ // No operand predicates
10713 /* 11572 */ // Combiner Rule #283: combine_shuffle_vector
10714 /* 11572 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
10715 /* 11575 */ // Label 570: @11575
10716 /* 11575 */ GIM_Try, /*On fail goto*//*Label 571*/ GIMT_Encode4(11586), // Rule ID 461 //
10717 /* 11580 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule284Enabled),
10718 /* 11583 */ // MIs[0] dst
10719 /* 11583 */ // No operand predicates
10720 /* 11583 */ // MIs[0] src1
10721 /* 11583 */ // No operand predicates
10722 /* 11583 */ // MIs[0] src2
10723 /* 11583 */ // No operand predicates
10724 /* 11583 */ // MIs[0] mask
10725 /* 11583 */ // No operand predicates
10726 /* 11583 */ // Combiner Rule #284: combine_shuffle_vector_to_build_vector
10727 /* 11583 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
10728 /* 11586 */ // Label 571: @11586
10729 /* 11586 */ GIM_Reject,
10730 /* 11587 */ // Label 101: @11587
10731 /* 11587 */ GIM_Try, /*On fail goto*//*Label 572*/ GIMT_Encode4(11598), // Rule ID 309 //
10732 /* 11592 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10733 /* 11595 */ // MIs[0] dst
10734 /* 11595 */ // No operand predicates
10735 /* 11595 */ // MIs[0] mi.src
10736 /* 11595 */ // No operand predicates
10737 /* 11595 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[2]]
10738 /* 11595 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10739 /* 11598 */ // Label 572: @11598
10740 /* 11598 */ GIM_Try, /*On fail goto*//*Label 573*/ GIMT_Encode4(11609), // Rule ID 437 //
10741 /* 11603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule266Enabled),
10742 /* 11606 */ // MIs[0] dst
10743 /* 11606 */ // No operand predicates
10744 /* 11606 */ // MIs[0] src
10745 /* 11606 */ // No operand predicates
10746 /* 11606 */ // Combiner Rule #266: cttz_to_cttz_zero_poison
10747 /* 11606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
10748 /* 11609 */ // Label 573: @11609
10749 /* 11609 */ GIM_Reject,
10750 /* 11610 */ // Label 102: @11610
10751 /* 11610 */ GIM_Try, /*On fail goto*//*Label 574*/ GIMT_Encode4(11621), // Rule ID 310 //
10752 /* 11615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10753 /* 11618 */ // MIs[0] dst
10754 /* 11618 */ // No operand predicates
10755 /* 11618 */ // MIs[0] mi.src
10756 /* 11618 */ // No operand predicates
10757 /* 11618 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[3]]
10758 /* 11618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10759 /* 11621 */ // Label 574: @11621
10760 /* 11621 */ GIM_Reject,
10761 /* 11622 */ // Label 103: @11622
10762 /* 11622 */ GIM_Try, /*On fail goto*//*Label 575*/ GIMT_Encode4(11633), // Rule ID 307 //
10763 /* 11627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10764 /* 11630 */ // MIs[0] dst
10765 /* 11630 */ // No operand predicates
10766 /* 11630 */ // MIs[0] mi.src
10767 /* 11630 */ // No operand predicates
10768 /* 11630 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[0]]
10769 /* 11630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10770 /* 11633 */ // Label 575: @11633
10771 /* 11633 */ GIM_Try, /*On fail goto*//*Label 576*/ GIMT_Encode4(11644), // Rule ID 434 //
10772 /* 11638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
10773 /* 11641 */ // MIs[0] dst
10774 /* 11641 */ // No operand predicates
10775 /* 11641 */ // MIs[0] src
10776 /* 11641 */ // No operand predicates
10777 /* 11641 */ // Combiner Rule #263: ctlz_to_ctls
10778 /* 11641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
10779 /* 11644 */ // Label 576: @11644
10780 /* 11644 */ GIM_Try, /*On fail goto*//*Label 577*/ GIMT_Encode4(11655), // Rule ID 436 //
10781 /* 11649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule265Enabled),
10782 /* 11652 */ // MIs[0] dst
10783 /* 11652 */ // No operand predicates
10784 /* 11652 */ // MIs[0] src
10785 /* 11652 */ // No operand predicates
10786 /* 11652 */ // Combiner Rule #265: ctlz_to_ctlz_zero_poison
10787 /* 11652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
10788 /* 11655 */ // Label 577: @11655
10789 /* 11655 */ GIM_Reject,
10790 /* 11656 */ // Label 104: @11656
10791 /* 11656 */ GIM_Try, /*On fail goto*//*Label 578*/ GIMT_Encode4(11667), // Rule ID 308 //
10792 /* 11661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10793 /* 11664 */ // MIs[0] dst
10794 /* 11664 */ // No operand predicates
10795 /* 11664 */ // MIs[0] mi.src
10796 /* 11664 */ // No operand predicates
10797 /* 11664 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[1]]
10798 /* 11664 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10799 /* 11667 */ // Label 578: @11667
10800 /* 11667 */ GIM_Try, /*On fail goto*//*Label 579*/ GIMT_Encode4(11678), // Rule ID 435 //
10801 /* 11672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule264Enabled),
10802 /* 11675 */ // MIs[0] dst
10803 /* 11675 */ // No operand predicates
10804 /* 11675 */ // MIs[0] src
10805 /* 11675 */ // No operand predicates
10806 /* 11675 */ // Combiner Rule #264: ctlz_zero_poison_to_ctls
10807 /* 11675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
10808 /* 11678 */ // Label 579: @11678
10809 /* 11678 */ GIM_Reject,
10810 /* 11679 */ // Label 105: @11679
10811 /* 11679 */ GIM_Try, /*On fail goto*//*Label 580*/ GIMT_Encode4(11690), // Rule ID 311 //
10812 /* 11684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10813 /* 11687 */ // MIs[0] dst
10814 /* 11687 */ // No operand predicates
10815 /* 11687 */ // MIs[0] mi.src
10816 /* 11687 */ // No operand predicates
10817 /* 11687 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[4]]
10818 /* 11687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10819 /* 11690 */ // Label 580: @11690
10820 /* 11690 */ GIM_Reject,
10821 /* 11691 */ // Label 106: @11691
10822 /* 11691 */ GIM_Try, /*On fail goto*//*Label 581*/ GIMT_Encode4(11702), // Rule ID 313 //
10823 /* 11696 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10824 /* 11699 */ // MIs[0] dst
10825 /* 11699 */ // No operand predicates
10826 /* 11699 */ // MIs[0] mi.src
10827 /* 11699 */ // No operand predicates
10828 /* 11699 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[6]]
10829 /* 11699 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10830 /* 11702 */ // Label 581: @11702
10831 /* 11702 */ GIM_Reject,
10832 /* 11703 */ // Label 107: @11703
10833 /* 11703 */ GIM_Try, /*On fail goto*//*Label 582*/ GIMT_Encode4(11747), // Rule ID 263 //
10834 /* 11708 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
10835 /* 11711 */ // MIs[0] d
10836 /* 11711 */ // No operand predicates
10837 /* 11711 */ // MIs[0] src
10838 /* 11711 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10839 /* 11715 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
10840 /* 11719 */ // MIs[1] rev
10841 /* 11719 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
10842 /* 11723 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
10843 /* 11727 */ // MIs[2] val
10844 /* 11727 */ // No operand predicates
10845 /* 11727 */ // MIs[1] amt
10846 /* 11727 */ // No operand predicates
10847 /* 11727 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
10848 /* 11731 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10849 /* 11733 */ // Combiner Rule #187: bitreverse_lshr
10850 /* 11733 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
10851 /* 11736 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
10852 /* 11738 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
10853 /* 11742 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
10854 /* 11746 */ GIR_EraseRootFromParent_Done,
10855 /* 11747 */ // Label 582: @11747
10856 /* 11747 */ GIM_Try, /*On fail goto*//*Label 583*/ GIMT_Encode4(11791), // Rule ID 262 //
10857 /* 11752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
10858 /* 11755 */ // MIs[0] d
10859 /* 11755 */ // No operand predicates
10860 /* 11755 */ // MIs[0] src
10861 /* 11755 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10862 /* 11759 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
10863 /* 11763 */ // MIs[1] rev
10864 /* 11763 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
10865 /* 11767 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
10866 /* 11771 */ // MIs[2] val
10867 /* 11771 */ // No operand predicates
10868 /* 11771 */ // MIs[1] amt
10869 /* 11771 */ // No operand predicates
10870 /* 11771 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
10871 /* 11775 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10872 /* 11777 */ // Combiner Rule #186: bitreverse_shl
10873 /* 11777 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
10874 /* 11780 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
10875 /* 11782 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
10876 /* 11786 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
10877 /* 11790 */ GIR_EraseRootFromParent_Done,
10878 /* 11791 */ // Label 583: @11791
10879 /* 11791 */ GIM_Try, /*On fail goto*//*Label 584*/ GIMT_Encode4(11802), // Rule ID 314 //
10880 /* 11796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10881 /* 11799 */ // MIs[0] dst
10882 /* 11799 */ // No operand predicates
10883 /* 11799 */ // MIs[0] mi.src
10884 /* 11799 */ // No operand predicates
10885 /* 11799 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[7]]
10886 /* 11799 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10887 /* 11802 */ // Label 584: @11802
10888 /* 11802 */ GIM_Reject,
10889 /* 11803 */ // Label 108: @11803
10890 /* 11803 */ GIM_Try, /*On fail goto*//*Label 585*/ GIMT_Encode4(11824), // Rule ID 210 //
10891 /* 11808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
10892 /* 11811 */ // MIs[0] dst
10893 /* 11811 */ // No operand predicates
10894 /* 11811 */ // MIs[0] src0
10895 /* 11811 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10896 /* 11815 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10897 /* 11819 */ // MIs[1] cst
10898 /* 11819 */ // No operand predicates
10899 /* 11819 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10900 /* 11821 */ // Combiner Rule #157: constant_fold_fceil
10901 /* 11821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10902 /* 11824 */ // Label 585: @11824
10903 /* 11824 */ GIM_Reject,
10904 /* 11825 */ // Label 109: @11825
10905 /* 11825 */ GIM_Try, /*On fail goto*//*Label 586*/ GIMT_Encode4(11846), // Rule ID 206 //
10906 /* 11830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
10907 /* 11833 */ // MIs[0] dst
10908 /* 11833 */ // No operand predicates
10909 /* 11833 */ // MIs[0] src0
10910 /* 11833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10911 /* 11837 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10912 /* 11841 */ // MIs[1] cst
10913 /* 11841 */ // No operand predicates
10914 /* 11841 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10915 /* 11843 */ // Combiner Rule #153: constant_fold_fsqrt
10916 /* 11843 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10917 /* 11846 */ // Label 586: @11846
10918 /* 11846 */ GIM_Reject,
10919 /* 11847 */ // Label 110: @11847
10920 /* 11847 */ GIM_Try, /*On fail goto*//*Label 587*/ GIMT_Encode4(11868), // Rule ID 211 //
10921 /* 11852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
10922 /* 11855 */ // MIs[0] dst
10923 /* 11855 */ // No operand predicates
10924 /* 11855 */ // MIs[0] src0
10925 /* 11855 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10926 /* 11859 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10927 /* 11863 */ // MIs[1] cst
10928 /* 11863 */ // No operand predicates
10929 /* 11863 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10930 /* 11865 */ // Combiner Rule #158: constant_fold_ffloor
10931 /* 11865 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10932 /* 11868 */ // Label 587: @11868
10933 /* 11868 */ GIM_Reject,
10934 /* 11869 */ // Label 111: @11869
10935 /* 11869 */ GIM_Try, /*On fail goto*//*Label 588*/ GIMT_Encode4(11890), // Rule ID 215 //
10936 /* 11874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
10937 /* 11877 */ // MIs[0] dst
10938 /* 11877 */ // No operand predicates
10939 /* 11877 */ // MIs[0] src0
10940 /* 11877 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10941 /* 11881 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10942 /* 11885 */ // MIs[1] cst
10943 /* 11885 */ // No operand predicates
10944 /* 11885 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10945 /* 11887 */ // Combiner Rule #162: constant_fold_frint
10946 /* 11887 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10947 /* 11890 */ // Label 588: @11890
10948 /* 11890 */ GIM_Reject,
10949 /* 11891 */ // Label 112: @11891
10950 /* 11891 */ GIM_Try, /*On fail goto*//*Label 589*/ GIMT_Encode4(11912), // Rule ID 216 //
10951 /* 11896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
10952 /* 11899 */ // MIs[0] dst
10953 /* 11899 */ // No operand predicates
10954 /* 11899 */ // MIs[0] src0
10955 /* 11899 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10956 /* 11903 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10957 /* 11907 */ // MIs[1] cst
10958 /* 11907 */ // No operand predicates
10959 /* 11907 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10960 /* 11909 */ // Combiner Rule #163: constant_fold_fnearbyint
10961 /* 11909 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10962 /* 11912 */ // Label 589: @11912
10963 /* 11912 */ GIM_Reject,
10964 /* 11913 */ // Label 113: @11913
10965 /* 11913 */ GIM_Reject,
10966 /* 11914 */ }; // Size: 11914 bytes
10967 return MatchTable0;
10968}
10969#undef GIMT_Encode2
10970#undef GIMT_Encode4
10971#undef GIMT_Encode8
10972
10973
10974#endif // GET_GICOMBINER_IMPL
10975
10976#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
10977
10978AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
10979AvailableFunctionFeatures()
10980
10981#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
10982
10983#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
10984
10985, State(0),
10986ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
10987
10988#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
10989
10990