1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AArch64PreLegalizerCombinerImpl 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 AArch64PreLegalizerCombinerImplRuleConfig {
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: // 12 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 'e': // 1 string to match.
101 if (memcmp(RuleIdentifier.data()+1, "mit_bzero", 9) != 0)
102 break;
103 return 297; // "emit_bzero"
104 case 'i': // 1 string to match.
105 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
106 break;
107 return 96; // "i2p_to_p2i"
108 case 'm': // 2 strings to match.
109 switch (RuleIdentifier[1]) {
110 default: break;
111 case 'a': // 1 string to match.
112 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
113 break;
114 return 229; // "match_ands"
115 case 'u': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
117 break;
118 return 20; // "mul_to_shl"
119 }
120 break;
121 case 'o': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "r_xor_and", 9) != 0)
123 break;
124 return 236; // "or_xor_and"
125 case 'p': // 1 string to match.
126 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
127 break;
128 return 95; // "p2i_to_i2p"
129 case 's': // 3 strings to match.
130 switch (RuleIdentifier[1]) {
131 default: break;
132 case 'e': // 2 strings to match.
133 switch (RuleIdentifier[2]) {
134 default: break;
135 case 'l': // 1 string to match.
136 if (memcmp(RuleIdentifier.data()+3, "ect_not", 7) != 0)
137 break;
138 return 137; // "select_not"
139 case 'x': // 1 string to match.
140 if (memcmp(RuleIdentifier.data()+3, "t_trunc", 7) != 0)
141 break;
142 return 239; // "sext_trunc"
143 }
144 break;
145 case 'u': // 1 string to match.
146 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
147 break;
148 return 21; // "sub_to_add"
149 }
150 break;
151 case 'z': // 1 string to match.
152 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
153 break;
154 return 240; // "zext_trunc"
155 }
156 break;
157 case 11: // 8 strings to match.
158 switch (RuleIdentifier[0]) {
159 default: break;
160 case 'a': // 1 string to match.
161 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
162 break;
163 return 101; // "add_sub_reg"
164 case 'm': // 1 string to match.
165 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
166 break;
167 return 256; // "match_addos"
168 case 's': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
170 break;
171 return 224; // "sub_add_reg"
172 case 't': // 4 strings to match.
173 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
174 break;
175 switch (RuleIdentifier[6]) {
176 default: break;
177 case 's': // 3 strings to match.
178 switch (RuleIdentifier[7]) {
179 default: break;
180 case 'h': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
182 break;
183 return 148; // "trunc_shift"
184 case 's': // 2 strings to match.
185 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
186 break;
187 switch (RuleIdentifier[10]) {
188 default: break;
189 case 's': // 1 string to match.
190 return 258; // "trunc_ssats"
191 case 'u': // 1 string to match.
192 return 259; // "trunc_ssatu"
193 }
194 break;
195 }
196 break;
197 case 'u': // 1 string to match.
198 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
199 break;
200 return 260; // "trunc_usatu"
201 }
202 break;
203 case 'u': // 1 string to match.
204 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
205 break;
206 return 249; // "unmerge_cst"
207 }
208 break;
209 case 12: // 12 strings to match.
210 switch (RuleIdentifier[0]) {
211 default: break;
212 case 'A': // 1 string to match.
213 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
214 break;
215 return 4; // "APlusBMinusB"
216 case 'B': // 1 string to match.
217 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
218 break;
219 return 5; // "BMinusAPlusA"
220 case 'a': // 1 string to match.
221 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
222 break;
223 return 170; // "adde_to_addo"
224 case 'c': // 1 string to match.
225 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
226 break;
227 return 263; // "ctlz_to_ctls"
228 case 'f': // 1 string to match.
229 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
230 break;
231 return 226; // "fsub_to_fneg"
232 case 'm': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
234 break;
235 return 200; // "mulh_to_lshr"
236 case 'n': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
238 break;
239 return 149; // "not_cmp_fold"
240 case 'r': // 1 string to match.
241 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
242 break;
243 return 144; // "redundant_or"
244 case 's': // 2 strings to match.
245 switch (RuleIdentifier[1]) {
246 default: break;
247 case 'd': // 1 string to match.
248 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
249 break;
250 return 220; // "sdiv_by_pow2"
251 case 'e': // 1 string to match.
252 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
253 break;
254 return 53; // "sext_of_sext"
255 }
256 break;
257 case 'u': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
259 break;
260 return 219; // "udiv_by_pow2"
261 case 'z': // 1 string to match.
262 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
263 break;
264 return 51; // "zext_of_zext"
265 }
266 break;
267 case 13: // 18 strings to match.
268 switch (RuleIdentifier[0]) {
269 default: break;
270 case 'A': // 2 strings to match.
271 if (memcmp(RuleIdentifier.data()+1, "MinusBMinus", 11) != 0)
272 break;
273 switch (RuleIdentifier[12]) {
274 default: break;
275 case 'A': // 1 string to match.
276 return 12; // "AMinusBMinusA"
277 case 'C': // 1 string to match.
278 return 9; // "AMinusBMinusC"
279 }
280 break;
281 case 'a': // 1 string to match.
282 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
283 break;
284 return 42; // "add_of_vscale"
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: // 20 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 'c': // 2 strings to match.
442 if (memcmp(RuleIdentifier.data()+1, "ombine_mem", 10) != 0)
443 break;
444 switch (RuleIdentifier[11]) {
445 default: break;
446 case 'c': // 1 string to match.
447 if (memcmp(RuleIdentifier.data()+12, "py", 2) != 0)
448 break;
449 return 294; // "combine_memcpy"
450 case 's': // 1 string to match.
451 if (memcmp(RuleIdentifier.data()+12, "et", 2) != 0)
452 break;
453 return 296; // "combine_memset"
454 }
455 break;
456 case 'f': // 2 strings to match.
457 switch (RuleIdentifier[1]) {
458 default: break;
459 case 'a': // 1 string to match.
460 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
461 break;
462 return 199; // "fabs_fneg_fold"
463 case 'n': // 1 string to match.
464 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
465 break;
466 return 98; // "fneg_fneg_fold"
467 }
468 break;
469 case 'm': // 1 string to match.
470 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
471 break;
472 return 23; // "mul_by_neg_one"
473 case 'r': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
475 break;
476 return 115; // "reassoc_ptradd"
477 case 's': // 4 strings to match.
478 switch (RuleIdentifier[1]) {
479 default: break;
480 case 'e': // 2 strings to match.
481 switch (RuleIdentifier[2]) {
482 default: break;
483 case 'l': // 1 string to match.
484 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
485 break;
486 return 59; // "select_of_zext"
487 case 'x': // 1 string to match.
488 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
489 break;
490 return 54; // "sext_of_anyext"
491 }
492 break;
493 case 'h': // 1 string to match.
494 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
495 break;
496 return 114; // "shifts_too_big"
497 case 'i': // 1 string to match.
498 if (memcmp(RuleIdentifier.data()+2, "mplify_uaddo", 12) != 0)
499 break;
500 return 291; // "simplify_uaddo"
501 }
502 break;
503 case 'z': // 1 string to match.
504 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
505 break;
506 return 52; // "zext_of_anyext"
507 }
508 break;
509 case 15: // 15 strings to match.
510 switch (RuleIdentifier[0]) {
511 default: break;
512 case 'A': // 2 strings to match.
513 switch (RuleIdentifier[1]) {
514 default: break;
515 case 'M': // 1 string to match.
516 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
517 break;
518 return 16; // "AMinusC1MinusC2"
519 case 'P': // 1 string to match.
520 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
521 break;
522 return 3; // "APlusZeroMinusB"
523 }
524 break;
525 case 'C': // 1 string to match.
526 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
527 break;
528 return 17; // "C1Minus2MinusC2"
529 case 'G': // 1 string to match.
530 if (memcmp(RuleIdentifier.data()+1, "_FMA_fneg_fneg", 14) != 0)
531 break;
532 return 205; // "G_FMA_fneg_fneg"
533 case 'Z': // 1 string to match.
534 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
535 break;
536 return 2; // "ZeroMinusAPlusB"
537 case 'a': // 2 strings to match.
538 if (memcmp(RuleIdentifier.data()+1, "vgceil_", 7) != 0)
539 break;
540 switch (RuleIdentifier[8]) {
541 default: break;
542 case 's': // 1 string to match.
543 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
544 break;
545 return 277; // "avgceil_s_match"
546 case 'u': // 1 string to match.
547 if (memcmp(RuleIdentifier.data()+9, "_match", 6) != 0)
548 break;
549 return 276; // "avgceil_u_match"
550 }
551 break;
552 case 'b': // 1 string to match.
553 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
554 break;
555 return 187; // "bitreverse_lshr"
556 case 'c': // 1 string to match.
557 if (memcmp(RuleIdentifier.data()+1, "ombine_memmove", 14) != 0)
558 break;
559 return 295; // "combine_memmove"
560 case 'e': // 1 string to match.
561 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
562 break;
563 return 73; // "extending_loads"
564 case 'i': // 1 string to match.
565 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
566 break;
567 return 24; // "idempotent_prop"
568 case 'l': // 1 string to match.
569 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
570 break;
571 return 177; // "load_or_combine"
572 case 'n': // 1 string to match.
573 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
574 break;
575 return 67; // "narrow_binop_or"
576 case 'o': // 1 string to match.
577 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
578 break;
579 return 167; // "overlapping_and"
580 case 'z': // 1 string to match.
581 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
582 break;
583 return 146; // "zext_trunc_fold"
584 }
585 break;
586 case 16: // 23 strings to match.
587 switch (RuleIdentifier[0]) {
588 default: break;
589 case 'A': // 1 string to match.
590 if (memcmp(RuleIdentifier.data()+1, "MinusZeroMinusB", 15) != 0)
591 break;
592 return 11; // "AMinusZeroMinusB"
593 case 'G': // 3 strings to match.
594 if (memcmp(RuleIdentifier.data()+1, "_F", 2) != 0)
595 break;
596 switch (RuleIdentifier[3]) {
597 default: break;
598 case 'D': // 1 string to match.
599 if (memcmp(RuleIdentifier.data()+4, "IV_fneg_fneg", 12) != 0)
600 break;
601 return 203; // "G_FDIV_fneg_fneg"
602 case 'M': // 2 strings to match.
603 switch (RuleIdentifier[4]) {
604 default: break;
605 case 'A': // 1 string to match.
606 if (memcmp(RuleIdentifier.data()+5, "D_fneg_fneg", 11) != 0)
607 break;
608 return 204; // "G_FMAD_fneg_fneg"
609 case 'U': // 1 string to match.
610 if (memcmp(RuleIdentifier.data()+5, "L_fneg_fneg", 11) != 0)
611 break;
612 return 202; // "G_FMUL_fneg_fneg"
613 }
614 break;
615 }
616 break;
617 case 'a': // 3 strings to match.
618 switch (RuleIdentifier[1]) {
619 default: break;
620 case 'n': // 1 string to match.
621 if (memcmp(RuleIdentifier.data()+2, "yext_of_anyext", 14) != 0)
622 break;
623 return 55; // "anyext_of_anyext"
624 case 'v': // 2 strings to match.
625 if (memcmp(RuleIdentifier.data()+2, "gfloor_", 7) != 0)
626 break;
627 switch (RuleIdentifier[9]) {
628 default: break;
629 case 's': // 1 string to match.
630 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
631 break;
632 return 275; // "avgfloor_s_match"
633 case 'u': // 1 string to match.
634 if (memcmp(RuleIdentifier.data()+10, "_match", 6) != 0)
635 break;
636 return 274; // "avgfloor_u_match"
637 }
638 break;
639 }
640 break;
641 case 'c': // 1 string to match.
642 if (memcmp(RuleIdentifier.data()+1, "ommute_shift_or", 15) != 0)
643 break;
644 return 189; // "commute_shift_or"
645 case 'n': // 5 strings to match.
646 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
647 break;
648 switch (RuleIdentifier[13]) {
649 default: break;
650 case 'a': // 2 strings to match.
651 switch (RuleIdentifier[14]) {
652 default: break;
653 case 'd': // 1 string to match.
654 if (RuleIdentifier[15] != 'd')
655 break;
656 return 63; // "narrow_binop_add"
657 case 'n': // 1 string to match.
658 if (RuleIdentifier[15] != 'd')
659 break;
660 return 66; // "narrow_binop_and"
661 }
662 break;
663 case 'm': // 1 string to match.
664 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
665 break;
666 return 65; // "narrow_binop_mul"
667 case 's': // 1 string to match.
668 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
669 break;
670 return 64; // "narrow_binop_sub"
671 case 'x': // 1 string to match.
672 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
673 break;
674 return 68; // "narrow_binop_xor"
675 }
676 break;
677 case 'o': // 1 string to match.
678 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_or", 15) != 0)
679 break;
680 return 231; // "or_and_xor_to_or"
681 case 's': // 6 strings to match.
682 switch (RuleIdentifier[1]) {
683 default: break;
684 case 'e': // 4 strings to match.
685 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
686 break;
687 switch (RuleIdentifier[7]) {
688 default: break;
689 case 'o': // 1 string to match.
690 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
691 break;
692 return 60; // "select_of_anyext"
693 case 't': // 1 string to match.
694 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
695 break;
696 return 225; // "select_to_minmax"
697 case 'u': // 1 string to match.
698 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
699 break;
700 return 130; // "select_undef_cmp"
701 case 'z': // 1 string to match.
702 if (memcmp(RuleIdentifier.data()+8, "ero_true", 8) != 0)
703 break;
704 return 279; // "select_zero_true"
705 }
706 break;
707 case 'u': // 2 strings to match.
708 if (memcmp(RuleIdentifier.data()+2, "b_o", 3) != 0)
709 break;
710 switch (RuleIdentifier[5]) {
711 default: break;
712 case 'f': // 1 string to match.
713 if (memcmp(RuleIdentifier.data()+6, "_mul_const", 10) != 0)
714 break;
715 return 271; // "sub_of_mul_const"
716 case 'n': // 1 string to match.
717 if (memcmp(RuleIdentifier.data()+6, "e_from_sub", 10) != 0)
718 break;
719 return 268; // "sub_one_from_sub"
720 }
721 break;
722 }
723 break;
724 case 't': // 2 strings to match.
725 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
726 break;
727 switch (RuleIdentifier[12]) {
728 default: break;
729 case 's': // 1 string to match.
730 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
731 break;
732 return 49; // "truncate_of_sext"
733 case 'z': // 1 string to match.
734 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
735 break;
736 return 48; // "truncate_of_zext"
737 }
738 break;
739 case 'u': // 1 string to match.
740 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
741 break;
742 return 76; // "undef_to_fp_zero"
743 }
744 break;
745 case 17: // 19 strings to match.
746 switch (RuleIdentifier[0]) {
747 default: break;
748 case 'A': // 2 strings to match.
749 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
750 break;
751 switch (RuleIdentifier[11]) {
752 default: break;
753 case 'A': // 1 string to match.
754 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
755 break;
756 return 8; // "APlusBMinusAplusC"
757 case 'C': // 1 string to match.
758 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
759 break;
760 return 10; // "APlusBMinusCPlusA"
761 }
762 break;
763 case 'a': // 3 strings to match.
764 switch (RuleIdentifier[1]) {
765 default: break;
766 case 'd': // 1 string to match.
767 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
768 break;
769 return 22; // "add_p2i_to_ptradd"
770 case 'n': // 2 strings to match.
771 switch (RuleIdentifier[2]) {
772 default: break;
773 case 'd': // 1 string to match.
774 if (memcmp(RuleIdentifier.data()+3, "_xor_or_to_and", 14) != 0)
775 break;
776 return 233; // "and_xor_or_to_and"
777 case 'y': // 1 string to match.
778 if (memcmp(RuleIdentifier.data()+3, "ext_trunc_fold", 14) != 0)
779 break;
780 return 97; // "anyext_trunc_fold"
781 }
782 break;
783 }
784 break;
785 case 'c': // 5 strings to match.
786 switch (RuleIdentifier[1]) {
787 default: break;
788 case 'a': // 2 strings to match.
789 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
790 break;
791 switch (RuleIdentifier[13]) {
792 default: break;
793 case 'f': // 1 string to match.
794 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
795 break;
796 return 119; // "canonicalize_fcmp"
797 case 'i': // 1 string to match.
798 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
799 break;
800 return 118; // "canonicalize_icmp"
801 }
802 break;
803 case 'o': // 3 strings to match.
804 switch (RuleIdentifier[2]) {
805 default: break;
806 case 'm': // 2 strings to match.
807 switch (RuleIdentifier[3]) {
808 default: break;
809 case 'b': // 1 string to match.
810 if (memcmp(RuleIdentifier.data()+4, "ine_or_of_and", 13) != 0)
811 break;
812 return 278; // "combine_or_of_and"
813 case 'm': // 1 string to match.
814 if (memcmp(RuleIdentifier.data()+4, "ute_shift_add", 13) != 0)
815 break;
816 return 188; // "commute_shift_add"
817 }
818 break;
819 case 'n': // 1 string to match.
820 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fma", 14) != 0)
821 break;
822 return 196; // "constant_fold_fma"
823 }
824 break;
825 }
826 break;
827 case 'd': // 1 string to match.
828 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
829 break;
830 return 178; // "div_rem_to_divrem"
831 case 'e': // 1 string to match.
832 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
833 break;
834 return 86; // "erase_undef_store"
835 case 'p': // 1 string to match.
836 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
837 break;
838 return 174; // "ptr_add_with_zero"
839 case 's': // 4 strings to match.
840 switch (RuleIdentifier[1]) {
841 default: break;
842 case 'e': // 2 strings to match.
843 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
844 break;
845 switch (RuleIdentifier[7]) {
846 default: break;
847 case 't': // 1 string to match.
848 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
849 break;
850 return 134; // "select_to_iminmax"
851 case 'z': // 1 string to match.
852 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
853 break;
854 return 136; // "select_zero_false"
855 }
856 break;
857 case 'h': // 1 string to match.
858 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
859 break;
860 return 175; // "shift_immed_chain"
861 case 'r': // 1 string to match.
862 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
863 break;
864 return 216; // "srem_pow2_to_mask"
865 }
866 break;
867 case 'u': // 2 strings to match.
868 switch (RuleIdentifier[1]) {
869 default: break;
870 case 'n': // 1 string to match.
871 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
872 break;
873 return 77; // "undef_to_int_zero"
874 case 'r': // 1 string to match.
875 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
876 break;
877 return 145; // "urem_pow2_to_mask"
878 }
879 break;
880 }
881 break;
882 case 18: // 13 strings to match.
883 switch (RuleIdentifier[0]) {
884 default: break;
885 case 'A': // 3 strings to match.
886 switch (RuleIdentifier[1]) {
887 default: break;
888 case 'M': // 2 strings to match.
889 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
890 break;
891 switch (RuleIdentifier[11]) {
892 default: break;
893 case 'B': // 1 string to match.
894 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
895 break;
896 return 7; // "AMinusBPlusBMinusC"
897 case 'C': // 1 string to match.
898 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
899 break;
900 return 6; // "AMinusBPlusCMinusA"
901 }
902 break;
903 case 'P': // 1 string to match.
904 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
905 break;
906 return 0; // "APlusBMinusCMinusB"
907 }
908 break;
909 case 'b': // 1 string to match.
910 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
911 break;
912 return 93; // "binop_left_to_zero"
913 case 'c': // 3 strings to match.
914 if (RuleIdentifier[1] != 'o')
915 break;
916 switch (RuleIdentifier[2]) {
917 default: break;
918 case 'm': // 1 string to match.
919 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
920 break;
921 return 171; // "combine_minmax_nan"
922 case 'n': // 2 strings to match.
923 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
924 break;
925 switch (RuleIdentifier[15]) {
926 default: break;
927 case 'a': // 1 string to match.
928 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
929 break;
930 return 152; // "constant_fold_fabs"
931 case 'n': // 1 string to match.
932 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
933 break;
934 return 151; // "constant_fold_fneg"
935 }
936 break;
937 }
938 break;
939 case 'e': // 1 string to match.
940 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
941 break;
942 return 172; // "expand_const_fpowi"
943 case 'f': // 2 strings to match.
944 switch (RuleIdentifier[1]) {
945 default: break;
946 case 'o': // 1 string to match.
947 if (memcmp(RuleIdentifier.data()+2, "ld_global_offset", 16) != 0)
948 break;
949 return 282; // "fold_global_offset"
950 case 'p': // 1 string to match.
951 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
952 break;
953 return 107; // "fptrunc_fpext_fold"
954 }
955 break;
956 case 's': // 2 strings to match.
957 if (RuleIdentifier[1] != 'e')
958 break;
959 switch (RuleIdentifier[2]) {
960 default: break;
961 case 'l': // 1 string to match.
962 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
963 break;
964 return 61; // "select_of_truncate"
965 case 'x': // 1 string to match.
966 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
967 break;
968 return 127; // "sext_inreg_of_load"
969 }
970 break;
971 case 't': // 1 string to match.
972 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
973 break;
974 return 50; // "truncate_of_anyext"
975 }
976 break;
977 case 19: // 19 strings to match.
978 switch (RuleIdentifier[0]) {
979 default: break;
980 case 'A': // 1 string to match.
981 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
982 break;
983 return 1; // "AMinusBMinusCMinusC"
984 case 'b': // 1 string to match.
985 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
986 break;
987 return 94; // "binop_right_to_zero"
988 case 'c': // 7 strings to match.
989 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
990 break;
991 switch (RuleIdentifier[5]) {
992 default: break;
993 case '_': // 1 string to match.
994 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
995 break;
996 return 166; // "const_ptradd_to_i2p"
997 case 'a': // 6 strings to match.
998 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
999 break;
1000 switch (RuleIdentifier[14]) {
1001 default: break;
1002 case 'b': // 1 string to match.
1003 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
1004 break;
1005 return 194; // "constant_fold_binop"
1006 case 'f': // 5 strings to match.
1007 switch (RuleIdentifier[15]) {
1008 default: break;
1009 case 'c': // 1 string to match.
1010 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
1011 break;
1012 return 157; // "constant_fold_fceil"
1013 case 'l': // 1 string to match.
1014 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
1015 break;
1016 return 154; // "constant_fold_flog2"
1017 case 'p': // 1 string to match.
1018 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
1019 break;
1020 return 156; // "constant_fold_fpext"
1021 case 'r': // 1 string to match.
1022 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
1023 break;
1024 return 162; // "constant_fold_frint"
1025 case 's': // 1 string to match.
1026 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
1027 break;
1028 return 153; // "constant_fold_fsqrt"
1029 }
1030 break;
1031 }
1032 break;
1033 }
1034 break;
1035 case 'e': // 2 strings to match.
1036 if (memcmp(RuleIdentifier.data()+1, "xt", 2) != 0)
1037 break;
1038 switch (RuleIdentifier[3]) {
1039 default: break;
1040 case '_': // 1 string to match.
1041 if (memcmp(RuleIdentifier.data()+4, "uaddv_to_uaddlv", 15) != 0)
1042 break;
1043 return 284; // "ext_uaddv_to_uaddlv"
1044 case 'e': // 1 string to match.
1045 if (memcmp(RuleIdentifier.data()+4, "nd_through_phis", 15) != 0)
1046 break;
1047 return 111; // "extend_through_phis"
1048 }
1049 break;
1050 case 'i': // 1 string to match.
1051 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
1052 break;
1053 return 69; // "integer_of_truncate"
1054 case 'm': // 1 string to match.
1055 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
1056 break;
1057 return 254; // "merge_of_x_and_zero"
1058 case 'p': // 1 string to match.
1059 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
1060 break;
1061 return 117; // "ptr_add_immed_chain"
1062 case 'r': // 2 strings to match.
1063 switch (RuleIdentifier[1]) {
1064 default: break;
1065 case 'e': // 1 string to match.
1066 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
1067 break;
1068 return 116; // "reassoc_comm_binops"
1069 case 'i': // 1 string to match.
1070 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
1071 break;
1072 return 90; // "right_identity_zero"
1073 }
1074 break;
1075 case 's': // 2 strings to match.
1076 if (memcmp(RuleIdentifier.data()+1, "implify_", 8) != 0)
1077 break;
1078 switch (RuleIdentifier[9]) {
1079 default: break;
1080 case 'a': // 1 string to match.
1081 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
1082 break;
1083 return 112; // "simplify_add_to_sub"
1084 case 'n': // 1 string to match.
1085 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
1086 break;
1087 return 237; // "simplify_neg_minmax"
1088 }
1089 break;
1090 case 'u': // 1 string to match.
1091 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
1092 break;
1093 return 81; // "unary_undef_to_zero"
1094 }
1095 break;
1096 case 20: // 10 strings to match.
1097 switch (RuleIdentifier[0]) {
1098 default: break;
1099 case 'a': // 1 string to match.
1100 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
1101 break;
1102 return 206; // "and_or_disjoint_mask"
1103 case 'b': // 1 string to match.
1104 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
1105 break;
1106 return 105; // "bitcast_bitcast_fold"
1107 case 'c': // 1 string to match.
1108 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
1109 break;
1110 return 158; // "constant_fold_ffloor"
1111 case 'i': // 1 string to match.
1112 if (memcmp(RuleIdentifier.data()+1, "cmp_redundant_trunc", 19) != 0)
1113 break;
1114 return 281; // "icmp_redundant_trunc"
1115 case 'm': // 1 string to match.
1116 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
1117 break;
1118 return 253; // "merge_of_x_and_undef"
1119 case 'o': // 1 string to match.
1120 if (memcmp(RuleIdentifier.data()+1, "r_and_xor_to_xor_or", 19) != 0)
1121 break;
1122 return 232; // "or_and_xor_to_xor_or"
1123 case 'r': // 2 strings to match.
1124 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
1125 break;
1126 switch (RuleIdentifier[4]) {
1127 default: break;
1128 case 'c': // 1 string to match.
1129 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
1130 break;
1131 return 128; // "reduce_shl_of_extend"
1132 case 'n': // 1 string to match.
1133 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
1134 break;
1135 return 138; // "redundant_sext_inreg"
1136 }
1137 break;
1138 case 'u': // 2 strings to match.
1139 if (RuleIdentifier[1] != 'n')
1140 break;
1141 switch (RuleIdentifier[2]) {
1142 default: break;
1143 case 'a': // 1 string to match.
1144 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
1145 break;
1146 return 82; // "unary_undef_to_undef"
1147 case 'm': // 1 string to match.
1148 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
1149 break;
1150 return 252; // "unmerge_zext_to_zext"
1151 }
1152 break;
1153 }
1154 break;
1155 case 21: // 21 strings to match.
1156 switch (RuleIdentifier[0]) {
1157 default: break;
1158 case 'a': // 1 string to match.
1159 if (memcmp(RuleIdentifier.data()+1, "nd_xor_or_to_xor_and", 20) != 0)
1160 break;
1161 return 234; // "and_xor_or_to_xor_and"
1162 case 'c': // 6 strings to match.
1163 if (RuleIdentifier[1] != 'o')
1164 break;
1165 switch (RuleIdentifier[2]) {
1166 default: break;
1167 case 'm': // 4 strings to match.
1168 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1169 break;
1170 switch (RuleIdentifier[8]) {
1171 default: break;
1172 case 'b': // 1 string to match.
1173 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
1174 break;
1175 return 255; // "combine_build_unmerge"
1176 case 'c': // 1 string to match.
1177 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
1178 break;
1179 return 238; // "combine_concat_vector"
1180 case 'm': // 2 strings to match.
1181 if (memcmp(RuleIdentifier.data()+9, "em", 2) != 0)
1182 break;
1183 switch (RuleIdentifier[11]) {
1184 default: break;
1185 case 'c': // 1 string to match.
1186 if (memcmp(RuleIdentifier.data()+12, "py_inline", 9) != 0)
1187 break;
1188 return 292; // "combine_memcpy_inline"
1189 case 's': // 1 string to match.
1190 if (memcmp(RuleIdentifier.data()+12, "et_inline", 9) != 0)
1191 break;
1192 return 293; // "combine_memset_inline"
1193 }
1194 break;
1195 }
1196 break;
1197 case 'n': // 2 strings to match.
1198 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
1199 break;
1200 switch (RuleIdentifier[14]) {
1201 default: break;
1202 case 'c': // 1 string to match.
1203 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
1204 break;
1205 return 197; // "constant_fold_cast_op"
1206 case 'f': // 1 string to match.
1207 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
1208 break;
1209 return 155; // "constant_fold_fptrunc"
1210 }
1211 break;
1212 }
1213 break;
1214 case 'e': // 1 string to match.
1215 if (memcmp(RuleIdentifier.data()+1, "xt_addv_to_udot_addv", 20) != 0)
1216 break;
1217 return 283; // "ext_addv_to_udot_addv"
1218 case 'f': // 1 string to match.
1219 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
1220 break;
1221 return 223; // "fdiv_repeated_divison"
1222 case 'i': // 1 string to match.
1223 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
1224 break;
1225 return 29; // "insert_vector_elt_oob"
1226 case 'l': // 1 string to match.
1227 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
1228 break;
1229 return 262; // "lshr_of_trunc_of_lshr"
1230 case 'p': // 6 strings to match.
1231 if (memcmp(RuleIdentifier.data()+1, "ush_", 4) != 0)
1232 break;
1233 switch (RuleIdentifier[5]) {
1234 default: break;
1235 case 'a': // 2 strings to match.
1236 if (memcmp(RuleIdentifier.data()+6, "dd_through_", 11) != 0)
1237 break;
1238 switch (RuleIdentifier[17]) {
1239 default: break;
1240 case 's': // 1 string to match.
1241 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1242 break;
1243 return 289; // "push_add_through_sext"
1244 case 'z': // 1 string to match.
1245 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1246 break;
1247 return 286; // "push_add_through_zext"
1248 }
1249 break;
1250 case 'm': // 2 strings to match.
1251 if (memcmp(RuleIdentifier.data()+6, "ul_through_", 11) != 0)
1252 break;
1253 switch (RuleIdentifier[17]) {
1254 default: break;
1255 case 's': // 1 string to match.
1256 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1257 break;
1258 return 290; // "push_mul_through_sext"
1259 case 'z': // 1 string to match.
1260 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1261 break;
1262 return 287; // "push_mul_through_zext"
1263 }
1264 break;
1265 case 's': // 2 strings to match.
1266 if (memcmp(RuleIdentifier.data()+6, "ub_through_", 11) != 0)
1267 break;
1268 switch (RuleIdentifier[17]) {
1269 default: break;
1270 case 's': // 1 string to match.
1271 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1272 break;
1273 return 288; // "push_sub_through_sext"
1274 case 'z': // 1 string to match.
1275 if (memcmp(RuleIdentifier.data()+18, "ext", 3) != 0)
1276 break;
1277 return 285; // "push_sub_through_zext"
1278 }
1279 break;
1280 }
1281 break;
1282 case 'r': // 1 string to match.
1283 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
1284 break;
1285 return 100; // "right_identity_one_fp"
1286 case 's': // 1 string to match.
1287 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_equiv", 20) != 0)
1288 break;
1289 return 89; // "select_same_val_equiv"
1290 case 'u': // 2 strings to match.
1291 if (RuleIdentifier[1] != 'n')
1292 break;
1293 switch (RuleIdentifier[2]) {
1294 default: break;
1295 case 'd': // 1 string to match.
1296 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
1297 break;
1298 return 78; // "undef_to_negative_one"
1299 case 'm': // 1 string to match.
1300 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
1301 break;
1302 return 251; // "unmerge_dead_to_trunc"
1303 }
1304 break;
1305 }
1306 break;
1307 case 22: // 13 strings to match.
1308 switch (RuleIdentifier[0]) {
1309 default: break;
1310 case 'c': // 3 strings to match.
1311 if (RuleIdentifier[1] != 'o')
1312 break;
1313 switch (RuleIdentifier[2]) {
1314 default: break;
1315 case 'm': // 2 strings to match.
1316 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_", 13) != 0)
1317 break;
1318 switch (RuleIdentifier[16]) {
1319 default: break;
1320 case 'c': // 1 string to match.
1321 if (memcmp(RuleIdentifier.data()+17, "oncat", 5) != 0)
1322 break;
1323 return 242; // "combine_shuffle_concat"
1324 case 'v': // 1 string to match.
1325 if (memcmp(RuleIdentifier.data()+17, "ector", 5) != 0)
1326 break;
1327 return 280; // "combine_shuffle_vector"
1328 }
1329 break;
1330 case 'n': // 1 string to match.
1331 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1332 break;
1333 return 195; // "constant_fold_fp_binop"
1334 }
1335 break;
1336 case 'f': // 4 strings to match.
1337 switch (RuleIdentifier[1]) {
1338 default: break;
1339 case 'o': // 1 string to match.
1340 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1341 break;
1342 return 215; // "fold_binop_into_select"
1343 case 'u': // 3 strings to match.
1344 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1345 break;
1346 switch (RuleIdentifier[13]) {
1347 default: break;
1348 case 'l': // 1 string to match.
1349 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1350 break;
1351 return 182; // "funnel_shift_left_zero"
1352 case 'o': // 1 string to match.
1353 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1354 break;
1355 return 183; // "funnel_shift_overshift"
1356 case 't': // 1 string to match.
1357 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1358 break;
1359 return 180; // "funnel_shift_to_rotate"
1360 }
1361 break;
1362 }
1363 break;
1364 case 'i': // 1 string to match.
1365 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1366 break;
1367 return 121; // "icmp_to_lhs_known_bits"
1368 case 'm': // 1 string to match.
1369 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1370 break;
1371 return 257; // "match_subo_no_overflow"
1372 case 'p': // 1 string to match.
1373 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1374 break;
1375 return 83; // "propagate_undef_any_op"
1376 case 'r': // 1 string to match.
1377 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
1378 break;
1379 return 99; // "right_identity_one_int"
1380 case 's': // 1 string to match.
1381 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1382 break;
1383 return 125; // "shl_ashr_to_sext_inreg"
1384 case 't': // 1 string to match.
1385 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1386 break;
1387 return 103; // "trunc_buildvector_fold"
1388 }
1389 break;
1390 case 23: // 7 strings to match.
1391 switch (RuleIdentifier[0]) {
1392 default: break;
1393 case 'b': // 1 string to match.
1394 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1395 break;
1396 return 62; // "buildvector_of_truncate"
1397 case 'f': // 1 string to match.
1398 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1399 break;
1400 return 181; // "funnel_shift_right_zero"
1401 case 'i': // 2 strings to match.
1402 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1403 break;
1404 switch (RuleIdentifier[21]) {
1405 default: break;
1406 case 's': // 1 string to match.
1407 if (RuleIdentifier[22] != 'i')
1408 break;
1409 return 164; // "itof_const_zero_fold_si"
1410 case 'u': // 1 string to match.
1411 if (RuleIdentifier[22] != 'i')
1412 break;
1413 return 165; // "itof_const_zero_fold_ui"
1414 }
1415 break;
1416 case 'p': // 1 string to match.
1417 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1418 break;
1419 return 84; // "propagate_undef_all_ops"
1420 case 's': // 1 string to match.
1421 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_trivial", 22) != 0)
1422 break;
1423 return 88; // "select_same_val_trivial"
1424 case 't': // 1 string to match.
1425 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1426 break;
1427 return 261; // "truncusatu_to_fptouisat"
1428 }
1429 break;
1430 case 24: // 11 strings to match.
1431 switch (RuleIdentifier[0]) {
1432 default: break;
1433 case 'b': // 1 string to match.
1434 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1435 break;
1436 return 79; // "binop_left_undef_to_zero"
1437 case 'c': // 4 strings to match.
1438 switch (RuleIdentifier[1]) {
1439 default: break;
1440 case 'o': // 1 string to match.
1441 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fnearbyint", 22) != 0)
1442 break;
1443 return 163; // "constant_fold_fnearbyint"
1444 case 't': // 3 strings to match.
1445 switch (RuleIdentifier[2]) {
1446 default: break;
1447 case 'l': // 2 strings to match.
1448 if (memcmp(RuleIdentifier.data()+3, "z_", 2) != 0)
1449 break;
1450 switch (RuleIdentifier[5]) {
1451 default: break;
1452 case 't': // 1 string to match.
1453 if (memcmp(RuleIdentifier.data()+6, "o_ctlz_zero_poison", 18) != 0)
1454 break;
1455 return 265; // "ctlz_to_ctlz_zero_poison"
1456 case 'z': // 1 string to match.
1457 if (memcmp(RuleIdentifier.data()+6, "ero_poison_to_ctls", 18) != 0)
1458 break;
1459 return 264; // "ctlz_zero_poison_to_ctls"
1460 }
1461 break;
1462 case 't': // 1 string to match.
1463 if (memcmp(RuleIdentifier.data()+3, "z_to_cttz_zero_poison", 21) != 0)
1464 break;
1465 return 266; // "cttz_to_cttz_zero_poison"
1466 }
1467 break;
1468 }
1469 break;
1470 case 'm': // 1 string to match.
1471 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1472 break;
1473 return 28; // "match_extract_of_element"
1474 case 'n': // 1 string to match.
1475 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1476 break;
1477 return 129; // "narrow_binop_feeding_and"
1478 case 's': // 3 strings to match.
1479 if (RuleIdentifier[1] != 'e')
1480 break;
1481 switch (RuleIdentifier[2]) {
1482 default: break;
1483 case 'l': // 1 string to match.
1484 if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp_true", 21) != 0)
1485 break;
1486 return 132; // "select_constant_cmp_true"
1487 case 'x': // 2 strings to match.
1488 if (memcmp(RuleIdentifier.data()+3, "t_inreg_", 8) != 0)
1489 break;
1490 switch (RuleIdentifier[11]) {
1491 default: break;
1492 case 'o': // 1 string to match.
1493 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1494 break;
1495 return 58; // "sext_inreg_of_sext_inreg"
1496 case 't': // 1 string to match.
1497 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1498 break;
1499 return 147; // "sext_inreg_to_zext_inreg"
1500 }
1501 break;
1502 }
1503 break;
1504 case 'x': // 1 string to match.
1505 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1506 break;
1507 return 173; // "xor_of_and_with_same_reg"
1508 }
1509 break;
1510 case 25: // 10 strings to match.
1511 switch (RuleIdentifier[0]) {
1512 default: break;
1513 case 'b': // 3 strings to match.
1514 switch (RuleIdentifier[1]) {
1515 default: break;
1516 case 'i': // 2 strings to match.
1517 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1518 break;
1519 switch (RuleIdentifier[22]) {
1520 default: break;
1521 case 'a': // 1 string to match.
1522 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1523 break;
1524 return 191; // "bitfield_extract_from_and"
1525 case 's': // 1 string to match.
1526 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1527 break;
1528 return 192; // "bitfield_extract_from_shr"
1529 }
1530 break;
1531 case 'u': // 1 string to match.
1532 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1533 break;
1534 return 102; // "buildvector_identity_fold"
1535 }
1536 break;
1537 case 'c': // 1 string to match.
1538 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1539 break;
1540 return 243; // "combine_shuffle_undef_rhs"
1541 case 'e': // 1 string to match.
1542 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1543 break;
1544 return 71; // "extract_vec_elt_build_vec"
1545 case 'n': // 1 string to match.
1546 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1547 break;
1548 return 126; // "neg_and_one_to_sext_inreg"
1549 case 'r': // 3 strings to match.
1550 switch (RuleIdentifier[1]) {
1551 default: break;
1552 case 'e': // 2 strings to match.
1553 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
1554 break;
1555 switch (RuleIdentifier[10]) {
1556 default: break;
1557 case 'a': // 1 string to match.
1558 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1559 break;
1560 return 140; // "redundant_aext_sext_inreg"
1561 case 'z': // 1 string to match.
1562 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
1563 break;
1564 return 139; // "redundant_zext_sext_inreg"
1565 }
1566 break;
1567 case 'i': // 1 string to match.
1568 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
1569 break;
1570 return 110; // "right_identity_neg_one_fp"
1571 }
1572 break;
1573 case 's': // 1 string to match.
1574 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_false", 24) != 0)
1575 break;
1576 return 131; // "select_constant_cmp_false"
1577 }
1578 break;
1579 case 26: // 6 strings to match.
1580 switch (RuleIdentifier[0]) {
1581 default: break;
1582 case 'b': // 2 strings to match.
1583 if (RuleIdentifier[1] != 'i')
1584 break;
1585 switch (RuleIdentifier[2]) {
1586 default: break;
1587 case 'n': // 1 string to match.
1588 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
1589 break;
1590 return 80; // "binop_right_undef_to_undef"
1591 case 't': // 1 string to match.
1592 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
1593 break;
1594 return 106; // "bitcast_bitcast_to_bitcast"
1595 }
1596 break;
1597 case 'c': // 2 strings to match.
1598 if (RuleIdentifier[1] != 'o')
1599 break;
1600 switch (RuleIdentifier[2]) {
1601 default: break;
1602 case 'm': // 1 string to match.
1603 if (memcmp(RuleIdentifier.data()+3, "mute_fp_constant_to_rhs", 23) != 0)
1604 break;
1605 return 228; // "commute_fp_constant_to_rhs"
1606 case 'n': // 1 string to match.
1607 if (memcmp(RuleIdentifier.data()+3, "stant_fold_unary_int_op", 23) != 0)
1608 break;
1609 return 198; // "constant_fold_unary_int_op"
1610 }
1611 break;
1612 case 'f': // 1 string to match.
1613 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1614 break;
1615 return 179; // "funnel_shift_from_or_shift"
1616 case 'r': // 1 string to match.
1617 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1618 break;
1619 return 108; // "right_identity_neg_zero_fp"
1620 }
1621 break;
1622 case 27: // 7 strings to match.
1623 switch (RuleIdentifier[0]) {
1624 default: break;
1625 case 'c': // 2 strings to match.
1626 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1627 break;
1628 switch (RuleIdentifier[3]) {
1629 default: break;
1630 case 'b': // 1 string to match.
1631 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1632 break;
1633 return 245; // "combine_use_vector_truncate"
1634 case 'm': // 1 string to match.
1635 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1636 break;
1637 return 227; // "commute_int_constant_to_rhs"
1638 }
1639 break;
1640 case 'd': // 1 string to match.
1641 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1642 break;
1643 return 123; // "double_icmp_zero_or_combine"
1644 case 'r': // 1 string to match.
1645 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1646 break;
1647 return 124; // "redundant_binop_in_equality"
1648 case 's': // 1 string to match.
1649 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general", 26) != 0)
1650 break;
1651 return 133; // "select_constant_cmp_general"
1652 case 't': // 1 string to match.
1653 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1654 break;
1655 return 104; // "trunc_lshr_buildvector_fold"
1656 case 'u': // 1 string to match.
1657 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1658 break;
1659 return 246; // "unmerge_anyext_build_vector"
1660 }
1661 break;
1662 case 28: // 5 strings to match.
1663 switch (RuleIdentifier[0]) {
1664 default: break;
1665 case 'd': // 1 string to match.
1666 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1667 break;
1668 return 122; // "double_icmp_zero_and_combine"
1669 case 'e': // 1 string to match.
1670 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_undef", 27) != 0)
1671 break;
1672 return 25; // "extract_vector_element_undef"
1673 case 'o': // 1 string to match.
1674 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1675 break;
1676 return 150; // "opt_brcond_by_inverting_cond"
1677 case 'p': // 1 string to match.
1678 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1679 break;
1680 return 85; // "propagate_undef_shuffle_mask"
1681 case 's': // 1 string to match.
1682 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1683 break;
1684 return 176; // "shift_of_shifted_logic_chain"
1685 }
1686 break;
1687 case 29: // 6 strings to match.
1688 switch (RuleIdentifier[0]) {
1689 default: break;
1690 case 'b': // 1 string to match.
1691 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1692 break;
1693 return 193; // "bitfield_extract_from_shr_and"
1694 case 'c': // 4 strings to match.
1695 if (RuleIdentifier[1] != 'o')
1696 break;
1697 switch (RuleIdentifier[2]) {
1698 default: break;
1699 case 'm': // 2 strings to match.
1700 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1701 break;
1702 switch (RuleIdentifier[8]) {
1703 default: break;
1704 case 'e': // 1 string to match.
1705 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1706 break;
1707 return 75; // "combine_extracted_vector_load"
1708 case 's': // 1 string to match.
1709 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1710 break;
1711 return 244; // "combine_shuffle_disjoint_mask"
1712 }
1713 break;
1714 case 'n': // 2 strings to match.
1715 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1716 break;
1717 switch (RuleIdentifier[24]) {
1718 default: break;
1719 case 'r': // 1 string to match.
1720 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1721 break;
1722 return 160; // "constant_fold_intrinsic_round"
1723 case 't': // 1 string to match.
1724 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1725 break;
1726 return 159; // "constant_fold_intrinsic_trunc"
1727 }
1728 break;
1729 }
1730 break;
1731 case 'i': // 1 string to match.
1732 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1733 break;
1734 return 120; // "icmp_to_true_false_known_bits"
1735 }
1736 break;
1737 case 30: // 2 strings to match.
1738 switch (RuleIdentifier[0]) {
1739 default: break;
1740 case 'f': // 1 string to match.
1741 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1742 break;
1743 return 46; // "freeze_of_non_undef_non_poison"
1744 case 'r': // 1 string to match.
1745 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1746 break;
1747 return 109; // "right_identity_neg_zero_fp_nsz"
1748 }
1749 break;
1750 case 31: // 2 strings to match.
1751 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1752 break;
1753 switch (RuleIdentifier[22]) {
1754 default: break;
1755 case 'e': // 1 string to match.
1756 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1757 break;
1758 return 27; // "insert_vector_element_elt_undef"
1759 case 'i': // 1 string to match.
1760 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1761 break;
1762 return 26; // "insert_vector_element_idx_undef"
1763 }
1764 break;
1765 case 32: // 5 strings to match.
1766 switch (RuleIdentifier[0]) {
1767 default: break;
1768 case 'b': // 1 string to match.
1769 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1770 break;
1771 return 190; // "bitfield_extract_from_sext_inreg"
1772 case 'c': // 2 strings to match.
1773 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1774 break;
1775 switch (RuleIdentifier[9]) {
1776 default: break;
1777 case 'a': // 1 string to match.
1778 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1779 break;
1780 return 207; // "combine_fadd_fmul_to_fmad_or_fma"
1781 case 's': // 1 string to match.
1782 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1783 break;
1784 return 211; // "combine_fsub_fmul_to_fmad_or_fma"
1785 }
1786 break;
1787 case 'e': // 1 string to match.
1788 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1789 break;
1790 return 30; // "extract_vector_element_not_const"
1791 case 'r': // 1 string to match.
1792 if (memcmp(RuleIdentifier.data()+1, "edundant_neg_operands_fadd_fsub", 31) != 0)
1793 break;
1794 return 201; // "redundant_neg_operands_fadd_fsub"
1795 }
1796 break;
1797 case 33: // 3 strings to match.
1798 switch (RuleIdentifier[0]) {
1799 default: break;
1800 case 'c': // 1 string to match.
1801 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
1802 break;
1803 return 161; // "constant_fold_intrinsic_roundeven"
1804 case 'r': // 2 strings to match.
1805 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
1806 break;
1807 switch (RuleIdentifier[10]) {
1808 default: break;
1809 case 'a': // 1 string to match.
1810 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1811 break;
1812 return 142; // "redundant_aext_unmerge_sext_inreg"
1813 case 'z': // 1 string to match.
1814 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
1815 break;
1816 return 141; // "redundant_zext_unmerge_sext_inreg"
1817 }
1818 break;
1819 }
1820 break;
1821 case 34: // 1 string to match.
1822 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1823 break;
1824 return 72; // "extract_all_elts_from_build_vector"
1825 case 35: // 1 string to match.
1826 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1827 break;
1828 return 32; // "extract_vector_element_build_vector"
1829 case 36: // 3 strings to match.
1830 switch (RuleIdentifier[0]) {
1831 default: break;
1832 case 'c': // 2 strings to match.
1833 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1834 break;
1835 switch (RuleIdentifier[8]) {
1836 default: break;
1837 case 'f': // 1 string to match.
1838 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1839 break;
1840 return 209; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1841 case 'i': // 1 string to match.
1842 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1843 break;
1844 return 70; // "combine_insert_vec_elts_build_vector"
1845 }
1846 break;
1847 case 'i': // 1 string to match.
1848 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1849 break;
1850 return 87; // "insert_extract_vec_elt_out_of_bounds"
1851 }
1852 break;
1853 case 37: // 3 strings to match.
1854 switch (RuleIdentifier[0]) {
1855 default: break;
1856 case 'c': // 1 string to match.
1857 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1858 break;
1859 return 212; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1860 case 'e': // 1 string to match.
1861 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1862 break;
1863 return 40; // "extract_vector_element_shuffle_vector"
1864 case 'h': // 1 string to match.
1865 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1866 break;
1867 return 113; // "hoist_logic_op_with_same_opcode_hands"
1868 }
1869 break;
1870 case 38: // 2 strings to match.
1871 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1872 break;
1873 switch (RuleIdentifier[9]) {
1874 default: break;
1875 case 'a': // 1 string to match.
1876 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1877 break;
1878 return 208; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1879 case 's': // 1 string to match.
1880 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1881 break;
1882 return 213; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1883 }
1884 break;
1885 case 40: // 1 string to match.
1886 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1887 break;
1888 return 31; // "extract_vector_element_different_indices"
1889 case 42: // 9 strings to match.
1890 switch (RuleIdentifier[0]) {
1891 default: break;
1892 case 'c': // 1 string to match.
1893 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1894 break;
1895 return 210; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1896 case 'e': // 7 strings to match.
1897 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1898 break;
1899 switch (RuleIdentifier[41]) {
1900 default: break;
1901 case '2': // 1 string to match.
1902 return 33; // "extract_vector_element_build_vector_trunc2"
1903 case '3': // 1 string to match.
1904 return 34; // "extract_vector_element_build_vector_trunc3"
1905 case '4': // 1 string to match.
1906 return 35; // "extract_vector_element_build_vector_trunc4"
1907 case '5': // 1 string to match.
1908 return 36; // "extract_vector_element_build_vector_trunc5"
1909 case '6': // 1 string to match.
1910 return 37; // "extract_vector_element_build_vector_trunc6"
1911 case '7': // 1 string to match.
1912 return 38; // "extract_vector_element_build_vector_trunc7"
1913 case '8': // 1 string to match.
1914 return 39; // "extract_vector_element_build_vector_trunc8"
1915 }
1916 break;
1917 case 'f': // 1 string to match.
1918 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1919 break;
1920 return 184; // "funnel_shift_or_shift_to_funnel_shift_left"
1921 }
1922 break;
1923 case 43: // 2 strings to match.
1924 switch (RuleIdentifier[0]) {
1925 default: break;
1926 case 'c': // 1 string to match.
1927 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1928 break;
1929 return 214; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1930 case 'f': // 1 string to match.
1931 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1932 break;
1933 return 185; // "funnel_shift_or_shift_to_funnel_shift_right"
1934 }
1935 break;
1936 case 44: // 1 string to match.
1937 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1938 break;
1939 return 41; // "insert_vector_element_extract_vector_element"
1940 case 46: // 1 string to match.
1941 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1942 break;
1943 return 47; // "push_freeze_to_prevent_poison_from_propagating"
1944 }
1945#endif // ifndef NDEBUG
1946
1947 return std::nullopt;
1948}
1949static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1950 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1951 if (!RangePair.second.empty()) {
1952 const auto First = getRuleIdxForIdentifier(RangePair.first);
1953 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1954 if (!First || !Last)
1955 return std::nullopt;
1956 if (First >= Last)
1957 report_fatal_error("Beginning of range should be before end of range");
1958 return {{*First, *Last + 1}};
1959 }
1960 if (RangePair.first == "*") {
1961 return {{0, 298}};
1962 }
1963 const auto I = getRuleIdxForIdentifier(RangePair.first);
1964 if (!I)
1965 return std::nullopt;
1966 return {{*I, *I + 1}};
1967}
1968
1969bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1970 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1971 if (!MaybeRange)
1972 return false;
1973 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1974 DisabledRules.reset(I);
1975 return true;
1976}
1977
1978bool AArch64PreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1979 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1980 if (!MaybeRange)
1981 return false;
1982 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1983 DisabledRules.set(I);
1984 return true;
1985}
1986
1987static std::vector<std::string> AArch64PreLegalizerCombinerOption;
1988static cl::list<std::string> AArch64PreLegalizerCombinerDisableOption(
1989 "aarch64prelegalizercombiner-disable-rule",
1990 cl::desc("Disable one or more combiner rules temporarily in the AArch64PreLegalizerCombiner pass"),
1991 cl::CommaSeparated,
1992 cl::Hidden,
1993 cl::cat(GICombinerOptionCategory),
1994 cl::callback([](const std::string &Str) {
1995 AArch64PreLegalizerCombinerOption.push_back(Str);
1996 }));
1997static cl::list<std::string> AArch64PreLegalizerCombinerOnlyEnableOption(
1998 "aarch64prelegalizercombiner-only-enable-rule",
1999 cl::desc("Disable all rules in the AArch64PreLegalizerCombiner pass then re-enable the specified ones"),
2000 cl::Hidden,
2001 cl::cat(GICombinerOptionCategory),
2002 cl::callback([](const std::string &CommaSeparatedArg) {
2003 StringRef Str = CommaSeparatedArg;
2004 AArch64PreLegalizerCombinerOption.push_back("*");
2005 do {
2006 auto X = Str.split(",");
2007 AArch64PreLegalizerCombinerOption.push_back(("!" + X.first).str());
2008 Str = X.second;
2009 } while (!Str.empty());
2010 }));
2011
2012
2013bool AArch64PreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
2014 return !DisabledRules.test(RuleID);
2015}
2016bool AArch64PreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
2017 for (StringRef Identifier : AArch64PreLegalizerCombinerOption) {
2018 bool Enabled = Identifier.consume_front("!");
2019 if (Enabled && !setRuleEnabled(Identifier))
2020 return false;
2021 if (!Enabled && !setRuleDisabled(Identifier))
2022 return false;
2023 }
2024 return true;
2025}
2026
2027
2028#endif // GET_GICOMBINER_TYPES
2029
2030#ifdef GET_GICOMBINER_TYPES
2031
2032const unsigned MAX_SUBTARGET_PREDICATES = 1;
2033using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
2034
2035#endif // GET_GICOMBINER_TYPES
2036
2037#ifdef GET_GICOMBINER_CLASS_MEMBERS
2038
2039 bool canMatchOpcode(unsigned Opc) const override;
2040 uint32_t getRootFlagsToDrop() const override;
2041
2042#endif // GET_GICOMBINER_CLASS_MEMBERS
2043
2044#ifdef GET_GICOMBINER_CLASS_MEMBERS
2045
2046PredicateBitset AvailableModuleFeatures;
2047mutable PredicateBitset AvailableFunctionFeatures;
2048PredicateBitset getAvailableFeatures() const {
2049 return AvailableModuleFeatures | AvailableFunctionFeatures;
2050}
2051PredicateBitset
2052computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
2053PredicateBitset
2054computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
2055 const MachineFunction *MF) const;
2056void setupGeneratedPerFunctionState(MachineFunction &MF) override;
2057
2058#endif // GET_GICOMBINER_CLASS_MEMBERS
2059
2060#ifdef GET_GICOMBINER_CLASS_MEMBERS
2061
2062 mutable MatcherState State;
2063 typedef ComplexRendererFns(AArch64PreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
2064 typedef void(AArch64PreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
2065 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
2066 static AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
2067 static AArch64PreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
2068 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
2069 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
2070 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
2071 const uint8_t *getMatchTable() const override;
2072 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
2073 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
2074 bool testSimplePredicate(unsigned PredicateID) const override;
2075 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
2076
2077#endif // GET_GICOMBINER_CLASS_MEMBERS
2078
2079#ifdef GET_GICOMBINER_IMPL
2080
2081// LLT Objects.
2082enum {
2083 GILLT_s1,
2084};
2085const static size_t NumTypeObjects = 1;
2086const static LLT TypeObjects[] = {
2087 LLT::scalar(1),
2088};
2089
2090// Bits for subtarget features that participate in instruction matching.
2091enum SubtargetFeatureBits : uint8_t {
2092 Feature_HasDotProdBit = 0,
2093};
2094
2095PredicateBitset AArch64PreLegalizerCombinerImpl::
2096computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
2097 PredicateBitset Features{};
2098 if (Subtarget->hasDotProd())
2099 Features.set(Feature_HasDotProdBit);
2100 return Features;
2101}
2102
2103void AArch64PreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
2104 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
2105}
2106PredicateBitset AArch64PreLegalizerCombinerImpl::
2107computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
2108 PredicateBitset Features{};
2109 return Features;
2110}
2111
2112// Feature bitsets.
2113enum {
2114 GIFBS_Invalid,
2115 GIFBS_HasDotProd,
2116};
2117constexpr static PredicateBitset FeatureBitsets[] {
2118 {}, // GIFBS_Invalid
2119 {Feature_HasDotProdBit, },
2120};
2121
2122// ComplexPattern predicates.
2123enum {
2124 GICP_Invalid,
2125};
2126// See constructor for table contents
2127
2128AArch64PreLegalizerCombinerImpl::ComplexMatcherMemFn
2129AArch64PreLegalizerCombinerImpl::ComplexPredicateFns[] = {
2130 nullptr, // GICP_Invalid
2131};
2132
2133enum {
2134 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
2135 GICXXPred_MI_Predicate_GICombiner1,
2136 GICXXPred_MI_Predicate_GICombiner2,
2137 GICXXPred_MI_Predicate_GICombiner3,
2138 GICXXPred_MI_Predicate_GICombiner4,
2139 GICXXPred_MI_Predicate_GICombiner5,
2140 GICXXPred_MI_Predicate_GICombiner6,
2141 GICXXPred_MI_Predicate_GICombiner7,
2142 GICXXPred_MI_Predicate_GICombiner8,
2143 GICXXPred_MI_Predicate_GICombiner9,
2144 GICXXPred_MI_Predicate_GICombiner10,
2145 GICXXPred_MI_Predicate_GICombiner11,
2146 GICXXPred_MI_Predicate_GICombiner12,
2147 GICXXPred_MI_Predicate_GICombiner13,
2148 GICXXPred_MI_Predicate_GICombiner14,
2149 GICXXPred_MI_Predicate_GICombiner15,
2150 GICXXPred_MI_Predicate_GICombiner16,
2151 GICXXPred_MI_Predicate_GICombiner17,
2152 GICXXPred_MI_Predicate_GICombiner18,
2153 GICXXPred_MI_Predicate_GICombiner19,
2154 GICXXPred_MI_Predicate_GICombiner20,
2155 GICXXPred_MI_Predicate_GICombiner21,
2156 GICXXPred_MI_Predicate_GICombiner22,
2157 GICXXPred_MI_Predicate_GICombiner23,
2158 GICXXPred_MI_Predicate_GICombiner24,
2159 GICXXPred_MI_Predicate_GICombiner25,
2160 GICXXPred_MI_Predicate_GICombiner26,
2161 GICXXPred_MI_Predicate_GICombiner27,
2162 GICXXPred_MI_Predicate_GICombiner28,
2163 GICXXPred_MI_Predicate_GICombiner29,
2164 GICXXPred_MI_Predicate_GICombiner30,
2165 GICXXPred_MI_Predicate_GICombiner31,
2166};
2167bool AArch64PreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
2168 switch (PredicateID) {
2169 case GICXXPred_MI_Predicate_GICombiner0: {
2170 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2171 }
2172 case GICXXPred_MI_Predicate_GICombiner1: {
2173 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
2174 }
2175 case GICXXPred_MI_Predicate_GICombiner2: {
2176 return MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarSizeInBits() ==
2177 MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2178 }
2179 case GICXXPred_MI_Predicate_GICombiner3: {
2180 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2181 }
2182 case GICXXPred_MI_Predicate_GICombiner4: {
2183 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
2184 }
2185 case GICXXPred_MI_Predicate_GICombiner5: {
2186 return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
2187 }
2188 case GICXXPred_MI_Predicate_GICombiner6: {
2189 return Helper.matchSelectSameVal(*State.MIs[0]);
2190 }
2191 case GICXXPred_MI_Predicate_GICombiner7: {
2192 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
2193 }
2194 case GICXXPred_MI_Predicate_GICombiner8: {
2195 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
2196 }
2197 case GICXXPred_MI_Predicate_GICombiner9: {
2198 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
2199 }
2200 case GICXXPred_MI_Predicate_GICombiner10: {
2201 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
2202 }
2203 case GICXXPred_MI_Predicate_GICombiner11: {
2204 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
2205 }
2206 case GICXXPred_MI_Predicate_GICombiner12: {
2207 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
2208 }
2209 case GICXXPred_MI_Predicate_GICombiner13: {
2210 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
2211 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2212 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2213 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2214 }
2215 case GICXXPred_MI_Predicate_GICombiner14: {
2216 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
2217 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
2218 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
2219 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
2220 }
2221 case GICXXPred_MI_Predicate_GICombiner15: {
2222 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2223 Helper.isLegalOrBeforeLegalizer({
2224 TargetOpcode::G_SEXT_INREG,
2225 {MRI.getType(State.MIs[1]->getOperand(1).getReg())},
2226 {},
2227 {1}
2228 });
2229 }
2230 case GICXXPred_MI_Predicate_GICombiner16: {
2231 return !isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI) &&
2232 MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
2233 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
2234 }
2235 case GICXXPred_MI_Predicate_GICombiner17: {
2236 return Helper.matchRedundantSExtInReg(*State.MIs[0]);
2237 }
2238 case GICXXPred_MI_Predicate_GICombiner18: {
2239 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
2240 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
2241 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
2242 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
2243 llvm_unreachable("GICombiner18 should have returned");
2244 }
2245 case GICXXPred_MI_Predicate_GICombiner19: {
2246 return Helper.matchPtrAddZero(*State.MIs[0]);
2247 }
2248 case GICXXPred_MI_Predicate_GICombiner20: {
2249 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
2250 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2251 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2252 }
2253 case GICXXPred_MI_Predicate_GICombiner21: {
2254 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
2255 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
2256 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
2257 }
2258 case GICXXPred_MI_Predicate_GICombiner22: {
2259 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2260 isConstantOrConstantSplatVector(State.MIs[1]->getOperand(2).getReg(), MRI) &&
2261 isConstantOrConstantSplatVector(State.MIs[0]->getOperand(2).getReg(), MRI) &&
2262 Helper.isDesirableToCommuteWithShift(*State.MIs[0]);
2263 }
2264 case GICXXPred_MI_Predicate_GICombiner23: {
2265 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
2266 }
2267 case GICXXPred_MI_Predicate_GICombiner24: {
2268 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
2269 }
2270 case GICXXPred_MI_Predicate_GICombiner25: {
2271 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
2272 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2273 }
2274 case GICXXPred_MI_Predicate_GICombiner26: {
2275 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
2276 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
2277 }
2278 case GICXXPred_MI_Predicate_GICombiner27: {
2279 return MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(2).getReg()) &&
2280 MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg());
2281 }
2282 case GICXXPred_MI_Predicate_GICombiner28: {
2283 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_UAVGFLOOR);
2284 }
2285 case GICXXPred_MI_Predicate_GICombiner29: {
2286 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[2]->getOperand(1).getReg(), State.MIs[3]->getOperand(1).getReg(), TargetOpcode::G_SAVGFLOOR);
2287 }
2288 case GICXXPred_MI_Predicate_GICombiner30: {
2289 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_UAVGCEIL);
2290 }
2291 case GICXXPred_MI_Predicate_GICombiner31: {
2292 return Helper.matchAVG(*State.MIs[0], MRI, State.MIs[3]->getOperand(1).getReg(), State.MIs[4]->getOperand(1).getReg(), TargetOpcode::G_SAVGCEIL);
2293 }
2294 }
2295 llvm_unreachable("Unknown predicate");
2296 return false;
2297}
2298bool AArch64PreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
2299 llvm_unreachable("Unknown predicate");
2300 return false;
2301}
2302bool AArch64PreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
2303 llvm_unreachable("Unknown predicate");
2304 return false;
2305}
2306bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
2307 llvm_unreachable("Unknown predicate");
2308 return false;
2309}
2310bool AArch64PreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
2311 llvm_unreachable("Unknown predicate");
2312 return false;
2313}
2314enum {
2315 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
2316 GICXXPred_Simple_IsRule1Enabled,
2317 GICXXPred_Simple_IsRule2Enabled,
2318 GICXXPred_Simple_IsRule3Enabled,
2319 GICXXPred_Simple_IsRule4Enabled,
2320 GICXXPred_Simple_IsRule5Enabled,
2321 GICXXPred_Simple_IsRule6Enabled,
2322 GICXXPred_Simple_IsRule7Enabled,
2323 GICXXPred_Simple_IsRule8Enabled,
2324 GICXXPred_Simple_IsRule9Enabled,
2325 GICXXPred_Simple_IsRule10Enabled,
2326 GICXXPred_Simple_IsRule11Enabled,
2327 GICXXPred_Simple_IsRule12Enabled,
2328 GICXXPred_Simple_IsRule13Enabled,
2329 GICXXPred_Simple_IsRule14Enabled,
2330 GICXXPred_Simple_IsRule15Enabled,
2331 GICXXPred_Simple_IsRule16Enabled,
2332 GICXXPred_Simple_IsRule17Enabled,
2333 GICXXPred_Simple_IsRule18Enabled,
2334 GICXXPred_Simple_IsRule19Enabled,
2335 GICXXPred_Simple_IsRule20Enabled,
2336 GICXXPred_Simple_IsRule21Enabled,
2337 GICXXPred_Simple_IsRule22Enabled,
2338 GICXXPred_Simple_IsRule23Enabled,
2339 GICXXPred_Simple_IsRule24Enabled,
2340 GICXXPred_Simple_IsRule25Enabled,
2341 GICXXPred_Simple_IsRule26Enabled,
2342 GICXXPred_Simple_IsRule27Enabled,
2343 GICXXPred_Simple_IsRule28Enabled,
2344 GICXXPred_Simple_IsRule29Enabled,
2345 GICXXPred_Simple_IsRule30Enabled,
2346 GICXXPred_Simple_IsRule31Enabled,
2347 GICXXPred_Simple_IsRule32Enabled,
2348 GICXXPred_Simple_IsRule33Enabled,
2349 GICXXPred_Simple_IsRule34Enabled,
2350 GICXXPred_Simple_IsRule35Enabled,
2351 GICXXPred_Simple_IsRule36Enabled,
2352 GICXXPred_Simple_IsRule37Enabled,
2353 GICXXPred_Simple_IsRule38Enabled,
2354 GICXXPred_Simple_IsRule39Enabled,
2355 GICXXPred_Simple_IsRule40Enabled,
2356 GICXXPred_Simple_IsRule41Enabled,
2357 GICXXPred_Simple_IsRule42Enabled,
2358 GICXXPred_Simple_IsRule43Enabled,
2359 GICXXPred_Simple_IsRule44Enabled,
2360 GICXXPred_Simple_IsRule45Enabled,
2361 GICXXPred_Simple_IsRule46Enabled,
2362 GICXXPred_Simple_IsRule47Enabled,
2363 GICXXPred_Simple_IsRule48Enabled,
2364 GICXXPred_Simple_IsRule49Enabled,
2365 GICXXPred_Simple_IsRule50Enabled,
2366 GICXXPred_Simple_IsRule51Enabled,
2367 GICXXPred_Simple_IsRule52Enabled,
2368 GICXXPred_Simple_IsRule53Enabled,
2369 GICXXPred_Simple_IsRule54Enabled,
2370 GICXXPred_Simple_IsRule55Enabled,
2371 GICXXPred_Simple_IsRule56Enabled,
2372 GICXXPred_Simple_IsRule57Enabled,
2373 GICXXPred_Simple_IsRule58Enabled,
2374 GICXXPred_Simple_IsRule59Enabled,
2375 GICXXPred_Simple_IsRule60Enabled,
2376 GICXXPred_Simple_IsRule61Enabled,
2377 GICXXPred_Simple_IsRule62Enabled,
2378 GICXXPred_Simple_IsRule63Enabled,
2379 GICXXPred_Simple_IsRule64Enabled,
2380 GICXXPred_Simple_IsRule65Enabled,
2381 GICXXPred_Simple_IsRule66Enabled,
2382 GICXXPred_Simple_IsRule67Enabled,
2383 GICXXPred_Simple_IsRule68Enabled,
2384 GICXXPred_Simple_IsRule69Enabled,
2385 GICXXPred_Simple_IsRule70Enabled,
2386 GICXXPred_Simple_IsRule71Enabled,
2387 GICXXPred_Simple_IsRule72Enabled,
2388 GICXXPred_Simple_IsRule73Enabled,
2389 GICXXPred_Simple_IsRule74Enabled,
2390 GICXXPred_Simple_IsRule75Enabled,
2391 GICXXPred_Simple_IsRule76Enabled,
2392 GICXXPred_Simple_IsRule77Enabled,
2393 GICXXPred_Simple_IsRule78Enabled,
2394 GICXXPred_Simple_IsRule79Enabled,
2395 GICXXPred_Simple_IsRule80Enabled,
2396 GICXXPred_Simple_IsRule81Enabled,
2397 GICXXPred_Simple_IsRule82Enabled,
2398 GICXXPred_Simple_IsRule83Enabled,
2399 GICXXPred_Simple_IsRule84Enabled,
2400 GICXXPred_Simple_IsRule85Enabled,
2401 GICXXPred_Simple_IsRule86Enabled,
2402 GICXXPred_Simple_IsRule87Enabled,
2403 GICXXPred_Simple_IsRule88Enabled,
2404 GICXXPred_Simple_IsRule89Enabled,
2405 GICXXPred_Simple_IsRule90Enabled,
2406 GICXXPred_Simple_IsRule91Enabled,
2407 GICXXPred_Simple_IsRule92Enabled,
2408 GICXXPred_Simple_IsRule93Enabled,
2409 GICXXPred_Simple_IsRule94Enabled,
2410 GICXXPred_Simple_IsRule95Enabled,
2411 GICXXPred_Simple_IsRule96Enabled,
2412 GICXXPred_Simple_IsRule97Enabled,
2413 GICXXPred_Simple_IsRule98Enabled,
2414 GICXXPred_Simple_IsRule99Enabled,
2415 GICXXPred_Simple_IsRule100Enabled,
2416 GICXXPred_Simple_IsRule101Enabled,
2417 GICXXPred_Simple_IsRule102Enabled,
2418 GICXXPred_Simple_IsRule103Enabled,
2419 GICXXPred_Simple_IsRule104Enabled,
2420 GICXXPred_Simple_IsRule105Enabled,
2421 GICXXPred_Simple_IsRule106Enabled,
2422 GICXXPred_Simple_IsRule107Enabled,
2423 GICXXPred_Simple_IsRule108Enabled,
2424 GICXXPred_Simple_IsRule109Enabled,
2425 GICXXPred_Simple_IsRule110Enabled,
2426 GICXXPred_Simple_IsRule111Enabled,
2427 GICXXPred_Simple_IsRule112Enabled,
2428 GICXXPred_Simple_IsRule113Enabled,
2429 GICXXPred_Simple_IsRule114Enabled,
2430 GICXXPred_Simple_IsRule115Enabled,
2431 GICXXPred_Simple_IsRule116Enabled,
2432 GICXXPred_Simple_IsRule117Enabled,
2433 GICXXPred_Simple_IsRule118Enabled,
2434 GICXXPred_Simple_IsRule119Enabled,
2435 GICXXPred_Simple_IsRule120Enabled,
2436 GICXXPred_Simple_IsRule121Enabled,
2437 GICXXPred_Simple_IsRule122Enabled,
2438 GICXXPred_Simple_IsRule123Enabled,
2439 GICXXPred_Simple_IsRule124Enabled,
2440 GICXXPred_Simple_IsRule125Enabled,
2441 GICXXPred_Simple_IsRule126Enabled,
2442 GICXXPred_Simple_IsRule127Enabled,
2443 GICXXPred_Simple_IsRule128Enabled,
2444 GICXXPred_Simple_IsRule129Enabled,
2445 GICXXPred_Simple_IsRule130Enabled,
2446 GICXXPred_Simple_IsRule131Enabled,
2447 GICXXPred_Simple_IsRule132Enabled,
2448 GICXXPred_Simple_IsRule133Enabled,
2449 GICXXPred_Simple_IsRule134Enabled,
2450 GICXXPred_Simple_IsRule135Enabled,
2451 GICXXPred_Simple_IsRule136Enabled,
2452 GICXXPred_Simple_IsRule137Enabled,
2453 GICXXPred_Simple_IsRule138Enabled,
2454 GICXXPred_Simple_IsRule139Enabled,
2455 GICXXPred_Simple_IsRule140Enabled,
2456 GICXXPred_Simple_IsRule141Enabled,
2457 GICXXPred_Simple_IsRule142Enabled,
2458 GICXXPred_Simple_IsRule143Enabled,
2459 GICXXPred_Simple_IsRule144Enabled,
2460 GICXXPred_Simple_IsRule145Enabled,
2461 GICXXPred_Simple_IsRule146Enabled,
2462 GICXXPred_Simple_IsRule147Enabled,
2463 GICXXPred_Simple_IsRule148Enabled,
2464 GICXXPred_Simple_IsRule149Enabled,
2465 GICXXPred_Simple_IsRule150Enabled,
2466 GICXXPred_Simple_IsRule151Enabled,
2467 GICXXPred_Simple_IsRule152Enabled,
2468 GICXXPred_Simple_IsRule153Enabled,
2469 GICXXPred_Simple_IsRule154Enabled,
2470 GICXXPred_Simple_IsRule155Enabled,
2471 GICXXPred_Simple_IsRule156Enabled,
2472 GICXXPred_Simple_IsRule157Enabled,
2473 GICXXPred_Simple_IsRule158Enabled,
2474 GICXXPred_Simple_IsRule159Enabled,
2475 GICXXPred_Simple_IsRule160Enabled,
2476 GICXXPred_Simple_IsRule161Enabled,
2477 GICXXPred_Simple_IsRule162Enabled,
2478 GICXXPred_Simple_IsRule163Enabled,
2479 GICXXPred_Simple_IsRule164Enabled,
2480 GICXXPred_Simple_IsRule165Enabled,
2481 GICXXPred_Simple_IsRule166Enabled,
2482 GICXXPred_Simple_IsRule167Enabled,
2483 GICXXPred_Simple_IsRule168Enabled,
2484 GICXXPred_Simple_IsRule169Enabled,
2485 GICXXPred_Simple_IsRule170Enabled,
2486 GICXXPred_Simple_IsRule171Enabled,
2487 GICXXPred_Simple_IsRule172Enabled,
2488 GICXXPred_Simple_IsRule173Enabled,
2489 GICXXPred_Simple_IsRule174Enabled,
2490 GICXXPred_Simple_IsRule175Enabled,
2491 GICXXPred_Simple_IsRule176Enabled,
2492 GICXXPred_Simple_IsRule177Enabled,
2493 GICXXPred_Simple_IsRule178Enabled,
2494 GICXXPred_Simple_IsRule179Enabled,
2495 GICXXPred_Simple_IsRule180Enabled,
2496 GICXXPred_Simple_IsRule181Enabled,
2497 GICXXPred_Simple_IsRule182Enabled,
2498 GICXXPred_Simple_IsRule183Enabled,
2499 GICXXPred_Simple_IsRule184Enabled,
2500 GICXXPred_Simple_IsRule185Enabled,
2501 GICXXPred_Simple_IsRule186Enabled,
2502 GICXXPred_Simple_IsRule187Enabled,
2503 GICXXPred_Simple_IsRule188Enabled,
2504 GICXXPred_Simple_IsRule189Enabled,
2505 GICXXPred_Simple_IsRule190Enabled,
2506 GICXXPred_Simple_IsRule191Enabled,
2507 GICXXPred_Simple_IsRule192Enabled,
2508 GICXXPred_Simple_IsRule193Enabled,
2509 GICXXPred_Simple_IsRule194Enabled,
2510 GICXXPred_Simple_IsRule195Enabled,
2511 GICXXPred_Simple_IsRule196Enabled,
2512 GICXXPred_Simple_IsRule197Enabled,
2513 GICXXPred_Simple_IsRule198Enabled,
2514 GICXXPred_Simple_IsRule199Enabled,
2515 GICXXPred_Simple_IsRule200Enabled,
2516 GICXXPred_Simple_IsRule201Enabled,
2517 GICXXPred_Simple_IsRule202Enabled,
2518 GICXXPred_Simple_IsRule203Enabled,
2519 GICXXPred_Simple_IsRule204Enabled,
2520 GICXXPred_Simple_IsRule205Enabled,
2521 GICXXPred_Simple_IsRule206Enabled,
2522 GICXXPred_Simple_IsRule207Enabled,
2523 GICXXPred_Simple_IsRule208Enabled,
2524 GICXXPred_Simple_IsRule209Enabled,
2525 GICXXPred_Simple_IsRule210Enabled,
2526 GICXXPred_Simple_IsRule211Enabled,
2527 GICXXPred_Simple_IsRule212Enabled,
2528 GICXXPred_Simple_IsRule213Enabled,
2529 GICXXPred_Simple_IsRule214Enabled,
2530 GICXXPred_Simple_IsRule215Enabled,
2531 GICXXPred_Simple_IsRule216Enabled,
2532 GICXXPred_Simple_IsRule217Enabled,
2533 GICXXPred_Simple_IsRule218Enabled,
2534 GICXXPred_Simple_IsRule219Enabled,
2535 GICXXPred_Simple_IsRule220Enabled,
2536 GICXXPred_Simple_IsRule221Enabled,
2537 GICXXPred_Simple_IsRule222Enabled,
2538 GICXXPred_Simple_IsRule223Enabled,
2539 GICXXPred_Simple_IsRule224Enabled,
2540 GICXXPred_Simple_IsRule225Enabled,
2541 GICXXPred_Simple_IsRule226Enabled,
2542 GICXXPred_Simple_IsRule227Enabled,
2543 GICXXPred_Simple_IsRule228Enabled,
2544 GICXXPred_Simple_IsRule229Enabled,
2545 GICXXPred_Simple_IsRule230Enabled,
2546 GICXXPred_Simple_IsRule231Enabled,
2547 GICXXPred_Simple_IsRule232Enabled,
2548 GICXXPred_Simple_IsRule233Enabled,
2549 GICXXPred_Simple_IsRule234Enabled,
2550 GICXXPred_Simple_IsRule235Enabled,
2551 GICXXPred_Simple_IsRule236Enabled,
2552 GICXXPred_Simple_IsRule237Enabled,
2553 GICXXPred_Simple_IsRule238Enabled,
2554 GICXXPred_Simple_IsRule239Enabled,
2555 GICXXPred_Simple_IsRule240Enabled,
2556 GICXXPred_Simple_IsRule241Enabled,
2557 GICXXPred_Simple_IsRule242Enabled,
2558 GICXXPred_Simple_IsRule243Enabled,
2559 GICXXPred_Simple_IsRule244Enabled,
2560 GICXXPred_Simple_IsRule245Enabled,
2561 GICXXPred_Simple_IsRule246Enabled,
2562 GICXXPred_Simple_IsRule247Enabled,
2563 GICXXPred_Simple_IsRule248Enabled,
2564 GICXXPred_Simple_IsRule249Enabled,
2565 GICXXPred_Simple_IsRule250Enabled,
2566 GICXXPred_Simple_IsRule251Enabled,
2567 GICXXPred_Simple_IsRule252Enabled,
2568 GICXXPred_Simple_IsRule253Enabled,
2569 GICXXPred_Simple_IsRule254Enabled,
2570 GICXXPred_Simple_IsRule255Enabled,
2571 GICXXPred_Simple_IsRule256Enabled,
2572 GICXXPred_Simple_IsRule257Enabled,
2573 GICXXPred_Simple_IsRule258Enabled,
2574 GICXXPred_Simple_IsRule259Enabled,
2575 GICXXPred_Simple_IsRule260Enabled,
2576 GICXXPred_Simple_IsRule261Enabled,
2577 GICXXPred_Simple_IsRule262Enabled,
2578 GICXXPred_Simple_IsRule263Enabled,
2579 GICXXPred_Simple_IsRule264Enabled,
2580 GICXXPred_Simple_IsRule265Enabled,
2581 GICXXPred_Simple_IsRule266Enabled,
2582 GICXXPred_Simple_IsRule267Enabled,
2583 GICXXPred_Simple_IsRule268Enabled,
2584 GICXXPred_Simple_IsRule269Enabled,
2585 GICXXPred_Simple_IsRule270Enabled,
2586 GICXXPred_Simple_IsRule271Enabled,
2587 GICXXPred_Simple_IsRule272Enabled,
2588 GICXXPred_Simple_IsRule273Enabled,
2589 GICXXPred_Simple_IsRule274Enabled,
2590 GICXXPred_Simple_IsRule275Enabled,
2591 GICXXPred_Simple_IsRule276Enabled,
2592 GICXXPred_Simple_IsRule277Enabled,
2593 GICXXPred_Simple_IsRule278Enabled,
2594 GICXXPred_Simple_IsRule279Enabled,
2595 GICXXPred_Simple_IsRule280Enabled,
2596 GICXXPred_Simple_IsRule281Enabled,
2597 GICXXPred_Simple_IsRule282Enabled,
2598 GICXXPred_Simple_IsRule283Enabled,
2599 GICXXPred_Simple_IsRule284Enabled,
2600 GICXXPred_Simple_IsRule285Enabled,
2601 GICXXPred_Simple_IsRule286Enabled,
2602 GICXXPred_Simple_IsRule287Enabled,
2603 GICXXPred_Simple_IsRule288Enabled,
2604 GICXXPred_Simple_IsRule289Enabled,
2605 GICXXPred_Simple_IsRule290Enabled,
2606 GICXXPred_Simple_IsRule291Enabled,
2607 GICXXPred_Simple_IsRule292Enabled,
2608 GICXXPred_Simple_IsRule293Enabled,
2609 GICXXPred_Simple_IsRule294Enabled,
2610 GICXXPred_Simple_IsRule295Enabled,
2611 GICXXPred_Simple_IsRule296Enabled,
2612 GICXXPred_Simple_IsRule297Enabled,
2613};
2614
2615bool AArch64PreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2616 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2617}
2618// Custom renderers.
2619enum {
2620 GICR_Invalid,
2621};
2622AArch64PreLegalizerCombinerImpl::CustomRendererFn
2623AArch64PreLegalizerCombinerImpl::CustomRenderers[] = {
2624 nullptr, // GICR_Invalid
2625};
2626
2627bool AArch64PreLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
2628 switch (Opc) {
2629 case TargetOpcode::G_FCMP:
2630 case TargetOpcode::G_FMA:
2631 case TargetOpcode::G_FMAD:
2632 case TargetOpcode::G_FSHL:
2633 case TargetOpcode::G_FSHR:
2634 case TargetOpcode::G_ICMP:
2635 case TargetOpcode::G_INSERT_VECTOR_ELT:
2636 case TargetOpcode::G_MEMCPY:
2637 case TargetOpcode::G_MEMMOVE:
2638 case TargetOpcode::G_MEMSET:
2639 case TargetOpcode::G_SELECT:
2640 case TargetOpcode::G_SHUFFLE_VECTOR:
2641 case TargetOpcode::G_UADDO:
2642 case TargetOpcode::G_ADD:
2643 case TargetOpcode::G_AND:
2644 case TargetOpcode::G_ASHR:
2645 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
2646 case TargetOpcode::G_FADD:
2647 case TargetOpcode::G_FCOPYSIGN:
2648 case TargetOpcode::G_FDIV:
2649 case TargetOpcode::G_FMAXIMUM:
2650 case TargetOpcode::G_FMAXIMUMNUM:
2651 case TargetOpcode::G_FMAXNUM:
2652 case TargetOpcode::G_FMINIMUM:
2653 case TargetOpcode::G_FMINIMUMNUM:
2654 case TargetOpcode::G_FMINNUM:
2655 case TargetOpcode::G_FMUL:
2656 case TargetOpcode::G_FPOWI:
2657 case TargetOpcode::G_FREM:
2658 case TargetOpcode::G_FSUB:
2659 case TargetOpcode::G_LSHR:
2660 case TargetOpcode::G_MEMCPY_INLINE:
2661 case TargetOpcode::G_MEMSET_INLINE:
2662 case TargetOpcode::G_MERGE_VALUES:
2663 case TargetOpcode::G_MUL:
2664 case TargetOpcode::G_OR:
2665 case TargetOpcode::G_PTR_ADD:
2666 case TargetOpcode::G_ROTL:
2667 case TargetOpcode::G_ROTR:
2668 case TargetOpcode::G_SDIV:
2669 case TargetOpcode::G_SEXT_INREG:
2670 case TargetOpcode::G_SHL:
2671 case TargetOpcode::G_SREM:
2672 case TargetOpcode::G_SUB:
2673 case TargetOpcode::G_UDIV:
2674 case TargetOpcode::G_UMULH:
2675 case TargetOpcode::G_UREM:
2676 case TargetOpcode::G_XOR:
2677 case TargetOpcode::COPY:
2678 case TargetOpcode::G_ABS:
2679 case TargetOpcode::G_ANYEXT:
2680 case TargetOpcode::G_BITCAST:
2681 case TargetOpcode::G_BITREVERSE:
2682 case TargetOpcode::G_BSWAP:
2683 case TargetOpcode::G_BUILD_VECTOR:
2684 case TargetOpcode::G_CONCAT_VECTORS:
2685 case TargetOpcode::G_CTLZ:
2686 case TargetOpcode::G_CTLZ_ZERO_POISON:
2687 case TargetOpcode::G_CTPOP:
2688 case TargetOpcode::G_CTTZ:
2689 case TargetOpcode::G_CTTZ_ZERO_POISON:
2690 case TargetOpcode::G_FABS:
2691 case TargetOpcode::G_FCANONICALIZE:
2692 case TargetOpcode::G_FCEIL:
2693 case TargetOpcode::G_FFLOOR:
2694 case TargetOpcode::G_FLOG2:
2695 case TargetOpcode::G_FNEARBYINT:
2696 case TargetOpcode::G_FNEG:
2697 case TargetOpcode::G_FPEXT:
2698 case TargetOpcode::G_FPTOSI:
2699 case TargetOpcode::G_FPTOUI:
2700 case TargetOpcode::G_FPTRUNC:
2701 case TargetOpcode::G_FREEZE:
2702 case TargetOpcode::G_FRINT:
2703 case TargetOpcode::G_FSQRT:
2704 case TargetOpcode::G_INTRINSIC_ROUND:
2705 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
2706 case TargetOpcode::G_INTRINSIC_TRUNC:
2707 case TargetOpcode::G_INTTOPTR:
2708 case TargetOpcode::G_PHI:
2709 case TargetOpcode::G_PTRTOINT:
2710 case TargetOpcode::G_SEXT:
2711 case TargetOpcode::G_SITOFP:
2712 case TargetOpcode::G_TRUNC:
2713 case TargetOpcode::G_TRUNC_USAT_U:
2714 case TargetOpcode::G_UITOFP:
2715 case TargetOpcode::G_ZEXT:
2716 case TargetOpcode::G_BR:
2717 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
2718 case TargetOpcode::G_FMAXNUM_IEEE:
2719 case TargetOpcode::G_FMINNUM_IEEE:
2720 case TargetOpcode::G_GLOBAL_VALUE:
2721 case TargetOpcode::G_LOAD:
2722 case TargetOpcode::G_SADDE:
2723 case TargetOpcode::G_SADDO:
2724 case TargetOpcode::G_SADDSAT:
2725 case TargetOpcode::G_SEXTLOAD:
2726 case TargetOpcode::G_SMAX:
2727 case TargetOpcode::G_SMIN:
2728 case TargetOpcode::G_SMULFIX:
2729 case TargetOpcode::G_SMULFIXSAT:
2730 case TargetOpcode::G_SMULH:
2731 case TargetOpcode::G_SMULO:
2732 case TargetOpcode::G_SSHLSAT:
2733 case TargetOpcode::G_SSUBE:
2734 case TargetOpcode::G_SSUBO:
2735 case TargetOpcode::G_STORE:
2736 case TargetOpcode::G_UADDE:
2737 case TargetOpcode::G_UADDSAT:
2738 case TargetOpcode::G_UMAX:
2739 case TargetOpcode::G_UMIN:
2740 case TargetOpcode::G_UMULFIX:
2741 case TargetOpcode::G_UMULFIXSAT:
2742 case TargetOpcode::G_UMULO:
2743 case TargetOpcode::G_UNMERGE_VALUES:
2744 case TargetOpcode::G_USHLSAT:
2745 case TargetOpcode::G_USUBE:
2746 case TargetOpcode::G_USUBO:
2747 case TargetOpcode::G_VECREDUCE_ADD:
2748 case TargetOpcode::G_ZEXTLOAD:
2749 return true;
2750 default:
2751 return false;
2752 }
2753}
2754
2755uint32_t AArch64PreLegalizerCombinerImpl::getRootFlagsToDrop() const {
2756 return MachineInstr::getPoisonGeneratingFlags();
2757}
2758
2759bool AArch64PreLegalizerCombinerImpl::tryCombineAllImpl(MachineInstr &I) const {
2760 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2761 State.MIs.clear();
2762 State.MIs.push_back(&I);
2763 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2764 return true;
2765 }
2766
2767 return false;
2768}
2769
2770enum {
2771 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2772 GICXXCustomAction_GICombiner1,
2773 GICXXCustomAction_GICombiner2,
2774 GICXXCustomAction_GICombiner3,
2775 GICXXCustomAction_GICombiner4,
2776 GICXXCustomAction_GICombiner5,
2777 GICXXCustomAction_GICombiner6,
2778 GICXXCustomAction_GICombiner7,
2779 GICXXCustomAction_GICombiner8,
2780 GICXXCustomAction_GICombiner9,
2781 GICXXCustomAction_GICombiner10,
2782 GICXXCustomAction_GICombiner11,
2783 GICXXCustomAction_GICombiner12,
2784 GICXXCustomAction_GICombiner13,
2785 GICXXCustomAction_GICombiner14,
2786 GICXXCustomAction_GICombiner15,
2787 GICXXCustomAction_GICombiner16,
2788 GICXXCustomAction_GICombiner17,
2789 GICXXCustomAction_GICombiner18,
2790 GICXXCustomAction_GICombiner19,
2791 GICXXCustomAction_GICombiner20,
2792 GICXXCustomAction_GICombiner21,
2793 GICXXCustomAction_GICombiner22,
2794 GICXXCustomAction_GICombiner23,
2795 GICXXCustomAction_GICombiner24,
2796 GICXXCustomAction_GICombiner25,
2797 GICXXCustomAction_GICombiner26,
2798 GICXXCustomAction_GICombiner27,
2799 GICXXCustomAction_GICombiner28,
2800 GICXXCustomAction_GICombiner29,
2801 GICXXCustomAction_GICombiner30,
2802 GICXXCustomAction_GICombiner31,
2803 GICXXCustomAction_GICombiner32,
2804 GICXXCustomAction_GICombiner33,
2805 GICXXCustomAction_GICombiner34,
2806 GICXXCustomAction_GICombiner35,
2807 GICXXCustomAction_GICombiner36,
2808 GICXXCustomAction_GICombiner37,
2809 GICXXCustomAction_GICombiner38,
2810 GICXXCustomAction_GICombiner39,
2811 GICXXCustomAction_GICombiner40,
2812 GICXXCustomAction_GICombiner41,
2813 GICXXCustomAction_GICombiner42,
2814 GICXXCustomAction_GICombiner43,
2815 GICXXCustomAction_GICombiner44,
2816 GICXXCustomAction_GICombiner45,
2817 GICXXCustomAction_GICombiner46,
2818 GICXXCustomAction_GICombiner47,
2819 GICXXCustomAction_GICombiner48,
2820 GICXXCustomAction_GICombiner49,
2821 GICXXCustomAction_GICombiner50,
2822 GICXXCustomAction_GICombiner51,
2823 GICXXCustomAction_GICombiner52,
2824 GICXXCustomAction_GICombiner53,
2825 GICXXCustomAction_GICombiner54,
2826 GICXXCustomAction_GICombiner55,
2827 GICXXCustomAction_GICombiner56,
2828 GICXXCustomAction_GICombiner57,
2829 GICXXCustomAction_GICombiner58,
2830 GICXXCustomAction_GICombiner59,
2831 GICXXCustomAction_GICombiner60,
2832 GICXXCustomAction_GICombiner61,
2833 GICXXCustomAction_GICombiner62,
2834 GICXXCustomAction_GICombiner63,
2835 GICXXCustomAction_GICombiner64,
2836 GICXXCustomAction_GICombiner65,
2837 GICXXCustomAction_GICombiner66,
2838 GICXXCustomAction_GICombiner67,
2839 GICXXCustomAction_GICombiner68,
2840 GICXXCustomAction_GICombiner69,
2841 GICXXCustomAction_GICombiner70,
2842 GICXXCustomAction_GICombiner71,
2843 GICXXCustomAction_GICombiner72,
2844 GICXXCustomAction_GICombiner73,
2845 GICXXCustomAction_GICombiner74,
2846 GICXXCustomAction_GICombiner75,
2847 GICXXCustomAction_GICombiner76,
2848 GICXXCustomAction_GICombiner77,
2849 GICXXCustomAction_GICombiner78,
2850 GICXXCustomAction_GICombiner79,
2851 GICXXCustomAction_GICombiner80,
2852 GICXXCustomAction_GICombiner81,
2853 GICXXCustomAction_GICombiner82,
2854 GICXXCustomAction_GICombiner83,
2855 GICXXCustomAction_GICombiner84,
2856 GICXXCustomAction_GICombiner85,
2857 GICXXCustomAction_GICombiner86,
2858 GICXXCustomAction_GICombiner87,
2859 GICXXCustomAction_GICombiner88,
2860 GICXXCustomAction_GICombiner89,
2861 GICXXCustomAction_GICombiner90,
2862 GICXXCustomAction_GICombiner91,
2863 GICXXCustomAction_GICombiner92,
2864 GICXXCustomAction_GICombiner93,
2865 GICXXCustomAction_GICombiner94,
2866 GICXXCustomAction_GICombiner95,
2867 GICXXCustomAction_GICombiner96,
2868 GICXXCustomAction_GICombiner97,
2869 GICXXCustomAction_GICombiner98,
2870 GICXXCustomAction_GICombiner99,
2871 GICXXCustomAction_GICombiner100,
2872 GICXXCustomAction_GICombiner101,
2873 GICXXCustomAction_GICombiner102,
2874 GICXXCustomAction_GICombiner103,
2875 GICXXCustomAction_GICombiner104,
2876 GICXXCustomAction_GICombiner105,
2877 GICXXCustomAction_GICombiner106,
2878 GICXXCustomAction_GICombiner107,
2879 GICXXCustomAction_GICombiner108,
2880 GICXXCustomAction_GICombiner109,
2881 GICXXCustomAction_GICombiner110,
2882 GICXXCustomAction_GICombiner111,
2883 GICXXCustomAction_GICombiner112,
2884 GICXXCustomAction_GICombiner113,
2885 GICXXCustomAction_GICombiner114,
2886 GICXXCustomAction_GICombiner115,
2887 GICXXCustomAction_GICombiner116,
2888 GICXXCustomAction_GICombiner117,
2889 GICXXCustomAction_GICombiner118,
2890 GICXXCustomAction_GICombiner119,
2891 GICXXCustomAction_GICombiner120,
2892 GICXXCustomAction_GICombiner121,
2893 GICXXCustomAction_GICombiner122,
2894 GICXXCustomAction_GICombiner123,
2895 GICXXCustomAction_GICombiner124,
2896 GICXXCustomAction_GICombiner125,
2897 GICXXCustomAction_GICombiner126,
2898 GICXXCustomAction_GICombiner127,
2899 GICXXCustomAction_GICombiner128,
2900 GICXXCustomAction_GICombiner129,
2901 GICXXCustomAction_GICombiner130,
2902 GICXXCustomAction_GICombiner131,
2903 GICXXCustomAction_GICombiner132,
2904 GICXXCustomAction_GICombiner133,
2905 GICXXCustomAction_GICombiner134,
2906 GICXXCustomAction_GICombiner135,
2907 GICXXCustomAction_GICombiner136,
2908 GICXXCustomAction_GICombiner137,
2909 GICXXCustomAction_GICombiner138,
2910 GICXXCustomAction_GICombiner139,
2911 GICXXCustomAction_GICombiner140,
2912 GICXXCustomAction_GICombiner141,
2913 GICXXCustomAction_GICombiner142,
2914 GICXXCustomAction_GICombiner143,
2915 GICXXCustomAction_GICombiner144,
2916 GICXXCustomAction_GICombiner145,
2917 GICXXCustomAction_GICombiner146,
2918 GICXXCustomAction_GICombiner147,
2919 GICXXCustomAction_GICombiner148,
2920 GICXXCustomAction_GICombiner149,
2921 GICXXCustomAction_GICombiner150,
2922 GICXXCustomAction_GICombiner151,
2923 GICXXCustomAction_GICombiner152,
2924 GICXXCustomAction_GICombiner153,
2925 GICXXCustomAction_GICombiner154,
2926 GICXXCustomAction_GICombiner155,
2927 GICXXCustomAction_GICombiner156,
2928 GICXXCustomAction_GICombiner157,
2929 GICXXCustomAction_GICombiner158,
2930};
2931bool AArch64PreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2932 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2933 switch(ApplyID) {
2934 case GICXXCustomAction_GICombiner0:{
2935 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2936 // Match Patterns
2937 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2938 return false;
2939 }
2940 // Apply Patterns
2941 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2942 return true;
2943 }
2944 case GICXXCustomAction_GICombiner1:{
2945 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2946 // Match Patterns
2947 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2948 return false;
2949 }
2950 // Apply Patterns
2951 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2952 return true;
2953 }
2954 case GICXXCustomAction_GICombiner2:{
2955 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2956 // Match Patterns
2957 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2958 return false;
2959 }
2960 // Apply Patterns
2961 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2962 return true;
2963 }
2964 case GICXXCustomAction_GICombiner3:{
2965 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2966 // Match Patterns
2967 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2968 return false;
2969 }
2970 // Apply Patterns
2971 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2972 return true;
2973 }
2974 case GICXXCustomAction_GICombiner4:{
2975 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2976 // Match Patterns
2977 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2978 return false;
2979 }
2980 // Apply Patterns
2981 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2982 return true;
2983 }
2984 case GICXXCustomAction_GICombiner5:{
2985 // Match Patterns
2986 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2987 return false;
2988 }
2989 // Apply Patterns
2990 Helper.applyCombineCopy(*State.MIs[0]);
2991 return true;
2992 }
2993 case GICXXCustomAction_GICombiner6:{
2994 unsigned GIMatchData_matchinfo;
2995 // Match Patterns
2996 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2997 return false;
2998 }
2999 // Apply Patterns
3000 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
3001 return true;
3002 }
3003 case GICXXCustomAction_GICombiner7:{
3004 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3005 // Match Patterns
3006 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3007 return false;
3008 }
3009 // Apply Patterns
3010 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3011 return true;
3012 }
3013 case GICXXCustomAction_GICombiner8:{
3014 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3015 // Match Patterns
3016 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
3017 return false;
3018 }
3019 // Apply Patterns
3020 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3021 return true;
3022 }
3023 case GICXXCustomAction_GICombiner9:{
3024 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3025 // Match Patterns
3026 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
3027 return false;
3028 }
3029 // Apply Patterns
3030 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3031 return true;
3032 }
3033 case GICXXCustomAction_GICombiner10:{
3034 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3035 // Match Patterns
3036 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3037 return false;
3038 }
3039 // Apply Patterns
3040 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3041 return true;
3042 }
3043 case GICXXCustomAction_GICombiner11:{
3044 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3045 // Match Patterns
3046 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
3047 GIMatchData_matchinfo);}()) {
3048 return false;
3049 }
3050 // Apply Patterns
3051 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3052 return true;
3053 }
3054 case GICXXCustomAction_GICombiner12:{
3055 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3056 // Match Patterns
3057 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3058 return false;
3059 }
3060 // Apply Patterns
3061 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3062 return true;
3063 }
3064 case GICXXCustomAction_GICombiner13:{
3065 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3066 // Match Patterns
3067 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
3068 GIMatchData_matchinfo);}()) {
3069 return false;
3070 }
3071 // Apply Patterns
3072 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3073 return true;
3074 }
3075 case GICXXCustomAction_GICombiner14:{
3076 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3077 // Match Patterns
3078 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3079 return false;
3080 }
3081 // Apply Patterns
3082 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3083 return true;
3084 }
3085 case GICXXCustomAction_GICombiner15:{
3086 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3087 // Match Patterns
3088 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3089 return false;
3090 }
3091 // Apply Patterns
3092 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3093 return true;
3094 }
3095 case GICXXCustomAction_GICombiner16:{
3096 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3097 // Match Patterns
3098 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3099 return false;
3100 }
3101 // Apply Patterns
3102 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3103 return true;
3104 }
3105 case GICXXCustomAction_GICombiner17:{
3106 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3107 // Match Patterns
3108 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3109 return false;
3110 }
3111 // Apply Patterns
3112 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3113 return true;
3114 }
3115 case GICXXCustomAction_GICombiner18:{
3116 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3117 // Match Patterns
3118 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
3119 return false;
3120 }
3121 // Apply Patterns
3122 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3123 return true;
3124 }
3125 case GICXXCustomAction_GICombiner19:{
3126 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3127 // Match Patterns
3128 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3129 return false;
3130 }
3131 // Apply Patterns
3132 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3133 return true;
3134 }
3135 case GICXXCustomAction_GICombiner20:{
3136 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3137 // Match Patterns
3138 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3139 return false;
3140 }
3141 // Apply Patterns
3142 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3143 return true;
3144 }
3145 case GICXXCustomAction_GICombiner21:{
3146 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3147 // Match Patterns
3148 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3149 return false;
3150 }
3151 // Apply Patterns
3152 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3153 return true;
3154 }
3155 case GICXXCustomAction_GICombiner22:{
3156 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3157 // Match Patterns
3158 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3159 return false;
3160 }
3161 // Apply Patterns
3162 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3163 return true;
3164 }
3165 case GICXXCustomAction_GICombiner23:{
3166 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3167 // Match Patterns
3168 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3169 return false;
3170 }
3171 // Apply Patterns
3172 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3173 return true;
3174 }
3175 case GICXXCustomAction_GICombiner24:{
3176 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3177 // Match Patterns
3178 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
3179 return false;
3180 }
3181 // Apply Patterns
3182 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3183 return true;
3184 }
3185 case GICXXCustomAction_GICombiner25:{
3186 APInt GIMatchData_matchinfo;
3187 // Match Patterns
3188 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
3189 return false;
3190 }
3191 // Apply Patterns
3192 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3193 return true;
3194 }
3195 case GICXXCustomAction_GICombiner26:{
3196 SmallVector<Register> GIMatchData_info;
3197 // Match Patterns
3198 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
3199 return false;
3200 }
3201 // Apply Patterns
3202 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
3203 return true;
3204 }
3205 case GICXXCustomAction_GICombiner27:{
3206 Register GIMatchData_matchinfo;
3207 // Match Patterns
3208 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
3209 return false;
3210 }
3211 // Apply Patterns
3212 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
3213 return true;
3214 }
3215 case GICXXCustomAction_GICombiner28:{
3216 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
3217 // Match Patterns
3218 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3219 return false;
3220 }
3221 // Apply Patterns
3222 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
3223 return true;
3224 }
3225 case GICXXCustomAction_GICombiner29:{
3226 PreferredTuple GIMatchData_matchinfo;
3227 // Match Patterns
3228 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
3229 return false;
3230 }
3231 // Apply Patterns
3232 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
3233 return true;
3234 }
3235 case GICXXCustomAction_GICombiner30:{
3236 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3237 // Match Patterns
3238 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3239 return false;
3240 }
3241 // Apply Patterns
3242 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3243 return true;
3244 }
3245 case GICXXCustomAction_GICombiner31:{
3246 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3247 // Match Patterns
3248 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3249 return false;
3250 }
3251 // Apply Patterns
3252 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3253 return true;
3254 }
3255 case GICXXCustomAction_GICombiner32:{
3256 // Apply Patterns
3257 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3258 return true;
3259 }
3260 case GICXXCustomAction_GICombiner33:{
3261 // Apply Patterns
3262 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), 0);
3263 return true;
3264 }
3265 case GICXXCustomAction_GICombiner34:{
3266 // Apply Patterns
3267 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), -1);
3268 return true;
3269 }
3270 case GICXXCustomAction_GICombiner35:{
3271 // Apply Patterns
3272 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
3273 return true;
3274 }
3275 case GICXXCustomAction_GICombiner36:{
3276 // Match Patterns
3277 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
3278 return false;
3279 }
3280 // Apply Patterns
3281 Helper.replaceInstWithUndef(*State.MIs[0]);
3282 return true;
3283 }
3284 case GICXXCustomAction_GICombiner37:{
3285 // Match Patterns
3286 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
3287 return false;
3288 }
3289 // Apply Patterns
3290 Helper.eraseInst(*State.MIs[0]);
3291 return true;
3292 }
3293 case GICXXCustomAction_GICombiner38:{
3294 // Match Patterns
3295 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
3296 return false;
3297 }
3298 // Apply Patterns
3299 Helper.replaceInstWithUndef(*State.MIs[0]);
3300 return true;
3301 }
3302 case GICXXCustomAction_GICombiner39:{
3303 Register GIMatchData_info;
3304 // Match Patterns
3305 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
3306 return false;
3307 }
3308 // Apply Patterns
3309 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
3310 return true;
3311 }
3312 case GICXXCustomAction_GICombiner40:{
3313 Register GIMatchData_matchinfo;
3314 // Match Patterns
3315 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3316 return false;
3317 }
3318 // Apply Patterns
3319 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3320 return true;
3321 }
3322 case GICXXCustomAction_GICombiner41:{
3323 Register GIMatchData_matchinfo;
3324 // Match Patterns
3325 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3326 return false;
3327 }
3328 // Apply Patterns
3329 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3330 return true;
3331 }
3332 case GICXXCustomAction_GICombiner42:{
3333 Register GIMatchData_matchinfo;
3334 // Match Patterns
3335 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3336 return false;
3337 }
3338 // Apply Patterns
3339 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3340 return true;
3341 }
3342 case GICXXCustomAction_GICombiner43:{
3343 Register GIMatchData_matchinfo;
3344 // Match Patterns
3345 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
3346 return false;
3347 }
3348 // Apply Patterns
3349 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3350 return true;
3351 }
3352 case GICXXCustomAction_GICombiner44:{
3353 // Match Patterns
3354 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
3355 return false;
3356 }
3357 // Apply Patterns
3358 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
3359 return true;
3360 }
3361 case GICXXCustomAction_GICombiner45:{
3362 MachineInstr* GIMatchData_matchinfo;
3363 // Match Patterns
3364 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
3365 return false;
3366 }
3367 // Apply Patterns
3368 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
3369 return true;
3370 }
3371 case GICXXCustomAction_GICombiner46:{
3372 InstructionStepsMatchInfo GIMatchData_info;
3373 // Match Patterns
3374 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
3375 return false;
3376 }
3377 // Apply Patterns
3378 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
3379 return true;
3380 }
3381 case GICXXCustomAction_GICombiner47:{
3382 std::optional<int64_t> GIMatchData_matchinfo;
3383 // Match Patterns
3384 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
3385 return false;
3386 }
3387 // Apply Patterns
3388 if (GIMatchData_matchinfo) {
3389 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
3390 } else {
3391 Helper.replaceInstWithUndef(*State.MIs[0]);
3392 }
3393 return true;
3394 }
3395 case GICXXCustomAction_GICombiner48:{
3396 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3397 // Match Patterns
3398 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3399 return false;
3400 }
3401 // Apply Patterns
3402 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3403 return true;
3404 }
3405 case GICXXCustomAction_GICombiner49:{
3406 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3407 // Match Patterns
3408 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3409 return false;
3410 }
3411 // Apply Patterns
3412 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3413 return true;
3414 }
3415 case GICXXCustomAction_GICombiner50:{
3416 PtrAddChain GIMatchData_matchinfo;
3417 // Match Patterns
3418 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3419 return false;
3420 }
3421 // Apply Patterns
3422 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3423 return true;
3424 }
3425 case GICXXCustomAction_GICombiner51:{
3426 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3427 // Match Patterns
3428 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3429 return false;
3430 }
3431 // Apply Patterns
3432 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3433 return true;
3434 }
3435 case GICXXCustomAction_GICombiner52:{
3436 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3437 // Match Patterns
3438 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3439 return false;
3440 }
3441 // Apply Patterns
3442 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3443 return true;
3444 }
3445 case GICXXCustomAction_GICombiner53:{
3446 int64_t GIMatchData_matchinfo;
3447 // Match Patterns
3448 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
3449 return false;
3450 }
3451 // Apply Patterns
3452 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3453 return true;
3454 }
3455 case GICXXCustomAction_GICombiner54:{
3456 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3457 // Match Patterns
3458 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
3459 return false;
3460 }
3461 // Apply Patterns
3462 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3463 return true;
3464 }
3465 case GICXXCustomAction_GICombiner55:{
3466 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3467 // Match Patterns
3468 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
3469 return false;
3470 }
3471 // Apply Patterns
3472 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3473 return true;
3474 }
3475 case GICXXCustomAction_GICombiner56:{
3476 std::tuple<Register, int64_t> GIMatchData_info;
3477 // Match Patterns
3478 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
3479 return false;
3480 }
3481 // Apply Patterns
3482 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
3483 return true;
3484 }
3485 case GICXXCustomAction_GICombiner57:{
3486 std::tuple<Register, unsigned> GIMatchData_matchinfo;
3487 // Match Patterns
3488 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
3489 return false;
3490 }
3491 // Apply Patterns
3492 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
3493 return true;
3494 }
3495 case GICXXCustomAction_GICombiner58:{
3496 RegisterImmPair GIMatchData_matchinfo;
3497 // Match Patterns
3498 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
3499 return false;
3500 }
3501 // Apply Patterns
3502 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
3503 return true;
3504 }
3505 case GICXXCustomAction_GICombiner59:{
3506 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3507 // Match Patterns
3508 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3509 return false;
3510 }
3511 // Apply Patterns
3512 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3513 return true;
3514 }
3515 case GICXXCustomAction_GICombiner60:{
3516 unsigned GIMatchData_matchinfo;
3517 // Match Patterns
3518 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3519 return false;
3520 }
3521 // Apply Patterns
3522 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
3523 return true;
3524 }
3525 case GICXXCustomAction_GICombiner61:{
3526 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3527 // Match Patterns
3528 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
3529 return false;
3530 }
3531 // Apply Patterns
3532 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
3533 return true;
3534 }
3535 case GICXXCustomAction_GICombiner62:{
3536 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3537 // Match Patterns
3538 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
3539 return false;
3540 }
3541 // Apply Patterns
3542 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3543 return true;
3544 }
3545 case GICXXCustomAction_GICombiner63:{
3546 // Match Patterns
3547 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
3548 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
3549 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
3550 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
3551 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
3552 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
3553 return false;
3554 }
3555 // Apply Patterns
3556 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
3557 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
3558 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
3559 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
3560 State.MIs[0]->eraseFromParent();
3561 return true;
3562 }
3563 case GICXXCustomAction_GICombiner64:{
3564 Register GIMatchData_matchinfo;
3565 // Match Patterns
3566 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3567 return false;
3568 }
3569 // Apply Patterns
3570 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3571 return true;
3572 }
3573 case GICXXCustomAction_GICombiner65:{
3574 Register GIMatchData_matchinfo;
3575 // Match Patterns
3576 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3577 return false;
3578 }
3579 // Apply Patterns
3580 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3581 return true;
3582 }
3583 case GICXXCustomAction_GICombiner66:{
3584 // Match Patterns
3585 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2));}()) {
3586 return false;
3587 }
3588 // Apply Patterns
3589 Helper.applySimplifyURemByPow2(*State.MIs[0]);
3590 return true;
3591 }
3592 case GICXXCustomAction_GICombiner67:{
3593 Register GIMatchData_matchinfo;
3594 // Match Patterns
3595 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
3596 return false;
3597 }
3598 // Apply Patterns
3599 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
3600 return true;
3601 }
3602 case GICXXCustomAction_GICombiner68:{
3603 // Match Patterns
3604 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
3605 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
3606 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
3607 return false;
3608 }
3609 // Apply Patterns
3610 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3611 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
3612 State.MIs[0]->eraseFromParent();
3613 return true;
3614 }
3615 case GICXXCustomAction_GICombiner69:{
3616 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
3617 // Match Patterns
3618 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3619 return false;
3620 }
3621 // Apply Patterns
3622 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
3623 return true;
3624 }
3625 case GICXXCustomAction_GICombiner70:{
3626 SmallVector<Register> GIMatchData_info;
3627 // Match Patterns
3628 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3629 return false;
3630 }
3631 // Apply Patterns
3632 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3633 return true;
3634 }
3635 case GICXXCustomAction_GICombiner71:{
3636 MachineInstr * GIMatchData_matchinfo;
3637 // Match Patterns
3638 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3639 return false;
3640 }
3641 // Apply Patterns
3642 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3643 return true;
3644 }
3645 case GICXXCustomAction_GICombiner72:{
3646 // Apply Patterns
3647 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3648 return true;
3649 }
3650 case GICXXCustomAction_GICombiner73:{
3651 APInt GIMatchData_info;
3652 // Match Patterns
3653 if(![&](){LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3654 APInt NewCst = State.MIs[2]->getOperand(1).getCImm()->getValue().zextOrTrunc(
3655 DstTy.getSizeInBits());
3656 NewCst += State.MIs[3]->getOperand(1).getCImm()->getValue().sextOrTrunc(
3657 DstTy.getSizeInBits());
3658 GIMatchData_info = NewCst;
3659 return true;}()) {
3660 return false;
3661 }
3662 // Apply Patterns
3663 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3664 Helper.getBuilder().buildConstant(State.MIs[0]->getOperand(0), GIMatchData_info);
3665 State.MIs[0]->eraseFromParent();
3666 return true;
3667 }
3668 case GICXXCustomAction_GICombiner74:{
3669 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3670 // Match Patterns
3671 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3672 return false;
3673 }
3674 // Apply Patterns
3675 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3676 return true;
3677 }
3678 case GICXXCustomAction_GICombiner75:{
3679 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3680 // Match Patterns
3681 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3682 return false;
3683 }
3684 // Apply Patterns
3685 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3686 return true;
3687 }
3688 case GICXXCustomAction_GICombiner76:{
3689 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3690 // Match Patterns
3691 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3692 return false;
3693 }
3694 // Apply Patterns
3695 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3696 return true;
3697 }
3698 case GICXXCustomAction_GICombiner77:{
3699 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3700 // Match Patterns
3701 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3702 return false;
3703 }
3704 // Apply Patterns
3705 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3706 return true;
3707 }
3708 case GICXXCustomAction_GICombiner78:{
3709 unsigned GIMatchData_info;
3710 // Match Patterns
3711 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3712 return false;
3713 }
3714 // Apply Patterns
3715 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3716 return true;
3717 }
3718 case GICXXCustomAction_GICombiner79:{
3719 // Match Patterns
3720 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3721 return false;
3722 }
3723 // Apply Patterns
3724 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3725 return true;
3726 }
3727 case GICXXCustomAction_GICombiner80:{
3728 std::pair<Register, Register> GIMatchData_matchinfo;
3729 // Match Patterns
3730 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3731 return false;
3732 }
3733 // Apply Patterns
3734 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3735 return true;
3736 }
3737 case GICXXCustomAction_GICombiner81:{
3738 RegisterImmPair GIMatchData_matchinfo;
3739 // Match Patterns
3740 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3741 return false;
3742 }
3743 // Apply Patterns
3744 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3745 return true;
3746 }
3747 case GICXXCustomAction_GICombiner82:{
3748 ShiftOfShiftedLogic GIMatchData_matchinfo;
3749 // Match Patterns
3750 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3751 return false;
3752 }
3753 // Apply Patterns
3754 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3755 return true;
3756 }
3757 case GICXXCustomAction_GICombiner83:{
3758 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3759 // Match Patterns
3760 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3761 return false;
3762 }
3763 // Apply Patterns
3764 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3765 return true;
3766 }
3767 case GICXXCustomAction_GICombiner84:{
3768 MachineInstr * GIMatchData_matchinfo;
3769 // Match Patterns
3770 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3771 return false;
3772 }
3773 // Apply Patterns
3774 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3775 return true;
3776 }
3777 case GICXXCustomAction_GICombiner85:{
3778 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3779 // Match Patterns
3780 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3781 return false;
3782 }
3783 // Apply Patterns
3784 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3785 return true;
3786 }
3787 case GICXXCustomAction_GICombiner86:{
3788 // Match Patterns
3789 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3790 return false;
3791 }
3792 // Apply Patterns
3793 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3794 return true;
3795 }
3796 case GICXXCustomAction_GICombiner87:{
3797 // Match Patterns
3798 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3799 return false;
3800 }
3801 // Apply Patterns
3802 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3803 return true;
3804 }
3805 case GICXXCustomAction_GICombiner88:{
3806 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3807 // Match Patterns
3808 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3809 return false;
3810 }
3811 // Apply Patterns
3812 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3813 return true;
3814 }
3815 case GICXXCustomAction_GICombiner89:{
3816 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3817 // Match Patterns
3818 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3819 return false;
3820 }
3821 // Apply Patterns
3822 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3823 return true;
3824 }
3825 case GICXXCustomAction_GICombiner90:{
3826 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3827 // Match Patterns
3828 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3829 return false;
3830 }
3831 // Apply Patterns
3832 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3833 return true;
3834 }
3835 case GICXXCustomAction_GICombiner91:{
3836 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3837 // Match Patterns
3838 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3839 return false;
3840 }
3841 // Apply Patterns
3842 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3843 return true;
3844 }
3845 case GICXXCustomAction_GICombiner92:{
3846 APInt GIMatchData_matchinfo;
3847 // Match Patterns
3848 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3849 return false;
3850 }
3851 // Apply Patterns
3852 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3853 return true;
3854 }
3855 case GICXXCustomAction_GICombiner93:{
3856 ConstantFP* GIMatchData_matchinfo;
3857 // Match Patterns
3858 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3859 return false;
3860 }
3861 // Apply Patterns
3862 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3863 return true;
3864 }
3865 case GICXXCustomAction_GICombiner94:{
3866 ConstantFP* GIMatchData_matchinfo;
3867 // Match Patterns
3868 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3869 return false;
3870 }
3871 // Apply Patterns
3872 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3873 return true;
3874 }
3875 case GICXXCustomAction_GICombiner95:{
3876 APInt GIMatchData_matchinfo;
3877 // Match Patterns
3878 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3879 return false;
3880 }
3881 // Apply Patterns
3882 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3883 return true;
3884 }
3885 case GICXXCustomAction_GICombiner96:{
3886 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3887 // Match Patterns
3888 if(![&](){return Helper.matchConstantFoldUnaryIntOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3889 return false;
3890 }
3891 // Apply Patterns
3892 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3893 return true;
3894 }
3895 case GICXXCustomAction_GICombiner97:{
3896 // Match Patterns
3897 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3898 return false;
3899 }
3900 // Apply Patterns
3901 Helper.applyUMulHToLShr(*State.MIs[0]);
3902 return true;
3903 }
3904 case GICXXCustomAction_GICombiner98:{
3905 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3906 // Match Patterns
3907 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3908 return false;
3909 }
3910 // Apply Patterns
3911 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3912 return true;
3913 }
3914 case GICXXCustomAction_GICombiner99:{
3915 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3916 // Match Patterns
3917 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3918 return false;
3919 }
3920 // Apply Patterns
3921 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3922 return true;
3923 }
3924 case GICXXCustomAction_GICombiner100:{
3925 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3926 // Match Patterns
3927 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3928 GIMatchData_info);}()) {
3929 return false;
3930 }
3931 // Apply Patterns
3932 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3933 return true;
3934 }
3935 case GICXXCustomAction_GICombiner101:{
3936 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3937 // Match Patterns
3938 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3939 GIMatchData_info);}()) {
3940 return false;
3941 }
3942 // Apply Patterns
3943 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3944 return true;
3945 }
3946 case GICXXCustomAction_GICombiner102:{
3947 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3948 // Match Patterns
3949 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3950 GIMatchData_info);}()) {
3951 return false;
3952 }
3953 // Apply Patterns
3954 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3955 return true;
3956 }
3957 case GICXXCustomAction_GICombiner103:{
3958 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3959 // Match Patterns
3960 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3961 *State.MIs[0], GIMatchData_info);}()) {
3962 return false;
3963 }
3964 // Apply Patterns
3965 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3966 return true;
3967 }
3968 case GICXXCustomAction_GICombiner104:{
3969 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3970 // Match Patterns
3971 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3972 GIMatchData_info);}()) {
3973 return false;
3974 }
3975 // Apply Patterns
3976 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3977 return true;
3978 }
3979 case GICXXCustomAction_GICombiner105:{
3980 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3981 // Match Patterns
3982 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3983 GIMatchData_info);}()) {
3984 return false;
3985 }
3986 // Apply Patterns
3987 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3988 return true;
3989 }
3990 case GICXXCustomAction_GICombiner106:{
3991 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3992 // Match Patterns
3993 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3994 GIMatchData_info);}()) {
3995 return false;
3996 }
3997 // Apply Patterns
3998 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3999 return true;
4000 }
4001 case GICXXCustomAction_GICombiner107:{
4002 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4003 // Match Patterns
4004 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
4005 *State.MIs[0], GIMatchData_info);}()) {
4006 return false;
4007 }
4008 // Apply Patterns
4009 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4010 return true;
4011 }
4012 case GICXXCustomAction_GICombiner108:{
4013 unsigned GIMatchData_select_op_no;
4014 // Match Patterns
4015 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
4016 return false;
4017 }
4018 // Apply Patterns
4019 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
4020 return true;
4021 }
4022 case GICXXCustomAction_GICombiner109:{
4023 // Match Patterns
4024 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(State.MIs[0]->getOperand(2),
4025 /*OrNegative=*/true);}()) {
4026 return false;
4027 }
4028 // Apply Patterns
4029 Helper.applySimplifySRemByPow2(*State.MIs[0]);
4030 return true;
4031 }
4032 case GICXXCustomAction_GICombiner110:{
4033 // Match Patterns
4034 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
4035 return false;
4036 }
4037 // Apply Patterns
4038 Helper.applyUDivOrURemByConst(*State.MIs[0]);
4039 return true;
4040 }
4041 case GICXXCustomAction_GICombiner111:{
4042 // Match Patterns
4043 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
4044 return false;
4045 }
4046 // Apply Patterns
4047 Helper.applySDivOrSRemByConst(*State.MIs[0]);
4048 return true;
4049 }
4050 case GICXXCustomAction_GICombiner112:{
4051 // Match Patterns
4052 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
4053 return false;
4054 }
4055 // Apply Patterns
4056 Helper.applyUDivByPow2(*State.MIs[0]);
4057 return true;
4058 }
4059 case GICXXCustomAction_GICombiner113:{
4060 // Match Patterns
4061 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
4062 return false;
4063 }
4064 // Apply Patterns
4065 Helper.applySDivByPow2(*State.MIs[0]);
4066 return true;
4067 }
4068 case GICXXCustomAction_GICombiner114:{
4069 SmallVector<MachineInstr *> GIMatchData_matchinfo;
4070 // Match Patterns
4071 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
4072 return false;
4073 }
4074 // Apply Patterns
4075 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
4076 return true;
4077 }
4078 case GICXXCustomAction_GICombiner115:{
4079 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4080 // Match Patterns
4081 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4082 return false;
4083 }
4084 // Apply Patterns
4085 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4086 return true;
4087 }
4088 case GICXXCustomAction_GICombiner116:{
4089 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4090 // Match Patterns
4091 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
4092 return false;
4093 }
4094 // Apply Patterns
4095 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4096 return true;
4097 }
4098 case GICXXCustomAction_GICombiner117:{
4099 Register GIMatchData_matchinfo;
4100 // Match Patterns
4101 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4102 return false;
4103 }
4104 // Apply Patterns
4105 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
4106 return true;
4107 }
4108 case GICXXCustomAction_GICombiner118:{
4109 // Match Patterns
4110 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
4111 return false;
4112 }
4113 // Apply Patterns
4114 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4115 return true;
4116 }
4117 case GICXXCustomAction_GICombiner119:{
4118 // Match Patterns
4119 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
4120 return false;
4121 }
4122 // Apply Patterns
4123 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
4124 return true;
4125 }
4126 case GICXXCustomAction_GICombiner120:{
4127 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4128 // Match Patterns
4129 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
4130 return false;
4131 }
4132 // Apply Patterns
4133 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4134 return true;
4135 }
4136 case GICXXCustomAction_GICombiner121:{
4137 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4138 // Match Patterns
4139 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
4140 return false;
4141 }
4142 // Apply Patterns
4143 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4144 return true;
4145 }
4146 case GICXXCustomAction_GICombiner122:{
4147 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4148 // Match Patterns
4149 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
4150 return false;
4151 }
4152 // Apply Patterns
4153 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4154 return true;
4155 }
4156 case GICXXCustomAction_GICombiner123:{
4157 SmallVector<Register> GIMatchData_matchinfo;
4158 // Match Patterns
4159 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
4160 return false;
4161 }
4162 // Apply Patterns
4163 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
4164 return true;
4165 }
4166 case GICXXCustomAction_GICombiner124:{
4167 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4168 // Match Patterns
4169 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4170 return false;
4171 }
4172 // Apply Patterns
4173 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4174 return true;
4175 }
4176 case GICXXCustomAction_GICombiner125:{
4177 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4178 // Match Patterns
4179 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4180 return false;
4181 }
4182 // Apply Patterns
4183 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4184 return true;
4185 }
4186 case GICXXCustomAction_GICombiner126:{
4187 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4188 // Match Patterns
4189 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
4190 return false;
4191 }
4192 // Apply Patterns
4193 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
4194 return true;
4195 }
4196 case GICXXCustomAction_GICombiner127:{
4197 SmallVector<Register> GIMatchData_matchinfo;
4198 // Match Patterns
4199 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
4200 return false;
4201 }
4202 // Apply Patterns
4203 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
4204 return true;
4205 }
4206 case GICXXCustomAction_GICombiner128:{
4207 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4208 // Match Patterns
4209 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4210 return false;
4211 }
4212 // Apply Patterns
4213 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4214 return true;
4215 }
4216 case GICXXCustomAction_GICombiner129:{
4217 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4218 // Match Patterns
4219 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
4220 return false;
4221 }
4222 // Apply Patterns
4223 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4224 return true;
4225 }
4226 case GICXXCustomAction_GICombiner130:{
4227 Register GIMatchData_matchinfo;
4228 // Match Patterns
4229 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
4230 return false;
4231 }
4232 // Apply Patterns
4233 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
4234 return true;
4235 }
4236 case GICXXCustomAction_GICombiner131:{
4237 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4238 // Match Patterns
4239 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4240 return false;
4241 }
4242 // Apply Patterns
4243 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4244 return true;
4245 }
4246 case GICXXCustomAction_GICombiner132:{
4247 SmallVector<Register> GIMatchData_info;
4248 // Match Patterns
4249 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
4250 return false;
4251 }
4252 // Apply Patterns
4253 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
4254 return true;
4255 }
4256 case GICXXCustomAction_GICombiner133:{
4257 Register GIMatchData_src;
4258 // Match Patterns
4259 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
4260 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
4261 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
4262 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
4263 return false;
4264
4265 // Check counts match.
4266 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
4267 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
4268 if (NumMergeSrcs != NumUnmergeDefs)
4269 return false;
4270
4271 // Verify all merge sources match unmerge defs in order.
4272 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
4273 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
4274 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
4275
4276 if (MergeSrc != UnmergeDef)
4277 return false;
4278
4279 if (!MRI.hasOneNonDBGUse(MergeSrc))
4280 return false;
4281 }
4282
4283 // Check size compatibility.
4284 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
4285 LLT SrcTy = MRI.getType(GIMatchData_src);
4286 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4287 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
4288 return false;
4289
4290 // Check bitcast legality.
4291 if (SrcTy != DstTy) {
4292 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
4293 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
4294 if (!Helper.isLegalOrBeforeLegalizer(Query))
4295 return false;
4296 }
4297
4298 return true;}()) {
4299 return false;
4300 }
4301 // Apply Patterns
4302 LLT SrcTy = MRI.getType(GIMatchData_src);
4303 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
4304
4305 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
4306
4307 if (SrcTy == DstTy) {
4308 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4309 } else {
4310 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
4311 }
4312
4313 State.MIs[0]->eraseFromParent();
4314 return true;
4315 }
4316 case GICXXCustomAction_GICombiner134:{
4317 SmallVector<APInt, 8> GIMatchData_info;
4318 // Match Patterns
4319 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
4320 return false;
4321 }
4322 // Apply Patterns
4323 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
4324 return true;
4325 }
4326 case GICXXCustomAction_GICombiner135:{
4327 std::function<void(MachineIRBuilder &)> GIMatchData_info;
4328 // Match Patterns
4329 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
4330 return false;
4331 }
4332 // Apply Patterns
4333 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
4334 return true;
4335 }
4336 case GICXXCustomAction_GICombiner136:{
4337 // Match Patterns
4338 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
4339 return false;
4340 }
4341 // Apply Patterns
4342 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
4343 return true;
4344 }
4345 case GICXXCustomAction_GICombiner137:{
4346 // Match Patterns
4347 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
4348 return false;
4349 }
4350 // Apply Patterns
4351 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
4352 return true;
4353 }
4354 case GICXXCustomAction_GICombiner138:{
4355 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4356 // Match Patterns
4357 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
4358 return false;
4359 }
4360 // Apply Patterns
4361 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4362 return true;
4363 }
4364 case GICXXCustomAction_GICombiner139:{
4365 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4366 // Match Patterns
4367 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
4368 return false;
4369 }
4370 // Apply Patterns
4371 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4372 return true;
4373 }
4374 case GICXXCustomAction_GICombiner140:{
4375 Register GIMatchData_unmergeSrc;
4376 // Match Patterns
4377 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
4378 return false;
4379 }
4380 // Apply Patterns
4381 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
4382 return true;
4383 }
4384 case GICXXCustomAction_GICombiner141:{
4385 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4386 // Match Patterns
4387 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
4388 return false;
4389 }
4390 // Apply Patterns
4391 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4392 return true;
4393 }
4394 case GICXXCustomAction_GICombiner142:{
4395 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4396 // Match Patterns
4397 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
4398 return false;
4399 }
4400 // Apply Patterns
4401 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4402 return true;
4403 }
4404 case GICXXCustomAction_GICombiner143:{
4405 Register GIMatchData_matchinfo;
4406 // Match Patterns
4407 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
4408 return false;
4409 }
4410 // Apply Patterns
4411 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
4412 return true;
4413 }
4414 case GICXXCustomAction_GICombiner144:{
4415 Register GIMatchData_matchinfo;
4416 // Match Patterns
4417 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
4418 return false;
4419 }
4420 // Apply Patterns
4421 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
4422 return true;
4423 }
4424 case GICXXCustomAction_GICombiner145:{
4425 LshrOfTruncOfLshr GIMatchData_matchinfo;
4426 // Match Patterns
4427 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
4428 return false;
4429 }
4430 // Apply Patterns
4431 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
4432 return true;
4433 }
4434 case GICXXCustomAction_GICombiner146:{
4435 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4436 // Match Patterns
4437 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
4438 return false;
4439 }
4440 // Apply Patterns
4441 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4442 return true;
4443 }
4444 case GICXXCustomAction_GICombiner147:{
4445 // Match Patterns
4446 if(![&](){return Helper.matchCountZeroToZeroPoison(*State.MIs[0]);}()) {
4447 return false;
4448 }
4449 // Apply Patterns
4450 Helper.applyCountZeroToZeroPoison(*State.MIs[0]);
4451 return true;
4452 }
4453 case GICXXCustomAction_GICombiner148:{
4454 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
4455 // Match Patterns
4456 if(![&](){return Helper.matchBinopWithNeg(*State.MIs[0], GIMatchData_matchinfo);}()) {
4457 return false;
4458 }
4459 // Apply Patterns
4460 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
4461 return true;
4462 }
4463 case GICXXCustomAction_GICombiner149:{
4464 SmallVector<Register> GIMatchData_matchinfo;
4465 // Match Patterns
4466 if(![&](){return Helper.matchCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
4467 return false;
4468 }
4469 // Apply Patterns
4470 Helper.applyCombineShuffleVector(*State.MIs[0], GIMatchData_matchinfo);
4471 return true;
4472 }
4473 case GICXXCustomAction_GICombiner150:{
4474 Register GIMatchData_matchinfo;
4475 // Match Patterns
4476 if(![&](){return matchICmpRedundantTrunc(*State.MIs[0], MRI, Helper.getValueTracking(), GIMatchData_matchinfo);}()) {
4477 return false;
4478 }
4479 // Apply Patterns
4480 applyICmpRedundantTrunc(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4481 return true;
4482 }
4483 case GICXXCustomAction_GICombiner151:{
4484 std::pair<uint64_t, uint64_t> GIMatchData_matchinfo;
4485 // Match Patterns
4486 if(![&](){return matchFoldGlobalOffset(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4487 return false;
4488 }
4489 // Apply Patterns
4490 applyFoldGlobalOffset(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4491 return true;
4492 }
4493 case GICXXCustomAction_GICombiner152:{
4494 std::tuple<Register, Register, bool> GIMatchData_matchinfo;
4495 // Match Patterns
4496 if(![&](){return matchExtAddvToDotAddv(*State.MIs[0], MRI, STI, GIMatchData_matchinfo);}()) {
4497 return false;
4498 }
4499 // Apply Patterns
4500 applyExtAddvToDotAddv(*State.MIs[0], MRI, B, Observer, STI, GIMatchData_matchinfo);
4501 return true;
4502 }
4503 case GICXXCustomAction_GICombiner153:{
4504 std::pair<Register, bool> GIMatchData_matchinfo;
4505 // Match Patterns
4506 if(![&](){return matchExtUaddvToUaddlv(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4507 return false;
4508 }
4509 // Apply Patterns
4510 applyExtUaddvToUaddlv(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
4511 return true;
4512 }
4513 case GICXXCustomAction_GICombiner154:{
4514 // Match Patterns
4515 if(![&](){return matchPushAddSubExt(*State.MIs[0], MRI, State.MIs[0]->getOperand(0).getReg(), State.MIs[1]->getOperand(1).getReg(), State.MIs[2]->getOperand(1).getReg());}()) {
4516 return false;
4517 }
4518 // Apply Patterns
4519 applyPushAddSubExt(*State.MIs[0], MRI, B, State.MIs[1]->getOpcode() == TargetOpcode::G_SEXT, State.MIs[0]->getOperand(0).getReg(), State.MIs[1]->getOperand(1).getReg(), State.MIs[2]->getOperand(1).getReg());
4520 return true;
4521 }
4522 case GICXXCustomAction_GICombiner155:{
4523 std::pair<Register, Register> GIMatchData_matchinfo;
4524 // Match Patterns
4525 if(![&](){return matchSimplifyUADDO(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
4526 return false;
4527 }
4528 // Apply Patterns
4529 applySimplifyUADDO(*State.MIs[0], MRI, B, Observer, Helper,
4530 GIMatchData_matchinfo);
4531 return true;
4532 }
4533 case GICXXCustomAction_GICombiner156:{
4534 MemCpyFamilyLoweringInfo GIMatchData_matchinfo;
4535 // Match Patterns
4536 if(![&](){return Helper.matchCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo);}()) {
4537 return false;
4538 }
4539 // Apply Patterns
4540 Helper.applyCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo);
4541 return true;
4542 }
4543 case GICXXCustomAction_GICombiner157:{
4544 MemCpyFamilyLoweringInfo GIMatchData_matchinfo;
4545 // Match Patterns
4546 if(![&](){return Helper.matchCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo,
4547 CInfo.EnableOpt ? 0 : 32);}()) {
4548 return false;
4549 }
4550 // Apply Patterns
4551 Helper.applyCombineMemCpyFamily(*State.MIs[0], GIMatchData_matchinfo);
4552 return true;
4553 }
4554 case GICXXCustomAction_GICombiner158:{
4555 // Match Patterns
4556 if(![&](){return llvm::AArch64GISelUtils::matchEmitBZero(*State.MIs[0], MRI,
4557 Libcalls,
4558 CInfo.EnableMinSize);}()) {
4559 return false;
4560 }
4561 // Apply Patterns
4562 llvm::AArch64GISelUtils::applyEmitBZero(*State.MIs[0], B);
4563 return true;
4564 }
4565 }
4566 llvm_unreachable("Unknown Apply Action");
4567}
4568#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4569#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
4570#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
4571#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)
4572#else
4573#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
4574#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
4575#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)
4576#endif
4577const uint8_t *AArch64PreLegalizerCombinerImpl::getMatchTable() const {
4578 constexpr static uint8_t MatchTable0[] = {
4579 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(324), /*)*//*default:*//*Label 120*/ GIMT_Encode4(11706),
4580 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1226), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4581 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1238),
4582 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(2246),
4583 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(3316),
4584 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(3611),
4585 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(3713),
4586 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(3836),
4587 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(3932), GIMT_Encode4(0), GIMT_Encode4(0),
4588 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(4049),
4589 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(4507),
4590 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(5353), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4591 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(5595), GIMT_Encode4(0),
4592 /* 234 */ /*TargetOpcode::G_GLOBAL_VALUE*//*Label 12*/ GIMT_Encode4(5610), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4593 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 13*/ GIMT_Encode4(5622), GIMT_Encode4(0),
4594 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 14*/ GIMT_Encode4(5689),
4595 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 15*/ GIMT_Encode4(5766),
4596 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 16*/ GIMT_Encode4(5831),
4597 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 17*/ GIMT_Encode4(5843),
4598 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 18*/ GIMT_Encode4(5858),
4599 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 19*/ GIMT_Encode4(5901),
4600 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 20*/ GIMT_Encode4(5956),
4601 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 21*/ GIMT_Encode4(6031), GIMT_Encode4(0), GIMT_Encode4(0),
4602 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 22*/ GIMT_Encode4(6095),
4603 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 23*/ GIMT_Encode4(6117), GIMT_Encode4(0), GIMT_Encode4(0),
4604 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 24*/ GIMT_Encode4(6139), GIMT_Encode4(0), GIMT_Encode4(0),
4605 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 25*/ GIMT_Encode4(6161),
4606 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 26*/ GIMT_Encode4(6173),
4607 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 27*/ GIMT_Encode4(6185), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4608 /* 354 */ /*TargetOpcode::G_STORE*//*Label 28*/ GIMT_Encode4(6197), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4609 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 29*/ GIMT_Encode4(6209),
4610 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 30*/ GIMT_Encode4(6337), GIMT_Encode4(0), GIMT_Encode4(0),
4611 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 31*/ GIMT_Encode4(6749), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4612 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 32*/ GIMT_Encode4(6782),
4613 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 33*/ GIMT_Encode4(6857),
4614 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 34*/ GIMT_Encode4(7079),
4615 /* 550 */ /*TargetOpcode::G_SHL*//*Label 35*/ GIMT_Encode4(7209),
4616 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 36*/ GIMT_Encode4(7572),
4617 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 37*/ GIMT_Encode4(7929),
4618 /* 562 */ /*TargetOpcode::G_FSHL*//*Label 38*/ GIMT_Encode4(8268),
4619 /* 566 */ /*TargetOpcode::G_FSHR*//*Label 39*/ GIMT_Encode4(8311),
4620 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 40*/ GIMT_Encode4(8354),
4621 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 41*/ GIMT_Encode4(8378),
4622 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 42*/ GIMT_Encode4(8402),
4623 /* 582 */ /*TargetOpcode::G_FCMP*//*Label 43*/ GIMT_Encode4(8458), GIMT_Encode4(0), GIMT_Encode4(0),
4624 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 44*/ GIMT_Encode4(8470),
4625 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 45*/ GIMT_Encode4(8846),
4626 /* 602 */ /*TargetOpcode::G_UADDE*//*Label 46*/ GIMT_Encode4(8880),
4627 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 47*/ GIMT_Encode4(8892),
4628 /* 610 */ /*TargetOpcode::G_USUBE*//*Label 48*/ GIMT_Encode4(8904),
4629 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 49*/ GIMT_Encode4(8916),
4630 /* 618 */ /*TargetOpcode::G_SADDE*//*Label 50*/ GIMT_Encode4(8939),
4631 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 51*/ GIMT_Encode4(8951),
4632 /* 626 */ /*TargetOpcode::G_SSUBE*//*Label 52*/ GIMT_Encode4(8963),
4633 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 53*/ GIMT_Encode4(8975),
4634 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 54*/ GIMT_Encode4(9009),
4635 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 55*/ GIMT_Encode4(9043),
4636 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 56*/ GIMT_Encode4(9066),
4637 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 57*/ GIMT_Encode4(9078),
4638 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 58*/ GIMT_Encode4(9090), GIMT_Encode4(0), GIMT_Encode4(0),
4639 /* 662 */ /*TargetOpcode::G_USHLSAT*//*Label 59*/ GIMT_Encode4(9102),
4640 /* 666 */ /*TargetOpcode::G_SSHLSAT*//*Label 60*/ GIMT_Encode4(9125),
4641 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 61*/ GIMT_Encode4(9148),
4642 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 62*/ GIMT_Encode4(9160),
4643 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 63*/ GIMT_Encode4(9172),
4644 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 64*/ GIMT_Encode4(9184), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4645 /* 702 */ /*TargetOpcode::G_FADD*//*Label 65*/ GIMT_Encode4(9196),
4646 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 66*/ GIMT_Encode4(9337),
4647 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 67*/ GIMT_Encode4(9426),
4648 /* 714 */ /*TargetOpcode::G_FMA*//*Label 68*/ GIMT_Encode4(9546),
4649 /* 718 */ /*TargetOpcode::G_FMAD*//*Label 69*/ GIMT_Encode4(9603),
4650 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 70*/ GIMT_Encode4(9660),
4651 /* 726 */ /*TargetOpcode::G_FREM*//*Label 71*/ GIMT_Encode4(9737), GIMT_Encode4(0), GIMT_Encode4(0),
4652 /* 738 */ /*TargetOpcode::G_FPOWI*//*Label 72*/ GIMT_Encode4(9760), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4653 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 73*/ GIMT_Encode4(9782), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4654 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 74*/ GIMT_Encode4(9804),
4655 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 75*/ GIMT_Encode4(9855),
4656 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 76*/ GIMT_Encode4(9877),
4657 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 77*/ GIMT_Encode4(9920),
4658 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 78*/ GIMT_Encode4(9942),
4659 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 79*/ GIMT_Encode4(9964),
4660 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 80*/ GIMT_Encode4(10001), GIMT_Encode4(0), GIMT_Encode4(0),
4661 /* 810 */ /*TargetOpcode::G_FABS*//*Label 81*/ GIMT_Encode4(10038),
4662 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 82*/ GIMT_Encode4(10117), GIMT_Encode4(0),
4663 /* 822 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 83*/ GIMT_Encode4(10129),
4664 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 84*/ GIMT_Encode4(10159),
4665 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 85*/ GIMT_Encode4(10204),
4666 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 86*/ GIMT_Encode4(10249),
4667 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 87*/ GIMT_Encode4(10261),
4668 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 88*/ GIMT_Encode4(10273),
4669 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 89*/ GIMT_Encode4(10318),
4670 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 90*/ GIMT_Encode4(10363),
4671 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 91*/ GIMT_Encode4(10375), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4672 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 92*/ GIMT_Encode4(10387), GIMT_Encode4(0),
4673 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 93*/ GIMT_Encode4(10512),
4674 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 94*/ GIMT_Encode4(10546),
4675 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 95*/ GIMT_Encode4(10580),
4676 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 96*/ GIMT_Encode4(10614),
4677 /* 914 */ /*TargetOpcode::G_ABS*//*Label 97*/ GIMT_Encode4(10648), GIMT_Encode4(0), GIMT_Encode4(0),
4678 /* 926 */ /*TargetOpcode::G_BR*//*Label 98*/ GIMT_Encode4(10681), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4679 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 99*/ GIMT_Encode4(10693),
4680 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 100*/ GIMT_Encode4(10823),
4681 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 101*/ GIMT_Encode4(11200), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4682 /* 970 */ /*TargetOpcode::G_CTTZ*//*Label 102*/ GIMT_Encode4(11284),
4683 /* 974 */ /*TargetOpcode::G_CTTZ_ZERO_POISON*//*Label 103*/ GIMT_Encode4(11307),
4684 /* 978 */ /*TargetOpcode::G_CTLZ*//*Label 104*/ GIMT_Encode4(11319),
4685 /* 982 */ /*TargetOpcode::G_CTLZ_ZERO_POISON*//*Label 105*/ GIMT_Encode4(11353), GIMT_Encode4(0),
4686 /* 990 */ /*TargetOpcode::G_CTPOP*//*Label 106*/ GIMT_Encode4(11376),
4687 /* 994 */ /*TargetOpcode::G_BSWAP*//*Label 107*/ GIMT_Encode4(11388),
4688 /* 998 */ /*TargetOpcode::G_BITREVERSE*//*Label 108*/ GIMT_Encode4(11400), GIMT_Encode4(0), GIMT_Encode4(0),
4689 /* 1010 */ /*TargetOpcode::G_FCEIL*//*Label 109*/ GIMT_Encode4(11500), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4690 /* 1058 */ /*TargetOpcode::G_FSQRT*//*Label 110*/ GIMT_Encode4(11522),
4691 /* 1062 */ /*TargetOpcode::G_FFLOOR*//*Label 111*/ GIMT_Encode4(11544),
4692 /* 1066 */ /*TargetOpcode::G_FRINT*//*Label 112*/ GIMT_Encode4(11566),
4693 /* 1070 */ /*TargetOpcode::G_FNEARBYINT*//*Label 113*/ GIMT_Encode4(11588), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4694 /* 1146 */ /*TargetOpcode::G_MEMCPY*//*Label 114*/ GIMT_Encode4(11610),
4695 /* 1150 */ /*TargetOpcode::G_MEMCPY_INLINE*//*Label 115*/ GIMT_Encode4(11622),
4696 /* 1154 */ /*TargetOpcode::G_MEMMOVE*//*Label 116*/ GIMT_Encode4(11634),
4697 /* 1158 */ /*TargetOpcode::G_MEMSET*//*Label 117*/ GIMT_Encode4(11646), GIMT_Encode4(0),
4698 /* 1166 */ /*TargetOpcode::G_MEMSET_INLINE*//*Label 118*/ GIMT_Encode4(11669), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
4699 /* 1222 */ /*TargetOpcode::G_VECREDUCE_ADD*//*Label 119*/ GIMT_Encode4(11681),
4700 /* 1226 */ // Label 0: @1226
4701 /* 1226 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1237), // Rule ID 19 //
4702 /* 1231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
4703 /* 1234 */ // MIs[0] d
4704 /* 1234 */ // No operand predicates
4705 /* 1234 */ // MIs[0] s
4706 /* 1234 */ // No operand predicates
4707 /* 1234 */ // Combiner Rule #19: copy_prop
4708 /* 1234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4709 /* 1237 */ // Label 121: @1237
4710 /* 1237 */ GIM_Reject,
4711 /* 1238 */ // Label 1: @1238
4712 /* 1238 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1249), // Rule ID 272 //
4713 /* 1243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
4714 /* 1246 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_ADD'
4715 /* 1246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
4716 /* 1249 */ // Label 122: @1249
4717 /* 1249 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1260), // Rule ID 332 //
4718 /* 1254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
4719 /* 1257 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_ADD'
4720 /* 1257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
4721 /* 1260 */ // Label 123: @1260
4722 /* 1260 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1271), // Rule ID 369 //
4723 /* 1265 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
4724 /* 1268 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
4725 /* 1268 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4726 /* 1271 */ // Label 124: @1271
4727 /* 1271 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1359), // Rule ID 439 //
4728 /* 1276 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
4729 /* 1279 */ // MIs[0] dst
4730 /* 1279 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4731 /* 1283 */ // MIs[0] __add_shift_match_0.shl_neg
4732 /* 1283 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4733 /* 1287 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4734 /* 1291 */ // MIs[1] __add_shift_match_0.neg_y
4735 /* 1291 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4736 /* 1295 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4737 /* 1299 */ // MIs[2] __add_shift_match_0.zero
4738 /* 1299 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4739 /* 1303 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4740 /* 1307 */ // MIs[3] Operand 1
4741 /* 1307 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4742 /* 1318 */ // MIs[2] y
4743 /* 1318 */ // No operand predicates
4744 /* 1318 */ // MIs[1] n
4745 /* 1318 */ // No operand predicates
4746 /* 1318 */ // MIs[0] x
4747 /* 1318 */ // No operand predicates
4748 /* 1318 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner26),
4749 /* 1322 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4750 /* 1324 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4751 /* 1327 */ // Combiner Rule #267: add_shift @ [__add_shift_match_0[1]]
4752 /* 1327 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4753 /* 1330 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4754 /* 1335 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4755 /* 1339 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4756 /* 1343 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4757 /* 1347 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4758 /* 1351 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4759 /* 1355 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4760 /* 1358 */ GIR_EraseRootFromParent_Done,
4761 /* 1359 */ // Label 125: @1359
4762 /* 1359 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1447), // Rule ID 438 //
4763 /* 1364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule267Enabled),
4764 /* 1367 */ // MIs[0] dst
4765 /* 1367 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4766 /* 1371 */ // MIs[0] x
4767 /* 1371 */ // No operand predicates
4768 /* 1371 */ // MIs[0] __add_shift_match_0.shl_neg
4769 /* 1371 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4770 /* 1375 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4771 /* 1379 */ // MIs[1] __add_shift_match_0.neg_y
4772 /* 1379 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4773 /* 1383 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4774 /* 1387 */ // MIs[2] __add_shift_match_0.zero
4775 /* 1387 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4776 /* 1391 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4777 /* 1395 */ // MIs[3] Operand 1
4778 /* 1395 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4779 /* 1406 */ // MIs[2] y
4780 /* 1406 */ // No operand predicates
4781 /* 1406 */ // MIs[1] n
4782 /* 1406 */ // No operand predicates
4783 /* 1406 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner25),
4784 /* 1410 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4785 /* 1412 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4786 /* 1415 */ // Combiner Rule #267: add_shift @ [__add_shift_match_0[0]]
4787 /* 1415 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4788 /* 1418 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4789 /* 1423 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4790 /* 1427 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4791 /* 1431 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4792 /* 1435 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4793 /* 1439 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4794 /* 1443 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4795 /* 1446 */ GIR_EraseRootFromParent_Done,
4796 /* 1447 */ // Label 126: @1447
4797 /* 1447 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1481), // Rule ID 2 //
4798 /* 1452 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4799 /* 1455 */ // MIs[0] root
4800 /* 1455 */ // No operand predicates
4801 /* 1455 */ // MIs[0] sub
4802 /* 1455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4803 /* 1459 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4804 /* 1463 */ // MIs[1] Operand 1
4805 /* 1463 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4806 /* 1467 */ // MIs[1] A
4807 /* 1467 */ // No operand predicates
4808 /* 1467 */ // MIs[0] B
4809 /* 1467 */ // No operand predicates
4810 /* 1467 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4811 /* 1469 */ // Combiner Rule #2: ZeroMinusAPlusB
4812 /* 1469 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4813 /* 1472 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4814 /* 1474 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4815 /* 1476 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4816 /* 1480 */ GIR_EraseRootFromParent_Done,
4817 /* 1481 */ // Label 127: @1481
4818 /* 1481 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1530), // Rule ID 160 //
4819 /* 1486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4820 /* 1489 */ // MIs[0] dst
4821 /* 1489 */ // No operand predicates
4822 /* 1489 */ // MIs[0] __simplify_add_to_sub_match_0.neg
4823 /* 1489 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4824 /* 1493 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4825 /* 1497 */ // MIs[1] __simplify_add_to_sub_match_0.zero
4826 /* 1497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4827 /* 1501 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4828 /* 1505 */ // MIs[2] Operand 1
4829 /* 1505 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(0),
4830 /* 1516 */ // MIs[1] newrhs
4831 /* 1516 */ // No operand predicates
4832 /* 1516 */ // MIs[0] newlhs
4833 /* 1516 */ // No operand predicates
4834 /* 1516 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4835 /* 1518 */ // Combiner Rule #112: simplify_add_to_sub @ [__simplify_add_to_sub_match_0[0]]
4836 /* 1518 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4837 /* 1521 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4838 /* 1523 */ GIR_RootToRootCopy, /*OpIdx*/2, // newlhs
4839 /* 1525 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // newrhs
4840 /* 1529 */ GIR_EraseRootFromParent_Done,
4841 /* 1530 */ // Label 128: @1530
4842 /* 1530 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1567), // Rule ID 18 //
4843 /* 1535 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4844 /* 1538 */ // MIs[0] root
4845 /* 1538 */ // No operand predicates
4846 /* 1538 */ // MIs[0] sub
4847 /* 1538 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4848 /* 1542 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4849 /* 1546 */ // MIs[1] A
4850 /* 1546 */ // No operand predicates
4851 /* 1546 */ // MIs[1] c1
4852 /* 1546 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4853 /* 1550 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4854 /* 1554 */ // MIs[2] imm1
4855 /* 1554 */ // No operand predicates
4856 /* 1554 */ // MIs[0] c2
4857 /* 1554 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4858 /* 1558 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4859 /* 1562 */ // MIs[3] imm2
4860 /* 1562 */ // No operand predicates
4861 /* 1562 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4862 /* 1564 */ // Combiner Rule #18: AMinusC1PlusC2
4863 /* 1564 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4864 /* 1567 */ // Label 129: @1567
4865 /* 1567 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1601), // Rule ID 5 //
4866 /* 1572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4867 /* 1575 */ // MIs[0] root
4868 /* 1575 */ // No operand predicates
4869 /* 1575 */ // MIs[0] sub
4870 /* 1575 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4871 /* 1579 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4872 /* 1583 */ // MIs[1] B
4873 /* 1583 */ // No operand predicates
4874 /* 1583 */ // MIs[1] A
4875 /* 1583 */ // No operand predicates
4876 /* 1583 */ // MIs[0] A
4877 /* 1583 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4878 /* 1588 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4879 /* 1593 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4880 /* 1595 */ // Combiner Rule #5: BMinusAPlusA
4881 /* 1595 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4882 /* 1600 */ GIR_EraseRootFromParent_Done,
4883 /* 1601 */ // Label 130: @1601
4884 /* 1601 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1635), // Rule ID 148 //
4885 /* 1606 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
4886 /* 1609 */ // MIs[0] dst
4887 /* 1609 */ // No operand predicates
4888 /* 1609 */ // MIs[0] __add_sub_reg_match_0.tmp
4889 /* 1609 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4890 /* 1613 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4891 /* 1617 */ // MIs[1] src
4892 /* 1617 */ // No operand predicates
4893 /* 1617 */ // MIs[1] __add_sub_reg_match_0.x
4894 /* 1617 */ // No operand predicates
4895 /* 1617 */ // MIs[0] __add_sub_reg_match_0.x
4896 /* 1617 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4897 /* 1622 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4898 /* 1627 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4899 /* 1629 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[1]]
4900 /* 1629 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4901 /* 1634 */ GIR_EraseRootFromParent_Done,
4902 /* 1635 */ // Label 131: @1635
4903 /* 1635 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1680), // Rule ID 7 //
4904 /* 1640 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4905 /* 1643 */ // MIs[0] root
4906 /* 1643 */ // No operand predicates
4907 /* 1643 */ // MIs[0] sub1
4908 /* 1643 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4909 /* 1647 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4910 /* 1651 */ // MIs[1] A
4911 /* 1651 */ // No operand predicates
4912 /* 1651 */ // MIs[1] B
4913 /* 1651 */ // No operand predicates
4914 /* 1651 */ // MIs[0] sub2
4915 /* 1651 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4916 /* 1655 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4917 /* 1659 */ // MIs[2] B
4918 /* 1659 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4919 /* 1664 */ // MIs[2] C
4920 /* 1664 */ // No operand predicates
4921 /* 1664 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4922 /* 1666 */ // Combiner Rule #7: AMinusBPlusBMinusC
4923 /* 1666 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4924 /* 1669 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4925 /* 1671 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4926 /* 1675 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4927 /* 1679 */ GIR_EraseRootFromParent_Done,
4928 /* 1680 */ // Label 132: @1680
4929 /* 1680 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1725), // Rule ID 6 //
4930 /* 1685 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4931 /* 1688 */ // MIs[0] root
4932 /* 1688 */ // No operand predicates
4933 /* 1688 */ // MIs[0] sub1
4934 /* 1688 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4935 /* 1692 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4936 /* 1696 */ // MIs[1] A
4937 /* 1696 */ // No operand predicates
4938 /* 1696 */ // MIs[1] B
4939 /* 1696 */ // No operand predicates
4940 /* 1696 */ // MIs[0] sub2
4941 /* 1696 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4942 /* 1700 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4943 /* 1704 */ // MIs[2] C
4944 /* 1704 */ // No operand predicates
4945 /* 1704 */ // MIs[2] A
4946 /* 1704 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4947 /* 1709 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4948 /* 1711 */ // Combiner Rule #6: AMinusBPlusCMinusA
4949 /* 1711 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4950 /* 1714 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4951 /* 1716 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4952 /* 1720 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4953 /* 1724 */ GIR_EraseRootFromParent_Done,
4954 /* 1725 */ // Label 133: @1725
4955 /* 1725 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1780), // Rule ID 22 //
4956 /* 1730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
4957 /* 1733 */ // MIs[0] dst
4958 /* 1733 */ // No operand predicates
4959 /* 1733 */ // MIs[0] __add_p2i_to_ptradd_match_0.x
4960 /* 1733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4961 /* 1737 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
4962 /* 1741 */ // MIs[1] ptr
4963 /* 1741 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
4964 /* 1745 */ // MIs[0] other
4965 /* 1745 */ // No operand predicates
4966 /* 1745 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
4967 /* 1749 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4968 /* 1751 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4969 /* 1754 */ // Combiner Rule #22: add_p2i_to_ptradd @ [__add_p2i_to_ptradd_match_0[0]]
4970 /* 1754 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTR_ADD),
4971 /* 1757 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4972 /* 1762 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
4973 /* 1766 */ GIR_RootToRootCopy, /*OpIdx*/2, // other
4974 /* 1768 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTRTOINT),
4975 /* 1772 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4976 /* 1776 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4977 /* 1779 */ GIR_EraseRootFromParent_Done,
4978 /* 1780 */ // Label 134: @1780
4979 /* 1780 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1809), // Rule ID 466 //
4980 /* 1785 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule289Enabled),
4981 /* 1788 */ // MIs[0] dst
4982 /* 1788 */ // No operand predicates
4983 /* 1788 */ // MIs[0] ext1
4984 /* 1788 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4985 /* 1792 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
4986 /* 1796 */ // MIs[1] src1
4987 /* 1796 */ // No operand predicates
4988 /* 1796 */ // MIs[0] ext2
4989 /* 1796 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4990 /* 1800 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
4991 /* 1804 */ // MIs[2] src2
4992 /* 1804 */ // No operand predicates
4993 /* 1804 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4994 /* 1806 */ // Combiner Rule #289: push_add_through_sext
4995 /* 1806 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
4996 /* 1809 */ // Label 135: @1809
4997 /* 1809 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1844), // Rule ID 46 //
4998 /* 1814 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
4999 /* 1817 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5000 /* 1823 */ // MIs[0] root
5001 /* 1823 */ // No operand predicates
5002 /* 1823 */ // MIs[0] left
5003 /* 1823 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5004 /* 1827 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5005 /* 1831 */ // MIs[1] imm1
5006 /* 1831 */ // No operand predicates
5007 /* 1831 */ // MIs[0] right
5008 /* 1831 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5009 /* 1835 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
5010 /* 1839 */ // MIs[2] imm2
5011 /* 1839 */ // No operand predicates
5012 /* 1839 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5013 /* 1841 */ // Combiner Rule #42: add_of_vscale
5014 /* 1841 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
5015 /* 1844 */ // Label 136: @1844
5016 /* 1844 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(1873), // Rule ID 463 //
5017 /* 1849 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule286Enabled),
5018 /* 1852 */ // MIs[0] dst
5019 /* 1852 */ // No operand predicates
5020 /* 1852 */ // MIs[0] ext1
5021 /* 1852 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5022 /* 1856 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5023 /* 1860 */ // MIs[1] src1
5024 /* 1860 */ // No operand predicates
5025 /* 1860 */ // MIs[0] ext2
5026 /* 1860 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5027 /* 1864 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5028 /* 1868 */ // MIs[2] src2
5029 /* 1868 */ // No operand predicates
5030 /* 1868 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5031 /* 1870 */ // Combiner Rule #286: push_add_through_zext
5032 /* 1870 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
5033 /* 1873 */ // Label 137: @1873
5034 /* 1873 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(1894), // Rule ID 104 //
5035 /* 1878 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5036 /* 1881 */ // MIs[0] dst
5037 /* 1881 */ // No operand predicates
5038 /* 1881 */ // MIs[0] __propagate_undef_any_op_match_0.x
5039 /* 1881 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5040 /* 1885 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5041 /* 1889 */ // MIs[0] __propagate_undef_any_op_match_0.y
5042 /* 1889 */ // No operand predicates
5043 /* 1889 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5044 /* 1891 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[0]]
5045 /* 1891 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5046 /* 1894 */ // Label 138: @1894
5047 /* 1894 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(1928), // Rule ID 3 //
5048 /* 1899 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
5049 /* 1902 */ // MIs[0] root
5050 /* 1902 */ // No operand predicates
5051 /* 1902 */ // MIs[0] A
5052 /* 1902 */ // No operand predicates
5053 /* 1902 */ // MIs[0] sub
5054 /* 1902 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5055 /* 1906 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5056 /* 1910 */ // MIs[1] Operand 1
5057 /* 1910 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5058 /* 1914 */ // MIs[1] B
5059 /* 1914 */ // No operand predicates
5060 /* 1914 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5061 /* 1916 */ // Combiner Rule #3: APlusZeroMinusB
5062 /* 1916 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5063 /* 1919 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5064 /* 1921 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5065 /* 1923 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5066 /* 1927 */ GIR_EraseRootFromParent_Done,
5067 /* 1928 */ // Label 139: @1928
5068 /* 1928 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(1977), // Rule ID 161 //
5069 /* 1933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5070 /* 1936 */ // MIs[0] dst
5071 /* 1936 */ // No operand predicates
5072 /* 1936 */ // MIs[0] newlhs
5073 /* 1936 */ // No operand predicates
5074 /* 1936 */ // MIs[0] __simplify_add_to_sub_match_0.neg
5075 /* 1936 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5076 /* 1940 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5077 /* 1944 */ // MIs[1] __simplify_add_to_sub_match_0.zero
5078 /* 1944 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5079 /* 1948 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5080 /* 1952 */ // MIs[2] Operand 1
5081 /* 1952 */ GIM_CheckLiteralInt, /*MI*/2, /*Op*/1, GIMT_Encode8(0),
5082 /* 1963 */ // MIs[1] newrhs
5083 /* 1963 */ // No operand predicates
5084 /* 1963 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5085 /* 1965 */ // Combiner Rule #112: simplify_add_to_sub @ [__simplify_add_to_sub_match_0[1]]
5086 /* 1965 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5087 /* 1968 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5088 /* 1970 */ GIR_RootToRootCopy, /*OpIdx*/1, // newlhs
5089 /* 1972 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // newrhs
5090 /* 1976 */ GIR_EraseRootFromParent_Done,
5091 /* 1977 */ // Label 140: @1977
5092 /* 1977 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2011), // Rule ID 4 //
5093 /* 1982 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
5094 /* 1985 */ // MIs[0] root
5095 /* 1985 */ // No operand predicates
5096 /* 1985 */ // MIs[0] A
5097 /* 1985 */ // No operand predicates
5098 /* 1985 */ // MIs[0] sub
5099 /* 1985 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5100 /* 1989 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5101 /* 1993 */ // MIs[1] B
5102 /* 1993 */ // No operand predicates
5103 /* 1993 */ // MIs[1] A
5104 /* 1993 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5105 /* 1998 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5106 /* 2003 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5107 /* 2005 */ // Combiner Rule #4: APlusBMinusB
5108 /* 2005 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5109 /* 2010 */ GIR_EraseRootFromParent_Done,
5110 /* 2011 */ // Label 141: @2011
5111 /* 2011 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2045), // Rule ID 147 //
5112 /* 2016 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
5113 /* 2019 */ // MIs[0] dst
5114 /* 2019 */ // No operand predicates
5115 /* 2019 */ // MIs[0] __add_sub_reg_match_0.x
5116 /* 2019 */ // No operand predicates
5117 /* 2019 */ // MIs[0] __add_sub_reg_match_0.tmp
5118 /* 2019 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5119 /* 2023 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5120 /* 2027 */ // MIs[1] src
5121 /* 2027 */ // No operand predicates
5122 /* 2027 */ // MIs[1] __add_sub_reg_match_0.x
5123 /* 2027 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5124 /* 2032 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5125 /* 2037 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5126 /* 2039 */ // Combiner Rule #101: add_sub_reg @ [__add_sub_reg_match_0[0]]
5127 /* 2039 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
5128 /* 2044 */ GIR_EraseRootFromParent_Done,
5129 /* 2045 */ // Label 142: @2045
5130 /* 2045 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2090), // Rule ID 8 //
5131 /* 2050 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
5132 /* 2053 */ // MIs[0] root
5133 /* 2053 */ // No operand predicates
5134 /* 2053 */ // MIs[0] A
5135 /* 2053 */ // No operand predicates
5136 /* 2053 */ // MIs[0] sub1
5137 /* 2053 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5138 /* 2057 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5139 /* 2061 */ // MIs[1] B
5140 /* 2061 */ // No operand predicates
5141 /* 2061 */ // MIs[1] add1
5142 /* 2061 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5143 /* 2065 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5144 /* 2069 */ // MIs[2] A
5145 /* 2069 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5146 /* 2074 */ // MIs[2] C
5147 /* 2074 */ // No operand predicates
5148 /* 2074 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5149 /* 2076 */ // Combiner Rule #8: APlusBMinusAplusC
5150 /* 2076 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5151 /* 2079 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5152 /* 2081 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5153 /* 2085 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5154 /* 2089 */ GIR_EraseRootFromParent_Done,
5155 /* 2090 */ // Label 143: @2090
5156 /* 2090 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2135), // Rule ID 10 //
5157 /* 2095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5158 /* 2098 */ // MIs[0] root
5159 /* 2098 */ // No operand predicates
5160 /* 2098 */ // MIs[0] A
5161 /* 2098 */ // No operand predicates
5162 /* 2098 */ // MIs[0] sub1
5163 /* 2098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5164 /* 2102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5165 /* 2106 */ // MIs[1] B
5166 /* 2106 */ // No operand predicates
5167 /* 2106 */ // MIs[1] add1
5168 /* 2106 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5169 /* 2110 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5170 /* 2114 */ // MIs[2] C
5171 /* 2114 */ // No operand predicates
5172 /* 2114 */ // MIs[2] A
5173 /* 2114 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5174 /* 2119 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5175 /* 2121 */ // Combiner Rule #10: APlusBMinusCPlusA
5176 /* 2121 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5177 /* 2124 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5178 /* 2126 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5179 /* 2130 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
5180 /* 2134 */ GIR_EraseRootFromParent_Done,
5181 /* 2135 */ // Label 144: @2135
5182 /* 2135 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2190), // Rule ID 23 //
5183 /* 2140 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
5184 /* 2143 */ // MIs[0] dst
5185 /* 2143 */ // No operand predicates
5186 /* 2143 */ // MIs[0] other
5187 /* 2143 */ // No operand predicates
5188 /* 2143 */ // MIs[0] __add_p2i_to_ptradd_match_0.x
5189 /* 2143 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5190 /* 2147 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5191 /* 2151 */ // MIs[1] ptr
5192 /* 2151 */ GIM_RecordRegType, /*MI*/1, /*Op*/1, /*TempTypeIdx*/255,
5193 /* 2155 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5194 /* 2159 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5195 /* 2161 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5196 /* 2164 */ // Combiner Rule #22: add_p2i_to_ptradd @ [__add_p2i_to_ptradd_match_0[1]]
5197 /* 2164 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTR_ADD),
5198 /* 2167 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5199 /* 2172 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // ptr
5200 /* 2176 */ GIR_RootToRootCopy, /*OpIdx*/1, // other
5201 /* 2178 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_PTRTOINT),
5202 /* 2182 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5203 /* 2186 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5204 /* 2189 */ GIR_EraseRootFromParent_Done,
5205 /* 2190 */ // Label 145: @2190
5206 /* 2190 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2211), // Rule ID 107 //
5207 /* 2195 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5208 /* 2198 */ // MIs[0] dst
5209 /* 2198 */ // No operand predicates
5210 /* 2198 */ // MIs[0] __propagate_undef_any_op_match_0.x
5211 /* 2198 */ // No operand predicates
5212 /* 2198 */ // MIs[0] __propagate_undef_any_op_match_0.y
5213 /* 2198 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5214 /* 2202 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5215 /* 2206 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5216 /* 2208 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[3]]
5217 /* 2208 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5218 /* 2211 */ // Label 146: @2211
5219 /* 2211 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2234), // Rule ID 119 //
5220 /* 2216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5221 /* 2219 */ // MIs[0] dst
5222 /* 2219 */ // No operand predicates
5223 /* 2219 */ // MIs[0] lhs
5224 /* 2219 */ // No operand predicates
5225 /* 2219 */ // MIs[0] Operand 2
5226 /* 2219 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5227 /* 2223 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5228 /* 2228 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[1]]
5229 /* 2228 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5230 /* 2233 */ GIR_EraseRootFromParent_Done,
5231 /* 2234 */ // Label 147: @2234
5232 /* 2234 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2245), // Rule ID 169 //
5233 /* 2239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
5234 /* 2242 */ // MIs[0] root
5235 /* 2242 */ // No operand predicates
5236 /* 2242 */ // MIs[0] src1
5237 /* 2242 */ // No operand predicates
5238 /* 2242 */ // MIs[0] src2
5239 /* 2242 */ // No operand predicates
5240 /* 2242 */ // Combiner Rule #116: reassoc_comm_binops
5241 /* 2242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
5242 /* 2245 */ // Label 148: @2245
5243 /* 2245 */ GIM_Reject,
5244 /* 2246 */ // Label 2: @2246
5245 /* 2246 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2257), // Rule ID 280 //
5246 /* 2251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5247 /* 2254 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SUB'
5248 /* 2254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5249 /* 2257 */ // Label 149: @2257
5250 /* 2257 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2268), // Rule ID 333 //
5251 /* 2262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5252 /* 2265 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SUB'
5253 /* 2265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5254 /* 2268 */ // Label 150: @2268
5255 /* 2268 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2345), // Rule ID 440 //
5256 /* 2273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule268Enabled),
5257 /* 2276 */ // MIs[0] dst
5258 /* 2276 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5259 /* 2280 */ // MIs[0] sub1
5260 /* 2280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5261 /* 2284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5262 /* 2288 */ // MIs[1] a
5263 /* 2288 */ // No operand predicates
5264 /* 2288 */ // MIs[1] b
5265 /* 2288 */ // No operand predicates
5266 /* 2288 */ // MIs[0] Operand 2
5267 /* 2288 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5268 /* 2292 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
5269 /* 2296 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5270 /* 2298 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5271 /* 2301 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
5272 /* 2311 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5273 /* 2314 */ // Combiner Rule #268: sub_one_from_sub
5274 /* 2314 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5275 /* 2317 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5276 /* 2322 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
5277 /* 2326 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5278 /* 2329 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5279 /* 2333 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
5280 /* 2337 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5281 /* 2340 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
5282 /* 2344 */ GIR_EraseRootFromParent_Done,
5283 /* 2345 */ // Label 151: @2345
5284 /* 2345 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2439), // Rule ID 446 //
5285 /* 2350 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule272Enabled),
5286 /* 2353 */ // MIs[0] root
5287 /* 2353 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5288 /* 2357 */ // MIs[0] Operand 1
5289 /* 2357 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5290 /* 2361 */ // MIs[0] max
5291 /* 2361 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5292 /* 2365 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SMAX),
5293 /* 2369 */ // MIs[1] A
5294 /* 2369 */ // No operand predicates
5295 /* 2369 */ // MIs[1] sub
5296 /* 2369 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5297 /* 2373 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5298 /* 2377 */ // MIs[2] Operand 1
5299 /* 2377 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5300 /* 2381 */ // MIs[2] A
5301 /* 2381 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5302 /* 2386 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5303 /* 2390 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5304 /* 2392 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5305 /* 2395 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5306 /* 2405 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5307 /* 2408 */ // Combiner Rule #272: SubSmaxSub
5308 /* 2408 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5309 /* 2411 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5310 /* 2416 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5311 /* 2419 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5312 /* 2423 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SMIN),
5313 /* 2427 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5314 /* 2431 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5315 /* 2435 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5316 /* 2438 */ GIR_EraseRootFromParent_Done,
5317 /* 2439 */ // Label 152: @2439
5318 /* 2439 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2533), // Rule ID 447 //
5319 /* 2444 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule273Enabled),
5320 /* 2447 */ // MIs[0] root
5321 /* 2447 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5322 /* 2451 */ // MIs[0] Operand 1
5323 /* 2451 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5324 /* 2455 */ // MIs[0] max
5325 /* 2455 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5326 /* 2459 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMAX),
5327 /* 2463 */ // MIs[1] A
5328 /* 2463 */ // No operand predicates
5329 /* 2463 */ // MIs[1] sub
5330 /* 2463 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5331 /* 2467 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5332 /* 2471 */ // MIs[2] Operand 1
5333 /* 2471 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/1, 0,
5334 /* 2475 */ // MIs[2] A
5335 /* 2475 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5336 /* 2480 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner27),
5337 /* 2484 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5338 /* 2486 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5339 /* 2489 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5340 /* 2499 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5341 /* 2502 */ // Combiner Rule #273: SubUmaxSub
5342 /* 2502 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5343 /* 2505 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5344 /* 2510 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5345 /* 2513 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5346 /* 2517 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UMIN),
5347 /* 2521 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5348 /* 2525 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // A
5349 /* 2529 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5350 /* 2532 */ GIR_EraseRootFromParent_Done,
5351 /* 2533 */ // Label 153: @2533
5352 /* 2533 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2573), // Rule ID 444 //
5353 /* 2538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule270Enabled),
5354 /* 2541 */ // MIs[0] root
5355 /* 2541 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5356 /* 2545 */ // MIs[0] Operand 1
5357 /* 2545 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 255,
5358 /* 2549 */ // MIs[0] op1
5359 /* 2549 */ // No operand predicates
5360 /* 2549 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5361 /* 2552 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(18446744073709551615u),
5362 /* 2562 */ // Combiner Rule #270: sub_minus_one
5363 /* 2562 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
5364 /* 2565 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5365 /* 2567 */ GIR_RootToRootCopy, /*OpIdx*/2, // op1
5366 /* 2569 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5367 /* 2572 */ GIR_EraseRootFromParent_Done,
5368 /* 2573 */ // Label 154: @2573
5369 /* 2573 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2673), // Rule ID 445 //
5370 /* 2578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule271Enabled),
5371 /* 2581 */ // MIs[0] d
5372 /* 2581 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5373 /* 2585 */ // MIs[0] a
5374 /* 2585 */ // No operand predicates
5375 /* 2585 */ // MIs[0] mul
5376 /* 2585 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5377 /* 2589 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5378 /* 2593 */ // MIs[1] x
5379 /* 2593 */ // No operand predicates
5380 /* 2593 */ // MIs[1] c
5381 /* 2593 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5382 /* 2597 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5383 /* 2601 */ // MIs[2] imm
5384 /* 2601 */ // No operand predicates
5385 /* 2601 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5386 /* 2605 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5387 /* 2607 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
5388 /* 2610 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5389 /* 2613 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5390 /* 2623 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5391 /* 2626 */ // Combiner Rule #271: sub_of_mul_const
5392 /* 2626 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5393 /* 2629 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5394 /* 2634 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
5395 /* 2637 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // c
5396 /* 2641 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_MUL),
5397 /* 2645 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5398 /* 2650 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
5399 /* 2654 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5400 /* 2657 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5401 /* 2661 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // d
5402 /* 2665 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/1, // a
5403 /* 2669 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
5404 /* 2672 */ GIR_EraseRootFromParent_Done,
5405 /* 2673 */ // Label 155: @2673
5406 /* 2673 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2734), // Rule ID 9 //
5407 /* 2678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
5408 /* 2681 */ // MIs[0] root
5409 /* 2681 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5410 /* 2685 */ // MIs[0] A
5411 /* 2685 */ // No operand predicates
5412 /* 2685 */ // MIs[0] sub1
5413 /* 2685 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5414 /* 2689 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5415 /* 2693 */ // MIs[1] B
5416 /* 2693 */ // No operand predicates
5417 /* 2693 */ // MIs[1] C
5418 /* 2693 */ // No operand predicates
5419 /* 2693 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5420 /* 2697 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5421 /* 2699 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5422 /* 2702 */ // Combiner Rule #9: AMinusBMinusC
5423 /* 2702 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5424 /* 2705 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5425 /* 2710 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // C
5426 /* 2714 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
5427 /* 2718 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5428 /* 2722 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5429 /* 2726 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // A
5430 /* 2730 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5431 /* 2733 */ GIR_EraseRootFromParent_Done,
5432 /* 2734 */ // Label 156: @2734
5433 /* 2734 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2779), // Rule ID 0 //
5434 /* 2739 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
5435 /* 2742 */ // MIs[0] root
5436 /* 2742 */ // No operand predicates
5437 /* 2742 */ // MIs[0] add1
5438 /* 2742 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5439 /* 2746 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5440 /* 2750 */ // MIs[1] A
5441 /* 2750 */ // No operand predicates
5442 /* 2750 */ // MIs[1] sub1
5443 /* 2750 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5444 /* 2754 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5445 /* 2758 */ // MIs[2] B
5446 /* 2758 */ // No operand predicates
5447 /* 2758 */ // MIs[2] C
5448 /* 2758 */ // No operand predicates
5449 /* 2758 */ // MIs[0] B
5450 /* 2758 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
5451 /* 2763 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5452 /* 2765 */ // Combiner Rule #0: APlusBMinusCMinusB
5453 /* 2765 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5454 /* 2768 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5455 /* 2770 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5456 /* 2774 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
5457 /* 2778 */ GIR_EraseRootFromParent_Done,
5458 /* 2779 */ // Label 157: @2779
5459 /* 2779 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2816), // Rule ID 14 //
5460 /* 2784 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5461 /* 2787 */ // MIs[0] root
5462 /* 2787 */ // No operand predicates
5463 /* 2787 */ // MIs[0] add
5464 /* 2787 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5465 /* 2791 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5466 /* 2795 */ // MIs[1] A
5467 /* 2795 */ // No operand predicates
5468 /* 2795 */ // MIs[1] c1
5469 /* 2795 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5470 /* 2799 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5471 /* 2803 */ // MIs[2] imm1
5472 /* 2803 */ // No operand predicates
5473 /* 2803 */ // MIs[0] c2
5474 /* 2803 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5475 /* 2807 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5476 /* 2811 */ // MIs[3] imm2
5477 /* 2811 */ // No operand predicates
5478 /* 2811 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5479 /* 2813 */ // Combiner Rule #14: APlusC1MinusC2
5480 /* 2813 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
5481 /* 2816 */ // Label 158: @2816
5482 /* 2816 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2853), // Rule ID 17 //
5483 /* 2821 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
5484 /* 2824 */ // MIs[0] root
5485 /* 2824 */ // No operand predicates
5486 /* 2824 */ // MIs[0] sub1
5487 /* 2824 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5488 /* 2828 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5489 /* 2832 */ // MIs[1] c1
5490 /* 2832 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
5491 /* 2836 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5492 /* 2840 */ // MIs[2] imm1
5493 /* 2840 */ // No operand predicates
5494 /* 2840 */ // MIs[1] A
5495 /* 2840 */ // No operand predicates
5496 /* 2840 */ // MIs[0] c2
5497 /* 2840 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5498 /* 2844 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5499 /* 2848 */ // MIs[3] imm2
5500 /* 2848 */ // No operand predicates
5501 /* 2848 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5502 /* 2850 */ // Combiner Rule #17: C1Minus2MinusC2
5503 /* 2850 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
5504 /* 2853 */ // Label 159: @2853
5505 /* 2853 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2898), // Rule ID 1 //
5506 /* 2858 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
5507 /* 2861 */ // MIs[0] root
5508 /* 2861 */ // No operand predicates
5509 /* 2861 */ // MIs[0] sub2
5510 /* 2861 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5511 /* 2865 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5512 /* 2869 */ // MIs[1] A
5513 /* 2869 */ // No operand predicates
5514 /* 2869 */ // MIs[1] sub1
5515 /* 2869 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5516 /* 2873 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
5517 /* 2877 */ // MIs[2] B
5518 /* 2877 */ // No operand predicates
5519 /* 2877 */ // MIs[2] C
5520 /* 2877 */ // No operand predicates
5521 /* 2877 */ // MIs[0] C
5522 /* 2877 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
5523 /* 2882 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5524 /* 2884 */ // Combiner Rule #1: AMinusBMinusCMinusC
5525 /* 2884 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5526 /* 2887 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5527 /* 2889 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5528 /* 2893 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
5529 /* 2897 */ GIR_EraseRootFromParent_Done,
5530 /* 2898 */ // Label 160: @2898
5531 /* 2898 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2935), // Rule ID 16 //
5532 /* 2903 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
5533 /* 2906 */ // MIs[0] root
5534 /* 2906 */ // No operand predicates
5535 /* 2906 */ // MIs[0] sub1
5536 /* 2906 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5537 /* 2910 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5538 /* 2914 */ // MIs[1] A
5539 /* 2914 */ // No operand predicates
5540 /* 2914 */ // MIs[1] c1
5541 /* 2914 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5542 /* 2918 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5543 /* 2922 */ // MIs[2] imm1
5544 /* 2922 */ // No operand predicates
5545 /* 2922 */ // MIs[0] c2
5546 /* 2922 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5547 /* 2926 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5548 /* 2930 */ // MIs[3] imm2
5549 /* 2930 */ // No operand predicates
5550 /* 2930 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5551 /* 2932 */ // Combiner Rule #16: AMinusC1MinusC2
5552 /* 2932 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
5553 /* 2935 */ // Label 161: @2935
5554 /* 2935 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2964), // Rule ID 465 //
5555 /* 2940 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule288Enabled),
5556 /* 2943 */ // MIs[0] dst
5557 /* 2943 */ // No operand predicates
5558 /* 2943 */ // MIs[0] ext1
5559 /* 2943 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5560 /* 2947 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5561 /* 2951 */ // MIs[1] src1
5562 /* 2951 */ // No operand predicates
5563 /* 2951 */ // MIs[0] ext2
5564 /* 2951 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5565 /* 2955 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
5566 /* 2959 */ // MIs[2] src2
5567 /* 2959 */ // No operand predicates
5568 /* 2959 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5569 /* 2961 */ // Combiner Rule #288: push_sub_through_sext
5570 /* 2961 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
5571 /* 2964 */ // Label 162: @2964
5572 /* 2964 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2993), // Rule ID 462 //
5573 /* 2969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule285Enabled),
5574 /* 2972 */ // MIs[0] dst
5575 /* 2972 */ // No operand predicates
5576 /* 2972 */ // MIs[0] ext1
5577 /* 2972 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5578 /* 2976 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5579 /* 2980 */ // MIs[1] src1
5580 /* 2980 */ // No operand predicates
5581 /* 2980 */ // MIs[0] ext2
5582 /* 2980 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5583 /* 2984 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5584 /* 2988 */ // MIs[2] src2
5585 /* 2988 */ // No operand predicates
5586 /* 2988 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5587 /* 2990 */ // Combiner Rule #285: push_sub_through_zext
5588 /* 2990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
5589 /* 2993 */ // Label 163: @2993
5590 /* 2993 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(3014), // Rule ID 105 //
5591 /* 2998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5592 /* 3001 */ // MIs[0] dst
5593 /* 3001 */ // No operand predicates
5594 /* 3001 */ // MIs[0] __propagate_undef_any_op_match_0.x
5595 /* 3001 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5596 /* 3005 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5597 /* 3009 */ // MIs[0] __propagate_undef_any_op_match_0.y
5598 /* 3009 */ // No operand predicates
5599 /* 3009 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5600 /* 3011 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[1]]
5601 /* 3011 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5602 /* 3014 */ // Label 164: @3014
5603 /* 3014 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(3057), // Rule ID 179 //
5604 /* 3019 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
5605 /* 3022 */ // MIs[0] dst
5606 /* 3022 */ // No operand predicates
5607 /* 3022 */ // MIs[0] Operand 1
5608 /* 3022 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
5609 /* 3026 */ // MIs[0] and
5610 /* 3026 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5611 /* 3030 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5612 /* 3034 */ // MIs[1] x
5613 /* 3034 */ // No operand predicates
5614 /* 3034 */ // MIs[1] Operand 2
5615 /* 3034 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
5616 /* 3038 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
5617 /* 3042 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5618 /* 3044 */ // Combiner Rule #126: neg_and_one_to_sext_inreg
5619 /* 3044 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
5620 /* 3047 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5621 /* 3049 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5622 /* 3053 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
5623 /* 3056 */ GIR_EraseRootFromParent_Done,
5624 /* 3057 */ // Label 165: @3057
5625 /* 3057 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(3094), // Rule ID 15 //
5626 /* 3062 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
5627 /* 3065 */ // MIs[0] root
5628 /* 3065 */ // No operand predicates
5629 /* 3065 */ // MIs[0] c2
5630 /* 3065 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5631 /* 3069 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5632 /* 3073 */ // MIs[1] imm2
5633 /* 3073 */ // No operand predicates
5634 /* 3073 */ // MIs[0] add
5635 /* 3073 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5636 /* 3077 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
5637 /* 3081 */ // MIs[2] A
5638 /* 3081 */ // No operand predicates
5639 /* 3081 */ // MIs[2] c1
5640 /* 3081 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
5641 /* 3085 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5642 /* 3089 */ // MIs[3] imm1
5643 /* 3089 */ // No operand predicates
5644 /* 3089 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5645 /* 3091 */ // Combiner Rule #15: C2MinusAPlusC1
5646 /* 3091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
5647 /* 3094 */ // Label 166: @3094
5648 /* 3094 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(3133), // Rule ID 130 //
5649 /* 3099 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5650 /* 3102 */ // MIs[0] dst
5651 /* 3102 */ // No operand predicates
5652 /* 3102 */ // MIs[0] x
5653 /* 3102 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5654 /* 3106 */ // MIs[0] x
5655 /* 3106 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5656 /* 3111 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5657 /* 3114 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5658 /* 3124 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[0]]
5659 /* 3124 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5660 /* 3127 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5661 /* 3129 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5662 /* 3132 */ GIR_EraseRootFromParent_Done,
5663 /* 3133 */ // Label 167: @3133
5664 /* 3133 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(3167), // Rule ID 12 //
5665 /* 3138 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
5666 /* 3141 */ // MIs[0] root
5667 /* 3141 */ // No operand predicates
5668 /* 3141 */ // MIs[0] A
5669 /* 3141 */ // No operand predicates
5670 /* 3141 */ // MIs[0] add
5671 /* 3141 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5672 /* 3145 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5673 /* 3149 */ // MIs[1] A
5674 /* 3149 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
5675 /* 3154 */ // MIs[1] B
5676 /* 3154 */ // No operand predicates
5677 /* 3154 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5678 /* 3159 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5679 /* 3161 */ // Combiner Rule #12: AMinusBMinusA
5680 /* 3161 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
5681 /* 3166 */ GIR_EraseRootFromParent_Done,
5682 /* 3167 */ // Label 168: @3167
5683 /* 3167 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(3201), // Rule ID 11 //
5684 /* 3172 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
5685 /* 3175 */ // MIs[0] root
5686 /* 3175 */ // No operand predicates
5687 /* 3175 */ // MIs[0] A
5688 /* 3175 */ // No operand predicates
5689 /* 3175 */ // MIs[0] sub1
5690 /* 3175 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5691 /* 3179 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5692 /* 3183 */ // MIs[1] Operand 1
5693 /* 3183 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
5694 /* 3187 */ // MIs[1] B
5695 /* 3187 */ // No operand predicates
5696 /* 3187 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5697 /* 3189 */ // Combiner Rule #11: AMinusZeroMinusB
5698 /* 3189 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
5699 /* 3192 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5700 /* 3194 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
5701 /* 3196 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
5702 /* 3200 */ GIR_EraseRootFromParent_Done,
5703 /* 3201 */ // Label 169: @3201
5704 /* 3201 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(3228), // Rule ID 49 //
5705 /* 3206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5706 /* 3209 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5707 /* 3215 */ // MIs[0] root
5708 /* 3215 */ // No operand predicates
5709 /* 3215 */ // MIs[0] x
5710 /* 3215 */ // No operand predicates
5711 /* 3215 */ // MIs[0] right
5712 /* 3215 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5713 /* 3219 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5714 /* 3223 */ // MIs[1] imm
5715 /* 3223 */ // No operand predicates
5716 /* 3223 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5717 /* 3225 */ // Combiner Rule #45: sub_of_vscale
5718 /* 3225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
5719 /* 3228 */ // Label 170: @3228
5720 /* 3228 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(3249), // Rule ID 108 //
5721 /* 3233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
5722 /* 3236 */ // MIs[0] dst
5723 /* 3236 */ // No operand predicates
5724 /* 3236 */ // MIs[0] __propagate_undef_any_op_match_0.x
5725 /* 3236 */ // No operand predicates
5726 /* 3236 */ // MIs[0] __propagate_undef_any_op_match_0.y
5727 /* 3236 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5728 /* 3240 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5729 /* 3244 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5730 /* 3246 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[4]]
5731 /* 3246 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5732 /* 3249 */ // Label 171: @3249
5733 /* 3249 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(3272), // Rule ID 118 //
5734 /* 3254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
5735 /* 3257 */ // MIs[0] dst
5736 /* 3257 */ // No operand predicates
5737 /* 3257 */ // MIs[0] lhs
5738 /* 3257 */ // No operand predicates
5739 /* 3257 */ // MIs[0] Operand 2
5740 /* 3257 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5741 /* 3261 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5742 /* 3266 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[0]]
5743 /* 3266 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5744 /* 3271 */ GIR_EraseRootFromParent_Done,
5745 /* 3272 */ // Label 172: @3272
5746 /* 3272 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(3293), // Rule ID 21 //
5747 /* 3277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5748 /* 3280 */ // MIs[0] d
5749 /* 3280 */ // No operand predicates
5750 /* 3280 */ // MIs[0] op1
5751 /* 3280 */ // No operand predicates
5752 /* 3280 */ // MIs[0] c
5753 /* 3280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5754 /* 3284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5755 /* 3288 */ // MIs[1] imm
5756 /* 3288 */ // No operand predicates
5757 /* 3288 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5758 /* 3290 */ // Combiner Rule #21: sub_to_add
5759 /* 3290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
5760 /* 3293 */ // Label 173: @3293
5761 /* 3293 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(3304), // Rule ID 366 //
5762 /* 3298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5763 /* 3301 */ // MIs[0] dst
5764 /* 3301 */ // No operand predicates
5765 /* 3301 */ // MIs[0] src1
5766 /* 3301 */ // No operand predicates
5767 /* 3301 */ // MIs[0] src2
5768 /* 3301 */ // No operand predicates
5769 /* 3301 */ // Combiner Rule #224: sub_add_reg
5770 /* 3301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
5771 /* 3304 */ // Label 174: @3304
5772 /* 3304 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(3315), // Rule ID 406 //
5773 /* 3309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
5774 /* 3312 */ // MIs[0] dst
5775 /* 3312 */ // No operand predicates
5776 /* 3312 */ // MIs[0] src1
5777 /* 3312 */ // No operand predicates
5778 /* 3312 */ // MIs[0] src2
5779 /* 3312 */ // No operand predicates
5780 /* 3312 */ // Combiner Rule #237: simplify_neg_minmax
5781 /* 3312 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
5782 /* 3315 */ // Label 175: @3315
5783 /* 3315 */ GIM_Reject,
5784 /* 3316 */ // Label 3: @3316
5785 /* 3316 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(3327), // Rule ID 277 //
5786 /* 3321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5787 /* 3324 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_MUL'
5788 /* 3324 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5789 /* 3327 */ // Label 176: @3327
5790 /* 3327 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(3338), // Rule ID 370 //
5791 /* 3332 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5792 /* 3335 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
5793 /* 3335 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5794 /* 3338 */ // Label 177: @3338
5795 /* 3338 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(3378), // Rule ID 24 //
5796 /* 3343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5797 /* 3346 */ // MIs[0] dst
5798 /* 3346 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5799 /* 3350 */ // MIs[0] x
5800 /* 3350 */ // No operand predicates
5801 /* 3350 */ // MIs[0] Operand 2
5802 /* 3350 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5803 /* 3354 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5804 /* 3357 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5805 /* 3367 */ // Combiner Rule #23: mul_by_neg_one
5806 /* 3367 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5807 /* 3370 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5808 /* 3372 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5809 /* 3375 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
5810 /* 3377 */ GIR_EraseRootFromParent_Done,
5811 /* 3378 */ // Label 178: @3378
5812 /* 3378 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(3407), // Rule ID 467 //
5813 /* 3383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule290Enabled),
5814 /* 3386 */ // MIs[0] dst
5815 /* 3386 */ // No operand predicates
5816 /* 3386 */ // MIs[0] ext1
5817 /* 3386 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5818 /* 3390 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5819 /* 3394 */ // MIs[1] src1
5820 /* 3394 */ // No operand predicates
5821 /* 3394 */ // MIs[0] ext2
5822 /* 3394 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5823 /* 3398 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
5824 /* 3402 */ // MIs[2] src2
5825 /* 3402 */ // No operand predicates
5826 /* 3402 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5827 /* 3404 */ // Combiner Rule #290: push_mul_through_sext
5828 /* 3404 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
5829 /* 3407 */ // Label 179: @3407
5830 /* 3407 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(3442), // Rule ID 47 //
5831 /* 3412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
5832 /* 3415 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
5833 /* 3421 */ // MIs[0] root
5834 /* 3421 */ // No operand predicates
5835 /* 3421 */ // MIs[0] left
5836 /* 3421 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5837 /* 3425 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
5838 /* 3429 */ // MIs[1] scale
5839 /* 3429 */ // No operand predicates
5840 /* 3429 */ // MIs[0] x
5841 /* 3429 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5842 /* 3433 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5843 /* 3437 */ // MIs[2] imm1
5844 /* 3437 */ // No operand predicates
5845 /* 3437 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5846 /* 3439 */ // Combiner Rule #43: mul_of_vscale
5847 /* 3439 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
5848 /* 3442 */ // Label 180: @3442
5849 /* 3442 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(3471), // Rule ID 464 //
5850 /* 3447 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule287Enabled),
5851 /* 3450 */ // MIs[0] dst
5852 /* 3450 */ // No operand predicates
5853 /* 3450 */ // MIs[0] ext1
5854 /* 3450 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5855 /* 3454 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5856 /* 3458 */ // MIs[1] src1
5857 /* 3458 */ // No operand predicates
5858 /* 3458 */ // MIs[0] ext2
5859 /* 3458 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5860 /* 3462 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
5861 /* 3466 */ // MIs[2] src2
5862 /* 3466 */ // No operand predicates
5863 /* 3466 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5864 /* 3468 */ // Combiner Rule #287: push_mul_through_zext
5865 /* 3468 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
5866 /* 3471 */ // Label 181: @3471
5867 /* 3471 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(3492), // Rule ID 85 //
5868 /* 3476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
5869 /* 3479 */ // MIs[0] dst
5870 /* 3479 */ // No operand predicates
5871 /* 3479 */ // MIs[0] __undef_to_int_zero_match_0.x
5872 /* 3479 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5873 /* 3483 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5874 /* 3487 */ // MIs[0] __undef_to_int_zero_match_0.y
5875 /* 3487 */ // No operand predicates
5876 /* 3487 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5877 /* 3489 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[1]]
5878 /* 3489 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
5879 /* 3492 */ // Label 182: @3492
5880 /* 3492 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(3532), // Rule ID 139 //
5881 /* 3497 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5882 /* 3500 */ // MIs[0] dst
5883 /* 3500 */ // No operand predicates
5884 /* 3500 */ // MIs[0] zero
5885 /* 3500 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5886 /* 3504 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5887 /* 3508 */ // MIs[1] Operand 1
5888 /* 3508 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5889 /* 3519 */ // MIs[0] rhs
5890 /* 3519 */ // No operand predicates
5891 /* 3519 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5892 /* 3524 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5893 /* 3526 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
5894 /* 3526 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5895 /* 3531 */ GIR_EraseRootFromParent_Done,
5896 /* 3532 */ // Label 183: @3532
5897 /* 3532 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(3553), // Rule ID 87 //
5898 /* 3537 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
5899 /* 3540 */ // MIs[0] dst
5900 /* 3540 */ // No operand predicates
5901 /* 3540 */ // MIs[0] __undef_to_int_zero_match_0.x
5902 /* 3540 */ // No operand predicates
5903 /* 3540 */ // MIs[0] __undef_to_int_zero_match_0.y
5904 /* 3540 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5905 /* 3544 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5906 /* 3548 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5907 /* 3550 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[3]]
5908 /* 3550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
5909 /* 3553 */ // Label 184: @3553
5910 /* 3553 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(3576), // Rule ID 140 //
5911 /* 3558 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5912 /* 3561 */ // MIs[0] dst
5913 /* 3561 */ // No operand predicates
5914 /* 3561 */ // MIs[0] lhs
5915 /* 3561 */ // No operand predicates
5916 /* 3561 */ // MIs[0] zero
5917 /* 3561 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5918 /* 3565 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5919 /* 3570 */ // Combiner Rule #94: binop_right_to_zero
5920 /* 3570 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5921 /* 3575 */ GIR_EraseRootFromParent_Done,
5922 /* 3576 */ // Label 185: @3576
5923 /* 3576 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(3599), // Rule ID 145 //
5924 /* 3581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5925 /* 3584 */ // MIs[0] dst
5926 /* 3584 */ // No operand predicates
5927 /* 3584 */ // MIs[0] x
5928 /* 3584 */ // No operand predicates
5929 /* 3584 */ // MIs[0] Operand 2
5930 /* 3584 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
5931 /* 3588 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5932 /* 3593 */ // Combiner Rule #99: right_identity_one_int
5933 /* 3593 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5934 /* 3598 */ GIR_EraseRootFromParent_Done,
5935 /* 3599 */ // Label 186: @3599
5936 /* 3599 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3610), // Rule ID 20 //
5937 /* 3604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
5938 /* 3607 */ // MIs[0] d
5939 /* 3607 */ // No operand predicates
5940 /* 3607 */ // MIs[0] op1
5941 /* 3607 */ // No operand predicates
5942 /* 3607 */ // MIs[0] op2
5943 /* 3607 */ // No operand predicates
5944 /* 3607 */ // Combiner Rule #20: mul_to_shl
5945 /* 3607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
5946 /* 3610 */ // Label 187: @3610
5947 /* 3610 */ GIM_Reject,
5948 /* 3611 */ // Label 4: @3611
5949 /* 3611 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3622), // Rule ID 247 //
5950 /* 3616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5951 /* 3619 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
5952 /* 3619 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
5953 /* 3622 */ // Label 188: @3622
5954 /* 3622 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3633), // Rule ID 283 //
5955 /* 3627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
5956 /* 3630 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SDIV'
5957 /* 3630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
5958 /* 3633 */ // Label 189: @3633
5959 /* 3633 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3644), // Rule ID 338 //
5960 /* 3638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
5961 /* 3641 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SDIV'
5962 /* 3641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
5963 /* 3644 */ // Label 190: @3644
5964 /* 3644 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3684), // Rule ID 135 //
5965 /* 3649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5966 /* 3652 */ // MIs[0] dst
5967 /* 3652 */ // No operand predicates
5968 /* 3652 */ // MIs[0] zero
5969 /* 3652 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5970 /* 3656 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5971 /* 3660 */ // MIs[1] Operand 1
5972 /* 3660 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5973 /* 3671 */ // MIs[0] rhs
5974 /* 3671 */ // No operand predicates
5975 /* 3671 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5976 /* 3676 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5977 /* 3678 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
5978 /* 3678 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5979 /* 3683 */ GIR_EraseRootFromParent_Done,
5980 /* 3684 */ // Label 191: @3684
5981 /* 3684 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3701), // Rule ID 362 //
5982 /* 3689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5983 /* 3692 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
5984 /* 3698 */ // MIs[0] dst
5985 /* 3698 */ // No operand predicates
5986 /* 3698 */ // MIs[0] x
5987 /* 3698 */ // No operand predicates
5988 /* 3698 */ // MIs[0] y
5989 /* 3698 */ // No operand predicates
5990 /* 3698 */ // Combiner Rule #220: sdiv_by_pow2
5991 /* 3698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
5992 /* 3701 */ // Label 192: @3701
5993 /* 3701 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3712), // Rule ID 364 //
5994 /* 3706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5995 /* 3709 */ // MIs[0] dst
5996 /* 3709 */ // No operand predicates
5997 /* 3709 */ // MIs[0] x
5998 /* 3709 */ // No operand predicates
5999 /* 3709 */ // MIs[0] y
6000 /* 3709 */ // No operand predicates
6001 /* 3709 */ // Combiner Rule #222: sdiv_by_const
6002 /* 3709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
6003 /* 3712 */ // Label 193: @3712
6004 /* 3712 */ GIM_Reject,
6005 /* 3713 */ // Label 5: @3713
6006 /* 3713 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3724), // Rule ID 248 //
6007 /* 3718 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6008 /* 3721 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
6009 /* 3721 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6010 /* 3724 */ // Label 194: @3724
6011 /* 3724 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3735), // Rule ID 282 //
6012 /* 3729 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6013 /* 3732 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UDIV'
6014 /* 3732 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6015 /* 3735 */ // Label 195: @3735
6016 /* 3735 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3746), // Rule ID 340 //
6017 /* 3740 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6018 /* 3743 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UDIV'
6019 /* 3743 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6020 /* 3746 */ // Label 196: @3746
6021 /* 3746 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3767), // Rule ID 91 //
6022 /* 3751 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6023 /* 3754 */ // MIs[0] dst
6024 /* 3754 */ // No operand predicates
6025 /* 3754 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
6026 /* 3754 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6027 /* 3758 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6028 /* 3762 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
6029 /* 3762 */ // No operand predicates
6030 /* 3762 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6031 /* 3764 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[1]]
6032 /* 3764 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
6033 /* 3767 */ // Label 197: @3767
6034 /* 3767 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3807), // Rule ID 136 //
6035 /* 3772 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6036 /* 3775 */ // MIs[0] dst
6037 /* 3775 */ // No operand predicates
6038 /* 3775 */ // MIs[0] zero
6039 /* 3775 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6040 /* 3779 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6041 /* 3783 */ // MIs[1] Operand 1
6042 /* 3783 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6043 /* 3794 */ // MIs[0] rhs
6044 /* 3794 */ // No operand predicates
6045 /* 3794 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6046 /* 3799 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6047 /* 3801 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
6048 /* 3801 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6049 /* 3806 */ GIR_EraseRootFromParent_Done,
6050 /* 3807 */ // Label 198: @3807
6051 /* 3807 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3824), // Rule ID 361 //
6052 /* 3812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
6053 /* 3815 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
6054 /* 3821 */ // MIs[0] dst
6055 /* 3821 */ // No operand predicates
6056 /* 3821 */ // MIs[0] x
6057 /* 3821 */ // No operand predicates
6058 /* 3821 */ // MIs[0] y
6059 /* 3821 */ // No operand predicates
6060 /* 3821 */ // Combiner Rule #219: udiv_by_pow2
6061 /* 3821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
6062 /* 3824 */ // Label 199: @3824
6063 /* 3824 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3835), // Rule ID 363 //
6064 /* 3829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
6065 /* 3832 */ // MIs[0] dst
6066 /* 3832 */ // No operand predicates
6067 /* 3832 */ // MIs[0] x
6068 /* 3832 */ // No operand predicates
6069 /* 3832 */ // MIs[0] y
6070 /* 3832 */ // No operand predicates
6071 /* 3832 */ // Combiner Rule #221: udiv_by_const
6072 /* 3832 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
6073 /* 3835 */ // Label 200: @3835
6074 /* 3835 */ GIM_Reject,
6075 /* 3836 */ // Label 6: @3836
6076 /* 3836 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3847), // Rule ID 249 //
6077 /* 3841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6078 /* 3844 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_SREM'
6079 /* 3844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6080 /* 3847 */ // Label 201: @3847
6081 /* 3847 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3858), // Rule ID 285 //
6082 /* 3852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6083 /* 3855 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SREM'
6084 /* 3855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6085 /* 3858 */ // Label 202: @3858
6086 /* 3858 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3869), // Rule ID 339 //
6087 /* 3863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6088 /* 3866 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SREM'
6089 /* 3866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6090 /* 3869 */ // Label 203: @3869
6091 /* 3869 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3909), // Rule ID 137 //
6092 /* 3874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6093 /* 3877 */ // MIs[0] dst
6094 /* 3877 */ // No operand predicates
6095 /* 3877 */ // MIs[0] zero
6096 /* 3877 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6097 /* 3881 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6098 /* 3885 */ // MIs[1] Operand 1
6099 /* 3885 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6100 /* 3896 */ // MIs[0] rhs
6101 /* 3896 */ // No operand predicates
6102 /* 3896 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6103 /* 3901 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6104 /* 3903 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
6105 /* 3903 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6106 /* 3908 */ GIR_EraseRootFromParent_Done,
6107 /* 3909 */ // Label 204: @3909
6108 /* 3909 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3920), // Rule ID 358 //
6109 /* 3914 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
6110 /* 3917 */ // MIs[0] dst
6111 /* 3917 */ // No operand predicates
6112 /* 3917 */ // MIs[0] x
6113 /* 3917 */ // No operand predicates
6114 /* 3917 */ // MIs[0] y
6115 /* 3917 */ // No operand predicates
6116 /* 3917 */ // Combiner Rule #216: srem_pow2_to_mask
6117 /* 3917 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
6118 /* 3920 */ // Label 205: @3920
6119 /* 3920 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3931), // Rule ID 360 //
6120 /* 3925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
6121 /* 3928 */ // MIs[0] dst
6122 /* 3928 */ // No operand predicates
6123 /* 3928 */ // MIs[0] x
6124 /* 3928 */ // No operand predicates
6125 /* 3928 */ // MIs[0] y
6126 /* 3928 */ // No operand predicates
6127 /* 3928 */ // Combiner Rule #218: srem_by_const
6128 /* 3928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
6129 /* 3931 */ // Label 206: @3931
6130 /* 3931 */ GIM_Reject,
6131 /* 3932 */ // Label 7: @3932
6132 /* 3932 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3943), // Rule ID 250 //
6133 /* 3937 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
6134 /* 3940 */ // Combiner Rule #178: div_rem_to_divrem; wip_match_opcode 'G_UREM'
6135 /* 3940 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6136 /* 3943 */ // Label 207: @3943
6137 /* 3943 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3954), // Rule ID 284 //
6138 /* 3948 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6139 /* 3951 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UREM'
6140 /* 3951 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6141 /* 3954 */ // Label 208: @3954
6142 /* 3954 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3965), // Rule ID 341 //
6143 /* 3959 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6144 /* 3962 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UREM'
6145 /* 3962 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6146 /* 3965 */ // Label 209: @3965
6147 /* 3965 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3986), // Rule ID 92 //
6148 /* 3970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
6149 /* 3973 */ // MIs[0] dst
6150 /* 3973 */ // No operand predicates
6151 /* 3973 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
6152 /* 3973 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6153 /* 3977 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6154 /* 3981 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
6155 /* 3981 */ // No operand predicates
6156 /* 3981 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6157 /* 3983 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[2]]
6158 /* 3983 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
6159 /* 3986 */ // Label 210: @3986
6160 /* 3986 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(4026), // Rule ID 138 //
6161 /* 3991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
6162 /* 3994 */ // MIs[0] dst
6163 /* 3994 */ // No operand predicates
6164 /* 3994 */ // MIs[0] zero
6165 /* 3994 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6166 /* 3998 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6167 /* 4002 */ // MIs[1] Operand 1
6168 /* 4002 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6169 /* 4013 */ // MIs[0] rhs
6170 /* 4013 */ // No operand predicates
6171 /* 4013 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6172 /* 4018 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6173 /* 4020 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
6174 /* 4020 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6175 /* 4025 */ GIR_EraseRootFromParent_Done,
6176 /* 4026 */ // Label 211: @4026
6177 /* 4026 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(4037), // Rule ID 198 //
6178 /* 4031 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
6179 /* 4034 */ // MIs[0] dst
6180 /* 4034 */ // No operand predicates
6181 /* 4034 */ // MIs[0] x
6182 /* 4034 */ // No operand predicates
6183 /* 4034 */ // MIs[0] y
6184 /* 4034 */ // No operand predicates
6185 /* 4034 */ // Combiner Rule #145: urem_pow2_to_mask
6186 /* 4034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6187 /* 4037 */ // Label 212: @4037
6188 /* 4037 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(4048), // Rule ID 359 //
6189 /* 4042 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
6190 /* 4045 */ // MIs[0] dst
6191 /* 4045 */ // No operand predicates
6192 /* 4045 */ // MIs[0] x
6193 /* 4045 */ // No operand predicates
6194 /* 4045 */ // MIs[0] y
6195 /* 4045 */ // No operand predicates
6196 /* 4045 */ // Combiner Rule #217: urem_by_const
6197 /* 4045 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
6198 /* 4048 */ // Label 213: @4048
6199 /* 4048 */ GIM_Reject,
6200 /* 4049 */ // Label 8: @4049
6201 /* 4049 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(4060), // Rule ID 162 //
6202 /* 4054 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6203 /* 4057 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
6204 /* 4057 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6205 /* 4060 */ // Label 214: @4060
6206 /* 4060 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(4071), // Rule ID 220 //
6207 /* 4065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
6208 /* 4068 */ // Combiner Rule #167: overlapping_and; wip_match_opcode 'G_AND'
6209 /* 4068 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
6210 /* 4071 */ // Label 215: @4071
6211 /* 4071 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(4082), // Rule ID 274 //
6212 /* 4076 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6213 /* 4079 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_AND'
6214 /* 4079 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6215 /* 4082 */ // Label 216: @4082
6216 /* 4082 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(4093), // Rule ID 335 //
6217 /* 4087 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6218 /* 4090 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_AND'
6219 /* 4090 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6220 /* 4093 */ // Label 217: @4093
6221 /* 4093 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(4104), // Rule ID 371 //
6222 /* 4098 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6223 /* 4101 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
6224 /* 4101 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6225 /* 4104 */ // Label 218: @4104
6226 /* 4104 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(4115), // Rule ID 441 //
6227 /* 4109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
6228 /* 4112 */ // Combiner Rule #269: binop_with_neg; wip_match_opcode 'G_AND'
6229 /* 4112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6230 /* 4115 */ // Label 219: @4115
6231 /* 4115 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(4201), // Rule ID 403 //
6232 /* 4120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6233 /* 4123 */ // MIs[0] root
6234 /* 4123 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6235 /* 4127 */ // MIs[0] or
6236 /* 4127 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6237 /* 4131 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6238 /* 4135 */ // MIs[1] x
6239 /* 4135 */ // No operand predicates
6240 /* 4135 */ // MIs[1] y
6241 /* 4135 */ // No operand predicates
6242 /* 4135 */ // MIs[0] not
6243 /* 4135 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6244 /* 4139 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6245 /* 4143 */ // MIs[2] y
6246 /* 4143 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6247 /* 4148 */ // MIs[2] Operand 2
6248 /* 4148 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6249 /* 4152 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6250 /* 4154 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6251 /* 4157 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6252 /* 4167 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6253 /* 4170 */ // Combiner Rule #234: and_xor_or_to_xor_and
6254 /* 4170 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6255 /* 4173 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6256 /* 4178 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6257 /* 4182 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6258 /* 4185 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6259 /* 4189 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6260 /* 4193 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6261 /* 4197 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6262 /* 4200 */ GIR_EraseRootFromParent_Done,
6263 /* 4201 */ // Label 220: @4201
6264 /* 4201 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(4299), // Rule ID 175 //
6265 /* 4206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
6266 /* 4209 */ // MIs[0] root
6267 /* 4209 */ // No operand predicates
6268 /* 4209 */ // MIs[0] d1
6269 /* 4209 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6270 /* 4213 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6271 /* 4217 */ // MIs[1] p
6272 /* 4217 */ // No operand predicates
6273 /* 4217 */ // MIs[1] s1
6274 /* 4217 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6275 /* 4221 */ // MIs[1] Operand 3
6276 /* 4221 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6277 /* 4225 */ // MIs[0] d2
6278 /* 4225 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6279 /* 4229 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6280 /* 4233 */ // MIs[2] p
6281 /* 4233 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6282 /* 4238 */ // MIs[2] s2
6283 /* 4238 */ // No operand predicates
6284 /* 4238 */ // MIs[2] Operand 3
6285 /* 4238 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6286 /* 4242 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6287 /* 4246 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6288 /* 4248 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6289 /* 4251 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6290 /* 4261 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6291 /* 4264 */ // Combiner Rule #122: double_icmp_zero_and_combine
6292 /* 4264 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6293 /* 4267 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6294 /* 4272 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6295 /* 4276 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6296 /* 4280 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6297 /* 4284 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6298 /* 4288 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6299 /* 4292 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6300 /* 4295 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6301 /* 4298 */ GIR_EraseRootFromParent_Done,
6302 /* 4299 */ // Label 221: @4299
6303 /* 4299 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(4336), // Rule ID 267 //
6304 /* 4304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6305 /* 4307 */ // MIs[0] root
6306 /* 4307 */ // No operand predicates
6307 /* 4307 */ // MIs[0] shift
6308 /* 4307 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6309 /* 4311 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6310 /* 4315 */ // MIs[1] x
6311 /* 4315 */ // No operand predicates
6312 /* 4315 */ // MIs[1] lsb
6313 /* 4315 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6314 /* 4319 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6315 /* 4323 */ // MIs[2] imm1
6316 /* 4323 */ // No operand predicates
6317 /* 4323 */ // MIs[0] mask
6318 /* 4323 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
6319 /* 4327 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6320 /* 4331 */ // MIs[3] imm2
6321 /* 4331 */ // No operand predicates
6322 /* 4331 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
6323 /* 4333 */ // Combiner Rule #191: bitfield_extract_from_and
6324 /* 4333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
6325 /* 4336 */ // Label 222: @4336
6326 /* 4336 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(4385), // Rule ID 402 //
6327 /* 4341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6328 /* 4344 */ // MIs[0] root
6329 /* 4344 */ // No operand predicates
6330 /* 4344 */ // MIs[0] or
6331 /* 4344 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6332 /* 4348 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
6333 /* 4352 */ // MIs[1] x
6334 /* 4352 */ // No operand predicates
6335 /* 4352 */ // MIs[1] not
6336 /* 4352 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6337 /* 4356 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6338 /* 4360 */ // MIs[2] y
6339 /* 4360 */ // No operand predicates
6340 /* 4360 */ // MIs[2] Operand 2
6341 /* 4360 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6342 /* 4364 */ // MIs[0] y
6343 /* 4364 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6344 /* 4369 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6345 /* 4371 */ // Combiner Rule #233: and_xor_or_to_and
6346 /* 4371 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
6347 /* 4374 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6348 /* 4376 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6349 /* 4380 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6350 /* 4384 */ GIR_EraseRootFromParent_Done,
6351 /* 4385 */ // Label 223: @4385
6352 /* 4385 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(4406), // Rule ID 84 //
6353 /* 4390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6354 /* 4393 */ // MIs[0] dst
6355 /* 4393 */ // No operand predicates
6356 /* 4393 */ // MIs[0] __undef_to_int_zero_match_0.x
6357 /* 4393 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6358 /* 4397 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6359 /* 4401 */ // MIs[0] __undef_to_int_zero_match_0.y
6360 /* 4401 */ // No operand predicates
6361 /* 4401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6362 /* 4403 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[0]]
6363 /* 4403 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
6364 /* 4406 */ // Label 224: @4406
6365 /* 4406 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(4430), // Rule ID 128 //
6366 /* 4411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6367 /* 4414 */ // MIs[0] dst
6368 /* 4414 */ // No operand predicates
6369 /* 4414 */ // MIs[0] src
6370 /* 4414 */ // No operand predicates
6371 /* 4414 */ // MIs[0] src
6372 /* 4414 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6373 /* 4419 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6374 /* 4424 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[0]]
6375 /* 4424 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6376 /* 4429 */ GIR_EraseRootFromParent_Done,
6377 /* 4430 */ // Label 225: @4430
6378 /* 4430 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(4451), // Rule ID 86 //
6379 /* 4435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6380 /* 4438 */ // MIs[0] dst
6381 /* 4438 */ // No operand predicates
6382 /* 4438 */ // MIs[0] __undef_to_int_zero_match_0.x
6383 /* 4438 */ // No operand predicates
6384 /* 4438 */ // MIs[0] __undef_to_int_zero_match_0.y
6385 /* 4438 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6386 /* 4442 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6387 /* 4446 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6388 /* 4448 */ // Combiner Rule #77: undef_to_int_zero @ [__undef_to_int_zero_match_0[2]]
6389 /* 4448 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
6390 /* 4451 */ // Label 226: @4451
6391 /* 4451 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(4462), // Rule ID 80 //
6392 /* 4456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
6393 /* 4459 */ // MIs[0] dst
6394 /* 4459 */ // No operand predicates
6395 /* 4459 */ // MIs[0] src1
6396 /* 4459 */ // No operand predicates
6397 /* 4459 */ // MIs[0] src2
6398 /* 4459 */ // No operand predicates
6399 /* 4459 */ // Combiner Rule #74: load_and_mask
6400 /* 4459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
6401 /* 4462 */ // Label 227: @4462
6402 /* 4462 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(4473), // Rule ID 182 //
6403 /* 4467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6404 /* 4470 */ // MIs[0] dst
6405 /* 4470 */ // No operand predicates
6406 /* 4470 */ // MIs[0] src1
6407 /* 4470 */ // No operand predicates
6408 /* 4470 */ // MIs[0] src2
6409 /* 4470 */ // No operand predicates
6410 /* 4470 */ // Combiner Rule #129: narrow_binop_feeding_and
6411 /* 4470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6412 /* 4473 */ // Label 228: @4473
6413 /* 4473 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4484), // Rule ID 196 //
6414 /* 4478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
6415 /* 4481 */ // MIs[0] dst
6416 /* 4481 */ // No operand predicates
6417 /* 4481 */ // MIs[0] src1
6418 /* 4481 */ // No operand predicates
6419 /* 4481 */ // MIs[0] src2
6420 /* 4481 */ // No operand predicates
6421 /* 4481 */ // Combiner Rule #143: redundant_and
6422 /* 4481 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6423 /* 4484 */ // Label 229: @4484
6424 /* 4484 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(4495), // Rule ID 323 //
6425 /* 4489 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6426 /* 4492 */ // MIs[0] dst
6427 /* 4492 */ // No operand predicates
6428 /* 4492 */ // MIs[0] src1
6429 /* 4492 */ // No operand predicates
6430 /* 4492 */ // MIs[0] src2
6431 /* 4492 */ // No operand predicates
6432 /* 4492 */ // Combiner Rule #206: and_or_disjoint_mask
6433 /* 4492 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6434 /* 4495 */ // Label 230: @4495
6435 /* 4495 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4506), // Rule ID 398 //
6436 /* 4500 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
6437 /* 4503 */ // MIs[0] dst
6438 /* 4503 */ // No operand predicates
6439 /* 4503 */ // MIs[0] src1
6440 /* 4503 */ // No operand predicates
6441 /* 4503 */ // MIs[0] src2
6442 /* 4503 */ // No operand predicates
6443 /* 4503 */ // Combiner Rule #229: match_ands
6444 /* 4503 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
6445 /* 4506 */ // Label 231: @4506
6446 /* 4506 */ GIM_Reject,
6447 /* 4507 */ // Label 9: @4507
6448 /* 4507 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4518), // Rule ID 163 //
6449 /* 4512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6450 /* 4515 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
6451 /* 4515 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6452 /* 4518 */ // Label 232: @4518
6453 /* 4518 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4529), // Rule ID 278 //
6454 /* 4523 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6455 /* 4526 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_OR'
6456 /* 4526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6457 /* 4529 */ // Label 233: @4529
6458 /* 4529 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4540), // Rule ID 336 //
6459 /* 4534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6460 /* 4537 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_OR'
6461 /* 4537 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6462 /* 4540 */ // Label 234: @4540
6463 /* 4540 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4551), // Rule ID 372 //
6464 /* 4545 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6465 /* 4548 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
6466 /* 4548 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6467 /* 4551 */ // Label 235: @4551
6468 /* 4551 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4562), // Rule ID 442 //
6469 /* 4556 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
6470 /* 4559 */ // Combiner Rule #269: binop_with_neg; wip_match_opcode 'G_OR'
6471 /* 4559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6472 /* 4562 */ // Label 236: @4562
6473 /* 4562 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4648), // Rule ID 401 //
6474 /* 4567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6475 /* 4570 */ // MIs[0] root
6476 /* 4570 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6477 /* 4574 */ // MIs[0] and
6478 /* 4574 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6479 /* 4578 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6480 /* 4582 */ // MIs[1] x
6481 /* 4582 */ // No operand predicates
6482 /* 4582 */ // MIs[1] y
6483 /* 4582 */ // No operand predicates
6484 /* 4582 */ // MIs[0] not
6485 /* 4582 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6486 /* 4586 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6487 /* 4590 */ // MIs[2] y
6488 /* 4590 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6489 /* 4595 */ // MIs[2] Operand 2
6490 /* 4595 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6491 /* 4599 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6492 /* 4601 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6493 /* 4604 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
6494 /* 4614 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6495 /* 4617 */ // Combiner Rule #232: or_and_xor_to_xor_or
6496 /* 4617 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
6497 /* 4620 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6498 /* 4625 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6499 /* 4629 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
6500 /* 4632 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6501 /* 4636 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6502 /* 4640 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // x
6503 /* 4644 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6504 /* 4647 */ GIR_EraseRootFromParent_Done,
6505 /* 4648 */ // Label 237: @4648
6506 /* 4648 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4695), // Rule ID 258 //
6507 /* 4653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6508 /* 4656 */ // MIs[0] root
6509 /* 4656 */ // No operand predicates
6510 /* 4656 */ // MIs[0] out1
6511 /* 4656 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6512 /* 4660 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
6513 /* 4664 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6514 /* 4664 */ // No operand predicates
6515 /* 4664 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6516 /* 4664 */ // No operand predicates
6517 /* 4664 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6518 /* 4664 */ // No operand predicates
6519 /* 4664 */ // MIs[0] out2
6520 /* 4664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6521 /* 4668 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
6522 /* 4672 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6523 /* 4672 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6524 /* 4677 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6525 /* 4677 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6526 /* 4682 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6527 /* 4687 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6528 /* 4689 */ // Combiner Rule #184: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
6529 /* 4689 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6530 /* 4694 */ GIR_EraseRootFromParent_Done,
6531 /* 4695 */ // Label 238: @4695
6532 /* 4695 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4742), // Rule ID 260 //
6533 /* 4700 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6534 /* 4703 */ // MIs[0] root
6535 /* 4703 */ // No operand predicates
6536 /* 4703 */ // MIs[0] out1
6537 /* 4703 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6538 /* 4707 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
6539 /* 4711 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6540 /* 4711 */ // No operand predicates
6541 /* 4711 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6542 /* 4711 */ // No operand predicates
6543 /* 4711 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6544 /* 4711 */ // No operand predicates
6545 /* 4711 */ // MIs[0] out2
6546 /* 4711 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6547 /* 4715 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6548 /* 4719 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6549 /* 4719 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
6550 /* 4724 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6551 /* 4724 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
6552 /* 4729 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6553 /* 4734 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6554 /* 4736 */ // Combiner Rule #185: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
6555 /* 4736 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6556 /* 4741 */ GIR_EraseRootFromParent_Done,
6557 /* 4742 */ // Label 239: @4742
6558 /* 4742 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4840), // Rule ID 176 //
6559 /* 4747 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6560 /* 4750 */ // MIs[0] root
6561 /* 4750 */ // No operand predicates
6562 /* 4750 */ // MIs[0] d1
6563 /* 4750 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6564 /* 4754 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6565 /* 4758 */ // MIs[1] p
6566 /* 4758 */ // No operand predicates
6567 /* 4758 */ // MIs[1] s1
6568 /* 4758 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
6569 /* 4762 */ // MIs[1] Operand 3
6570 /* 4762 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
6571 /* 4766 */ // MIs[0] d2
6572 /* 4766 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6573 /* 4770 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
6574 /* 4774 */ // MIs[2] p
6575 /* 4774 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6576 /* 4779 */ // MIs[2] s2
6577 /* 4779 */ // No operand predicates
6578 /* 4779 */ // MIs[2] Operand 3
6579 /* 4779 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
6580 /* 4783 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
6581 /* 4787 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6582 /* 4789 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
6583 /* 4792 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
6584 /* 4802 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6585 /* 4805 */ // Combiner Rule #123: double_icmp_zero_or_combine
6586 /* 4805 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6587 /* 4808 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
6588 /* 4813 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
6589 /* 4817 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
6590 /* 4821 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
6591 /* 4825 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
6592 /* 4829 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
6593 /* 4833 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
6594 /* 4836 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
6595 /* 4839 */ GIR_EraseRootFromParent_Done,
6596 /* 4840 */ // Label 240: @4840
6597 /* 4840 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4889), // Rule ID 400 //
6598 /* 4845 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6599 /* 4848 */ // MIs[0] root
6600 /* 4848 */ // No operand predicates
6601 /* 4848 */ // MIs[0] and
6602 /* 4848 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6603 /* 4852 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6604 /* 4856 */ // MIs[1] x
6605 /* 4856 */ // No operand predicates
6606 /* 4856 */ // MIs[1] not
6607 /* 4856 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
6608 /* 4860 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_XOR),
6609 /* 4864 */ // MIs[2] y
6610 /* 4864 */ // No operand predicates
6611 /* 4864 */ // MIs[2] Operand 2
6612 /* 4864 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/2, 255,
6613 /* 4868 */ // MIs[0] y
6614 /* 4868 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
6615 /* 4873 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6616 /* 4875 */ // Combiner Rule #231: or_and_xor_to_or
6617 /* 4875 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6618 /* 4878 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6619 /* 4880 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6620 /* 4884 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
6621 /* 4888 */ GIR_EraseRootFromParent_Done,
6622 /* 4889 */ // Label 241: @4889
6623 /* 4889 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4923), // Rule ID 452 //
6624 /* 4894 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6625 /* 4897 */ // MIs[0] dst
6626 /* 4897 */ // No operand predicates
6627 /* 4897 */ // MIs[0] __combine_or_of_and_match_0.and
6628 /* 4897 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6629 /* 4901 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6630 /* 4905 */ // MIs[1] x
6631 /* 4905 */ // No operand predicates
6632 /* 4905 */ // MIs[1] y
6633 /* 4905 */ // No operand predicates
6634 /* 4905 */ // MIs[0] x
6635 /* 4905 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6636 /* 4910 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6637 /* 4915 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6638 /* 4917 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[0]]
6639 /* 4917 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
6640 /* 4922 */ GIR_EraseRootFromParent_Done,
6641 /* 4923 */ // Label 242: @4923
6642 /* 4923 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4957), // Rule ID 453 //
6643 /* 4928 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6644 /* 4931 */ // MIs[0] dst
6645 /* 4931 */ // No operand predicates
6646 /* 4931 */ // MIs[0] __combine_or_of_and_match_0.and
6647 /* 4931 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6648 /* 4935 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6649 /* 4939 */ // MIs[1] y
6650 /* 4939 */ // No operand predicates
6651 /* 4939 */ // MIs[1] x
6652 /* 4939 */ // No operand predicates
6653 /* 4939 */ // MIs[0] x
6654 /* 4939 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6655 /* 4944 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6656 /* 4949 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6657 /* 4951 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[1]]
6658 /* 4951 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
6659 /* 4956 */ GIR_EraseRootFromParent_Done,
6660 /* 4957 */ // Label 243: @4957
6661 /* 4957 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(5004), // Rule ID 261 //
6662 /* 4962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
6663 /* 4965 */ // MIs[0] root
6664 /* 4965 */ // No operand predicates
6665 /* 4965 */ // MIs[0] out2
6666 /* 4965 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6667 /* 4969 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
6668 /* 4973 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6669 /* 4973 */ // No operand predicates
6670 /* 4973 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6671 /* 4973 */ // No operand predicates
6672 /* 4973 */ // MIs[0] out1
6673 /* 4973 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6674 /* 4977 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
6675 /* 4981 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
6676 /* 4981 */ // No operand predicates
6677 /* 4981 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
6678 /* 4981 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
6679 /* 4986 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
6680 /* 4986 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6681 /* 4991 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6682 /* 4996 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6683 /* 4998 */ // Combiner Rule #185: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
6684 /* 4998 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6685 /* 5003 */ GIR_EraseRootFromParent_Done,
6686 /* 5004 */ // Label 244: @5004
6687 /* 5004 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(5051), // Rule ID 259 //
6688 /* 5009 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6689 /* 5012 */ // MIs[0] root
6690 /* 5012 */ // No operand predicates
6691 /* 5012 */ // MIs[0] out2
6692 /* 5012 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6693 /* 5016 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
6694 /* 5020 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6695 /* 5020 */ // No operand predicates
6696 /* 5020 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6697 /* 5020 */ // No operand predicates
6698 /* 5020 */ // MIs[0] out1
6699 /* 5020 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6700 /* 5024 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
6701 /* 5028 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
6702 /* 5028 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6703 /* 5033 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
6704 /* 5033 */ // No operand predicates
6705 /* 5033 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
6706 /* 5033 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
6707 /* 5038 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6708 /* 5043 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6709 /* 5045 */ // Combiner Rule #184: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
6710 /* 5045 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
6711 /* 5050 */ GIR_EraseRootFromParent_Done,
6712 /* 5051 */ // Label 245: @5051
6713 /* 5051 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(5101), // Rule ID 405 //
6714 /* 5056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6715 /* 5059 */ // MIs[0] root
6716 /* 5059 */ // No operand predicates
6717 /* 5059 */ // MIs[0] xor
6718 /* 5059 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6719 /* 5063 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6720 /* 5067 */ // MIs[1] x
6721 /* 5067 */ // No operand predicates
6722 /* 5067 */ // MIs[1] y
6723 /* 5067 */ // No operand predicates
6724 /* 5067 */ // MIs[0] and
6725 /* 5067 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6726 /* 5071 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_AND),
6727 /* 5075 */ // MIs[2] x
6728 /* 5075 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6729 /* 5080 */ // MIs[2] y
6730 /* 5080 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6731 /* 5085 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6732 /* 5087 */ // Combiner Rule #236: or_xor_and
6733 /* 5087 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6734 /* 5090 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6735 /* 5092 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6736 /* 5096 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6737 /* 5100 */ GIR_EraseRootFromParent_Done,
6738 /* 5101 */ // Label 246: @5101
6739 /* 5101 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(5151), // Rule ID 404 //
6740 /* 5106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
6741 /* 5109 */ // MIs[0] root
6742 /* 5109 */ // No operand predicates
6743 /* 5109 */ // MIs[0] xor
6744 /* 5109 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6745 /* 5113 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
6746 /* 5117 */ // MIs[1] x
6747 /* 5117 */ // No operand predicates
6748 /* 5117 */ // MIs[1] y
6749 /* 5117 */ // No operand predicates
6750 /* 5117 */ // MIs[0] or
6751 /* 5117 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6752 /* 5121 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_OR),
6753 /* 5125 */ // MIs[2] x
6754 /* 5125 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
6755 /* 5130 */ // MIs[2] y
6756 /* 5130 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
6757 /* 5135 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6758 /* 5137 */ // Combiner Rule #235: or_xor_or
6759 /* 5137 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
6760 /* 5140 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6761 /* 5142 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6762 /* 5146 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // y
6763 /* 5150 */ GIR_EraseRootFromParent_Done,
6764 /* 5151 */ // Label 247: @5151
6765 /* 5151 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(5172), // Rule ID 88 //
6766 /* 5156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6767 /* 5159 */ // MIs[0] dst
6768 /* 5159 */ // No operand predicates
6769 /* 5159 */ // MIs[0] __undef_to_negative_one_match_0.x
6770 /* 5159 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6771 /* 5163 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6772 /* 5167 */ // MIs[0] __undef_to_negative_one_match_0.y
6773 /* 5167 */ // No operand predicates
6774 /* 5167 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6775 /* 5169 */ // Combiner Rule #78: undef_to_negative_one @ [__undef_to_negative_one_match_0[0]]
6776 /* 5169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
6777 /* 5172 */ // Label 248: @5172
6778 /* 5172 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(5196), // Rule ID 129 //
6779 /* 5177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
6780 /* 5180 */ // MIs[0] dst
6781 /* 5180 */ // No operand predicates
6782 /* 5180 */ // MIs[0] src
6783 /* 5180 */ // No operand predicates
6784 /* 5180 */ // MIs[0] src
6785 /* 5180 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6786 /* 5185 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6787 /* 5190 */ // Combiner Rule #91: binop_same_val @ [__binop_same_val_match_0[1]]
6788 /* 5190 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6789 /* 5195 */ GIR_EraseRootFromParent_Done,
6790 /* 5196 */ // Label 249: @5196
6791 /* 5196 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(5230), // Rule ID 454 //
6792 /* 5201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6793 /* 5204 */ // MIs[0] dst
6794 /* 5204 */ // No operand predicates
6795 /* 5204 */ // MIs[0] x
6796 /* 5204 */ // No operand predicates
6797 /* 5204 */ // MIs[0] __combine_or_of_and_match_0.and
6798 /* 5204 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6799 /* 5208 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6800 /* 5212 */ // MIs[1] x
6801 /* 5212 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
6802 /* 5217 */ // MIs[1] y
6803 /* 5217 */ // No operand predicates
6804 /* 5217 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6805 /* 5222 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6806 /* 5224 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[2]]
6807 /* 5224 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6808 /* 5229 */ GIR_EraseRootFromParent_Done,
6809 /* 5230 */ // Label 250: @5230
6810 /* 5230 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(5264), // Rule ID 455 //
6811 /* 5235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule278Enabled),
6812 /* 5238 */ // MIs[0] dst
6813 /* 5238 */ // No operand predicates
6814 /* 5238 */ // MIs[0] x
6815 /* 5238 */ // No operand predicates
6816 /* 5238 */ // MIs[0] __combine_or_of_and_match_0.and
6817 /* 5238 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6818 /* 5242 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
6819 /* 5246 */ // MIs[1] y
6820 /* 5246 */ // No operand predicates
6821 /* 5246 */ // MIs[1] x
6822 /* 5246 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6823 /* 5251 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6824 /* 5256 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6825 /* 5258 */ // Combiner Rule #278: combine_or_of_and @ [__combine_or_of_and_match_0[3]]
6826 /* 5258 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6827 /* 5263 */ GIR_EraseRootFromParent_Done,
6828 /* 5264 */ // Label 251: @5264
6829 /* 5264 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(5285), // Rule ID 89 //
6830 /* 5269 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6831 /* 5272 */ // MIs[0] dst
6832 /* 5272 */ // No operand predicates
6833 /* 5272 */ // MIs[0] __undef_to_negative_one_match_0.x
6834 /* 5272 */ // No operand predicates
6835 /* 5272 */ // MIs[0] __undef_to_negative_one_match_0.y
6836 /* 5272 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6837 /* 5276 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6838 /* 5280 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6839 /* 5282 */ // Combiner Rule #78: undef_to_negative_one @ [__undef_to_negative_one_match_0[1]]
6840 /* 5282 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
6841 /* 5285 */ // Label 252: @5285
6842 /* 5285 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(5308), // Rule ID 120 //
6843 /* 5290 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6844 /* 5293 */ // MIs[0] dst
6845 /* 5293 */ // No operand predicates
6846 /* 5293 */ // MIs[0] lhs
6847 /* 5293 */ // No operand predicates
6848 /* 5293 */ // MIs[0] Operand 2
6849 /* 5293 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6850 /* 5297 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6851 /* 5302 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[2]]
6852 /* 5302 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6853 /* 5307 */ GIR_EraseRootFromParent_Done,
6854 /* 5308 */ // Label 253: @5308
6855 /* 5308 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(5319), // Rule ID 197 //
6856 /* 5313 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
6857 /* 5316 */ // MIs[0] dst
6858 /* 5316 */ // No operand predicates
6859 /* 5316 */ // MIs[0] src1
6860 /* 5316 */ // No operand predicates
6861 /* 5316 */ // MIs[0] src2
6862 /* 5316 */ // No operand predicates
6863 /* 5316 */ // Combiner Rule #144: redundant_or
6864 /* 5316 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6865 /* 5319 */ // Label 254: @5319
6866 /* 5319 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(5330), // Rule ID 246 //
6867 /* 5324 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6868 /* 5327 */ // MIs[0] dst
6869 /* 5327 */ // No operand predicates
6870 /* 5327 */ // MIs[0] src1
6871 /* 5327 */ // No operand predicates
6872 /* 5327 */ // MIs[0] src2
6873 /* 5327 */ // No operand predicates
6874 /* 5327 */ // Combiner Rule #177: load_or_combine
6875 /* 5327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
6876 /* 5330 */ // Label 255: @5330
6877 /* 5330 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(5341), // Rule ID 251 //
6878 /* 5335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6879 /* 5338 */ // MIs[0] dst
6880 /* 5338 */ // No operand predicates
6881 /* 5338 */ // MIs[0] src1
6882 /* 5338 */ // No operand predicates
6883 /* 5338 */ // MIs[0] src2
6884 /* 5338 */ // No operand predicates
6885 /* 5338 */ // Combiner Rule #179: funnel_shift_from_or_shift
6886 /* 5338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6887 /* 5341 */ // Label 256: @5341
6888 /* 5341 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(5352), // Rule ID 399 //
6889 /* 5346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
6890 /* 5349 */ // MIs[0] dst
6891 /* 5349 */ // No operand predicates
6892 /* 5349 */ // MIs[0] src1
6893 /* 5349 */ // No operand predicates
6894 /* 5349 */ // MIs[0] src2
6895 /* 5349 */ // No operand predicates
6896 /* 5349 */ // Combiner Rule #230: match_ors
6897 /* 5349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
6898 /* 5352 */ // Label 257: @5352
6899 /* 5352 */ GIM_Reject,
6900 /* 5353 */ // Label 10: @5353
6901 /* 5353 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(5364), // Rule ID 164 //
6902 /* 5358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
6903 /* 5361 */ // Combiner Rule #113: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
6904 /* 5361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
6905 /* 5364 */ // Label 258: @5364
6906 /* 5364 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(5375), // Rule ID 281 //
6907 /* 5369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6908 /* 5372 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_XOR'
6909 /* 5372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6910 /* 5375 */ // Label 259: @5375
6911 /* 5375 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(5386), // Rule ID 337 //
6912 /* 5380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6913 /* 5383 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_XOR'
6914 /* 5383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6915 /* 5386 */ // Label 260: @5386
6916 /* 5386 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(5397), // Rule ID 373 //
6917 /* 5391 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
6918 /* 5394 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
6919 /* 5394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6920 /* 5397 */ // Label 261: @5397
6921 /* 5397 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(5408), // Rule ID 443 //
6922 /* 5402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule269Enabled),
6923 /* 5405 */ // Combiner Rule #269: binop_with_neg; wip_match_opcode 'G_XOR'
6924 /* 5405 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
6925 /* 5408 */ // Label 262: @5408
6926 /* 5408 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(5468), // Rule ID 13 //
6927 /* 5413 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
6928 /* 5416 */ // MIs[0] root
6929 /* 5416 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
6930 /* 5420 */ // MIs[0] add
6931 /* 5420 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6932 /* 5424 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
6933 /* 5428 */ // MIs[1] A
6934 /* 5428 */ // No operand predicates
6935 /* 5428 */ // MIs[1] Operand 2
6936 /* 5428 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
6937 /* 5432 */ // MIs[0] Operand 2
6938 /* 5432 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
6939 /* 5436 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
6940 /* 5440 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6941 /* 5442 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6942 /* 5445 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6943 /* 5455 */ // Combiner Rule #13: NotAPlusNegOne
6944 /* 5455 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
6945 /* 5458 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
6946 /* 5460 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6947 /* 5463 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
6948 /* 5467 */ GIR_EraseRootFromParent_Done,
6949 /* 5468 */ // Label 263: @5468
6950 /* 5468 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(5489), // Rule ID 106 //
6951 /* 5473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6952 /* 5476 */ // MIs[0] dst
6953 /* 5476 */ // No operand predicates
6954 /* 5476 */ // MIs[0] __propagate_undef_any_op_match_0.x
6955 /* 5476 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6956 /* 5480 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6957 /* 5484 */ // MIs[0] __propagate_undef_any_op_match_0.y
6958 /* 5484 */ // No operand predicates
6959 /* 5484 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6960 /* 5486 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[2]]
6961 /* 5486 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
6962 /* 5489 */ // Label 264: @5489
6963 /* 5489 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(5528), // Rule ID 131 //
6964 /* 5494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
6965 /* 5497 */ // MIs[0] dst
6966 /* 5497 */ // No operand predicates
6967 /* 5497 */ // MIs[0] x
6968 /* 5497 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
6969 /* 5501 */ // MIs[0] x
6970 /* 5501 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
6971 /* 5506 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
6972 /* 5509 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
6973 /* 5519 */ // Combiner Rule #92: same_val_zero @ [__same_val_zero_match_0[1]]
6974 /* 5519 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6975 /* 5522 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6976 /* 5524 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
6977 /* 5527 */ GIR_EraseRootFromParent_Done,
6978 /* 5528 */ // Label 265: @5528
6979 /* 5528 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(5549), // Rule ID 109 //
6980 /* 5533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
6981 /* 5536 */ // MIs[0] dst
6982 /* 5536 */ // No operand predicates
6983 /* 5536 */ // MIs[0] __propagate_undef_any_op_match_0.x
6984 /* 5536 */ // No operand predicates
6985 /* 5536 */ // MIs[0] __propagate_undef_any_op_match_0.y
6986 /* 5536 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
6987 /* 5540 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6988 /* 5544 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6989 /* 5546 */ // Combiner Rule #83: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[5]]
6990 /* 5546 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
6991 /* 5549 */ // Label 266: @5549
6992 /* 5549 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(5572), // Rule ID 121 //
6993 /* 5554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6994 /* 5557 */ // MIs[0] dst
6995 /* 5557 */ // No operand predicates
6996 /* 5557 */ // MIs[0] lhs
6997 /* 5557 */ // No operand predicates
6998 /* 5557 */ // MIs[0] Operand 2
6999 /* 5557 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7000 /* 5561 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7001 /* 5566 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[3]]
7002 /* 5566 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7003 /* 5571 */ GIR_EraseRootFromParent_Done,
7004 /* 5572 */ // Label 267: @5572
7005 /* 5572 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(5583), // Rule ID 202 //
7006 /* 5577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
7007 /* 5580 */ // MIs[0] dst
7008 /* 5580 */ // No operand predicates
7009 /* 5580 */ // MIs[0] src1
7010 /* 5580 */ // No operand predicates
7011 /* 5580 */ // MIs[0] src2
7012 /* 5580 */ // No operand predicates
7013 /* 5580 */ // Combiner Rule #149: not_cmp_fold
7014 /* 5580 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
7015 /* 5583 */ // Label 268: @5583
7016 /* 5583 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(5594), // Rule ID 234 //
7017 /* 5588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
7018 /* 5591 */ // MIs[0] dst
7019 /* 5591 */ // No operand predicates
7020 /* 5591 */ // MIs[0] src1
7021 /* 5591 */ // No operand predicates
7022 /* 5591 */ // MIs[0] src2
7023 /* 5591 */ // No operand predicates
7024 /* 5591 */ // Combiner Rule #173: xor_of_and_with_same_reg
7025 /* 5591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7026 /* 5594 */ // Label 269: @5594
7027 /* 5594 */ GIM_Reject,
7028 /* 5595 */ // Label 11: @5595
7029 /* 5595 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(5609), // Rule ID 159 //
7030 /* 5600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7031 /* 5603 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7032 /* 5606 */ // MIs[0] dst
7033 /* 5606 */ // No operand predicates
7034 /* 5606 */ // MIs[0] srcs
7035 /* 5606 */ // No operand predicates
7036 /* 5606 */ // Combiner Rule #111: extend_through_phis
7037 /* 5606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
7038 /* 5609 */ // Label 270: @5609
7039 /* 5609 */ GIM_Reject,
7040 /* 5610 */ // Label 12: @5610
7041 /* 5610 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(5621), // Rule ID 459 //
7042 /* 5615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule282Enabled),
7043 /* 5618 */ // Combiner Rule #282: fold_global_offset; wip_match_opcode 'G_GLOBAL_VALUE'
7044 /* 5618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
7045 /* 5621 */ // Label 271: @5621
7046 /* 5621 */ GIM_Reject,
7047 /* 5622 */ // Label 13: @5622
7048 /* 5622 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(5633), // Rule ID 415 //
7049 /* 5627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule246Enabled),
7050 /* 5630 */ // Combiner Rule #246: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
7051 /* 5630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
7052 /* 5633 */ // Label 272: @5633
7053 /* 5633 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(5644), // Rule ID 416 //
7054 /* 5638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule247Enabled),
7055 /* 5641 */ // Combiner Rule #247: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
7056 /* 5641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
7057 /* 5644 */ // Label 273: @5644
7058 /* 5644 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(5655), // Rule ID 418 //
7059 /* 5649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule249Enabled),
7060 /* 5652 */ // Combiner Rule #249: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
7061 /* 5652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
7062 /* 5655 */ // Label 274: @5655
7063 /* 5655 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(5666), // Rule ID 419 //
7064 /* 5660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule250Enabled),
7065 /* 5663 */ // Combiner Rule #250: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
7066 /* 5663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
7067 /* 5666 */ // Label 275: @5666
7068 /* 5666 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(5677), // Rule ID 420 //
7069 /* 5671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule251Enabled),
7070 /* 5674 */ // Combiner Rule #251: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
7071 /* 5674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7072 /* 5677 */ // Label 276: @5677
7073 /* 5677 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(5688), // Rule ID 421 //
7074 /* 5682 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule252Enabled),
7075 /* 5685 */ // Combiner Rule #252: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
7076 /* 5685 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7077 /* 5688 */ // Label 277: @5688
7078 /* 5688 */ GIM_Reject,
7079 /* 5689 */ // Label 14: @5689
7080 /* 5689 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(5703), // Rule ID 417 //
7081 /* 5694 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule248Enabled),
7082 /* 5697 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7083 /* 5700 */ // MIs[0] dst
7084 /* 5700 */ // No operand predicates
7085 /* 5700 */ // MIs[0] merge_srcs
7086 /* 5700 */ // No operand predicates
7087 /* 5700 */ // Combiner Rule #248: merge_unmerge
7088 /* 5700 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
7089 /* 5703 */ // Label 278: @5703
7090 /* 5703 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(5765),
7091 /* 5708 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
7092 /* 5711 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(5732), // Rule ID 422 //
7093 /* 5716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule253Enabled),
7094 /* 5719 */ // MIs[0] root
7095 /* 5719 */ // No operand predicates
7096 /* 5719 */ // MIs[0] x
7097 /* 5719 */ // No operand predicates
7098 /* 5719 */ // MIs[0] undef
7099 /* 5719 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7100 /* 5723 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7101 /* 5727 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7102 /* 5729 */ // Combiner Rule #253: merge_of_x_and_undef
7103 /* 5729 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7104 /* 5732 */ // Label 280: @5732
7105 /* 5732 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(5764), // Rule ID 423 //
7106 /* 5737 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule254Enabled),
7107 /* 5740 */ // MIs[0] root
7108 /* 5740 */ // No operand predicates
7109 /* 5740 */ // MIs[0] x
7110 /* 5740 */ // No operand predicates
7111 /* 5740 */ // MIs[0] zero
7112 /* 5740 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7113 /* 5744 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7114 /* 5748 */ // MIs[1] Operand 1
7115 /* 5748 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
7116 /* 5759 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7117 /* 5761 */ // Combiner Rule #254: merge_of_x_and_zero
7118 /* 5761 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
7119 /* 5764 */ // Label 281: @5764
7120 /* 5764 */ GIM_Reject,
7121 /* 5765 */ // Label 279: @5765
7122 /* 5765 */ GIM_Reject,
7123 /* 5766 */ // Label 15: @5766
7124 /* 5766 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(5777), // Rule ID 111 //
7125 /* 5771 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
7126 /* 5774 */ // Combiner Rule #84: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
7127 /* 5774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7128 /* 5777 */ // Label 282: @5777
7129 /* 5777 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(5788), // Rule ID 150 //
7130 /* 5782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
7131 /* 5785 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
7132 /* 5785 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
7133 /* 5788 */ // Label 283: @5788
7134 /* 5788 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(5830),
7135 /* 5793 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7136 /* 5796 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5807), // Rule ID 76 //
7137 /* 5801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
7138 /* 5804 */ // MIs[0] dst
7139 /* 5804 */ // No operand predicates
7140 /* 5804 */ // MIs[0] srcs
7141 /* 5804 */ // No operand predicates
7142 /* 5804 */ // Combiner Rule #72: extract_all_elts_from_build_vector
7143 /* 5804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7144 /* 5807 */ // Label 285: @5807
7145 /* 5807 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5818), // Rule ID 414 //
7146 /* 5812 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule245Enabled),
7147 /* 5815 */ // MIs[0] dst
7148 /* 5815 */ // No operand predicates
7149 /* 5815 */ // MIs[0] unused
7150 /* 5815 */ // No operand predicates
7151 /* 5815 */ // Combiner Rule #245: combine_use_vector_truncate
7152 /* 5815 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
7153 /* 5818 */ // Label 286: @5818
7154 /* 5818 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5829), // Rule ID 424 //
7155 /* 5823 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule255Enabled),
7156 /* 5826 */ // MIs[0] dst
7157 /* 5826 */ // No operand predicates
7158 /* 5826 */ // MIs[0] unused
7159 /* 5826 */ // No operand predicates
7160 /* 5826 */ // Combiner Rule #255: combine_build_unmerge
7161 /* 5826 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
7162 /* 5829 */ // Label 287: @5829
7163 /* 5829 */ GIM_Reject,
7164 /* 5830 */ // Label 284: @5830
7165 /* 5830 */ GIM_Reject,
7166 /* 5831 */ // Label 16: @5831
7167 /* 5831 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5842), // Rule ID 149 //
7168 /* 5836 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
7169 /* 5839 */ // Combiner Rule #102: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
7170 /* 5839 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
7171 /* 5842 */ // Label 288: @5842
7172 /* 5842 */ GIM_Reject,
7173 /* 5843 */ // Label 17: @5843
7174 /* 5843 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5857), // Rule ID 407 //
7175 /* 5848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
7176 /* 5851 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
7177 /* 5854 */ // MIs[0] dst
7178 /* 5854 */ // No operand predicates
7179 /* 5854 */ // MIs[0] srcs
7180 /* 5854 */ // No operand predicates
7181 /* 5854 */ // Combiner Rule #238: combine_concat_vector
7182 /* 5854 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7183 /* 5857 */ // Label 289: @5857
7184 /* 5857 */ GIM_Reject,
7185 /* 5858 */ // Label 18: @5858
7186 /* 5858 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5879), // Rule ID 142 //
7187 /* 5863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
7188 /* 5866 */ // MIs[0] dst
7189 /* 5866 */ // No operand predicates
7190 /* 5866 */ // MIs[0] t
7191 /* 5866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7192 /* 5870 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
7193 /* 5874 */ // MIs[1] ptr
7194 /* 5874 */ // No operand predicates
7195 /* 5874 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7196 /* 5876 */ // Combiner Rule #96: i2p_to_p2i
7197 /* 5876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
7198 /* 5879 */ // Label 290: @5879
7199 /* 5879 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5900), // Rule ID 100 //
7200 /* 5884 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7201 /* 5887 */ // MIs[0] dst
7202 /* 5887 */ // No operand predicates
7203 /* 5887 */ // MIs[0] __unary_undef_to_undef_match_0.x
7204 /* 5887 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7205 /* 5891 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7206 /* 5895 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7207 /* 5897 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
7208 /* 5897 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7209 /* 5900 */ // Label 291: @5900
7210 /* 5900 */ GIM_Reject,
7211 /* 5901 */ // Label 19: @5901
7212 /* 5901 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5934), // Rule ID 141 //
7213 /* 5906 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
7214 /* 5909 */ // MIs[0] dst
7215 /* 5909 */ // No operand predicates
7216 /* 5909 */ // MIs[0] mid
7217 /* 5909 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7218 /* 5913 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
7219 /* 5917 */ // MIs[1] x
7220 /* 5917 */ // No operand predicates
7221 /* 5917 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
7222 /* 5921 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7223 /* 5926 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7224 /* 5928 */ // Combiner Rule #95: p2i_to_i2p
7225 /* 5928 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7226 /* 5933 */ GIR_EraseRootFromParent_Done,
7227 /* 5934 */ // Label 292: @5934
7228 /* 5934 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5955), // Rule ID 101 //
7229 /* 5939 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7230 /* 5942 */ // MIs[0] dst
7231 /* 5942 */ // No operand predicates
7232 /* 5942 */ // MIs[0] __unary_undef_to_undef_match_0.x
7233 /* 5942 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7234 /* 5946 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7235 /* 5950 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7236 /* 5952 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
7237 /* 5952 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7238 /* 5955 */ // Label 293: @5955
7239 /* 5955 */ GIM_Reject,
7240 /* 5956 */ // Label 20: @5956
7241 /* 5956 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5988), // Rule ID 154 //
7242 /* 5961 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7243 /* 5964 */ // MIs[0] dst
7244 /* 5964 */ // No operand predicates
7245 /* 5964 */ // MIs[0] src1
7246 /* 5964 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7247 /* 5968 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
7248 /* 5972 */ // MIs[1] src0
7249 /* 5972 */ // No operand predicates
7250 /* 5972 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
7251 /* 5976 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7252 /* 5978 */ // Combiner Rule #106: bitcast_bitcast_to_bitcast
7253 /* 5978 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
7254 /* 5981 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7255 /* 5983 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
7256 /* 5987 */ GIR_EraseRootFromParent_Done,
7257 /* 5988 */ // Label 294: @5988
7258 /* 5988 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(6009), // Rule ID 153 //
7259 /* 5993 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
7260 /* 5996 */ // MIs[0] dst
7261 /* 5996 */ // No operand predicates
7262 /* 5996 */ // MIs[0] src1
7263 /* 5996 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7264 /* 6000 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
7265 /* 6004 */ // MIs[1] src0
7266 /* 6004 */ // No operand predicates
7267 /* 6004 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7268 /* 6006 */ // Combiner Rule #105: bitcast_bitcast_fold
7269 /* 6006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
7270 /* 6009 */ // Label 295: @6009
7271 /* 6009 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(6030), // Rule ID 98 //
7272 /* 6014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7273 /* 6017 */ // MIs[0] dst
7274 /* 6017 */ // No operand predicates
7275 /* 6017 */ // MIs[0] __unary_undef_to_undef_match_0.x
7276 /* 6017 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7277 /* 6021 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7278 /* 6025 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7279 /* 6027 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
7280 /* 6027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7281 /* 6030 */ // Label 296: @6030
7282 /* 6030 */ GIM_Reject,
7283 /* 6031 */ // Label 21: @6031
7284 /* 6031 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(6060), // Rule ID 25 //
7285 /* 6036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7286 /* 6039 */ // MIs[0] dst
7287 /* 6039 */ // No operand predicates
7288 /* 6039 */ // MIs[0] src
7289 /* 6039 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7290 /* 6043 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
7291 /* 6047 */ // MIs[1] __idempotent_prop_match_0.x
7292 /* 6047 */ // No operand predicates
7293 /* 6047 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7294 /* 6052 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7295 /* 6054 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[0]]
7296 /* 6054 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7297 /* 6059 */ GIR_EraseRootFromParent_Done,
7298 /* 6060 */ // Label 297: @6060
7299 /* 6060 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(6083), // Rule ID 50 //
7300 /* 6065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
7301 /* 6068 */ // MIs[0] root
7302 /* 6068 */ // No operand predicates
7303 /* 6068 */ // MIs[0] src
7304 /* 6068 */ // No operand predicates
7305 /* 6068 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
7306 /* 6072 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7307 /* 6077 */ // Combiner Rule #46: freeze_of_non_undef_non_poison
7308 /* 6077 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7309 /* 6082 */ GIR_EraseRootFromParent_Done,
7310 /* 6083 */ // Label 298: @6083
7311 /* 6083 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(6094), // Rule ID 51 //
7312 /* 6088 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
7313 /* 6091 */ // MIs[0] dst
7314 /* 6091 */ // No operand predicates
7315 /* 6091 */ // MIs[0] src
7316 /* 6091 */ // No operand predicates
7317 /* 6091 */ // Combiner Rule #47: push_freeze_to_prevent_poison_from_propagating
7318 /* 6091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
7319 /* 6094 */ // Label 299: @6094
7320 /* 6094 */ GIM_Reject,
7321 /* 6095 */ // Label 22: @6095
7322 /* 6095 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(6116), // Rule ID 212 //
7323 /* 6100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7324 /* 6103 */ // MIs[0] dst
7325 /* 6103 */ // No operand predicates
7326 /* 6103 */ // MIs[0] src0
7327 /* 6103 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7328 /* 6107 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7329 /* 6111 */ // MIs[1] cst
7330 /* 6111 */ // No operand predicates
7331 /* 6111 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7332 /* 6113 */ // Combiner Rule #159: constant_fold_intrinsic_trunc
7333 /* 6113 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7334 /* 6116 */ // Label 300: @6116
7335 /* 6116 */ GIM_Reject,
7336 /* 6117 */ // Label 23: @6117
7337 /* 6117 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(6138), // Rule ID 213 //
7338 /* 6122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7339 /* 6125 */ // MIs[0] dst
7340 /* 6125 */ // No operand predicates
7341 /* 6125 */ // MIs[0] src0
7342 /* 6125 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7343 /* 6129 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7344 /* 6133 */ // MIs[1] cst
7345 /* 6133 */ // No operand predicates
7346 /* 6133 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7347 /* 6135 */ // Combiner Rule #160: constant_fold_intrinsic_round
7348 /* 6135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7349 /* 6138 */ // Label 301: @6138
7350 /* 6138 */ GIM_Reject,
7351 /* 6139 */ // Label 24: @6139
7352 /* 6139 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(6160), // Rule ID 214 //
7353 /* 6144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
7354 /* 6147 */ // MIs[0] dst
7355 /* 6147 */ // No operand predicates
7356 /* 6147 */ // MIs[0] src0
7357 /* 6147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7358 /* 6151 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7359 /* 6155 */ // MIs[1] cst
7360 /* 6155 */ // No operand predicates
7361 /* 6155 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7362 /* 6157 */ // Combiner Rule #161: constant_fold_intrinsic_roundeven
7363 /* 6157 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
7364 /* 6160 */ // Label 302: @6160
7365 /* 6160 */ GIM_Reject,
7366 /* 6161 */ // Label 25: @6161
7367 /* 6161 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(6172), // Rule ID 77 //
7368 /* 6166 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7369 /* 6169 */ // Combiner Rule #73: extending_loads; wip_match_opcode 'G_LOAD'
7370 /* 6169 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
7371 /* 6172 */ // Label 303: @6172
7372 /* 6172 */ GIM_Reject,
7373 /* 6173 */ // Label 26: @6173
7374 /* 6173 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(6184), // Rule ID 78 //
7375 /* 6178 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7376 /* 6181 */ // Combiner Rule #73: extending_loads; wip_match_opcode 'G_SEXTLOAD'
7377 /* 6181 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
7378 /* 6184 */ // Label 304: @6184
7379 /* 6184 */ GIM_Reject,
7380 /* 6185 */ // Label 27: @6185
7381 /* 6185 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(6196), // Rule ID 79 //
7382 /* 6190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7383 /* 6193 */ // Combiner Rule #73: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
7384 /* 6193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
7385 /* 6196 */ // Label 305: @6196
7386 /* 6196 */ GIM_Reject,
7387 /* 6197 */ // Label 28: @6197
7388 /* 6197 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(6208), // Rule ID 113 //
7389 /* 6202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
7390 /* 6205 */ // Combiner Rule #86: erase_undef_store; wip_match_opcode 'G_STORE'
7391 /* 6205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
7392 /* 6208 */ // Label 306: @6208
7393 /* 6208 */ GIM_Reject,
7394 /* 6209 */ // Label 29: @6209
7395 /* 6209 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(6230), // Rule ID 64 //
7396 /* 6214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
7397 /* 6217 */ // MIs[0] root
7398 /* 6217 */ // No operand predicates
7399 /* 6217 */ // MIs[0] select
7400 /* 6217 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7401 /* 6221 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7402 /* 6225 */ // MIs[1] cond
7403 /* 6225 */ // No operand predicates
7404 /* 6225 */ // MIs[1] true
7405 /* 6225 */ // No operand predicates
7406 /* 6225 */ // MIs[1] false
7407 /* 6225 */ // No operand predicates
7408 /* 6225 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7409 /* 6227 */ // Combiner Rule #60: select_of_anyext
7410 /* 6227 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7411 /* 6230 */ // Label 307: @6230
7412 /* 6230 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(6251), // Rule ID 59 //
7413 /* 6235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
7414 /* 6238 */ // MIs[0] root
7415 /* 6238 */ // No operand predicates
7416 /* 6238 */ // MIs[0] second
7417 /* 6238 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7418 /* 6242 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7419 /* 6246 */ // MIs[1] src
7420 /* 6246 */ // No operand predicates
7421 /* 6246 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7422 /* 6248 */ // Combiner Rule #55: anyext_of_anyext
7423 /* 6248 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7424 /* 6251 */ // Label 308: @6251
7425 /* 6251 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(6272), // Rule ID 61 //
7426 /* 6256 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
7427 /* 6259 */ // MIs[0] root
7428 /* 6259 */ // No operand predicates
7429 /* 6259 */ // MIs[0] second
7430 /* 6259 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7431 /* 6263 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7432 /* 6267 */ // MIs[1] src
7433 /* 6267 */ // No operand predicates
7434 /* 6267 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7435 /* 6269 */ // Combiner Rule #57: anyext_of_sext
7436 /* 6269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7437 /* 6272 */ // Label 309: @6272
7438 /* 6272 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(6293), // Rule ID 60 //
7439 /* 6277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
7440 /* 6280 */ // MIs[0] root
7441 /* 6280 */ // No operand predicates
7442 /* 6280 */ // MIs[0] second
7443 /* 6280 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7444 /* 6284 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7445 /* 6288 */ // MIs[1] src
7446 /* 6288 */ // No operand predicates
7447 /* 6288 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7448 /* 6290 */ // Combiner Rule #56: anyext_of_zext
7449 /* 6290 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7450 /* 6293 */ // Label 310: @6293
7451 /* 6293 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(6314), // Rule ID 99 //
7452 /* 6298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7453 /* 6301 */ // MIs[0] dst
7454 /* 6301 */ // No operand predicates
7455 /* 6301 */ // MIs[0] __unary_undef_to_undef_match_0.x
7456 /* 6301 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7457 /* 6305 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7458 /* 6309 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7459 /* 6311 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
7460 /* 6311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7461 /* 6314 */ // Label 311: @6314
7462 /* 6314 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(6325), // Rule ID 143 //
7463 /* 6319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7464 /* 6322 */ // MIs[0] dst
7465 /* 6322 */ // No operand predicates
7466 /* 6322 */ // MIs[0] src
7467 /* 6322 */ // No operand predicates
7468 /* 6322 */ // Combiner Rule #97: anyext_trunc_fold
7469 /* 6322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
7470 /* 6325 */ // Label 312: @6325
7471 /* 6325 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(6336), // Rule ID 306 //
7472 /* 6330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7473 /* 6333 */ // MIs[0] dst
7474 /* 6333 */ // No operand predicates
7475 /* 6333 */ // MIs[0] d.src
7476 /* 6333 */ // No operand predicates
7477 /* 6333 */ // Combiner Rule #197: constant_fold_cast_op @ [d[2]]
7478 /* 6333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
7479 /* 6336 */ // Label 313: @6336
7480 /* 6336 */ GIM_Reject,
7481 /* 6337 */ // Label 30: @6337
7482 /* 6337 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(6358), // Rule ID 65 //
7483 /* 6342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
7484 /* 6345 */ // MIs[0] root
7485 /* 6345 */ // No operand predicates
7486 /* 6345 */ // MIs[0] select
7487 /* 6345 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7488 /* 6349 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7489 /* 6353 */ // MIs[1] cond
7490 /* 6353 */ // No operand predicates
7491 /* 6353 */ // MIs[1] true
7492 /* 6353 */ // No operand predicates
7493 /* 6353 */ // MIs[1] false
7494 /* 6353 */ // No operand predicates
7495 /* 6353 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7496 /* 6355 */ // Combiner Rule #61: select_of_truncate
7497 /* 6355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7498 /* 6358 */ // Label 314: @6358
7499 /* 6358 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(6387), // Rule ID 67 //
7500 /* 6363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
7501 /* 6366 */ // MIs[0] root
7502 /* 6366 */ // No operand predicates
7503 /* 6366 */ // MIs[0] binop
7504 /* 6366 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7505 /* 6370 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
7506 /* 6374 */ // MIs[1] x
7507 /* 6374 */ // No operand predicates
7508 /* 6374 */ // MIs[1] const
7509 /* 6374 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7510 /* 6378 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7511 /* 6382 */ // MIs[2] imm
7512 /* 6382 */ // No operand predicates
7513 /* 6382 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7514 /* 6384 */ // Combiner Rule #63: narrow_binop_add
7515 /* 6384 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7516 /* 6387 */ // Label 315: @6387
7517 /* 6387 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(6416), // Rule ID 70 //
7518 /* 6392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
7519 /* 6395 */ // MIs[0] root
7520 /* 6395 */ // No operand predicates
7521 /* 6395 */ // MIs[0] binop
7522 /* 6395 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7523 /* 6399 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
7524 /* 6403 */ // MIs[1] x
7525 /* 6403 */ // No operand predicates
7526 /* 6403 */ // MIs[1] const
7527 /* 6403 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7528 /* 6407 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7529 /* 6411 */ // MIs[2] imm
7530 /* 6411 */ // No operand predicates
7531 /* 6411 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7532 /* 6413 */ // Combiner Rule #66: narrow_binop_and
7533 /* 6413 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7534 /* 6416 */ // Label 316: @6416
7535 /* 6416 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(6445), // Rule ID 69 //
7536 /* 6421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
7537 /* 6424 */ // MIs[0] root
7538 /* 6424 */ // No operand predicates
7539 /* 6424 */ // MIs[0] binop
7540 /* 6424 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7541 /* 6428 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
7542 /* 6432 */ // MIs[1] x
7543 /* 6432 */ // No operand predicates
7544 /* 6432 */ // MIs[1] const
7545 /* 6432 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7546 /* 6436 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7547 /* 6440 */ // MIs[2] imm
7548 /* 6440 */ // No operand predicates
7549 /* 6440 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7550 /* 6442 */ // Combiner Rule #65: narrow_binop_mul
7551 /* 6442 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7552 /* 6445 */ // Label 317: @6445
7553 /* 6445 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(6474), // Rule ID 71 //
7554 /* 6450 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
7555 /* 6453 */ // MIs[0] root
7556 /* 6453 */ // No operand predicates
7557 /* 6453 */ // MIs[0] binop
7558 /* 6453 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7559 /* 6457 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
7560 /* 6461 */ // MIs[1] x
7561 /* 6461 */ // No operand predicates
7562 /* 6461 */ // MIs[1] const
7563 /* 6461 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7564 /* 6465 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7565 /* 6469 */ // MIs[2] imm
7566 /* 6469 */ // No operand predicates
7567 /* 6469 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7568 /* 6471 */ // Combiner Rule #67: narrow_binop_or
7569 /* 6471 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7570 /* 6474 */ // Label 318: @6474
7571 /* 6474 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(6503), // Rule ID 68 //
7572 /* 6479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
7573 /* 6482 */ // MIs[0] root
7574 /* 6482 */ // No operand predicates
7575 /* 6482 */ // MIs[0] binop
7576 /* 6482 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7577 /* 6486 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
7578 /* 6490 */ // MIs[1] x
7579 /* 6490 */ // No operand predicates
7580 /* 6490 */ // MIs[1] const
7581 /* 6490 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7582 /* 6494 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7583 /* 6498 */ // MIs[2] imm
7584 /* 6498 */ // No operand predicates
7585 /* 6498 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7586 /* 6500 */ // Combiner Rule #64: narrow_binop_sub
7587 /* 6500 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7588 /* 6503 */ // Label 319: @6503
7589 /* 6503 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(6535), // Rule ID 431 //
7590 /* 6508 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule260Enabled),
7591 /* 6511 */ // MIs[0] dst
7592 /* 6511 */ // No operand predicates
7593 /* 6511 */ // MIs[0] min
7594 /* 6511 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7595 /* 6515 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
7596 /* 6519 */ // MIs[1] x
7597 /* 6519 */ // No operand predicates
7598 /* 6519 */ // MIs[1] y
7599 /* 6519 */ // No operand predicates
7600 /* 6519 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner23),
7601 /* 6523 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7602 /* 6525 */ // Combiner Rule #260: trunc_usatu
7603 /* 6525 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
7604 /* 6528 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7605 /* 6530 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7606 /* 6534 */ GIR_EraseRootFromParent_Done,
7607 /* 6535 */ // Label 320: @6535
7608 /* 6535 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(6564), // Rule ID 72 //
7609 /* 6540 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7610 /* 6543 */ // MIs[0] root
7611 /* 6543 */ // No operand predicates
7612 /* 6543 */ // MIs[0] binop
7613 /* 6543 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7614 /* 6547 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
7615 /* 6551 */ // MIs[1] x
7616 /* 6551 */ // No operand predicates
7617 /* 6551 */ // MIs[1] const
7618 /* 6551 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
7619 /* 6555 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7620 /* 6559 */ // MIs[2] imm
7621 /* 6559 */ // No operand predicates
7622 /* 6559 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7623 /* 6561 */ // Combiner Rule #68: narrow_binop_xor
7624 /* 6561 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
7625 /* 6564 */ // Label 321: @6564
7626 /* 6564 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(6585), // Rule ID 54 //
7627 /* 6569 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
7628 /* 6572 */ // MIs[0] root
7629 /* 6572 */ // No operand predicates
7630 /* 6572 */ // MIs[0] ext
7631 /* 6572 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7632 /* 6576 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7633 /* 6580 */ // MIs[1] src
7634 /* 6580 */ // No operand predicates
7635 /* 6580 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7636 /* 6582 */ // Combiner Rule #50: truncate_of_anyext
7637 /* 6582 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7638 /* 6585 */ // Label 322: @6585
7639 /* 6585 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(6609), // Rule ID 66 //
7640 /* 6590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
7641 /* 6593 */ // MIs[0] root
7642 /* 6593 */ // No operand predicates
7643 /* 6593 */ // MIs[0] bv
7644 /* 6593 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7645 /* 6597 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
7646 /* 6601 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
7647 /* 6604 */ // MIs[1] unused
7648 /* 6604 */ // No operand predicates
7649 /* 6604 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7650 /* 6606 */ // Combiner Rule #62: buildvector_of_truncate
7651 /* 6606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
7652 /* 6609 */ // Label 323: @6609
7653 /* 6609 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(6630), // Rule ID 53 //
7654 /* 6614 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
7655 /* 6617 */ // MIs[0] root
7656 /* 6617 */ // No operand predicates
7657 /* 6617 */ // MIs[0] ext
7658 /* 6617 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7659 /* 6621 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7660 /* 6625 */ // MIs[1] src
7661 /* 6625 */ // No operand predicates
7662 /* 6625 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7663 /* 6627 */ // Combiner Rule #49: truncate_of_sext
7664 /* 6627 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7665 /* 6630 */ // Label 324: @6630
7666 /* 6630 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(6651), // Rule ID 52 //
7667 /* 6635 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
7668 /* 6638 */ // MIs[0] root
7669 /* 6638 */ // No operand predicates
7670 /* 6638 */ // MIs[0] ext
7671 /* 6638 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7672 /* 6642 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7673 /* 6646 */ // MIs[1] src
7674 /* 6646 */ // No operand predicates
7675 /* 6646 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7676 /* 6648 */ // Combiner Rule #48: truncate_of_zext
7677 /* 6648 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
7678 /* 6651 */ // Label 325: @6651
7679 /* 6651 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(6672), // Rule ID 97 //
7680 /* 6656 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7681 /* 6659 */ // MIs[0] dst
7682 /* 6659 */ // No operand predicates
7683 /* 6659 */ // MIs[0] __unary_undef_to_undef_match_0.x
7684 /* 6659 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7685 /* 6663 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7686 /* 6667 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7687 /* 6669 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
7688 /* 6669 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
7689 /* 6672 */ // Label 326: @6672
7690 /* 6672 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(6693), // Rule ID 73 //
7691 /* 6677 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7692 /* 6680 */ // MIs[0] root
7693 /* 6680 */ // No operand predicates
7694 /* 6680 */ // MIs[0] int
7695 /* 6680 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7696 /* 6684 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7697 /* 6688 */ // MIs[1] imm
7698 /* 6688 */ // No operand predicates
7699 /* 6688 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7700 /* 6690 */ // Combiner Rule #69: integer_of_truncate
7701 /* 6690 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
7702 /* 6693 */ // Label 327: @6693
7703 /* 6693 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(6704), // Rule ID 151 //
7704 /* 6698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7705 /* 6701 */ // MIs[0] dst
7706 /* 6701 */ // No operand predicates
7707 /* 6701 */ // MIs[0] src
7708 /* 6701 */ // No operand predicates
7709 /* 6701 */ // Combiner Rule #103: trunc_buildvector_fold
7710 /* 6701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
7711 /* 6704 */ // Label 328: @6704
7712 /* 6704 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(6715), // Rule ID 152 //
7713 /* 6709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
7714 /* 6712 */ // MIs[0] dst
7715 /* 6712 */ // No operand predicates
7716 /* 6712 */ // MIs[0] src
7717 /* 6712 */ // No operand predicates
7718 /* 6712 */ // Combiner Rule #104: trunc_lshr_buildvector_fold
7719 /* 6712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7720 /* 6715 */ // Label 329: @6715
7721 /* 6715 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(6726), // Rule ID 201 //
7722 /* 6720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
7723 /* 6723 */ // MIs[0] dst
7724 /* 6723 */ // No operand predicates
7725 /* 6723 */ // MIs[0] src
7726 /* 6723 */ // No operand predicates
7727 /* 6723 */ // Combiner Rule #148: trunc_shift
7728 /* 6723 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
7729 /* 6726 */ // Label 330: @6726
7730 /* 6726 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(6737), // Rule ID 429 //
7731 /* 6731 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule258Enabled),
7732 /* 6734 */ // MIs[0] dst
7733 /* 6734 */ // No operand predicates
7734 /* 6734 */ // MIs[0] src
7735 /* 6734 */ // No operand predicates
7736 /* 6734 */ // Combiner Rule #258: trunc_ssats
7737 /* 6734 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
7738 /* 6737 */ // Label 331: @6737
7739 /* 6737 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(6748), // Rule ID 430 //
7740 /* 6742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule259Enabled),
7741 /* 6745 */ // MIs[0] dst
7742 /* 6745 */ // No operand predicates
7743 /* 6745 */ // MIs[0] src
7744 /* 6745 */ // No operand predicates
7745 /* 6745 */ // Combiner Rule #259: trunc_ssatu
7746 /* 6745 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
7747 /* 6748 */ // Label 332: @6748
7748 /* 6748 */ GIM_Reject,
7749 /* 6749 */ // Label 31: @6749
7750 /* 6749 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(6781), // Rule ID 432 //
7751 /* 6754 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule261Enabled),
7752 /* 6757 */ // MIs[0] dst
7753 /* 6757 */ // No operand predicates
7754 /* 6757 */ // MIs[0] src
7755 /* 6757 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7756 /* 6761 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
7757 /* 6765 */ // MIs[1] x
7758 /* 6765 */ // No operand predicates
7759 /* 6765 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner24),
7760 /* 6769 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7761 /* 6771 */ // Combiner Rule #261: truncusatu_to_fptouisat
7762 /* 6771 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
7763 /* 6774 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7764 /* 6776 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7765 /* 6780 */ GIR_EraseRootFromParent_Done,
7766 /* 6781 */ // Label 333: @6781
7767 /* 6781 */ GIM_Reject,
7768 /* 6782 */ // Label 32: @6782
7769 /* 6782 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(6803), // Rule ID 58 //
7770 /* 6787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
7771 /* 6790 */ // MIs[0] root
7772 /* 6790 */ // No operand predicates
7773 /* 6790 */ // MIs[0] second
7774 /* 6790 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7775 /* 6794 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7776 /* 6798 */ // MIs[1] src
7777 /* 6798 */ // No operand predicates
7778 /* 6798 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7779 /* 6800 */ // Combiner Rule #54: sext_of_anyext
7780 /* 6800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7781 /* 6803 */ // Label 334: @6803
7782 /* 6803 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(6824), // Rule ID 57 //
7783 /* 6808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
7784 /* 6811 */ // MIs[0] root
7785 /* 6811 */ // No operand predicates
7786 /* 6811 */ // MIs[0] second
7787 /* 6811 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7788 /* 6815 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
7789 /* 6819 */ // MIs[1] src
7790 /* 6819 */ // No operand predicates
7791 /* 6819 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7792 /* 6821 */ // Combiner Rule #53: sext_of_sext
7793 /* 6821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
7794 /* 6824 */ // Label 335: @6824
7795 /* 6824 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(6845), // Rule ID 408 //
7796 /* 6829 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
7797 /* 6832 */ // MIs[0] root
7798 /* 6832 */ // No operand predicates
7799 /* 6832 */ // MIs[0] src
7800 /* 6832 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7801 /* 6836 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
7802 /* 6840 */ // MIs[1] x
7803 /* 6840 */ // No operand predicates
7804 /* 6840 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7805 /* 6842 */ // Combiner Rule #239: sext_trunc
7806 /* 6842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
7807 /* 6845 */ // Label 336: @6845
7808 /* 6845 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(6856), // Rule ID 305 //
7809 /* 6850 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7810 /* 6853 */ // MIs[0] dst
7811 /* 6853 */ // No operand predicates
7812 /* 6853 */ // MIs[0] d.src
7813 /* 6853 */ // No operand predicates
7814 /* 6853 */ // Combiner Rule #197: constant_fold_cast_op @ [d[1]]
7815 /* 6853 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
7816 /* 6856 */ // Label 337: @6856
7817 /* 6856 */ GIM_Reject,
7818 /* 6857 */ // Label 33: @6857
7819 /* 6857 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(6878), // Rule ID 62 //
7820 /* 6862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
7821 /* 6865 */ // MIs[0] dst
7822 /* 6865 */ // No operand predicates
7823 /* 6865 */ // MIs[0] x
7824 /* 6865 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7825 /* 6869 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
7826 /* 6873 */ // MIs[1] src
7827 /* 6873 */ // No operand predicates
7828 /* 6873 */ // MIs[1] a
7829 /* 6873 */ // No operand predicates
7830 /* 6873 */ // MIs[0] b
7831 /* 6873 */ // No operand predicates
7832 /* 6873 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7833 /* 6875 */ // Combiner Rule #58: sext_inreg_of_sext_inreg
7834 /* 6875 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
7835 /* 6878 */ // Label 338: @6878
7836 /* 6878 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(6918), // Rule ID 195 //
7837 /* 6883 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7838 /* 6886 */ // MIs[0] dst
7839 /* 6886 */ // No operand predicates
7840 /* 6886 */ // MIs[0] tmp4
7841 /* 6886 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7842 /* 6890 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7843 /* 6894 */ // MIs[1] tmp2
7844 /* 6894 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7845 /* 6898 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7846 /* 6902 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7847 /* 6905 */ // MIs[2] tmp3
7848 /* 6905 */ // No operand predicates
7849 /* 6905 */ // MIs[2] tmp1
7850 /* 6905 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7851 /* 6909 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7852 /* 6913 */ // MIs[3] src
7853 /* 6913 */ // No operand predicates
7854 /* 6913 */ // MIs[0] amt
7855 /* 6913 */ // No operand predicates
7856 /* 6913 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7857 /* 6915 */ // Combiner Rule #142: redundant_aext_unmerge_sext_inreg
7858 /* 6915 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7859 /* 6918 */ // Label 339: @6918
7860 /* 6918 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(6950), // Rule ID 193 //
7861 /* 6923 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7862 /* 6926 */ // MIs[0] dst
7863 /* 6926 */ // No operand predicates
7864 /* 6926 */ // MIs[0] tmp
7865 /* 6926 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7866 /* 6930 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7867 /* 6934 */ // MIs[1] src
7868 /* 6934 */ // No operand predicates
7869 /* 6934 */ // MIs[0] amt
7870 /* 6934 */ // No operand predicates
7871 /* 6934 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
7872 /* 6938 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7873 /* 6940 */ // Combiner Rule #140: redundant_aext_sext_inreg
7874 /* 6940 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7875 /* 6943 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7876 /* 6945 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7877 /* 6949 */ GIR_EraseRootFromParent_Done,
7878 /* 6950 */ // Label 340: @6950
7879 /* 6950 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(6990), // Rule ID 194 //
7880 /* 6955 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
7881 /* 6958 */ // MIs[0] dst
7882 /* 6958 */ // No operand predicates
7883 /* 6958 */ // MIs[0] tmp4
7884 /* 6958 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7885 /* 6962 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7886 /* 6966 */ // MIs[1] tmp2
7887 /* 6966 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7888 /* 6970 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
7889 /* 6974 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
7890 /* 6977 */ // MIs[2] tmp3
7891 /* 6977 */ // No operand predicates
7892 /* 6977 */ // MIs[2] tmp1
7893 /* 6977 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
7894 /* 6981 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
7895 /* 6985 */ // MIs[3] src
7896 /* 6985 */ // No operand predicates
7897 /* 6985 */ // MIs[0] amt
7898 /* 6985 */ // No operand predicates
7899 /* 6985 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
7900 /* 6987 */ // Combiner Rule #141: redundant_zext_unmerge_sext_inreg
7901 /* 6987 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
7902 /* 6990 */ // Label 341: @6990
7903 /* 6990 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(7022), // Rule ID 192 //
7904 /* 6995 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7905 /* 6998 */ // MIs[0] dst
7906 /* 6998 */ // No operand predicates
7907 /* 6998 */ // MIs[0] tmp
7908 /* 6998 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7909 /* 7002 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
7910 /* 7006 */ // MIs[1] src
7911 /* 7006 */ // No operand predicates
7912 /* 7006 */ // MIs[0] amt
7913 /* 7006 */ // No operand predicates
7914 /* 7006 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner18),
7915 /* 7010 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7916 /* 7012 */ // Combiner Rule #139: redundant_zext_sext_inreg
7917 /* 7012 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
7918 /* 7015 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7919 /* 7017 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
7920 /* 7021 */ GIR_EraseRootFromParent_Done,
7921 /* 7022 */ // Label 342: @7022
7922 /* 7022 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(7045), // Rule ID 191 //
7923 /* 7027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7924 /* 7030 */ // MIs[0] dst
7925 /* 7030 */ // No operand predicates
7926 /* 7030 */ // MIs[0] src
7927 /* 7030 */ // No operand predicates
7928 /* 7030 */ // MIs[0] sz
7929 /* 7030 */ // No operand predicates
7930 /* 7030 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
7931 /* 7034 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7932 /* 7039 */ // Combiner Rule #138: redundant_sext_inreg
7933 /* 7039 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7934 /* 7044 */ GIR_EraseRootFromParent_Done,
7935 /* 7045 */ // Label 343: @7045
7936 /* 7045 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(7056), // Rule ID 180 //
7937 /* 7050 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
7938 /* 7053 */ // MIs[0] dst
7939 /* 7053 */ // No operand predicates
7940 /* 7053 */ // MIs[0] src
7941 /* 7053 */ // No operand predicates
7942 /* 7053 */ // MIs[0] sz
7943 /* 7053 */ // No operand predicates
7944 /* 7053 */ // Combiner Rule #127: sext_inreg_of_load
7945 /* 7053 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
7946 /* 7056 */ // Label 344: @7056
7947 /* 7056 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(7067), // Rule ID 200 //
7948 /* 7061 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
7949 /* 7064 */ // MIs[0] dst
7950 /* 7064 */ // No operand predicates
7951 /* 7064 */ // MIs[0] src
7952 /* 7064 */ // No operand predicates
7953 /* 7064 */ // MIs[0] imm
7954 /* 7064 */ // No operand predicates
7955 /* 7064 */ // Combiner Rule #147: sext_inreg_to_zext_inreg
7956 /* 7064 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
7957 /* 7067 */ // Label 345: @7067
7958 /* 7067 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(7078), // Rule ID 266 //
7959 /* 7072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
7960 /* 7075 */ // MIs[0] dst
7961 /* 7075 */ // No operand predicates
7962 /* 7075 */ // MIs[0] src
7963 /* 7075 */ // No operand predicates
7964 /* 7075 */ // MIs[0] sz
7965 /* 7075 */ // No operand predicates
7966 /* 7075 */ // Combiner Rule #190: bitfield_extract_from_sext_inreg
7967 /* 7075 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7968 /* 7078 */ // Label 346: @7078
7969 /* 7078 */ GIM_Reject,
7970 /* 7079 */ // Label 34: @7079
7971 /* 7079 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(7100), // Rule ID 63 //
7972 /* 7084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
7973 /* 7087 */ // MIs[0] root
7974 /* 7087 */ // No operand predicates
7975 /* 7087 */ // MIs[0] select
7976 /* 7087 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7977 /* 7091 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
7978 /* 7095 */ // MIs[1] cond
7979 /* 7095 */ // No operand predicates
7980 /* 7095 */ // MIs[1] true
7981 /* 7095 */ // No operand predicates
7982 /* 7095 */ // MIs[1] false
7983 /* 7095 */ // No operand predicates
7984 /* 7095 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7985 /* 7097 */ // Combiner Rule #59: select_of_zext
7986 /* 7097 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
7987 /* 7100 */ // Label 347: @7100
7988 /* 7100 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(7121), // Rule ID 56 //
7989 /* 7105 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
7990 /* 7108 */ // MIs[0] root
7991 /* 7108 */ // No operand predicates
7992 /* 7108 */ // MIs[0] second
7993 /* 7108 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7994 /* 7112 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
7995 /* 7116 */ // MIs[1] src
7996 /* 7116 */ // No operand predicates
7997 /* 7116 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7998 /* 7118 */ // Combiner Rule #52: zext_of_anyext
7999 /* 7118 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
8000 /* 7121 */ // Label 348: @7121
8001 /* 7121 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(7148), // Rule ID 409 //
8002 /* 7126 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
8003 /* 7129 */ // MIs[0] root
8004 /* 7129 */ // No operand predicates
8005 /* 7129 */ // MIs[0] src
8006 /* 7129 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8007 /* 7133 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8008 /* 7137 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
8009 /* 7143 */ // MIs[1] x
8010 /* 7143 */ // No operand predicates
8011 /* 7143 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8012 /* 7145 */ // Combiner Rule #240: zext_trunc
8013 /* 7145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
8014 /* 7148 */ // Label 349: @7148
8015 /* 7148 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(7169), // Rule ID 55 //
8016 /* 7153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
8017 /* 7156 */ // MIs[0] root
8018 /* 7156 */ // No operand predicates
8019 /* 7156 */ // MIs[0] second
8020 /* 7156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8021 /* 7160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
8022 /* 7164 */ // MIs[1] src
8023 /* 7164 */ // No operand predicates
8024 /* 7164 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8025 /* 7166 */ // Combiner Rule #51: zext_of_zext
8026 /* 7166 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
8027 /* 7169 */ // Label 350: @7169
8028 /* 7169 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(7186), // Rule ID 410 //
8029 /* 7174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
8030 /* 7177 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
8031 /* 7183 */ // MIs[0] root
8032 /* 7183 */ // No operand predicates
8033 /* 7183 */ // MIs[0] x
8034 /* 7183 */ // No operand predicates
8035 /* 7183 */ // Combiner Rule #241: nneg_zext
8036 /* 7183 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
8037 /* 7186 */ // Label 351: @7186
8038 /* 7186 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(7197), // Rule ID 199 //
8039 /* 7191 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8040 /* 7194 */ // MIs[0] dst
8041 /* 7194 */ // No operand predicates
8042 /* 7194 */ // MIs[0] src
8043 /* 7194 */ // No operand predicates
8044 /* 7194 */ // Combiner Rule #146: zext_trunc_fold
8045 /* 7194 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
8046 /* 7197 */ // Label 352: @7197
8047 /* 7197 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(7208), // Rule ID 304 //
8048 /* 7202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
8049 /* 7205 */ // MIs[0] dst
8050 /* 7205 */ // No operand predicates
8051 /* 7205 */ // MIs[0] d.src
8052 /* 7205 */ // No operand predicates
8053 /* 7205 */ // Combiner Rule #197: constant_fold_cast_op @ [d[0]]
8054 /* 7205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
8055 /* 7208 */ // Label 353: @7208
8056 /* 7208 */ GIM_Reject,
8057 /* 7209 */ // Label 35: @7209
8058 /* 7209 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(7220), // Rule ID 236 //
8059 /* 7214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8060 /* 7217 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_SHL'
8061 /* 7217 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8062 /* 7220 */ // Label 354: @7220
8063 /* 7220 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(7231), // Rule ID 241 //
8064 /* 7225 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
8065 /* 7228 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
8066 /* 7228 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8067 /* 7231 */ // Label 355: @7231
8068 /* 7231 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(7242), // Rule ID 279 //
8069 /* 7236 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8070 /* 7239 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SHL'
8071 /* 7239 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8072 /* 7242 */ // Label 356: @7242
8073 /* 7242 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(7253), // Rule ID 344 //
8074 /* 7247 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8075 /* 7250 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SHL'
8076 /* 7250 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8077 /* 7253 */ // Label 357: @7253
8078 /* 7253 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(7331), // Rule ID 264 //
8079 /* 7258 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
8080 /* 7261 */ // MIs[0] dst
8081 /* 7261 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8082 /* 7265 */ // MIs[0] binop_dst
8083 /* 7265 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8084 /* 7269 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8085 /* 7273 */ // MIs[1] x
8086 /* 7273 */ // No operand predicates
8087 /* 7273 */ // MIs[1] c1
8088 /* 7273 */ // No operand predicates
8089 /* 7273 */ // MIs[0] c2
8090 /* 7273 */ // No operand predicates
8091 /* 7273 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
8092 /* 7277 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8093 /* 7279 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8094 /* 7282 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8095 /* 7285 */ // Combiner Rule #188: commute_shift_add
8096 /* 7285 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8097 /* 7288 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8098 /* 7293 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8099 /* 7297 */ GIR_RootToRootCopy, /*OpIdx*/2, // c2
8100 /* 7299 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8101 /* 7303 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8102 /* 7308 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // c1
8103 /* 7312 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // c2
8104 /* 7316 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
8105 /* 7320 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8106 /* 7324 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8107 /* 7327 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
8108 /* 7330 */ GIR_EraseRootFromParent_Done,
8109 /* 7331 */ // Label 358: @7331
8110 /* 7331 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(7409), // Rule ID 265 //
8111 /* 7336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
8112 /* 7339 */ // MIs[0] dst
8113 /* 7339 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8114 /* 7343 */ // MIs[0] binop_dst
8115 /* 7343 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8116 /* 7347 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
8117 /* 7351 */ // MIs[1] x
8118 /* 7351 */ // No operand predicates
8119 /* 7351 */ // MIs[1] c1
8120 /* 7351 */ // No operand predicates
8121 /* 7351 */ // MIs[0] c2
8122 /* 7351 */ // No operand predicates
8123 /* 7351 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner22),
8124 /* 7355 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8125 /* 7357 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8126 /* 7360 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8127 /* 7363 */ // Combiner Rule #189: commute_shift_or
8128 /* 7363 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8129 /* 7366 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8130 /* 7371 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
8131 /* 7375 */ GIR_RootToRootCopy, /*OpIdx*/2, // c2
8132 /* 7377 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
8133 /* 7381 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/1, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8134 /* 7386 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // c1
8135 /* 7390 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // c2
8136 /* 7394 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
8137 /* 7398 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8138 /* 7402 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8139 /* 7405 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/1,
8140 /* 7408 */ GIR_EraseRootFromParent_Done,
8141 /* 7409 */ // Label 359: @7409
8142 /* 7409 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(7444), // Rule ID 48 //
8143 /* 7414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
8144 /* 7417 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
8145 /* 7423 */ // MIs[0] root
8146 /* 7423 */ // No operand predicates
8147 /* 7423 */ // MIs[0] left
8148 /* 7423 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8149 /* 7427 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
8150 /* 7431 */ // MIs[1] imm
8151 /* 7431 */ // No operand predicates
8152 /* 7431 */ // MIs[0] x
8153 /* 7431 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
8154 /* 7435 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8155 /* 7439 */ // MIs[2] imm1
8156 /* 7439 */ // No operand predicates
8157 /* 7439 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8158 /* 7441 */ // Combiner Rule #44: shl_of_vscale
8159 /* 7441 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
8160 /* 7444 */ // Label 360: @7444
8161 /* 7444 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(7465), // Rule ID 90 //
8162 /* 7449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
8163 /* 7452 */ // MIs[0] dst
8164 /* 7452 */ // No operand predicates
8165 /* 7452 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
8166 /* 7452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8167 /* 7456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8168 /* 7460 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
8169 /* 7460 */ // No operand predicates
8170 /* 7460 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8171 /* 7462 */ // Combiner Rule #79: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[0]]
8172 /* 7462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
8173 /* 7465 */ // Label 361: @7465
8174 /* 7465 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(7505), // Rule ID 132 //
8175 /* 7470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8176 /* 7473 */ // MIs[0] dst
8177 /* 7473 */ // No operand predicates
8178 /* 7473 */ // MIs[0] zero
8179 /* 7473 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8180 /* 7477 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8181 /* 7481 */ // MIs[1] Operand 1
8182 /* 7481 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8183 /* 7492 */ // MIs[0] rhs
8184 /* 7492 */ // No operand predicates
8185 /* 7492 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8186 /* 7497 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8187 /* 7499 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
8188 /* 7499 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8189 /* 7504 */ GIR_EraseRootFromParent_Done,
8190 /* 7505 */ // Label 362: @7505
8191 /* 7505 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(7526), // Rule ID 93 //
8192 /* 7510 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8193 /* 7513 */ // MIs[0] dst
8194 /* 7513 */ // No operand predicates
8195 /* 7513 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8196 /* 7513 */ // No operand predicates
8197 /* 7513 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8198 /* 7513 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8199 /* 7517 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8200 /* 7521 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8201 /* 7523 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[0]]
8202 /* 7523 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8203 /* 7526 */ // Label 363: @7526
8204 /* 7526 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(7549), // Rule ID 122 //
8205 /* 7531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8206 /* 7534 */ // MIs[0] dst
8207 /* 7534 */ // No operand predicates
8208 /* 7534 */ // MIs[0] lhs
8209 /* 7534 */ // No operand predicates
8210 /* 7534 */ // MIs[0] Operand 2
8211 /* 7534 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8212 /* 7538 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8213 /* 7543 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[4]]
8214 /* 7543 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8215 /* 7548 */ GIR_EraseRootFromParent_Done,
8216 /* 7549 */ // Label 364: @7549
8217 /* 7549 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(7560), // Rule ID 165 //
8218 /* 7554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8219 /* 7557 */ // MIs[0] root
8220 /* 7557 */ // No operand predicates
8221 /* 7557 */ // MIs[0] mi.shifted
8222 /* 7557 */ // No operand predicates
8223 /* 7557 */ // MIs[0] mi.amt
8224 /* 7557 */ // No operand predicates
8225 /* 7557 */ // Combiner Rule #114: shifts_too_big @ [mi[0]]
8226 /* 7557 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
8227 /* 7560 */ // Label 365: @7560
8228 /* 7560 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(7571), // Rule ID 181 //
8229 /* 7565 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
8230 /* 7568 */ // MIs[0] dst
8231 /* 7568 */ // No operand predicates
8232 /* 7568 */ // MIs[0] src0
8233 /* 7568 */ // No operand predicates
8234 /* 7568 */ // MIs[0] src1
8235 /* 7568 */ // No operand predicates
8236 /* 7568 */ // Combiner Rule #128: reduce_shl_of_extend
8237 /* 7568 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
8238 /* 7571 */ // Label 366: @7571
8239 /* 7571 */ GIM_Reject,
8240 /* 7572 */ // Label 36: @7572
8241 /* 7572 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(7583), // Rule ID 238 //
8242 /* 7577 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8243 /* 7580 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_LSHR'
8244 /* 7580 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8245 /* 7583 */ // Label 367: @7583
8246 /* 7583 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(7594), // Rule ID 243 //
8247 /* 7588 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
8248 /* 7591 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
8249 /* 7591 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8250 /* 7594 */ // Label 368: @7594
8251 /* 7594 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(7605), // Rule ID 276 //
8252 /* 7599 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8253 /* 7602 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_LSHR'
8254 /* 7602 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8255 /* 7605 */ // Label 369: @7605
8256 /* 7605 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(7616), // Rule ID 342 //
8257 /* 7610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8258 /* 7613 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_LSHR'
8259 /* 7613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8260 /* 7616 */ // Label 370: @7616
8261 /* 7616 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(7705), // Rule ID 450 //
8262 /* 7621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule276Enabled),
8263 /* 7624 */ // MIs[0] dst
8264 /* 7624 */ // No operand predicates
8265 /* 7624 */ // MIs[0] sum
8266 /* 7624 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8267 /* 7628 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8268 /* 7632 */ // MIs[1] inner
8269 /* 7632 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8270 /* 7636 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8271 /* 7640 */ // MIs[2] ext1
8272 /* 7640 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8273 /* 7644 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8274 /* 7648 */ // MIs[3] x
8275 /* 7648 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8276 /* 7652 */ // MIs[2] ext2
8277 /* 7652 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8278 /* 7656 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_ZEXT),
8279 /* 7660 */ // MIs[4] y
8280 /* 7660 */ // No operand predicates
8281 /* 7660 */ // MIs[1] Operand 2
8282 /* 7660 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8283 /* 7664 */ // MIs[0] Operand 2
8284 /* 7664 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8285 /* 7668 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner30),
8286 /* 7672 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8287 /* 7674 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8288 /* 7677 */ // Combiner Rule #276: avgceil_u_match
8289 /* 7677 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGCEIL),
8290 /* 7680 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8291 /* 7685 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8292 /* 7689 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8293 /* 7693 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
8294 /* 7697 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8295 /* 7701 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8296 /* 7704 */ GIR_EraseRootFromParent_Done,
8297 /* 7705 */ // Label 371: @7705
8298 /* 7705 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(7782), // Rule ID 448 //
8299 /* 7710 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule274Enabled),
8300 /* 7713 */ // MIs[0] dst
8301 /* 7713 */ // No operand predicates
8302 /* 7713 */ // MIs[0] sum
8303 /* 7713 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8304 /* 7717 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8305 /* 7721 */ // MIs[1] ext1
8306 /* 7721 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8307 /* 7725 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ZEXT),
8308 /* 7729 */ // MIs[2] x
8309 /* 7729 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8310 /* 7733 */ // MIs[1] ext2
8311 /* 7733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8312 /* 7737 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
8313 /* 7741 */ // MIs[3] y
8314 /* 7741 */ // No operand predicates
8315 /* 7741 */ // MIs[0] Operand 2
8316 /* 7741 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8317 /* 7745 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner28),
8318 /* 7749 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8319 /* 7751 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8320 /* 7754 */ // Combiner Rule #274: avgfloor_u_match
8321 /* 7754 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_UAVGFLOOR),
8322 /* 7757 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8323 /* 7762 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8324 /* 7766 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8325 /* 7770 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
8326 /* 7774 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8327 /* 7778 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8328 /* 7781 */ GIR_EraseRootFromParent_Done,
8329 /* 7782 */ // Label 372: @7782
8330 /* 7782 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(7811), // Rule ID 433 //
8331 /* 7787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule262Enabled),
8332 /* 7790 */ // MIs[0] dst
8333 /* 7790 */ // No operand predicates
8334 /* 7790 */ // MIs[0] d2
8335 /* 7790 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8336 /* 7794 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
8337 /* 7798 */ // MIs[1] d1
8338 /* 7798 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8339 /* 7802 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
8340 /* 7806 */ // MIs[2] x
8341 /* 7806 */ // No operand predicates
8342 /* 7806 */ // MIs[2] y
8343 /* 7806 */ // No operand predicates
8344 /* 7806 */ // MIs[0] z
8345 /* 7806 */ // No operand predicates
8346 /* 7806 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8347 /* 7808 */ // Combiner Rule #262: lshr_of_trunc_of_lshr
8348 /* 7808 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
8349 /* 7811 */ // Label 373: @7811
8350 /* 7811 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(7851), // Rule ID 133 //
8351 /* 7816 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8352 /* 7819 */ // MIs[0] dst
8353 /* 7819 */ // No operand predicates
8354 /* 7819 */ // MIs[0] zero
8355 /* 7819 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8356 /* 7823 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8357 /* 7827 */ // MIs[1] Operand 1
8358 /* 7827 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8359 /* 7838 */ // MIs[0] rhs
8360 /* 7838 */ // No operand predicates
8361 /* 7838 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8362 /* 7843 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8363 /* 7845 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
8364 /* 7845 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8365 /* 7850 */ GIR_EraseRootFromParent_Done,
8366 /* 7851 */ // Label 374: @7851
8367 /* 7851 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(7872), // Rule ID 95 //
8368 /* 7856 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8369 /* 7859 */ // MIs[0] dst
8370 /* 7859 */ // No operand predicates
8371 /* 7859 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8372 /* 7859 */ // No operand predicates
8373 /* 7859 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8374 /* 7859 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8375 /* 7863 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8376 /* 7867 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8377 /* 7869 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[2]]
8378 /* 7869 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8379 /* 7872 */ // Label 375: @7872
8380 /* 7872 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(7895), // Rule ID 124 //
8381 /* 7877 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8382 /* 7880 */ // MIs[0] dst
8383 /* 7880 */ // No operand predicates
8384 /* 7880 */ // MIs[0] lhs
8385 /* 7880 */ // No operand predicates
8386 /* 7880 */ // MIs[0] Operand 2
8387 /* 7880 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8388 /* 7884 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8389 /* 7889 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[6]]
8390 /* 7889 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8391 /* 7894 */ GIR_EraseRootFromParent_Done,
8392 /* 7895 */ // Label 376: @7895
8393 /* 7895 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(7906), // Rule ID 167 //
8394 /* 7900 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8395 /* 7903 */ // MIs[0] root
8396 /* 7903 */ // No operand predicates
8397 /* 7903 */ // MIs[0] mi.shifted
8398 /* 7903 */ // No operand predicates
8399 /* 7903 */ // MIs[0] mi.amt
8400 /* 7903 */ // No operand predicates
8401 /* 7903 */ // Combiner Rule #114: shifts_too_big @ [mi[2]]
8402 /* 7903 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
8403 /* 7906 */ // Label 377: @7906
8404 /* 7906 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(7917), // Rule ID 269 //
8405 /* 7911 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8406 /* 7914 */ // MIs[0] dst
8407 /* 7914 */ // No operand predicates
8408 /* 7914 */ // MIs[0] root.src
8409 /* 7914 */ // No operand predicates
8410 /* 7914 */ // MIs[0] root.amt
8411 /* 7914 */ // No operand predicates
8412 /* 7914 */ // Combiner Rule #192: bitfield_extract_from_shr @ [root[1]]
8413 /* 7914 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
8414 /* 7917 */ // Label 378: @7917
8415 /* 7917 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(7928), // Rule ID 271 //
8416 /* 7922 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8417 /* 7925 */ // MIs[0] dst
8418 /* 7925 */ // No operand predicates
8419 /* 7925 */ // MIs[0] root.src
8420 /* 7925 */ // No operand predicates
8421 /* 7925 */ // MIs[0] root.amt
8422 /* 7925 */ // No operand predicates
8423 /* 7925 */ // Combiner Rule #193: bitfield_extract_from_shr_and @ [root[1]]
8424 /* 7925 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
8425 /* 7928 */ // Label 379: @7928
8426 /* 7928 */ GIM_Reject,
8427 /* 7929 */ // Label 37: @7929
8428 /* 7929 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(7940), // Rule ID 237 //
8429 /* 7934 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
8430 /* 7937 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_ASHR'
8431 /* 7937 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
8432 /* 7940 */ // Label 380: @7940
8433 /* 7940 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(7951), // Rule ID 242 //
8434 /* 7945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
8435 /* 7948 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
8436 /* 7948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
8437 /* 7951 */ // Label 381: @7951
8438 /* 7951 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(7962), // Rule ID 275 //
8439 /* 7956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
8440 /* 7959 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_ASHR'
8441 /* 7959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
8442 /* 7962 */ // Label 382: @7962
8443 /* 7962 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(7973), // Rule ID 343 //
8444 /* 7967 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
8445 /* 7970 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_ASHR'
8446 /* 7970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
8447 /* 7973 */ // Label 383: @7973
8448 /* 7973 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(8062), // Rule ID 451 //
8449 /* 7978 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule277Enabled),
8450 /* 7981 */ // MIs[0] dst
8451 /* 7981 */ // No operand predicates
8452 /* 7981 */ // MIs[0] sum
8453 /* 7981 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8454 /* 7985 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8455 /* 7989 */ // MIs[1] inner
8456 /* 7989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8457 /* 7993 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
8458 /* 7997 */ // MIs[2] ext1
8459 /* 7997 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
8460 /* 8001 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8461 /* 8005 */ // MIs[3] x
8462 /* 8005 */ GIM_RecordRegType, /*MI*/3, /*Op*/1, /*TempTypeIdx*/255,
8463 /* 8009 */ // MIs[2] ext2
8464 /* 8009 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/4, /*MI*/2, /*OpIdx*/2, // MIs[4]
8465 /* 8013 */ GIM_CheckOpcode, /*MI*/4, GIMT_Encode2(TargetOpcode::G_SEXT),
8466 /* 8017 */ // MIs[4] y
8467 /* 8017 */ // No operand predicates
8468 /* 8017 */ // MIs[1] Operand 2
8469 /* 8017 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
8470 /* 8021 */ // MIs[0] Operand 2
8471 /* 8021 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8472 /* 8025 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner31),
8473 /* 8029 */ GIM_CheckIsSafeToFold, /*NumInsns*/4,
8474 /* 8031 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8475 /* 8034 */ // Combiner Rule #277: avgceil_s_match
8476 /* 8034 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGCEIL),
8477 /* 8037 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8478 /* 8042 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // x
8479 /* 8046 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/4, /*OpIdx*/1, // y
8480 /* 8050 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8481 /* 8054 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8482 /* 8058 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8483 /* 8061 */ GIR_EraseRootFromParent_Done,
8484 /* 8062 */ // Label 384: @8062
8485 /* 8062 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(8139), // Rule ID 449 //
8486 /* 8067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule275Enabled),
8487 /* 8070 */ // MIs[0] dst
8488 /* 8070 */ // No operand predicates
8489 /* 8070 */ // MIs[0] sum
8490 /* 8070 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8491 /* 8074 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
8492 /* 8078 */ // MIs[1] ext1
8493 /* 8078 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8494 /* 8082 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SEXT),
8495 /* 8086 */ // MIs[2] x
8496 /* 8086 */ GIM_RecordRegType, /*MI*/2, /*Op*/1, /*TempTypeIdx*/255,
8497 /* 8090 */ // MIs[1] ext2
8498 /* 8090 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/1, /*OpIdx*/2, // MIs[3]
8499 /* 8094 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_SEXT),
8500 /* 8098 */ // MIs[3] y
8501 /* 8098 */ // No operand predicates
8502 /* 8098 */ // MIs[0] Operand 2
8503 /* 8098 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
8504 /* 8102 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner29),
8505 /* 8106 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
8506 /* 8108 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8507 /* 8111 */ // Combiner Rule #275: avgfloor_s_match
8508 /* 8111 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SAVGFLOOR),
8509 /* 8114 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8510 /* 8119 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // x
8511 /* 8123 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/3, /*OpIdx*/1, // y
8512 /* 8127 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
8513 /* 8131 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8514 /* 8135 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8515 /* 8138 */ GIR_EraseRootFromParent_Done,
8516 /* 8139 */ // Label 385: @8139
8517 /* 8139 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(8179), // Rule ID 134 //
8518 /* 8144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
8519 /* 8147 */ // MIs[0] dst
8520 /* 8147 */ // No operand predicates
8521 /* 8147 */ // MIs[0] zero
8522 /* 8147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8523 /* 8151 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8524 /* 8155 */ // MIs[1] Operand 1
8525 /* 8155 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8526 /* 8166 */ // MIs[0] rhs
8527 /* 8166 */ // No operand predicates
8528 /* 8166 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8529 /* 8171 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8530 /* 8173 */ // Combiner Rule #93: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
8531 /* 8173 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8532 /* 8178 */ GIR_EraseRootFromParent_Done,
8533 /* 8179 */ // Label 386: @8179
8534 /* 8179 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(8200), // Rule ID 94 //
8535 /* 8184 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
8536 /* 8187 */ // MIs[0] dst
8537 /* 8187 */ // No operand predicates
8538 /* 8187 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
8539 /* 8187 */ // No operand predicates
8540 /* 8187 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
8541 /* 8187 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
8542 /* 8191 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8543 /* 8195 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8544 /* 8197 */ // Combiner Rule #80: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[1]]
8545 /* 8197 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
8546 /* 8200 */ // Label 387: @8200
8547 /* 8200 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(8223), // Rule ID 123 //
8548 /* 8205 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8549 /* 8208 */ // MIs[0] dst
8550 /* 8208 */ // No operand predicates
8551 /* 8208 */ // MIs[0] lhs
8552 /* 8208 */ // No operand predicates
8553 /* 8208 */ // MIs[0] Operand 2
8554 /* 8208 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8555 /* 8212 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8556 /* 8217 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[5]]
8557 /* 8217 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8558 /* 8222 */ GIR_EraseRootFromParent_Done,
8559 /* 8223 */ // Label 388: @8223
8560 /* 8223 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(8234), // Rule ID 166 //
8561 /* 8228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
8562 /* 8231 */ // MIs[0] root
8563 /* 8231 */ // No operand predicates
8564 /* 8231 */ // MIs[0] mi.shifted
8565 /* 8231 */ // No operand predicates
8566 /* 8231 */ // MIs[0] mi.amt
8567 /* 8231 */ // No operand predicates
8568 /* 8231 */ // Combiner Rule #114: shifts_too_big @ [mi[1]]
8569 /* 8231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
8570 /* 8234 */ // Label 389: @8234
8571 /* 8234 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(8245), // Rule ID 178 //
8572 /* 8239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
8573 /* 8242 */ // MIs[0] dst
8574 /* 8242 */ // No operand predicates
8575 /* 8242 */ // MIs[0] src1
8576 /* 8242 */ // No operand predicates
8577 /* 8242 */ // MIs[0] src2
8578 /* 8242 */ // No operand predicates
8579 /* 8242 */ // Combiner Rule #125: shl_ashr_to_sext_inreg
8580 /* 8242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
8581 /* 8245 */ // Label 390: @8245
8582 /* 8245 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(8256), // Rule ID 268 //
8583 /* 8250 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
8584 /* 8253 */ // MIs[0] dst
8585 /* 8253 */ // No operand predicates
8586 /* 8253 */ // MIs[0] root.src
8587 /* 8253 */ // No operand predicates
8588 /* 8253 */ // MIs[0] root.amt
8589 /* 8253 */ // No operand predicates
8590 /* 8253 */ // Combiner Rule #192: bitfield_extract_from_shr @ [root[0]]
8591 /* 8253 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
8592 /* 8256 */ // Label 391: @8256
8593 /* 8256 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(8267), // Rule ID 270 //
8594 /* 8261 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
8595 /* 8264 */ // MIs[0] dst
8596 /* 8264 */ // No operand predicates
8597 /* 8264 */ // MIs[0] root.src
8598 /* 8264 */ // No operand predicates
8599 /* 8264 */ // MIs[0] root.amt
8600 /* 8264 */ // No operand predicates
8601 /* 8264 */ // Combiner Rule #193: bitfield_extract_from_shr_and @ [root[0]]
8602 /* 8264 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
8603 /* 8267 */ // Label 392: @8267
8604 /* 8267 */ GIM_Reject,
8605 /* 8268 */ // Label 38: @8268
8606 /* 8268 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(8288), // Rule ID 255 //
8607 /* 8273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
8608 /* 8276 */ // MIs[0] x
8609 /* 8276 */ // No operand predicates
8610 /* 8276 */ // MIs[0] y
8611 /* 8276 */ // No operand predicates
8612 /* 8276 */ // MIs[0] z
8613 /* 8276 */ // No operand predicates
8614 /* 8276 */ // MIs[0] Operand 3
8615 /* 8276 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8616 /* 8280 */ // Combiner Rule #182: funnel_shift_left_zero
8617 /* 8280 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8618 /* 8283 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8619 /* 8285 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
8620 /* 8287 */ GIR_EraseRootFromParent_Done,
8621 /* 8288 */ // Label 393: @8288
8622 /* 8288 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(8299), // Rule ID 252 //
8623 /* 8293 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
8624 /* 8296 */ // MIs[0] dst
8625 /* 8296 */ // No operand predicates
8626 /* 8296 */ // MIs[0] root.x
8627 /* 8296 */ // No operand predicates
8628 /* 8296 */ // MIs[0] root.y
8629 /* 8296 */ // No operand predicates
8630 /* 8296 */ // MIs[0] root.amt
8631 /* 8296 */ // No operand predicates
8632 /* 8296 */ // Combiner Rule #180: funnel_shift_to_rotate @ [root[0]]
8633 /* 8296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8634 /* 8299 */ // Label 394: @8299
8635 /* 8299 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(8310), // Rule ID 256 //
8636 /* 8304 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
8637 /* 8307 */ // MIs[0] dst
8638 /* 8307 */ // No operand predicates
8639 /* 8307 */ // MIs[0] root.x
8640 /* 8307 */ // No operand predicates
8641 /* 8307 */ // MIs[0] root.y
8642 /* 8307 */ // No operand predicates
8643 /* 8307 */ // MIs[0] root.amt
8644 /* 8307 */ // No operand predicates
8645 /* 8307 */ // Combiner Rule #183: funnel_shift_overshift @ [root[0]]
8646 /* 8307 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8647 /* 8310 */ // Label 395: @8310
8648 /* 8310 */ GIM_Reject,
8649 /* 8311 */ // Label 39: @8311
8650 /* 8311 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(8331), // Rule ID 254 //
8651 /* 8316 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
8652 /* 8319 */ // MIs[0] x
8653 /* 8319 */ // No operand predicates
8654 /* 8319 */ // MIs[0] y
8655 /* 8319 */ // No operand predicates
8656 /* 8319 */ // MIs[0] z
8657 /* 8319 */ // No operand predicates
8658 /* 8319 */ // MIs[0] Operand 3
8659 /* 8319 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8660 /* 8323 */ // Combiner Rule #181: funnel_shift_right_zero
8661 /* 8323 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
8662 /* 8326 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
8663 /* 8328 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
8664 /* 8330 */ GIR_EraseRootFromParent_Done,
8665 /* 8331 */ // Label 396: @8331
8666 /* 8331 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(8342), // Rule ID 253 //
8667 /* 8336 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
8668 /* 8339 */ // MIs[0] dst
8669 /* 8339 */ // No operand predicates
8670 /* 8339 */ // MIs[0] root.x
8671 /* 8339 */ // No operand predicates
8672 /* 8339 */ // MIs[0] root.y
8673 /* 8339 */ // No operand predicates
8674 /* 8339 */ // MIs[0] root.amt
8675 /* 8339 */ // No operand predicates
8676 /* 8339 */ // Combiner Rule #180: funnel_shift_to_rotate @ [root[1]]
8677 /* 8339 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
8678 /* 8342 */ // Label 397: @8342
8679 /* 8342 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(8353), // Rule ID 257 //
8680 /* 8347 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
8681 /* 8350 */ // MIs[0] dst
8682 /* 8350 */ // No operand predicates
8683 /* 8350 */ // MIs[0] root.x
8684 /* 8350 */ // No operand predicates
8685 /* 8350 */ // MIs[0] root.y
8686 /* 8350 */ // No operand predicates
8687 /* 8350 */ // MIs[0] root.amt
8688 /* 8350 */ // No operand predicates
8689 /* 8350 */ // Combiner Rule #183: funnel_shift_overshift @ [root[1]]
8690 /* 8350 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
8691 /* 8353 */ // Label 398: @8353
8692 /* 8353 */ GIM_Reject,
8693 /* 8354 */ // Label 40: @8354
8694 /* 8354 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(8377), // Rule ID 127 //
8695 /* 8359 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8696 /* 8362 */ // MIs[0] dst
8697 /* 8362 */ // No operand predicates
8698 /* 8362 */ // MIs[0] lhs
8699 /* 8362 */ // No operand predicates
8700 /* 8362 */ // MIs[0] Operand 2
8701 /* 8362 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8702 /* 8366 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8703 /* 8371 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[9]]
8704 /* 8371 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8705 /* 8376 */ GIR_EraseRootFromParent_Done,
8706 /* 8377 */ // Label 399: @8377
8707 /* 8377 */ GIM_Reject,
8708 /* 8378 */ // Label 41: @8378
8709 /* 8378 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(8401), // Rule ID 126 //
8710 /* 8383 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
8711 /* 8386 */ // MIs[0] dst
8712 /* 8386 */ // No operand predicates
8713 /* 8386 */ // MIs[0] lhs
8714 /* 8386 */ // No operand predicates
8715 /* 8386 */ // MIs[0] Operand 2
8716 /* 8386 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8717 /* 8390 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8718 /* 8395 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[8]]
8719 /* 8395 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
8720 /* 8400 */ GIR_EraseRootFromParent_Done,
8721 /* 8401 */ // Label 400: @8401
8722 /* 8401 */ GIM_Reject,
8723 /* 8402 */ // Label 42: @8402
8724 /* 8402 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(8413), // Rule ID 171 //
8725 /* 8407 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
8726 /* 8410 */ // MIs[0] root
8727 /* 8410 */ // No operand predicates
8728 /* 8410 */ // MIs[0] pred
8729 /* 8410 */ // No operand predicates
8730 /* 8410 */ // MIs[0] lhs
8731 /* 8410 */ // No operand predicates
8732 /* 8410 */ // MIs[0] rhs
8733 /* 8410 */ // No operand predicates
8734 /* 8410 */ // Combiner Rule #118: canonicalize_icmp
8735 /* 8410 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
8736 /* 8413 */ // Label 401: @8413
8737 /* 8413 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(8424), // Rule ID 173 //
8738 /* 8418 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
8739 /* 8421 */ // MIs[0] dst
8740 /* 8421 */ // No operand predicates
8741 /* 8421 */ // MIs[0] pred
8742 /* 8421 */ // No operand predicates
8743 /* 8421 */ // MIs[0] src1
8744 /* 8421 */ // No operand predicates
8745 /* 8421 */ // MIs[0] src2
8746 /* 8421 */ // No operand predicates
8747 /* 8421 */ // Combiner Rule #120: icmp_to_true_false_known_bits
8748 /* 8421 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
8749 /* 8424 */ // Label 402: @8424
8750 /* 8424 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(8435), // Rule ID 174 //
8751 /* 8429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
8752 /* 8432 */ // MIs[0] dst
8753 /* 8432 */ // No operand predicates
8754 /* 8432 */ // MIs[0] pred
8755 /* 8432 */ // No operand predicates
8756 /* 8432 */ // MIs[0] src1
8757 /* 8432 */ // No operand predicates
8758 /* 8432 */ // MIs[0] src2
8759 /* 8432 */ // No operand predicates
8760 /* 8432 */ // Combiner Rule #121: icmp_to_lhs_known_bits
8761 /* 8432 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
8762 /* 8435 */ // Label 403: @8435
8763 /* 8435 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(8446), // Rule ID 177 //
8764 /* 8440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
8765 /* 8443 */ // MIs[0] dst
8766 /* 8443 */ // No operand predicates
8767 /* 8443 */ // MIs[0] pred
8768 /* 8443 */ // No operand predicates
8769 /* 8443 */ // MIs[0] src1
8770 /* 8443 */ // No operand predicates
8771 /* 8443 */ // MIs[0] src2
8772 /* 8443 */ // No operand predicates
8773 /* 8443 */ // Combiner Rule #124: redundant_binop_in_equality
8774 /* 8443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
8775 /* 8446 */ // Label 404: @8446
8776 /* 8446 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(8457), // Rule ID 458 //
8777 /* 8451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule281Enabled),
8778 /* 8454 */ // MIs[0] dst
8779 /* 8454 */ // No operand predicates
8780 /* 8454 */ // MIs[0] tst
8781 /* 8454 */ // No operand predicates
8782 /* 8454 */ // MIs[0] src1
8783 /* 8454 */ // No operand predicates
8784 /* 8454 */ // MIs[0] src2
8785 /* 8454 */ // No operand predicates
8786 /* 8454 */ // Combiner Rule #281: icmp_redundant_trunc
8787 /* 8454 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
8788 /* 8457 */ // Label 405: @8457
8789 /* 8457 */ GIM_Reject,
8790 /* 8458 */ // Label 43: @8458
8791 /* 8458 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(8469), // Rule ID 172 //
8792 /* 8463 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
8793 /* 8466 */ // MIs[0] root
8794 /* 8466 */ // No operand predicates
8795 /* 8466 */ // MIs[0] pred
8796 /* 8466 */ // No operand predicates
8797 /* 8466 */ // MIs[0] lhs
8798 /* 8466 */ // No operand predicates
8799 /* 8466 */ // MIs[0] rhs
8800 /* 8466 */ // No operand predicates
8801 /* 8466 */ // Combiner Rule #119: canonicalize_fcmp
8802 /* 8466 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
8803 /* 8469 */ // Label 406: @8469
8804 /* 8469 */ GIM_Reject,
8805 /* 8470 */ // Label 44: @8470
8806 /* 8470 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(8550), // Rule ID 456 //
8807 /* 8475 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule279Enabled),
8808 /* 8478 */ // MIs[0] dst
8809 /* 8478 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8810 /* 8482 */ // MIs[0] c
8811 /* 8482 */ // No operand predicates
8812 /* 8482 */ // MIs[0] Operand 2
8813 /* 8482 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
8814 /* 8486 */ // MIs[0] x
8815 /* 8486 */ // No operand predicates
8816 /* 8486 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
8817 /* 8490 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
8818 /* 8493 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
8819 /* 8496 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
8820 /* 8506 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8821 /* 8509 */ // Combiner Rule #279: select_zero_true
8822 /* 8509 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
8823 /* 8512 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8824 /* 8517 */ GIR_RootToRootCopy, /*OpIdx*/1, // c
8825 /* 8519 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
8826 /* 8522 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
8827 /* 8526 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8828 /* 8531 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/3, // x
8829 /* 8535 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
8830 /* 8539 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
8831 /* 8543 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
8832 /* 8546 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
8833 /* 8549 */ GIR_EraseRootFromParent_Done,
8834 /* 8550 */ // Label 407: @8550
8835 /* 8550 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(8599), // Rule ID 189 //
8836 /* 8555 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
8837 /* 8558 */ // MIs[0] dst
8838 /* 8558 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
8839 /* 8562 */ // MIs[0] c
8840 /* 8562 */ // No operand predicates
8841 /* 8562 */ // MIs[0] x
8842 /* 8562 */ // No operand predicates
8843 /* 8562 */ // MIs[0] Operand 3
8844 /* 8562 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
8845 /* 8566 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
8846 /* 8570 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
8847 /* 8573 */ // Combiner Rule #136: select_zero_false
8848 /* 8573 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
8849 /* 8576 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
8850 /* 8581 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8851 /* 8583 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
8852 /* 8587 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
8853 /* 8591 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
8854 /* 8595 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
8855 /* 8598 */ GIR_EraseRootFromParent_Done,
8856 /* 8599 */ // Label 408: @8599
8857 /* 8599 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(8620), // Rule ID 187 //
8858 /* 8604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
8859 /* 8607 */ // MIs[0] root
8860 /* 8607 */ // No operand predicates
8861 /* 8607 */ // MIs[0] tst
8862 /* 8607 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8863 /* 8611 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
8864 /* 8615 */ // MIs[1] tst1
8865 /* 8615 */ // No operand predicates
8866 /* 8615 */ // MIs[1] a
8867 /* 8615 */ // No operand predicates
8868 /* 8615 */ // MIs[1] b
8869 /* 8615 */ // No operand predicates
8870 /* 8615 */ // MIs[0] x
8871 /* 8615 */ // No operand predicates
8872 /* 8615 */ // MIs[0] y
8873 /* 8615 */ // No operand predicates
8874 /* 8615 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8875 /* 8617 */ // Combiner Rule #134: select_to_iminmax
8876 /* 8617 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
8877 /* 8620 */ // Label 409: @8620
8878 /* 8620 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(8656), // Rule ID 190 //
8879 /* 8625 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
8880 /* 8628 */ // MIs[0] dst
8881 /* 8628 */ // No operand predicates
8882 /* 8628 */ // MIs[0] c
8883 /* 8628 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8884 /* 8632 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
8885 /* 8636 */ // MIs[1] src
8886 /* 8636 */ // No operand predicates
8887 /* 8636 */ // MIs[1] Operand 2
8888 /* 8636 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
8889 /* 8640 */ // MIs[0] x
8890 /* 8640 */ // No operand predicates
8891 /* 8640 */ // MIs[0] y
8892 /* 8640 */ // No operand predicates
8893 /* 8640 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8894 /* 8642 */ // Combiner Rule #137: select_not
8895 /* 8642 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
8896 /* 8645 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
8897 /* 8647 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
8898 /* 8651 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
8899 /* 8653 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
8900 /* 8655 */ GIR_EraseRootFromParent_Done,
8901 /* 8656 */ // Label 410: @8656
8902 /* 8656 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(8685), // Rule ID 183 //
8903 /* 8661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
8904 /* 8664 */ // MIs[0] dst
8905 /* 8664 */ // No operand predicates
8906 /* 8664 */ // MIs[0] undef
8907 /* 8664 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8908 /* 8668 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
8909 /* 8672 */ // MIs[0] x
8910 /* 8672 */ // No operand predicates
8911 /* 8672 */ // MIs[0] y
8912 /* 8672 */ // No operand predicates
8913 /* 8672 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8914 /* 8677 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8915 /* 8679 */ // Combiner Rule #130: select_undef_cmp
8916 /* 8679 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8917 /* 8684 */ GIR_EraseRootFromParent_Done,
8918 /* 8685 */ // Label 411: @8685
8919 /* 8685 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(8725), // Rule ID 184 //
8920 /* 8690 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
8921 /* 8693 */ // MIs[0] dst
8922 /* 8693 */ // No operand predicates
8923 /* 8693 */ // MIs[0] cond
8924 /* 8693 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8925 /* 8697 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8926 /* 8701 */ // MIs[1] Operand 1
8927 /* 8701 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
8928 /* 8712 */ // MIs[0] tval
8929 /* 8712 */ // No operand predicates
8930 /* 8712 */ // MIs[0] fval
8931 /* 8712 */ // No operand predicates
8932 /* 8712 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8933 /* 8717 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8934 /* 8719 */ // Combiner Rule #131: select_constant_cmp_false
8935 /* 8719 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
8936 /* 8724 */ GIR_EraseRootFromParent_Done,
8937 /* 8725 */ // Label 412: @8725
8938 /* 8725 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(8765), // Rule ID 185 //
8939 /* 8730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
8940 /* 8733 */ // MIs[0] dst
8941 /* 8733 */ // No operand predicates
8942 /* 8733 */ // MIs[0] cond
8943 /* 8733 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8944 /* 8737 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
8945 /* 8741 */ // MIs[1] Operand 1
8946 /* 8741 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(1),
8947 /* 8752 */ // MIs[0] tval
8948 /* 8752 */ // No operand predicates
8949 /* 8752 */ // MIs[0] fval
8950 /* 8752 */ // No operand predicates
8951 /* 8752 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8952 /* 8757 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8953 /* 8759 */ // Combiner Rule #132: select_constant_cmp_true
8954 /* 8759 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8955 /* 8764 */ GIR_EraseRootFromParent_Done,
8956 /* 8765 */ // Label 413: @8765
8957 /* 8765 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(8789), // Rule ID 116 //
8958 /* 8770 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
8959 /* 8773 */ // MIs[0] dst
8960 /* 8773 */ // No operand predicates
8961 /* 8773 */ // MIs[0] cond
8962 /* 8773 */ // No operand predicates
8963 /* 8773 */ // MIs[0] x
8964 /* 8773 */ // No operand predicates
8965 /* 8773 */ // MIs[0] x
8966 /* 8773 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/0, /*OtherOpIdx*/2,
8967 /* 8778 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8968 /* 8783 */ // Combiner Rule #88: select_same_val_trivial
8969 /* 8783 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8970 /* 8788 */ GIR_EraseRootFromParent_Done,
8971 /* 8789 */ // Label 414: @8789
8972 /* 8789 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(8812), // Rule ID 117 //
8973 /* 8794 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
8974 /* 8797 */ // MIs[0] dst
8975 /* 8797 */ // No operand predicates
8976 /* 8797 */ // MIs[0] cond
8977 /* 8797 */ // No operand predicates
8978 /* 8797 */ // MIs[0] tval
8979 /* 8797 */ // No operand predicates
8980 /* 8797 */ // MIs[0] fval
8981 /* 8797 */ // No operand predicates
8982 /* 8797 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
8983 /* 8801 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8984 /* 8806 */ // Combiner Rule #89: select_same_val_equiv
8985 /* 8806 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
8986 /* 8811 */ GIR_EraseRootFromParent_Done,
8987 /* 8812 */ // Label 415: @8812
8988 /* 8812 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(8823), // Rule ID 186 //
8989 /* 8817 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
8990 /* 8820 */ // MIs[0] dst
8991 /* 8820 */ // No operand predicates
8992 /* 8820 */ // MIs[0] cond
8993 /* 8820 */ // No operand predicates
8994 /* 8820 */ // MIs[0] tval
8995 /* 8820 */ // No operand predicates
8996 /* 8820 */ // MIs[0] fval
8997 /* 8820 */ // No operand predicates
8998 /* 8820 */ // Combiner Rule #133: select_constant_cmp_general
8999 /* 8820 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
9000 /* 8823 */ // Label 416: @8823
9001 /* 8823 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(8834), // Rule ID 188 //
9002 /* 8828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
9003 /* 8831 */ // MIs[0] dst
9004 /* 8831 */ // No operand predicates
9005 /* 8831 */ // MIs[0] cond
9006 /* 8831 */ // No operand predicates
9007 /* 8831 */ // MIs[0] tval
9008 /* 8831 */ // No operand predicates
9009 /* 8831 */ // MIs[0] fval
9010 /* 8831 */ // No operand predicates
9011 /* 8831 */ // Combiner Rule #135: match_selects
9012 /* 8831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
9013 /* 8834 */ // Label 417: @8834
9014 /* 8834 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(8845), // Rule ID 367 //
9015 /* 8839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
9016 /* 8842 */ // MIs[0] dst
9017 /* 8842 */ // No operand predicates
9018 /* 8842 */ // MIs[0] cond
9019 /* 8842 */ // No operand predicates
9020 /* 8842 */ // MIs[0] tval
9021 /* 8842 */ // No operand predicates
9022 /* 8842 */ // MIs[0] fval
9023 /* 8842 */ // No operand predicates
9024 /* 8842 */ // Combiner Rule #225: select_to_minmax
9025 /* 8842 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
9026 /* 8845 */ // Label 418: @8845
9027 /* 8845 */ GIM_Reject,
9028 /* 8846 */ // Label 45: @8846
9029 /* 8846 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(8857), // Rule ID 378 //
9030 /* 8851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9031 /* 8854 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
9032 /* 8854 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9033 /* 8857 */ // Label 419: @8857
9034 /* 8857 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(8868), // Rule ID 426 //
9035 /* 8862 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
9036 /* 8865 */ // Combiner Rule #256: match_addos; wip_match_opcode 'G_UADDO'
9037 /* 8865 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
9038 /* 8868 */ // Label 420: @8868
9039 /* 8868 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(8879), // Rule ID 468 //
9040 /* 8873 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule291Enabled),
9041 /* 8876 */ // MIs[0] dst
9042 /* 8876 */ // No operand predicates
9043 /* 8876 */ // MIs[0] carry_out
9044 /* 8876 */ // No operand predicates
9045 /* 8876 */ // MIs[0] src1
9046 /* 8876 */ // No operand predicates
9047 /* 8876 */ // MIs[0] src2
9048 /* 8876 */ // No operand predicates
9049 /* 8876 */ // Combiner Rule #291: simplify_uaddo
9050 /* 8876 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
9051 /* 8879 */ // Label 421: @8879
9052 /* 8879 */ GIM_Reject,
9053 /* 8880 */ // Label 46: @8880
9054 /* 8880 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(8891), // Rule ID 225 //
9055 /* 8885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9056 /* 8888 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_UADDE'
9057 /* 8888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9058 /* 8891 */ // Label 422: @8891
9059 /* 8891 */ GIM_Reject,
9060 /* 8892 */ // Label 47: @8892
9061 /* 8892 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(8903), // Rule ID 428 //
9062 /* 8897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9063 /* 8900 */ // Combiner Rule #257: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
9064 /* 8900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
9065 /* 8903 */ // Label 423: @8903
9066 /* 8903 */ GIM_Reject,
9067 /* 8904 */ // Label 48: @8904
9068 /* 8904 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(8915), // Rule ID 227 //
9069 /* 8909 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9070 /* 8912 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_USUBE'
9071 /* 8912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9072 /* 8915 */ // Label 424: @8915
9073 /* 8915 */ GIM_Reject,
9074 /* 8916 */ // Label 49: @8916
9075 /* 8916 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(8927), // Rule ID 379 //
9076 /* 8921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9077 /* 8924 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
9078 /* 8924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9079 /* 8927 */ // Label 425: @8927
9080 /* 8927 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(8938), // Rule ID 425 //
9081 /* 8932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule256Enabled),
9082 /* 8935 */ // Combiner Rule #256: match_addos; wip_match_opcode 'G_SADDO'
9083 /* 8935 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
9084 /* 8938 */ // Label 426: @8938
9085 /* 8938 */ GIM_Reject,
9086 /* 8939 */ // Label 50: @8939
9087 /* 8939 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(8950), // Rule ID 226 //
9088 /* 8944 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9089 /* 8947 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_SADDE'
9090 /* 8947 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9091 /* 8950 */ // Label 427: @8950
9092 /* 8950 */ GIM_Reject,
9093 /* 8951 */ // Label 51: @8951
9094 /* 8951 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(8962), // Rule ID 427 //
9095 /* 8956 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule257Enabled),
9096 /* 8959 */ // Combiner Rule #257: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
9097 /* 8959 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
9098 /* 8962 */ // Label 428: @8962
9099 /* 8962 */ GIM_Reject,
9100 /* 8963 */ // Label 52: @8963
9101 /* 8963 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(8974), // Rule ID 228 //
9102 /* 8968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
9103 /* 8971 */ // Combiner Rule #170: adde_to_addo; wip_match_opcode 'G_SSUBE'
9104 /* 8971 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
9105 /* 8974 */ // Label 429: @8974
9106 /* 8974 */ GIM_Reject,
9107 /* 8975 */ // Label 53: @8975
9108 /* 8975 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(8986), // Rule ID 221 //
9109 /* 8980 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
9110 /* 8983 */ // Combiner Rule #168: mulo_by_2; wip_match_opcode 'G_UMULO'
9111 /* 8983 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
9112 /* 8986 */ // Label 430: @8986
9113 /* 8986 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(8997), // Rule ID 223 //
9114 /* 8991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9115 /* 8994 */ // Combiner Rule #169: mulo_by_0; wip_match_opcode 'G_UMULO'
9116 /* 8994 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
9117 /* 8997 */ // Label 431: @8997
9118 /* 8997 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(9008), // Rule ID 380 //
9119 /* 9002 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9120 /* 9005 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
9121 /* 9005 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9122 /* 9008 */ // Label 432: @9008
9123 /* 9008 */ GIM_Reject,
9124 /* 9009 */ // Label 54: @9009
9125 /* 9009 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(9020), // Rule ID 222 //
9126 /* 9014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
9127 /* 9017 */ // Combiner Rule #168: mulo_by_2; wip_match_opcode 'G_SMULO'
9128 /* 9017 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
9129 /* 9020 */ // Label 433: @9020
9130 /* 9020 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(9031), // Rule ID 224 //
9131 /* 9025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
9132 /* 9028 */ // Combiner Rule #169: mulo_by_0; wip_match_opcode 'G_SMULO'
9133 /* 9028 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
9134 /* 9031 */ // Label 434: @9031
9135 /* 9031 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(9042), // Rule ID 381 //
9136 /* 9036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9137 /* 9039 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
9138 /* 9039 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9139 /* 9042 */ // Label 435: @9042
9140 /* 9042 */ GIM_Reject,
9141 /* 9043 */ // Label 55: @9043
9142 /* 9043 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(9054), // Rule ID 382 //
9143 /* 9048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9144 /* 9051 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
9145 /* 9051 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9146 /* 9054 */ // Label 436: @9054
9147 /* 9054 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(9065), // Rule ID 316 //
9148 /* 9059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
9149 /* 9062 */ // MIs[0] dst
9150 /* 9062 */ // No operand predicates
9151 /* 9062 */ // MIs[0] src1
9152 /* 9062 */ // No operand predicates
9153 /* 9062 */ // MIs[0] src2
9154 /* 9062 */ // No operand predicates
9155 /* 9062 */ // Combiner Rule #200: mulh_to_lshr
9156 /* 9062 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
9157 /* 9065 */ // Label 437: @9065
9158 /* 9065 */ GIM_Reject,
9159 /* 9066 */ // Label 56: @9066
9160 /* 9066 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(9077), // Rule ID 383 //
9161 /* 9071 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9162 /* 9074 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
9163 /* 9074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9164 /* 9077 */ // Label 438: @9077
9165 /* 9077 */ GIM_Reject,
9166 /* 9078 */ // Label 57: @9078
9167 /* 9078 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(9089), // Rule ID 384 //
9168 /* 9083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9169 /* 9086 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
9170 /* 9086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9171 /* 9089 */ // Label 439: @9089
9172 /* 9089 */ GIM_Reject,
9173 /* 9090 */ // Label 58: @9090
9174 /* 9090 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(9101), // Rule ID 385 //
9175 /* 9095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9176 /* 9098 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
9177 /* 9098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9178 /* 9101 */ // Label 440: @9101
9179 /* 9101 */ GIM_Reject,
9180 /* 9102 */ // Label 59: @9102
9181 /* 9102 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(9113), // Rule ID 240 //
9182 /* 9107 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
9183 /* 9110 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
9184 /* 9110 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9185 /* 9113 */ // Label 441: @9113
9186 /* 9113 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(9124), // Rule ID 244 //
9187 /* 9118 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
9188 /* 9121 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
9189 /* 9121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
9190 /* 9124 */ // Label 442: @9124
9191 /* 9124 */ GIM_Reject,
9192 /* 9125 */ // Label 60: @9125
9193 /* 9125 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(9136), // Rule ID 239 //
9194 /* 9130 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
9195 /* 9133 */ // Combiner Rule #175: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
9196 /* 9133 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
9197 /* 9136 */ // Label 443: @9136
9198 /* 9136 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(9147), // Rule ID 245 //
9199 /* 9141 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
9200 /* 9144 */ // Combiner Rule #176: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
9201 /* 9144 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
9202 /* 9147 */ // Label 444: @9147
9203 /* 9147 */ GIM_Reject,
9204 /* 9148 */ // Label 61: @9148
9205 /* 9148 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(9159), // Rule ID 386 //
9206 /* 9153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9207 /* 9156 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
9208 /* 9156 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9209 /* 9159 */ // Label 445: @9159
9210 /* 9159 */ GIM_Reject,
9211 /* 9160 */ // Label 62: @9160
9212 /* 9160 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(9171), // Rule ID 387 //
9213 /* 9165 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9214 /* 9168 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
9215 /* 9168 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9216 /* 9171 */ // Label 446: @9171
9217 /* 9171 */ GIM_Reject,
9218 /* 9172 */ // Label 63: @9172
9219 /* 9172 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(9183), // Rule ID 388 //
9220 /* 9177 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9221 /* 9180 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
9222 /* 9180 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9223 /* 9183 */ // Label 447: @9183
9224 /* 9183 */ GIM_Reject,
9225 /* 9184 */ // Label 64: @9184
9226 /* 9184 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(9195), // Rule ID 389 //
9227 /* 9189 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
9228 /* 9192 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
9229 /* 9192 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
9230 /* 9195 */ // Label 448: @9195
9231 /* 9195 */ GIM_Reject,
9232 /* 9196 */ // Label 65: @9196
9233 /* 9196 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(9207), // Rule ID 317 //
9234 /* 9201 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
9235 /* 9204 */ // Combiner Rule #201: redundant_neg_operands_fadd_fsub; wip_match_opcode 'G_FADD'
9236 /* 9204 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
9237 /* 9207 */ // Label 449: @9207
9238 /* 9207 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(9218), // Rule ID 350 //
9239 /* 9212 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9240 /* 9215 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FADD'
9241 /* 9215 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9242 /* 9218 */ // Label 450: @9218
9243 /* 9218 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(9229), // Rule ID 390 //
9244 /* 9223 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9245 /* 9226 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
9246 /* 9226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9247 /* 9229 */ // Label 451: @9229
9248 /* 9229 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(9252), // Rule ID 156 //
9249 /* 9234 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
9250 /* 9237 */ // MIs[0] dst
9251 /* 9237 */ // No operand predicates
9252 /* 9237 */ // MIs[0] x
9253 /* 9237 */ // No operand predicates
9254 /* 9237 */ // MIs[0] y
9255 /* 9237 */ // No operand predicates
9256 /* 9237 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
9257 /* 9241 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9258 /* 9246 */ // Combiner Rule #108: right_identity_neg_zero_fp
9259 /* 9246 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9260 /* 9251 */ GIR_EraseRootFromParent_Done,
9261 /* 9252 */ // Label 452: @9252
9262 /* 9252 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(9281), // Rule ID 157 //
9263 /* 9257 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
9264 /* 9260 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
9265 /* 9266 */ // MIs[0] dst
9266 /* 9266 */ // No operand predicates
9267 /* 9266 */ // MIs[0] x
9268 /* 9266 */ // No operand predicates
9269 /* 9266 */ // MIs[0] y
9270 /* 9266 */ // No operand predicates
9271 /* 9266 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
9272 /* 9270 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9273 /* 9275 */ // Combiner Rule #109: right_identity_neg_zero_fp_nsz
9274 /* 9275 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9275 /* 9280 */ GIR_EraseRootFromParent_Done,
9276 /* 9281 */ // Label 453: @9281
9277 /* 9281 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(9292), // Rule ID 290 //
9278 /* 9286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9279 /* 9289 */ // MIs[0] d
9280 /* 9289 */ // No operand predicates
9281 /* 9289 */ // MIs[0] mi.src0
9282 /* 9289 */ // No operand predicates
9283 /* 9289 */ // MIs[0] mi.src1
9284 /* 9289 */ // No operand predicates
9285 /* 9289 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[0]]
9286 /* 9289 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9287 /* 9292 */ // Label 454: @9292
9288 /* 9292 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(9303), // Rule ID 324 //
9289 /* 9297 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
9290 /* 9300 */ // MIs[0] dst
9291 /* 9300 */ // No operand predicates
9292 /* 9300 */ // MIs[0] src1
9293 /* 9300 */ // No operand predicates
9294 /* 9300 */ // MIs[0] src2
9295 /* 9300 */ // No operand predicates
9296 /* 9300 */ // Combiner Rule #207: combine_fadd_fmul_to_fmad_or_fma
9297 /* 9300 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
9298 /* 9303 */ // Label 455: @9303
9299 /* 9303 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(9314), // Rule ID 325 //
9300 /* 9308 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
9301 /* 9311 */ // MIs[0] dst
9302 /* 9311 */ // No operand predicates
9303 /* 9311 */ // MIs[0] src1
9304 /* 9311 */ // No operand predicates
9305 /* 9311 */ // MIs[0] src2
9306 /* 9311 */ // No operand predicates
9307 /* 9311 */ // Combiner Rule #208: combine_fadd_fpext_fmul_to_fmad_or_fma
9308 /* 9311 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
9309 /* 9314 */ // Label 456: @9314
9310 /* 9314 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(9325), // Rule ID 326 //
9311 /* 9319 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
9312 /* 9322 */ // MIs[0] dst
9313 /* 9322 */ // No operand predicates
9314 /* 9322 */ // MIs[0] src1
9315 /* 9322 */ // No operand predicates
9316 /* 9322 */ // MIs[0] src2
9317 /* 9322 */ // No operand predicates
9318 /* 9322 */ // Combiner Rule #209: combine_fadd_fma_fmul_to_fmad_or_fma
9319 /* 9322 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
9320 /* 9325 */ // Label 457: @9325
9321 /* 9325 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(9336), // Rule ID 327 //
9322 /* 9330 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
9323 /* 9333 */ // MIs[0] dst
9324 /* 9333 */ // No operand predicates
9325 /* 9333 */ // MIs[0] src1
9326 /* 9333 */ // No operand predicates
9327 /* 9333 */ // MIs[0] src2
9328 /* 9333 */ // No operand predicates
9329 /* 9333 */ // Combiner Rule #210: combine_fadd_fpext_fma_fmul_to_fmad_or_fma
9330 /* 9333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
9331 /* 9336 */ // Label 458: @9336
9332 /* 9336 */ GIM_Reject,
9333 /* 9337 */ // Label 66: @9337
9334 /* 9337 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(9348), // Rule ID 318 //
9335 /* 9342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
9336 /* 9345 */ // Combiner Rule #201: redundant_neg_operands_fadd_fsub; wip_match_opcode 'G_FSUB'
9337 /* 9345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
9338 /* 9348 */ // Label 459: @9348
9339 /* 9348 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(9359), // Rule ID 351 //
9340 /* 9353 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9341 /* 9356 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FSUB'
9342 /* 9356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9343 /* 9359 */ // Label 460: @9359
9344 /* 9359 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(9370), // Rule ID 291 //
9345 /* 9364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9346 /* 9367 */ // MIs[0] d
9347 /* 9367 */ // No operand predicates
9348 /* 9367 */ // MIs[0] mi.src0
9349 /* 9367 */ // No operand predicates
9350 /* 9367 */ // MIs[0] mi.src1
9351 /* 9367 */ // No operand predicates
9352 /* 9367 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[1]]
9353 /* 9367 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9354 /* 9370 */ // Label 461: @9370
9355 /* 9370 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(9381), // Rule ID 328 //
9356 /* 9375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
9357 /* 9378 */ // MIs[0] dst
9358 /* 9378 */ // No operand predicates
9359 /* 9378 */ // MIs[0] src1
9360 /* 9378 */ // No operand predicates
9361 /* 9378 */ // MIs[0] src2
9362 /* 9378 */ // No operand predicates
9363 /* 9378 */ // Combiner Rule #211: combine_fsub_fmul_to_fmad_or_fma
9364 /* 9378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
9365 /* 9381 */ // Label 462: @9381
9366 /* 9381 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(9392), // Rule ID 329 //
9367 /* 9386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
9368 /* 9389 */ // MIs[0] dst
9369 /* 9389 */ // No operand predicates
9370 /* 9389 */ // MIs[0] src1
9371 /* 9389 */ // No operand predicates
9372 /* 9389 */ // MIs[0] src2
9373 /* 9389 */ // No operand predicates
9374 /* 9389 */ // Combiner Rule #212: combine_fsub_fneg_fmul_to_fmad_or_fma
9375 /* 9389 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
9376 /* 9392 */ // Label 463: @9392
9377 /* 9392 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(9403), // Rule ID 330 //
9378 /* 9397 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
9379 /* 9400 */ // MIs[0] dst
9380 /* 9400 */ // No operand predicates
9381 /* 9400 */ // MIs[0] src1
9382 /* 9400 */ // No operand predicates
9383 /* 9400 */ // MIs[0] src2
9384 /* 9400 */ // No operand predicates
9385 /* 9400 */ // Combiner Rule #213: combine_fsub_fpext_fmul_to_fmad_or_fma
9386 /* 9400 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
9387 /* 9403 */ // Label 464: @9403
9388 /* 9403 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(9414), // Rule ID 331 //
9389 /* 9408 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
9390 /* 9411 */ // MIs[0] dst
9391 /* 9411 */ // No operand predicates
9392 /* 9411 */ // MIs[0] src1
9393 /* 9411 */ // No operand predicates
9394 /* 9411 */ // MIs[0] src2
9395 /* 9411 */ // No operand predicates
9396 /* 9411 */ // Combiner Rule #214: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma
9397 /* 9411 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
9398 /* 9414 */ // Label 465: @9414
9399 /* 9414 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(9425), // Rule ID 368 //
9400 /* 9419 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
9401 /* 9422 */ // MIs[0] dst
9402 /* 9422 */ // No operand predicates
9403 /* 9422 */ // MIs[0] src1
9404 /* 9422 */ // No operand predicates
9405 /* 9422 */ // MIs[0] src2
9406 /* 9422 */ // No operand predicates
9407 /* 9422 */ // Combiner Rule #226: fsub_to_fneg
9408 /* 9422 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
9409 /* 9425 */ // Label 466: @9425
9410 /* 9425 */ GIM_Reject,
9411 /* 9426 */ // Label 67: @9426
9412 /* 9426 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(9437), // Rule ID 349 //
9413 /* 9431 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9414 /* 9434 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMUL'
9415 /* 9434 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9416 /* 9437 */ // Label 467: @9437
9417 /* 9437 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(9448), // Rule ID 391 //
9418 /* 9442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9419 /* 9445 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
9420 /* 9445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9421 /* 9448 */ // Label 468: @9448
9422 /* 9448 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(9491), // Rule ID 319 //
9423 /* 9453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
9424 /* 9456 */ // MIs[0] dst
9425 /* 9456 */ // No operand predicates
9426 /* 9456 */ // MIs[0] nx
9427 /* 9456 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9428 /* 9460 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9429 /* 9464 */ // MIs[1] x
9430 /* 9464 */ // No operand predicates
9431 /* 9464 */ // MIs[0] ny
9432 /* 9464 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9433 /* 9468 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9434 /* 9472 */ // MIs[2] y
9435 /* 9472 */ // No operand predicates
9436 /* 9472 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9437 /* 9474 */ // Combiner Rule #202: G_FMUL_fneg_fneg
9438 /* 9474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMUL),
9439 /* 9477 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9440 /* 9479 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9441 /* 9483 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9442 /* 9487 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9443 /* 9490 */ GIR_EraseRootFromParent_Done,
9444 /* 9491 */ // Label 469: @9491
9445 /* 9491 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(9514), // Rule ID 146 //
9446 /* 9496 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
9447 /* 9499 */ // MIs[0] dst
9448 /* 9499 */ // No operand predicates
9449 /* 9499 */ // MIs[0] x
9450 /* 9499 */ // No operand predicates
9451 /* 9499 */ // MIs[0] y
9452 /* 9499 */ // No operand predicates
9453 /* 9499 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
9454 /* 9503 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9455 /* 9508 */ // Combiner Rule #100: right_identity_one_fp
9456 /* 9508 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9457 /* 9513 */ GIR_EraseRootFromParent_Done,
9458 /* 9514 */ // Label 470: @9514
9459 /* 9514 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(9534), // Rule ID 158 //
9460 /* 9519 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
9461 /* 9522 */ // MIs[0] dst
9462 /* 9522 */ // No operand predicates
9463 /* 9522 */ // MIs[0] x
9464 /* 9522 */ // No operand predicates
9465 /* 9522 */ // MIs[0] y
9466 /* 9522 */ // No operand predicates
9467 /* 9522 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
9468 /* 9526 */ // Combiner Rule #110: right_identity_neg_one_fp
9469 /* 9526 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
9470 /* 9529 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9471 /* 9531 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
9472 /* 9533 */ GIR_EraseRootFromParent_Done,
9473 /* 9534 */ // Label 471: @9534
9474 /* 9534 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(9545), // Rule ID 292 //
9475 /* 9539 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9476 /* 9542 */ // MIs[0] d
9477 /* 9542 */ // No operand predicates
9478 /* 9542 */ // MIs[0] mi.src0
9479 /* 9542 */ // No operand predicates
9480 /* 9542 */ // MIs[0] mi.src1
9481 /* 9542 */ // No operand predicates
9482 /* 9542 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[2]]
9483 /* 9542 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9484 /* 9545 */ // Label 472: @9545
9485 /* 9545 */ GIM_Reject,
9486 /* 9546 */ // Label 68: @9546
9487 /* 9546 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(9591), // Rule ID 322 //
9488 /* 9551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
9489 /* 9554 */ // MIs[0] dst
9490 /* 9554 */ // No operand predicates
9491 /* 9554 */ // MIs[0] nx
9492 /* 9554 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9493 /* 9558 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9494 /* 9562 */ // MIs[1] x
9495 /* 9562 */ // No operand predicates
9496 /* 9562 */ // MIs[0] ny
9497 /* 9562 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9498 /* 9566 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9499 /* 9570 */ // MIs[2] y
9500 /* 9570 */ // No operand predicates
9501 /* 9570 */ // MIs[0] z
9502 /* 9570 */ // No operand predicates
9503 /* 9570 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9504 /* 9572 */ // Combiner Rule #205: G_FMA_fneg_fneg
9505 /* 9572 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMA),
9506 /* 9575 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9507 /* 9577 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9508 /* 9581 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9509 /* 9585 */ GIR_RootToRootCopy, /*OpIdx*/3, // z
9510 /* 9587 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9511 /* 9590 */ GIR_EraseRootFromParent_Done,
9512 /* 9591 */ // Label 473: @9591
9513 /* 9591 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(9602), // Rule ID 303 //
9514 /* 9596 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
9515 /* 9599 */ // MIs[0] dst
9516 /* 9599 */ // No operand predicates
9517 /* 9599 */ // MIs[0] d.src0
9518 /* 9599 */ // No operand predicates
9519 /* 9599 */ // MIs[0] d.src1
9520 /* 9599 */ // No operand predicates
9521 /* 9599 */ // MIs[0] d.src2
9522 /* 9599 */ // No operand predicates
9523 /* 9599 */ // Combiner Rule #196: constant_fold_fma @ [d[1]]
9524 /* 9599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
9525 /* 9602 */ // Label 474: @9602
9526 /* 9602 */ GIM_Reject,
9527 /* 9603 */ // Label 69: @9603
9528 /* 9603 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(9648), // Rule ID 321 //
9529 /* 9608 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
9530 /* 9611 */ // MIs[0] dst
9531 /* 9611 */ // No operand predicates
9532 /* 9611 */ // MIs[0] nx
9533 /* 9611 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9534 /* 9615 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9535 /* 9619 */ // MIs[1] x
9536 /* 9619 */ // No operand predicates
9537 /* 9619 */ // MIs[0] ny
9538 /* 9619 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9539 /* 9623 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9540 /* 9627 */ // MIs[2] y
9541 /* 9627 */ // No operand predicates
9542 /* 9627 */ // MIs[0] z
9543 /* 9627 */ // No operand predicates
9544 /* 9627 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9545 /* 9629 */ // Combiner Rule #204: G_FMAD_fneg_fneg
9546 /* 9629 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FMAD),
9547 /* 9632 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9548 /* 9634 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9549 /* 9638 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9550 /* 9642 */ GIR_RootToRootCopy, /*OpIdx*/3, // z
9551 /* 9644 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9552 /* 9647 */ GIR_EraseRootFromParent_Done,
9553 /* 9648 */ // Label 475: @9648
9554 /* 9648 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(9659), // Rule ID 302 //
9555 /* 9653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
9556 /* 9656 */ // MIs[0] dst
9557 /* 9656 */ // No operand predicates
9558 /* 9656 */ // MIs[0] d.src0
9559 /* 9656 */ // No operand predicates
9560 /* 9656 */ // MIs[0] d.src1
9561 /* 9656 */ // No operand predicates
9562 /* 9656 */ // MIs[0] d.src2
9563 /* 9656 */ // No operand predicates
9564 /* 9656 */ // Combiner Rule #196: constant_fold_fma @ [d[0]]
9565 /* 9656 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
9566 /* 9659 */ // Label 476: @9659
9567 /* 9659 */ GIM_Reject,
9568 /* 9660 */ // Label 70: @9660
9569 /* 9660 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(9671), // Rule ID 352 //
9570 /* 9665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9571 /* 9668 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FDIV'
9572 /* 9668 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9573 /* 9671 */ // Label 477: @9671
9574 /* 9671 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(9714), // Rule ID 320 //
9575 /* 9676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
9576 /* 9679 */ // MIs[0] dst
9577 /* 9679 */ // No operand predicates
9578 /* 9679 */ // MIs[0] nx
9579 /* 9679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9580 /* 9683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9581 /* 9687 */ // MIs[1] x
9582 /* 9687 */ // No operand predicates
9583 /* 9687 */ // MIs[0] ny
9584 /* 9687 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
9585 /* 9691 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FNEG),
9586 /* 9695 */ // MIs[2] y
9587 /* 9695 */ // No operand predicates
9588 /* 9695 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
9589 /* 9697 */ // Combiner Rule #203: G_FDIV_fneg_fneg
9590 /* 9697 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FDIV),
9591 /* 9700 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9592 /* 9702 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9593 /* 9706 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // y
9594 /* 9710 */ GIR_CopyMIFlags, /*InsnID*/0, /*OldInsnID*/0,
9595 /* 9713 */ GIR_EraseRootFromParent_Done,
9596 /* 9714 */ // Label 478: @9714
9597 /* 9714 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(9725), // Rule ID 293 //
9598 /* 9719 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9599 /* 9722 */ // MIs[0] d
9600 /* 9722 */ // No operand predicates
9601 /* 9722 */ // MIs[0] mi.src0
9602 /* 9722 */ // No operand predicates
9603 /* 9722 */ // MIs[0] mi.src1
9604 /* 9722 */ // No operand predicates
9605 /* 9722 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[3]]
9606 /* 9722 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9607 /* 9725 */ // Label 479: @9725
9608 /* 9725 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(9736), // Rule ID 365 //
9609 /* 9730 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
9610 /* 9733 */ // MIs[0] dst
9611 /* 9733 */ // No operand predicates
9612 /* 9733 */ // MIs[0] src1
9613 /* 9733 */ // No operand predicates
9614 /* 9733 */ // MIs[0] src2
9615 /* 9733 */ // No operand predicates
9616 /* 9733 */ // Combiner Rule #223: fdiv_repeated_divison
9617 /* 9733 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
9618 /* 9736 */ // Label 480: @9736
9619 /* 9736 */ GIM_Reject,
9620 /* 9737 */ // Label 71: @9737
9621 /* 9737 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(9748), // Rule ID 353 //
9622 /* 9742 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9623 /* 9745 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FREM'
9624 /* 9745 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9625 /* 9748 */ // Label 481: @9748
9626 /* 9748 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(9759), // Rule ID 294 //
9627 /* 9753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9628 /* 9756 */ // MIs[0] d
9629 /* 9756 */ // No operand predicates
9630 /* 9756 */ // MIs[0] mi.src0
9631 /* 9756 */ // No operand predicates
9632 /* 9756 */ // MIs[0] mi.src1
9633 /* 9756 */ // No operand predicates
9634 /* 9756 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[4]]
9635 /* 9756 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9636 /* 9759 */ // Label 482: @9759
9637 /* 9759 */ GIM_Reject,
9638 /* 9760 */ // Label 72: @9760
9639 /* 9760 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(9781), // Rule ID 233 //
9640 /* 9765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
9641 /* 9768 */ // MIs[0] dst
9642 /* 9768 */ // No operand predicates
9643 /* 9768 */ // MIs[0] float
9644 /* 9768 */ // No operand predicates
9645 /* 9768 */ // MIs[0] int
9646 /* 9768 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
9647 /* 9772 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
9648 /* 9776 */ // MIs[1] imm
9649 /* 9776 */ // No operand predicates
9650 /* 9776 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9651 /* 9778 */ // Combiner Rule #172: expand_const_fpowi
9652 /* 9778 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
9653 /* 9781 */ // Label 483: @9781
9654 /* 9781 */ GIM_Reject,
9655 /* 9782 */ // Label 73: @9782
9656 /* 9782 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(9803), // Rule ID 207 //
9657 /* 9787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
9658 /* 9790 */ // MIs[0] dst
9659 /* 9790 */ // No operand predicates
9660 /* 9790 */ // MIs[0] src0
9661 /* 9790 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9662 /* 9794 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9663 /* 9798 */ // MIs[1] cst
9664 /* 9798 */ // No operand predicates
9665 /* 9798 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9666 /* 9800 */ // Combiner Rule #154: constant_fold_flog2
9667 /* 9800 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9668 /* 9803 */ // Label 484: @9803
9669 /* 9803 */ GIM_Reject,
9670 /* 9804 */ // Label 74: @9804
9671 /* 9804 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(9825), // Rule ID 204 //
9672 /* 9809 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
9673 /* 9812 */ // MIs[0] dst
9674 /* 9812 */ // No operand predicates
9675 /* 9812 */ // MIs[0] src0
9676 /* 9812 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9677 /* 9816 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9678 /* 9820 */ // MIs[1] cst
9679 /* 9820 */ // No operand predicates
9680 /* 9820 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9681 /* 9822 */ // Combiner Rule #151: constant_fold_fneg
9682 /* 9822 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9683 /* 9825 */ // Label 485: @9825
9684 /* 9825 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(9854), // Rule ID 144 //
9685 /* 9830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
9686 /* 9833 */ // MIs[0] dst
9687 /* 9833 */ // No operand predicates
9688 /* 9833 */ // MIs[0] t
9689 /* 9833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9690 /* 9837 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9691 /* 9841 */ // MIs[1] src
9692 /* 9841 */ // No operand predicates
9693 /* 9841 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
9694 /* 9846 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9695 /* 9848 */ // Combiner Rule #98: fneg_fneg_fold
9696 /* 9848 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
9697 /* 9853 */ GIR_EraseRootFromParent_Done,
9698 /* 9854 */ // Label 486: @9854
9699 /* 9854 */ GIM_Reject,
9700 /* 9855 */ // Label 75: @9855
9701 /* 9855 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(9876), // Rule ID 209 //
9702 /* 9860 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
9703 /* 9863 */ // MIs[0] dst
9704 /* 9863 */ // No operand predicates
9705 /* 9863 */ // MIs[0] src0
9706 /* 9863 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9707 /* 9867 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9708 /* 9871 */ // MIs[1] cst
9709 /* 9871 */ // No operand predicates
9710 /* 9871 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9711 /* 9873 */ // Combiner Rule #156: constant_fold_fpext
9712 /* 9873 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9713 /* 9876 */ // Label 487: @9876
9714 /* 9876 */ GIM_Reject,
9715 /* 9877 */ // Label 76: @9877
9716 /* 9877 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(9898), // Rule ID 208 //
9717 /* 9882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
9718 /* 9885 */ // MIs[0] dst
9719 /* 9885 */ // No operand predicates
9720 /* 9885 */ // MIs[0] src0
9721 /* 9885 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9722 /* 9889 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9723 /* 9893 */ // MIs[1] cst
9724 /* 9893 */ // No operand predicates
9725 /* 9893 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9726 /* 9895 */ // Combiner Rule #155: constant_fold_fptrunc
9727 /* 9895 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9728 /* 9898 */ // Label 488: @9898
9729 /* 9898 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(9919), // Rule ID 155 //
9730 /* 9903 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
9731 /* 9906 */ // MIs[0] dst
9732 /* 9906 */ // No operand predicates
9733 /* 9906 */ // MIs[0] src1
9734 /* 9906 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9735 /* 9910 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
9736 /* 9914 */ // MIs[1] src0
9737 /* 9914 */ // No operand predicates
9738 /* 9914 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9739 /* 9916 */ // Combiner Rule #107: fptrunc_fpext_fold
9740 /* 9916 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
9741 /* 9919 */ // Label 489: @9919
9742 /* 9919 */ GIM_Reject,
9743 /* 9920 */ // Label 77: @9920
9744 /* 9920 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(9941), // Rule ID 102 //
9745 /* 9925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
9746 /* 9928 */ // MIs[0] dst
9747 /* 9928 */ // No operand predicates
9748 /* 9928 */ // MIs[0] __unary_undef_to_undef_match_0.x
9749 /* 9928 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9750 /* 9932 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9751 /* 9936 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9752 /* 9938 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
9753 /* 9938 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
9754 /* 9941 */ // Label 490: @9941
9755 /* 9941 */ GIM_Reject,
9756 /* 9942 */ // Label 78: @9942
9757 /* 9942 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(9963), // Rule ID 103 //
9758 /* 9947 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
9759 /* 9950 */ // MIs[0] dst
9760 /* 9950 */ // No operand predicates
9761 /* 9950 */ // MIs[0] __unary_undef_to_undef_match_0.x
9762 /* 9950 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9763 /* 9954 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9764 /* 9958 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9765 /* 9960 */ // Combiner Rule #82: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
9766 /* 9960 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
9767 /* 9963 */ // Label 491: @9963
9768 /* 9963 */ GIM_Reject,
9769 /* 9964 */ // Label 79: @9964
9770 /* 9964 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(9985), // Rule ID 83 //
9771 /* 9969 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9772 /* 9972 */ // MIs[0] dst
9773 /* 9972 */ // No operand predicates
9774 /* 9972 */ // MIs[0] __undef_to_fp_zero_match_0.x
9775 /* 9972 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9776 /* 9976 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9777 /* 9980 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9778 /* 9982 */ // Combiner Rule #76: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[1]]
9779 /* 9982 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9780 /* 9985 */ // Label 492: @9985
9781 /* 9985 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(10000), // Rule ID 217 //
9782 /* 9990 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
9783 /* 9993 */ // MIs[0] dst
9784 /* 9993 */ // No operand predicates
9785 /* 9993 */ // MIs[0] Operand 1
9786 /* 9993 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
9787 /* 9997 */ // Combiner Rule #164: itof_const_zero_fold_si
9788 /* 9997 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9789 /* 10000 */ // Label 493: @10000
9790 /* 10000 */ GIM_Reject,
9791 /* 10001 */ // Label 80: @10001
9792 /* 10001 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(10022), // Rule ID 82 //
9793 /* 10006 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
9794 /* 10009 */ // MIs[0] dst
9795 /* 10009 */ // No operand predicates
9796 /* 10009 */ // MIs[0] __undef_to_fp_zero_match_0.x
9797 /* 10009 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9798 /* 10013 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
9799 /* 10017 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9800 /* 10019 */ // Combiner Rule #76: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[0]]
9801 /* 10019 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9802 /* 10022 */ // Label 494: @10022
9803 /* 10022 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(10037), // Rule ID 218 //
9804 /* 10027 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
9805 /* 10030 */ // MIs[0] dst
9806 /* 10030 */ // No operand predicates
9807 /* 10030 */ // MIs[0] Operand 1
9808 /* 10030 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
9809 /* 10034 */ // Combiner Rule #165: itof_const_zero_fold_ui
9810 /* 10034 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
9811 /* 10037 */ // Label 495: @10037
9812 /* 10037 */ GIM_Reject,
9813 /* 10038 */ // Label 81: @10038
9814 /* 10038 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(10067), // Rule ID 26 //
9815 /* 10043 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
9816 /* 10046 */ // MIs[0] dst
9817 /* 10046 */ // No operand predicates
9818 /* 10046 */ // MIs[0] src
9819 /* 10046 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9820 /* 10050 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
9821 /* 10054 */ // MIs[1] __idempotent_prop_match_0.x
9822 /* 10054 */ // No operand predicates
9823 /* 10054 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9824 /* 10059 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9825 /* 10061 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[1]]
9826 /* 10061 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9827 /* 10066 */ GIR_EraseRootFromParent_Done,
9828 /* 10067 */ // Label 496: @10067
9829 /* 10067 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(10088), // Rule ID 205 //
9830 /* 10072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
9831 /* 10075 */ // MIs[0] dst
9832 /* 10075 */ // No operand predicates
9833 /* 10075 */ // MIs[0] src0
9834 /* 10075 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9835 /* 10079 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
9836 /* 10083 */ // MIs[1] cst
9837 /* 10083 */ // No operand predicates
9838 /* 10083 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9839 /* 10085 */ // Combiner Rule #152: constant_fold_fabs
9840 /* 10085 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
9841 /* 10088 */ // Label 497: @10088
9842 /* 10088 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(10116), // Rule ID 315 //
9843 /* 10093 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
9844 /* 10096 */ // MIs[0] dst
9845 /* 10096 */ // No operand predicates
9846 /* 10096 */ // MIs[0] tmp
9847 /* 10096 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9848 /* 10100 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
9849 /* 10104 */ // MIs[1] x
9850 /* 10104 */ // No operand predicates
9851 /* 10104 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9852 /* 10106 */ // Combiner Rule #199: fabs_fneg_fold
9853 /* 10106 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
9854 /* 10109 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
9855 /* 10111 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
9856 /* 10115 */ GIR_EraseRootFromParent_Done,
9857 /* 10116 */ // Label 498: @10116
9858 /* 10116 */ GIM_Reject,
9859 /* 10117 */ // Label 82: @10117
9860 /* 10117 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(10128), // Rule ID 295 //
9861 /* 10122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9862 /* 10125 */ // MIs[0] d
9863 /* 10125 */ // No operand predicates
9864 /* 10125 */ // MIs[0] mi.src0
9865 /* 10125 */ // No operand predicates
9866 /* 10125 */ // MIs[0] mi.src1
9867 /* 10125 */ // No operand predicates
9868 /* 10125 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[5]]
9869 /* 10125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9870 /* 10128 */ // Label 499: @10128
9871 /* 10128 */ GIM_Reject,
9872 /* 10129 */ // Label 83: @10129
9873 /* 10129 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(10158), // Rule ID 27 //
9874 /* 10134 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
9875 /* 10137 */ // MIs[0] dst
9876 /* 10137 */ // No operand predicates
9877 /* 10137 */ // MIs[0] src
9878 /* 10137 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
9879 /* 10141 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
9880 /* 10145 */ // MIs[1] __idempotent_prop_match_0.x
9881 /* 10145 */ // No operand predicates
9882 /* 10145 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9883 /* 10150 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
9884 /* 10152 */ // Combiner Rule #24: idempotent_prop @ [__idempotent_prop_match_0[2]]
9885 /* 10152 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
9886 /* 10157 */ GIR_EraseRootFromParent_Done,
9887 /* 10158 */ // Label 500: @10158
9888 /* 10158 */ GIM_Reject,
9889 /* 10159 */ // Label 84: @10159
9890 /* 10159 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(10170), // Rule ID 354 //
9891 /* 10164 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9892 /* 10167 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
9893 /* 10167 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9894 /* 10170 */ // Label 501: @10170
9895 /* 10170 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(10181), // Rule ID 392 //
9896 /* 10175 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9897 /* 10178 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
9898 /* 10178 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9899 /* 10181 */ // Label 502: @10181
9900 /* 10181 */ GIM_Try, /*On fail goto*//*Label 503*/ GIMT_Encode4(10192), // Rule ID 229 //
9901 /* 10186 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
9902 /* 10189 */ // MIs[0] dst
9903 /* 10189 */ // No operand predicates
9904 /* 10189 */ // MIs[0] root.src0
9905 /* 10189 */ // No operand predicates
9906 /* 10189 */ // MIs[0] root.src1
9907 /* 10189 */ // No operand predicates
9908 /* 10189 */ // Combiner Rule #171: combine_minmax_nan @ [root[0]]
9909 /* 10189 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9910 /* 10192 */ // Label 503: @10192
9911 /* 10192 */ GIM_Try, /*On fail goto*//*Label 504*/ GIMT_Encode4(10203), // Rule ID 296 //
9912 /* 10197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9913 /* 10200 */ // MIs[0] d
9914 /* 10200 */ // No operand predicates
9915 /* 10200 */ // MIs[0] mi.src0
9916 /* 10200 */ // No operand predicates
9917 /* 10200 */ // MIs[0] mi.src1
9918 /* 10200 */ // No operand predicates
9919 /* 10200 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[6]]
9920 /* 10200 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9921 /* 10203 */ // Label 504: @10203
9922 /* 10203 */ GIM_Reject,
9923 /* 10204 */ // Label 85: @10204
9924 /* 10204 */ GIM_Try, /*On fail goto*//*Label 505*/ GIMT_Encode4(10215), // Rule ID 355 //
9925 /* 10209 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9926 /* 10212 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
9927 /* 10212 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9928 /* 10215 */ // Label 505: @10215
9929 /* 10215 */ GIM_Try, /*On fail goto*//*Label 506*/ GIMT_Encode4(10226), // Rule ID 393 //
9930 /* 10220 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9931 /* 10223 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
9932 /* 10223 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9933 /* 10226 */ // Label 506: @10226
9934 /* 10226 */ GIM_Try, /*On fail goto*//*Label 507*/ GIMT_Encode4(10237), // Rule ID 230 //
9935 /* 10231 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
9936 /* 10234 */ // MIs[0] dst
9937 /* 10234 */ // No operand predicates
9938 /* 10234 */ // MIs[0] root.src0
9939 /* 10234 */ // No operand predicates
9940 /* 10234 */ // MIs[0] root.src1
9941 /* 10234 */ // No operand predicates
9942 /* 10234 */ // Combiner Rule #171: combine_minmax_nan @ [root[1]]
9943 /* 10234 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9944 /* 10237 */ // Label 507: @10237
9945 /* 10237 */ GIM_Try, /*On fail goto*//*Label 508*/ GIMT_Encode4(10248), // Rule ID 297 //
9946 /* 10242 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9947 /* 10245 */ // MIs[0] d
9948 /* 10245 */ // No operand predicates
9949 /* 10245 */ // MIs[0] mi.src0
9950 /* 10245 */ // No operand predicates
9951 /* 10245 */ // MIs[0] mi.src1
9952 /* 10245 */ // No operand predicates
9953 /* 10245 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[7]]
9954 /* 10245 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
9955 /* 10248 */ // Label 508: @10248
9956 /* 10248 */ GIM_Reject,
9957 /* 10249 */ // Label 86: @10249
9958 /* 10249 */ GIM_Try, /*On fail goto*//*Label 509*/ GIMT_Encode4(10260), // Rule ID 394 //
9959 /* 10254 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9960 /* 10257 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
9961 /* 10257 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9962 /* 10260 */ // Label 509: @10260
9963 /* 10260 */ GIM_Reject,
9964 /* 10261 */ // Label 87: @10261
9965 /* 10261 */ GIM_Try, /*On fail goto*//*Label 510*/ GIMT_Encode4(10272), // Rule ID 395 //
9966 /* 10266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9967 /* 10269 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
9968 /* 10269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9969 /* 10272 */ // Label 510: @10272
9970 /* 10272 */ GIM_Reject,
9971 /* 10273 */ // Label 88: @10273
9972 /* 10273 */ GIM_Try, /*On fail goto*//*Label 511*/ GIMT_Encode4(10284), // Rule ID 356 //
9973 /* 10278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
9974 /* 10281 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
9975 /* 10281 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
9976 /* 10284 */ // Label 511: @10284
9977 /* 10284 */ GIM_Try, /*On fail goto*//*Label 512*/ GIMT_Encode4(10295), // Rule ID 396 //
9978 /* 10289 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
9979 /* 10292 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
9980 /* 10292 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
9981 /* 10295 */ // Label 512: @10295
9982 /* 10295 */ GIM_Try, /*On fail goto*//*Label 513*/ GIMT_Encode4(10306), // Rule ID 231 //
9983 /* 10300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
9984 /* 10303 */ // MIs[0] dst
9985 /* 10303 */ // No operand predicates
9986 /* 10303 */ // MIs[0] root.src0
9987 /* 10303 */ // No operand predicates
9988 /* 10303 */ // MIs[0] root.src1
9989 /* 10303 */ // No operand predicates
9990 /* 10303 */ // Combiner Rule #171: combine_minmax_nan @ [root[2]]
9991 /* 10303 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
9992 /* 10306 */ // Label 513: @10306
9993 /* 10306 */ GIM_Try, /*On fail goto*//*Label 514*/ GIMT_Encode4(10317), // Rule ID 298 //
9994 /* 10311 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
9995 /* 10314 */ // MIs[0] d
9996 /* 10314 */ // No operand predicates
9997 /* 10314 */ // MIs[0] mi.src0
9998 /* 10314 */ // No operand predicates
9999 /* 10314 */ // MIs[0] mi.src1
10000 /* 10314 */ // No operand predicates
10001 /* 10314 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[8]]
10002 /* 10314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10003 /* 10317 */ // Label 514: @10317
10004 /* 10317 */ GIM_Reject,
10005 /* 10318 */ // Label 89: @10318
10006 /* 10318 */ GIM_Try, /*On fail goto*//*Label 515*/ GIMT_Encode4(10329), // Rule ID 357 //
10007 /* 10323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10008 /* 10326 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
10009 /* 10326 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10010 /* 10329 */ // Label 515: @10329
10011 /* 10329 */ GIM_Try, /*On fail goto*//*Label 516*/ GIMT_Encode4(10340), // Rule ID 397 //
10012 /* 10334 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
10013 /* 10337 */ // Combiner Rule #228: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
10014 /* 10337 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
10015 /* 10340 */ // Label 516: @10340
10016 /* 10340 */ GIM_Try, /*On fail goto*//*Label 517*/ GIMT_Encode4(10351), // Rule ID 232 //
10017 /* 10345 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
10018 /* 10348 */ // MIs[0] dst
10019 /* 10348 */ // No operand predicates
10020 /* 10348 */ // MIs[0] root.src0
10021 /* 10348 */ // No operand predicates
10022 /* 10348 */ // MIs[0] root.src1
10023 /* 10348 */ // No operand predicates
10024 /* 10348 */ // Combiner Rule #171: combine_minmax_nan @ [root[3]]
10025 /* 10348 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
10026 /* 10351 */ // Label 517: @10351
10027 /* 10351 */ GIM_Try, /*On fail goto*//*Label 518*/ GIMT_Encode4(10362), // Rule ID 299 //
10028 /* 10356 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
10029 /* 10359 */ // MIs[0] d
10030 /* 10359 */ // No operand predicates
10031 /* 10359 */ // MIs[0] mi.src0
10032 /* 10359 */ // No operand predicates
10033 /* 10359 */ // MIs[0] mi.src1
10034 /* 10359 */ // No operand predicates
10035 /* 10359 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[9]]
10036 /* 10359 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10037 /* 10362 */ // Label 518: @10362
10038 /* 10362 */ GIM_Reject,
10039 /* 10363 */ // Label 90: @10363
10040 /* 10363 */ GIM_Try, /*On fail goto*//*Label 519*/ GIMT_Encode4(10374), // Rule ID 300 //
10041 /* 10368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
10042 /* 10371 */ // MIs[0] d
10043 /* 10371 */ // No operand predicates
10044 /* 10371 */ // MIs[0] mi.src0
10045 /* 10371 */ // No operand predicates
10046 /* 10371 */ // MIs[0] mi.src1
10047 /* 10371 */ // No operand predicates
10048 /* 10371 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[10]]
10049 /* 10371 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10050 /* 10374 */ // Label 519: @10374
10051 /* 10374 */ GIM_Reject,
10052 /* 10375 */ // Label 91: @10375
10053 /* 10375 */ GIM_Try, /*On fail goto*//*Label 520*/ GIMT_Encode4(10386), // Rule ID 301 //
10054 /* 10380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
10055 /* 10383 */ // MIs[0] d
10056 /* 10383 */ // No operand predicates
10057 /* 10383 */ // MIs[0] mi.src0
10058 /* 10383 */ // No operand predicates
10059 /* 10383 */ // MIs[0] mi.src1
10060 /* 10383 */ // No operand predicates
10061 /* 10383 */ // Combiner Rule #195: constant_fold_fp_binop @ [mi[11]]
10062 /* 10383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
10063 /* 10386 */ // Label 520: @10386
10064 /* 10386 */ GIM_Reject,
10065 /* 10387 */ // Label 92: @10387
10066 /* 10387 */ GIM_Try, /*On fail goto*//*Label 521*/ GIMT_Encode4(10398), // Rule ID 273 //
10067 /* 10392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10068 /* 10395 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
10069 /* 10395 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10070 /* 10398 */ // Label 521: @10398
10071 /* 10398 */ GIM_Try, /*On fail goto*//*Label 522*/ GIMT_Encode4(10409), // Rule ID 334 //
10072 /* 10403 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10073 /* 10406 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
10074 /* 10406 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10075 /* 10409 */ // Label 522: @10409
10076 /* 10409 */ GIM_Try, /*On fail goto*//*Label 523*/ GIMT_Encode4(10446), // Rule ID 219 //
10077 /* 10414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
10078 /* 10417 */ // MIs[0] dst
10079 /* 10417 */ // No operand predicates
10080 /* 10417 */ // MIs[0] base
10081 /* 10417 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10082 /* 10421 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
10083 /* 10425 */ // MIs[1] c1reg
10084 /* 10425 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
10085 /* 10429 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10086 /* 10433 */ // MIs[2] c1imm
10087 /* 10433 */ // No operand predicates
10088 /* 10433 */ // MIs[0] c2reg
10089 /* 10433 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
10090 /* 10437 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10091 /* 10441 */ // MIs[3] c2imm
10092 /* 10441 */ // No operand predicates
10093 /* 10441 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
10094 /* 10443 */ // Combiner Rule #166: const_ptradd_to_i2p
10095 /* 10443 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
10096 /* 10446 */ // Label 523: @10446
10097 /* 10446 */ GIM_Try, /*On fail goto*//*Label 524*/ GIMT_Encode4(10469), // Rule ID 125 //
10098 /* 10451 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
10099 /* 10454 */ // MIs[0] dst
10100 /* 10454 */ // No operand predicates
10101 /* 10454 */ // MIs[0] lhs
10102 /* 10454 */ // No operand predicates
10103 /* 10454 */ // MIs[0] Operand 2
10104 /* 10454 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
10105 /* 10458 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10106 /* 10463 */ // Combiner Rule #90: right_identity_zero @ [__right_identity_zero_match_0[7]]
10107 /* 10463 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10108 /* 10468 */ GIR_EraseRootFromParent_Done,
10109 /* 10469 */ // Label 524: @10469
10110 /* 10469 */ GIM_Try, /*On fail goto*//*Label 525*/ GIMT_Encode4(10489), // Rule ID 235 //
10111 /* 10474 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
10112 /* 10477 */ // MIs[0] dst
10113 /* 10477 */ // No operand predicates
10114 /* 10477 */ // MIs[0] base
10115 /* 10477 */ // No operand predicates
10116 /* 10477 */ // MIs[0] offset
10117 /* 10477 */ // No operand predicates
10118 /* 10477 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner19),
10119 /* 10481 */ // Combiner Rule #174: ptr_add_with_zero
10120 /* 10481 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_INTTOPTR),
10121 /* 10484 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10122 /* 10486 */ GIR_RootToRootCopy, /*OpIdx*/2, // offset
10123 /* 10488 */ GIR_EraseRootFromParent_Done,
10124 /* 10489 */ // Label 525: @10489
10125 /* 10489 */ GIM_Try, /*On fail goto*//*Label 526*/ GIMT_Encode4(10500), // Rule ID 168 //
10126 /* 10494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
10127 /* 10497 */ // MIs[0] dst
10128 /* 10497 */ // No operand predicates
10129 /* 10497 */ // MIs[0] base
10130 /* 10497 */ // No operand predicates
10131 /* 10497 */ // MIs[0] offset
10132 /* 10497 */ // No operand predicates
10133 /* 10497 */ // Combiner Rule #115: reassoc_ptradd
10134 /* 10497 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
10135 /* 10500 */ // Label 526: @10500
10136 /* 10500 */ GIM_Try, /*On fail goto*//*Label 527*/ GIMT_Encode4(10511), // Rule ID 170 //
10137 /* 10505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
10138 /* 10508 */ // MIs[0] dst
10139 /* 10508 */ // No operand predicates
10140 /* 10508 */ // MIs[0] base
10141 /* 10508 */ // No operand predicates
10142 /* 10508 */ // MIs[0] offset
10143 /* 10508 */ // No operand predicates
10144 /* 10508 */ // Combiner Rule #117: ptr_add_immed_chain
10145 /* 10508 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
10146 /* 10511 */ // Label 527: @10511
10147 /* 10511 */ GIM_Reject,
10148 /* 10512 */ // Label 93: @10512
10149 /* 10512 */ GIM_Try, /*On fail goto*//*Label 528*/ GIMT_Encode4(10523), // Rule ID 286 //
10150 /* 10517 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10151 /* 10520 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SMIN'
10152 /* 10520 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10153 /* 10523 */ // Label 528: @10523
10154 /* 10523 */ GIM_Try, /*On fail goto*//*Label 529*/ GIMT_Encode4(10534), // Rule ID 345 //
10155 /* 10528 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10156 /* 10531 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SMIN'
10157 /* 10531 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10158 /* 10534 */ // Label 529: @10534
10159 /* 10534 */ GIM_Try, /*On fail goto*//*Label 530*/ GIMT_Encode4(10545), // Rule ID 374 //
10160 /* 10539 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10161 /* 10542 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
10162 /* 10542 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10163 /* 10545 */ // Label 530: @10545
10164 /* 10545 */ GIM_Reject,
10165 /* 10546 */ // Label 94: @10546
10166 /* 10546 */ GIM_Try, /*On fail goto*//*Label 531*/ GIMT_Encode4(10557), // Rule ID 287 //
10167 /* 10551 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10168 /* 10554 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_SMAX'
10169 /* 10554 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10170 /* 10557 */ // Label 531: @10557
10171 /* 10557 */ GIM_Try, /*On fail goto*//*Label 532*/ GIMT_Encode4(10568), // Rule ID 346 //
10172 /* 10562 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10173 /* 10565 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_SMAX'
10174 /* 10565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10175 /* 10568 */ // Label 532: @10568
10176 /* 10568 */ GIM_Try, /*On fail goto*//*Label 533*/ GIMT_Encode4(10579), // Rule ID 375 //
10177 /* 10573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10178 /* 10576 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
10179 /* 10576 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10180 /* 10579 */ // Label 533: @10579
10181 /* 10579 */ GIM_Reject,
10182 /* 10580 */ // Label 95: @10580
10183 /* 10580 */ GIM_Try, /*On fail goto*//*Label 534*/ GIMT_Encode4(10591), // Rule ID 288 //
10184 /* 10585 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10185 /* 10588 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UMIN'
10186 /* 10588 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10187 /* 10591 */ // Label 534: @10591
10188 /* 10591 */ GIM_Try, /*On fail goto*//*Label 535*/ GIMT_Encode4(10602), // Rule ID 347 //
10189 /* 10596 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10190 /* 10599 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UMIN'
10191 /* 10599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10192 /* 10602 */ // Label 535: @10602
10193 /* 10602 */ GIM_Try, /*On fail goto*//*Label 536*/ GIMT_Encode4(10613), // Rule ID 376 //
10194 /* 10607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10195 /* 10610 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
10196 /* 10610 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10197 /* 10613 */ // Label 536: @10613
10198 /* 10613 */ GIM_Reject,
10199 /* 10614 */ // Label 96: @10614
10200 /* 10614 */ GIM_Try, /*On fail goto*//*Label 537*/ GIMT_Encode4(10625), // Rule ID 289 //
10201 /* 10619 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
10202 /* 10622 */ // Combiner Rule #194: constant_fold_binop; wip_match_opcode 'G_UMAX'
10203 /* 10622 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
10204 /* 10625 */ // Label 537: @10625
10205 /* 10625 */ GIM_Try, /*On fail goto*//*Label 538*/ GIMT_Encode4(10636), // Rule ID 348 //
10206 /* 10630 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
10207 /* 10633 */ // Combiner Rule #215: fold_binop_into_select; wip_match_opcode 'G_UMAX'
10208 /* 10633 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
10209 /* 10636 */ // Label 538: @10636
10210 /* 10636 */ GIM_Try, /*On fail goto*//*Label 539*/ GIMT_Encode4(10647), // Rule ID 377 //
10211 /* 10641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
10212 /* 10644 */ // Combiner Rule #227: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
10213 /* 10644 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
10214 /* 10647 */ // Label 539: @10647
10215 /* 10647 */ GIM_Reject,
10216 /* 10648 */ // Label 97: @10648
10217 /* 10648 */ GIM_Try, /*On fail goto*//*Label 540*/ GIMT_Encode4(10669), // Rule ID 96 //
10218 /* 10653 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
10219 /* 10656 */ // MIs[0] dst
10220 /* 10656 */ // No operand predicates
10221 /* 10656 */ // MIs[0] __unary_undef_to_zero_match_0.x
10222 /* 10656 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10223 /* 10660 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10224 /* 10664 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10225 /* 10666 */ // Combiner Rule #81: unary_undef_to_zero @ [__unary_undef_to_zero_match_0[0]]
10226 /* 10666 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
10227 /* 10669 */ // Label 540: @10669
10228 /* 10669 */ GIM_Try, /*On fail goto*//*Label 541*/ GIMT_Encode4(10680), // Rule ID 312 //
10229 /* 10674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10230 /* 10677 */ // MIs[0] dst
10231 /* 10677 */ // No operand predicates
10232 /* 10677 */ // MIs[0] mi.src
10233 /* 10677 */ // No operand predicates
10234 /* 10677 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[5]]
10235 /* 10677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10236 /* 10680 */ // Label 541: @10680
10237 /* 10680 */ GIM_Reject,
10238 /* 10681 */ // Label 98: @10681
10239 /* 10681 */ GIM_Try, /*On fail goto*//*Label 542*/ GIMT_Encode4(10692), // Rule ID 203 //
10240 /* 10686 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
10241 /* 10689 */ // MIs[0] tgt
10242 /* 10689 */ // No operand predicates
10243 /* 10689 */ // Combiner Rule #150: opt_brcond_by_inverting_cond
10244 /* 10689 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
10245 /* 10692 */ // Label 542: @10692
10246 /* 10692 */ GIM_Reject,
10247 /* 10693 */ // Label 99: @10693
10248 /* 10693 */ GIM_Try, /*On fail goto*//*Label 543*/ GIMT_Encode4(10704), // Rule ID 114 //
10249 /* 10698 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
10250 /* 10701 */ // Combiner Rule #87: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
10251 /* 10701 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
10252 /* 10704 */ // Label 543: @10704
10253 /* 10704 */ GIM_Try, /*On fail goto*//*Label 544*/ GIMT_Encode4(10743), // Rule ID 45 //
10254 /* 10709 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
10255 /* 10712 */ // MIs[0] root
10256 /* 10712 */ // No operand predicates
10257 /* 10712 */ // MIs[0] src
10258 /* 10712 */ // No operand predicates
10259 /* 10712 */ // MIs[0] elt
10260 /* 10712 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10261 /* 10716 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
10262 /* 10720 */ // MIs[1] src
10263 /* 10720 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
10264 /* 10725 */ // MIs[1] idx
10265 /* 10725 */ // No operand predicates
10266 /* 10725 */ // MIs[0] idx
10267 /* 10725 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
10268 /* 10730 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10269 /* 10735 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10270 /* 10737 */ // Combiner Rule #41: insert_vector_element_extract_vector_element
10271 /* 10737 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10272 /* 10742 */ GIR_EraseRootFromParent_Done,
10273 /* 10743 */ // Label 544: @10743
10274 /* 10743 */ GIM_Try, /*On fail goto*//*Label 545*/ GIMT_Encode4(10776), // Rule ID 31 //
10275 /* 10748 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
10276 /* 10751 */ // MIs[0] root
10277 /* 10751 */ // No operand predicates
10278 /* 10751 */ // MIs[0] src
10279 /* 10751 */ // No operand predicates
10280 /* 10751 */ // MIs[0] elt
10281 /* 10751 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10282 /* 10755 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10283 /* 10759 */ // MIs[0] idx
10284 /* 10759 */ // No operand predicates
10285 /* 10759 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
10286 /* 10763 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10287 /* 10768 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10288 /* 10770 */ // Combiner Rule #27: insert_vector_element_elt_undef
10289 /* 10770 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
10290 /* 10775 */ GIR_EraseRootFromParent_Done,
10291 /* 10776 */ // Label 545: @10776
10292 /* 10776 */ GIM_Try, /*On fail goto*//*Label 546*/ GIMT_Encode4(10800), // Rule ID 30 //
10293 /* 10781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
10294 /* 10784 */ // MIs[0] root
10295 /* 10784 */ // No operand predicates
10296 /* 10784 */ // MIs[0] src
10297 /* 10784 */ // No operand predicates
10298 /* 10784 */ // MIs[0] elt
10299 /* 10784 */ // No operand predicates
10300 /* 10784 */ // MIs[0] idx
10301 /* 10784 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
10302 /* 10788 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10303 /* 10792 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10304 /* 10794 */ // Combiner Rule #26: insert_vector_element_idx_undef
10305 /* 10794 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10306 /* 10797 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
10307 /* 10799 */ GIR_EraseRootFromParent_Done,
10308 /* 10800 */ // Label 546: @10800
10309 /* 10800 */ GIM_Try, /*On fail goto*//*Label 547*/ GIMT_Encode4(10811), // Rule ID 33 //
10310 /* 10805 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
10311 /* 10808 */ // MIs[0] dst
10312 /* 10808 */ // No operand predicates
10313 /* 10808 */ // MIs[0] src
10314 /* 10808 */ // No operand predicates
10315 /* 10808 */ // MIs[0] elt
10316 /* 10808 */ // No operand predicates
10317 /* 10808 */ // MIs[0] idx
10318 /* 10808 */ // No operand predicates
10319 /* 10808 */ // Combiner Rule #29: insert_vector_elt_oob
10320 /* 10808 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
10321 /* 10811 */ // Label 547: @10811
10322 /* 10811 */ GIM_Try, /*On fail goto*//*Label 548*/ GIMT_Encode4(10822), // Rule ID 74 //
10323 /* 10816 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
10324 /* 10819 */ // MIs[0] dst
10325 /* 10819 */ // No operand predicates
10326 /* 10819 */ // MIs[0] src
10327 /* 10819 */ // No operand predicates
10328 /* 10819 */ // MIs[0] elt
10329 /* 10819 */ // No operand predicates
10330 /* 10819 */ // MIs[0] idx
10331 /* 10819 */ // No operand predicates
10332 /* 10819 */ // Combiner Rule #70: combine_insert_vec_elts_build_vector
10333 /* 10819 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
10334 /* 10822 */ // Label 548: @10822
10335 /* 10822 */ GIM_Reject,
10336 /* 10823 */ // Label 100: @10823
10337 /* 10823 */ GIM_Try, /*On fail goto*//*Label 549*/ GIMT_Encode4(10834), // Rule ID 115 //
10338 /* 10828 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
10339 /* 10831 */ // Combiner Rule #87: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
10340 /* 10831 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
10341 /* 10834 */ // Label 549: @10834
10342 /* 10834 */ GIM_Try, /*On fail goto*//*Label 550*/ GIMT_Encode4(10858), // Rule ID 43 //
10343 /* 10839 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
10344 /* 10842 */ // MIs[0] root
10345 /* 10842 */ // No operand predicates
10346 /* 10842 */ // MIs[0] src
10347 /* 10842 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10348 /* 10846 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10349 /* 10850 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
10350 /* 10853 */ // MIs[1] x
10351 /* 10853 */ // No operand predicates
10352 /* 10853 */ // MIs[1] y
10353 /* 10853 */ // No operand predicates
10354 /* 10853 */ // MIs[1] z
10355 /* 10853 */ // No operand predicates
10356 /* 10853 */ // MIs[1] a
10357 /* 10853 */ // No operand predicates
10358 /* 10853 */ // MIs[1] b
10359 /* 10853 */ // No operand predicates
10360 /* 10853 */ // MIs[1] c
10361 /* 10853 */ // No operand predicates
10362 /* 10853 */ // MIs[1] d
10363 /* 10853 */ // No operand predicates
10364 /* 10853 */ // MIs[1] e
10365 /* 10853 */ // No operand predicates
10366 /* 10853 */ // MIs[0] idx
10367 /* 10853 */ // No operand predicates
10368 /* 10853 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10369 /* 10855 */ // Combiner Rule #39: extract_vector_element_build_vector_trunc8
10370 /* 10855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10371 /* 10858 */ // Label 550: @10858
10372 /* 10858 */ GIM_Try, /*On fail goto*//*Label 551*/ GIMT_Encode4(10882), // Rule ID 42 //
10373 /* 10863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
10374 /* 10866 */ // MIs[0] root
10375 /* 10866 */ // No operand predicates
10376 /* 10866 */ // MIs[0] src
10377 /* 10866 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10378 /* 10870 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10379 /* 10874 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
10380 /* 10877 */ // MIs[1] x
10381 /* 10877 */ // No operand predicates
10382 /* 10877 */ // MIs[1] y
10383 /* 10877 */ // No operand predicates
10384 /* 10877 */ // MIs[1] z
10385 /* 10877 */ // No operand predicates
10386 /* 10877 */ // MIs[1] a
10387 /* 10877 */ // No operand predicates
10388 /* 10877 */ // MIs[1] b
10389 /* 10877 */ // No operand predicates
10390 /* 10877 */ // MIs[1] c
10391 /* 10877 */ // No operand predicates
10392 /* 10877 */ // MIs[1] d
10393 /* 10877 */ // No operand predicates
10394 /* 10877 */ // MIs[0] idx
10395 /* 10877 */ // No operand predicates
10396 /* 10877 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10397 /* 10879 */ // Combiner Rule #38: extract_vector_element_build_vector_trunc7
10398 /* 10879 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10399 /* 10882 */ // Label 551: @10882
10400 /* 10882 */ GIM_Try, /*On fail goto*//*Label 552*/ GIMT_Encode4(10906), // Rule ID 41 //
10401 /* 10887 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
10402 /* 10890 */ // MIs[0] root
10403 /* 10890 */ // No operand predicates
10404 /* 10890 */ // MIs[0] src
10405 /* 10890 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10406 /* 10894 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10407 /* 10898 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
10408 /* 10901 */ // MIs[1] x
10409 /* 10901 */ // No operand predicates
10410 /* 10901 */ // MIs[1] y
10411 /* 10901 */ // No operand predicates
10412 /* 10901 */ // MIs[1] z
10413 /* 10901 */ // No operand predicates
10414 /* 10901 */ // MIs[1] a
10415 /* 10901 */ // No operand predicates
10416 /* 10901 */ // MIs[1] b
10417 /* 10901 */ // No operand predicates
10418 /* 10901 */ // MIs[1] c
10419 /* 10901 */ // No operand predicates
10420 /* 10901 */ // MIs[0] idx
10421 /* 10901 */ // No operand predicates
10422 /* 10901 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10423 /* 10903 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc6
10424 /* 10903 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10425 /* 10906 */ // Label 552: @10906
10426 /* 10906 */ GIM_Try, /*On fail goto*//*Label 553*/ GIMT_Encode4(10930), // Rule ID 40 //
10427 /* 10911 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
10428 /* 10914 */ // MIs[0] root
10429 /* 10914 */ // No operand predicates
10430 /* 10914 */ // MIs[0] src
10431 /* 10914 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10432 /* 10918 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10433 /* 10922 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
10434 /* 10925 */ // MIs[1] x
10435 /* 10925 */ // No operand predicates
10436 /* 10925 */ // MIs[1] y
10437 /* 10925 */ // No operand predicates
10438 /* 10925 */ // MIs[1] z
10439 /* 10925 */ // No operand predicates
10440 /* 10925 */ // MIs[1] a
10441 /* 10925 */ // No operand predicates
10442 /* 10925 */ // MIs[1] b
10443 /* 10925 */ // No operand predicates
10444 /* 10925 */ // MIs[0] idx
10445 /* 10925 */ // No operand predicates
10446 /* 10925 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10447 /* 10927 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc5
10448 /* 10927 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10449 /* 10930 */ // Label 553: @10930
10450 /* 10930 */ GIM_Try, /*On fail goto*//*Label 554*/ GIMT_Encode4(10954), // Rule ID 39 //
10451 /* 10935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
10452 /* 10938 */ // MIs[0] root
10453 /* 10938 */ // No operand predicates
10454 /* 10938 */ // MIs[0] src
10455 /* 10938 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10456 /* 10942 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10457 /* 10946 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
10458 /* 10949 */ // MIs[1] x
10459 /* 10949 */ // No operand predicates
10460 /* 10949 */ // MIs[1] y
10461 /* 10949 */ // No operand predicates
10462 /* 10949 */ // MIs[1] z
10463 /* 10949 */ // No operand predicates
10464 /* 10949 */ // MIs[1] a
10465 /* 10949 */ // No operand predicates
10466 /* 10949 */ // MIs[0] idx
10467 /* 10949 */ // No operand predicates
10468 /* 10949 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10469 /* 10951 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc4
10470 /* 10951 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10471 /* 10954 */ // Label 554: @10954
10472 /* 10954 */ GIM_Try, /*On fail goto*//*Label 555*/ GIMT_Encode4(10978), // Rule ID 38 //
10473 /* 10959 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
10474 /* 10962 */ // MIs[0] root
10475 /* 10962 */ // No operand predicates
10476 /* 10962 */ // MIs[0] src
10477 /* 10962 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10478 /* 10966 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10479 /* 10970 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
10480 /* 10973 */ // MIs[1] x
10481 /* 10973 */ // No operand predicates
10482 /* 10973 */ // MIs[1] y
10483 /* 10973 */ // No operand predicates
10484 /* 10973 */ // MIs[1] z
10485 /* 10973 */ // No operand predicates
10486 /* 10973 */ // MIs[0] idx
10487 /* 10973 */ // No operand predicates
10488 /* 10973 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10489 /* 10975 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc3
10490 /* 10975 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10491 /* 10978 */ // Label 555: @10978
10492 /* 10978 */ GIM_Try, /*On fail goto*//*Label 556*/ GIMT_Encode4(11012), // Rule ID 34 //
10493 /* 10983 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
10494 /* 10986 */ // MIs[0] root
10495 /* 10986 */ // No operand predicates
10496 /* 10986 */ // MIs[0] src
10497 /* 10986 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10498 /* 10990 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
10499 /* 10994 */ // MIs[1] x
10500 /* 10994 */ // No operand predicates
10501 /* 10994 */ // MIs[1] value
10502 /* 10994 */ // No operand predicates
10503 /* 10994 */ // MIs[1] idx
10504 /* 10994 */ // No operand predicates
10505 /* 10994 */ // MIs[0] idx
10506 /* 10994 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
10507 /* 10999 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
10508 /* 11004 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10509 /* 11006 */ // Combiner Rule #30: extract_vector_element_not_const
10510 /* 11006 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
10511 /* 11011 */ GIR_EraseRootFromParent_Done,
10512 /* 11012 */ // Label 556: @11012
10513 /* 11012 */ GIM_Try, /*On fail goto*//*Label 557*/ GIMT_Encode4(11033), // Rule ID 35 //
10514 /* 11017 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
10515 /* 11020 */ // MIs[0] root
10516 /* 11020 */ // No operand predicates
10517 /* 11020 */ // MIs[0] src
10518 /* 11020 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10519 /* 11024 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
10520 /* 11028 */ // MIs[1] x
10521 /* 11028 */ // No operand predicates
10522 /* 11028 */ // MIs[1] value
10523 /* 11028 */ // No operand predicates
10524 /* 11028 */ // MIs[1] idx2
10525 /* 11028 */ // No operand predicates
10526 /* 11028 */ // MIs[0] idx1
10527 /* 11028 */ // No operand predicates
10528 /* 11028 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10529 /* 11030 */ // Combiner Rule #31: extract_vector_element_different_indices
10530 /* 11030 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
10531 /* 11033 */ // Label 557: @11033
10532 /* 11033 */ GIM_Try, /*On fail goto*//*Label 558*/ GIMT_Encode4(11062), // Rule ID 44 //
10533 /* 11038 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
10534 /* 11041 */ // MIs[0] root
10535 /* 11041 */ // No operand predicates
10536 /* 11041 */ // MIs[0] src
10537 /* 11041 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10538 /* 11045 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
10539 /* 11049 */ // MIs[1] src1
10540 /* 11049 */ // No operand predicates
10541 /* 11049 */ // MIs[1] src2
10542 /* 11049 */ // No operand predicates
10543 /* 11049 */ // MIs[1] mask
10544 /* 11049 */ // No operand predicates
10545 /* 11049 */ // MIs[0] idx
10546 /* 11049 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10547 /* 11053 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10548 /* 11057 */ // MIs[2] imm
10549 /* 11057 */ // No operand predicates
10550 /* 11057 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10551 /* 11059 */ // Combiner Rule #40: extract_vector_element_shuffle_vector
10552 /* 11059 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
10553 /* 11062 */ // Label 558: @11062
10554 /* 11062 */ GIM_Try, /*On fail goto*//*Label 559*/ GIMT_Encode4(11086), // Rule ID 37 //
10555 /* 11067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
10556 /* 11070 */ // MIs[0] root
10557 /* 11070 */ // No operand predicates
10558 /* 11070 */ // MIs[0] src
10559 /* 11070 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10560 /* 11074 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
10561 /* 11078 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
10562 /* 11081 */ // MIs[1] x
10563 /* 11081 */ // No operand predicates
10564 /* 11081 */ // MIs[1] y
10565 /* 11081 */ // No operand predicates
10566 /* 11081 */ // MIs[0] idx
10567 /* 11081 */ // No operand predicates
10568 /* 11081 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10569 /* 11083 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc2
10570 /* 11083 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
10571 /* 11086 */ // Label 559: @11086
10572 /* 11086 */ GIM_Try, /*On fail goto*//*Label 560*/ GIMT_Encode4(11118), // Rule ID 36 //
10573 /* 11091 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
10574 /* 11094 */ // MIs[0] root
10575 /* 11094 */ // No operand predicates
10576 /* 11094 */ // MIs[0] src
10577 /* 11094 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10578 /* 11098 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
10579 /* 11102 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
10580 /* 11105 */ // MIs[1] unused
10581 /* 11105 */ // No operand predicates
10582 /* 11105 */ // MIs[0] idx
10583 /* 11105 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
10584 /* 11109 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
10585 /* 11113 */ // MIs[2] imm
10586 /* 11113 */ // No operand predicates
10587 /* 11113 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10588 /* 11115 */ // Combiner Rule #32: extract_vector_element_build_vector
10589 /* 11115 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
10590 /* 11118 */ // Label 560: @11118
10591 /* 11118 */ GIM_Try, /*On fail goto*//*Label 561*/ GIMT_Encode4(11142), // Rule ID 28 //
10592 /* 11123 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
10593 /* 11126 */ // MIs[0] root
10594 /* 11126 */ // No operand predicates
10595 /* 11126 */ // MIs[0] __extract_vector_element_undef_match_0.x
10596 /* 11126 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10597 /* 11130 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10598 /* 11134 */ // MIs[0] __extract_vector_element_undef_match_0.y
10599 /* 11134 */ // No operand predicates
10600 /* 11134 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10601 /* 11136 */ // Combiner Rule #25: extract_vector_element_undef @ [__extract_vector_element_undef_match_0[0]]
10602 /* 11136 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10603 /* 11139 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
10604 /* 11141 */ GIR_EraseRootFromParent_Done,
10605 /* 11142 */ // Label 561: @11142
10606 /* 11142 */ GIM_Try, /*On fail goto*//*Label 562*/ GIMT_Encode4(11166), // Rule ID 29 //
10607 /* 11147 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
10608 /* 11150 */ // MIs[0] root
10609 /* 11150 */ // No operand predicates
10610 /* 11150 */ // MIs[0] __extract_vector_element_undef_match_0.x
10611 /* 11150 */ // No operand predicates
10612 /* 11150 */ // MIs[0] __extract_vector_element_undef_match_0.y
10613 /* 11150 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10614 /* 11154 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10615 /* 11158 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10616 /* 11160 */ // Combiner Rule #25: extract_vector_element_undef @ [__extract_vector_element_undef_match_0[1]]
10617 /* 11160 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10618 /* 11163 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
10619 /* 11165 */ GIR_EraseRootFromParent_Done,
10620 /* 11166 */ // Label 562: @11166
10621 /* 11166 */ GIM_Try, /*On fail goto*//*Label 563*/ GIMT_Encode4(11177), // Rule ID 32 //
10622 /* 11171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
10623 /* 11174 */ // MIs[0] dst
10624 /* 11174 */ // No operand predicates
10625 /* 11174 */ // MIs[0] src
10626 /* 11174 */ // No operand predicates
10627 /* 11174 */ // MIs[0] idx
10628 /* 11174 */ // No operand predicates
10629 /* 11174 */ // Combiner Rule #28: match_extract_of_element
10630 /* 11174 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
10631 /* 11177 */ // Label 563: @11177
10632 /* 11177 */ GIM_Try, /*On fail goto*//*Label 564*/ GIMT_Encode4(11188), // Rule ID 75 //
10633 /* 11182 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
10634 /* 11185 */ // MIs[0] dst
10635 /* 11185 */ // No operand predicates
10636 /* 11185 */ // MIs[0] src
10637 /* 11185 */ // No operand predicates
10638 /* 11185 */ // MIs[0] idx
10639 /* 11185 */ // No operand predicates
10640 /* 11185 */ // Combiner Rule #71: extract_vec_elt_build_vec
10641 /* 11185 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
10642 /* 11188 */ // Label 564: @11188
10643 /* 11188 */ GIM_Try, /*On fail goto*//*Label 565*/ GIMT_Encode4(11199), // Rule ID 81 //
10644 /* 11193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
10645 /* 11196 */ // MIs[0] dst
10646 /* 11196 */ // No operand predicates
10647 /* 11196 */ // MIs[0] src
10648 /* 11196 */ // No operand predicates
10649 /* 11196 */ // MIs[0] idx
10650 /* 11196 */ // No operand predicates
10651 /* 11196 */ // Combiner Rule #75: combine_extracted_vector_load
10652 /* 11196 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
10653 /* 11199 */ // Label 565: @11199
10654 /* 11199 */ GIM_Reject,
10655 /* 11200 */ // Label 101: @11200
10656 /* 11200 */ GIM_Try, /*On fail goto*//*Label 566*/ GIMT_Encode4(11211), // Rule ID 110 //
10657 /* 11205 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
10658 /* 11208 */ // Combiner Rule #84: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
10659 /* 11208 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
10660 /* 11211 */ // Label 566: @11211
10661 /* 11211 */ GIM_Try, /*On fail goto*//*Label 567*/ GIMT_Encode4(11232), // Rule ID 412 //
10662 /* 11216 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule243Enabled),
10663 /* 11219 */ // MIs[0] root
10664 /* 11219 */ // No operand predicates
10665 /* 11219 */ // MIs[0] src1
10666 /* 11219 */ // No operand predicates
10667 /* 11219 */ // MIs[0] undef
10668 /* 11219 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
10669 /* 11223 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10670 /* 11227 */ // MIs[0] mask
10671 /* 11227 */ // No operand predicates
10672 /* 11227 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10673 /* 11229 */ // Combiner Rule #243: combine_shuffle_undef_rhs
10674 /* 11229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
10675 /* 11232 */ // Label 567: @11232
10676 /* 11232 */ GIM_Try, /*On fail goto*//*Label 568*/ GIMT_Encode4(11250), // Rule ID 112 //
10677 /* 11237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
10678 /* 11240 */ // MIs[0] dst
10679 /* 11240 */ // No operand predicates
10680 /* 11240 */ // MIs[0] src1
10681 /* 11240 */ // No operand predicates
10682 /* 11240 */ // MIs[0] src2
10683 /* 11240 */ // No operand predicates
10684 /* 11240 */ // MIs[0] mask
10685 /* 11240 */ // No operand predicates
10686 /* 11240 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
10687 /* 11244 */ // Combiner Rule #85: propagate_undef_shuffle_mask
10688 /* 11244 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
10689 /* 11247 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
10690 /* 11249 */ GIR_EraseRootFromParent_Done,
10691 /* 11250 */ // Label 568: @11250
10692 /* 11250 */ GIM_Try, /*On fail goto*//*Label 569*/ GIMT_Encode4(11261), // Rule ID 411 //
10693 /* 11255 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule242Enabled),
10694 /* 11258 */ // MIs[0] dst
10695 /* 11258 */ // No operand predicates
10696 /* 11258 */ // MIs[0] src1
10697 /* 11258 */ // No operand predicates
10698 /* 11258 */ // MIs[0] src2
10699 /* 11258 */ // No operand predicates
10700 /* 11258 */ // MIs[0] mask
10701 /* 11258 */ // No operand predicates
10702 /* 11258 */ // Combiner Rule #242: combine_shuffle_concat
10703 /* 11258 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
10704 /* 11261 */ // Label 569: @11261
10705 /* 11261 */ GIM_Try, /*On fail goto*//*Label 570*/ GIMT_Encode4(11272), // Rule ID 413 //
10706 /* 11266 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule244Enabled),
10707 /* 11269 */ // MIs[0] dst
10708 /* 11269 */ // No operand predicates
10709 /* 11269 */ // MIs[0] src1
10710 /* 11269 */ // No operand predicates
10711 /* 11269 */ // MIs[0] src2
10712 /* 11269 */ // No operand predicates
10713 /* 11269 */ // MIs[0] mask
10714 /* 11269 */ // No operand predicates
10715 /* 11269 */ // Combiner Rule #244: combine_shuffle_disjoint_mask
10716 /* 11269 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
10717 /* 11272 */ // Label 570: @11272
10718 /* 11272 */ GIM_Try, /*On fail goto*//*Label 571*/ GIMT_Encode4(11283), // Rule ID 457 //
10719 /* 11277 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule280Enabled),
10720 /* 11280 */ // MIs[0] dst
10721 /* 11280 */ // No operand predicates
10722 /* 11280 */ // MIs[0] src1
10723 /* 11280 */ // No operand predicates
10724 /* 11280 */ // MIs[0] src2
10725 /* 11280 */ // No operand predicates
10726 /* 11280 */ // MIs[0] mask
10727 /* 11280 */ // No operand predicates
10728 /* 11280 */ // Combiner Rule #280: combine_shuffle_vector
10729 /* 11280 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
10730 /* 11283 */ // Label 571: @11283
10731 /* 11283 */ GIM_Reject,
10732 /* 11284 */ // Label 102: @11284
10733 /* 11284 */ GIM_Try, /*On fail goto*//*Label 572*/ GIMT_Encode4(11295), // Rule ID 309 //
10734 /* 11289 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10735 /* 11292 */ // MIs[0] dst
10736 /* 11292 */ // No operand predicates
10737 /* 11292 */ // MIs[0] mi.src
10738 /* 11292 */ // No operand predicates
10739 /* 11292 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[2]]
10740 /* 11292 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10741 /* 11295 */ // Label 572: @11295
10742 /* 11295 */ GIM_Try, /*On fail goto*//*Label 573*/ GIMT_Encode4(11306), // Rule ID 437 //
10743 /* 11300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule266Enabled),
10744 /* 11303 */ // MIs[0] dst
10745 /* 11303 */ // No operand predicates
10746 /* 11303 */ // MIs[0] src
10747 /* 11303 */ // No operand predicates
10748 /* 11303 */ // Combiner Rule #266: cttz_to_cttz_zero_poison
10749 /* 11303 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
10750 /* 11306 */ // Label 573: @11306
10751 /* 11306 */ GIM_Reject,
10752 /* 11307 */ // Label 103: @11307
10753 /* 11307 */ GIM_Try, /*On fail goto*//*Label 574*/ GIMT_Encode4(11318), // Rule ID 310 //
10754 /* 11312 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10755 /* 11315 */ // MIs[0] dst
10756 /* 11315 */ // No operand predicates
10757 /* 11315 */ // MIs[0] mi.src
10758 /* 11315 */ // No operand predicates
10759 /* 11315 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[3]]
10760 /* 11315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10761 /* 11318 */ // Label 574: @11318
10762 /* 11318 */ GIM_Reject,
10763 /* 11319 */ // Label 104: @11319
10764 /* 11319 */ GIM_Try, /*On fail goto*//*Label 575*/ GIMT_Encode4(11330), // Rule ID 307 //
10765 /* 11324 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10766 /* 11327 */ // MIs[0] dst
10767 /* 11327 */ // No operand predicates
10768 /* 11327 */ // MIs[0] mi.src
10769 /* 11327 */ // No operand predicates
10770 /* 11327 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[0]]
10771 /* 11327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10772 /* 11330 */ // Label 575: @11330
10773 /* 11330 */ GIM_Try, /*On fail goto*//*Label 576*/ GIMT_Encode4(11341), // Rule ID 434 //
10774 /* 11335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule263Enabled),
10775 /* 11338 */ // MIs[0] dst
10776 /* 11338 */ // No operand predicates
10777 /* 11338 */ // MIs[0] src
10778 /* 11338 */ // No operand predicates
10779 /* 11338 */ // Combiner Rule #263: ctlz_to_ctls
10780 /* 11338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
10781 /* 11341 */ // Label 576: @11341
10782 /* 11341 */ GIM_Try, /*On fail goto*//*Label 577*/ GIMT_Encode4(11352), // Rule ID 436 //
10783 /* 11346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule265Enabled),
10784 /* 11349 */ // MIs[0] dst
10785 /* 11349 */ // No operand predicates
10786 /* 11349 */ // MIs[0] src
10787 /* 11349 */ // No operand predicates
10788 /* 11349 */ // Combiner Rule #265: ctlz_to_ctlz_zero_poison
10789 /* 11349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
10790 /* 11352 */ // Label 577: @11352
10791 /* 11352 */ GIM_Reject,
10792 /* 11353 */ // Label 105: @11353
10793 /* 11353 */ GIM_Try, /*On fail goto*//*Label 578*/ GIMT_Encode4(11364), // Rule ID 308 //
10794 /* 11358 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10795 /* 11361 */ // MIs[0] dst
10796 /* 11361 */ // No operand predicates
10797 /* 11361 */ // MIs[0] mi.src
10798 /* 11361 */ // No operand predicates
10799 /* 11361 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[1]]
10800 /* 11361 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10801 /* 11364 */ // Label 578: @11364
10802 /* 11364 */ GIM_Try, /*On fail goto*//*Label 579*/ GIMT_Encode4(11375), // Rule ID 435 //
10803 /* 11369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule264Enabled),
10804 /* 11372 */ // MIs[0] dst
10805 /* 11372 */ // No operand predicates
10806 /* 11372 */ // MIs[0] src
10807 /* 11372 */ // No operand predicates
10808 /* 11372 */ // Combiner Rule #264: ctlz_zero_poison_to_ctls
10809 /* 11372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
10810 /* 11375 */ // Label 579: @11375
10811 /* 11375 */ GIM_Reject,
10812 /* 11376 */ // Label 106: @11376
10813 /* 11376 */ GIM_Try, /*On fail goto*//*Label 580*/ GIMT_Encode4(11387), // Rule ID 311 //
10814 /* 11381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10815 /* 11384 */ // MIs[0] dst
10816 /* 11384 */ // No operand predicates
10817 /* 11384 */ // MIs[0] mi.src
10818 /* 11384 */ // No operand predicates
10819 /* 11384 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[4]]
10820 /* 11384 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10821 /* 11387 */ // Label 580: @11387
10822 /* 11387 */ GIM_Reject,
10823 /* 11388 */ // Label 107: @11388
10824 /* 11388 */ GIM_Try, /*On fail goto*//*Label 581*/ GIMT_Encode4(11399), // Rule ID 313 //
10825 /* 11393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10826 /* 11396 */ // MIs[0] dst
10827 /* 11396 */ // No operand predicates
10828 /* 11396 */ // MIs[0] mi.src
10829 /* 11396 */ // No operand predicates
10830 /* 11396 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[6]]
10831 /* 11396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10832 /* 11399 */ // Label 581: @11399
10833 /* 11399 */ GIM_Reject,
10834 /* 11400 */ // Label 108: @11400
10835 /* 11400 */ GIM_Try, /*On fail goto*//*Label 582*/ GIMT_Encode4(11444), // Rule ID 263 //
10836 /* 11405 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
10837 /* 11408 */ // MIs[0] d
10838 /* 11408 */ // No operand predicates
10839 /* 11408 */ // MIs[0] src
10840 /* 11408 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10841 /* 11412 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
10842 /* 11416 */ // MIs[1] rev
10843 /* 11416 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
10844 /* 11420 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
10845 /* 11424 */ // MIs[2] val
10846 /* 11424 */ // No operand predicates
10847 /* 11424 */ // MIs[1] amt
10848 /* 11424 */ // No operand predicates
10849 /* 11424 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner21),
10850 /* 11428 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10851 /* 11430 */ // Combiner Rule #187: bitreverse_lshr
10852 /* 11430 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
10853 /* 11433 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
10854 /* 11435 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
10855 /* 11439 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
10856 /* 11443 */ GIR_EraseRootFromParent_Done,
10857 /* 11444 */ // Label 582: @11444
10858 /* 11444 */ GIM_Try, /*On fail goto*//*Label 583*/ GIMT_Encode4(11488), // Rule ID 262 //
10859 /* 11449 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
10860 /* 11452 */ // MIs[0] d
10861 /* 11452 */ // No operand predicates
10862 /* 11452 */ // MIs[0] src
10863 /* 11452 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10864 /* 11456 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
10865 /* 11460 */ // MIs[1] rev
10866 /* 11460 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
10867 /* 11464 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
10868 /* 11468 */ // MIs[2] val
10869 /* 11468 */ // No operand predicates
10870 /* 11468 */ // MIs[1] amt
10871 /* 11468 */ // No operand predicates
10872 /* 11468 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner20),
10873 /* 11472 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
10874 /* 11474 */ // Combiner Rule #186: bitreverse_shl
10875 /* 11474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
10876 /* 11477 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
10877 /* 11479 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
10878 /* 11483 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
10879 /* 11487 */ GIR_EraseRootFromParent_Done,
10880 /* 11488 */ // Label 583: @11488
10881 /* 11488 */ GIM_Try, /*On fail goto*//*Label 584*/ GIMT_Encode4(11499), // Rule ID 314 //
10882 /* 11493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
10883 /* 11496 */ // MIs[0] dst
10884 /* 11496 */ // No operand predicates
10885 /* 11496 */ // MIs[0] mi.src
10886 /* 11496 */ // No operand predicates
10887 /* 11496 */ // Combiner Rule #198: constant_fold_unary_int_op @ [mi[7]]
10888 /* 11496 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
10889 /* 11499 */ // Label 584: @11499
10890 /* 11499 */ GIM_Reject,
10891 /* 11500 */ // Label 109: @11500
10892 /* 11500 */ GIM_Try, /*On fail goto*//*Label 585*/ GIMT_Encode4(11521), // Rule ID 210 //
10893 /* 11505 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
10894 /* 11508 */ // MIs[0] dst
10895 /* 11508 */ // No operand predicates
10896 /* 11508 */ // MIs[0] src0
10897 /* 11508 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10898 /* 11512 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10899 /* 11516 */ // MIs[1] cst
10900 /* 11516 */ // No operand predicates
10901 /* 11516 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10902 /* 11518 */ // Combiner Rule #157: constant_fold_fceil
10903 /* 11518 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10904 /* 11521 */ // Label 585: @11521
10905 /* 11521 */ GIM_Reject,
10906 /* 11522 */ // Label 110: @11522
10907 /* 11522 */ GIM_Try, /*On fail goto*//*Label 586*/ GIMT_Encode4(11543), // Rule ID 206 //
10908 /* 11527 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
10909 /* 11530 */ // MIs[0] dst
10910 /* 11530 */ // No operand predicates
10911 /* 11530 */ // MIs[0] src0
10912 /* 11530 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10913 /* 11534 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10914 /* 11538 */ // MIs[1] cst
10915 /* 11538 */ // No operand predicates
10916 /* 11538 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10917 /* 11540 */ // Combiner Rule #153: constant_fold_fsqrt
10918 /* 11540 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10919 /* 11543 */ // Label 586: @11543
10920 /* 11543 */ GIM_Reject,
10921 /* 11544 */ // Label 111: @11544
10922 /* 11544 */ GIM_Try, /*On fail goto*//*Label 587*/ GIMT_Encode4(11565), // Rule ID 211 //
10923 /* 11549 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
10924 /* 11552 */ // MIs[0] dst
10925 /* 11552 */ // No operand predicates
10926 /* 11552 */ // MIs[0] src0
10927 /* 11552 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10928 /* 11556 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10929 /* 11560 */ // MIs[1] cst
10930 /* 11560 */ // No operand predicates
10931 /* 11560 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10932 /* 11562 */ // Combiner Rule #158: constant_fold_ffloor
10933 /* 11562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10934 /* 11565 */ // Label 587: @11565
10935 /* 11565 */ GIM_Reject,
10936 /* 11566 */ // Label 112: @11566
10937 /* 11566 */ GIM_Try, /*On fail goto*//*Label 588*/ GIMT_Encode4(11587), // Rule ID 215 //
10938 /* 11571 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
10939 /* 11574 */ // MIs[0] dst
10940 /* 11574 */ // No operand predicates
10941 /* 11574 */ // MIs[0] src0
10942 /* 11574 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10943 /* 11578 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10944 /* 11582 */ // MIs[1] cst
10945 /* 11582 */ // No operand predicates
10946 /* 11582 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10947 /* 11584 */ // Combiner Rule #162: constant_fold_frint
10948 /* 11584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10949 /* 11587 */ // Label 588: @11587
10950 /* 11587 */ GIM_Reject,
10951 /* 11588 */ // Label 113: @11588
10952 /* 11588 */ GIM_Try, /*On fail goto*//*Label 589*/ GIMT_Encode4(11609), // Rule ID 216 //
10953 /* 11593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
10954 /* 11596 */ // MIs[0] dst
10955 /* 11596 */ // No operand predicates
10956 /* 11596 */ // MIs[0] src0
10957 /* 11596 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
10958 /* 11600 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
10959 /* 11604 */ // MIs[1] cst
10960 /* 11604 */ // No operand predicates
10961 /* 11604 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
10962 /* 11606 */ // Combiner Rule #163: constant_fold_fnearbyint
10963 /* 11606 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
10964 /* 11609 */ // Label 589: @11609
10965 /* 11609 */ GIM_Reject,
10966 /* 11610 */ // Label 114: @11610
10967 /* 11610 */ GIM_Try, /*On fail goto*//*Label 590*/ GIMT_Encode4(11621), // Rule ID 471 //
10968 /* 11615 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule294Enabled),
10969 /* 11618 */ // MIs[0] dst_addr
10970 /* 11618 */ // No operand predicates
10971 /* 11618 */ // MIs[0] src_addr
10972 /* 11618 */ // No operand predicates
10973 /* 11618 */ // MIs[0] size
10974 /* 11618 */ // No operand predicates
10975 /* 11618 */ // MIs[0] tailcall
10976 /* 11618 */ // No operand predicates
10977 /* 11618 */ // Combiner Rule #294: combine_memcpy
10978 /* 11618 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
10979 /* 11621 */ // Label 590: @11621
10980 /* 11621 */ GIM_Reject,
10981 /* 11622 */ // Label 115: @11622
10982 /* 11622 */ GIM_Try, /*On fail goto*//*Label 591*/ GIMT_Encode4(11633), // Rule ID 469 //
10983 /* 11627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule292Enabled),
10984 /* 11630 */ // MIs[0] dst_addr
10985 /* 11630 */ // No operand predicates
10986 /* 11630 */ // MIs[0] src_addr
10987 /* 11630 */ // No operand predicates
10988 /* 11630 */ // MIs[0] size
10989 /* 11630 */ // No operand predicates
10990 /* 11630 */ // Combiner Rule #292: combine_memcpy_inline
10991 /* 11630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
10992 /* 11633 */ // Label 591: @11633
10993 /* 11633 */ GIM_Reject,
10994 /* 11634 */ // Label 116: @11634
10995 /* 11634 */ GIM_Try, /*On fail goto*//*Label 592*/ GIMT_Encode4(11645), // Rule ID 472 //
10996 /* 11639 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule295Enabled),
10997 /* 11642 */ // MIs[0] dst_addr
10998 /* 11642 */ // No operand predicates
10999 /* 11642 */ // MIs[0] src_addr
11000 /* 11642 */ // No operand predicates
11001 /* 11642 */ // MIs[0] size
11002 /* 11642 */ // No operand predicates
11003 /* 11642 */ // MIs[0] tailcall
11004 /* 11642 */ // No operand predicates
11005 /* 11642 */ // Combiner Rule #295: combine_memmove
11006 /* 11642 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
11007 /* 11645 */ // Label 592: @11645
11008 /* 11645 */ GIM_Reject,
11009 /* 11646 */ // Label 117: @11646
11010 /* 11646 */ GIM_Try, /*On fail goto*//*Label 593*/ GIMT_Encode4(11657), // Rule ID 473 //
11011 /* 11651 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule296Enabled),
11012 /* 11654 */ // MIs[0] dst_addr
11013 /* 11654 */ // No operand predicates
11014 /* 11654 */ // MIs[0] value
11015 /* 11654 */ // No operand predicates
11016 /* 11654 */ // MIs[0] size
11017 /* 11654 */ // No operand predicates
11018 /* 11654 */ // MIs[0] tailcall
11019 /* 11654 */ // No operand predicates
11020 /* 11654 */ // Combiner Rule #296: combine_memset
11021 /* 11654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner157),
11022 /* 11657 */ // Label 593: @11657
11023 /* 11657 */ GIM_Try, /*On fail goto*//*Label 594*/ GIMT_Encode4(11668), // Rule ID 474 //
11024 /* 11662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule297Enabled),
11025 /* 11665 */ // MIs[0] dst_addr
11026 /* 11665 */ // No operand predicates
11027 /* 11665 */ // MIs[0] value
11028 /* 11665 */ // No operand predicates
11029 /* 11665 */ // MIs[0] size
11030 /* 11665 */ // No operand predicates
11031 /* 11665 */ // MIs[0] tailcall
11032 /* 11665 */ // No operand predicates
11033 /* 11665 */ // Combiner Rule #297: emit_bzero
11034 /* 11665 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner158),
11035 /* 11668 */ // Label 594: @11668
11036 /* 11668 */ GIM_Reject,
11037 /* 11669 */ // Label 118: @11669
11038 /* 11669 */ GIM_Try, /*On fail goto*//*Label 595*/ GIMT_Encode4(11680), // Rule ID 470 //
11039 /* 11674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule293Enabled),
11040 /* 11677 */ // MIs[0] dst_addr
11041 /* 11677 */ // No operand predicates
11042 /* 11677 */ // MIs[0] value
11043 /* 11677 */ // No operand predicates
11044 /* 11677 */ // MIs[0] size
11045 /* 11677 */ // No operand predicates
11046 /* 11677 */ // Combiner Rule #293: combine_memset_inline
11047 /* 11677 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner156),
11048 /* 11680 */ // Label 595: @11680
11049 /* 11680 */ GIM_Reject,
11050 /* 11681 */ // Label 119: @11681
11051 /* 11681 */ GIM_Try_CheckFeatures, /*On fail goto*//*Label 596*/ GIMT_Encode4(11694), GIMT_Encode2(GIFBS_HasDotProd), // Rule ID 460 //
11052 /* 11688 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule283Enabled),
11053 /* 11691 */ // Combiner Rule #283: ext_addv_to_udot_addv; wip_match_opcode 'G_VECREDUCE_ADD'
11054 /* 11691 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
11055 /* 11694 */ // Label 596: @11694
11056 /* 11694 */ GIM_Try, /*On fail goto*//*Label 597*/ GIMT_Encode4(11705), // Rule ID 461 //
11057 /* 11699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule284Enabled),
11058 /* 11702 */ // Combiner Rule #284: ext_uaddv_to_uaddlv; wip_match_opcode 'G_VECREDUCE_ADD'
11059 /* 11702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
11060 /* 11705 */ // Label 597: @11705
11061 /* 11705 */ GIM_Reject,
11062 /* 11706 */ // Label 120: @11706
11063 /* 11706 */ GIM_Reject,
11064 /* 11707 */ }; // Size: 11707 bytes
11065 return MatchTable0;
11066}
11067#undef GIMT_Encode2
11068#undef GIMT_Encode4
11069#undef GIMT_Encode8
11070
11071
11072#endif // GET_GICOMBINER_IMPL
11073
11074#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
11075
11076AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
11077AvailableFunctionFeatures()
11078
11079#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
11080
11081#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
11082
11083, State(0),
11084ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
11085
11086#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
11087
11088