1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* RISCVPreLegalizerCombinerImpl Combiner Match Table *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_GICOMBINER_DEPS
10
11#include "llvm/ADT/SparseBitVector.h"
12namespace llvm {
13
14extern cl::OptionCategory GICombinerOptionCategory;
15
16} // namespace llvm
17
18#endif // GET_GICOMBINER_DEPS
19
20#ifdef GET_GICOMBINER_TYPES
21
22struct RISCVPreLegalizerCombinerImplRuleConfig {
23 SparseBitVector<> DisabledRules;
24
25 bool isRuleEnabled(unsigned RuleID) const;
26 bool parseCommandLineOption();
27 bool setRuleEnabled(StringRef RuleIdentifier);
28 bool setRuleDisabled(StringRef RuleIdentifier);
29};
30
31static std::optional<uint64_t> getRuleIdxForIdentifier(StringRef RuleIdentifier) {
32 uint64_t I;
33 // getAtInteger(...) returns false on success
34 bool Parsed = !RuleIdentifier.getAsInteger(0, I);
35 if (Parsed)
36 return I;
37
38#ifndef NDEBUG
39 switch (RuleIdentifier.size()) {
40 default: break;
41 case 9: // 6 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'a': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "dd_shift", 8) != 0)
46 break;
47 return 240; // "add_shift"
48 case 'c': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
50 break;
51 return 16; // "copy_prop"
52 case 'm': // 3 strings to match.
53 switch (RuleIdentifier[1]) {
54 default: break;
55 case 'a': // 1 string to match.
56 if (memcmp(RuleIdentifier.data()+2, "tch_ors", 7) != 0)
57 break;
58 return 211; // "match_ors"
59 case 'u': // 2 strings to match.
60 if (memcmp(RuleIdentifier.data()+2, "lo_by_", 6) != 0)
61 break;
62 switch (RuleIdentifier[8]) {
63 default: break;
64 case '0': // 1 string to match.
65 return 157; // "mulo_by_0"
66 case '2': // 1 string to match.
67 return 156; // "mulo_by_2"
68 }
69 break;
70 }
71 break;
72 case 'n': // 1 string to match.
73 if (memcmp(RuleIdentifier.data()+1, "neg_zext", 8) != 0)
74 break;
75 return 216; // "nneg_zext"
76 }
77 break;
78 case 10: // 7 strings to match.
79 switch (RuleIdentifier[0]) {
80 default: break;
81 case 'i': // 1 string to match.
82 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
83 break;
84 return 93; // "i2p_to_p2i"
85 case 'm': // 2 strings to match.
86 switch (RuleIdentifier[1]) {
87 default: break;
88 case 'a': // 1 string to match.
89 if (memcmp(RuleIdentifier.data()+2, "tch_ands", 8) != 0)
90 break;
91 return 210; // "match_ands"
92 case 'u': // 1 string to match.
93 if (memcmp(RuleIdentifier.data()+2, "l_to_shl", 8) != 0)
94 break;
95 return 17; // "mul_to_shl"
96 }
97 break;
98 case 'p': // 1 string to match.
99 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
100 break;
101 return 92; // "p2i_to_i2p"
102 case 's': // 2 strings to match.
103 switch (RuleIdentifier[1]) {
104 default: break;
105 case 'e': // 1 string to match.
106 if (memcmp(RuleIdentifier.data()+2, "xt_trunc", 8) != 0)
107 break;
108 return 214; // "sext_trunc"
109 case 'u': // 1 string to match.
110 if (memcmp(RuleIdentifier.data()+2, "b_to_add", 8) != 0)
111 break;
112 return 18; // "sub_to_add"
113 }
114 break;
115 case 'z': // 1 string to match.
116 if (memcmp(RuleIdentifier.data()+1, "ext_trunc", 9) != 0)
117 break;
118 return 215; // "zext_trunc"
119 }
120 break;
121 case 11: // 8 strings to match.
122 switch (RuleIdentifier[0]) {
123 default: break;
124 case 'a': // 1 string to match.
125 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
126 break;
127 return 98; // "add_sub_reg"
128 case 'm': // 1 string to match.
129 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
130 break;
131 return 231; // "match_addos"
132 case 's': // 1 string to match.
133 if (memcmp(RuleIdentifier.data()+1, "ub_add_reg", 10) != 0)
134 break;
135 return 205; // "sub_add_reg"
136 case 't': // 4 strings to match.
137 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
138 break;
139 switch (RuleIdentifier[6]) {
140 default: break;
141 case 's': // 3 strings to match.
142 switch (RuleIdentifier[7]) {
143 default: break;
144 case 'h': // 1 string to match.
145 if (memcmp(RuleIdentifier.data()+8, "ift", 3) != 0)
146 break;
147 return 136; // "trunc_shift"
148 case 's': // 2 strings to match.
149 if (memcmp(RuleIdentifier.data()+8, "at", 2) != 0)
150 break;
151 switch (RuleIdentifier[10]) {
152 default: break;
153 case 's': // 1 string to match.
154 return 233; // "trunc_ssats"
155 case 'u': // 1 string to match.
156 return 234; // "trunc_ssatu"
157 }
158 break;
159 }
160 break;
161 case 'u': // 1 string to match.
162 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
163 break;
164 return 235; // "trunc_usatu"
165 }
166 break;
167 case 'u': // 1 string to match.
168 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
169 break;
170 return 224; // "unmerge_cst"
171 }
172 break;
173 case 12: // 12 strings to match.
174 switch (RuleIdentifier[0]) {
175 default: break;
176 case 'A': // 1 string to match.
177 if (memcmp(RuleIdentifier.data()+1, "PlusBMinusB", 11) != 0)
178 break;
179 return 4; // "APlusBMinusB"
180 case 'B': // 1 string to match.
181 if (memcmp(RuleIdentifier.data()+1, "MinusAPlusA", 11) != 0)
182 break;
183 return 5; // "BMinusAPlusA"
184 case 'a': // 1 string to match.
185 if (memcmp(RuleIdentifier.data()+1, "dde_to_addo", 11) != 0)
186 break;
187 return 158; // "adde_to_addo"
188 case 'c': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+1, "tlz_to_ctls", 11) != 0)
190 break;
191 return 238; // "ctlz_to_ctls"
192 case 'f': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+1, "sub_to_fneg", 11) != 0)
194 break;
195 return 207; // "fsub_to_fneg"
196 case 'm': // 1 string to match.
197 if (memcmp(RuleIdentifier.data()+1, "ulh_to_lshr", 11) != 0)
198 break;
199 return 186; // "mulh_to_lshr"
200 case 'n': // 1 string to match.
201 if (memcmp(RuleIdentifier.data()+1, "ot_cmp_fold", 11) != 0)
202 break;
203 return 137; // "not_cmp_fold"
204 case 'r': // 1 string to match.
205 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
206 break;
207 return 132; // "redundant_or"
208 case 's': // 2 strings to match.
209 switch (RuleIdentifier[1]) {
210 default: break;
211 case 'd': // 1 string to match.
212 if (memcmp(RuleIdentifier.data()+2, "iv_by_pow2", 10) != 0)
213 break;
214 return 201; // "sdiv_by_pow2"
215 case 'e': // 1 string to match.
216 if (memcmp(RuleIdentifier.data()+2, "xt_of_sext", 10) != 0)
217 break;
218 return 51; // "sext_of_sext"
219 }
220 break;
221 case 'u': // 1 string to match.
222 if (memcmp(RuleIdentifier.data()+1, "div_by_pow2", 11) != 0)
223 break;
224 return 200; // "udiv_by_pow2"
225 case 'z': // 1 string to match.
226 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
227 break;
228 return 49; // "zext_of_zext"
229 }
230 break;
231 case 13: // 16 strings to match.
232 switch (RuleIdentifier[0]) {
233 default: break;
234 case 'a': // 1 string to match.
235 if (memcmp(RuleIdentifier.data()+1, "dd_of_vscale", 12) != 0)
236 break;
237 return 40; // "add_of_vscale"
238 case 'c': // 1 string to match.
239 if (memcmp(RuleIdentifier.data()+1, "ommute_shift", 12) != 0)
240 break;
241 return 176; // "commute_shift"
242 case 'l': // 1 string to match.
243 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
244 break;
245 return 72; // "load_and_mask"
246 case 'm': // 3 strings to match.
247 switch (RuleIdentifier[1]) {
248 default: break;
249 case 'a': // 1 string to match.
250 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
251 break;
252 return 129; // "match_selects"
253 case 'e': // 1 string to match.
254 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
255 break;
256 return 223; // "merge_unmerge"
257 case 'u': // 1 string to match.
258 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
259 break;
260 return 41; // "mul_of_vscale"
261 }
262 break;
263 case 'r': // 1 string to match.
264 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
265 break;
266 return 130; // "redundant_and"
267 case 's': // 5 strings to match.
268 switch (RuleIdentifier[1]) {
269 default: break;
270 case 'a': // 1 string to match.
271 if (memcmp(RuleIdentifier.data()+2, "me_val_zero", 11) != 0)
272 break;
273 return 89; // "same_val_zero"
274 case 'd': // 1 string to match.
275 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
276 break;
277 return 203; // "sdiv_by_const"
278 case 'h': // 1 string to match.
279 if (memcmp(RuleIdentifier.data()+2, "l_of_vscale", 11) != 0)
280 break;
281 return 42; // "shl_of_vscale"
282 case 'r': // 1 string to match.
283 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
284 break;
285 return 199; // "srem_by_const"
286 case 'u': // 1 string to match.
287 if (memcmp(RuleIdentifier.data()+2, "b_of_vscale", 11) != 0)
288 break;
289 return 43; // "sub_of_vscale"
290 }
291 break;
292 case 'u': // 4 strings to match.
293 switch (RuleIdentifier[1]) {
294 default: break;
295 case 'd': // 1 string to match.
296 if (memcmp(RuleIdentifier.data()+2, "iv_by_const", 11) != 0)
297 break;
298 return 202; // "udiv_by_const"
299 case 'n': // 2 strings to match.
300 if (memcmp(RuleIdentifier.data()+2, "merge_", 6) != 0)
301 break;
302 switch (RuleIdentifier[8]) {
303 default: break;
304 case 'm': // 1 string to match.
305 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
306 break;
307 return 222; // "unmerge_merge"
308 case 'u': // 1 string to match.
309 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
310 break;
311 return 225; // "unmerge_undef"
312 }
313 break;
314 case 'r': // 1 string to match.
315 if (memcmp(RuleIdentifier.data()+2, "em_by_const", 11) != 0)
316 break;
317 return 198; // "urem_by_const"
318 }
319 break;
320 }
321 break;
322 case 14: // 16 strings to match.
323 switch (RuleIdentifier[0]) {
324 default: break;
325 case 'A': // 2 strings to match.
326 switch (RuleIdentifier[1]) {
327 default: break;
328 case 'M': // 1 string to match.
329 if (memcmp(RuleIdentifier.data()+2, "inusC1PlusC2", 12) != 0)
330 break;
331 return 15; // "AMinusC1PlusC2"
332 case 'P': // 1 string to match.
333 if (memcmp(RuleIdentifier.data()+2, "lusC1MinusC2", 12) != 0)
334 break;
335 return 11; // "APlusC1MinusC2"
336 }
337 break;
338 case 'C': // 1 string to match.
339 if (memcmp(RuleIdentifier.data()+1, "2MinusAPlusC1", 13) != 0)
340 break;
341 return 12; // "C2MinusAPlusC1"
342 case 'N': // 1 string to match.
343 if (memcmp(RuleIdentifier.data()+1, "otAPlusNegOne", 13) != 0)
344 break;
345 return 10; // "NotAPlusNegOne"
346 case 'a': // 2 strings to match.
347 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
348 break;
349 switch (RuleIdentifier[10]) {
350 default: break;
351 case 's': // 1 string to match.
352 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
353 break;
354 return 55; // "anyext_of_sext"
355 case 'z': // 1 string to match.
356 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
357 break;
358 return 54; // "anyext_of_zext"
359 }
360 break;
361 case 'b': // 2 strings to match.
362 if (RuleIdentifier[1] != 'i')
363 break;
364 switch (RuleIdentifier[2]) {
365 default: break;
366 case 'n': // 1 string to match.
367 if (memcmp(RuleIdentifier.data()+3, "op_same_val", 11) != 0)
368 break;
369 return 88; // "binop_same_val"
370 case 't': // 1 string to match.
371 if (memcmp(RuleIdentifier.data()+3, "reverse_shl", 11) != 0)
372 break;
373 return 174; // "bitreverse_shl"
374 }
375 break;
376 case 'f': // 2 strings to match.
377 switch (RuleIdentifier[1]) {
378 default: break;
379 case 'a': // 1 string to match.
380 if (memcmp(RuleIdentifier.data()+2, "bs_fneg_fold", 12) != 0)
381 break;
382 return 185; // "fabs_fneg_fold"
383 case 'n': // 1 string to match.
384 if (memcmp(RuleIdentifier.data()+2, "eg_fneg_fold", 12) != 0)
385 break;
386 return 95; // "fneg_fneg_fold"
387 }
388 break;
389 case 'm': // 1 string to match.
390 if (memcmp(RuleIdentifier.data()+1, "ul_by_neg_one", 13) != 0)
391 break;
392 return 20; // "mul_by_neg_one"
393 case 'r': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+1, "eassoc_ptradd", 13) != 0)
395 break;
396 return 111; // "reassoc_ptradd"
397 case 's': // 3 strings to match.
398 switch (RuleIdentifier[1]) {
399 default: break;
400 case 'e': // 2 strings to match.
401 switch (RuleIdentifier[2]) {
402 default: break;
403 case 'l': // 1 string to match.
404 if (memcmp(RuleIdentifier.data()+3, "ect_of_zext", 11) != 0)
405 break;
406 return 57; // "select_of_zext"
407 case 'x': // 1 string to match.
408 if (memcmp(RuleIdentifier.data()+3, "t_of_anyext", 11) != 0)
409 break;
410 return 52; // "sext_of_anyext"
411 }
412 break;
413 case 'h': // 1 string to match.
414 if (memcmp(RuleIdentifier.data()+2, "ifts_too_big", 12) != 0)
415 break;
416 return 110; // "shifts_too_big"
417 }
418 break;
419 case 'z': // 1 string to match.
420 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
421 break;
422 return 50; // "zext_of_anyext"
423 }
424 break;
425 case 15: // 12 strings to match.
426 switch (RuleIdentifier[0]) {
427 default: break;
428 case 'A': // 2 strings to match.
429 switch (RuleIdentifier[1]) {
430 default: break;
431 case 'M': // 1 string to match.
432 if (memcmp(RuleIdentifier.data()+2, "inusC1MinusC2", 13) != 0)
433 break;
434 return 13; // "AMinusC1MinusC2"
435 case 'P': // 1 string to match.
436 if (memcmp(RuleIdentifier.data()+2, "lusZeroMinusB", 13) != 0)
437 break;
438 return 3; // "APlusZeroMinusB"
439 }
440 break;
441 case 'C': // 1 string to match.
442 if (memcmp(RuleIdentifier.data()+1, "1Minus2MinusC2", 14) != 0)
443 break;
444 return 14; // "C1Minus2MinusC2"
445 case 'Z': // 1 string to match.
446 if (memcmp(RuleIdentifier.data()+1, "eroMinusAPlusB", 14) != 0)
447 break;
448 return 2; // "ZeroMinusAPlusB"
449 case 'b': // 1 string to match.
450 if (memcmp(RuleIdentifier.data()+1, "itreverse_lshr", 14) != 0)
451 break;
452 return 175; // "bitreverse_lshr"
453 case 'e': // 1 string to match.
454 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
455 break;
456 return 71; // "extending_loads"
457 case 'i': // 1 string to match.
458 if (memcmp(RuleIdentifier.data()+1, "dempotent_prop", 14) != 0)
459 break;
460 return 21; // "idempotent_prop"
461 case 'l': // 1 string to match.
462 if (memcmp(RuleIdentifier.data()+1, "oad_or_combine", 14) != 0)
463 break;
464 return 165; // "load_or_combine"
465 case 'n': // 1 string to match.
466 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_or", 14) != 0)
467 break;
468 return 65; // "narrow_binop_or"
469 case 'o': // 1 string to match.
470 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
471 break;
472 return 155; // "overlapping_and"
473 case 's': // 1 string to match.
474 if (memcmp(RuleIdentifier.data()+1, "elect_same_val", 14) != 0)
475 break;
476 return 86; // "select_same_val"
477 case 'z': // 1 string to match.
478 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_fold", 14) != 0)
479 break;
480 return 134; // "zext_trunc_fold"
481 }
482 break;
483 case 16: // 13 strings to match.
484 switch (RuleIdentifier[0]) {
485 default: break;
486 case 'a': // 1 string to match.
487 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
488 break;
489 return 53; // "anyext_of_anyext"
490 case 'n': // 5 strings to match.
491 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_", 12) != 0)
492 break;
493 switch (RuleIdentifier[13]) {
494 default: break;
495 case 'a': // 2 strings to match.
496 switch (RuleIdentifier[14]) {
497 default: break;
498 case 'd': // 1 string to match.
499 if (RuleIdentifier[15] != 'd')
500 break;
501 return 61; // "narrow_binop_add"
502 case 'n': // 1 string to match.
503 if (RuleIdentifier[15] != 'd')
504 break;
505 return 64; // "narrow_binop_and"
506 }
507 break;
508 case 'm': // 1 string to match.
509 if (memcmp(RuleIdentifier.data()+14, "ul", 2) != 0)
510 break;
511 return 63; // "narrow_binop_mul"
512 case 's': // 1 string to match.
513 if (memcmp(RuleIdentifier.data()+14, "ub", 2) != 0)
514 break;
515 return 62; // "narrow_binop_sub"
516 case 'x': // 1 string to match.
517 if (memcmp(RuleIdentifier.data()+14, "or", 2) != 0)
518 break;
519 return 66; // "narrow_binop_xor"
520 }
521 break;
522 case 's': // 4 strings to match.
523 switch (RuleIdentifier[1]) {
524 default: break;
525 case 'e': // 3 strings to match.
526 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
527 break;
528 switch (RuleIdentifier[7]) {
529 default: break;
530 case 'o': // 1 string to match.
531 if (memcmp(RuleIdentifier.data()+8, "f_anyext", 8) != 0)
532 break;
533 return 58; // "select_of_anyext"
534 case 't': // 1 string to match.
535 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
536 break;
537 return 206; // "select_to_minmax"
538 case 'u': // 1 string to match.
539 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
540 break;
541 return 126; // "select_undef_cmp"
542 }
543 break;
544 case 'u': // 1 string to match.
545 if (memcmp(RuleIdentifier.data()+2, "b_one_from_sub", 14) != 0)
546 break;
547 return 241; // "sub_one_from_sub"
548 }
549 break;
550 case 't': // 2 strings to match.
551 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
552 break;
553 switch (RuleIdentifier[12]) {
554 default: break;
555 case 's': // 1 string to match.
556 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
557 break;
558 return 47; // "truncate_of_sext"
559 case 'z': // 1 string to match.
560 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
561 break;
562 return 46; // "truncate_of_zext"
563 }
564 break;
565 case 'u': // 1 string to match.
566 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
567 break;
568 return 74; // "undef_to_fp_zero"
569 }
570 break;
571 case 17: // 14 strings to match.
572 switch (RuleIdentifier[0]) {
573 default: break;
574 case 'A': // 2 strings to match.
575 if (memcmp(RuleIdentifier.data()+1, "PlusBMinus", 10) != 0)
576 break;
577 switch (RuleIdentifier[11]) {
578 default: break;
579 case 'A': // 1 string to match.
580 if (memcmp(RuleIdentifier.data()+12, "plusC", 5) != 0)
581 break;
582 return 8; // "APlusBMinusAplusC"
583 case 'C': // 1 string to match.
584 if (memcmp(RuleIdentifier.data()+12, "PlusA", 5) != 0)
585 break;
586 return 9; // "APlusBMinusCPlusA"
587 }
588 break;
589 case 'a': // 2 strings to match.
590 switch (RuleIdentifier[1]) {
591 default: break;
592 case 'd': // 1 string to match.
593 if (memcmp(RuleIdentifier.data()+2, "d_p2i_to_ptradd", 15) != 0)
594 break;
595 return 19; // "add_p2i_to_ptradd"
596 case 'n': // 1 string to match.
597 if (memcmp(RuleIdentifier.data()+2, "yext_trunc_fold", 15) != 0)
598 break;
599 return 94; // "anyext_trunc_fold"
600 }
601 break;
602 case 'c': // 3 strings to match.
603 switch (RuleIdentifier[1]) {
604 default: break;
605 case 'a': // 2 strings to match.
606 if (memcmp(RuleIdentifier.data()+2, "nonicalize_", 11) != 0)
607 break;
608 switch (RuleIdentifier[13]) {
609 default: break;
610 case 'f': // 1 string to match.
611 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
612 break;
613 return 115; // "canonicalize_fcmp"
614 case 'i': // 1 string to match.
615 if (memcmp(RuleIdentifier.data()+14, "cmp", 3) != 0)
616 break;
617 return 114; // "canonicalize_icmp"
618 }
619 break;
620 case 'o': // 1 string to match.
621 if (memcmp(RuleIdentifier.data()+2, "nstant_fold_fma", 15) != 0)
622 break;
623 return 183; // "constant_fold_fma"
624 }
625 break;
626 case 'd': // 1 string to match.
627 if (memcmp(RuleIdentifier.data()+1, "iv_rem_to_divrem", 16) != 0)
628 break;
629 return 166; // "div_rem_to_divrem"
630 case 'e': // 1 string to match.
631 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
632 break;
633 return 84; // "erase_undef_store"
634 case 'p': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+1, "tr_add_with_zero", 16) != 0)
636 break;
637 return 162; // "ptr_add_with_zero"
638 case 's': // 2 strings to match.
639 switch (RuleIdentifier[1]) {
640 default: break;
641 case 'e': // 1 string to match.
642 if (memcmp(RuleIdentifier.data()+2, "lect_to_iminmax", 15) != 0)
643 break;
644 return 128; // "select_to_iminmax"
645 case 'h': // 1 string to match.
646 if (memcmp(RuleIdentifier.data()+2, "ift_immed_chain", 15) != 0)
647 break;
648 return 163; // "shift_immed_chain"
649 }
650 break;
651 case 'u': // 2 strings to match.
652 switch (RuleIdentifier[1]) {
653 default: break;
654 case 'n': // 1 string to match.
655 if (memcmp(RuleIdentifier.data()+2, "def_to_int_zero", 15) != 0)
656 break;
657 return 75; // "undef_to_int_zero"
658 case 'r': // 1 string to match.
659 if (memcmp(RuleIdentifier.data()+2, "em_pow2_to_mask", 15) != 0)
660 break;
661 return 133; // "urem_pow2_to_mask"
662 }
663 break;
664 }
665 break;
666 case 18: // 12 strings to match.
667 switch (RuleIdentifier[0]) {
668 default: break;
669 case 'A': // 3 strings to match.
670 switch (RuleIdentifier[1]) {
671 default: break;
672 case 'M': // 2 strings to match.
673 if (memcmp(RuleIdentifier.data()+2, "inusBPlus", 9) != 0)
674 break;
675 switch (RuleIdentifier[11]) {
676 default: break;
677 case 'B': // 1 string to match.
678 if (memcmp(RuleIdentifier.data()+12, "MinusC", 6) != 0)
679 break;
680 return 7; // "AMinusBPlusBMinusC"
681 case 'C': // 1 string to match.
682 if (memcmp(RuleIdentifier.data()+12, "MinusA", 6) != 0)
683 break;
684 return 6; // "AMinusBPlusCMinusA"
685 }
686 break;
687 case 'P': // 1 string to match.
688 if (memcmp(RuleIdentifier.data()+2, "lusBMinusCMinusB", 16) != 0)
689 break;
690 return 0; // "APlusBMinusCMinusB"
691 }
692 break;
693 case 'b': // 1 string to match.
694 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
695 break;
696 return 90; // "binop_left_to_zero"
697 case 'c': // 3 strings to match.
698 if (RuleIdentifier[1] != 'o')
699 break;
700 switch (RuleIdentifier[2]) {
701 default: break;
702 case 'm': // 1 string to match.
703 if (memcmp(RuleIdentifier.data()+3, "bine_minmax_nan", 15) != 0)
704 break;
705 return 159; // "combine_minmax_nan"
706 case 'n': // 2 strings to match.
707 if (memcmp(RuleIdentifier.data()+3, "stant_fold_f", 12) != 0)
708 break;
709 switch (RuleIdentifier[15]) {
710 default: break;
711 case 'a': // 1 string to match.
712 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
713 break;
714 return 140; // "constant_fold_fabs"
715 case 'n': // 1 string to match.
716 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
717 break;
718 return 139; // "constant_fold_fneg"
719 }
720 break;
721 }
722 break;
723 case 'e': // 1 string to match.
724 if (memcmp(RuleIdentifier.data()+1, "xpand_const_fpowi", 17) != 0)
725 break;
726 return 160; // "expand_const_fpowi"
727 case 'f': // 1 string to match.
728 if (memcmp(RuleIdentifier.data()+1, "ptrunc_fpext_fold", 17) != 0)
729 break;
730 return 103; // "fptrunc_fpext_fold"
731 case 's': // 2 strings to match.
732 if (RuleIdentifier[1] != 'e')
733 break;
734 switch (RuleIdentifier[2]) {
735 default: break;
736 case 'l': // 1 string to match.
737 if (memcmp(RuleIdentifier.data()+3, "ect_of_truncate", 15) != 0)
738 break;
739 return 59; // "select_of_truncate"
740 case 'x': // 1 string to match.
741 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_load", 15) != 0)
742 break;
743 return 123; // "sext_inreg_of_load"
744 }
745 break;
746 case 't': // 1 string to match.
747 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
748 break;
749 return 48; // "truncate_of_anyext"
750 }
751 break;
752 case 19: // 19 strings to match.
753 switch (RuleIdentifier[0]) {
754 default: break;
755 case 'A': // 1 string to match.
756 if (memcmp(RuleIdentifier.data()+1, "MinusBMinusCMinusC", 18) != 0)
757 break;
758 return 1; // "AMinusBMinusCMinusC"
759 case 'b': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
761 break;
762 return 91; // "binop_right_to_zero"
763 case 'c': // 7 strings to match.
764 if (memcmp(RuleIdentifier.data()+1, "onst", 4) != 0)
765 break;
766 switch (RuleIdentifier[5]) {
767 default: break;
768 case '_': // 1 string to match.
769 if (memcmp(RuleIdentifier.data()+6, "ptradd_to_i2p", 13) != 0)
770 break;
771 return 154; // "const_ptradd_to_i2p"
772 case 'a': // 6 strings to match.
773 if (memcmp(RuleIdentifier.data()+6, "nt_fold_", 8) != 0)
774 break;
775 switch (RuleIdentifier[14]) {
776 default: break;
777 case 'b': // 1 string to match.
778 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
779 break;
780 return 181; // "constant_fold_binop"
781 case 'f': // 5 strings to match.
782 switch (RuleIdentifier[15]) {
783 default: break;
784 case 'c': // 1 string to match.
785 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
786 break;
787 return 145; // "constant_fold_fceil"
788 case 'l': // 1 string to match.
789 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
790 break;
791 return 142; // "constant_fold_flog2"
792 case 'p': // 1 string to match.
793 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
794 break;
795 return 144; // "constant_fold_fpext"
796 case 'r': // 1 string to match.
797 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
798 break;
799 return 150; // "constant_fold_frint"
800 case 's': // 1 string to match.
801 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
802 break;
803 return 141; // "constant_fold_fsqrt"
804 }
805 break;
806 }
807 break;
808 }
809 break;
810 case 'e': // 1 string to match.
811 if (memcmp(RuleIdentifier.data()+1, "xtend_through_phis", 18) != 0)
812 break;
813 return 107; // "extend_through_phis"
814 case 'i': // 1 string to match.
815 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
816 break;
817 return 67; // "integer_of_truncate"
818 case 'm': // 1 string to match.
819 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
820 break;
821 return 229; // "merge_of_x_and_zero"
822 case 'p': // 1 string to match.
823 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
824 break;
825 return 113; // "ptr_add_immed_chain"
826 case 'r': // 2 strings to match.
827 switch (RuleIdentifier[1]) {
828 default: break;
829 case 'e': // 1 string to match.
830 if (memcmp(RuleIdentifier.data()+2, "assoc_comm_binops", 17) != 0)
831 break;
832 return 112; // "reassoc_comm_binops"
833 case 'i': // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
835 break;
836 return 87; // "right_identity_zero"
837 }
838 break;
839 case 's': // 3 strings to match.
840 switch (RuleIdentifier[1]) {
841 default: break;
842 case 'e': // 1 string to match.
843 if (memcmp(RuleIdentifier.data()+2, "lect_constant_cmp", 17) != 0)
844 break;
845 return 127; // "select_constant_cmp"
846 case 'i': // 2 strings to match.
847 if (memcmp(RuleIdentifier.data()+2, "mplify_", 7) != 0)
848 break;
849 switch (RuleIdentifier[9]) {
850 default: break;
851 case 'a': // 1 string to match.
852 if (memcmp(RuleIdentifier.data()+10, "dd_to_sub", 9) != 0)
853 break;
854 return 108; // "simplify_add_to_sub"
855 case 'n': // 1 string to match.
856 if (memcmp(RuleIdentifier.data()+10, "eg_minmax", 9) != 0)
857 break;
858 return 212; // "simplify_neg_minmax"
859 }
860 break;
861 }
862 break;
863 case 'u': // 1 string to match.
864 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
865 break;
866 return 79; // "unary_undef_to_zero"
867 }
868 break;
869 case 20: // 8 strings to match.
870 switch (RuleIdentifier[0]) {
871 default: break;
872 case 'a': // 1 string to match.
873 if (memcmp(RuleIdentifier.data()+1, "nd_or_disjoint_mask", 19) != 0)
874 break;
875 return 188; // "and_or_disjoint_mask"
876 case 'b': // 1 string to match.
877 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
878 break;
879 return 102; // "bitcast_bitcast_fold"
880 case 'c': // 1 string to match.
881 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
882 break;
883 return 146; // "constant_fold_ffloor"
884 case 'm': // 1 string to match.
885 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
886 break;
887 return 228; // "merge_of_x_and_undef"
888 case 'r': // 2 strings to match.
889 if (memcmp(RuleIdentifier.data()+1, "edu", 3) != 0)
890 break;
891 switch (RuleIdentifier[4]) {
892 default: break;
893 case 'c': // 1 string to match.
894 if (memcmp(RuleIdentifier.data()+5, "e_shl_of_extend", 15) != 0)
895 break;
896 return 124; // "reduce_shl_of_extend"
897 case 'n': // 1 string to match.
898 if (memcmp(RuleIdentifier.data()+5, "dant_sext_inreg", 15) != 0)
899 break;
900 return 131; // "redundant_sext_inreg"
901 }
902 break;
903 case 'u': // 2 strings to match.
904 if (RuleIdentifier[1] != 'n')
905 break;
906 switch (RuleIdentifier[2]) {
907 default: break;
908 case 'a': // 1 string to match.
909 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
910 break;
911 return 80; // "unary_undef_to_undef"
912 case 'm': // 1 string to match.
913 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
914 break;
915 return 227; // "unmerge_zext_to_zext"
916 }
917 break;
918 }
919 break;
920 case 21: // 10 strings to match.
921 switch (RuleIdentifier[0]) {
922 default: break;
923 case 'c': // 4 strings to match.
924 if (RuleIdentifier[1] != 'o')
925 break;
926 switch (RuleIdentifier[2]) {
927 default: break;
928 case 'm': // 2 strings to match.
929 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
930 break;
931 switch (RuleIdentifier[8]) {
932 default: break;
933 case 'b': // 1 string to match.
934 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
935 break;
936 return 230; // "combine_build_unmerge"
937 case 'c': // 1 string to match.
938 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
939 break;
940 return 213; // "combine_concat_vector"
941 }
942 break;
943 case 'n': // 2 strings to match.
944 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
945 break;
946 switch (RuleIdentifier[14]) {
947 default: break;
948 case 'c': // 1 string to match.
949 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
950 break;
951 return 184; // "constant_fold_cast_op"
952 case 'f': // 1 string to match.
953 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
954 break;
955 return 143; // "constant_fold_fptrunc"
956 }
957 break;
958 }
959 break;
960 case 'f': // 1 string to match.
961 if (memcmp(RuleIdentifier.data()+1, "div_repeated_divison", 20) != 0)
962 break;
963 return 204; // "fdiv_repeated_divison"
964 case 'i': // 1 string to match.
965 if (memcmp(RuleIdentifier.data()+1, "nsert_vector_elt_oob", 20) != 0)
966 break;
967 return 27; // "insert_vector_elt_oob"
968 case 'l': // 1 string to match.
969 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
970 break;
971 return 237; // "lshr_of_trunc_of_lshr"
972 case 'r': // 1 string to match.
973 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
974 break;
975 return 97; // "right_identity_one_fp"
976 case 'u': // 2 strings to match.
977 if (RuleIdentifier[1] != 'n')
978 break;
979 switch (RuleIdentifier[2]) {
980 default: break;
981 case 'd': // 1 string to match.
982 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
983 break;
984 return 76; // "undef_to_negative_one"
985 case 'm': // 1 string to match.
986 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
987 break;
988 return 226; // "unmerge_dead_to_trunc"
989 }
990 break;
991 }
992 break;
993 case 22: // 13 strings to match.
994 switch (RuleIdentifier[0]) {
995 default: break;
996 case 'c': // 2 strings to match.
997 if (RuleIdentifier[1] != 'o')
998 break;
999 switch (RuleIdentifier[2]) {
1000 default: break;
1001 case 'm': // 1 string to match.
1002 if (memcmp(RuleIdentifier.data()+3, "bine_shuffle_concat", 19) != 0)
1003 break;
1004 return 217; // "combine_shuffle_concat"
1005 case 'n': // 1 string to match.
1006 if (memcmp(RuleIdentifier.data()+3, "stant_fold_fp_binop", 19) != 0)
1007 break;
1008 return 182; // "constant_fold_fp_binop"
1009 }
1010 break;
1011 case 'f': // 4 strings to match.
1012 switch (RuleIdentifier[1]) {
1013 default: break;
1014 case 'o': // 1 string to match.
1015 if (memcmp(RuleIdentifier.data()+2, "ld_binop_into_select", 20) != 0)
1016 break;
1017 return 197; // "fold_binop_into_select"
1018 case 'u': // 3 strings to match.
1019 if (memcmp(RuleIdentifier.data()+2, "nnel_shift_", 11) != 0)
1020 break;
1021 switch (RuleIdentifier[13]) {
1022 default: break;
1023 case 'l': // 1 string to match.
1024 if (memcmp(RuleIdentifier.data()+14, "eft_zero", 8) != 0)
1025 break;
1026 return 170; // "funnel_shift_left_zero"
1027 case 'o': // 1 string to match.
1028 if (memcmp(RuleIdentifier.data()+14, "vershift", 8) != 0)
1029 break;
1030 return 171; // "funnel_shift_overshift"
1031 case 't': // 1 string to match.
1032 if (memcmp(RuleIdentifier.data()+14, "o_rotate", 8) != 0)
1033 break;
1034 return 168; // "funnel_shift_to_rotate"
1035 }
1036 break;
1037 }
1038 break;
1039 case 'i': // 1 string to match.
1040 if (memcmp(RuleIdentifier.data()+1, "cmp_to_lhs_known_bits", 21) != 0)
1041 break;
1042 return 117; // "icmp_to_lhs_known_bits"
1043 case 'm': // 1 string to match.
1044 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
1045 break;
1046 return 232; // "match_subo_no_overflow"
1047 case 'p': // 1 string to match.
1048 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
1049 break;
1050 return 81; // "propagate_undef_any_op"
1051 case 'r': // 2 strings to match.
1052 switch (RuleIdentifier[1]) {
1053 default: break;
1054 case 'e': // 1 string to match.
1055 if (memcmp(RuleIdentifier.data()+2, "dundant_neg_operands", 20) != 0)
1056 break;
1057 return 187; // "redundant_neg_operands"
1058 case 'i': // 1 string to match.
1059 if (memcmp(RuleIdentifier.data()+2, "ght_identity_one_int", 20) != 0)
1060 break;
1061 return 96; // "right_identity_one_int"
1062 }
1063 break;
1064 case 's': // 1 string to match.
1065 if (memcmp(RuleIdentifier.data()+1, "hl_ashr_to_sext_inreg", 21) != 0)
1066 break;
1067 return 121; // "shl_ashr_to_sext_inreg"
1068 case 't': // 1 string to match.
1069 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
1070 break;
1071 return 100; // "trunc_buildvector_fold"
1072 }
1073 break;
1074 case 23: // 7 strings to match.
1075 switch (RuleIdentifier[0]) {
1076 default: break;
1077 case 'b': // 1 string to match.
1078 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
1079 break;
1080 return 60; // "buildvector_of_truncate"
1081 case 'c': // 1 string to match.
1082 if (memcmp(RuleIdentifier.data()+1, "tlz_zero_undef_to_ctls", 22) != 0)
1083 break;
1084 return 239; // "ctlz_zero_undef_to_ctls"
1085 case 'f': // 1 string to match.
1086 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_right_zero", 22) != 0)
1087 break;
1088 return 169; // "funnel_shift_right_zero"
1089 case 'i': // 2 strings to match.
1090 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
1091 break;
1092 switch (RuleIdentifier[21]) {
1093 default: break;
1094 case 's': // 1 string to match.
1095 if (RuleIdentifier[22] != 'i')
1096 break;
1097 return 152; // "itof_const_zero_fold_si"
1098 case 'u': // 1 string to match.
1099 if (RuleIdentifier[22] != 'i')
1100 break;
1101 return 153; // "itof_const_zero_fold_ui"
1102 }
1103 break;
1104 case 'p': // 1 string to match.
1105 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
1106 break;
1107 return 82; // "propagate_undef_all_ops"
1108 case 't': // 1 string to match.
1109 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
1110 break;
1111 return 236; // "truncusatu_to_fptouisat"
1112 }
1113 break;
1114 case 24: // 7 strings to match.
1115 switch (RuleIdentifier[0]) {
1116 default: break;
1117 case 'b': // 1 string to match.
1118 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
1119 break;
1120 return 77; // "binop_left_undef_to_zero"
1121 case 'c': // 1 string to match.
1122 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
1123 break;
1124 return 151; // "constant_fold_fnearbyint"
1125 case 'm': // 1 string to match.
1126 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element", 23) != 0)
1127 break;
1128 return 26; // "match_extract_of_element"
1129 case 'n': // 1 string to match.
1130 if (memcmp(RuleIdentifier.data()+1, "arrow_binop_feeding_and", 23) != 0)
1131 break;
1132 return 125; // "narrow_binop_feeding_and"
1133 case 's': // 2 strings to match.
1134 if (memcmp(RuleIdentifier.data()+1, "ext_inreg_", 10) != 0)
1135 break;
1136 switch (RuleIdentifier[11]) {
1137 default: break;
1138 case 'o': // 1 string to match.
1139 if (memcmp(RuleIdentifier.data()+12, "f_sext_inreg", 12) != 0)
1140 break;
1141 return 56; // "sext_inreg_of_sext_inreg"
1142 case 't': // 1 string to match.
1143 if (memcmp(RuleIdentifier.data()+12, "o_zext_inreg", 12) != 0)
1144 break;
1145 return 135; // "sext_inreg_to_zext_inreg"
1146 }
1147 break;
1148 case 'x': // 1 string to match.
1149 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
1150 break;
1151 return 161; // "xor_of_and_with_same_reg"
1152 }
1153 break;
1154 case 25: // 7 strings to match.
1155 switch (RuleIdentifier[0]) {
1156 default: break;
1157 case 'b': // 3 strings to match.
1158 switch (RuleIdentifier[1]) {
1159 default: break;
1160 case 'i': // 2 strings to match.
1161 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
1162 break;
1163 switch (RuleIdentifier[22]) {
1164 default: break;
1165 case 'a': // 1 string to match.
1166 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
1167 break;
1168 return 178; // "bitfield_extract_from_and"
1169 case 's': // 1 string to match.
1170 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
1171 break;
1172 return 179; // "bitfield_extract_from_shr"
1173 }
1174 break;
1175 case 'u': // 1 string to match.
1176 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
1177 break;
1178 return 99; // "buildvector_identity_fold"
1179 }
1180 break;
1181 case 'c': // 1 string to match.
1182 if (memcmp(RuleIdentifier.data()+1, "ombine_shuffle_undef_rhs", 24) != 0)
1183 break;
1184 return 218; // "combine_shuffle_undef_rhs"
1185 case 'e': // 1 string to match.
1186 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
1187 break;
1188 return 69; // "extract_vec_elt_build_vec"
1189 case 'n': // 1 string to match.
1190 if (memcmp(RuleIdentifier.data()+1, "eg_and_one_to_sext_inreg", 24) != 0)
1191 break;
1192 return 122; // "neg_and_one_to_sext_inreg"
1193 case 'r': // 1 string to match.
1194 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_one_fp", 24) != 0)
1195 break;
1196 return 106; // "right_identity_neg_one_fp"
1197 }
1198 break;
1199 case 26: // 4 strings to match.
1200 switch (RuleIdentifier[0]) {
1201 default: break;
1202 case 'b': // 1 string to match.
1203 if (memcmp(RuleIdentifier.data()+1, "inop_right_undef_to_undef", 25) != 0)
1204 break;
1205 return 78; // "binop_right_undef_to_undef"
1206 case 'c': // 1 string to match.
1207 if (memcmp(RuleIdentifier.data()+1, "ommute_fp_constant_to_rhs", 25) != 0)
1208 break;
1209 return 209; // "commute_fp_constant_to_rhs"
1210 case 'f': // 1 string to match.
1211 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift", 25) != 0)
1212 break;
1213 return 167; // "funnel_shift_from_or_shift"
1214 case 'r': // 1 string to match.
1215 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
1216 break;
1217 return 104; // "right_identity_neg_zero_fp"
1218 }
1219 break;
1220 case 27: // 6 strings to match.
1221 switch (RuleIdentifier[0]) {
1222 default: break;
1223 case 'c': // 2 strings to match.
1224 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
1225 break;
1226 switch (RuleIdentifier[3]) {
1227 default: break;
1228 case 'b': // 1 string to match.
1229 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
1230 break;
1231 return 220; // "combine_use_vector_truncate"
1232 case 'm': // 1 string to match.
1233 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
1234 break;
1235 return 208; // "commute_int_constant_to_rhs"
1236 }
1237 break;
1238 case 'd': // 1 string to match.
1239 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_or_combine", 26) != 0)
1240 break;
1241 return 119; // "double_icmp_zero_or_combine"
1242 case 'r': // 1 string to match.
1243 if (memcmp(RuleIdentifier.data()+1, "edundant_binop_in_equality", 26) != 0)
1244 break;
1245 return 120; // "redundant_binop_in_equality"
1246 case 't': // 1 string to match.
1247 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
1248 break;
1249 return 101; // "trunc_lshr_buildvector_fold"
1250 case 'u': // 1 string to match.
1251 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
1252 break;
1253 return 221; // "unmerge_anyext_build_vector"
1254 }
1255 break;
1256 case 28: // 4 strings to match.
1257 switch (RuleIdentifier[0]) {
1258 default: break;
1259 case 'd': // 1 string to match.
1260 if (memcmp(RuleIdentifier.data()+1, "ouble_icmp_zero_and_combine", 27) != 0)
1261 break;
1262 return 118; // "double_icmp_zero_and_combine"
1263 case 'o': // 1 string to match.
1264 if (memcmp(RuleIdentifier.data()+1, "pt_brcond_by_inverting_cond", 27) != 0)
1265 break;
1266 return 138; // "opt_brcond_by_inverting_cond"
1267 case 'p': // 1 string to match.
1268 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_shuffle_mask", 27) != 0)
1269 break;
1270 return 83; // "propagate_undef_shuffle_mask"
1271 case 's': // 1 string to match.
1272 if (memcmp(RuleIdentifier.data()+1, "hift_of_shifted_logic_chain", 27) != 0)
1273 break;
1274 return 164; // "shift_of_shifted_logic_chain"
1275 }
1276 break;
1277 case 29: // 6 strings to match.
1278 switch (RuleIdentifier[0]) {
1279 default: break;
1280 case 'b': // 1 string to match.
1281 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
1282 break;
1283 return 180; // "bitfield_extract_from_shr_and"
1284 case 'c': // 4 strings to match.
1285 if (RuleIdentifier[1] != 'o')
1286 break;
1287 switch (RuleIdentifier[2]) {
1288 default: break;
1289 case 'm': // 2 strings to match.
1290 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
1291 break;
1292 switch (RuleIdentifier[8]) {
1293 default: break;
1294 case 'e': // 1 string to match.
1295 if (memcmp(RuleIdentifier.data()+9, "xtracted_vector_load", 20) != 0)
1296 break;
1297 return 73; // "combine_extracted_vector_load"
1298 case 's': // 1 string to match.
1299 if (memcmp(RuleIdentifier.data()+9, "huffle_disjoint_mask", 20) != 0)
1300 break;
1301 return 219; // "combine_shuffle_disjoint_mask"
1302 }
1303 break;
1304 case 'n': // 2 strings to match.
1305 if (memcmp(RuleIdentifier.data()+3, "stant_fold_intrinsic_", 21) != 0)
1306 break;
1307 switch (RuleIdentifier[24]) {
1308 default: break;
1309 case 'r': // 1 string to match.
1310 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
1311 break;
1312 return 148; // "constant_fold_intrinsic_round"
1313 case 't': // 1 string to match.
1314 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
1315 break;
1316 return 147; // "constant_fold_intrinsic_trunc"
1317 }
1318 break;
1319 }
1320 break;
1321 case 'i': // 1 string to match.
1322 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
1323 break;
1324 return 116; // "icmp_to_true_false_known_bits"
1325 }
1326 break;
1327 case 30: // 2 strings to match.
1328 switch (RuleIdentifier[0]) {
1329 default: break;
1330 case 'f': // 1 string to match.
1331 if (memcmp(RuleIdentifier.data()+1, "reeze_of_non_undef_non_poison", 29) != 0)
1332 break;
1333 return 44; // "freeze_of_non_undef_non_poison"
1334 case 'r': // 1 string to match.
1335 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp_nsz", 29) != 0)
1336 break;
1337 return 105; // "right_identity_neg_zero_fp_nsz"
1338 }
1339 break;
1340 case 31: // 2 strings to match.
1341 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_", 22) != 0)
1342 break;
1343 switch (RuleIdentifier[22]) {
1344 default: break;
1345 case 'e': // 1 string to match.
1346 if (memcmp(RuleIdentifier.data()+23, "lt_undef", 8) != 0)
1347 break;
1348 return 25; // "insert_vector_element_elt_undef"
1349 case 'i': // 1 string to match.
1350 if (memcmp(RuleIdentifier.data()+23, "dx_undef", 8) != 0)
1351 break;
1352 return 24; // "insert_vector_element_idx_undef"
1353 }
1354 break;
1355 case 32: // 4 strings to match.
1356 switch (RuleIdentifier[0]) {
1357 default: break;
1358 case 'b': // 1 string to match.
1359 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_sext_inreg", 31) != 0)
1360 break;
1361 return 177; // "bitfield_extract_from_sext_inreg"
1362 case 'c': // 2 strings to match.
1363 if (memcmp(RuleIdentifier.data()+1, "ombine_f", 8) != 0)
1364 break;
1365 switch (RuleIdentifier[9]) {
1366 default: break;
1367 case 'a': // 1 string to match.
1368 if (memcmp(RuleIdentifier.data()+10, "dd_fmul_to_fmad_or_fma", 22) != 0)
1369 break;
1370 return 189; // "combine_fadd_fmul_to_fmad_or_fma"
1371 case 's': // 1 string to match.
1372 if (memcmp(RuleIdentifier.data()+10, "ub_fmul_to_fmad_or_fma", 22) != 0)
1373 break;
1374 return 193; // "combine_fsub_fmul_to_fmad_or_fma"
1375 }
1376 break;
1377 case 'e': // 1 string to match.
1378 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_not_const", 31) != 0)
1379 break;
1380 return 28; // "extract_vector_element_not_const"
1381 }
1382 break;
1383 case 33: // 1 string to match.
1384 if (memcmp(RuleIdentifier.data()+0, "constant_fold_intrinsic_roundeven", 33) != 0)
1385 break;
1386 return 149; // "constant_fold_intrinsic_roundeven"
1387 case 34: // 1 string to match.
1388 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
1389 break;
1390 return 70; // "extract_all_elts_from_build_vector"
1391 case 35: // 1 string to match.
1392 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_build_vector", 35) != 0)
1393 break;
1394 return 30; // "extract_vector_element_build_vector"
1395 case 36: // 4 strings to match.
1396 switch (RuleIdentifier[0]) {
1397 default: break;
1398 case 'c': // 2 strings to match.
1399 if (memcmp(RuleIdentifier.data()+1, "ombine_", 7) != 0)
1400 break;
1401 switch (RuleIdentifier[8]) {
1402 default: break;
1403 case 'f': // 1 string to match.
1404 if (memcmp(RuleIdentifier.data()+9, "add_fma_fmul_to_fmad_or_fma", 27) != 0)
1405 break;
1406 return 191; // "combine_fadd_fma_fmul_to_fmad_or_fma"
1407 case 'i': // 1 string to match.
1408 if (memcmp(RuleIdentifier.data()+9, "nsert_vec_elts_build_vector", 27) != 0)
1409 break;
1410 return 68; // "combine_insert_vec_elts_build_vector"
1411 }
1412 break;
1413 case 'i': // 1 string to match.
1414 if (memcmp(RuleIdentifier.data()+1, "nsert_extract_vec_elt_out_of_bounds", 35) != 0)
1415 break;
1416 return 85; // "insert_extract_vec_elt_out_of_bounds"
1417 case 'm': // 1 string to match.
1418 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_index", 35) != 0)
1419 break;
1420 return 23; // "match_extract_of_element_undef_index"
1421 }
1422 break;
1423 case 37: // 4 strings to match.
1424 switch (RuleIdentifier[0]) {
1425 default: break;
1426 case 'c': // 1 string to match.
1427 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fneg_fmul_to_fmad_or_fma", 36) != 0)
1428 break;
1429 return 194; // "combine_fsub_fneg_fmul_to_fmad_or_fma"
1430 case 'e': // 1 string to match.
1431 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_shuffle_vector", 36) != 0)
1432 break;
1433 return 38; // "extract_vector_element_shuffle_vector"
1434 case 'h': // 1 string to match.
1435 if (memcmp(RuleIdentifier.data()+1, "oist_logic_op_with_same_opcode_hands", 36) != 0)
1436 break;
1437 return 109; // "hoist_logic_op_with_same_opcode_hands"
1438 case 'm': // 1 string to match.
1439 if (memcmp(RuleIdentifier.data()+1, "atch_extract_of_element_undef_vector", 36) != 0)
1440 break;
1441 return 22; // "match_extract_of_element_undef_vector"
1442 }
1443 break;
1444 case 38: // 2 strings to match.
1445 if (memcmp(RuleIdentifier.data()+0, "combine_f", 9) != 0)
1446 break;
1447 switch (RuleIdentifier[9]) {
1448 default: break;
1449 case 'a': // 1 string to match.
1450 if (memcmp(RuleIdentifier.data()+10, "dd_fpext_fmul_to_fmad_or_fma", 28) != 0)
1451 break;
1452 return 190; // "combine_fadd_fpext_fmul_to_fmad_or_fma"
1453 case 's': // 1 string to match.
1454 if (memcmp(RuleIdentifier.data()+10, "ub_fpext_fmul_to_fmad_or_fma", 28) != 0)
1455 break;
1456 return 195; // "combine_fsub_fpext_fmul_to_fmad_or_fma"
1457 }
1458 break;
1459 case 40: // 1 string to match.
1460 if (memcmp(RuleIdentifier.data()+0, "extract_vector_element_different_indices", 40) != 0)
1461 break;
1462 return 29; // "extract_vector_element_different_indices"
1463 case 42: // 9 strings to match.
1464 switch (RuleIdentifier[0]) {
1465 default: break;
1466 case 'c': // 1 string to match.
1467 if (memcmp(RuleIdentifier.data()+1, "ombine_fadd_fpext_fma_fmul_to_fmad_or_fma", 41) != 0)
1468 break;
1469 return 192; // "combine_fadd_fpext_fma_fmul_to_fmad_or_fma"
1470 case 'e': // 7 strings to match.
1471 if (memcmp(RuleIdentifier.data()+1, "xtract_vector_element_build_vector_trunc", 40) != 0)
1472 break;
1473 switch (RuleIdentifier[41]) {
1474 default: break;
1475 case '2': // 1 string to match.
1476 return 31; // "extract_vector_element_build_vector_trunc2"
1477 case '3': // 1 string to match.
1478 return 32; // "extract_vector_element_build_vector_trunc3"
1479 case '4': // 1 string to match.
1480 return 33; // "extract_vector_element_build_vector_trunc4"
1481 case '5': // 1 string to match.
1482 return 34; // "extract_vector_element_build_vector_trunc5"
1483 case '6': // 1 string to match.
1484 return 35; // "extract_vector_element_build_vector_trunc6"
1485 case '7': // 1 string to match.
1486 return 36; // "extract_vector_element_build_vector_trunc7"
1487 case '8': // 1 string to match.
1488 return 37; // "extract_vector_element_build_vector_trunc8"
1489 }
1490 break;
1491 case 'f': // 1 string to match.
1492 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_left", 41) != 0)
1493 break;
1494 return 172; // "funnel_shift_or_shift_to_funnel_shift_left"
1495 }
1496 break;
1497 case 43: // 2 strings to match.
1498 switch (RuleIdentifier[0]) {
1499 default: break;
1500 case 'c': // 1 string to match.
1501 if (memcmp(RuleIdentifier.data()+1, "ombine_fsub_fpext_fneg_fmul_to_fmad_or_fma", 42) != 0)
1502 break;
1503 return 196; // "combine_fsub_fpext_fneg_fmul_to_fmad_or_fma"
1504 case 'f': // 1 string to match.
1505 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_or_shift_to_funnel_shift_right", 42) != 0)
1506 break;
1507 return 173; // "funnel_shift_or_shift_to_funnel_shift_right"
1508 }
1509 break;
1510 case 44: // 1 string to match.
1511 if (memcmp(RuleIdentifier.data()+0, "insert_vector_element_extract_vector_element", 44) != 0)
1512 break;
1513 return 39; // "insert_vector_element_extract_vector_element"
1514 case 46: // 1 string to match.
1515 if (memcmp(RuleIdentifier.data()+0, "push_freeze_to_prevent_poison_from_propagating", 46) != 0)
1516 break;
1517 return 45; // "push_freeze_to_prevent_poison_from_propagating"
1518 }
1519#endif // ifndef NDEBUG
1520
1521 return std::nullopt;
1522}
1523static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
1524 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
1525 if (!RangePair.second.empty()) {
1526 const auto First = getRuleIdxForIdentifier(RangePair.first);
1527 const auto Last = getRuleIdxForIdentifier(RangePair.second);
1528 if (!First || !Last)
1529 return std::nullopt;
1530 if (First >= Last)
1531 report_fatal_error("Beginning of range should be before end of range");
1532 return {{*First, *Last + 1}};
1533 }
1534 if (RangePair.first == "*") {
1535 return {{0, 242}};
1536 }
1537 const auto I = getRuleIdxForIdentifier(RangePair.first);
1538 if (!I)
1539 return std::nullopt;
1540 return {{*I, *I + 1}};
1541}
1542
1543bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
1544 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1545 if (!MaybeRange)
1546 return false;
1547 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1548 DisabledRules.reset(I);
1549 return true;
1550}
1551
1552bool RISCVPreLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
1553 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
1554 if (!MaybeRange)
1555 return false;
1556 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
1557 DisabledRules.set(I);
1558 return true;
1559}
1560
1561static std::vector<std::string> RISCVPreLegalizerCombinerOption;
1562static cl::list<std::string> RISCVPreLegalizerCombinerDisableOption(
1563 "riscvprelegalizercombiner-disable-rule",
1564 cl::desc("Disable one or more combiner rules temporarily in the RISCVPreLegalizerCombiner pass"),
1565 cl::CommaSeparated,
1566 cl::Hidden,
1567 cl::cat(GICombinerOptionCategory),
1568 cl::callback([](const std::string &Str) {
1569 RISCVPreLegalizerCombinerOption.push_back(Str);
1570 }));
1571static cl::list<std::string> RISCVPreLegalizerCombinerOnlyEnableOption(
1572 "riscvprelegalizercombiner-only-enable-rule",
1573 cl::desc("Disable all rules in the RISCVPreLegalizerCombiner pass then re-enable the specified ones"),
1574 cl::Hidden,
1575 cl::cat(GICombinerOptionCategory),
1576 cl::callback([](const std::string &CommaSeparatedArg) {
1577 StringRef Str = CommaSeparatedArg;
1578 RISCVPreLegalizerCombinerOption.push_back("*");
1579 do {
1580 auto X = Str.split(",");
1581 RISCVPreLegalizerCombinerOption.push_back(("!" + X.first).str());
1582 Str = X.second;
1583 } while (!Str.empty());
1584 }));
1585
1586
1587bool RISCVPreLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
1588 return !DisabledRules.test(RuleID);
1589}
1590bool RISCVPreLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
1591 for (StringRef Identifier : RISCVPreLegalizerCombinerOption) {
1592 bool Enabled = Identifier.consume_front("!");
1593 if (Enabled && !setRuleEnabled(Identifier))
1594 return false;
1595 if (!Enabled && !setRuleDisabled(Identifier))
1596 return false;
1597 }
1598 return true;
1599}
1600
1601
1602#endif // GET_GICOMBINER_TYPES
1603
1604#ifdef GET_GICOMBINER_TYPES
1605
1606const unsigned MAX_SUBTARGET_PREDICATES = 0;
1607using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
1608
1609#endif // GET_GICOMBINER_TYPES
1610
1611#ifdef GET_GICOMBINER_CLASS_MEMBERS
1612
1613PredicateBitset AvailableModuleFeatures;
1614mutable PredicateBitset AvailableFunctionFeatures;
1615PredicateBitset getAvailableFeatures() const {
1616 return AvailableModuleFeatures | AvailableFunctionFeatures;
1617}
1618PredicateBitset
1619computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const;
1620PredicateBitset
1621computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget,
1622 const MachineFunction *MF) const;
1623void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1624
1625#endif // GET_GICOMBINER_CLASS_MEMBERS
1626
1627#ifdef GET_GICOMBINER_CLASS_MEMBERS
1628
1629 mutable MatcherState State;
1630 typedef ComplexRendererFns(RISCVPreLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1631 typedef void(RISCVPreLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1632 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1633 static RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1634 static RISCVPreLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1635 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1636 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1637 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1638 const uint8_t *getMatchTable() const override;
1639 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1640 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1641 bool testSimplePredicate(unsigned PredicateID) const override;
1642 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1643
1644#endif // GET_GICOMBINER_CLASS_MEMBERS
1645
1646#ifdef GET_GICOMBINER_IMPL
1647
1648// LLT Objects.
1649enum {
1650 GILLT_s1,
1651};
1652const static size_t NumTypeObjects = 1;
1653const static LLT TypeObjects[] = {
1654 LLT::scalar(1),
1655};
1656
1657// Bits for subtarget features that participate in instruction matching.
1658enum SubtargetFeatureBits : uint8_t {
1659};
1660
1661PredicateBitset RISCVPreLegalizerCombinerImpl::
1662computeAvailableModuleFeatures(const RISCVSubtarget *Subtarget) const {
1663 PredicateBitset Features{};
1664 return Features;
1665}
1666
1667void RISCVPreLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1668 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const RISCVSubtarget *)&MF.getSubtarget(), &MF);
1669}
1670PredicateBitset RISCVPreLegalizerCombinerImpl::
1671computeAvailableFunctionFeatures(const RISCVSubtarget *Subtarget, const MachineFunction *MF) const {
1672 PredicateBitset Features{};
1673 return Features;
1674}
1675
1676// Feature bitsets.
1677enum {
1678 GIFBS_Invalid,
1679};
1680constexpr static PredicateBitset FeatureBitsets[] {
1681 {}, // GIFBS_Invalid
1682};
1683
1684// ComplexPattern predicates.
1685enum {
1686 GICP_Invalid,
1687};
1688// See constructor for table contents
1689
1690RISCVPreLegalizerCombinerImpl::ComplexMatcherMemFn
1691RISCVPreLegalizerCombinerImpl::ComplexPredicateFns[] = {
1692 nullptr, // GICP_Invalid
1693};
1694
1695enum {
1696 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1697 GICXXPred_MI_Predicate_GICombiner1,
1698 GICXXPred_MI_Predicate_GICombiner2,
1699 GICXXPred_MI_Predicate_GICombiner3,
1700 GICXXPred_MI_Predicate_GICombiner4,
1701 GICXXPred_MI_Predicate_GICombiner5,
1702 GICXXPred_MI_Predicate_GICombiner6,
1703 GICXXPred_MI_Predicate_GICombiner7,
1704 GICXXPred_MI_Predicate_GICombiner8,
1705 GICXXPred_MI_Predicate_GICombiner9,
1706 GICXXPred_MI_Predicate_GICombiner10,
1707 GICXXPred_MI_Predicate_GICombiner11,
1708 GICXXPred_MI_Predicate_GICombiner12,
1709 GICXXPred_MI_Predicate_GICombiner13,
1710 GICXXPred_MI_Predicate_GICombiner14,
1711 GICXXPred_MI_Predicate_GICombiner15,
1712};
1713bool RISCVPreLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1714 switch (PredicateID) {
1715 case GICXXPred_MI_Predicate_GICombiner0: {
1716 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg());
1717 }
1718 case GICXXPred_MI_Predicate_GICombiner1: {
1719 return isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1720 }
1721 case GICXXPred_MI_Predicate_GICombiner2: {
1722 return isGuaranteedNotToBeUndefOrPoison(State.MIs[0]->getOperand(1).getReg(), MRI);
1723 }
1724 case GICXXPred_MI_Predicate_GICombiner3: {
1725 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1726 }
1727 case GICXXPred_MI_Predicate_GICombiner4: {
1728 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1729 }
1730 case GICXXPred_MI_Predicate_GICombiner5: {
1731 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1732 }
1733 case GICXXPred_MI_Predicate_GICombiner6: {
1734 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1735 }
1736 case GICXXPred_MI_Predicate_GICombiner7: {
1737 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_EQ &&
1738 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1739 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1740 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1741 }
1742 case GICXXPred_MI_Predicate_GICombiner8: {
1743 return State.MIs[1]->getOperand(1).getPredicate() == CmpInst::ICMP_NE &&
1744 !MRI.getType(State.MIs[1]->getOperand(2).getReg()).getScalarType().isPointer() &&
1745 (MRI.getType(State.MIs[1]->getOperand(2).getReg()) ==
1746 MRI.getType(State.MIs[2]->getOperand(2).getReg()));
1747 }
1748 case GICXXPred_MI_Predicate_GICombiner9: {
1749 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1750 Helper.isLegalOrBeforeLegalizer(
1751 {TargetOpcode::G_SEXT_INREG, {MRI.getType(State.MIs[1]->getOperand(1).getReg())}});
1752 }
1753 case GICXXPred_MI_Predicate_GICombiner10: {
1754 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_LSHR,
1755 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1756 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1757 }
1758 case GICXXPred_MI_Predicate_GICombiner11: {
1759 return Helper.isLegalOrBeforeLegalizer({TargetOpcode::G_SHL,
1760 {MRI.getType(State.MIs[2]->getOperand(1).getReg()),
1761 MRI.getType(State.MIs[1]->getOperand(2).getReg())}});
1762 }
1763 case GICXXPred_MI_Predicate_GICombiner12: {
1764 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1765 }
1766 case GICXXPred_MI_Predicate_GICombiner13: {
1767 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1768 }
1769 case GICXXPred_MI_Predicate_GICombiner14: {
1770 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(2).getReg()) &&
1771 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1772 }
1773 case GICXXPred_MI_Predicate_GICombiner15: {
1774 return MRI.hasOneNonDBGUse(State.MIs[0]->getOperand(1).getReg()) &&
1775 MRI.hasOneNonDBGUse(State.MIs[1]->getOperand(1).getReg());
1776 }
1777 }
1778 llvm_unreachable("Unknown predicate");
1779 return false;
1780}
1781bool RISCVPreLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1782 llvm_unreachable("Unknown predicate");
1783 return false;
1784}
1785bool RISCVPreLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1786 llvm_unreachable("Unknown predicate");
1787 return false;
1788}
1789bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1790 llvm_unreachable("Unknown predicate");
1791 return false;
1792}
1793bool RISCVPreLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1794 llvm_unreachable("Unknown predicate");
1795 return false;
1796}
1797enum {
1798 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1799 GICXXPred_Simple_IsRule1Enabled,
1800 GICXXPred_Simple_IsRule2Enabled,
1801 GICXXPred_Simple_IsRule3Enabled,
1802 GICXXPred_Simple_IsRule4Enabled,
1803 GICXXPred_Simple_IsRule5Enabled,
1804 GICXXPred_Simple_IsRule6Enabled,
1805 GICXXPred_Simple_IsRule7Enabled,
1806 GICXXPred_Simple_IsRule8Enabled,
1807 GICXXPred_Simple_IsRule9Enabled,
1808 GICXXPred_Simple_IsRule10Enabled,
1809 GICXXPred_Simple_IsRule11Enabled,
1810 GICXXPred_Simple_IsRule12Enabled,
1811 GICXXPred_Simple_IsRule13Enabled,
1812 GICXXPred_Simple_IsRule14Enabled,
1813 GICXXPred_Simple_IsRule15Enabled,
1814 GICXXPred_Simple_IsRule16Enabled,
1815 GICXXPred_Simple_IsRule17Enabled,
1816 GICXXPred_Simple_IsRule18Enabled,
1817 GICXXPred_Simple_IsRule19Enabled,
1818 GICXXPred_Simple_IsRule20Enabled,
1819 GICXXPred_Simple_IsRule21Enabled,
1820 GICXXPred_Simple_IsRule22Enabled,
1821 GICXXPred_Simple_IsRule23Enabled,
1822 GICXXPred_Simple_IsRule24Enabled,
1823 GICXXPred_Simple_IsRule25Enabled,
1824 GICXXPred_Simple_IsRule26Enabled,
1825 GICXXPred_Simple_IsRule27Enabled,
1826 GICXXPred_Simple_IsRule28Enabled,
1827 GICXXPred_Simple_IsRule29Enabled,
1828 GICXXPred_Simple_IsRule30Enabled,
1829 GICXXPred_Simple_IsRule31Enabled,
1830 GICXXPred_Simple_IsRule32Enabled,
1831 GICXXPred_Simple_IsRule33Enabled,
1832 GICXXPred_Simple_IsRule34Enabled,
1833 GICXXPred_Simple_IsRule35Enabled,
1834 GICXXPred_Simple_IsRule36Enabled,
1835 GICXXPred_Simple_IsRule37Enabled,
1836 GICXXPred_Simple_IsRule38Enabled,
1837 GICXXPred_Simple_IsRule39Enabled,
1838 GICXXPred_Simple_IsRule40Enabled,
1839 GICXXPred_Simple_IsRule41Enabled,
1840 GICXXPred_Simple_IsRule42Enabled,
1841 GICXXPred_Simple_IsRule43Enabled,
1842 GICXXPred_Simple_IsRule44Enabled,
1843 GICXXPred_Simple_IsRule45Enabled,
1844 GICXXPred_Simple_IsRule46Enabled,
1845 GICXXPred_Simple_IsRule47Enabled,
1846 GICXXPred_Simple_IsRule48Enabled,
1847 GICXXPred_Simple_IsRule49Enabled,
1848 GICXXPred_Simple_IsRule50Enabled,
1849 GICXXPred_Simple_IsRule51Enabled,
1850 GICXXPred_Simple_IsRule52Enabled,
1851 GICXXPred_Simple_IsRule53Enabled,
1852 GICXXPred_Simple_IsRule54Enabled,
1853 GICXXPred_Simple_IsRule55Enabled,
1854 GICXXPred_Simple_IsRule56Enabled,
1855 GICXXPred_Simple_IsRule57Enabled,
1856 GICXXPred_Simple_IsRule58Enabled,
1857 GICXXPred_Simple_IsRule59Enabled,
1858 GICXXPred_Simple_IsRule60Enabled,
1859 GICXXPred_Simple_IsRule61Enabled,
1860 GICXXPred_Simple_IsRule62Enabled,
1861 GICXXPred_Simple_IsRule63Enabled,
1862 GICXXPred_Simple_IsRule64Enabled,
1863 GICXXPred_Simple_IsRule65Enabled,
1864 GICXXPred_Simple_IsRule66Enabled,
1865 GICXXPred_Simple_IsRule67Enabled,
1866 GICXXPred_Simple_IsRule68Enabled,
1867 GICXXPred_Simple_IsRule69Enabled,
1868 GICXXPred_Simple_IsRule70Enabled,
1869 GICXXPred_Simple_IsRule71Enabled,
1870 GICXXPred_Simple_IsRule72Enabled,
1871 GICXXPred_Simple_IsRule73Enabled,
1872 GICXXPred_Simple_IsRule74Enabled,
1873 GICXXPred_Simple_IsRule75Enabled,
1874 GICXXPred_Simple_IsRule76Enabled,
1875 GICXXPred_Simple_IsRule77Enabled,
1876 GICXXPred_Simple_IsRule78Enabled,
1877 GICXXPred_Simple_IsRule79Enabled,
1878 GICXXPred_Simple_IsRule80Enabled,
1879 GICXXPred_Simple_IsRule81Enabled,
1880 GICXXPred_Simple_IsRule82Enabled,
1881 GICXXPred_Simple_IsRule83Enabled,
1882 GICXXPred_Simple_IsRule84Enabled,
1883 GICXXPred_Simple_IsRule85Enabled,
1884 GICXXPred_Simple_IsRule86Enabled,
1885 GICXXPred_Simple_IsRule87Enabled,
1886 GICXXPred_Simple_IsRule88Enabled,
1887 GICXXPred_Simple_IsRule89Enabled,
1888 GICXXPred_Simple_IsRule90Enabled,
1889 GICXXPred_Simple_IsRule91Enabled,
1890 GICXXPred_Simple_IsRule92Enabled,
1891 GICXXPred_Simple_IsRule93Enabled,
1892 GICXXPred_Simple_IsRule94Enabled,
1893 GICXXPred_Simple_IsRule95Enabled,
1894 GICXXPred_Simple_IsRule96Enabled,
1895 GICXXPred_Simple_IsRule97Enabled,
1896 GICXXPred_Simple_IsRule98Enabled,
1897 GICXXPred_Simple_IsRule99Enabled,
1898 GICXXPred_Simple_IsRule100Enabled,
1899 GICXXPred_Simple_IsRule101Enabled,
1900 GICXXPred_Simple_IsRule102Enabled,
1901 GICXXPred_Simple_IsRule103Enabled,
1902 GICXXPred_Simple_IsRule104Enabled,
1903 GICXXPred_Simple_IsRule105Enabled,
1904 GICXXPred_Simple_IsRule106Enabled,
1905 GICXXPred_Simple_IsRule107Enabled,
1906 GICXXPred_Simple_IsRule108Enabled,
1907 GICXXPred_Simple_IsRule109Enabled,
1908 GICXXPred_Simple_IsRule110Enabled,
1909 GICXXPred_Simple_IsRule111Enabled,
1910 GICXXPred_Simple_IsRule112Enabled,
1911 GICXXPred_Simple_IsRule113Enabled,
1912 GICXXPred_Simple_IsRule114Enabled,
1913 GICXXPred_Simple_IsRule115Enabled,
1914 GICXXPred_Simple_IsRule116Enabled,
1915 GICXXPred_Simple_IsRule117Enabled,
1916 GICXXPred_Simple_IsRule118Enabled,
1917 GICXXPred_Simple_IsRule119Enabled,
1918 GICXXPred_Simple_IsRule120Enabled,
1919 GICXXPred_Simple_IsRule121Enabled,
1920 GICXXPred_Simple_IsRule122Enabled,
1921 GICXXPred_Simple_IsRule123Enabled,
1922 GICXXPred_Simple_IsRule124Enabled,
1923 GICXXPred_Simple_IsRule125Enabled,
1924 GICXXPred_Simple_IsRule126Enabled,
1925 GICXXPred_Simple_IsRule127Enabled,
1926 GICXXPred_Simple_IsRule128Enabled,
1927 GICXXPred_Simple_IsRule129Enabled,
1928 GICXXPred_Simple_IsRule130Enabled,
1929 GICXXPred_Simple_IsRule131Enabled,
1930 GICXXPred_Simple_IsRule132Enabled,
1931 GICXXPred_Simple_IsRule133Enabled,
1932 GICXXPred_Simple_IsRule134Enabled,
1933 GICXXPred_Simple_IsRule135Enabled,
1934 GICXXPred_Simple_IsRule136Enabled,
1935 GICXXPred_Simple_IsRule137Enabled,
1936 GICXXPred_Simple_IsRule138Enabled,
1937 GICXXPred_Simple_IsRule139Enabled,
1938 GICXXPred_Simple_IsRule140Enabled,
1939 GICXXPred_Simple_IsRule141Enabled,
1940 GICXXPred_Simple_IsRule142Enabled,
1941 GICXXPred_Simple_IsRule143Enabled,
1942 GICXXPred_Simple_IsRule144Enabled,
1943 GICXXPred_Simple_IsRule145Enabled,
1944 GICXXPred_Simple_IsRule146Enabled,
1945 GICXXPred_Simple_IsRule147Enabled,
1946 GICXXPred_Simple_IsRule148Enabled,
1947 GICXXPred_Simple_IsRule149Enabled,
1948 GICXXPred_Simple_IsRule150Enabled,
1949 GICXXPred_Simple_IsRule151Enabled,
1950 GICXXPred_Simple_IsRule152Enabled,
1951 GICXXPred_Simple_IsRule153Enabled,
1952 GICXXPred_Simple_IsRule154Enabled,
1953 GICXXPred_Simple_IsRule155Enabled,
1954 GICXXPred_Simple_IsRule156Enabled,
1955 GICXXPred_Simple_IsRule157Enabled,
1956 GICXXPred_Simple_IsRule158Enabled,
1957 GICXXPred_Simple_IsRule159Enabled,
1958 GICXXPred_Simple_IsRule160Enabled,
1959 GICXXPred_Simple_IsRule161Enabled,
1960 GICXXPred_Simple_IsRule162Enabled,
1961 GICXXPred_Simple_IsRule163Enabled,
1962 GICXXPred_Simple_IsRule164Enabled,
1963 GICXXPred_Simple_IsRule165Enabled,
1964 GICXXPred_Simple_IsRule166Enabled,
1965 GICXXPred_Simple_IsRule167Enabled,
1966 GICXXPred_Simple_IsRule168Enabled,
1967 GICXXPred_Simple_IsRule169Enabled,
1968 GICXXPred_Simple_IsRule170Enabled,
1969 GICXXPred_Simple_IsRule171Enabled,
1970 GICXXPred_Simple_IsRule172Enabled,
1971 GICXXPred_Simple_IsRule173Enabled,
1972 GICXXPred_Simple_IsRule174Enabled,
1973 GICXXPred_Simple_IsRule175Enabled,
1974 GICXXPred_Simple_IsRule176Enabled,
1975 GICXXPred_Simple_IsRule177Enabled,
1976 GICXXPred_Simple_IsRule178Enabled,
1977 GICXXPred_Simple_IsRule179Enabled,
1978 GICXXPred_Simple_IsRule180Enabled,
1979 GICXXPred_Simple_IsRule181Enabled,
1980 GICXXPred_Simple_IsRule182Enabled,
1981 GICXXPred_Simple_IsRule183Enabled,
1982 GICXXPred_Simple_IsRule184Enabled,
1983 GICXXPred_Simple_IsRule185Enabled,
1984 GICXXPred_Simple_IsRule186Enabled,
1985 GICXXPred_Simple_IsRule187Enabled,
1986 GICXXPred_Simple_IsRule188Enabled,
1987 GICXXPred_Simple_IsRule189Enabled,
1988 GICXXPred_Simple_IsRule190Enabled,
1989 GICXXPred_Simple_IsRule191Enabled,
1990 GICXXPred_Simple_IsRule192Enabled,
1991 GICXXPred_Simple_IsRule193Enabled,
1992 GICXXPred_Simple_IsRule194Enabled,
1993 GICXXPred_Simple_IsRule195Enabled,
1994 GICXXPred_Simple_IsRule196Enabled,
1995 GICXXPred_Simple_IsRule197Enabled,
1996 GICXXPred_Simple_IsRule198Enabled,
1997 GICXXPred_Simple_IsRule199Enabled,
1998 GICXXPred_Simple_IsRule200Enabled,
1999 GICXXPred_Simple_IsRule201Enabled,
2000 GICXXPred_Simple_IsRule202Enabled,
2001 GICXXPred_Simple_IsRule203Enabled,
2002 GICXXPred_Simple_IsRule204Enabled,
2003 GICXXPred_Simple_IsRule205Enabled,
2004 GICXXPred_Simple_IsRule206Enabled,
2005 GICXXPred_Simple_IsRule207Enabled,
2006 GICXXPred_Simple_IsRule208Enabled,
2007 GICXXPred_Simple_IsRule209Enabled,
2008 GICXXPred_Simple_IsRule210Enabled,
2009 GICXXPred_Simple_IsRule211Enabled,
2010 GICXXPred_Simple_IsRule212Enabled,
2011 GICXXPred_Simple_IsRule213Enabled,
2012 GICXXPred_Simple_IsRule214Enabled,
2013 GICXXPred_Simple_IsRule215Enabled,
2014 GICXXPred_Simple_IsRule216Enabled,
2015 GICXXPred_Simple_IsRule217Enabled,
2016 GICXXPred_Simple_IsRule218Enabled,
2017 GICXXPred_Simple_IsRule219Enabled,
2018 GICXXPred_Simple_IsRule220Enabled,
2019 GICXXPred_Simple_IsRule221Enabled,
2020 GICXXPred_Simple_IsRule222Enabled,
2021 GICXXPred_Simple_IsRule223Enabled,
2022 GICXXPred_Simple_IsRule224Enabled,
2023 GICXXPred_Simple_IsRule225Enabled,
2024 GICXXPred_Simple_IsRule226Enabled,
2025 GICXXPred_Simple_IsRule227Enabled,
2026 GICXXPred_Simple_IsRule228Enabled,
2027 GICXXPred_Simple_IsRule229Enabled,
2028 GICXXPred_Simple_IsRule230Enabled,
2029 GICXXPred_Simple_IsRule231Enabled,
2030 GICXXPred_Simple_IsRule232Enabled,
2031 GICXXPred_Simple_IsRule233Enabled,
2032 GICXXPred_Simple_IsRule234Enabled,
2033 GICXXPred_Simple_IsRule235Enabled,
2034 GICXXPred_Simple_IsRule236Enabled,
2035 GICXXPred_Simple_IsRule237Enabled,
2036 GICXXPred_Simple_IsRule238Enabled,
2037 GICXXPred_Simple_IsRule239Enabled,
2038 GICXXPred_Simple_IsRule240Enabled,
2039 GICXXPred_Simple_IsRule241Enabled,
2040};
2041
2042bool RISCVPreLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
2043 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
2044}
2045// Custom renderers.
2046enum {
2047 GICR_Invalid,
2048};
2049RISCVPreLegalizerCombinerImpl::CustomRendererFn
2050RISCVPreLegalizerCombinerImpl::CustomRenderers[] = {
2051 nullptr, // GICR_Invalid
2052};
2053
2054bool RISCVPreLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
2055 const TargetSubtargetInfo &ST = MF.getSubtarget();
2056 const PredicateBitset AvailableFeatures = getAvailableFeatures();
2057 B.setInstrAndDebugLoc(I);
2058 State.MIs.clear();
2059 State.MIs.push_back(&I);
2060 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), *ST.getInstrInfo(), MRI, *MRI.getTargetRegisterInfo(), *ST.getRegBankInfo(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
2061 return true;
2062 }
2063
2064 return false;
2065}
2066
2067enum {
2068 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
2069 GICXXCustomAction_GICombiner1,
2070 GICXXCustomAction_GICombiner2,
2071 GICXXCustomAction_GICombiner3,
2072 GICXXCustomAction_GICombiner4,
2073 GICXXCustomAction_GICombiner5,
2074 GICXXCustomAction_GICombiner6,
2075 GICXXCustomAction_GICombiner7,
2076 GICXXCustomAction_GICombiner8,
2077 GICXXCustomAction_GICombiner9,
2078 GICXXCustomAction_GICombiner10,
2079 GICXXCustomAction_GICombiner11,
2080 GICXXCustomAction_GICombiner12,
2081 GICXXCustomAction_GICombiner13,
2082 GICXXCustomAction_GICombiner14,
2083 GICXXCustomAction_GICombiner15,
2084 GICXXCustomAction_GICombiner16,
2085 GICXXCustomAction_GICombiner17,
2086 GICXXCustomAction_GICombiner18,
2087 GICXXCustomAction_GICombiner19,
2088 GICXXCustomAction_GICombiner20,
2089 GICXXCustomAction_GICombiner21,
2090 GICXXCustomAction_GICombiner22,
2091 GICXXCustomAction_GICombiner23,
2092 GICXXCustomAction_GICombiner24,
2093 GICXXCustomAction_GICombiner25,
2094 GICXXCustomAction_GICombiner26,
2095 GICXXCustomAction_GICombiner27,
2096 GICXXCustomAction_GICombiner28,
2097 GICXXCustomAction_GICombiner29,
2098 GICXXCustomAction_GICombiner30,
2099 GICXXCustomAction_GICombiner31,
2100 GICXXCustomAction_GICombiner32,
2101 GICXXCustomAction_GICombiner33,
2102 GICXXCustomAction_GICombiner34,
2103 GICXXCustomAction_GICombiner35,
2104 GICXXCustomAction_GICombiner36,
2105 GICXXCustomAction_GICombiner37,
2106 GICXXCustomAction_GICombiner38,
2107 GICXXCustomAction_GICombiner39,
2108 GICXXCustomAction_GICombiner40,
2109 GICXXCustomAction_GICombiner41,
2110 GICXXCustomAction_GICombiner42,
2111 GICXXCustomAction_GICombiner43,
2112 GICXXCustomAction_GICombiner44,
2113 GICXXCustomAction_GICombiner45,
2114 GICXXCustomAction_GICombiner46,
2115 GICXXCustomAction_GICombiner47,
2116 GICXXCustomAction_GICombiner48,
2117 GICXXCustomAction_GICombiner49,
2118 GICXXCustomAction_GICombiner50,
2119 GICXXCustomAction_GICombiner51,
2120 GICXXCustomAction_GICombiner52,
2121 GICXXCustomAction_GICombiner53,
2122 GICXXCustomAction_GICombiner54,
2123 GICXXCustomAction_GICombiner55,
2124 GICXXCustomAction_GICombiner56,
2125 GICXXCustomAction_GICombiner57,
2126 GICXXCustomAction_GICombiner58,
2127 GICXXCustomAction_GICombiner59,
2128 GICXXCustomAction_GICombiner60,
2129 GICXXCustomAction_GICombiner61,
2130 GICXXCustomAction_GICombiner62,
2131 GICXXCustomAction_GICombiner63,
2132 GICXXCustomAction_GICombiner64,
2133 GICXXCustomAction_GICombiner65,
2134 GICXXCustomAction_GICombiner66,
2135 GICXXCustomAction_GICombiner67,
2136 GICXXCustomAction_GICombiner68,
2137 GICXXCustomAction_GICombiner69,
2138 GICXXCustomAction_GICombiner70,
2139 GICXXCustomAction_GICombiner71,
2140 GICXXCustomAction_GICombiner72,
2141 GICXXCustomAction_GICombiner73,
2142 GICXXCustomAction_GICombiner74,
2143 GICXXCustomAction_GICombiner75,
2144 GICXXCustomAction_GICombiner76,
2145 GICXXCustomAction_GICombiner77,
2146 GICXXCustomAction_GICombiner78,
2147 GICXXCustomAction_GICombiner79,
2148 GICXXCustomAction_GICombiner80,
2149 GICXXCustomAction_GICombiner81,
2150 GICXXCustomAction_GICombiner82,
2151 GICXXCustomAction_GICombiner83,
2152 GICXXCustomAction_GICombiner84,
2153 GICXXCustomAction_GICombiner85,
2154 GICXXCustomAction_GICombiner86,
2155 GICXXCustomAction_GICombiner87,
2156 GICXXCustomAction_GICombiner88,
2157 GICXXCustomAction_GICombiner89,
2158 GICXXCustomAction_GICombiner90,
2159 GICXXCustomAction_GICombiner91,
2160 GICXXCustomAction_GICombiner92,
2161 GICXXCustomAction_GICombiner93,
2162 GICXXCustomAction_GICombiner94,
2163 GICXXCustomAction_GICombiner95,
2164 GICXXCustomAction_GICombiner96,
2165 GICXXCustomAction_GICombiner97,
2166 GICXXCustomAction_GICombiner98,
2167 GICXXCustomAction_GICombiner99,
2168 GICXXCustomAction_GICombiner100,
2169 GICXXCustomAction_GICombiner101,
2170 GICXXCustomAction_GICombiner102,
2171 GICXXCustomAction_GICombiner103,
2172 GICXXCustomAction_GICombiner104,
2173 GICXXCustomAction_GICombiner105,
2174 GICXXCustomAction_GICombiner106,
2175 GICXXCustomAction_GICombiner107,
2176 GICXXCustomAction_GICombiner108,
2177 GICXXCustomAction_GICombiner109,
2178 GICXXCustomAction_GICombiner110,
2179 GICXXCustomAction_GICombiner111,
2180 GICXXCustomAction_GICombiner112,
2181 GICXXCustomAction_GICombiner113,
2182 GICXXCustomAction_GICombiner114,
2183 GICXXCustomAction_GICombiner115,
2184 GICXXCustomAction_GICombiner116,
2185 GICXXCustomAction_GICombiner117,
2186 GICXXCustomAction_GICombiner118,
2187 GICXXCustomAction_GICombiner119,
2188 GICXXCustomAction_GICombiner120,
2189 GICXXCustomAction_GICombiner121,
2190 GICXXCustomAction_GICombiner122,
2191 GICXXCustomAction_GICombiner123,
2192 GICXXCustomAction_GICombiner124,
2193 GICXXCustomAction_GICombiner125,
2194 GICXXCustomAction_GICombiner126,
2195 GICXXCustomAction_GICombiner127,
2196 GICXXCustomAction_GICombiner128,
2197 GICXXCustomAction_GICombiner129,
2198 GICXXCustomAction_GICombiner130,
2199 GICXXCustomAction_GICombiner131,
2200 GICXXCustomAction_GICombiner132,
2201 GICXXCustomAction_GICombiner133,
2202 GICXXCustomAction_GICombiner134,
2203 GICXXCustomAction_GICombiner135,
2204 GICXXCustomAction_GICombiner136,
2205 GICXXCustomAction_GICombiner137,
2206 GICXXCustomAction_GICombiner138,
2207 GICXXCustomAction_GICombiner139,
2208 GICXXCustomAction_GICombiner140,
2209 GICXXCustomAction_GICombiner141,
2210 GICXXCustomAction_GICombiner142,
2211 GICXXCustomAction_GICombiner143,
2212 GICXXCustomAction_GICombiner144,
2213 GICXXCustomAction_GICombiner145,
2214 GICXXCustomAction_GICombiner146,
2215 GICXXCustomAction_GICombiner147,
2216 GICXXCustomAction_GICombiner148,
2217 GICXXCustomAction_GICombiner149,
2218 GICXXCustomAction_GICombiner150,
2219 GICXXCustomAction_GICombiner151,
2220 GICXXCustomAction_GICombiner152,
2221 GICXXCustomAction_GICombiner153,
2222 GICXXCustomAction_GICombiner154,
2223 GICXXCustomAction_GICombiner155,
2224};
2225bool RISCVPreLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
2226 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2227 switch(ApplyID) {
2228 case GICXXCustomAction_GICombiner0:{
2229 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2230 // Match Patterns
2231 if(![&](){return Helper.matchFoldAPlusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2232 return false;
2233 }
2234 // Apply Patterns
2235 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2236 return true;
2237 }
2238 case GICXXCustomAction_GICombiner1:{
2239 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2240 // Match Patterns
2241 if(![&](){return Helper.matchFoldC2MinusAPlusC1(*State.MIs[0], GIMatchData_matchinfo);}()) {
2242 return false;
2243 }
2244 // Apply Patterns
2245 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2246 return true;
2247 }
2248 case GICXXCustomAction_GICombiner2:{
2249 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2250 // Match Patterns
2251 if(![&](){return Helper.matchFoldAMinusC1MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2252 return false;
2253 }
2254 // Apply Patterns
2255 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2256 return true;
2257 }
2258 case GICXXCustomAction_GICombiner3:{
2259 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2260 // Match Patterns
2261 if(![&](){return Helper.matchFoldC1Minus2MinusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2262 return false;
2263 }
2264 // Apply Patterns
2265 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2266 return true;
2267 }
2268 case GICXXCustomAction_GICombiner4:{
2269 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2270 // Match Patterns
2271 if(![&](){return Helper.matchFoldAMinusC1PlusC2(*State.MIs[0], GIMatchData_matchinfo);}()) {
2272 return false;
2273 }
2274 // Apply Patterns
2275 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2276 return true;
2277 }
2278 case GICXXCustomAction_GICombiner5:{
2279 // Match Patterns
2280 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
2281 return false;
2282 }
2283 // Apply Patterns
2284 Helper.applyCombineCopy(*State.MIs[0]);
2285 return true;
2286 }
2287 case GICXXCustomAction_GICombiner6:{
2288 unsigned GIMatchData_matchinfo;
2289 // Match Patterns
2290 if(![&](){return Helper.matchCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);}()) {
2291 return false;
2292 }
2293 // Apply Patterns
2294 Helper.applyCombineMulToShl(*State.MIs[0], GIMatchData_matchinfo);
2295 return true;
2296 }
2297 case GICXXCustomAction_GICombiner7:{
2298 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2299 // Match Patterns
2300 if(![&](){return Helper.matchCombineSubToAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2301 return false;
2302 }
2303 // Apply Patterns
2304 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2305 return true;
2306 }
2307 case GICXXCustomAction_GICombiner8:{
2308 std::pair<Register, bool> GIMatchData_info;
2309 // Match Patterns
2310 if(![&](){return Helper.matchCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);}()) {
2311 return false;
2312 }
2313 // Apply Patterns
2314 Helper.applyCombineAddP2IToPtrAdd(*State.MIs[0], GIMatchData_info);
2315 return true;
2316 }
2317 case GICXXCustomAction_GICombiner9:{
2318 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2319 // Match Patterns
2320 if(![&](){return Helper.matchExtractVectorElement(*State.MIs[0], GIMatchData_matchinfo);}()) {
2321 return false;
2322 }
2323 // Apply Patterns
2324 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2325 return true;
2326 }
2327 case GICXXCustomAction_GICombiner10:{
2328 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2329 // Match Patterns
2330 if(![&](){return Helper.matchInsertVectorElementOOB(*State.MIs[0], GIMatchData_matchinfo);}()) {
2331 return false;
2332 }
2333 // Apply Patterns
2334 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2335 return true;
2336 }
2337 case GICXXCustomAction_GICombiner11:{
2338 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2339 // Match Patterns
2340 if(![&](){return Helper.matchExtractVectorElementWithDifferentIndices(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2341 return false;
2342 }
2343 // Apply Patterns
2344 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2345 return true;
2346 }
2347 case GICXXCustomAction_GICombiner12:{
2348 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2349 // Match Patterns
2350 if(![&](){return Helper.matchExtractVectorElementWithBuildVector(*State.MIs[0], *State.MIs[1],
2351 GIMatchData_matchinfo);}()) {
2352 return false;
2353 }
2354 // Apply Patterns
2355 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2356 return true;
2357 }
2358 case GICXXCustomAction_GICombiner13:{
2359 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2360 // Match Patterns
2361 if(![&](){return Helper.matchExtractVectorElementWithBuildVectorTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2362 return false;
2363 }
2364 // Apply Patterns
2365 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2366 return true;
2367 }
2368 case GICXXCustomAction_GICombiner14:{
2369 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2370 // Match Patterns
2371 if(![&](){return Helper.matchExtractVectorElementWithShuffleVector(*State.MIs[0], *State.MIs[1],
2372 GIMatchData_matchinfo);}()) {
2373 return false;
2374 }
2375 // Apply Patterns
2376 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2377 return true;
2378 }
2379 case GICXXCustomAction_GICombiner15:{
2380 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2381 // Match Patterns
2382 if(![&](){return Helper.matchAddOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2383 return false;
2384 }
2385 // Apply Patterns
2386 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2387 return true;
2388 }
2389 case GICXXCustomAction_GICombiner16:{
2390 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2391 // Match Patterns
2392 if(![&](){return Helper.matchMulOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2393 return false;
2394 }
2395 // Apply Patterns
2396 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2397 return true;
2398 }
2399 case GICXXCustomAction_GICombiner17:{
2400 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2401 // Match Patterns
2402 if(![&](){return Helper.matchShlOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2403 return false;
2404 }
2405 // Apply Patterns
2406 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2407 return true;
2408 }
2409 case GICXXCustomAction_GICombiner18:{
2410 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2411 // Match Patterns
2412 if(![&](){return Helper.matchSubOfVScale(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
2413 return false;
2414 }
2415 // Apply Patterns
2416 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
2417 return true;
2418 }
2419 case GICXXCustomAction_GICombiner19:{
2420 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2421 // Match Patterns
2422 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2423 return false;
2424 }
2425 // Apply Patterns
2426 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2427 return true;
2428 }
2429 case GICXXCustomAction_GICombiner20:{
2430 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2431 // Match Patterns
2432 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2433 return false;
2434 }
2435 // Apply Patterns
2436 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2437 return true;
2438 }
2439 case GICXXCustomAction_GICombiner21:{
2440 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2441 // Match Patterns
2442 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2443 return false;
2444 }
2445 // Apply Patterns
2446 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2447 return true;
2448 }
2449 case GICXXCustomAction_GICombiner22:{
2450 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2451 // Match Patterns
2452 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2453 return false;
2454 }
2455 // Apply Patterns
2456 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2457 return true;
2458 }
2459 case GICXXCustomAction_GICombiner23:{
2460 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2461 // Match Patterns
2462 if(![&](){return Helper.matchCastOfSelect(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2463 return false;
2464 }
2465 // Apply Patterns
2466 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2467 return true;
2468 }
2469 case GICXXCustomAction_GICombiner24:{
2470 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2471 // Match Patterns
2472 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2473 return false;
2474 }
2475 // Apply Patterns
2476 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2477 return true;
2478 }
2479 case GICXXCustomAction_GICombiner25:{
2480 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2481 // Match Patterns
2482 if(![&](){return Helper.matchNarrowBinop(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
2483 return false;
2484 }
2485 // Apply Patterns
2486 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2487 return true;
2488 }
2489 case GICXXCustomAction_GICombiner26:{
2490 APInt GIMatchData_matchinfo;
2491 // Match Patterns
2492 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
2493 return false;
2494 }
2495 // Apply Patterns
2496 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2497 return true;
2498 }
2499 case GICXXCustomAction_GICombiner27:{
2500 SmallVector<Register> GIMatchData_info;
2501 // Match Patterns
2502 if(![&](){return Helper.matchCombineInsertVecElts(*State.MIs[0], GIMatchData_info);}()) {
2503 return false;
2504 }
2505 // Apply Patterns
2506 Helper.applyCombineInsertVecElts(*State.MIs[0], GIMatchData_info);
2507 return true;
2508 }
2509 case GICXXCustomAction_GICombiner28:{
2510 Register GIMatchData_matchinfo;
2511 // Match Patterns
2512 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2513 return false;
2514 }
2515 // Apply Patterns
2516 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2517 return true;
2518 }
2519 case GICXXCustomAction_GICombiner29:{
2520 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2521 // Match Patterns
2522 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2523 return false;
2524 }
2525 // Apply Patterns
2526 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2527 return true;
2528 }
2529 case GICXXCustomAction_GICombiner30:{
2530 PreferredTuple GIMatchData_matchinfo;
2531 // Match Patterns
2532 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
2533 return false;
2534 }
2535 // Apply Patterns
2536 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
2537 return true;
2538 }
2539 case GICXXCustomAction_GICombiner31:{
2540 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2541 // Match Patterns
2542 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
2543 return false;
2544 }
2545 // Apply Patterns
2546 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2547 return true;
2548 }
2549 case GICXXCustomAction_GICombiner32:{
2550 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2551 // Match Patterns
2552 if(![&](){return Helper.matchCombineExtractedVectorLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2553 return false;
2554 }
2555 // Apply Patterns
2556 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2557 return true;
2558 }
2559 case GICXXCustomAction_GICombiner33:{
2560 // Match Patterns
2561 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2562 return false;
2563 }
2564 // Apply Patterns
2565 Helper.replaceInstWithFConstant(*State.MIs[0], 0.0);
2566 return true;
2567 }
2568 case GICXXCustomAction_GICombiner34:{
2569 // Match Patterns
2570 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2571 return false;
2572 }
2573 // Apply Patterns
2574 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2575 return true;
2576 }
2577 case GICXXCustomAction_GICombiner35:{
2578 // Match Patterns
2579 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2580 return false;
2581 }
2582 // Apply Patterns
2583 Helper.replaceInstWithConstant(*State.MIs[0], -1);
2584 return true;
2585 }
2586 case GICXXCustomAction_GICombiner36:{
2587 // Match Patterns
2588 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 1);}()) {
2589 return false;
2590 }
2591 // Apply Patterns
2592 Helper.replaceInstWithConstant(*State.MIs[0], 0);
2593 return true;
2594 }
2595 case GICXXCustomAction_GICombiner37:{
2596 // Match Patterns
2597 if(![&](){return Helper.matchOperandIsUndef(*State.MIs[0], 2);}()) {
2598 return false;
2599 }
2600 // Apply Patterns
2601 Helper.replaceInstWithUndef(*State.MIs[0]);
2602 return true;
2603 }
2604 case GICXXCustomAction_GICombiner38:{
2605 // Apply Patterns
2606 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2607 return true;
2608 }
2609 case GICXXCustomAction_GICombiner39:{
2610 // Match Patterns
2611 if(![&](){return Helper.matchAnyExplicitUseIsUndef(*State.MIs[0]);}()) {
2612 return false;
2613 }
2614 // Apply Patterns
2615 Helper.replaceInstWithUndef(*State.MIs[0]);
2616 return true;
2617 }
2618 case GICXXCustomAction_GICombiner40:{
2619 // Match Patterns
2620 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2621 return false;
2622 }
2623 // Apply Patterns
2624 Helper.replaceInstWithUndef(*State.MIs[0]);
2625 return true;
2626 }
2627 case GICXXCustomAction_GICombiner41:{
2628 // Match Patterns
2629 if(![&](){return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);}()) {
2630 return false;
2631 }
2632 // Apply Patterns
2633 Helper.replaceInstWithUndef(*State.MIs[0]);
2634 return true;
2635 }
2636 case GICXXCustomAction_GICombiner42:{
2637 // Match Patterns
2638 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2639 return false;
2640 }
2641 // Apply Patterns
2642 Helper.eraseInst(*State.MIs[0]);
2643 return true;
2644 }
2645 case GICXXCustomAction_GICombiner43:{
2646 // Match Patterns
2647 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2648 return false;
2649 }
2650 // Apply Patterns
2651 Helper.replaceInstWithUndef(*State.MIs[0]);
2652 return true;
2653 }
2654 case GICXXCustomAction_GICombiner44:{
2655 // Match Patterns
2656 if(![&](){return Helper.matchSelectSameVal(*State.MIs[0]);}()) {
2657 return false;
2658 }
2659 // Apply Patterns
2660 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 2);
2661 return true;
2662 }
2663 case GICXXCustomAction_GICombiner45:{
2664 Register GIMatchData_info;
2665 // Match Patterns
2666 if(![&](){return Helper.matchCombineI2PToP2I(*State.MIs[0], GIMatchData_info);}()) {
2667 return false;
2668 }
2669 // Apply Patterns
2670 Helper.applyCombineI2PToP2I(*State.MIs[0], GIMatchData_info);
2671 return true;
2672 }
2673 case GICXXCustomAction_GICombiner46:{
2674 Register GIMatchData_info;
2675 // Match Patterns
2676 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
2677 return false;
2678 }
2679 // Apply Patterns
2680 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
2681 return true;
2682 }
2683 case GICXXCustomAction_GICombiner47:{
2684 Register GIMatchData_matchinfo;
2685 // Match Patterns
2686 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2687 return false;
2688 }
2689 // Apply Patterns
2690 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2691 return true;
2692 }
2693 case GICXXCustomAction_GICombiner48:{
2694 Register GIMatchData_matchinfo;
2695 // Match Patterns
2696 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2697 return false;
2698 }
2699 // Apply Patterns
2700 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2701 return true;
2702 }
2703 case GICXXCustomAction_GICombiner49:{
2704 Register GIMatchData_matchinfo;
2705 // Match Patterns
2706 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2707 return false;
2708 }
2709 // Apply Patterns
2710 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2711 return true;
2712 }
2713 case GICXXCustomAction_GICombiner50:{
2714 Register GIMatchData_matchinfo;
2715 // Match Patterns
2716 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2717 return false;
2718 }
2719 // Apply Patterns
2720 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2721 return true;
2722 }
2723 case GICXXCustomAction_GICombiner51:{
2724 // Match Patterns
2725 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2726 return false;
2727 }
2728 // Apply Patterns
2729 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2730 return true;
2731 }
2732 case GICXXCustomAction_GICombiner52:{
2733 MachineInstr* GIMatchData_matchinfo;
2734 // Match Patterns
2735 if(![&](){return Helper.matchExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);}()) {
2736 return false;
2737 }
2738 // Apply Patterns
2739 Helper.applyExtendThroughPhis(*State.MIs[0], GIMatchData_matchinfo);
2740 return true;
2741 }
2742 case GICXXCustomAction_GICombiner53:{
2743 std::tuple<Register, Register> GIMatchData_info;
2744 // Match Patterns
2745 if(![&](){return Helper.matchSimplifyAddToSub(*State.MIs[0], GIMatchData_info);}()) {
2746 return false;
2747 }
2748 // Apply Patterns
2749 Helper.applySimplifyAddToSub(*State.MIs[0], GIMatchData_info);
2750 return true;
2751 }
2752 case GICXXCustomAction_GICombiner54:{
2753 InstructionStepsMatchInfo GIMatchData_info;
2754 // Match Patterns
2755 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
2756 return false;
2757 }
2758 // Apply Patterns
2759 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
2760 return true;
2761 }
2762 case GICXXCustomAction_GICombiner55:{
2763 std::optional<int64_t> GIMatchData_matchinfo;
2764 // Match Patterns
2765 if(![&](){return Helper.matchShiftsTooBig(*State.MIs[0], GIMatchData_matchinfo);}()) {
2766 return false;
2767 }
2768 // Apply Patterns
2769 if (GIMatchData_matchinfo) {
2770 Helper.replaceInstWithConstant(*State.MIs[0], *GIMatchData_matchinfo);
2771 } else {
2772 Helper.replaceInstWithUndef(*State.MIs[0]);
2773 }
2774 return true;
2775 }
2776 case GICXXCustomAction_GICombiner56:{
2777 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2778 // Match Patterns
2779 if(![&](){return Helper.matchReassocPtrAdd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2780 return false;
2781 }
2782 // Apply Patterns
2783 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2784 return true;
2785 }
2786 case GICXXCustomAction_GICombiner57:{
2787 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2788 // Match Patterns
2789 if(![&](){return Helper.matchReassocCommBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2790 return false;
2791 }
2792 // Apply Patterns
2793 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2794 return true;
2795 }
2796 case GICXXCustomAction_GICombiner58:{
2797 PtrAddChain GIMatchData_matchinfo;
2798 // Match Patterns
2799 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2800 return false;
2801 }
2802 // Apply Patterns
2803 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2804 return true;
2805 }
2806 case GICXXCustomAction_GICombiner59:{
2807 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2808 // Match Patterns
2809 if(![&](){return Helper.matchCanonicalizeICmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2810 return false;
2811 }
2812 // Apply Patterns
2813 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2814 return true;
2815 }
2816 case GICXXCustomAction_GICombiner60:{
2817 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2818 // Match Patterns
2819 if(![&](){return Helper.matchCanonicalizeFCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2820 return false;
2821 }
2822 // Apply Patterns
2823 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2824 return true;
2825 }
2826 case GICXXCustomAction_GICombiner61:{
2827 int64_t GIMatchData_matchinfo;
2828 // Match Patterns
2829 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
2830 return false;
2831 }
2832 // Apply Patterns
2833 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
2834 return true;
2835 }
2836 case GICXXCustomAction_GICombiner62:{
2837 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2838 // Match Patterns
2839 if(![&](){return Helper.matchICmpToLHSKnownBits(*State.MIs[0], GIMatchData_info);}()) {
2840 return false;
2841 }
2842 // Apply Patterns
2843 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2844 return true;
2845 }
2846 case GICXXCustomAction_GICombiner63:{
2847 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2848 // Match Patterns
2849 if(![&](){return Helper.matchRedundantBinOpInEquality(*State.MIs[0], GIMatchData_info);}()) {
2850 return false;
2851 }
2852 // Apply Patterns
2853 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2854 return true;
2855 }
2856 case GICXXCustomAction_GICombiner64:{
2857 std::tuple<Register, int64_t> GIMatchData_info;
2858 // Match Patterns
2859 if(![&](){return Helper.matchAshrShlToSextInreg(*State.MIs[0], GIMatchData_info);}()) {
2860 return false;
2861 }
2862 // Apply Patterns
2863 Helper.applyAshShlToSextInreg(*State.MIs[0], GIMatchData_info);
2864 return true;
2865 }
2866 case GICXXCustomAction_GICombiner65:{
2867 std::tuple<Register, unsigned> GIMatchData_matchinfo;
2868 // Match Patterns
2869 if(![&](){return Helper.matchSextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);}()) {
2870 return false;
2871 }
2872 // Apply Patterns
2873 Helper.applySextInRegOfLoad(*State.MIs[0], GIMatchData_matchinfo);
2874 return true;
2875 }
2876 case GICXXCustomAction_GICombiner66:{
2877 RegisterImmPair GIMatchData_matchinfo;
2878 // Match Patterns
2879 if(![&](){return Helper.matchCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);}()) {
2880 return false;
2881 }
2882 // Apply Patterns
2883 Helper.applyCombineShlOfExtend(*State.MIs[0], GIMatchData_matchinfo);
2884 return true;
2885 }
2886 case GICXXCustomAction_GICombiner67:{
2887 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2888 // Match Patterns
2889 if(![&](){return Helper.matchNarrowBinopFeedingAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2890 return false;
2891 }
2892 // Apply Patterns
2893 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
2894 return true;
2895 }
2896 case GICXXCustomAction_GICombiner68:{
2897 unsigned GIMatchData_matchinfo;
2898 // Match Patterns
2899 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
2900 return false;
2901 }
2902 // Apply Patterns
2903 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
2904 return true;
2905 }
2906 case GICXXCustomAction_GICombiner69:{
2907 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2908 // Match Patterns
2909 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
2910 return false;
2911 }
2912 // Apply Patterns
2913 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
2914 return true;
2915 }
2916 case GICXXCustomAction_GICombiner70:{
2917 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2918 // Match Patterns
2919 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
2920 return false;
2921 }
2922 // Apply Patterns
2923 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2924 return true;
2925 }
2926 case GICXXCustomAction_GICombiner71:{
2927 Register GIMatchData_matchinfo;
2928 // Match Patterns
2929 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
2930 return false;
2931 }
2932 // Apply Patterns
2933 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2934 return true;
2935 }
2936 case GICXXCustomAction_GICombiner72:{
2937 // Match Patterns
2938 if(![&](){return Helper.matchRedundantSExtInReg(*State.MIs[0]);}()) {
2939 return false;
2940 }
2941 // Apply Patterns
2942 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], 1);
2943 return true;
2944 }
2945 case GICXXCustomAction_GICombiner73:{
2946 Register GIMatchData_matchinfo;
2947 // Match Patterns
2948 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
2949 return false;
2950 }
2951 // Apply Patterns
2952 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2953 return true;
2954 }
2955 case GICXXCustomAction_GICombiner74:{
2956 // Match Patterns
2957 if(![&](){return Helper.matchOperandIsKnownToBeAPowerOfTwo(*State.MIs[0], 2);}()) {
2958 return false;
2959 }
2960 // Apply Patterns
2961 Helper.applySimplifyURemByPow2(*State.MIs[0]);
2962 return true;
2963 }
2964 case GICXXCustomAction_GICombiner75:{
2965 Register GIMatchData_matchinfo;
2966 // Match Patterns
2967 if(![&](){return Helper.matchCombineZextTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
2968 return false;
2969 }
2970 // Apply Patterns
2971 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2972 return true;
2973 }
2974 case GICXXCustomAction_GICombiner76:{
2975 // Match Patterns
2976 if(![&](){unsigned BitWidth = MRI.getType(State.MIs[0]->getOperand(1).getReg()).getScalarSizeInBits();
2977 return Helper.getValueTracking()->maskedValueIsZero(State.MIs[0]->getOperand(1).getReg(),
2978 APInt::getOneBitSet(BitWidth, State.MIs[0]->getOperand(2).getImm() - 1));}()) {
2979 return false;
2980 }
2981 // Apply Patterns
2982 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
2983 Helper.getBuilder().buildZExtInReg(State.MIs[0]->getOperand(0), State.MIs[0]->getOperand(1), State.MIs[0]->getOperand(2).getImm());
2984 State.MIs[0]->eraseFromParent();
2985 return true;
2986 }
2987 case GICXXCustomAction_GICombiner77:{
2988 std::pair<MachineInstr*, LLT> GIMatchData_matchinfo;
2989 // Match Patterns
2990 if(![&](){return Helper.matchCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
2991 return false;
2992 }
2993 // Apply Patterns
2994 Helper.applyCombineTruncOfShift(*State.MIs[0], GIMatchData_matchinfo);
2995 return true;
2996 }
2997 case GICXXCustomAction_GICombiner78:{
2998 SmallVector<Register> GIMatchData_info;
2999 // Match Patterns
3000 if(![&](){return Helper.matchNotCmp(*State.MIs[0], GIMatchData_info);}()) {
3001 return false;
3002 }
3003 // Apply Patterns
3004 Helper.applyNotCmp(*State.MIs[0], GIMatchData_info);
3005 return true;
3006 }
3007 case GICXXCustomAction_GICombiner79:{
3008 MachineInstr * GIMatchData_matchinfo;
3009 // Match Patterns
3010 if(![&](){return Helper.matchOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);}()) {
3011 return false;
3012 }
3013 // Apply Patterns
3014 Helper.applyOptBrCondByInvertingCond(*State.MIs[0], GIMatchData_matchinfo);
3015 return true;
3016 }
3017 case GICXXCustomAction_GICombiner80:{
3018 // Apply Patterns
3019 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
3020 return true;
3021 }
3022 case GICXXCustomAction_GICombiner81:{
3023 // Apply Patterns
3024 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
3025 return true;
3026 }
3027 case GICXXCustomAction_GICombiner82:{
3028 APInt GIMatchData_info;
3029 // Match Patterns
3030 if(![&](){return Helper.matchCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);}()) {
3031 return false;
3032 }
3033 // Apply Patterns
3034 Helper.applyCombineConstPtrAddToI2P(*State.MIs[0], GIMatchData_info);
3035 return true;
3036 }
3037 case GICXXCustomAction_GICombiner83:{
3038 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3039 // Match Patterns
3040 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
3041 return false;
3042 }
3043 // Apply Patterns
3044 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3045 return true;
3046 }
3047 case GICXXCustomAction_GICombiner84:{
3048 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3049 // Match Patterns
3050 if(![&](){return Helper.matchMulOBy2(*State.MIs[0], GIMatchData_matchinfo);}()) {
3051 return false;
3052 }
3053 // Apply Patterns
3054 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3055 return true;
3056 }
3057 case GICXXCustomAction_GICombiner85:{
3058 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3059 // Match Patterns
3060 if(![&](){return Helper.matchMulOBy0(*State.MIs[0], GIMatchData_matchinfo);}()) {
3061 return false;
3062 }
3063 // Apply Patterns
3064 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3065 return true;
3066 }
3067 case GICXXCustomAction_GICombiner86:{
3068 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3069 // Match Patterns
3070 if(![&](){return Helper.matchAddEToAddO(*State.MIs[0], GIMatchData_matchinfo);}()) {
3071 return false;
3072 }
3073 // Apply Patterns
3074 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3075 return true;
3076 }
3077 case GICXXCustomAction_GICombiner87:{
3078 unsigned GIMatchData_info;
3079 // Match Patterns
3080 if(![&](){return Helper.matchCombineFMinMaxNaN(*State.MIs[0], GIMatchData_info);}()) {
3081 return false;
3082 }
3083 // Apply Patterns
3084 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_info);
3085 return true;
3086 }
3087 case GICXXCustomAction_GICombiner88:{
3088 // Match Patterns
3089 if(![&](){return Helper.matchFPowIExpansion(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());}()) {
3090 return false;
3091 }
3092 // Apply Patterns
3093 Helper.applyExpandFPowI(*State.MIs[0], State.MIs[1]->getOperand(1).getCImm()->getSExtValue());
3094 return true;
3095 }
3096 case GICXXCustomAction_GICombiner89:{
3097 std::pair<Register, Register> GIMatchData_matchinfo;
3098 // Match Patterns
3099 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3100 return false;
3101 }
3102 // Apply Patterns
3103 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
3104 return true;
3105 }
3106 case GICXXCustomAction_GICombiner90:{
3107 // Match Patterns
3108 if(![&](){return Helper.matchPtrAddZero(*State.MIs[0]);}()) {
3109 return false;
3110 }
3111 // Apply Patterns
3112 Helper.applyPtrAddZero(*State.MIs[0]);
3113 return true;
3114 }
3115 case GICXXCustomAction_GICombiner91:{
3116 RegisterImmPair GIMatchData_matchinfo;
3117 // Match Patterns
3118 if(![&](){return Helper.matchShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
3119 return false;
3120 }
3121 // Apply Patterns
3122 Helper.applyShiftImmedChain(*State.MIs[0], GIMatchData_matchinfo);
3123 return true;
3124 }
3125 case GICXXCustomAction_GICombiner92:{
3126 ShiftOfShiftedLogic GIMatchData_matchinfo;
3127 // Match Patterns
3128 if(![&](){return Helper.matchShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);}()) {
3129 return false;
3130 }
3131 // Apply Patterns
3132 Helper.applyShiftOfShiftedLogic(*State.MIs[0], GIMatchData_matchinfo);
3133 return true;
3134 }
3135 case GICXXCustomAction_GICombiner93:{
3136 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3137 // Match Patterns
3138 if(![&](){return Helper.matchLoadOrCombine(*State.MIs[0], GIMatchData_info);}()) {
3139 return false;
3140 }
3141 // Apply Patterns
3142 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3143 return true;
3144 }
3145 case GICXXCustomAction_GICombiner94:{
3146 MachineInstr * GIMatchData_matchinfo;
3147 // Match Patterns
3148 if(![&](){return Helper.matchCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);}()) {
3149 return false;
3150 }
3151 // Apply Patterns
3152 Helper.applyCombineDivRem(*State.MIs[0], GIMatchData_matchinfo);
3153 return true;
3154 }
3155 case GICXXCustomAction_GICombiner95:{
3156 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3157 // Match Patterns
3158 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], false, GIMatchData_info);}()) {
3159 return false;
3160 }
3161 // Apply Patterns
3162 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3163 return true;
3164 }
3165 case GICXXCustomAction_GICombiner96:{
3166 // Match Patterns
3167 if(![&](){return Helper.matchFunnelShiftToRotate(*State.MIs[0]);}()) {
3168 return false;
3169 }
3170 // Apply Patterns
3171 Helper.applyFunnelShiftToRotate(*State.MIs[0]);
3172 return true;
3173 }
3174 case GICXXCustomAction_GICombiner97:{
3175 // Match Patterns
3176 if(![&](){return Helper.matchConstantLargerBitWidth(*State.MIs[0], 3);}()) {
3177 return false;
3178 }
3179 // Apply Patterns
3180 Helper.applyFunnelShiftConstantModulo(*State.MIs[0]);
3181 return true;
3182 }
3183 case GICXXCustomAction_GICombiner98:{
3184 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3185 // Match Patterns
3186 if(![&](){return Helper.matchCommuteShift(*State.MIs[0], GIMatchData_matchinfo);}()) {
3187 return false;
3188 }
3189 // Apply Patterns
3190 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3191 return true;
3192 }
3193 case GICXXCustomAction_GICombiner99:{
3194 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3195 // Match Patterns
3196 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
3197 return false;
3198 }
3199 // Apply Patterns
3200 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3201 return true;
3202 }
3203 case GICXXCustomAction_GICombiner100:{
3204 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3205 // Match Patterns
3206 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
3207 return false;
3208 }
3209 // Apply Patterns
3210 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3211 return true;
3212 }
3213 case GICXXCustomAction_GICombiner101:{
3214 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3215 // Match Patterns
3216 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
3217 return false;
3218 }
3219 // Apply Patterns
3220 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3221 return true;
3222 }
3223 case GICXXCustomAction_GICombiner102:{
3224 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3225 // Match Patterns
3226 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
3227 return false;
3228 }
3229 // Apply Patterns
3230 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3231 return true;
3232 }
3233 case GICXXCustomAction_GICombiner103:{
3234 APInt GIMatchData_matchinfo;
3235 // Match Patterns
3236 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3237 return false;
3238 }
3239 // Apply Patterns
3240 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3241 return true;
3242 }
3243 case GICXXCustomAction_GICombiner104:{
3244 ConstantFP* GIMatchData_matchinfo;
3245 // Match Patterns
3246 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3247 return false;
3248 }
3249 // Apply Patterns
3250 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3251 return true;
3252 }
3253 case GICXXCustomAction_GICombiner105:{
3254 ConstantFP* GIMatchData_matchinfo;
3255 // Match Patterns
3256 if(![&](){return Helper.matchConstantFoldFMA(*State.MIs[0], GIMatchData_matchinfo);}()) {
3257 return false;
3258 }
3259 // Apply Patterns
3260 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
3261 return true;
3262 }
3263 case GICXXCustomAction_GICombiner106:{
3264 APInt GIMatchData_matchinfo;
3265 // Match Patterns
3266 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
3267 return false;
3268 }
3269 // Apply Patterns
3270 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
3271 return true;
3272 }
3273 case GICXXCustomAction_GICombiner107:{
3274 // Match Patterns
3275 if(![&](){return Helper.matchUMulHToLShr(*State.MIs[0]);}()) {
3276 return false;
3277 }
3278 // Apply Patterns
3279 Helper.applyUMulHToLShr(*State.MIs[0]);
3280 return true;
3281 }
3282 case GICXXCustomAction_GICombiner108:{
3283 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3284 // Match Patterns
3285 if(![&](){return Helper.matchRedundantNegOperands(*State.MIs[0], GIMatchData_matchinfo);}()) {
3286 return false;
3287 }
3288 // Apply Patterns
3289 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_matchinfo);
3290 return true;
3291 }
3292 case GICXXCustomAction_GICombiner109:{
3293 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3294 // Match Patterns
3295 if(![&](){return Helper.matchAndOrDisjointMask(*State.MIs[0], GIMatchData_info);}()) {
3296 return false;
3297 }
3298 // Apply Patterns
3299 Helper.applyBuildFnNoErase(*State.MIs[0], GIMatchData_info);
3300 return true;
3301 }
3302 case GICXXCustomAction_GICombiner110:{
3303 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3304 // Match Patterns
3305 if(![&](){return Helper.matchCombineFAddFMulToFMadOrFMA(*State.MIs[0],
3306 GIMatchData_info);}()) {
3307 return false;
3308 }
3309 // Apply Patterns
3310 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3311 return true;
3312 }
3313 case GICXXCustomAction_GICombiner111:{
3314 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3315 // Match Patterns
3316 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMA(*State.MIs[0],
3317 GIMatchData_info);}()) {
3318 return false;
3319 }
3320 // Apply Patterns
3321 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3322 return true;
3323 }
3324 case GICXXCustomAction_GICombiner112:{
3325 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3326 // Match Patterns
3327 if(![&](){return Helper.matchCombineFAddFMAFMulToFMadOrFMA(*State.MIs[0],
3328 GIMatchData_info);}()) {
3329 return false;
3330 }
3331 // Apply Patterns
3332 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3333 return true;
3334 }
3335 case GICXXCustomAction_GICombiner113:{
3336 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3337 // Match Patterns
3338 if(![&](){return Helper.matchCombineFAddFpExtFMulToFMadOrFMAAggressive(
3339 *State.MIs[0], GIMatchData_info);}()) {
3340 return false;
3341 }
3342 // Apply Patterns
3343 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3344 return true;
3345 }
3346 case GICXXCustomAction_GICombiner114:{
3347 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3348 // Match Patterns
3349 if(![&](){return Helper.matchCombineFSubFMulToFMadOrFMA(*State.MIs[0],
3350 GIMatchData_info);}()) {
3351 return false;
3352 }
3353 // Apply Patterns
3354 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3355 return true;
3356 }
3357 case GICXXCustomAction_GICombiner115:{
3358 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3359 // Match Patterns
3360 if(![&](){return Helper.matchCombineFSubFNegFMulToFMadOrFMA(*State.MIs[0],
3361 GIMatchData_info);}()) {
3362 return false;
3363 }
3364 // Apply Patterns
3365 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3366 return true;
3367 }
3368 case GICXXCustomAction_GICombiner116:{
3369 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3370 // Match Patterns
3371 if(![&](){return Helper.matchCombineFSubFpExtFMulToFMadOrFMA(*State.MIs[0],
3372 GIMatchData_info);}()) {
3373 return false;
3374 }
3375 // Apply Patterns
3376 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3377 return true;
3378 }
3379 case GICXXCustomAction_GICombiner117:{
3380 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3381 // Match Patterns
3382 if(![&](){return Helper.matchCombineFSubFpExtFNegFMulToFMadOrFMA(
3383 *State.MIs[0], GIMatchData_info);}()) {
3384 return false;
3385 }
3386 // Apply Patterns
3387 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3388 return true;
3389 }
3390 case GICXXCustomAction_GICombiner118:{
3391 unsigned GIMatchData_select_op_no;
3392 // Match Patterns
3393 if(![&](){return Helper.matchFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);}()) {
3394 return false;
3395 }
3396 // Apply Patterns
3397 Helper.applyFoldBinOpIntoSelect(*State.MIs[0], GIMatchData_select_op_no);
3398 return true;
3399 }
3400 case GICXXCustomAction_GICombiner119:{
3401 // Match Patterns
3402 if(![&](){return Helper.matchUDivOrURemByConst(*State.MIs[0]);}()) {
3403 return false;
3404 }
3405 // Apply Patterns
3406 Helper.applyUDivOrURemByConst(*State.MIs[0]);
3407 return true;
3408 }
3409 case GICXXCustomAction_GICombiner120:{
3410 // Match Patterns
3411 if(![&](){return Helper.matchSDivOrSRemByConst(*State.MIs[0]);}()) {
3412 return false;
3413 }
3414 // Apply Patterns
3415 Helper.applySDivOrSRemByConst(*State.MIs[0]);
3416 return true;
3417 }
3418 case GICXXCustomAction_GICombiner121:{
3419 // Match Patterns
3420 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/false);}()) {
3421 return false;
3422 }
3423 // Apply Patterns
3424 Helper.applyUDivByPow2(*State.MIs[0]);
3425 return true;
3426 }
3427 case GICXXCustomAction_GICombiner122:{
3428 // Match Patterns
3429 if(![&](){return Helper.matchDivByPow2(*State.MIs[0], /*IsSigned=*/true);}()) {
3430 return false;
3431 }
3432 // Apply Patterns
3433 Helper.applySDivByPow2(*State.MIs[0]);
3434 return true;
3435 }
3436 case GICXXCustomAction_GICombiner123:{
3437 SmallVector<MachineInstr *> GIMatchData_matchinfo;
3438 // Match Patterns
3439 if(![&](){return Helper.matchRepeatedFPDivisor(*State.MIs[0], GIMatchData_matchinfo);}()) {
3440 return false;
3441 }
3442 // Apply Patterns
3443 Helper.applyRepeatedFPDivisor(GIMatchData_matchinfo);
3444 return true;
3445 }
3446 case GICXXCustomAction_GICombiner124:{
3447 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3448 // Match Patterns
3449 if(![&](){return Helper.matchSubAddSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3450 return false;
3451 }
3452 // Apply Patterns
3453 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3454 return true;
3455 }
3456 case GICXXCustomAction_GICombiner125:{
3457 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3458 // Match Patterns
3459 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
3460 return false;
3461 }
3462 // Apply Patterns
3463 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3464 return true;
3465 }
3466 case GICXXCustomAction_GICombiner126:{
3467 Register GIMatchData_matchinfo;
3468 // Match Patterns
3469 if(![&](){return Helper.matchFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);}()) {
3470 return false;
3471 }
3472 // Apply Patterns
3473 Helper.applyFsubToFneg(*State.MIs[0], GIMatchData_matchinfo);
3474 return true;
3475 }
3476 case GICXXCustomAction_GICombiner127:{
3477 // Match Patterns
3478 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
3479 return false;
3480 }
3481 // Apply Patterns
3482 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3483 return true;
3484 }
3485 case GICXXCustomAction_GICombiner128:{
3486 // Match Patterns
3487 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
3488 return false;
3489 }
3490 // Apply Patterns
3491 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
3492 return true;
3493 }
3494 case GICXXCustomAction_GICombiner129:{
3495 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3496 // Match Patterns
3497 if(![&](){return Helper.matchAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
3498 return false;
3499 }
3500 // Apply Patterns
3501 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3502 return true;
3503 }
3504 case GICXXCustomAction_GICombiner130:{
3505 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3506 // Match Patterns
3507 if(![&](){return Helper.matchOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
3508 return false;
3509 }
3510 // Apply Patterns
3511 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3512 return true;
3513 }
3514 case GICXXCustomAction_GICombiner131:{
3515 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3516 // Match Patterns
3517 if(![&](){return Helper.matchSimplifyNegMinMax(*State.MIs[0], GIMatchData_matchinfo);}()) {
3518 return false;
3519 }
3520 // Apply Patterns
3521 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3522 return true;
3523 }
3524 case GICXXCustomAction_GICombiner132:{
3525 SmallVector<Register> GIMatchData_matchinfo;
3526 // Match Patterns
3527 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
3528 return false;
3529 }
3530 // Apply Patterns
3531 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
3532 return true;
3533 }
3534 case GICXXCustomAction_GICombiner133:{
3535 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3536 // Match Patterns
3537 if(![&](){return Helper.matchSextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3538 return false;
3539 }
3540 // Apply Patterns
3541 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3542 return true;
3543 }
3544 case GICXXCustomAction_GICombiner134:{
3545 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3546 // Match Patterns
3547 if(![&](){return Helper.matchZextOfTrunc(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3548 return false;
3549 }
3550 // Apply Patterns
3551 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3552 return true;
3553 }
3554 case GICXXCustomAction_GICombiner135:{
3555 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3556 // Match Patterns
3557 if(![&](){return Helper.matchNonNegZext(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);}()) {
3558 return false;
3559 }
3560 // Apply Patterns
3561 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_matchinfo);
3562 return true;
3563 }
3564 case GICXXCustomAction_GICombiner136:{
3565 SmallVector<Register> GIMatchData_matchinfo;
3566 // Match Patterns
3567 if(![&](){return Helper.matchCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);}()) {
3568 return false;
3569 }
3570 // Apply Patterns
3571 Helper.applyCombineShuffleConcat(*State.MIs[0], GIMatchData_matchinfo);
3572 return true;
3573 }
3574 case GICXXCustomAction_GICombiner137:{
3575 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3576 // Match Patterns
3577 if(![&](){return Helper.matchShuffleUndefRHS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3578 return false;
3579 }
3580 // Apply Patterns
3581 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3582 return true;
3583 }
3584 case GICXXCustomAction_GICombiner138:{
3585 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3586 // Match Patterns
3587 if(![&](){return Helper.matchShuffleDisjointMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
3588 return false;
3589 }
3590 // Apply Patterns
3591 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3592 return true;
3593 }
3594 case GICXXCustomAction_GICombiner139:{
3595 Register GIMatchData_matchinfo;
3596 // Match Patterns
3597 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
3598 return false;
3599 }
3600 // Apply Patterns
3601 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
3602 return true;
3603 }
3604 case GICXXCustomAction_GICombiner140:{
3605 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3606 // Match Patterns
3607 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
3608 return false;
3609 }
3610 // Apply Patterns
3611 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3612 return true;
3613 }
3614 case GICXXCustomAction_GICombiner141:{
3615 SmallVector<Register> GIMatchData_info;
3616 // Match Patterns
3617 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
3618 return false;
3619 }
3620 // Apply Patterns
3621 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
3622 return true;
3623 }
3624 case GICXXCustomAction_GICombiner142:{
3625 Register GIMatchData_src;
3626 // Match Patterns
3627 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
3628 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
3629 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
3630 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
3631 return false;
3632
3633 // Check counts match.
3634 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
3635 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
3636 if (NumMergeSrcs != NumUnmergeDefs)
3637 return false;
3638
3639 // Verify all merge sources match unmerge defs in order.
3640 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
3641 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
3642 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
3643
3644 if (MergeSrc != UnmergeDef)
3645 return false;
3646
3647 if (!MRI.hasOneNonDBGUse(MergeSrc))
3648 return false;
3649 }
3650
3651 // Check size compatibility.
3652 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
3653 LLT SrcTy = MRI.getType(GIMatchData_src);
3654 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3655 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
3656 return false;
3657
3658 // Check bitcast legality.
3659 if (SrcTy != DstTy) {
3660 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
3661 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
3662 if (!Helper.isLegalOrBeforeLegalizer(Query))
3663 return false;
3664 }
3665
3666 return true;}()) {
3667 return false;
3668 }
3669 // Apply Patterns
3670 LLT SrcTy = MRI.getType(GIMatchData_src);
3671 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
3672
3673 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
3674
3675 if (SrcTy == DstTy) {
3676 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3677 } else {
3678 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
3679 }
3680
3681 State.MIs[0]->eraseFromParent();
3682 return true;
3683 }
3684 case GICXXCustomAction_GICombiner143:{
3685 SmallVector<APInt, 8> GIMatchData_info;
3686 // Match Patterns
3687 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
3688 return false;
3689 }
3690 // Apply Patterns
3691 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
3692 return true;
3693 }
3694 case GICXXCustomAction_GICombiner144:{
3695 std::function<void(MachineIRBuilder &)> GIMatchData_info;
3696 // Match Patterns
3697 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
3698 return false;
3699 }
3700 // Apply Patterns
3701 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
3702 return true;
3703 }
3704 case GICXXCustomAction_GICombiner145:{
3705 // Match Patterns
3706 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
3707 return false;
3708 }
3709 // Apply Patterns
3710 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
3711 return true;
3712 }
3713 case GICXXCustomAction_GICombiner146:{
3714 // Match Patterns
3715 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
3716 return false;
3717 }
3718 // Apply Patterns
3719 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
3720 return true;
3721 }
3722 case GICXXCustomAction_GICombiner147:{
3723 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3724 // Match Patterns
3725 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
3726 return false;
3727 }
3728 // Apply Patterns
3729 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3730 return true;
3731 }
3732 case GICXXCustomAction_GICombiner148:{
3733 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3734 // Match Patterns
3735 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
3736 return false;
3737 }
3738 // Apply Patterns
3739 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3740 return true;
3741 }
3742 case GICXXCustomAction_GICombiner149:{
3743 Register GIMatchData_unmergeSrc;
3744 // Match Patterns
3745 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
3746 return false;
3747 }
3748 // Apply Patterns
3749 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
3750 return true;
3751 }
3752 case GICXXCustomAction_GICombiner150:{
3753 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3754 // Match Patterns
3755 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
3756 return false;
3757 }
3758 // Apply Patterns
3759 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3760 return true;
3761 }
3762 case GICXXCustomAction_GICombiner151:{
3763 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3764 // Match Patterns
3765 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
3766 return false;
3767 }
3768 // Apply Patterns
3769 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3770 return true;
3771 }
3772 case GICXXCustomAction_GICombiner152:{
3773 Register GIMatchData_matchinfo;
3774 // Match Patterns
3775 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
3776 return false;
3777 }
3778 // Apply Patterns
3779 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
3780 return true;
3781 }
3782 case GICXXCustomAction_GICombiner153:{
3783 Register GIMatchData_matchinfo;
3784 // Match Patterns
3785 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
3786 return false;
3787 }
3788 // Apply Patterns
3789 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
3790 return true;
3791 }
3792 case GICXXCustomAction_GICombiner154:{
3793 LshrOfTruncOfLshr GIMatchData_matchinfo;
3794 // Match Patterns
3795 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
3796 return false;
3797 }
3798 // Apply Patterns
3799 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
3800 return true;
3801 }
3802 case GICXXCustomAction_GICombiner155:{
3803 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
3804 // Match Patterns
3805 if(![&](){return Helper.matchCtls(*State.MIs[0], GIMatchData_matchinfo);}()) {
3806 return false;
3807 }
3808 // Apply Patterns
3809 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
3810 return true;
3811 }
3812 }
3813 llvm_unreachable("Unknown Apply Action");
3814}
3815#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
3816#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
3817#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
3818#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)
3819#else
3820#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
3821#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
3822#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)
3823#endif
3824const uint8_t *RISCVPreLegalizerCombinerImpl::getMatchTable() const {
3825 constexpr static uint8_t MatchTable0[] = {
3826 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(280), /*)*//*default:*//*Label 106*/ GIMT_Encode4(8393),
3827 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1050), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3828 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1062),
3829 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1795),
3830 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(2319),
3831 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(2525),
3832 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(2627),
3833 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(2740),
3834 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(2825), GIMT_Encode4(0), GIMT_Encode4(0),
3835 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(2932),
3836 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(3213),
3837 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(3646), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3838 /* 226 */ /*TargetOpcode::G_PHI*//*Label 11*/ GIMT_Encode4(3846), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3839 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 12*/ GIMT_Encode4(3858), GIMT_Encode4(0),
3840 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 13*/ GIMT_Encode4(3925),
3841 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 14*/ GIMT_Encode4(4002),
3842 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 15*/ GIMT_Encode4(4067),
3843 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 16*/ GIMT_Encode4(4079),
3844 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 17*/ GIMT_Encode4(4091),
3845 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 18*/ GIMT_Encode4(4134),
3846 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 19*/ GIMT_Encode4(4167),
3847 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 20*/ GIMT_Encode4(4210), GIMT_Encode4(0), GIMT_Encode4(0),
3848 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 21*/ GIMT_Encode4(4274),
3849 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 22*/ GIMT_Encode4(4296), GIMT_Encode4(0), GIMT_Encode4(0),
3850 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 23*/ GIMT_Encode4(4318), GIMT_Encode4(0), GIMT_Encode4(0),
3851 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 24*/ GIMT_Encode4(4340),
3852 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 25*/ GIMT_Encode4(4352),
3853 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 26*/ GIMT_Encode4(4364), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3854 /* 350 */ /*TargetOpcode::G_STORE*//*Label 27*/ GIMT_Encode4(4376), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3855 /* 486 */ /*TargetOpcode::G_ANYEXT*//*Label 28*/ GIMT_Encode4(4388),
3856 /* 490 */ /*TargetOpcode::G_TRUNC*//*Label 29*/ GIMT_Encode4(4516), GIMT_Encode4(0), GIMT_Encode4(0),
3857 /* 502 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 30*/ GIMT_Encode4(4928), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3858 /* 522 */ /*TargetOpcode::G_SEXT*//*Label 31*/ GIMT_Encode4(4961),
3859 /* 526 */ /*TargetOpcode::G_SEXT_INREG*//*Label 32*/ GIMT_Encode4(5036),
3860 /* 530 */ /*TargetOpcode::G_ZEXT*//*Label 33*/ GIMT_Encode4(5102),
3861 /* 534 */ /*TargetOpcode::G_SHL*//*Label 34*/ GIMT_Encode4(5232),
3862 /* 538 */ /*TargetOpcode::G_LSHR*//*Label 35*/ GIMT_Encode4(5430),
3863 /* 542 */ /*TargetOpcode::G_ASHR*//*Label 36*/ GIMT_Encode4(5611),
3864 /* 546 */ /*TargetOpcode::G_FSHL*//*Label 37*/ GIMT_Encode4(5774),
3865 /* 550 */ /*TargetOpcode::G_FSHR*//*Label 38*/ GIMT_Encode4(5817),
3866 /* 554 */ /*TargetOpcode::G_ROTR*//*Label 39*/ GIMT_Encode4(5860),
3867 /* 558 */ /*TargetOpcode::G_ROTL*//*Label 40*/ GIMT_Encode4(5884),
3868 /* 562 */ /*TargetOpcode::G_ICMP*//*Label 41*/ GIMT_Encode4(5908),
3869 /* 566 */ /*TargetOpcode::G_FCMP*//*Label 42*/ GIMT_Encode4(5953), GIMT_Encode4(0), GIMT_Encode4(0),
3870 /* 578 */ /*TargetOpcode::G_SELECT*//*Label 43*/ GIMT_Encode4(5965),
3871 /* 582 */ /*TargetOpcode::G_UADDO*//*Label 44*/ GIMT_Encode4(6060),
3872 /* 586 */ /*TargetOpcode::G_UADDE*//*Label 45*/ GIMT_Encode4(6083),
3873 /* 590 */ /*TargetOpcode::G_USUBO*//*Label 46*/ GIMT_Encode4(6095),
3874 /* 594 */ /*TargetOpcode::G_USUBE*//*Label 47*/ GIMT_Encode4(6107),
3875 /* 598 */ /*TargetOpcode::G_SADDO*//*Label 48*/ GIMT_Encode4(6119),
3876 /* 602 */ /*TargetOpcode::G_SADDE*//*Label 49*/ GIMT_Encode4(6142),
3877 /* 606 */ /*TargetOpcode::G_SSUBO*//*Label 50*/ GIMT_Encode4(6154),
3878 /* 610 */ /*TargetOpcode::G_SSUBE*//*Label 51*/ GIMT_Encode4(6166),
3879 /* 614 */ /*TargetOpcode::G_UMULO*//*Label 52*/ GIMT_Encode4(6178),
3880 /* 618 */ /*TargetOpcode::G_SMULO*//*Label 53*/ GIMT_Encode4(6212),
3881 /* 622 */ /*TargetOpcode::G_UMULH*//*Label 54*/ GIMT_Encode4(6246),
3882 /* 626 */ /*TargetOpcode::G_SMULH*//*Label 55*/ GIMT_Encode4(6269),
3883 /* 630 */ /*TargetOpcode::G_UADDSAT*//*Label 56*/ GIMT_Encode4(6281),
3884 /* 634 */ /*TargetOpcode::G_SADDSAT*//*Label 57*/ GIMT_Encode4(6293), GIMT_Encode4(0), GIMT_Encode4(0),
3885 /* 646 */ /*TargetOpcode::G_USHLSAT*//*Label 58*/ GIMT_Encode4(6305),
3886 /* 650 */ /*TargetOpcode::G_SSHLSAT*//*Label 59*/ GIMT_Encode4(6328),
3887 /* 654 */ /*TargetOpcode::G_SMULFIX*//*Label 60*/ GIMT_Encode4(6351),
3888 /* 658 */ /*TargetOpcode::G_UMULFIX*//*Label 61*/ GIMT_Encode4(6363),
3889 /* 662 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 62*/ GIMT_Encode4(6375),
3890 /* 666 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 63*/ GIMT_Encode4(6387), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3891 /* 686 */ /*TargetOpcode::G_FADD*//*Label 64*/ GIMT_Encode4(6399),
3892 /* 690 */ /*TargetOpcode::G_FSUB*//*Label 65*/ GIMT_Encode4(6540),
3893 /* 694 */ /*TargetOpcode::G_FMUL*//*Label 66*/ GIMT_Encode4(6629),
3894 /* 698 */ /*TargetOpcode::G_FMA*//*Label 67*/ GIMT_Encode4(6717),
3895 /* 702 */ /*TargetOpcode::G_FMAD*//*Label 68*/ GIMT_Encode4(6740),
3896 /* 706 */ /*TargetOpcode::G_FDIV*//*Label 69*/ GIMT_Encode4(6763),
3897 /* 710 */ /*TargetOpcode::G_FREM*//*Label 70*/ GIMT_Encode4(6808), GIMT_Encode4(0), GIMT_Encode4(0),
3898 /* 722 */ /*TargetOpcode::G_FPOWI*//*Label 71*/ GIMT_Encode4(6820), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3899 /* 742 */ /*TargetOpcode::G_FLOG2*//*Label 72*/ GIMT_Encode4(6842), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3900 /* 758 */ /*TargetOpcode::G_FNEG*//*Label 73*/ GIMT_Encode4(6864),
3901 /* 762 */ /*TargetOpcode::G_FPEXT*//*Label 74*/ GIMT_Encode4(6915),
3902 /* 766 */ /*TargetOpcode::G_FPTRUNC*//*Label 75*/ GIMT_Encode4(6937),
3903 /* 770 */ /*TargetOpcode::G_FPTOSI*//*Label 76*/ GIMT_Encode4(6980),
3904 /* 774 */ /*TargetOpcode::G_FPTOUI*//*Label 77*/ GIMT_Encode4(7002),
3905 /* 778 */ /*TargetOpcode::G_SITOFP*//*Label 78*/ GIMT_Encode4(7024),
3906 /* 782 */ /*TargetOpcode::G_UITOFP*//*Label 79*/ GIMT_Encode4(7051), GIMT_Encode4(0), GIMT_Encode4(0),
3907 /* 794 */ /*TargetOpcode::G_FABS*//*Label 80*/ GIMT_Encode4(7078), GIMT_Encode4(0), GIMT_Encode4(0),
3908 /* 806 */ /*TargetOpcode::G_FCANONICALIZE*//*Label 81*/ GIMT_Encode4(7157),
3909 /* 810 */ /*TargetOpcode::G_FMINNUM*//*Label 82*/ GIMT_Encode4(7187),
3910 /* 814 */ /*TargetOpcode::G_FMAXNUM*//*Label 83*/ GIMT_Encode4(7221),
3911 /* 818 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 84*/ GIMT_Encode4(7255),
3912 /* 822 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 85*/ GIMT_Encode4(7267),
3913 /* 826 */ /*TargetOpcode::G_FMINIMUM*//*Label 86*/ GIMT_Encode4(7279),
3914 /* 830 */ /*TargetOpcode::G_FMAXIMUM*//*Label 87*/ GIMT_Encode4(7313), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3915 /* 874 */ /*TargetOpcode::G_PTR_ADD*//*Label 88*/ GIMT_Encode4(7347), GIMT_Encode4(0),
3916 /* 882 */ /*TargetOpcode::G_SMIN*//*Label 89*/ GIMT_Encode4(7437),
3917 /* 886 */ /*TargetOpcode::G_SMAX*//*Label 90*/ GIMT_Encode4(7471),
3918 /* 890 */ /*TargetOpcode::G_UMIN*//*Label 91*/ GIMT_Encode4(7505),
3919 /* 894 */ /*TargetOpcode::G_UMAX*//*Label 92*/ GIMT_Encode4(7539),
3920 /* 898 */ /*TargetOpcode::G_ABS*//*Label 93*/ GIMT_Encode4(7573), GIMT_Encode4(0), GIMT_Encode4(0),
3921 /* 910 */ /*TargetOpcode::G_BR*//*Label 94*/ GIMT_Encode4(7585), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3922 /* 930 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 95*/ GIMT_Encode4(7597),
3923 /* 934 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 96*/ GIMT_Encode4(7727),
3924 /* 938 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 97*/ GIMT_Encode4(8104), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3925 /* 962 */ /*TargetOpcode::G_CTLZ*//*Label 98*/ GIMT_Encode4(8170),
3926 /* 966 */ /*TargetOpcode::G_CTLZ_ZERO_UNDEF*//*Label 99*/ GIMT_Encode4(8182), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3927 /* 982 */ /*TargetOpcode::G_BITREVERSE*//*Label 100*/ GIMT_Encode4(8194),
3928 /* 986 */ /*TargetOpcode::G_FCEIL*//*Label 101*/ GIMT_Encode4(8283), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
3929 /* 1034 */ /*TargetOpcode::G_FSQRT*//*Label 102*/ GIMT_Encode4(8305),
3930 /* 1038 */ /*TargetOpcode::G_FFLOOR*//*Label 103*/ GIMT_Encode4(8327),
3931 /* 1042 */ /*TargetOpcode::G_FRINT*//*Label 104*/ GIMT_Encode4(8349),
3932 /* 1046 */ /*TargetOpcode::G_FNEARBYINT*//*Label 105*/ GIMT_Encode4(8371),
3933 /* 1050 */ // Label 0: @1050
3934 /* 1050 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1061), // Rule ID 16 //
3935 /* 1055 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
3936 /* 1058 */ // MIs[0] d
3937 /* 1058 */ // No operand predicates
3938 /* 1058 */ // MIs[0] s
3939 /* 1058 */ // No operand predicates
3940 /* 1058 */ // Combiner Rule #16: copy_prop
3941 /* 1058 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
3942 /* 1061 */ // Label 107: @1061
3943 /* 1061 */ GIM_Reject,
3944 /* 1062 */ // Label 1: @1062
3945 /* 1062 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1073), // Rule ID 19 //
3946 /* 1067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
3947 /* 1070 */ // Combiner Rule #19: add_p2i_to_ptradd; wip_match_opcode 'G_ADD'
3948 /* 1070 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3949 /* 1073 */ // Label 108: @1073
3950 /* 1073 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1084), // Rule ID 97 //
3951 /* 1078 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
3952 /* 1081 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_ADD'
3953 /* 1081 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
3954 /* 1084 */ // Label 109: @1084
3955 /* 1084 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1095), // Rule ID 148 //
3956 /* 1089 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
3957 /* 1092 */ // Combiner Rule #108: simplify_add_to_sub; wip_match_opcode 'G_ADD'
3958 /* 1092 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3959 /* 1095 */ // Label 110: @1095
3960 /* 1095 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1106), // Rule ID 250 //
3961 /* 1100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
3962 /* 1103 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_ADD'
3963 /* 1103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
3964 /* 1106 */ // Label 111: @1106
3965 /* 1106 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1117), // Rule ID 294 //
3966 /* 1111 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
3967 /* 1114 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_ADD'
3968 /* 1114 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
3969 /* 1117 */ // Label 112: @1117
3970 /* 1117 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1128), // Rule ID 330 //
3971 /* 1122 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
3972 /* 1125 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
3973 /* 1125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
3974 /* 1128 */ // Label 113: @1128
3975 /* 1128 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1216), // Rule ID 392 //
3976 /* 1133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
3977 /* 1136 */ // MIs[0] dst
3978 /* 1136 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
3979 /* 1140 */ // MIs[0] __add_shift_match_0.shl_neg
3980 /* 1140 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3981 /* 1144 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
3982 /* 1148 */ // MIs[1] __add_shift_match_0.neg_y
3983 /* 1148 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
3984 /* 1152 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
3985 /* 1156 */ // MIs[2] __add_shift_match_0.zero
3986 /* 1156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
3987 /* 1160 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3988 /* 1164 */ // MIs[3] Operand 1
3989 /* 1164 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
3990 /* 1175 */ // MIs[2] y
3991 /* 1175 */ // No operand predicates
3992 /* 1175 */ // MIs[1] n
3993 /* 1175 */ // No operand predicates
3994 /* 1175 */ // MIs[0] x
3995 /* 1175 */ // No operand predicates
3996 /* 1175 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
3997 /* 1179 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
3998 /* 1181 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
3999 /* 1184 */ // Combiner Rule #240: add_shift @ [__add_shift_match_0[1]]
4000 /* 1184 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4001 /* 1187 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4002 /* 1192 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4003 /* 1196 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4004 /* 1200 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4005 /* 1204 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4006 /* 1208 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/2, // x
4007 /* 1212 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4008 /* 1215 */ GIR_EraseRootFromParent_Done,
4009 /* 1216 */ // Label 114: @1216
4010 /* 1216 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1304), // Rule ID 391 //
4011 /* 1221 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule240Enabled),
4012 /* 1224 */ // MIs[0] dst
4013 /* 1224 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4014 /* 1228 */ // MIs[0] x
4015 /* 1228 */ // No operand predicates
4016 /* 1228 */ // MIs[0] __add_shift_match_0.shl_neg
4017 /* 1228 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4018 /* 1232 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
4019 /* 1236 */ // MIs[1] __add_shift_match_0.neg_y
4020 /* 1236 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4021 /* 1240 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4022 /* 1244 */ // MIs[2] __add_shift_match_0.zero
4023 /* 1244 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/1, // MIs[3]
4024 /* 1248 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4025 /* 1252 */ // MIs[3] Operand 1
4026 /* 1252 */ GIM_CheckLiteralInt, /*MI*/3, /*Op*/1, GIMT_Encode8(0),
4027 /* 1263 */ // MIs[2] y
4028 /* 1263 */ // No operand predicates
4029 /* 1263 */ // MIs[1] n
4030 /* 1263 */ // No operand predicates
4031 /* 1263 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
4032 /* 1267 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4033 /* 1269 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4034 /* 1272 */ // Combiner Rule #240: add_shift @ [__add_shift_match_0[0]]
4035 /* 1272 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
4036 /* 1275 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4037 /* 1280 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // y
4038 /* 1284 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // n
4039 /* 1288 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4040 /* 1292 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4041 /* 1296 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // x
4042 /* 1300 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4043 /* 1303 */ GIR_EraseRootFromParent_Done,
4044 /* 1304 */ // Label 115: @1304
4045 /* 1304 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1338), // Rule ID 2 //
4046 /* 1309 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
4047 /* 1312 */ // MIs[0] root
4048 /* 1312 */ // No operand predicates
4049 /* 1312 */ // MIs[0] sub
4050 /* 1312 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4051 /* 1316 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4052 /* 1320 */ // MIs[1] Operand 1
4053 /* 1320 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4054 /* 1324 */ // MIs[1] A
4055 /* 1324 */ // No operand predicates
4056 /* 1324 */ // MIs[0] B
4057 /* 1324 */ // No operand predicates
4058 /* 1324 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4059 /* 1326 */ // Combiner Rule #2: ZeroMinusAPlusB
4060 /* 1326 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4061 /* 1329 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4062 /* 1331 */ GIR_RootToRootCopy, /*OpIdx*/2, // B
4063 /* 1333 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // A
4064 /* 1337 */ GIR_EraseRootFromParent_Done,
4065 /* 1338 */ // Label 116: @1338
4066 /* 1338 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1375), // Rule ID 15 //
4067 /* 1343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4068 /* 1346 */ // MIs[0] root
4069 /* 1346 */ // No operand predicates
4070 /* 1346 */ // MIs[0] sub
4071 /* 1346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4072 /* 1350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4073 /* 1354 */ // MIs[1] A
4074 /* 1354 */ // No operand predicates
4075 /* 1354 */ // MIs[1] c1
4076 /* 1354 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4077 /* 1358 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4078 /* 1362 */ // MIs[2] imm1
4079 /* 1362 */ // No operand predicates
4080 /* 1362 */ // MIs[0] c2
4081 /* 1362 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4082 /* 1366 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4083 /* 1370 */ // MIs[3] imm2
4084 /* 1370 */ // No operand predicates
4085 /* 1370 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4086 /* 1372 */ // Combiner Rule #15: AMinusC1PlusC2
4087 /* 1372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4088 /* 1375 */ // Label 117: @1375
4089 /* 1375 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1409), // Rule ID 5 //
4090 /* 1380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
4091 /* 1383 */ // MIs[0] root
4092 /* 1383 */ // No operand predicates
4093 /* 1383 */ // MIs[0] sub
4094 /* 1383 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4095 /* 1387 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4096 /* 1391 */ // MIs[1] B
4097 /* 1391 */ // No operand predicates
4098 /* 1391 */ // MIs[1] A
4099 /* 1391 */ // No operand predicates
4100 /* 1391 */ // MIs[0] A
4101 /* 1391 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4102 /* 1396 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4103 /* 1401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4104 /* 1403 */ // Combiner Rule #5: BMinusAPlusA
4105 /* 1403 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4106 /* 1408 */ GIR_EraseRootFromParent_Done,
4107 /* 1409 */ // Label 118: @1409
4108 /* 1409 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1443), // Rule ID 137 //
4109 /* 1414 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4110 /* 1417 */ // MIs[0] dst
4111 /* 1417 */ // No operand predicates
4112 /* 1417 */ // MIs[0] __add_sub_reg_match_0.tmp
4113 /* 1417 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4114 /* 1421 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4115 /* 1425 */ // MIs[1] src
4116 /* 1425 */ // No operand predicates
4117 /* 1425 */ // MIs[1] __add_sub_reg_match_0.x
4118 /* 1425 */ // No operand predicates
4119 /* 1425 */ // MIs[0] __add_sub_reg_match_0.x
4120 /* 1425 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
4121 /* 1430 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4122 /* 1435 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4123 /* 1437 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[1]]
4124 /* 1437 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4125 /* 1442 */ GIR_EraseRootFromParent_Done,
4126 /* 1443 */ // Label 119: @1443
4127 /* 1443 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1488), // Rule ID 7 //
4128 /* 1448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
4129 /* 1451 */ // MIs[0] root
4130 /* 1451 */ // No operand predicates
4131 /* 1451 */ // MIs[0] sub1
4132 /* 1451 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4133 /* 1455 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4134 /* 1459 */ // MIs[1] A
4135 /* 1459 */ // No operand predicates
4136 /* 1459 */ // MIs[1] B
4137 /* 1459 */ // No operand predicates
4138 /* 1459 */ // MIs[0] sub2
4139 /* 1459 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4140 /* 1463 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4141 /* 1467 */ // MIs[2] B
4142 /* 1467 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
4143 /* 1472 */ // MIs[2] C
4144 /* 1472 */ // No operand predicates
4145 /* 1472 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4146 /* 1474 */ // Combiner Rule #7: AMinusBPlusBMinusC
4147 /* 1474 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4148 /* 1477 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4149 /* 1479 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4150 /* 1483 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4151 /* 1487 */ GIR_EraseRootFromParent_Done,
4152 /* 1488 */ // Label 120: @1488
4153 /* 1488 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1533), // Rule ID 6 //
4154 /* 1493 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
4155 /* 1496 */ // MIs[0] root
4156 /* 1496 */ // No operand predicates
4157 /* 1496 */ // MIs[0] sub1
4158 /* 1496 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4159 /* 1500 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4160 /* 1504 */ // MIs[1] A
4161 /* 1504 */ // No operand predicates
4162 /* 1504 */ // MIs[1] B
4163 /* 1504 */ // No operand predicates
4164 /* 1504 */ // MIs[0] sub2
4165 /* 1504 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4166 /* 1508 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4167 /* 1512 */ // MIs[2] C
4168 /* 1512 */ // No operand predicates
4169 /* 1512 */ // MIs[2] A
4170 /* 1512 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
4171 /* 1517 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4172 /* 1519 */ // Combiner Rule #6: AMinusBPlusCMinusA
4173 /* 1519 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4174 /* 1522 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4175 /* 1524 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4176 /* 1528 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4177 /* 1532 */ GIR_EraseRootFromParent_Done,
4178 /* 1533 */ // Label 121: @1533
4179 /* 1533 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1568), // Rule ID 42 //
4180 /* 1538 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
4181 /* 1541 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4182 /* 1547 */ // MIs[0] root
4183 /* 1547 */ // No operand predicates
4184 /* 1547 */ // MIs[0] left
4185 /* 1547 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4186 /* 1551 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4187 /* 1555 */ // MIs[1] imm1
4188 /* 1555 */ // No operand predicates
4189 /* 1555 */ // MIs[0] right
4190 /* 1555 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4191 /* 1559 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_VSCALE),
4192 /* 1563 */ // MIs[2] imm2
4193 /* 1563 */ // No operand predicates
4194 /* 1563 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4195 /* 1565 */ // Combiner Rule #40: add_of_vscale
4196 /* 1565 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
4197 /* 1568 */ // Label 122: @1568
4198 /* 1568 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1602), // Rule ID 3 //
4199 /* 1573 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
4200 /* 1576 */ // MIs[0] root
4201 /* 1576 */ // No operand predicates
4202 /* 1576 */ // MIs[0] A
4203 /* 1576 */ // No operand predicates
4204 /* 1576 */ // MIs[0] sub
4205 /* 1576 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4206 /* 1580 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4207 /* 1584 */ // MIs[1] Operand 1
4208 /* 1584 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/1, 0,
4209 /* 1588 */ // MIs[1] B
4210 /* 1588 */ // No operand predicates
4211 /* 1588 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4212 /* 1590 */ // Combiner Rule #3: APlusZeroMinusB
4213 /* 1590 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4214 /* 1593 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4215 /* 1595 */ GIR_RootToRootCopy, /*OpIdx*/1, // A
4216 /* 1597 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // B
4217 /* 1601 */ GIR_EraseRootFromParent_Done,
4218 /* 1602 */ // Label 123: @1602
4219 /* 1602 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1636), // Rule ID 4 //
4220 /* 1607 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
4221 /* 1610 */ // MIs[0] root
4222 /* 1610 */ // No operand predicates
4223 /* 1610 */ // MIs[0] A
4224 /* 1610 */ // No operand predicates
4225 /* 1610 */ // MIs[0] sub
4226 /* 1610 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4227 /* 1614 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4228 /* 1618 */ // MIs[1] B
4229 /* 1618 */ // No operand predicates
4230 /* 1618 */ // MIs[1] A
4231 /* 1618 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4232 /* 1623 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4233 /* 1628 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4234 /* 1630 */ // Combiner Rule #4: APlusBMinusB
4235 /* 1630 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4236 /* 1635 */ GIR_EraseRootFromParent_Done,
4237 /* 1636 */ // Label 124: @1636
4238 /* 1636 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1670), // Rule ID 136 //
4239 /* 1641 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4240 /* 1644 */ // MIs[0] dst
4241 /* 1644 */ // No operand predicates
4242 /* 1644 */ // MIs[0] __add_sub_reg_match_0.x
4243 /* 1644 */ // No operand predicates
4244 /* 1644 */ // MIs[0] __add_sub_reg_match_0.tmp
4245 /* 1644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4246 /* 1648 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4247 /* 1652 */ // MIs[1] src
4248 /* 1652 */ // No operand predicates
4249 /* 1652 */ // MIs[1] __add_sub_reg_match_0.x
4250 /* 1652 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4251 /* 1657 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4252 /* 1662 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4253 /* 1664 */ // Combiner Rule #98: add_sub_reg @ [__add_sub_reg_match_0[0]]
4254 /* 1664 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4255 /* 1669 */ GIR_EraseRootFromParent_Done,
4256 /* 1670 */ // Label 125: @1670
4257 /* 1670 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1715), // Rule ID 8 //
4258 /* 1675 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
4259 /* 1678 */ // MIs[0] root
4260 /* 1678 */ // No operand predicates
4261 /* 1678 */ // MIs[0] A
4262 /* 1678 */ // No operand predicates
4263 /* 1678 */ // MIs[0] sub1
4264 /* 1678 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4265 /* 1682 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4266 /* 1686 */ // MIs[1] B
4267 /* 1686 */ // No operand predicates
4268 /* 1686 */ // MIs[1] add1
4269 /* 1686 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4270 /* 1690 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4271 /* 1694 */ // MIs[2] A
4272 /* 1694 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
4273 /* 1699 */ // MIs[2] C
4274 /* 1699 */ // No operand predicates
4275 /* 1699 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4276 /* 1701 */ // Combiner Rule #8: APlusBMinusAplusC
4277 /* 1701 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4278 /* 1704 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4279 /* 1706 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4280 /* 1710 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4281 /* 1714 */ GIR_EraseRootFromParent_Done,
4282 /* 1715 */ // Label 126: @1715
4283 /* 1715 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1760), // Rule ID 9 //
4284 /* 1720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
4285 /* 1723 */ // MIs[0] root
4286 /* 1723 */ // No operand predicates
4287 /* 1723 */ // MIs[0] A
4288 /* 1723 */ // No operand predicates
4289 /* 1723 */ // MIs[0] sub1
4290 /* 1723 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4291 /* 1727 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4292 /* 1731 */ // MIs[1] B
4293 /* 1731 */ // No operand predicates
4294 /* 1731 */ // MIs[1] add1
4295 /* 1731 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4296 /* 1735 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4297 /* 1739 */ // MIs[2] C
4298 /* 1739 */ // No operand predicates
4299 /* 1739 */ // MIs[2] A
4300 /* 1739 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4301 /* 1744 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4302 /* 1746 */ // Combiner Rule #9: APlusBMinusCPlusA
4303 /* 1746 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4304 /* 1749 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4305 /* 1751 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // B
4306 /* 1755 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // C
4307 /* 1759 */ GIR_EraseRootFromParent_Done,
4308 /* 1760 */ // Label 127: @1760
4309 /* 1760 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1783), // Rule ID 108 //
4310 /* 1765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4311 /* 1768 */ // MIs[0] dst
4312 /* 1768 */ // No operand predicates
4313 /* 1768 */ // MIs[0] lhs
4314 /* 1768 */ // No operand predicates
4315 /* 1768 */ // MIs[0] Operand 2
4316 /* 1768 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4317 /* 1772 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4318 /* 1777 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[1]]
4319 /* 1777 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4320 /* 1782 */ GIR_EraseRootFromParent_Done,
4321 /* 1783 */ // Label 128: @1783
4322 /* 1783 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1794), // Rule ID 156 //
4323 /* 1788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
4324 /* 1791 */ // MIs[0] root
4325 /* 1791 */ // No operand predicates
4326 /* 1791 */ // MIs[0] src1
4327 /* 1791 */ // No operand predicates
4328 /* 1791 */ // MIs[0] src2
4329 /* 1791 */ // No operand predicates
4330 /* 1791 */ // Combiner Rule #112: reassoc_comm_binops
4331 /* 1791 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4332 /* 1794 */ // Label 129: @1794
4333 /* 1794 */ GIM_Reject,
4334 /* 1795 */ // Label 2: @1795
4335 /* 1795 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1806), // Rule ID 98 //
4336 /* 1800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
4337 /* 1803 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_SUB'
4338 /* 1803 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4339 /* 1806 */ // Label 130: @1806
4340 /* 1806 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1817), // Rule ID 258 //
4341 /* 1811 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4342 /* 1814 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SUB'
4343 /* 1814 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4344 /* 1817 */ // Label 131: @1817
4345 /* 1817 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1828), // Rule ID 295 //
4346 /* 1822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4347 /* 1825 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SUB'
4348 /* 1825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4349 /* 1828 */ // Label 132: @1828
4350 /* 1828 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(1839), // Rule ID 327 //
4351 /* 1833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule205Enabled),
4352 /* 1836 */ // Combiner Rule #205: sub_add_reg; wip_match_opcode 'G_SUB'
4353 /* 1836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner124),
4354 /* 1839 */ // Label 133: @1839
4355 /* 1839 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(1850), // Rule ID 361 //
4356 /* 1844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule212Enabled),
4357 /* 1847 */ // Combiner Rule #212: simplify_neg_minmax; wip_match_opcode 'G_SUB'
4358 /* 1847 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner131),
4359 /* 1850 */ // Label 134: @1850
4360 /* 1850 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(1927), // Rule ID 393 //
4361 /* 1855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule241Enabled),
4362 /* 1858 */ // MIs[0] dst
4363 /* 1858 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4364 /* 1862 */ // MIs[0] sub1
4365 /* 1862 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4366 /* 1866 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4367 /* 1870 */ // MIs[1] a
4368 /* 1870 */ // No operand predicates
4369 /* 1870 */ // MIs[1] b
4370 /* 1870 */ // No operand predicates
4371 /* 1870 */ // MIs[0] Operand 2
4372 /* 1870 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4373 /* 1874 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
4374 /* 1878 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4375 /* 1880 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4376 /* 1883 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4377 /* 1893 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4378 /* 1896 */ // Combiner Rule #241: sub_one_from_sub
4379 /* 1896 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4380 /* 1899 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4381 /* 1904 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // b
4382 /* 1908 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4383 /* 1911 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ADD),
4384 /* 1915 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4385 /* 1919 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4386 /* 1922 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // a
4387 /* 1926 */ GIR_EraseRootFromParent_Done,
4388 /* 1927 */ // Label 135: @1927
4389 /* 1927 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(1972), // Rule ID 0 //
4390 /* 1932 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
4391 /* 1935 */ // MIs[0] root
4392 /* 1935 */ // No operand predicates
4393 /* 1935 */ // MIs[0] add1
4394 /* 1935 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4395 /* 1939 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4396 /* 1943 */ // MIs[1] A
4397 /* 1943 */ // No operand predicates
4398 /* 1943 */ // MIs[1] sub1
4399 /* 1943 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4400 /* 1947 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4401 /* 1951 */ // MIs[2] B
4402 /* 1951 */ // No operand predicates
4403 /* 1951 */ // MIs[2] C
4404 /* 1951 */ // No operand predicates
4405 /* 1951 */ // MIs[0] B
4406 /* 1951 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/1,
4407 /* 1956 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4408 /* 1958 */ // Combiner Rule #0: APlusBMinusCMinusB
4409 /* 1958 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4410 /* 1961 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4411 /* 1963 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4412 /* 1967 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // C
4413 /* 1971 */ GIR_EraseRootFromParent_Done,
4414 /* 1972 */ // Label 136: @1972
4415 /* 1972 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2009), // Rule ID 11 //
4416 /* 1977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
4417 /* 1980 */ // MIs[0] root
4418 /* 1980 */ // No operand predicates
4419 /* 1980 */ // MIs[0] add
4420 /* 1980 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4421 /* 1984 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
4422 /* 1988 */ // MIs[1] A
4423 /* 1988 */ // No operand predicates
4424 /* 1988 */ // MIs[1] c1
4425 /* 1988 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4426 /* 1992 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4427 /* 1996 */ // MIs[2] imm1
4428 /* 1996 */ // No operand predicates
4429 /* 1996 */ // MIs[0] c2
4430 /* 1996 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4431 /* 2000 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4432 /* 2004 */ // MIs[3] imm2
4433 /* 2004 */ // No operand predicates
4434 /* 2004 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4435 /* 2006 */ // Combiner Rule #11: APlusC1MinusC2
4436 /* 2006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
4437 /* 2009 */ // Label 137: @2009
4438 /* 2009 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2046), // Rule ID 14 //
4439 /* 2014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
4440 /* 2017 */ // MIs[0] root
4441 /* 2017 */ // No operand predicates
4442 /* 2017 */ // MIs[0] sub1
4443 /* 2017 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4444 /* 2021 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4445 /* 2025 */ // MIs[1] c1
4446 /* 2025 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4447 /* 2029 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4448 /* 2033 */ // MIs[2] imm1
4449 /* 2033 */ // No operand predicates
4450 /* 2033 */ // MIs[1] A
4451 /* 2033 */ // No operand predicates
4452 /* 2033 */ // MIs[0] c2
4453 /* 2033 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4454 /* 2037 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4455 /* 2041 */ // MIs[3] imm2
4456 /* 2041 */ // No operand predicates
4457 /* 2041 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4458 /* 2043 */ // Combiner Rule #14: C1Minus2MinusC2
4459 /* 2043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
4460 /* 2046 */ // Label 138: @2046
4461 /* 2046 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2091), // Rule ID 1 //
4462 /* 2051 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
4463 /* 2054 */ // MIs[0] root
4464 /* 2054 */ // No operand predicates
4465 /* 2054 */ // MIs[0] sub2
4466 /* 2054 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4467 /* 2058 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4468 /* 2062 */ // MIs[1] A
4469 /* 2062 */ // No operand predicates
4470 /* 2062 */ // MIs[1] sub1
4471 /* 2062 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4472 /* 2066 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SUB),
4473 /* 2070 */ // MIs[2] B
4474 /* 2070 */ // No operand predicates
4475 /* 2070 */ // MIs[2] C
4476 /* 2070 */ // No operand predicates
4477 /* 2070 */ // MIs[0] C
4478 /* 2070 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/2, /*OtherOpIdx*/2,
4479 /* 2075 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4480 /* 2077 */ // Combiner Rule #1: AMinusBMinusCMinusC
4481 /* 2077 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4482 /* 2080 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
4483 /* 2082 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
4484 /* 2086 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // B
4485 /* 2090 */ GIR_EraseRootFromParent_Done,
4486 /* 2091 */ // Label 139: @2091
4487 /* 2091 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2128), // Rule ID 13 //
4488 /* 2096 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
4489 /* 2099 */ // MIs[0] root
4490 /* 2099 */ // No operand predicates
4491 /* 2099 */ // MIs[0] sub1
4492 /* 2099 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4493 /* 2103 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
4494 /* 2107 */ // MIs[1] A
4495 /* 2107 */ // No operand predicates
4496 /* 2107 */ // MIs[1] c1
4497 /* 2107 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
4498 /* 2111 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4499 /* 2115 */ // MIs[2] imm1
4500 /* 2115 */ // No operand predicates
4501 /* 2115 */ // MIs[0] c2
4502 /* 2115 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
4503 /* 2119 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4504 /* 2123 */ // MIs[3] imm2
4505 /* 2123 */ // No operand predicates
4506 /* 2123 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4507 /* 2125 */ // Combiner Rule #13: AMinusC1MinusC2
4508 /* 2125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
4509 /* 2128 */ // Label 140: @2128
4510 /* 2128 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2171), // Rule ID 166 //
4511 /* 2133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
4512 /* 2136 */ // MIs[0] dst
4513 /* 2136 */ // No operand predicates
4514 /* 2136 */ // MIs[0] Operand 1
4515 /* 2136 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4516 /* 2140 */ // MIs[0] and
4517 /* 2140 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4518 /* 2144 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
4519 /* 2148 */ // MIs[1] x
4520 /* 2148 */ // No operand predicates
4521 /* 2148 */ // MIs[1] Operand 2
4522 /* 2148 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 1,
4523 /* 2152 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
4524 /* 2156 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4525 /* 2158 */ // Combiner Rule #122: neg_and_one_to_sext_inreg
4526 /* 2158 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
4527 /* 2161 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4528 /* 2163 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
4529 /* 2167 */ GIR_AddImm8, /*InsnID*/0, /*Imm*/1,
4530 /* 2170 */ GIR_EraseRootFromParent_Done,
4531 /* 2171 */ // Label 141: @2171
4532 /* 2171 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2208), // Rule ID 12 //
4533 /* 2176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4534 /* 2179 */ // MIs[0] root
4535 /* 2179 */ // No operand predicates
4536 /* 2179 */ // MIs[0] c2
4537 /* 2179 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4538 /* 2183 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4539 /* 2187 */ // MIs[1] imm2
4540 /* 2187 */ // No operand predicates
4541 /* 2187 */ // MIs[0] add
4542 /* 2187 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4543 /* 2191 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ADD),
4544 /* 2195 */ // MIs[2] A
4545 /* 2195 */ // No operand predicates
4546 /* 2195 */ // MIs[2] c1
4547 /* 2195 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
4548 /* 2199 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4549 /* 2203 */ // MIs[3] imm1
4550 /* 2203 */ // No operand predicates
4551 /* 2203 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
4552 /* 2205 */ // Combiner Rule #12: C2MinusAPlusC1
4553 /* 2205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
4554 /* 2208 */ // Label 142: @2208
4555 /* 2208 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2247), // Rule ID 119 //
4556 /* 2213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4557 /* 2216 */ // MIs[0] dst
4558 /* 2216 */ // No operand predicates
4559 /* 2216 */ // MIs[0] x
4560 /* 2216 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
4561 /* 2220 */ // MIs[0] x
4562 /* 2220 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
4563 /* 2225 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4564 /* 2228 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4565 /* 2238 */ // Combiner Rule #89: same_val_zero @ [__same_val_zero_match_0[0]]
4566 /* 2238 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
4567 /* 2241 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4568 /* 2243 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4569 /* 2246 */ GIR_EraseRootFromParent_Done,
4570 /* 2247 */ // Label 143: @2247
4571 /* 2247 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2274), // Rule ID 45 //
4572 /* 2252 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
4573 /* 2255 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4574 /* 2261 */ // MIs[0] root
4575 /* 2261 */ // No operand predicates
4576 /* 2261 */ // MIs[0] x
4577 /* 2261 */ // No operand predicates
4578 /* 2261 */ // MIs[0] right
4579 /* 2261 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4580 /* 2265 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4581 /* 2269 */ // MIs[1] imm
4582 /* 2269 */ // No operand predicates
4583 /* 2269 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4584 /* 2271 */ // Combiner Rule #43: sub_of_vscale
4585 /* 2271 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
4586 /* 2274 */ // Label 144: @2274
4587 /* 2274 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2297), // Rule ID 107 //
4588 /* 2279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4589 /* 2282 */ // MIs[0] dst
4590 /* 2282 */ // No operand predicates
4591 /* 2282 */ // MIs[0] lhs
4592 /* 2282 */ // No operand predicates
4593 /* 2282 */ // MIs[0] Operand 2
4594 /* 2282 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4595 /* 2286 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4596 /* 2291 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[0]]
4597 /* 2291 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4598 /* 2296 */ GIR_EraseRootFromParent_Done,
4599 /* 2297 */ // Label 145: @2297
4600 /* 2297 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2318), // Rule ID 18 //
4601 /* 2302 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
4602 /* 2305 */ // MIs[0] d
4603 /* 2305 */ // No operand predicates
4604 /* 2305 */ // MIs[0] op1
4605 /* 2305 */ // No operand predicates
4606 /* 2305 */ // MIs[0] c
4607 /* 2305 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4608 /* 2309 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4609 /* 2313 */ // MIs[1] imm
4610 /* 2313 */ // No operand predicates
4611 /* 2313 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4612 /* 2315 */ // Combiner Rule #18: sub_to_add
4613 /* 2315 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
4614 /* 2318 */ // Label 146: @2318
4615 /* 2318 */ GIM_Reject,
4616 /* 2319 */ // Label 3: @2319
4617 /* 2319 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2330), // Rule ID 81 //
4618 /* 2324 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4619 /* 2327 */ // Combiner Rule #75: undef_to_int_zero; wip_match_opcode 'G_MUL'
4620 /* 2327 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4621 /* 2330 */ // Label 147: @2330
4622 /* 2330 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2341), // Rule ID 255 //
4623 /* 2335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4624 /* 2338 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_MUL'
4625 /* 2338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4626 /* 2341 */ // Label 148: @2341
4627 /* 2341 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2352), // Rule ID 331 //
4628 /* 2346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4629 /* 2349 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
4630 /* 2349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4631 /* 2352 */ // Label 149: @2352
4632 /* 2352 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2392), // Rule ID 20 //
4633 /* 2357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
4634 /* 2360 */ // MIs[0] dst
4635 /* 2360 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4636 /* 2364 */ // MIs[0] x
4637 /* 2364 */ // No operand predicates
4638 /* 2364 */ // MIs[0] Operand 2
4639 /* 2364 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
4640 /* 2368 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4641 /* 2371 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
4642 /* 2381 */ // Combiner Rule #20: mul_by_neg_one
4643 /* 2381 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
4644 /* 2384 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4645 /* 2386 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
4646 /* 2389 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4647 /* 2391 */ GIR_EraseRootFromParent_Done,
4648 /* 2392 */ // Label 150: @2392
4649 /* 2392 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2427), // Rule ID 43 //
4650 /* 2397 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
4651 /* 2400 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
4652 /* 2406 */ // MIs[0] root
4653 /* 2406 */ // No operand predicates
4654 /* 2406 */ // MIs[0] left
4655 /* 2406 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4656 /* 2410 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
4657 /* 2414 */ // MIs[1] scale
4658 /* 2414 */ // No operand predicates
4659 /* 2414 */ // MIs[0] x
4660 /* 2414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
4661 /* 2418 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4662 /* 2422 */ // MIs[2] imm1
4663 /* 2422 */ // No operand predicates
4664 /* 2422 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4665 /* 2424 */ // Combiner Rule #41: mul_of_vscale
4666 /* 2424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
4667 /* 2427 */ // Label 151: @2427
4668 /* 2427 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2467), // Rule ID 128 //
4669 /* 2432 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4670 /* 2435 */ // MIs[0] dst
4671 /* 2435 */ // No operand predicates
4672 /* 2435 */ // MIs[0] zero
4673 /* 2435 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4674 /* 2439 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4675 /* 2443 */ // MIs[1] Operand 1
4676 /* 2443 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4677 /* 2454 */ // MIs[0] rhs
4678 /* 2454 */ // No operand predicates
4679 /* 2454 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4680 /* 2459 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4681 /* 2461 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
4682 /* 2461 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4683 /* 2466 */ GIR_EraseRootFromParent_Done,
4684 /* 2467 */ // Label 152: @2467
4685 /* 2467 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2490), // Rule ID 129 //
4686 /* 2472 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
4687 /* 2475 */ // MIs[0] dst
4688 /* 2475 */ // No operand predicates
4689 /* 2475 */ // MIs[0] lhs
4690 /* 2475 */ // No operand predicates
4691 /* 2475 */ // MIs[0] zero
4692 /* 2475 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4693 /* 2479 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4694 /* 2484 */ // Combiner Rule #91: binop_right_to_zero
4695 /* 2484 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4696 /* 2489 */ GIR_EraseRootFromParent_Done,
4697 /* 2490 */ // Label 153: @2490
4698 /* 2490 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2513), // Rule ID 134 //
4699 /* 2495 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4700 /* 2498 */ // MIs[0] dst
4701 /* 2498 */ // No operand predicates
4702 /* 2498 */ // MIs[0] x
4703 /* 2498 */ // No operand predicates
4704 /* 2498 */ // MIs[0] Operand 2
4705 /* 2498 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
4706 /* 2502 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4707 /* 2507 */ // Combiner Rule #96: right_identity_one_int
4708 /* 2507 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4709 /* 2512 */ GIR_EraseRootFromParent_Done,
4710 /* 2513 */ // Label 154: @2513
4711 /* 2513 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2524), // Rule ID 17 //
4712 /* 2518 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4713 /* 2521 */ // MIs[0] d
4714 /* 2521 */ // No operand predicates
4715 /* 2521 */ // MIs[0] op1
4716 /* 2521 */ // No operand predicates
4717 /* 2521 */ // MIs[0] op2
4718 /* 2521 */ // No operand predicates
4719 /* 2521 */ // Combiner Rule #17: mul_to_shl
4720 /* 2521 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
4721 /* 2524 */ // Label 155: @2524
4722 /* 2524 */ GIM_Reject,
4723 /* 2525 */ // Label 4: @2525
4724 /* 2525 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2536), // Rule ID 226 //
4725 /* 2530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4726 /* 2533 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_SDIV'
4727 /* 2533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4728 /* 2536 */ // Label 156: @2536
4729 /* 2536 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2547), // Rule ID 261 //
4730 /* 2541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4731 /* 2544 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SDIV'
4732 /* 2544 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4733 /* 2547 */ // Label 157: @2547
4734 /* 2547 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2558), // Rule ID 300 //
4735 /* 2552 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4736 /* 2555 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SDIV'
4737 /* 2555 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4738 /* 2558 */ // Label 158: @2558
4739 /* 2558 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2598), // Rule ID 124 //
4740 /* 2563 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4741 /* 2566 */ // MIs[0] dst
4742 /* 2566 */ // No operand predicates
4743 /* 2566 */ // MIs[0] zero
4744 /* 2566 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4745 /* 2570 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4746 /* 2574 */ // MIs[1] Operand 1
4747 /* 2574 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4748 /* 2585 */ // MIs[0] rhs
4749 /* 2585 */ // No operand predicates
4750 /* 2585 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4751 /* 2590 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4752 /* 2592 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
4753 /* 2592 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4754 /* 2597 */ GIR_EraseRootFromParent_Done,
4755 /* 2598 */ // Label 159: @2598
4756 /* 2598 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2615), // Rule ID 323 //
4757 /* 2603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule201Enabled),
4758 /* 2606 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4759 /* 2612 */ // MIs[0] dst
4760 /* 2612 */ // No operand predicates
4761 /* 2612 */ // MIs[0] x
4762 /* 2612 */ // No operand predicates
4763 /* 2612 */ // MIs[0] y
4764 /* 2612 */ // No operand predicates
4765 /* 2612 */ // Combiner Rule #201: sdiv_by_pow2
4766 /* 2612 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner122),
4767 /* 2615 */ // Label 160: @2615
4768 /* 2615 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2626), // Rule ID 325 //
4769 /* 2620 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule203Enabled),
4770 /* 2623 */ // MIs[0] dst
4771 /* 2623 */ // No operand predicates
4772 /* 2623 */ // MIs[0] x
4773 /* 2623 */ // No operand predicates
4774 /* 2623 */ // MIs[0] y
4775 /* 2623 */ // No operand predicates
4776 /* 2623 */ // Combiner Rule #203: sdiv_by_const
4777 /* 2623 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4778 /* 2626 */ // Label 161: @2626
4779 /* 2626 */ GIM_Reject,
4780 /* 2627 */ // Label 5: @2627
4781 /* 2627 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2638), // Rule ID 84 //
4782 /* 2632 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
4783 /* 2635 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_UDIV'
4784 /* 2635 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4785 /* 2638 */ // Label 162: @2638
4786 /* 2638 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2649), // Rule ID 227 //
4787 /* 2643 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4788 /* 2646 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_UDIV'
4789 /* 2646 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4790 /* 2649 */ // Label 163: @2649
4791 /* 2649 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2660), // Rule ID 260 //
4792 /* 2654 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4793 /* 2657 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UDIV'
4794 /* 2657 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4795 /* 2660 */ // Label 164: @2660
4796 /* 2660 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2671), // Rule ID 302 //
4797 /* 2665 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4798 /* 2668 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UDIV'
4799 /* 2668 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4800 /* 2671 */ // Label 165: @2671
4801 /* 2671 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2711), // Rule ID 125 //
4802 /* 2676 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4803 /* 2679 */ // MIs[0] dst
4804 /* 2679 */ // No operand predicates
4805 /* 2679 */ // MIs[0] zero
4806 /* 2679 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4807 /* 2683 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4808 /* 2687 */ // MIs[1] Operand 1
4809 /* 2687 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4810 /* 2698 */ // MIs[0] rhs
4811 /* 2698 */ // No operand predicates
4812 /* 2698 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4813 /* 2703 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4814 /* 2705 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
4815 /* 2705 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4816 /* 2710 */ GIR_EraseRootFromParent_Done,
4817 /* 2711 */ // Label 166: @2711
4818 /* 2711 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2728), // Rule ID 322 //
4819 /* 2716 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule200Enabled),
4820 /* 2719 */ GIM_MIFlagsNot, /*MI*/0, GIMT_Encode4(MachineInstr::IsExact),
4821 /* 2725 */ // MIs[0] dst
4822 /* 2725 */ // No operand predicates
4823 /* 2725 */ // MIs[0] x
4824 /* 2725 */ // No operand predicates
4825 /* 2725 */ // MIs[0] y
4826 /* 2725 */ // No operand predicates
4827 /* 2725 */ // Combiner Rule #200: udiv_by_pow2
4828 /* 2725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner121),
4829 /* 2728 */ // Label 167: @2728
4830 /* 2728 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2739), // Rule ID 324 //
4831 /* 2733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule202Enabled),
4832 /* 2736 */ // MIs[0] dst
4833 /* 2736 */ // No operand predicates
4834 /* 2736 */ // MIs[0] x
4835 /* 2736 */ // No operand predicates
4836 /* 2736 */ // MIs[0] y
4837 /* 2736 */ // No operand predicates
4838 /* 2736 */ // Combiner Rule #202: udiv_by_const
4839 /* 2736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4840 /* 2739 */ // Label 168: @2739
4841 /* 2739 */ GIM_Reject,
4842 /* 2740 */ // Label 6: @2740
4843 /* 2740 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2751), // Rule ID 228 //
4844 /* 2745 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4845 /* 2748 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_SREM'
4846 /* 2748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4847 /* 2751 */ // Label 169: @2751
4848 /* 2751 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2762), // Rule ID 263 //
4849 /* 2756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4850 /* 2759 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SREM'
4851 /* 2759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4852 /* 2762 */ // Label 170: @2762
4853 /* 2762 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2773), // Rule ID 301 //
4854 /* 2767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4855 /* 2770 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SREM'
4856 /* 2770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4857 /* 2773 */ // Label 171: @2773
4858 /* 2773 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2813), // Rule ID 126 //
4859 /* 2778 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4860 /* 2781 */ // MIs[0] dst
4861 /* 2781 */ // No operand predicates
4862 /* 2781 */ // MIs[0] zero
4863 /* 2781 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4864 /* 2785 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4865 /* 2789 */ // MIs[1] Operand 1
4866 /* 2789 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4867 /* 2800 */ // MIs[0] rhs
4868 /* 2800 */ // No operand predicates
4869 /* 2800 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4870 /* 2805 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4871 /* 2807 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
4872 /* 2807 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4873 /* 2812 */ GIR_EraseRootFromParent_Done,
4874 /* 2813 */ // Label 172: @2813
4875 /* 2813 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2824), // Rule ID 321 //
4876 /* 2818 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule199Enabled),
4877 /* 2821 */ // MIs[0] dst
4878 /* 2821 */ // No operand predicates
4879 /* 2821 */ // MIs[0] x
4880 /* 2821 */ // No operand predicates
4881 /* 2821 */ // MIs[0] y
4882 /* 2821 */ // No operand predicates
4883 /* 2821 */ // Combiner Rule #199: srem_by_const
4884 /* 2821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner120),
4885 /* 2824 */ // Label 173: @2824
4886 /* 2824 */ GIM_Reject,
4887 /* 2825 */ // Label 7: @2825
4888 /* 2825 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2836), // Rule ID 85 //
4889 /* 2830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
4890 /* 2833 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_UREM'
4891 /* 2833 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
4892 /* 2836 */ // Label 174: @2836
4893 /* 2836 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2847), // Rule ID 177 //
4894 /* 2841 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
4895 /* 2844 */ // Combiner Rule #133: urem_pow2_to_mask; wip_match_opcode 'G_UREM'
4896 /* 2844 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner74),
4897 /* 2847 */ // Label 175: @2847
4898 /* 2847 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2858), // Rule ID 229 //
4899 /* 2852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule166Enabled),
4900 /* 2855 */ // Combiner Rule #166: div_rem_to_divrem; wip_match_opcode 'G_UREM'
4901 /* 2855 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner94),
4902 /* 2858 */ // Label 176: @2858
4903 /* 2858 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2869), // Rule ID 262 //
4904 /* 2863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4905 /* 2866 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UREM'
4906 /* 2866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4907 /* 2869 */ // Label 177: @2869
4908 /* 2869 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2880), // Rule ID 303 //
4909 /* 2874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4910 /* 2877 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UREM'
4911 /* 2877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4912 /* 2880 */ // Label 178: @2880
4913 /* 2880 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2920), // Rule ID 127 //
4914 /* 2885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
4915 /* 2888 */ // MIs[0] dst
4916 /* 2888 */ // No operand predicates
4917 /* 2888 */ // MIs[0] zero
4918 /* 2888 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4919 /* 2892 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4920 /* 2896 */ // MIs[1] Operand 1
4921 /* 2896 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4922 /* 2907 */ // MIs[0] rhs
4923 /* 2907 */ // No operand predicates
4924 /* 2907 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4925 /* 2912 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4926 /* 2914 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
4927 /* 2914 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4928 /* 2919 */ GIR_EraseRootFromParent_Done,
4929 /* 2920 */ // Label 179: @2920
4930 /* 2920 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2931), // Rule ID 320 //
4931 /* 2925 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule198Enabled),
4932 /* 2928 */ // MIs[0] dst
4933 /* 2928 */ // No operand predicates
4934 /* 2928 */ // MIs[0] x
4935 /* 2928 */ // No operand predicates
4936 /* 2928 */ // MIs[0] y
4937 /* 2928 */ // No operand predicates
4938 /* 2928 */ // Combiner Rule #198: urem_by_const
4939 /* 2928 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner119),
4940 /* 2931 */ // Label 180: @2931
4941 /* 2931 */ GIM_Reject,
4942 /* 2932 */ // Label 8: @2932
4943 /* 2932 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2943), // Rule ID 76 //
4944 /* 2937 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
4945 /* 2940 */ // Combiner Rule #72: load_and_mask; wip_match_opcode 'G_AND'
4946 /* 2940 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
4947 /* 2943 */ // Label 181: @2943
4948 /* 2943 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2954), // Rule ID 80 //
4949 /* 2948 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4950 /* 2951 */ // Combiner Rule #75: undef_to_int_zero; wip_match_opcode 'G_AND'
4951 /* 2951 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
4952 /* 2954 */ // Label 182: @2954
4953 /* 2954 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2965), // Rule ID 149 //
4954 /* 2959 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
4955 /* 2962 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
4956 /* 2962 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
4957 /* 2965 */ // Label 183: @2965
4958 /* 2965 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2976), // Rule ID 169 //
4959 /* 2970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
4960 /* 2973 */ // Combiner Rule #125: narrow_binop_feeding_and; wip_match_opcode 'G_AND'
4961 /* 2973 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
4962 /* 2976 */ // Label 184: @2976
4963 /* 2976 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2987), // Rule ID 174 //
4964 /* 2981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
4965 /* 2984 */ // Combiner Rule #130: redundant_and; wip_match_opcode 'G_AND'
4966 /* 2984 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
4967 /* 2987 */ // Label 185: @2987
4968 /* 2987 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2998), // Rule ID 199 //
4969 /* 2992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule155Enabled),
4970 /* 2995 */ // Combiner Rule #155: overlapping_and; wip_match_opcode 'G_AND'
4971 /* 2995 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner83),
4972 /* 2998 */ // Label 186: @2998
4973 /* 2998 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(3009), // Rule ID 252 //
4974 /* 3003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
4975 /* 3006 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_AND'
4976 /* 3006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
4977 /* 3009 */ // Label 187: @3009
4978 /* 3009 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(3020), // Rule ID 285 //
4979 /* 3014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule188Enabled),
4980 /* 3017 */ // Combiner Rule #188: and_or_disjoint_mask; wip_match_opcode 'G_AND'
4981 /* 3017 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner109),
4982 /* 3020 */ // Label 188: @3020
4983 /* 3020 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(3031), // Rule ID 297 //
4984 /* 3025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
4985 /* 3028 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_AND'
4986 /* 3028 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
4987 /* 3031 */ // Label 189: @3031
4988 /* 3031 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(3042), // Rule ID 332 //
4989 /* 3036 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
4990 /* 3039 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
4991 /* 3039 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
4992 /* 3042 */ // Label 190: @3042
4993 /* 3042 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(3053), // Rule ID 359 //
4994 /* 3047 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule210Enabled),
4995 /* 3050 */ // Combiner Rule #210: match_ands; wip_match_opcode 'G_AND'
4996 /* 3050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner129),
4997 /* 3053 */ // Label 191: @3053
4998 /* 3053 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(3151), // Rule ID 162 //
4999 /* 3058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
5000 /* 3061 */ // MIs[0] root
5001 /* 3061 */ // No operand predicates
5002 /* 3061 */ // MIs[0] d1
5003 /* 3061 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5004 /* 3065 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5005 /* 3069 */ // MIs[1] p
5006 /* 3069 */ // No operand predicates
5007 /* 3069 */ // MIs[1] s1
5008 /* 3069 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5009 /* 3073 */ // MIs[1] Operand 3
5010 /* 3073 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5011 /* 3077 */ // MIs[0] d2
5012 /* 3077 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5013 /* 3081 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5014 /* 3085 */ // MIs[2] p
5015 /* 3085 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5016 /* 3090 */ // MIs[2] s2
5017 /* 3090 */ // No operand predicates
5018 /* 3090 */ // MIs[2] Operand 3
5019 /* 3090 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5020 /* 3094 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
5021 /* 3098 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5022 /* 3100 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5023 /* 3103 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5024 /* 3113 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5025 /* 3116 */ // Combiner Rule #118: double_icmp_zero_and_combine
5026 /* 3116 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5027 /* 3119 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5028 /* 3124 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5029 /* 3128 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5030 /* 3132 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5031 /* 3136 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5032 /* 3140 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5033 /* 3144 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5034 /* 3147 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5035 /* 3150 */ GIR_EraseRootFromParent_Done,
5036 /* 3151 */ // Label 192: @3151
5037 /* 3151 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(3188), // Rule ID 245 //
5038 /* 3156 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule178Enabled),
5039 /* 3159 */ // MIs[0] root
5040 /* 3159 */ // No operand predicates
5041 /* 3159 */ // MIs[0] shift
5042 /* 3159 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5043 /* 3163 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5044 /* 3167 */ // MIs[1] x
5045 /* 3167 */ // No operand predicates
5046 /* 3167 */ // MIs[1] lsb
5047 /* 3167 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5048 /* 3171 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5049 /* 3175 */ // MIs[2] imm1
5050 /* 3175 */ // No operand predicates
5051 /* 3175 */ // MIs[0] mask
5052 /* 3175 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
5053 /* 3179 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5054 /* 3183 */ // MIs[3] imm2
5055 /* 3183 */ // No operand predicates
5056 /* 3183 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
5057 /* 3185 */ // Combiner Rule #178: bitfield_extract_from_and
5058 /* 3185 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner100),
5059 /* 3188 */ // Label 193: @3188
5060 /* 3188 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3212), // Rule ID 117 //
5061 /* 3193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5062 /* 3196 */ // MIs[0] dst
5063 /* 3196 */ // No operand predicates
5064 /* 3196 */ // MIs[0] src
5065 /* 3196 */ // No operand predicates
5066 /* 3196 */ // MIs[0] src
5067 /* 3196 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5068 /* 3201 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5069 /* 3206 */ // Combiner Rule #88: binop_same_val @ [__binop_same_val_match_0[0]]
5070 /* 3206 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5071 /* 3211 */ GIR_EraseRootFromParent_Done,
5072 /* 3212 */ // Label 194: @3212
5073 /* 3212 */ GIM_Reject,
5074 /* 3213 */ // Label 9: @3213
5075 /* 3213 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3224), // Rule ID 82 //
5076 /* 3218 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
5077 /* 3221 */ // Combiner Rule #76: undef_to_negative_one; wip_match_opcode 'G_OR'
5078 /* 3221 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
5079 /* 3224 */ // Label 195: @3224
5080 /* 3224 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3235), // Rule ID 150 //
5081 /* 3229 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5082 /* 3232 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
5083 /* 3232 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5084 /* 3235 */ // Label 196: @3235
5085 /* 3235 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3246), // Rule ID 176 //
5086 /* 3240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
5087 /* 3243 */ // Combiner Rule #132: redundant_or; wip_match_opcode 'G_OR'
5088 /* 3243 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner73),
5089 /* 3246 */ // Label 197: @3246
5090 /* 3246 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3257), // Rule ID 225 //
5091 /* 3251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule165Enabled),
5092 /* 3254 */ // Combiner Rule #165: load_or_combine; wip_match_opcode 'G_OR'
5093 /* 3254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner93),
5094 /* 3257 */ // Label 198: @3257
5095 /* 3257 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3268), // Rule ID 230 //
5096 /* 3262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule167Enabled),
5097 /* 3265 */ // Combiner Rule #167: funnel_shift_from_or_shift; wip_match_opcode 'G_OR'
5098 /* 3265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner95),
5099 /* 3268 */ // Label 199: @3268
5100 /* 3268 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3279), // Rule ID 256 //
5101 /* 3273 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5102 /* 3276 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_OR'
5103 /* 3276 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5104 /* 3279 */ // Label 200: @3279
5105 /* 3279 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3290), // Rule ID 298 //
5106 /* 3284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5107 /* 3287 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_OR'
5108 /* 3287 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5109 /* 3290 */ // Label 201: @3290
5110 /* 3290 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3301), // Rule ID 333 //
5111 /* 3295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5112 /* 3298 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
5113 /* 3298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5114 /* 3301 */ // Label 202: @3301
5115 /* 3301 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3312), // Rule ID 360 //
5116 /* 3306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule211Enabled),
5117 /* 3309 */ // Combiner Rule #211: match_ors; wip_match_opcode 'G_OR'
5118 /* 3309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner130),
5119 /* 3312 */ // Label 203: @3312
5120 /* 3312 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3359), // Rule ID 237 //
5121 /* 3317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5122 /* 3320 */ // MIs[0] root
5123 /* 3320 */ // No operand predicates
5124 /* 3320 */ // MIs[0] out1
5125 /* 3320 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5126 /* 3324 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHL),
5127 /* 3328 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5128 /* 3328 */ // No operand predicates
5129 /* 3328 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5130 /* 3328 */ // No operand predicates
5131 /* 3328 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5132 /* 3328 */ // No operand predicates
5133 /* 3328 */ // MIs[0] out2
5134 /* 3328 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5135 /* 3332 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_SHL),
5136 /* 3336 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5137 /* 3336 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5138 /* 3341 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5139 /* 3341 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5140 /* 3346 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5141 /* 3351 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5142 /* 3353 */ // Combiner Rule #172: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[0]]
5143 /* 3353 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5144 /* 3358 */ GIR_EraseRootFromParent_Done,
5145 /* 3359 */ // Label 204: @3359
5146 /* 3359 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3406), // Rule ID 239 //
5147 /* 3364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5148 /* 3367 */ // MIs[0] root
5149 /* 3367 */ // No operand predicates
5150 /* 3367 */ // MIs[0] out1
5151 /* 3367 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5152 /* 3371 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FSHR),
5153 /* 3375 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5154 /* 3375 */ // No operand predicates
5155 /* 3375 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5156 /* 3375 */ // No operand predicates
5157 /* 3375 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5158 /* 3375 */ // No operand predicates
5159 /* 3375 */ // MIs[0] out2
5160 /* 3375 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5161 /* 3379 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
5162 /* 3383 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5163 /* 3383 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/2,
5164 /* 3388 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5165 /* 3388 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
5166 /* 3393 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5167 /* 3398 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5168 /* 3400 */ // Combiner Rule #173: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[0]]
5169 /* 3400 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5170 /* 3405 */ GIR_EraseRootFromParent_Done,
5171 /* 3406 */ // Label 205: @3406
5172 /* 3406 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3504), // Rule ID 163 //
5173 /* 3411 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
5174 /* 3414 */ // MIs[0] root
5175 /* 3414 */ // No operand predicates
5176 /* 3414 */ // MIs[0] d1
5177 /* 3414 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5178 /* 3418 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
5179 /* 3422 */ // MIs[1] p
5180 /* 3422 */ // No operand predicates
5181 /* 3422 */ // MIs[1] s1
5182 /* 3422 */ GIM_RecordRegType, /*MI*/1, /*Op*/2, /*TempTypeIdx*/255,
5183 /* 3426 */ // MIs[1] Operand 3
5184 /* 3426 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/3, 0,
5185 /* 3430 */ // MIs[0] d2
5186 /* 3430 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5187 /* 3434 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_ICMP),
5188 /* 3438 */ // MIs[2] p
5189 /* 3438 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5190 /* 3443 */ // MIs[2] s2
5191 /* 3443 */ // No operand predicates
5192 /* 3443 */ // MIs[2] Operand 3
5193 /* 3443 */ GIM_CheckConstantInt8, /*MI*/2, /*Op*/3, 0,
5194 /* 3447 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
5195 /* 3451 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5196 /* 3453 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
5197 /* 3456 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(0),
5198 /* 3466 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5199 /* 3469 */ // Combiner Rule #119: double_icmp_zero_or_combine
5200 /* 3469 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_OR),
5201 /* 3472 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
5202 /* 3477 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // s1
5203 /* 3481 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/2, // s2
5204 /* 3485 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ICMP),
5205 /* 3489 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // root
5206 /* 3493 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/1, // p
5207 /* 3497 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
5208 /* 3500 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/1,
5209 /* 3503 */ GIR_EraseRootFromParent_Done,
5210 /* 3504 */ // Label 206: @3504
5211 /* 3504 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3551), // Rule ID 240 //
5212 /* 3509 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule173Enabled),
5213 /* 3512 */ // MIs[0] root
5214 /* 3512 */ // No operand predicates
5215 /* 3512 */ // MIs[0] out2
5216 /* 3512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5217 /* 3516 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
5218 /* 3520 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5219 /* 3520 */ // No operand predicates
5220 /* 3520 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5221 /* 3520 */ // No operand predicates
5222 /* 3520 */ // MIs[0] out1
5223 /* 3520 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5224 /* 3524 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHR),
5225 /* 3528 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.z
5226 /* 3528 */ // No operand predicates
5227 /* 3528 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.x
5228 /* 3528 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/1,
5229 /* 3533 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_right_match_0.y
5230 /* 3533 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5231 /* 3538 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5232 /* 3543 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5233 /* 3545 */ // Combiner Rule #173: funnel_shift_or_shift_to_funnel_shift_right @ [__funnel_shift_or_shift_to_funnel_shift_right_match_0[1]]
5234 /* 3545 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5235 /* 3550 */ GIR_EraseRootFromParent_Done,
5236 /* 3551 */ // Label 207: @3551
5237 /* 3551 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3598), // Rule ID 238 //
5238 /* 3556 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule172Enabled),
5239 /* 3559 */ // MIs[0] root
5240 /* 3559 */ // No operand predicates
5241 /* 3559 */ // MIs[0] out2
5242 /* 3559 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5243 /* 3563 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
5244 /* 3567 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5245 /* 3567 */ // No operand predicates
5246 /* 3567 */ // MIs[1] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5247 /* 3567 */ // No operand predicates
5248 /* 3567 */ // MIs[0] out1
5249 /* 3567 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
5250 /* 3571 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_FSHL),
5251 /* 3575 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.x
5252 /* 3575 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/1, /*OtherMI*/1, /*OtherOpIdx*/1,
5253 /* 3580 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.z
5254 /* 3580 */ // No operand predicates
5255 /* 3580 */ // MIs[2] __funnel_shift_or_shift_to_funnel_shift_left_match_0.y
5256 /* 3580 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/2, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
5257 /* 3585 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5258 /* 3590 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5259 /* 3592 */ // Combiner Rule #172: funnel_shift_or_shift_to_funnel_shift_left @ [__funnel_shift_or_shift_to_funnel_shift_left_match_0[1]]
5260 /* 3592 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
5261 /* 3597 */ GIR_EraseRootFromParent_Done,
5262 /* 3598 */ // Label 208: @3598
5263 /* 3598 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3622), // Rule ID 118 //
5264 /* 3603 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
5265 /* 3606 */ // MIs[0] dst
5266 /* 3606 */ // No operand predicates
5267 /* 3606 */ // MIs[0] src
5268 /* 3606 */ // No operand predicates
5269 /* 3606 */ // MIs[0] src
5270 /* 3606 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5271 /* 3611 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5272 /* 3616 */ // Combiner Rule #88: binop_same_val @ [__binop_same_val_match_0[1]]
5273 /* 3616 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5274 /* 3621 */ GIR_EraseRootFromParent_Done,
5275 /* 3622 */ // Label 209: @3622
5276 /* 3622 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3645), // Rule ID 109 //
5277 /* 3627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5278 /* 3630 */ // MIs[0] dst
5279 /* 3630 */ // No operand predicates
5280 /* 3630 */ // MIs[0] lhs
5281 /* 3630 */ // No operand predicates
5282 /* 3630 */ // MIs[0] Operand 2
5283 /* 3630 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5284 /* 3634 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5285 /* 3639 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[2]]
5286 /* 3639 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5287 /* 3644 */ GIR_EraseRootFromParent_Done,
5288 /* 3645 */ // Label 210: @3645
5289 /* 3645 */ GIM_Reject,
5290 /* 3646 */ // Label 10: @3646
5291 /* 3646 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3657), // Rule ID 99 //
5292 /* 3651 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
5293 /* 3654 */ // Combiner Rule #81: propagate_undef_any_op; wip_match_opcode 'G_XOR'
5294 /* 3654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5295 /* 3657 */ // Label 211: @3657
5296 /* 3657 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3668), // Rule ID 151 //
5297 /* 3662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
5298 /* 3665 */ // Combiner Rule #109: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
5299 /* 3665 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5300 /* 3668 */ // Label 212: @3668
5301 /* 3668 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3679), // Rule ID 181 //
5302 /* 3673 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule137Enabled),
5303 /* 3676 */ // Combiner Rule #137: not_cmp_fold; wip_match_opcode 'G_XOR'
5304 /* 3676 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner78),
5305 /* 3679 */ // Label 213: @3679
5306 /* 3679 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3690), // Rule ID 213 //
5307 /* 3684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule161Enabled),
5308 /* 3687 */ // Combiner Rule #161: xor_of_and_with_same_reg; wip_match_opcode 'G_XOR'
5309 /* 3687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner89),
5310 /* 3690 */ // Label 214: @3690
5311 /* 3690 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3701), // Rule ID 259 //
5312 /* 3695 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
5313 /* 3698 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_XOR'
5314 /* 3698 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
5315 /* 3701 */ // Label 215: @3701
5316 /* 3701 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3712), // Rule ID 299 //
5317 /* 3706 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
5318 /* 3709 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_XOR'
5319 /* 3709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
5320 /* 3712 */ // Label 216: @3712
5321 /* 3712 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3723), // Rule ID 334 //
5322 /* 3717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
5323 /* 3720 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
5324 /* 3720 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
5325 /* 3723 */ // Label 217: @3723
5326 /* 3723 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3783), // Rule ID 10 //
5327 /* 3728 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
5328 /* 3731 */ // MIs[0] root
5329 /* 3731 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
5330 /* 3735 */ // MIs[0] add
5331 /* 3735 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5332 /* 3739 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5333 /* 3743 */ // MIs[1] A
5334 /* 3743 */ // No operand predicates
5335 /* 3743 */ // MIs[1] Operand 2
5336 /* 3743 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
5337 /* 3747 */ // MIs[0] Operand 2
5338 /* 3747 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 255,
5339 /* 3751 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
5340 /* 3755 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5341 /* 3757 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5342 /* 3760 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5343 /* 3770 */ // Combiner Rule #10: NotAPlusNegOne
5344 /* 3770 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
5345 /* 3773 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
5346 /* 3775 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5347 /* 3778 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // A
5348 /* 3782 */ GIR_EraseRootFromParent_Done,
5349 /* 3783 */ // Label 218: @3783
5350 /* 3783 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3822), // Rule ID 120 //
5351 /* 3788 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
5352 /* 3791 */ // MIs[0] dst
5353 /* 3791 */ // No operand predicates
5354 /* 3791 */ // MIs[0] x
5355 /* 3791 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
5356 /* 3795 */ // MIs[0] x
5357 /* 3795 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
5358 /* 3800 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
5359 /* 3803 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
5360 /* 3813 */ // Combiner Rule #89: same_val_zero @ [__same_val_zero_match_0[1]]
5361 /* 3813 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
5362 /* 3816 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5363 /* 3818 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
5364 /* 3821 */ GIR_EraseRootFromParent_Done,
5365 /* 3822 */ // Label 219: @3822
5366 /* 3822 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3845), // Rule ID 110 //
5367 /* 3827 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
5368 /* 3830 */ // MIs[0] dst
5369 /* 3830 */ // No operand predicates
5370 /* 3830 */ // MIs[0] lhs
5371 /* 3830 */ // No operand predicates
5372 /* 3830 */ // MIs[0] Operand 2
5373 /* 3830 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5374 /* 3834 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5375 /* 3839 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[3]]
5376 /* 3839 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5377 /* 3844 */ GIR_EraseRootFromParent_Done,
5378 /* 3845 */ // Label 220: @3845
5379 /* 3845 */ GIM_Reject,
5380 /* 3846 */ // Label 11: @3846
5381 /* 3846 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3857), // Rule ID 147 //
5382 /* 3851 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
5383 /* 3854 */ // Combiner Rule #107: extend_through_phis; wip_match_opcode 'G_PHI'
5384 /* 3854 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
5385 /* 3857 */ // Label 221: @3857
5386 /* 3857 */ GIM_Reject,
5387 /* 3858 */ // Label 12: @3858
5388 /* 3858 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3869), // Rule ID 370 //
5389 /* 3863 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule221Enabled),
5390 /* 3866 */ // Combiner Rule #221: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
5391 /* 3866 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner140),
5392 /* 3869 */ // Label 222: @3869
5393 /* 3869 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3880), // Rule ID 371 //
5394 /* 3874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule222Enabled),
5395 /* 3877 */ // Combiner Rule #222: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
5396 /* 3877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner141),
5397 /* 3880 */ // Label 223: @3880
5398 /* 3880 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3891), // Rule ID 373 //
5399 /* 3885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule224Enabled),
5400 /* 3888 */ // Combiner Rule #224: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
5401 /* 3888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner143),
5402 /* 3891 */ // Label 224: @3891
5403 /* 3891 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3902), // Rule ID 374 //
5404 /* 3896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule225Enabled),
5405 /* 3899 */ // Combiner Rule #225: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
5406 /* 3899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner144),
5407 /* 3902 */ // Label 225: @3902
5408 /* 3902 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3913), // Rule ID 375 //
5409 /* 3907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule226Enabled),
5410 /* 3910 */ // Combiner Rule #226: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
5411 /* 3910 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner145),
5412 /* 3913 */ // Label 226: @3913
5413 /* 3913 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3924), // Rule ID 376 //
5414 /* 3918 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule227Enabled),
5415 /* 3921 */ // Combiner Rule #227: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
5416 /* 3921 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner146),
5417 /* 3924 */ // Label 227: @3924
5418 /* 3924 */ GIM_Reject,
5419 /* 3925 */ // Label 13: @3925
5420 /* 3925 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3939), // Rule ID 372 //
5421 /* 3930 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule223Enabled),
5422 /* 3933 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5423 /* 3936 */ // MIs[0] dst
5424 /* 3936 */ // No operand predicates
5425 /* 3936 */ // MIs[0] merge_srcs
5426 /* 3936 */ // No operand predicates
5427 /* 3936 */ // Combiner Rule #223: merge_unmerge
5428 /* 3936 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner142),
5429 /* 3939 */ // Label 228: @3939
5430 /* 3939 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(4001),
5431 /* 3944 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
5432 /* 3947 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3968), // Rule ID 377 //
5433 /* 3952 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule228Enabled),
5434 /* 3955 */ // MIs[0] root
5435 /* 3955 */ // No operand predicates
5436 /* 3955 */ // MIs[0] x
5437 /* 3955 */ // No operand predicates
5438 /* 3955 */ // MIs[0] undef
5439 /* 3955 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5440 /* 3959 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5441 /* 3963 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5442 /* 3965 */ // Combiner Rule #228: merge_of_x_and_undef
5443 /* 3965 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner147),
5444 /* 3968 */ // Label 230: @3968
5445 /* 3968 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(4000), // Rule ID 378 //
5446 /* 3973 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule229Enabled),
5447 /* 3976 */ // MIs[0] root
5448 /* 3976 */ // No operand predicates
5449 /* 3976 */ // MIs[0] x
5450 /* 3976 */ // No operand predicates
5451 /* 3976 */ // MIs[0] zero
5452 /* 3976 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
5453 /* 3980 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5454 /* 3984 */ // MIs[1] Operand 1
5455 /* 3984 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
5456 /* 3995 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5457 /* 3997 */ // Combiner Rule #229: merge_of_x_and_zero
5458 /* 3997 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner148),
5459 /* 4000 */ // Label 231: @4000
5460 /* 4000 */ GIM_Reject,
5461 /* 4001 */ // Label 229: @4001
5462 /* 4001 */ GIM_Reject,
5463 /* 4002 */ // Label 14: @4002
5464 /* 4002 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(4013), // Rule ID 72 //
5465 /* 4007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
5466 /* 4010 */ // Combiner Rule #70: extract_all_elts_from_build_vector; wip_match_opcode 'G_BUILD_VECTOR'
5467 /* 4010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
5468 /* 4013 */ // Label 232: @4013
5469 /* 4013 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(4024), // Rule ID 101 //
5470 /* 4018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
5471 /* 4021 */ // Combiner Rule #82: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
5472 /* 4021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5473 /* 4024 */ // Label 233: @4024
5474 /* 4024 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(4035), // Rule ID 139 //
5475 /* 4029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5476 /* 4032 */ // Combiner Rule #99: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
5477 /* 4032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5478 /* 4035 */ // Label 234: @4035
5479 /* 4035 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(4066),
5480 /* 4040 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
5481 /* 4043 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(4054), // Rule ID 369 //
5482 /* 4048 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule220Enabled),
5483 /* 4051 */ // MIs[0] dst
5484 /* 4051 */ // No operand predicates
5485 /* 4051 */ // MIs[0] unused
5486 /* 4051 */ // No operand predicates
5487 /* 4051 */ // Combiner Rule #220: combine_use_vector_truncate
5488 /* 4051 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner139),
5489 /* 4054 */ // Label 236: @4054
5490 /* 4054 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(4065), // Rule ID 379 //
5491 /* 4059 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule230Enabled),
5492 /* 4062 */ // MIs[0] dst
5493 /* 4062 */ // No operand predicates
5494 /* 4062 */ // MIs[0] unused
5495 /* 4062 */ // No operand predicates
5496 /* 4062 */ // Combiner Rule #230: combine_build_unmerge
5497 /* 4062 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner149),
5498 /* 4065 */ // Label 237: @4065
5499 /* 4065 */ GIM_Reject,
5500 /* 4066 */ // Label 235: @4066
5501 /* 4066 */ GIM_Reject,
5502 /* 4067 */ // Label 15: @4067
5503 /* 4067 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(4078), // Rule ID 138 //
5504 /* 4072 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
5505 /* 4075 */ // Combiner Rule #99: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
5506 /* 4075 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5507 /* 4078 */ // Label 238: @4078
5508 /* 4078 */ GIM_Reject,
5509 /* 4079 */ // Label 16: @4079
5510 /* 4079 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(4090), // Rule ID 362 //
5511 /* 4084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule213Enabled),
5512 /* 4087 */ // Combiner Rule #213: combine_concat_vector; wip_match_opcode 'G_CONCAT_VECTORS'
5513 /* 4087 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner132),
5514 /* 4090 */ // Label 239: @4090
5515 /* 4090 */ GIM_Reject,
5516 /* 4091 */ // Label 17: @4091
5517 /* 4091 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4112), // Rule ID 131 //
5518 /* 4096 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
5519 /* 4099 */ // MIs[0] dst
5520 /* 4099 */ // No operand predicates
5521 /* 4099 */ // MIs[0] t
5522 /* 4099 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5523 /* 4103 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
5524 /* 4107 */ // MIs[1] ptr
5525 /* 4107 */ // No operand predicates
5526 /* 4107 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5527 /* 4109 */ // Combiner Rule #93: i2p_to_p2i
5528 /* 4109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
5529 /* 4112 */ // Label 240: @4112
5530 /* 4112 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4133), // Rule ID 93 //
5531 /* 4117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5532 /* 4120 */ // MIs[0] dst
5533 /* 4120 */ // No operand predicates
5534 /* 4120 */ // MIs[0] __unary_undef_to_undef_match_0.x
5535 /* 4120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5536 /* 4124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5537 /* 4128 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5538 /* 4130 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
5539 /* 4130 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5540 /* 4133 */ // Label 241: @4133
5541 /* 4133 */ GIM_Reject,
5542 /* 4134 */ // Label 18: @4134
5543 /* 4134 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4145), // Rule ID 130 //
5544 /* 4139 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
5545 /* 4142 */ // Combiner Rule #92: p2i_to_i2p; wip_match_opcode 'G_INTTOPTR'
5546 /* 4142 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
5547 /* 4145 */ // Label 242: @4145
5548 /* 4145 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4166), // Rule ID 94 //
5549 /* 4150 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5550 /* 4153 */ // MIs[0] dst
5551 /* 4153 */ // No operand predicates
5552 /* 4153 */ // MIs[0] __unary_undef_to_undef_match_0.x
5553 /* 4153 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5554 /* 4157 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5555 /* 4161 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5556 /* 4163 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
5557 /* 4163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5558 /* 4166 */ // Label 243: @4166
5559 /* 4166 */ GIM_Reject,
5560 /* 4167 */ // Label 19: @4167
5561 /* 4167 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4188), // Rule ID 142 //
5562 /* 4172 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
5563 /* 4175 */ // MIs[0] dst
5564 /* 4175 */ // No operand predicates
5565 /* 4175 */ // MIs[0] src1
5566 /* 4175 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5567 /* 4179 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
5568 /* 4183 */ // MIs[1] src0
5569 /* 4183 */ // No operand predicates
5570 /* 4183 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5571 /* 4185 */ // Combiner Rule #102: bitcast_bitcast_fold
5572 /* 4185 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5573 /* 4188 */ // Label 244: @4188
5574 /* 4188 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4209), // Rule ID 91 //
5575 /* 4193 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5576 /* 4196 */ // MIs[0] dst
5577 /* 4196 */ // No operand predicates
5578 /* 4196 */ // MIs[0] __unary_undef_to_undef_match_0.x
5579 /* 4196 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5580 /* 4200 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5581 /* 4204 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5582 /* 4206 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
5583 /* 4206 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5584 /* 4209 */ // Label 245: @4209
5585 /* 4209 */ GIM_Reject,
5586 /* 4210 */ // Label 20: @4210
5587 /* 4210 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4239), // Rule ID 21 //
5588 /* 4215 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
5589 /* 4218 */ // MIs[0] dst
5590 /* 4218 */ // No operand predicates
5591 /* 4218 */ // MIs[0] src
5592 /* 4218 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5593 /* 4222 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FREEZE),
5594 /* 4226 */ // MIs[1] __idempotent_prop_match_0.x
5595 /* 4226 */ // No operand predicates
5596 /* 4226 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5597 /* 4231 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5598 /* 4233 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[0]]
5599 /* 4233 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5600 /* 4238 */ GIR_EraseRootFromParent_Done,
5601 /* 4239 */ // Label 246: @4239
5602 /* 4239 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4262), // Rule ID 46 //
5603 /* 4244 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
5604 /* 4247 */ // MIs[0] root
5605 /* 4247 */ // No operand predicates
5606 /* 4247 */ // MIs[0] src
5607 /* 4247 */ // No operand predicates
5608 /* 4247 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
5609 /* 4251 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5610 /* 4256 */ // Combiner Rule #44: freeze_of_non_undef_non_poison
5611 /* 4256 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5612 /* 4261 */ GIR_EraseRootFromParent_Done,
5613 /* 4262 */ // Label 247: @4262
5614 /* 4262 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4273), // Rule ID 47 //
5615 /* 4267 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
5616 /* 4270 */ // MIs[0] dst
5617 /* 4270 */ // No operand predicates
5618 /* 4270 */ // MIs[0] src
5619 /* 4270 */ // No operand predicates
5620 /* 4270 */ // Combiner Rule #45: push_freeze_to_prevent_poison_from_propagating
5621 /* 4270 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
5622 /* 4273 */ // Label 248: @4273
5623 /* 4273 */ GIM_Reject,
5624 /* 4274 */ // Label 21: @4274
5625 /* 4274 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4295), // Rule ID 191 //
5626 /* 4279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule147Enabled),
5627 /* 4282 */ // MIs[0] dst
5628 /* 4282 */ // No operand predicates
5629 /* 4282 */ // MIs[0] src0
5630 /* 4282 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5631 /* 4286 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5632 /* 4290 */ // MIs[1] cst
5633 /* 4290 */ // No operand predicates
5634 /* 4290 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5635 /* 4292 */ // Combiner Rule #147: constant_fold_intrinsic_trunc
5636 /* 4292 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5637 /* 4295 */ // Label 249: @4295
5638 /* 4295 */ GIM_Reject,
5639 /* 4296 */ // Label 22: @4296
5640 /* 4296 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4317), // Rule ID 192 //
5641 /* 4301 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule148Enabled),
5642 /* 4304 */ // MIs[0] dst
5643 /* 4304 */ // No operand predicates
5644 /* 4304 */ // MIs[0] src0
5645 /* 4304 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5646 /* 4308 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5647 /* 4312 */ // MIs[1] cst
5648 /* 4312 */ // No operand predicates
5649 /* 4312 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5650 /* 4314 */ // Combiner Rule #148: constant_fold_intrinsic_round
5651 /* 4314 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5652 /* 4317 */ // Label 250: @4317
5653 /* 4317 */ GIM_Reject,
5654 /* 4318 */ // Label 23: @4318
5655 /* 4318 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4339), // Rule ID 193 //
5656 /* 4323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule149Enabled),
5657 /* 4326 */ // MIs[0] dst
5658 /* 4326 */ // No operand predicates
5659 /* 4326 */ // MIs[0] src0
5660 /* 4326 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5661 /* 4330 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5662 /* 4334 */ // MIs[1] cst
5663 /* 4334 */ // No operand predicates
5664 /* 4334 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5665 /* 4336 */ // Combiner Rule #149: constant_fold_intrinsic_roundeven
5666 /* 4336 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
5667 /* 4339 */ // Label 251: @4339
5668 /* 4339 */ GIM_Reject,
5669 /* 4340 */ // Label 24: @4340
5670 /* 4340 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4351), // Rule ID 73 //
5671 /* 4345 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5672 /* 4348 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_LOAD'
5673 /* 4348 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5674 /* 4351 */ // Label 252: @4351
5675 /* 4351 */ GIM_Reject,
5676 /* 4352 */ // Label 25: @4352
5677 /* 4352 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4363), // Rule ID 74 //
5678 /* 4357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5679 /* 4360 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_SEXTLOAD'
5680 /* 4360 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5681 /* 4363 */ // Label 253: @4363
5682 /* 4363 */ GIM_Reject,
5683 /* 4364 */ // Label 26: @4364
5684 /* 4364 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4375), // Rule ID 75 //
5685 /* 4369 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
5686 /* 4372 */ // Combiner Rule #71: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
5687 /* 4372 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
5688 /* 4375 */ // Label 254: @4375
5689 /* 4375 */ GIM_Reject,
5690 /* 4376 */ // Label 27: @4376
5691 /* 4376 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4387), // Rule ID 103 //
5692 /* 4381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
5693 /* 4384 */ // Combiner Rule #84: erase_undef_store; wip_match_opcode 'G_STORE'
5694 /* 4384 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
5695 /* 4387 */ // Label 255: @4387
5696 /* 4387 */ GIM_Reject,
5697 /* 4388 */ // Label 28: @4388
5698 /* 4388 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4399), // Rule ID 132 //
5699 /* 4393 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
5700 /* 4396 */ // Combiner Rule #94: anyext_trunc_fold; wip_match_opcode 'G_ANYEXT'
5701 /* 4396 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
5702 /* 4399 */ // Label 256: @4399
5703 /* 4399 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4410), // Rule ID 276 //
5704 /* 4404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
5705 /* 4407 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_ANYEXT'
5706 /* 4407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
5707 /* 4410 */ // Label 257: @4410
5708 /* 4410 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4431), // Rule ID 60 //
5709 /* 4415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
5710 /* 4418 */ // MIs[0] root
5711 /* 4418 */ // No operand predicates
5712 /* 4418 */ // MIs[0] select
5713 /* 4418 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5714 /* 4422 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5715 /* 4426 */ // MIs[1] cond
5716 /* 4426 */ // No operand predicates
5717 /* 4426 */ // MIs[1] true
5718 /* 4426 */ // No operand predicates
5719 /* 4426 */ // MIs[1] false
5720 /* 4426 */ // No operand predicates
5721 /* 4426 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5722 /* 4428 */ // Combiner Rule #58: select_of_anyext
5723 /* 4428 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5724 /* 4431 */ // Label 258: @4431
5725 /* 4431 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4452), // Rule ID 55 //
5726 /* 4436 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
5727 /* 4439 */ // MIs[0] root
5728 /* 4439 */ // No operand predicates
5729 /* 4439 */ // MIs[0] second
5730 /* 4439 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5731 /* 4443 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5732 /* 4447 */ // MIs[1] src
5733 /* 4447 */ // No operand predicates
5734 /* 4447 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5735 /* 4449 */ // Combiner Rule #53: anyext_of_anyext
5736 /* 4449 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5737 /* 4452 */ // Label 259: @4452
5738 /* 4452 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4473), // Rule ID 57 //
5739 /* 4457 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
5740 /* 4460 */ // MIs[0] root
5741 /* 4460 */ // No operand predicates
5742 /* 4460 */ // MIs[0] second
5743 /* 4460 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5744 /* 4464 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5745 /* 4468 */ // MIs[1] src
5746 /* 4468 */ // No operand predicates
5747 /* 4468 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5748 /* 4470 */ // Combiner Rule #55: anyext_of_sext
5749 /* 4470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5750 /* 4473 */ // Label 260: @4473
5751 /* 4473 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4494), // Rule ID 56 //
5752 /* 4478 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
5753 /* 4481 */ // MIs[0] root
5754 /* 4481 */ // No operand predicates
5755 /* 4481 */ // MIs[0] second
5756 /* 4481 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5757 /* 4485 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5758 /* 4489 */ // MIs[1] src
5759 /* 4489 */ // No operand predicates
5760 /* 4489 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5761 /* 4491 */ // Combiner Rule #54: anyext_of_zext
5762 /* 4491 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
5763 /* 4494 */ // Label 261: @4494
5764 /* 4494 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4515), // Rule ID 92 //
5765 /* 4499 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5766 /* 4502 */ // MIs[0] dst
5767 /* 4502 */ // No operand predicates
5768 /* 4502 */ // MIs[0] __unary_undef_to_undef_match_0.x
5769 /* 4502 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5770 /* 4506 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5771 /* 4510 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5772 /* 4512 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
5773 /* 4512 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5774 /* 4515 */ // Label 262: @4515
5775 /* 4515 */ GIM_Reject,
5776 /* 4516 */ // Label 29: @4516
5777 /* 4516 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4527), // Rule ID 140 //
5778 /* 4521 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
5779 /* 4524 */ // Combiner Rule #100: trunc_buildvector_fold; wip_match_opcode 'G_TRUNC'
5780 /* 4524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
5781 /* 4527 */ // Label 263: @4527
5782 /* 4527 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4538), // Rule ID 141 //
5783 /* 4532 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
5784 /* 4535 */ // Combiner Rule #101: trunc_lshr_buildvector_fold; wip_match_opcode 'G_TRUNC'
5785 /* 4535 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
5786 /* 4538 */ // Label 264: @4538
5787 /* 4538 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4549), // Rule ID 180 //
5788 /* 4543 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule136Enabled),
5789 /* 4546 */ // Combiner Rule #136: trunc_shift; wip_match_opcode 'G_TRUNC'
5790 /* 4546 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner77),
5791 /* 4549 */ // Label 265: @4549
5792 /* 4549 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4570), // Rule ID 61 //
5793 /* 4554 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
5794 /* 4557 */ // MIs[0] root
5795 /* 4557 */ // No operand predicates
5796 /* 4557 */ // MIs[0] select
5797 /* 4557 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5798 /* 4561 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
5799 /* 4565 */ // MIs[1] cond
5800 /* 4565 */ // No operand predicates
5801 /* 4565 */ // MIs[1] true
5802 /* 4565 */ // No operand predicates
5803 /* 4565 */ // MIs[1] false
5804 /* 4565 */ // No operand predicates
5805 /* 4565 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5806 /* 4567 */ // Combiner Rule #59: select_of_truncate
5807 /* 4567 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
5808 /* 4570 */ // Label 266: @4570
5809 /* 4570 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4599), // Rule ID 63 //
5810 /* 4575 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
5811 /* 4578 */ // MIs[0] root
5812 /* 4578 */ // No operand predicates
5813 /* 4578 */ // MIs[0] binop
5814 /* 4578 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5815 /* 4582 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
5816 /* 4586 */ // MIs[1] x
5817 /* 4586 */ // No operand predicates
5818 /* 4586 */ // MIs[1] const
5819 /* 4586 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5820 /* 4590 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5821 /* 4594 */ // MIs[2] imm
5822 /* 4594 */ // No operand predicates
5823 /* 4594 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5824 /* 4596 */ // Combiner Rule #61: narrow_binop_add
5825 /* 4596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5826 /* 4599 */ // Label 267: @4599
5827 /* 4599 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4628), // Rule ID 66 //
5828 /* 4604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
5829 /* 4607 */ // MIs[0] root
5830 /* 4607 */ // No operand predicates
5831 /* 4607 */ // MIs[0] binop
5832 /* 4607 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5833 /* 4611 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_AND),
5834 /* 4615 */ // MIs[1] x
5835 /* 4615 */ // No operand predicates
5836 /* 4615 */ // MIs[1] const
5837 /* 4615 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5838 /* 4619 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5839 /* 4623 */ // MIs[2] imm
5840 /* 4623 */ // No operand predicates
5841 /* 4623 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5842 /* 4625 */ // Combiner Rule #64: narrow_binop_and
5843 /* 4625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5844 /* 4628 */ // Label 268: @4628
5845 /* 4628 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4657), // Rule ID 65 //
5846 /* 4633 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
5847 /* 4636 */ // MIs[0] root
5848 /* 4636 */ // No operand predicates
5849 /* 4636 */ // MIs[0] binop
5850 /* 4636 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5851 /* 4640 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_MUL),
5852 /* 4644 */ // MIs[1] x
5853 /* 4644 */ // No operand predicates
5854 /* 4644 */ // MIs[1] const
5855 /* 4644 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5856 /* 4648 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5857 /* 4652 */ // MIs[2] imm
5858 /* 4652 */ // No operand predicates
5859 /* 4652 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5860 /* 4654 */ // Combiner Rule #63: narrow_binop_mul
5861 /* 4654 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5862 /* 4657 */ // Label 269: @4657
5863 /* 4657 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4686), // Rule ID 67 //
5864 /* 4662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
5865 /* 4665 */ // MIs[0] root
5866 /* 4665 */ // No operand predicates
5867 /* 4665 */ // MIs[0] binop
5868 /* 4665 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5869 /* 4669 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
5870 /* 4673 */ // MIs[1] x
5871 /* 4673 */ // No operand predicates
5872 /* 4673 */ // MIs[1] const
5873 /* 4673 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5874 /* 4677 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5875 /* 4681 */ // MIs[2] imm
5876 /* 4681 */ // No operand predicates
5877 /* 4681 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5878 /* 4683 */ // Combiner Rule #65: narrow_binop_or
5879 /* 4683 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5880 /* 4686 */ // Label 270: @4686
5881 /* 4686 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4715), // Rule ID 64 //
5882 /* 4691 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
5883 /* 4694 */ // MIs[0] root
5884 /* 4694 */ // No operand predicates
5885 /* 4694 */ // MIs[0] binop
5886 /* 4694 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5887 /* 4698 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
5888 /* 4702 */ // MIs[1] x
5889 /* 4702 */ // No operand predicates
5890 /* 4702 */ // MIs[1] const
5891 /* 4702 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5892 /* 4706 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5893 /* 4710 */ // MIs[2] imm
5894 /* 4710 */ // No operand predicates
5895 /* 4710 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5896 /* 4712 */ // Combiner Rule #62: narrow_binop_sub
5897 /* 4712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5898 /* 4715 */ // Label 271: @4715
5899 /* 4715 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4747), // Rule ID 386 //
5900 /* 4720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule235Enabled),
5901 /* 4723 */ // MIs[0] dst
5902 /* 4723 */ // No operand predicates
5903 /* 4723 */ // MIs[0] min
5904 /* 4723 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5905 /* 4727 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
5906 /* 4731 */ // MIs[1] x
5907 /* 4731 */ // No operand predicates
5908 /* 4731 */ // MIs[1] y
5909 /* 4731 */ // No operand predicates
5910 /* 4731 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
5911 /* 4735 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5912 /* 4737 */ // Combiner Rule #235: trunc_usatu
5913 /* 4737 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
5914 /* 4740 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5915 /* 4742 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
5916 /* 4746 */ GIR_EraseRootFromParent_Done,
5917 /* 4747 */ // Label 272: @4747
5918 /* 4747 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4776), // Rule ID 68 //
5919 /* 4752 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
5920 /* 4755 */ // MIs[0] root
5921 /* 4755 */ // No operand predicates
5922 /* 4755 */ // MIs[0] binop
5923 /* 4755 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5924 /* 4759 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
5925 /* 4763 */ // MIs[1] x
5926 /* 4763 */ // No operand predicates
5927 /* 4763 */ // MIs[1] const
5928 /* 4763 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
5929 /* 4767 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
5930 /* 4771 */ // MIs[2] imm
5931 /* 4771 */ // No operand predicates
5932 /* 4771 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
5933 /* 4773 */ // Combiner Rule #66: narrow_binop_xor
5934 /* 4773 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
5935 /* 4776 */ // Label 273: @4776
5936 /* 4776 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4797), // Rule ID 50 //
5937 /* 4781 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
5938 /* 4784 */ // MIs[0] root
5939 /* 4784 */ // No operand predicates
5940 /* 4784 */ // MIs[0] ext
5941 /* 4784 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5942 /* 4788 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
5943 /* 4792 */ // MIs[1] src
5944 /* 4792 */ // No operand predicates
5945 /* 4792 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5946 /* 4794 */ // Combiner Rule #48: truncate_of_anyext
5947 /* 4794 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5948 /* 4797 */ // Label 274: @4797
5949 /* 4797 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4821), // Rule ID 62 //
5950 /* 4802 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
5951 /* 4805 */ // MIs[0] root
5952 /* 4805 */ // No operand predicates
5953 /* 4805 */ // MIs[0] bv
5954 /* 4805 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5955 /* 4809 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
5956 /* 4813 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
5957 /* 4816 */ // MIs[1] unused
5958 /* 4816 */ // No operand predicates
5959 /* 4816 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5960 /* 4818 */ // Combiner Rule #60: buildvector_of_truncate
5961 /* 4818 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
5962 /* 4821 */ // Label 275: @4821
5963 /* 4821 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4842), // Rule ID 49 //
5964 /* 4826 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
5965 /* 4829 */ // MIs[0] root
5966 /* 4829 */ // No operand predicates
5967 /* 4829 */ // MIs[0] ext
5968 /* 4829 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5969 /* 4833 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
5970 /* 4837 */ // MIs[1] src
5971 /* 4837 */ // No operand predicates
5972 /* 4837 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5973 /* 4839 */ // Combiner Rule #47: truncate_of_sext
5974 /* 4839 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5975 /* 4842 */ // Label 276: @4842
5976 /* 4842 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4863), // Rule ID 48 //
5977 /* 4847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
5978 /* 4850 */ // MIs[0] root
5979 /* 4850 */ // No operand predicates
5980 /* 4850 */ // MIs[0] ext
5981 /* 4850 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5982 /* 4854 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
5983 /* 4858 */ // MIs[1] src
5984 /* 4858 */ // No operand predicates
5985 /* 4858 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5986 /* 4860 */ // Combiner Rule #46: truncate_of_zext
5987 /* 4860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
5988 /* 4863 */ // Label 277: @4863
5989 /* 4863 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4884), // Rule ID 90 //
5990 /* 4868 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
5991 /* 4871 */ // MIs[0] dst
5992 /* 4871 */ // No operand predicates
5993 /* 4871 */ // MIs[0] __unary_undef_to_undef_match_0.x
5994 /* 4871 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5995 /* 4875 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5996 /* 4879 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5997 /* 4881 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
5998 /* 4881 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
5999 /* 4884 */ // Label 278: @4884
6000 /* 4884 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4905), // Rule ID 69 //
6001 /* 4889 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
6002 /* 4892 */ // MIs[0] root
6003 /* 4892 */ // No operand predicates
6004 /* 4892 */ // MIs[0] int
6005 /* 4892 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6006 /* 4896 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6007 /* 4900 */ // MIs[1] imm
6008 /* 4900 */ // No operand predicates
6009 /* 4900 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6010 /* 4902 */ // Combiner Rule #67: integer_of_truncate
6011 /* 4902 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
6012 /* 4905 */ // Label 279: @4905
6013 /* 4905 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4916), // Rule ID 384 //
6014 /* 4910 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule233Enabled),
6015 /* 4913 */ // MIs[0] dst
6016 /* 4913 */ // No operand predicates
6017 /* 4913 */ // MIs[0] src
6018 /* 4913 */ // No operand predicates
6019 /* 4913 */ // Combiner Rule #233: trunc_ssats
6020 /* 4913 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner152),
6021 /* 4916 */ // Label 280: @4916
6022 /* 4916 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4927), // Rule ID 385 //
6023 /* 4921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule234Enabled),
6024 /* 4924 */ // MIs[0] dst
6025 /* 4924 */ // No operand predicates
6026 /* 4924 */ // MIs[0] src
6027 /* 4924 */ // No operand predicates
6028 /* 4924 */ // Combiner Rule #234: trunc_ssatu
6029 /* 4924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner153),
6030 /* 4927 */ // Label 281: @4927
6031 /* 4927 */ GIM_Reject,
6032 /* 4928 */ // Label 30: @4928
6033 /* 4928 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4960), // Rule ID 387 //
6034 /* 4933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule236Enabled),
6035 /* 4936 */ // MIs[0] dst
6036 /* 4936 */ // No operand predicates
6037 /* 4936 */ // MIs[0] src
6038 /* 4936 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6039 /* 4940 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
6040 /* 4944 */ // MIs[1] x
6041 /* 4944 */ // No operand predicates
6042 /* 4944 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
6043 /* 4948 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6044 /* 4950 */ // Combiner Rule #236: truncusatu_to_fptouisat
6045 /* 4950 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
6046 /* 4953 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
6047 /* 4955 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
6048 /* 4959 */ GIR_EraseRootFromParent_Done,
6049 /* 4960 */ // Label 282: @4960
6050 /* 4960 */ GIM_Reject,
6051 /* 4961 */ // Label 31: @4961
6052 /* 4961 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4972), // Rule ID 275 //
6053 /* 4966 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6054 /* 4969 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_SEXT'
6055 /* 4969 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6056 /* 4972 */ // Label 283: @4972
6057 /* 4972 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4993), // Rule ID 54 //
6058 /* 4977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
6059 /* 4980 */ // MIs[0] root
6060 /* 4980 */ // No operand predicates
6061 /* 4980 */ // MIs[0] second
6062 /* 4980 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6063 /* 4984 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6064 /* 4988 */ // MIs[1] src
6065 /* 4988 */ // No operand predicates
6066 /* 4988 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6067 /* 4990 */ // Combiner Rule #52: sext_of_anyext
6068 /* 4990 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6069 /* 4993 */ // Label 284: @4993
6070 /* 4993 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(5014), // Rule ID 53 //
6071 /* 4998 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
6072 /* 5001 */ // MIs[0] root
6073 /* 5001 */ // No operand predicates
6074 /* 5001 */ // MIs[0] second
6075 /* 5001 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6076 /* 5005 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
6077 /* 5009 */ // MIs[1] src
6078 /* 5009 */ // No operand predicates
6079 /* 5009 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6080 /* 5011 */ // Combiner Rule #51: sext_of_sext
6081 /* 5011 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6082 /* 5014 */ // Label 285: @5014
6083 /* 5014 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(5035), // Rule ID 363 //
6084 /* 5019 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule214Enabled),
6085 /* 5022 */ // MIs[0] root
6086 /* 5022 */ // No operand predicates
6087 /* 5022 */ // MIs[0] src
6088 /* 5022 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6089 /* 5026 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6090 /* 5030 */ // MIs[1] x
6091 /* 5030 */ // No operand predicates
6092 /* 5030 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6093 /* 5032 */ // Combiner Rule #214: sext_trunc
6094 /* 5032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner133),
6095 /* 5035 */ // Label 286: @5035
6096 /* 5035 */ GIM_Reject,
6097 /* 5036 */ // Label 32: @5036
6098 /* 5036 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(5047), // Rule ID 167 //
6099 /* 5041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
6100 /* 5044 */ // Combiner Rule #123: sext_inreg_of_load; wip_match_opcode 'G_SEXT_INREG'
6101 /* 5044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
6102 /* 5047 */ // Label 287: @5047
6103 /* 5047 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(5058), // Rule ID 175 //
6104 /* 5052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
6105 /* 5055 */ // Combiner Rule #131: redundant_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6106 /* 5055 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
6107 /* 5058 */ // Label 288: @5058
6108 /* 5058 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(5069), // Rule ID 244 //
6109 /* 5063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule177Enabled),
6110 /* 5066 */ // Combiner Rule #177: bitfield_extract_from_sext_inreg; wip_match_opcode 'G_SEXT_INREG'
6111 /* 5066 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner99),
6112 /* 5069 */ // Label 289: @5069
6113 /* 5069 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(5090), // Rule ID 58 //
6114 /* 5074 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
6115 /* 5077 */ // MIs[0] dst
6116 /* 5077 */ // No operand predicates
6117 /* 5077 */ // MIs[0] x
6118 /* 5077 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6119 /* 5081 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
6120 /* 5085 */ // MIs[1] src
6121 /* 5085 */ // No operand predicates
6122 /* 5085 */ // MIs[1] a
6123 /* 5085 */ // No operand predicates
6124 /* 5085 */ // MIs[0] b
6125 /* 5085 */ // No operand predicates
6126 /* 5085 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6127 /* 5087 */ // Combiner Rule #56: sext_inreg_of_sext_inreg
6128 /* 5087 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
6129 /* 5090 */ // Label 290: @5090
6130 /* 5090 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(5101), // Rule ID 179 //
6131 /* 5095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule135Enabled),
6132 /* 5098 */ // MIs[0] dst
6133 /* 5098 */ // No operand predicates
6134 /* 5098 */ // MIs[0] src
6135 /* 5098 */ // No operand predicates
6136 /* 5098 */ // MIs[0] imm
6137 /* 5098 */ // No operand predicates
6138 /* 5098 */ // Combiner Rule #135: sext_inreg_to_zext_inreg
6139 /* 5098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner76),
6140 /* 5101 */ // Label 291: @5101
6141 /* 5101 */ GIM_Reject,
6142 /* 5102 */ // Label 33: @5102
6143 /* 5102 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(5113), // Rule ID 178 //
6144 /* 5107 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
6145 /* 5110 */ // Combiner Rule #134: zext_trunc_fold; wip_match_opcode 'G_ZEXT'
6146 /* 5110 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner75),
6147 /* 5113 */ // Label 292: @5113
6148 /* 5113 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5124), // Rule ID 274 //
6149 /* 5118 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule184Enabled),
6150 /* 5121 */ // Combiner Rule #184: constant_fold_cast_op; wip_match_opcode 'G_ZEXT'
6151 /* 5121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner106),
6152 /* 5124 */ // Label 293: @5124
6153 /* 5124 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5145), // Rule ID 59 //
6154 /* 5129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
6155 /* 5132 */ // MIs[0] root
6156 /* 5132 */ // No operand predicates
6157 /* 5132 */ // MIs[0] select
6158 /* 5132 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6159 /* 5136 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SELECT),
6160 /* 5140 */ // MIs[1] cond
6161 /* 5140 */ // No operand predicates
6162 /* 5140 */ // MIs[1] true
6163 /* 5140 */ // No operand predicates
6164 /* 5140 */ // MIs[1] false
6165 /* 5140 */ // No operand predicates
6166 /* 5140 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6167 /* 5142 */ // Combiner Rule #57: select_of_zext
6168 /* 5142 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
6169 /* 5145 */ // Label 294: @5145
6170 /* 5145 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5166), // Rule ID 52 //
6171 /* 5150 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
6172 /* 5153 */ // MIs[0] root
6173 /* 5153 */ // No operand predicates
6174 /* 5153 */ // MIs[0] second
6175 /* 5153 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6176 /* 5157 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
6177 /* 5161 */ // MIs[1] src
6178 /* 5161 */ // No operand predicates
6179 /* 5161 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6180 /* 5163 */ // Combiner Rule #50: zext_of_anyext
6181 /* 5163 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6182 /* 5166 */ // Label 295: @5166
6183 /* 5166 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5193), // Rule ID 364 //
6184 /* 5171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule215Enabled),
6185 /* 5174 */ // MIs[0] root
6186 /* 5174 */ // No operand predicates
6187 /* 5174 */ // MIs[0] src
6188 /* 5174 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6189 /* 5178 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6190 /* 5182 */ GIM_MIFlags, /*MI*/1, GIMT_Encode4(MachineInstr::NoUWrap),
6191 /* 5188 */ // MIs[1] x
6192 /* 5188 */ // No operand predicates
6193 /* 5188 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6194 /* 5190 */ // Combiner Rule #215: zext_trunc
6195 /* 5190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner134),
6196 /* 5193 */ // Label 296: @5193
6197 /* 5193 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5214), // Rule ID 51 //
6198 /* 5198 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
6199 /* 5201 */ // MIs[0] root
6200 /* 5201 */ // No operand predicates
6201 /* 5201 */ // MIs[0] second
6202 /* 5201 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6203 /* 5205 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
6204 /* 5209 */ // MIs[1] src
6205 /* 5209 */ // No operand predicates
6206 /* 5209 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6207 /* 5211 */ // Combiner Rule #49: zext_of_zext
6208 /* 5211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
6209 /* 5214 */ // Label 297: @5214
6210 /* 5214 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5231), // Rule ID 365 //
6211 /* 5219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule216Enabled),
6212 /* 5222 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NonNeg),
6213 /* 5228 */ // MIs[0] root
6214 /* 5228 */ // No operand predicates
6215 /* 5228 */ // MIs[0] x
6216 /* 5228 */ // No operand predicates
6217 /* 5228 */ // Combiner Rule #216: nneg_zext
6218 /* 5228 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner135),
6219 /* 5231 */ // Label 298: @5231
6220 /* 5231 */ GIM_Reject,
6221 /* 5232 */ // Label 34: @5232
6222 /* 5232 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5243), // Rule ID 83 //
6223 /* 5237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
6224 /* 5240 */ // Combiner Rule #77: binop_left_undef_to_zero; wip_match_opcode 'G_SHL'
6225 /* 5240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
6226 /* 5243 */ // Label 299: @5243
6227 /* 5243 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5254), // Rule ID 86 //
6228 /* 5248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6229 /* 5251 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_SHL'
6230 /* 5251 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6231 /* 5254 */ // Label 300: @5254
6232 /* 5254 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5265), // Rule ID 215 //
6233 /* 5259 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6234 /* 5262 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_SHL'
6235 /* 5262 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6236 /* 5265 */ // Label 301: @5265
6237 /* 5265 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5276), // Rule ID 220 //
6238 /* 5270 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6239 /* 5273 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_SHL'
6240 /* 5273 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6241 /* 5276 */ // Label 302: @5276
6242 /* 5276 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5287), // Rule ID 243 //
6243 /* 5281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule176Enabled),
6244 /* 5284 */ // Combiner Rule #176: commute_shift; wip_match_opcode 'G_SHL'
6245 /* 5284 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner98),
6246 /* 5287 */ // Label 303: @5287
6247 /* 5287 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5298), // Rule ID 257 //
6248 /* 5292 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6249 /* 5295 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SHL'
6250 /* 5295 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6251 /* 5298 */ // Label 304: @5298
6252 /* 5298 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5309), // Rule ID 306 //
6253 /* 5303 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6254 /* 5306 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SHL'
6255 /* 5306 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6256 /* 5309 */ // Label 305: @5309
6257 /* 5309 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5344), // Rule ID 44 //
6258 /* 5314 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
6259 /* 5317 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::NoSWrap),
6260 /* 5323 */ // MIs[0] root
6261 /* 5323 */ // No operand predicates
6262 /* 5323 */ // MIs[0] left
6263 /* 5323 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6264 /* 5327 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_VSCALE),
6265 /* 5331 */ // MIs[1] imm
6266 /* 5331 */ // No operand predicates
6267 /* 5331 */ // MIs[0] x
6268 /* 5331 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
6269 /* 5335 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6270 /* 5339 */ // MIs[2] imm1
6271 /* 5339 */ // No operand predicates
6272 /* 5339 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6273 /* 5341 */ // Combiner Rule #42: shl_of_vscale
6274 /* 5341 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
6275 /* 5344 */ // Label 306: @5344
6276 /* 5344 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5384), // Rule ID 121 //
6277 /* 5349 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6278 /* 5352 */ // MIs[0] dst
6279 /* 5352 */ // No operand predicates
6280 /* 5352 */ // MIs[0] zero
6281 /* 5352 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6282 /* 5356 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6283 /* 5360 */ // MIs[1] Operand 1
6284 /* 5360 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6285 /* 5371 */ // MIs[0] rhs
6286 /* 5371 */ // No operand predicates
6287 /* 5371 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6288 /* 5376 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6289 /* 5378 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
6290 /* 5378 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6291 /* 5383 */ GIR_EraseRootFromParent_Done,
6292 /* 5384 */ // Label 307: @5384
6293 /* 5384 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5407), // Rule ID 111 //
6294 /* 5389 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6295 /* 5392 */ // MIs[0] dst
6296 /* 5392 */ // No operand predicates
6297 /* 5392 */ // MIs[0] lhs
6298 /* 5392 */ // No operand predicates
6299 /* 5392 */ // MIs[0] Operand 2
6300 /* 5392 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6301 /* 5396 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6302 /* 5401 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[4]]
6303 /* 5401 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6304 /* 5406 */ GIR_EraseRootFromParent_Done,
6305 /* 5407 */ // Label 308: @5407
6306 /* 5407 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5418), // Rule ID 152 //
6307 /* 5412 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6308 /* 5415 */ // MIs[0] root
6309 /* 5415 */ // No operand predicates
6310 /* 5415 */ // MIs[0] mi.shifted
6311 /* 5415 */ // No operand predicates
6312 /* 5415 */ // MIs[0] mi.amt
6313 /* 5415 */ // No operand predicates
6314 /* 5415 */ // Combiner Rule #110: shifts_too_big @ [mi[0]]
6315 /* 5415 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6316 /* 5418 */ // Label 309: @5418
6317 /* 5418 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5429), // Rule ID 168 //
6318 /* 5423 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
6319 /* 5426 */ // MIs[0] dst
6320 /* 5426 */ // No operand predicates
6321 /* 5426 */ // MIs[0] src0
6322 /* 5426 */ // No operand predicates
6323 /* 5426 */ // MIs[0] src1
6324 /* 5426 */ // No operand predicates
6325 /* 5426 */ // Combiner Rule #124: reduce_shl_of_extend
6326 /* 5426 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
6327 /* 5429 */ // Label 310: @5429
6328 /* 5429 */ GIM_Reject,
6329 /* 5430 */ // Label 35: @5430
6330 /* 5430 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5441), // Rule ID 88 //
6331 /* 5435 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6332 /* 5438 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_LSHR'
6333 /* 5438 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6334 /* 5441 */ // Label 311: @5441
6335 /* 5441 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5452), // Rule ID 217 //
6336 /* 5446 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6337 /* 5449 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_LSHR'
6338 /* 5449 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6339 /* 5452 */ // Label 312: @5452
6340 /* 5452 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5463), // Rule ID 222 //
6341 /* 5457 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6342 /* 5460 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_LSHR'
6343 /* 5460 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6344 /* 5463 */ // Label 313: @5463
6345 /* 5463 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5474), // Rule ID 247 //
6346 /* 5468 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6347 /* 5471 */ // Combiner Rule #179: bitfield_extract_from_shr; wip_match_opcode 'G_LSHR'
6348 /* 5471 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6349 /* 5474 */ // Label 314: @5474
6350 /* 5474 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5485), // Rule ID 249 //
6351 /* 5479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6352 /* 5482 */ // Combiner Rule #180: bitfield_extract_from_shr_and; wip_match_opcode 'G_LSHR'
6353 /* 5482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6354 /* 5485 */ // Label 315: @5485
6355 /* 5485 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5496), // Rule ID 254 //
6356 /* 5490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6357 /* 5493 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_LSHR'
6358 /* 5493 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6359 /* 5496 */ // Label 316: @5496
6360 /* 5496 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5507), // Rule ID 304 //
6361 /* 5501 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6362 /* 5504 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_LSHR'
6363 /* 5504 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6364 /* 5507 */ // Label 317: @5507
6365 /* 5507 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5536), // Rule ID 388 //
6366 /* 5512 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule237Enabled),
6367 /* 5515 */ // MIs[0] dst
6368 /* 5515 */ // No operand predicates
6369 /* 5515 */ // MIs[0] d2
6370 /* 5515 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6371 /* 5519 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
6372 /* 5523 */ // MIs[1] d1
6373 /* 5523 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
6374 /* 5527 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
6375 /* 5531 */ // MIs[2] x
6376 /* 5531 */ // No operand predicates
6377 /* 5531 */ // MIs[2] y
6378 /* 5531 */ // No operand predicates
6379 /* 5531 */ // MIs[0] z
6380 /* 5531 */ // No operand predicates
6381 /* 5531 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
6382 /* 5533 */ // Combiner Rule #237: lshr_of_trunc_of_lshr
6383 /* 5533 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner154),
6384 /* 5536 */ // Label 318: @5536
6385 /* 5536 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5576), // Rule ID 122 //
6386 /* 5541 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6387 /* 5544 */ // MIs[0] dst
6388 /* 5544 */ // No operand predicates
6389 /* 5544 */ // MIs[0] zero
6390 /* 5544 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6391 /* 5548 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6392 /* 5552 */ // MIs[1] Operand 1
6393 /* 5552 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6394 /* 5563 */ // MIs[0] rhs
6395 /* 5563 */ // No operand predicates
6396 /* 5563 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6397 /* 5568 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6398 /* 5570 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
6399 /* 5570 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6400 /* 5575 */ GIR_EraseRootFromParent_Done,
6401 /* 5576 */ // Label 319: @5576
6402 /* 5576 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5599), // Rule ID 113 //
6403 /* 5581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6404 /* 5584 */ // MIs[0] dst
6405 /* 5584 */ // No operand predicates
6406 /* 5584 */ // MIs[0] lhs
6407 /* 5584 */ // No operand predicates
6408 /* 5584 */ // MIs[0] Operand 2
6409 /* 5584 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6410 /* 5588 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6411 /* 5593 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[6]]
6412 /* 5593 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6413 /* 5598 */ GIR_EraseRootFromParent_Done,
6414 /* 5599 */ // Label 320: @5599
6415 /* 5599 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5610), // Rule ID 154 //
6416 /* 5604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6417 /* 5607 */ // MIs[0] root
6418 /* 5607 */ // No operand predicates
6419 /* 5607 */ // MIs[0] mi.shifted
6420 /* 5607 */ // No operand predicates
6421 /* 5607 */ // MIs[0] mi.amt
6422 /* 5607 */ // No operand predicates
6423 /* 5607 */ // Combiner Rule #110: shifts_too_big @ [mi[2]]
6424 /* 5607 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6425 /* 5610 */ // Label 321: @5610
6426 /* 5610 */ GIM_Reject,
6427 /* 5611 */ // Label 36: @5611
6428 /* 5611 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5622), // Rule ID 87 //
6429 /* 5616 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
6430 /* 5619 */ // Combiner Rule #78: binop_right_undef_to_undef; wip_match_opcode 'G_ASHR'
6431 /* 5619 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
6432 /* 5622 */ // Label 322: @5622
6433 /* 5622 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5633), // Rule ID 165 //
6434 /* 5627 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
6435 /* 5630 */ // Combiner Rule #121: shl_ashr_to_sext_inreg; wip_match_opcode 'G_ASHR'
6436 /* 5630 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
6437 /* 5633 */ // Label 323: @5633
6438 /* 5633 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5644), // Rule ID 216 //
6439 /* 5638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6440 /* 5641 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_ASHR'
6441 /* 5641 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6442 /* 5644 */ // Label 324: @5644
6443 /* 5644 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5655), // Rule ID 221 //
6444 /* 5649 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6445 /* 5652 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_ASHR'
6446 /* 5652 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6447 /* 5655 */ // Label 325: @5655
6448 /* 5655 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5666), // Rule ID 246 //
6449 /* 5660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule179Enabled),
6450 /* 5663 */ // Combiner Rule #179: bitfield_extract_from_shr; wip_match_opcode 'G_ASHR'
6451 /* 5663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner101),
6452 /* 5666 */ // Label 326: @5666
6453 /* 5666 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5677), // Rule ID 248 //
6454 /* 5671 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule180Enabled),
6455 /* 5674 */ // Combiner Rule #180: bitfield_extract_from_shr_and; wip_match_opcode 'G_ASHR'
6456 /* 5674 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner102),
6457 /* 5677 */ // Label 327: @5677
6458 /* 5677 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5688), // Rule ID 253 //
6459 /* 5682 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
6460 /* 5685 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_ASHR'
6461 /* 5685 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
6462 /* 5688 */ // Label 328: @5688
6463 /* 5688 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(5699), // Rule ID 305 //
6464 /* 5693 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6465 /* 5696 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_ASHR'
6466 /* 5696 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6467 /* 5699 */ // Label 329: @5699
6468 /* 5699 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(5739), // Rule ID 123 //
6469 /* 5704 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
6470 /* 5707 */ // MIs[0] dst
6471 /* 5707 */ // No operand predicates
6472 /* 5707 */ // MIs[0] zero
6473 /* 5707 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6474 /* 5711 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
6475 /* 5715 */ // MIs[1] Operand 1
6476 /* 5715 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
6477 /* 5726 */ // MIs[0] rhs
6478 /* 5726 */ // No operand predicates
6479 /* 5726 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6480 /* 5731 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6481 /* 5733 */ // Combiner Rule #90: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
6482 /* 5733 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6483 /* 5738 */ GIR_EraseRootFromParent_Done,
6484 /* 5739 */ // Label 330: @5739
6485 /* 5739 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(5762), // Rule ID 112 //
6486 /* 5744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6487 /* 5747 */ // MIs[0] dst
6488 /* 5747 */ // No operand predicates
6489 /* 5747 */ // MIs[0] lhs
6490 /* 5747 */ // No operand predicates
6491 /* 5747 */ // MIs[0] Operand 2
6492 /* 5747 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6493 /* 5751 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6494 /* 5756 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[5]]
6495 /* 5756 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6496 /* 5761 */ GIR_EraseRootFromParent_Done,
6497 /* 5762 */ // Label 331: @5762
6498 /* 5762 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(5773), // Rule ID 153 //
6499 /* 5767 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
6500 /* 5770 */ // MIs[0] root
6501 /* 5770 */ // No operand predicates
6502 /* 5770 */ // MIs[0] mi.shifted
6503 /* 5770 */ // No operand predicates
6504 /* 5770 */ // MIs[0] mi.amt
6505 /* 5770 */ // No operand predicates
6506 /* 5770 */ // Combiner Rule #110: shifts_too_big @ [mi[1]]
6507 /* 5770 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
6508 /* 5773 */ // Label 332: @5773
6509 /* 5773 */ GIM_Reject,
6510 /* 5774 */ // Label 37: @5774
6511 /* 5774 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(5785), // Rule ID 231 //
6512 /* 5779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6513 /* 5782 */ // Combiner Rule #168: funnel_shift_to_rotate; wip_match_opcode 'G_FSHL'
6514 /* 5782 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6515 /* 5785 */ // Label 333: @5785
6516 /* 5785 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(5796), // Rule ID 235 //
6517 /* 5790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6518 /* 5793 */ // Combiner Rule #171: funnel_shift_overshift; wip_match_opcode 'G_FSHL'
6519 /* 5793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6520 /* 5796 */ // Label 334: @5796
6521 /* 5796 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(5816), // Rule ID 234 //
6522 /* 5801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule170Enabled),
6523 /* 5804 */ // MIs[0] x
6524 /* 5804 */ // No operand predicates
6525 /* 5804 */ // MIs[0] y
6526 /* 5804 */ // No operand predicates
6527 /* 5804 */ // MIs[0] z
6528 /* 5804 */ // No operand predicates
6529 /* 5804 */ // MIs[0] Operand 3
6530 /* 5804 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6531 /* 5808 */ // Combiner Rule #170: funnel_shift_left_zero
6532 /* 5808 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6533 /* 5811 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6534 /* 5813 */ GIR_RootToRootCopy, /*OpIdx*/1, // y
6535 /* 5815 */ GIR_EraseRootFromParent_Done,
6536 /* 5816 */ // Label 335: @5816
6537 /* 5816 */ GIM_Reject,
6538 /* 5817 */ // Label 38: @5817
6539 /* 5817 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(5828), // Rule ID 232 //
6540 /* 5822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule168Enabled),
6541 /* 5825 */ // Combiner Rule #168: funnel_shift_to_rotate; wip_match_opcode 'G_FSHR'
6542 /* 5825 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner96),
6543 /* 5828 */ // Label 336: @5828
6544 /* 5828 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(5839), // Rule ID 236 //
6545 /* 5833 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule171Enabled),
6546 /* 5836 */ // Combiner Rule #171: funnel_shift_overshift; wip_match_opcode 'G_FSHR'
6547 /* 5836 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner97),
6548 /* 5839 */ // Label 337: @5839
6549 /* 5839 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(5859), // Rule ID 233 //
6550 /* 5844 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule169Enabled),
6551 /* 5847 */ // MIs[0] x
6552 /* 5847 */ // No operand predicates
6553 /* 5847 */ // MIs[0] y
6554 /* 5847 */ // No operand predicates
6555 /* 5847 */ // MIs[0] z
6556 /* 5847 */ // No operand predicates
6557 /* 5847 */ // MIs[0] Operand 3
6558 /* 5847 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
6559 /* 5851 */ // Combiner Rule #169: funnel_shift_right_zero
6560 /* 5851 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
6561 /* 5854 */ GIR_RootToRootCopy, /*OpIdx*/0, // x
6562 /* 5856 */ GIR_RootToRootCopy, /*OpIdx*/2, // z
6563 /* 5858 */ GIR_EraseRootFromParent_Done,
6564 /* 5859 */ // Label 338: @5859
6565 /* 5859 */ GIM_Reject,
6566 /* 5860 */ // Label 39: @5860
6567 /* 5860 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(5883), // Rule ID 116 //
6568 /* 5865 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6569 /* 5868 */ // MIs[0] dst
6570 /* 5868 */ // No operand predicates
6571 /* 5868 */ // MIs[0] lhs
6572 /* 5868 */ // No operand predicates
6573 /* 5868 */ // MIs[0] Operand 2
6574 /* 5868 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6575 /* 5872 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6576 /* 5877 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[9]]
6577 /* 5877 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6578 /* 5882 */ GIR_EraseRootFromParent_Done,
6579 /* 5883 */ // Label 339: @5883
6580 /* 5883 */ GIM_Reject,
6581 /* 5884 */ // Label 40: @5884
6582 /* 5884 */ GIM_Try, /*On fail goto*//*Label 340*/ GIMT_Encode4(5907), // Rule ID 115 //
6583 /* 5889 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
6584 /* 5892 */ // MIs[0] dst
6585 /* 5892 */ // No operand predicates
6586 /* 5892 */ // MIs[0] lhs
6587 /* 5892 */ // No operand predicates
6588 /* 5892 */ // MIs[0] Operand 2
6589 /* 5892 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
6590 /* 5896 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6591 /* 5901 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[8]]
6592 /* 5901 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6593 /* 5906 */ GIR_EraseRootFromParent_Done,
6594 /* 5907 */ // Label 340: @5907
6595 /* 5907 */ GIM_Reject,
6596 /* 5908 */ // Label 41: @5908
6597 /* 5908 */ GIM_Try, /*On fail goto*//*Label 341*/ GIMT_Encode4(5919), // Rule ID 160 //
6598 /* 5913 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
6599 /* 5916 */ // Combiner Rule #116: icmp_to_true_false_known_bits; wip_match_opcode 'G_ICMP'
6600 /* 5916 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
6601 /* 5919 */ // Label 341: @5919
6602 /* 5919 */ GIM_Try, /*On fail goto*//*Label 342*/ GIMT_Encode4(5930), // Rule ID 161 //
6603 /* 5924 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
6604 /* 5927 */ // Combiner Rule #117: icmp_to_lhs_known_bits; wip_match_opcode 'G_ICMP'
6605 /* 5927 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
6606 /* 5930 */ // Label 342: @5930
6607 /* 5930 */ GIM_Try, /*On fail goto*//*Label 343*/ GIMT_Encode4(5941), // Rule ID 164 //
6608 /* 5935 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
6609 /* 5938 */ // Combiner Rule #120: redundant_binop_in_equality; wip_match_opcode 'G_ICMP'
6610 /* 5938 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
6611 /* 5941 */ // Label 343: @5941
6612 /* 5941 */ GIM_Try, /*On fail goto*//*Label 344*/ GIMT_Encode4(5952), // Rule ID 158 //
6613 /* 5946 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
6614 /* 5949 */ // MIs[0] root
6615 /* 5949 */ // No operand predicates
6616 /* 5949 */ // MIs[0] pred
6617 /* 5949 */ // No operand predicates
6618 /* 5949 */ // MIs[0] lhs
6619 /* 5949 */ // No operand predicates
6620 /* 5949 */ // MIs[0] rhs
6621 /* 5949 */ // No operand predicates
6622 /* 5949 */ // Combiner Rule #114: canonicalize_icmp
6623 /* 5949 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
6624 /* 5952 */ // Label 344: @5952
6625 /* 5952 */ GIM_Reject,
6626 /* 5953 */ // Label 42: @5953
6627 /* 5953 */ GIM_Try, /*On fail goto*//*Label 345*/ GIMT_Encode4(5964), // Rule ID 159 //
6628 /* 5958 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
6629 /* 5961 */ // MIs[0] root
6630 /* 5961 */ // No operand predicates
6631 /* 5961 */ // MIs[0] pred
6632 /* 5961 */ // No operand predicates
6633 /* 5961 */ // MIs[0] lhs
6634 /* 5961 */ // No operand predicates
6635 /* 5961 */ // MIs[0] rhs
6636 /* 5961 */ // No operand predicates
6637 /* 5961 */ // Combiner Rule #115: canonicalize_fcmp
6638 /* 5961 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
6639 /* 5964 */ // Label 345: @5964
6640 /* 5964 */ GIM_Reject,
6641 /* 5965 */ // Label 43: @5965
6642 /* 5965 */ GIM_Try, /*On fail goto*//*Label 346*/ GIMT_Encode4(5976), // Rule ID 106 //
6643 /* 5970 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
6644 /* 5973 */ // Combiner Rule #86: select_same_val; wip_match_opcode 'G_SELECT'
6645 /* 5973 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
6646 /* 5976 */ // Label 346: @5976
6647 /* 5976 */ GIM_Try, /*On fail goto*//*Label 347*/ GIMT_Encode4(5987), // Rule ID 171 //
6648 /* 5981 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
6649 /* 5984 */ // Combiner Rule #127: select_constant_cmp; wip_match_opcode 'G_SELECT'
6650 /* 5984 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
6651 /* 5987 */ // Label 347: @5987
6652 /* 5987 */ GIM_Try, /*On fail goto*//*Label 348*/ GIMT_Encode4(5998), // Rule ID 173 //
6653 /* 5992 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
6654 /* 5995 */ // Combiner Rule #129: match_selects; wip_match_opcode 'G_SELECT'
6655 /* 5995 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
6656 /* 5998 */ // Label 348: @5998
6657 /* 5998 */ GIM_Try, /*On fail goto*//*Label 349*/ GIMT_Encode4(6009), // Rule ID 328 //
6658 /* 6003 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule206Enabled),
6659 /* 6006 */ // Combiner Rule #206: select_to_minmax; wip_match_opcode 'G_SELECT'
6660 /* 6006 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner125),
6661 /* 6009 */ // Label 349: @6009
6662 /* 6009 */ GIM_Try, /*On fail goto*//*Label 350*/ GIMT_Encode4(6030), // Rule ID 172 //
6663 /* 6014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
6664 /* 6017 */ // MIs[0] root
6665 /* 6017 */ // No operand predicates
6666 /* 6017 */ // MIs[0] tst
6667 /* 6017 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6668 /* 6021 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
6669 /* 6025 */ // MIs[1] tst1
6670 /* 6025 */ // No operand predicates
6671 /* 6025 */ // MIs[1] a
6672 /* 6025 */ // No operand predicates
6673 /* 6025 */ // MIs[1] b
6674 /* 6025 */ // No operand predicates
6675 /* 6025 */ // MIs[0] x
6676 /* 6025 */ // No operand predicates
6677 /* 6025 */ // MIs[0] y
6678 /* 6025 */ // No operand predicates
6679 /* 6025 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6680 /* 6027 */ // Combiner Rule #128: select_to_iminmax
6681 /* 6027 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
6682 /* 6030 */ // Label 350: @6030
6683 /* 6030 */ GIM_Try, /*On fail goto*//*Label 351*/ GIMT_Encode4(6059), // Rule ID 170 //
6684 /* 6035 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
6685 /* 6038 */ // MIs[0] dst
6686 /* 6038 */ // No operand predicates
6687 /* 6038 */ // MIs[0] undef
6688 /* 6038 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
6689 /* 6042 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
6690 /* 6046 */ // MIs[0] x
6691 /* 6046 */ // No operand predicates
6692 /* 6046 */ // MIs[0] y
6693 /* 6046 */ // No operand predicates
6694 /* 6046 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6695 /* 6051 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
6696 /* 6053 */ // Combiner Rule #126: select_undef_cmp
6697 /* 6053 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
6698 /* 6058 */ GIR_EraseRootFromParent_Done,
6699 /* 6059 */ // Label 351: @6059
6700 /* 6059 */ GIM_Reject,
6701 /* 6060 */ // Label 44: @6060
6702 /* 6060 */ GIM_Try, /*On fail goto*//*Label 352*/ GIMT_Encode4(6071), // Rule ID 339 //
6703 /* 6065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6704 /* 6068 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
6705 /* 6068 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6706 /* 6071 */ // Label 352: @6071
6707 /* 6071 */ GIM_Try, /*On fail goto*//*Label 353*/ GIMT_Encode4(6082), // Rule ID 381 //
6708 /* 6076 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6709 /* 6079 */ // Combiner Rule #231: match_addos; wip_match_opcode 'G_UADDO'
6710 /* 6079 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6711 /* 6082 */ // Label 353: @6082
6712 /* 6082 */ GIM_Reject,
6713 /* 6083 */ // Label 45: @6083
6714 /* 6083 */ GIM_Try, /*On fail goto*//*Label 354*/ GIMT_Encode4(6094), // Rule ID 204 //
6715 /* 6088 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6716 /* 6091 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_UADDE'
6717 /* 6091 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6718 /* 6094 */ // Label 354: @6094
6719 /* 6094 */ GIM_Reject,
6720 /* 6095 */ // Label 46: @6095
6721 /* 6095 */ GIM_Try, /*On fail goto*//*Label 355*/ GIMT_Encode4(6106), // Rule ID 383 //
6722 /* 6100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6723 /* 6103 */ // Combiner Rule #232: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
6724 /* 6103 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6725 /* 6106 */ // Label 355: @6106
6726 /* 6106 */ GIM_Reject,
6727 /* 6107 */ // Label 47: @6107
6728 /* 6107 */ GIM_Try, /*On fail goto*//*Label 356*/ GIMT_Encode4(6118), // Rule ID 206 //
6729 /* 6112 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6730 /* 6115 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_USUBE'
6731 /* 6115 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6732 /* 6118 */ // Label 356: @6118
6733 /* 6118 */ GIM_Reject,
6734 /* 6119 */ // Label 48: @6119
6735 /* 6119 */ GIM_Try, /*On fail goto*//*Label 357*/ GIMT_Encode4(6130), // Rule ID 340 //
6736 /* 6124 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6737 /* 6127 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
6738 /* 6127 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6739 /* 6130 */ // Label 357: @6130
6740 /* 6130 */ GIM_Try, /*On fail goto*//*Label 358*/ GIMT_Encode4(6141), // Rule ID 380 //
6741 /* 6135 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule231Enabled),
6742 /* 6138 */ // Combiner Rule #231: match_addos; wip_match_opcode 'G_SADDO'
6743 /* 6138 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner150),
6744 /* 6141 */ // Label 358: @6141
6745 /* 6141 */ GIM_Reject,
6746 /* 6142 */ // Label 49: @6142
6747 /* 6142 */ GIM_Try, /*On fail goto*//*Label 359*/ GIMT_Encode4(6153), // Rule ID 205 //
6748 /* 6147 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6749 /* 6150 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_SADDE'
6750 /* 6150 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6751 /* 6153 */ // Label 359: @6153
6752 /* 6153 */ GIM_Reject,
6753 /* 6154 */ // Label 50: @6154
6754 /* 6154 */ GIM_Try, /*On fail goto*//*Label 360*/ GIMT_Encode4(6165), // Rule ID 382 //
6755 /* 6159 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule232Enabled),
6756 /* 6162 */ // Combiner Rule #232: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
6757 /* 6162 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner151),
6758 /* 6165 */ // Label 360: @6165
6759 /* 6165 */ GIM_Reject,
6760 /* 6166 */ // Label 51: @6166
6761 /* 6166 */ GIM_Try, /*On fail goto*//*Label 361*/ GIMT_Encode4(6177), // Rule ID 207 //
6762 /* 6171 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule158Enabled),
6763 /* 6174 */ // Combiner Rule #158: adde_to_addo; wip_match_opcode 'G_SSUBE'
6764 /* 6174 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner86),
6765 /* 6177 */ // Label 361: @6177
6766 /* 6177 */ GIM_Reject,
6767 /* 6178 */ // Label 52: @6178
6768 /* 6178 */ GIM_Try, /*On fail goto*//*Label 362*/ GIMT_Encode4(6189), // Rule ID 200 //
6769 /* 6183 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6770 /* 6186 */ // Combiner Rule #156: mulo_by_2; wip_match_opcode 'G_UMULO'
6771 /* 6186 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6772 /* 6189 */ // Label 362: @6189
6773 /* 6189 */ GIM_Try, /*On fail goto*//*Label 363*/ GIMT_Encode4(6200), // Rule ID 202 //
6774 /* 6194 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
6775 /* 6197 */ // Combiner Rule #157: mulo_by_0; wip_match_opcode 'G_UMULO'
6776 /* 6197 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6777 /* 6200 */ // Label 363: @6200
6778 /* 6200 */ GIM_Try, /*On fail goto*//*Label 364*/ GIMT_Encode4(6211), // Rule ID 341 //
6779 /* 6205 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6780 /* 6208 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
6781 /* 6208 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6782 /* 6211 */ // Label 364: @6211
6783 /* 6211 */ GIM_Reject,
6784 /* 6212 */ // Label 53: @6212
6785 /* 6212 */ GIM_Try, /*On fail goto*//*Label 365*/ GIMT_Encode4(6223), // Rule ID 201 //
6786 /* 6217 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule156Enabled),
6787 /* 6220 */ // Combiner Rule #156: mulo_by_2; wip_match_opcode 'G_SMULO'
6788 /* 6220 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner84),
6789 /* 6223 */ // Label 365: @6223
6790 /* 6223 */ GIM_Try, /*On fail goto*//*Label 366*/ GIMT_Encode4(6234), // Rule ID 203 //
6791 /* 6228 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule157Enabled),
6792 /* 6231 */ // Combiner Rule #157: mulo_by_0; wip_match_opcode 'G_SMULO'
6793 /* 6231 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner85),
6794 /* 6234 */ // Label 366: @6234
6795 /* 6234 */ GIM_Try, /*On fail goto*//*Label 367*/ GIMT_Encode4(6245), // Rule ID 342 //
6796 /* 6239 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6797 /* 6242 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
6798 /* 6242 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6799 /* 6245 */ // Label 367: @6245
6800 /* 6245 */ GIM_Reject,
6801 /* 6246 */ // Label 54: @6246
6802 /* 6246 */ GIM_Try, /*On fail goto*//*Label 368*/ GIMT_Encode4(6257), // Rule ID 278 //
6803 /* 6251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule186Enabled),
6804 /* 6254 */ // Combiner Rule #186: mulh_to_lshr; wip_match_opcode 'G_UMULH'
6805 /* 6254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner107),
6806 /* 6257 */ // Label 368: @6257
6807 /* 6257 */ GIM_Try, /*On fail goto*//*Label 369*/ GIMT_Encode4(6268), // Rule ID 343 //
6808 /* 6262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6809 /* 6265 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
6810 /* 6265 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6811 /* 6268 */ // Label 369: @6268
6812 /* 6268 */ GIM_Reject,
6813 /* 6269 */ // Label 55: @6269
6814 /* 6269 */ GIM_Try, /*On fail goto*//*Label 370*/ GIMT_Encode4(6280), // Rule ID 344 //
6815 /* 6274 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6816 /* 6277 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
6817 /* 6277 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6818 /* 6280 */ // Label 370: @6280
6819 /* 6280 */ GIM_Reject,
6820 /* 6281 */ // Label 56: @6281
6821 /* 6281 */ GIM_Try, /*On fail goto*//*Label 371*/ GIMT_Encode4(6292), // Rule ID 345 //
6822 /* 6286 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6823 /* 6289 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
6824 /* 6289 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6825 /* 6292 */ // Label 371: @6292
6826 /* 6292 */ GIM_Reject,
6827 /* 6293 */ // Label 57: @6293
6828 /* 6293 */ GIM_Try, /*On fail goto*//*Label 372*/ GIMT_Encode4(6304), // Rule ID 346 //
6829 /* 6298 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6830 /* 6301 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
6831 /* 6301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6832 /* 6304 */ // Label 372: @6304
6833 /* 6304 */ GIM_Reject,
6834 /* 6305 */ // Label 58: @6305
6835 /* 6305 */ GIM_Try, /*On fail goto*//*Label 373*/ GIMT_Encode4(6316), // Rule ID 219 //
6836 /* 6310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6837 /* 6313 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_USHLSAT'
6838 /* 6313 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6839 /* 6316 */ // Label 373: @6316
6840 /* 6316 */ GIM_Try, /*On fail goto*//*Label 374*/ GIMT_Encode4(6327), // Rule ID 223 //
6841 /* 6321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6842 /* 6324 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_USHLSAT'
6843 /* 6324 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6844 /* 6327 */ // Label 374: @6327
6845 /* 6327 */ GIM_Reject,
6846 /* 6328 */ // Label 59: @6328
6847 /* 6328 */ GIM_Try, /*On fail goto*//*Label 375*/ GIMT_Encode4(6339), // Rule ID 218 //
6848 /* 6333 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule163Enabled),
6849 /* 6336 */ // Combiner Rule #163: shift_immed_chain; wip_match_opcode 'G_SSHLSAT'
6850 /* 6336 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner91),
6851 /* 6339 */ // Label 375: @6339
6852 /* 6339 */ GIM_Try, /*On fail goto*//*Label 376*/ GIMT_Encode4(6350), // Rule ID 224 //
6853 /* 6344 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule164Enabled),
6854 /* 6347 */ // Combiner Rule #164: shift_of_shifted_logic_chain; wip_match_opcode 'G_SSHLSAT'
6855 /* 6347 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner92),
6856 /* 6350 */ // Label 376: @6350
6857 /* 6350 */ GIM_Reject,
6858 /* 6351 */ // Label 60: @6351
6859 /* 6351 */ GIM_Try, /*On fail goto*//*Label 377*/ GIMT_Encode4(6362), // Rule ID 347 //
6860 /* 6356 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6861 /* 6359 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
6862 /* 6359 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6863 /* 6362 */ // Label 377: @6362
6864 /* 6362 */ GIM_Reject,
6865 /* 6363 */ // Label 61: @6363
6866 /* 6363 */ GIM_Try, /*On fail goto*//*Label 378*/ GIMT_Encode4(6374), // Rule ID 348 //
6867 /* 6368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6868 /* 6371 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
6869 /* 6371 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6870 /* 6374 */ // Label 378: @6374
6871 /* 6374 */ GIM_Reject,
6872 /* 6375 */ // Label 62: @6375
6873 /* 6375 */ GIM_Try, /*On fail goto*//*Label 379*/ GIMT_Encode4(6386), // Rule ID 349 //
6874 /* 6380 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6875 /* 6383 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
6876 /* 6383 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6877 /* 6386 */ // Label 379: @6386
6878 /* 6386 */ GIM_Reject,
6879 /* 6387 */ // Label 63: @6387
6880 /* 6387 */ GIM_Try, /*On fail goto*//*Label 380*/ GIMT_Encode4(6398), // Rule ID 350 //
6881 /* 6392 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
6882 /* 6395 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
6883 /* 6395 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
6884 /* 6398 */ // Label 380: @6398
6885 /* 6398 */ GIM_Reject,
6886 /* 6399 */ // Label 64: @6399
6887 /* 6399 */ GIM_Try, /*On fail goto*//*Label 381*/ GIMT_Encode4(6410), // Rule ID 268 //
6888 /* 6404 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6889 /* 6407 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FADD'
6890 /* 6407 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6891 /* 6410 */ // Label 381: @6410
6892 /* 6410 */ GIM_Try, /*On fail goto*//*Label 382*/ GIMT_Encode4(6421), // Rule ID 279 //
6893 /* 6415 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6894 /* 6418 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FADD'
6895 /* 6418 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6896 /* 6421 */ // Label 382: @6421
6897 /* 6421 */ GIM_Try, /*On fail goto*//*Label 383*/ GIMT_Encode4(6432), // Rule ID 286 //
6898 /* 6426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule189Enabled),
6899 /* 6429 */ // Combiner Rule #189: combine_fadd_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6900 /* 6429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner110),
6901 /* 6432 */ // Label 383: @6432
6902 /* 6432 */ GIM_Try, /*On fail goto*//*Label 384*/ GIMT_Encode4(6443), // Rule ID 287 //
6903 /* 6437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule190Enabled),
6904 /* 6440 */ // Combiner Rule #190: combine_fadd_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6905 /* 6440 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner111),
6906 /* 6443 */ // Label 384: @6443
6907 /* 6443 */ GIM_Try, /*On fail goto*//*Label 385*/ GIMT_Encode4(6454), // Rule ID 288 //
6908 /* 6448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule191Enabled),
6909 /* 6451 */ // Combiner Rule #191: combine_fadd_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6910 /* 6451 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner112),
6911 /* 6454 */ // Label 385: @6454
6912 /* 6454 */ GIM_Try, /*On fail goto*//*Label 386*/ GIMT_Encode4(6465), // Rule ID 289 //
6913 /* 6459 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule192Enabled),
6914 /* 6462 */ // Combiner Rule #192: combine_fadd_fpext_fma_fmul_to_fmad_or_fma; wip_match_opcode 'G_FADD'
6915 /* 6462 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner113),
6916 /* 6465 */ // Label 386: @6465
6917 /* 6465 */ GIM_Try, /*On fail goto*//*Label 387*/ GIMT_Encode4(6476), // Rule ID 312 //
6918 /* 6470 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6919 /* 6473 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FADD'
6920 /* 6473 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6921 /* 6476 */ // Label 387: @6476
6922 /* 6476 */ GIM_Try, /*On fail goto*//*Label 388*/ GIMT_Encode4(6487), // Rule ID 351 //
6923 /* 6481 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
6924 /* 6484 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
6925 /* 6484 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
6926 /* 6487 */ // Label 388: @6487
6927 /* 6487 */ GIM_Try, /*On fail goto*//*Label 389*/ GIMT_Encode4(6510), // Rule ID 144 //
6928 /* 6492 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
6929 /* 6495 */ // MIs[0] dst
6930 /* 6495 */ // No operand predicates
6931 /* 6495 */ // MIs[0] x
6932 /* 6495 */ // No operand predicates
6933 /* 6495 */ // MIs[0] y
6934 /* 6495 */ // No operand predicates
6935 /* 6495 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
6936 /* 6499 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6937 /* 6504 */ // Combiner Rule #104: right_identity_neg_zero_fp
6938 /* 6504 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6939 /* 6509 */ GIR_EraseRootFromParent_Done,
6940 /* 6510 */ // Label 389: @6510
6941 /* 6510 */ GIM_Try, /*On fail goto*//*Label 390*/ GIMT_Encode4(6539), // Rule ID 145 //
6942 /* 6515 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
6943 /* 6518 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
6944 /* 6524 */ // MIs[0] dst
6945 /* 6524 */ // No operand predicates
6946 /* 6524 */ // MIs[0] x
6947 /* 6524 */ // No operand predicates
6948 /* 6524 */ // MIs[0] y
6949 /* 6524 */ // No operand predicates
6950 /* 6524 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
6951 /* 6528 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6952 /* 6533 */ // Combiner Rule #105: right_identity_neg_zero_fp_nsz
6953 /* 6533 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
6954 /* 6538 */ GIR_EraseRootFromParent_Done,
6955 /* 6539 */ // Label 390: @6539
6956 /* 6539 */ GIM_Reject,
6957 /* 6540 */ // Label 65: @6540
6958 /* 6540 */ GIM_Try, /*On fail goto*//*Label 391*/ GIMT_Encode4(6551), // Rule ID 269 //
6959 /* 6545 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
6960 /* 6548 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FSUB'
6961 /* 6548 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
6962 /* 6551 */ // Label 391: @6551
6963 /* 6551 */ GIM_Try, /*On fail goto*//*Label 392*/ GIMT_Encode4(6562), // Rule ID 280 //
6964 /* 6556 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
6965 /* 6559 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FSUB'
6966 /* 6559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
6967 /* 6562 */ // Label 392: @6562
6968 /* 6562 */ GIM_Try, /*On fail goto*//*Label 393*/ GIMT_Encode4(6573), // Rule ID 290 //
6969 /* 6567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule193Enabled),
6970 /* 6570 */ // Combiner Rule #193: combine_fsub_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6971 /* 6570 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner114),
6972 /* 6573 */ // Label 393: @6573
6973 /* 6573 */ GIM_Try, /*On fail goto*//*Label 394*/ GIMT_Encode4(6584), // Rule ID 291 //
6974 /* 6578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule194Enabled),
6975 /* 6581 */ // Combiner Rule #194: combine_fsub_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6976 /* 6581 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner115),
6977 /* 6584 */ // Label 394: @6584
6978 /* 6584 */ GIM_Try, /*On fail goto*//*Label 395*/ GIMT_Encode4(6595), // Rule ID 292 //
6979 /* 6589 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule195Enabled),
6980 /* 6592 */ // Combiner Rule #195: combine_fsub_fpext_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6981 /* 6592 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner116),
6982 /* 6595 */ // Label 395: @6595
6983 /* 6595 */ GIM_Try, /*On fail goto*//*Label 396*/ GIMT_Encode4(6606), // Rule ID 293 //
6984 /* 6600 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule196Enabled),
6985 /* 6603 */ // Combiner Rule #196: combine_fsub_fpext_fneg_fmul_to_fmad_or_fma; wip_match_opcode 'G_FSUB'
6986 /* 6603 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner117),
6987 /* 6606 */ // Label 396: @6606
6988 /* 6606 */ GIM_Try, /*On fail goto*//*Label 397*/ GIMT_Encode4(6617), // Rule ID 313 //
6989 /* 6611 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
6990 /* 6614 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FSUB'
6991 /* 6614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
6992 /* 6617 */ // Label 397: @6617
6993 /* 6617 */ GIM_Try, /*On fail goto*//*Label 398*/ GIMT_Encode4(6628), // Rule ID 329 //
6994 /* 6622 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule207Enabled),
6995 /* 6625 */ // Combiner Rule #207: fsub_to_fneg; wip_match_opcode 'G_FSUB'
6996 /* 6625 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner126),
6997 /* 6628 */ // Label 398: @6628
6998 /* 6628 */ GIM_Reject,
6999 /* 6629 */ // Label 66: @6629
7000 /* 6629 */ GIM_Try, /*On fail goto*//*Label 399*/ GIMT_Encode4(6640), // Rule ID 270 //
7001 /* 6634 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7002 /* 6637 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FMUL'
7003 /* 6637 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7004 /* 6640 */ // Label 399: @6640
7005 /* 6640 */ GIM_Try, /*On fail goto*//*Label 400*/ GIMT_Encode4(6651), // Rule ID 281 //
7006 /* 6645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7007 /* 6648 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMUL'
7008 /* 6648 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7009 /* 6651 */ // Label 400: @6651
7010 /* 6651 */ GIM_Try, /*On fail goto*//*Label 401*/ GIMT_Encode4(6662), // Rule ID 311 //
7011 /* 6656 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7012 /* 6659 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMUL'
7013 /* 6659 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7014 /* 6662 */ // Label 401: @6662
7015 /* 6662 */ GIM_Try, /*On fail goto*//*Label 402*/ GIMT_Encode4(6673), // Rule ID 352 //
7016 /* 6667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7017 /* 6670 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
7018 /* 6670 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7019 /* 6673 */ // Label 402: @6673
7020 /* 6673 */ GIM_Try, /*On fail goto*//*Label 403*/ GIMT_Encode4(6696), // Rule ID 135 //
7021 /* 6678 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
7022 /* 6681 */ // MIs[0] dst
7023 /* 6681 */ // No operand predicates
7024 /* 6681 */ // MIs[0] x
7025 /* 6681 */ // No operand predicates
7026 /* 6681 */ // MIs[0] y
7027 /* 6681 */ // No operand predicates
7028 /* 6681 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
7029 /* 6685 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7030 /* 6690 */ // Combiner Rule #97: right_identity_one_fp
7031 /* 6690 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7032 /* 6695 */ GIR_EraseRootFromParent_Done,
7033 /* 6696 */ // Label 403: @6696
7034 /* 6696 */ GIM_Try, /*On fail goto*//*Label 404*/ GIMT_Encode4(6716), // Rule ID 146 //
7035 /* 6701 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
7036 /* 6704 */ // MIs[0] dst
7037 /* 6704 */ // No operand predicates
7038 /* 6704 */ // MIs[0] x
7039 /* 6704 */ // No operand predicates
7040 /* 6704 */ // MIs[0] y
7041 /* 6704 */ // No operand predicates
7042 /* 6704 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
7043 /* 6708 */ // Combiner Rule #106: right_identity_neg_one_fp
7044 /* 6708 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
7045 /* 6711 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7046 /* 6713 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
7047 /* 6715 */ GIR_EraseRootFromParent_Done,
7048 /* 6716 */ // Label 404: @6716
7049 /* 6716 */ GIM_Reject,
7050 /* 6717 */ // Label 67: @6717
7051 /* 6717 */ GIM_Try, /*On fail goto*//*Label 405*/ GIMT_Encode4(6728), // Rule ID 273 //
7052 /* 6722 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7053 /* 6725 */ // Combiner Rule #183: constant_fold_fma; wip_match_opcode 'G_FMA'
7054 /* 6725 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7055 /* 6728 */ // Label 405: @6728
7056 /* 6728 */ GIM_Try, /*On fail goto*//*Label 406*/ GIMT_Encode4(6739), // Rule ID 284 //
7057 /* 6733 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7058 /* 6736 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMA'
7059 /* 6736 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7060 /* 6739 */ // Label 406: @6739
7061 /* 6739 */ GIM_Reject,
7062 /* 6740 */ // Label 68: @6740
7063 /* 6740 */ GIM_Try, /*On fail goto*//*Label 407*/ GIMT_Encode4(6751), // Rule ID 272 //
7064 /* 6745 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule183Enabled),
7065 /* 6748 */ // Combiner Rule #183: constant_fold_fma; wip_match_opcode 'G_FMAD'
7066 /* 6748 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner105),
7067 /* 6751 */ // Label 407: @6751
7068 /* 6751 */ GIM_Try, /*On fail goto*//*Label 408*/ GIMT_Encode4(6762), // Rule ID 283 //
7069 /* 6756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7070 /* 6759 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FMAD'
7071 /* 6759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7072 /* 6762 */ // Label 408: @6762
7073 /* 6762 */ GIM_Reject,
7074 /* 6763 */ // Label 69: @6763
7075 /* 6763 */ GIM_Try, /*On fail goto*//*Label 409*/ GIMT_Encode4(6774), // Rule ID 271 //
7076 /* 6768 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule182Enabled),
7077 /* 6771 */ // Combiner Rule #182: constant_fold_fp_binop; wip_match_opcode 'G_FDIV'
7078 /* 6771 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner104),
7079 /* 6774 */ // Label 409: @6774
7080 /* 6774 */ GIM_Try, /*On fail goto*//*Label 410*/ GIMT_Encode4(6785), // Rule ID 282 //
7081 /* 6779 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule187Enabled),
7082 /* 6782 */ // Combiner Rule #187: redundant_neg_operands; wip_match_opcode 'G_FDIV'
7083 /* 6782 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner108),
7084 /* 6785 */ // Label 410: @6785
7085 /* 6785 */ GIM_Try, /*On fail goto*//*Label 411*/ GIMT_Encode4(6796), // Rule ID 314 //
7086 /* 6790 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7087 /* 6793 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FDIV'
7088 /* 6793 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7089 /* 6796 */ // Label 411: @6796
7090 /* 6796 */ GIM_Try, /*On fail goto*//*Label 412*/ GIMT_Encode4(6807), // Rule ID 326 //
7091 /* 6801 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule204Enabled),
7092 /* 6804 */ // MIs[0] dst
7093 /* 6804 */ // No operand predicates
7094 /* 6804 */ // MIs[0] src1
7095 /* 6804 */ // No operand predicates
7096 /* 6804 */ // MIs[0] src2
7097 /* 6804 */ // No operand predicates
7098 /* 6804 */ // Combiner Rule #204: fdiv_repeated_divison
7099 /* 6804 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner123),
7100 /* 6807 */ // Label 412: @6807
7101 /* 6807 */ GIM_Reject,
7102 /* 6808 */ // Label 70: @6808
7103 /* 6808 */ GIM_Try, /*On fail goto*//*Label 413*/ GIMT_Encode4(6819), // Rule ID 315 //
7104 /* 6813 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7105 /* 6816 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FREM'
7106 /* 6816 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7107 /* 6819 */ // Label 413: @6819
7108 /* 6819 */ GIM_Reject,
7109 /* 6820 */ // Label 71: @6820
7110 /* 6820 */ GIM_Try, /*On fail goto*//*Label 414*/ GIMT_Encode4(6841), // Rule ID 212 //
7111 /* 6825 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule160Enabled),
7112 /* 6828 */ // MIs[0] dst
7113 /* 6828 */ // No operand predicates
7114 /* 6828 */ // MIs[0] float
7115 /* 6828 */ // No operand predicates
7116 /* 6828 */ // MIs[0] int
7117 /* 6828 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7118 /* 6832 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7119 /* 6836 */ // MIs[1] imm
7120 /* 6836 */ // No operand predicates
7121 /* 6836 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7122 /* 6838 */ // Combiner Rule #160: expand_const_fpowi
7123 /* 6838 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner88),
7124 /* 6841 */ // Label 414: @6841
7125 /* 6841 */ GIM_Reject,
7126 /* 6842 */ // Label 72: @6842
7127 /* 6842 */ GIM_Try, /*On fail goto*//*Label 415*/ GIMT_Encode4(6863), // Rule ID 186 //
7128 /* 6847 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule142Enabled),
7129 /* 6850 */ // MIs[0] dst
7130 /* 6850 */ // No operand predicates
7131 /* 6850 */ // MIs[0] src0
7132 /* 6850 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7133 /* 6854 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7134 /* 6858 */ // MIs[1] cst
7135 /* 6858 */ // No operand predicates
7136 /* 6858 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7137 /* 6860 */ // Combiner Rule #142: constant_fold_flog2
7138 /* 6860 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7139 /* 6863 */ // Label 415: @6863
7140 /* 6863 */ GIM_Reject,
7141 /* 6864 */ // Label 73: @6864
7142 /* 6864 */ GIM_Try, /*On fail goto*//*Label 416*/ GIMT_Encode4(6885), // Rule ID 183 //
7143 /* 6869 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule139Enabled),
7144 /* 6872 */ // MIs[0] dst
7145 /* 6872 */ // No operand predicates
7146 /* 6872 */ // MIs[0] src0
7147 /* 6872 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7148 /* 6876 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7149 /* 6880 */ // MIs[1] cst
7150 /* 6880 */ // No operand predicates
7151 /* 6880 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7152 /* 6882 */ // Combiner Rule #139: constant_fold_fneg
7153 /* 6882 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7154 /* 6885 */ // Label 416: @6885
7155 /* 6885 */ GIM_Try, /*On fail goto*//*Label 417*/ GIMT_Encode4(6914), // Rule ID 133 //
7156 /* 6890 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
7157 /* 6893 */ // MIs[0] dst
7158 /* 6893 */ // No operand predicates
7159 /* 6893 */ // MIs[0] t
7160 /* 6893 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7161 /* 6897 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7162 /* 6901 */ // MIs[1] src
7163 /* 6901 */ // No operand predicates
7164 /* 6901 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7165 /* 6906 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7166 /* 6908 */ // Combiner Rule #95: fneg_fneg_fold
7167 /* 6908 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
7168 /* 6913 */ GIR_EraseRootFromParent_Done,
7169 /* 6914 */ // Label 417: @6914
7170 /* 6914 */ GIM_Reject,
7171 /* 6915 */ // Label 74: @6915
7172 /* 6915 */ GIM_Try, /*On fail goto*//*Label 418*/ GIMT_Encode4(6936), // Rule ID 188 //
7173 /* 6920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule144Enabled),
7174 /* 6923 */ // MIs[0] dst
7175 /* 6923 */ // No operand predicates
7176 /* 6923 */ // MIs[0] src0
7177 /* 6923 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7178 /* 6927 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7179 /* 6931 */ // MIs[1] cst
7180 /* 6931 */ // No operand predicates
7181 /* 6931 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7182 /* 6933 */ // Combiner Rule #144: constant_fold_fpext
7183 /* 6933 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7184 /* 6936 */ // Label 418: @6936
7185 /* 6936 */ GIM_Reject,
7186 /* 6937 */ // Label 75: @6937
7187 /* 6937 */ GIM_Try, /*On fail goto*//*Label 419*/ GIMT_Encode4(6958), // Rule ID 187 //
7188 /* 6942 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule143Enabled),
7189 /* 6945 */ // MIs[0] dst
7190 /* 6945 */ // No operand predicates
7191 /* 6945 */ // MIs[0] src0
7192 /* 6945 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7193 /* 6949 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7194 /* 6953 */ // MIs[1] cst
7195 /* 6953 */ // No operand predicates
7196 /* 6953 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7197 /* 6955 */ // Combiner Rule #143: constant_fold_fptrunc
7198 /* 6955 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7199 /* 6958 */ // Label 419: @6958
7200 /* 6958 */ GIM_Try, /*On fail goto*//*Label 420*/ GIMT_Encode4(6979), // Rule ID 143 //
7201 /* 6963 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
7202 /* 6966 */ // MIs[0] dst
7203 /* 6966 */ // No operand predicates
7204 /* 6966 */ // MIs[0] src1
7205 /* 6966 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7206 /* 6970 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
7207 /* 6974 */ // MIs[1] src0
7208 /* 6974 */ // No operand predicates
7209 /* 6974 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7210 /* 6976 */ // Combiner Rule #103: fptrunc_fpext_fold
7211 /* 6976 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
7212 /* 6979 */ // Label 420: @6979
7213 /* 6979 */ GIM_Reject,
7214 /* 6980 */ // Label 76: @6980
7215 /* 6980 */ GIM_Try, /*On fail goto*//*Label 421*/ GIMT_Encode4(7001), // Rule ID 95 //
7216 /* 6985 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7217 /* 6988 */ // MIs[0] dst
7218 /* 6988 */ // No operand predicates
7219 /* 6988 */ // MIs[0] __unary_undef_to_undef_match_0.x
7220 /* 6988 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7221 /* 6992 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7222 /* 6996 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7223 /* 6998 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
7224 /* 6998 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7225 /* 7001 */ // Label 421: @7001
7226 /* 7001 */ GIM_Reject,
7227 /* 7002 */ // Label 77: @7002
7228 /* 7002 */ GIM_Try, /*On fail goto*//*Label 422*/ GIMT_Encode4(7023), // Rule ID 96 //
7229 /* 7007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
7230 /* 7010 */ // MIs[0] dst
7231 /* 7010 */ // No operand predicates
7232 /* 7010 */ // MIs[0] __unary_undef_to_undef_match_0.x
7233 /* 7010 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7234 /* 7014 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7235 /* 7018 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7236 /* 7020 */ // Combiner Rule #80: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
7237 /* 7020 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
7238 /* 7023 */ // Label 422: @7023
7239 /* 7023 */ GIM_Reject,
7240 /* 7024 */ // Label 78: @7024
7241 /* 7024 */ GIM_Try, /*On fail goto*//*Label 423*/ GIMT_Encode4(7035), // Rule ID 79 //
7242 /* 7029 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7243 /* 7032 */ // Combiner Rule #74: undef_to_fp_zero; wip_match_opcode 'G_SITOFP'
7244 /* 7032 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7245 /* 7035 */ // Label 423: @7035
7246 /* 7035 */ GIM_Try, /*On fail goto*//*Label 424*/ GIMT_Encode4(7050), // Rule ID 196 //
7247 /* 7040 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule152Enabled),
7248 /* 7043 */ // MIs[0] dst
7249 /* 7043 */ // No operand predicates
7250 /* 7043 */ // MIs[0] Operand 1
7251 /* 7043 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7252 /* 7047 */ // Combiner Rule #152: itof_const_zero_fold_si
7253 /* 7047 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7254 /* 7050 */ // Label 424: @7050
7255 /* 7050 */ GIM_Reject,
7256 /* 7051 */ // Label 79: @7051
7257 /* 7051 */ GIM_Try, /*On fail goto*//*Label 425*/ GIMT_Encode4(7062), // Rule ID 78 //
7258 /* 7056 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
7259 /* 7059 */ // Combiner Rule #74: undef_to_fp_zero; wip_match_opcode 'G_UITOFP'
7260 /* 7059 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
7261 /* 7062 */ // Label 425: @7062
7262 /* 7062 */ GIM_Try, /*On fail goto*//*Label 426*/ GIMT_Encode4(7077), // Rule ID 197 //
7263 /* 7067 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule153Enabled),
7264 /* 7070 */ // MIs[0] dst
7265 /* 7070 */ // No operand predicates
7266 /* 7070 */ // MIs[0] Operand 1
7267 /* 7070 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
7268 /* 7074 */ // Combiner Rule #153: itof_const_zero_fold_ui
7269 /* 7074 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner81),
7270 /* 7077 */ // Label 426: @7077
7271 /* 7077 */ GIM_Reject,
7272 /* 7078 */ // Label 80: @7078
7273 /* 7078 */ GIM_Try, /*On fail goto*//*Label 427*/ GIMT_Encode4(7107), // Rule ID 22 //
7274 /* 7083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7275 /* 7086 */ // MIs[0] dst
7276 /* 7086 */ // No operand predicates
7277 /* 7086 */ // MIs[0] src
7278 /* 7086 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7279 /* 7090 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FABS),
7280 /* 7094 */ // MIs[1] __idempotent_prop_match_0.x
7281 /* 7094 */ // No operand predicates
7282 /* 7094 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7283 /* 7099 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7284 /* 7101 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[1]]
7285 /* 7101 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7286 /* 7106 */ GIR_EraseRootFromParent_Done,
7287 /* 7107 */ // Label 427: @7107
7288 /* 7107 */ GIM_Try, /*On fail goto*//*Label 428*/ GIMT_Encode4(7128), // Rule ID 184 //
7289 /* 7112 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule140Enabled),
7290 /* 7115 */ // MIs[0] dst
7291 /* 7115 */ // No operand predicates
7292 /* 7115 */ // MIs[0] src0
7293 /* 7115 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7294 /* 7119 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
7295 /* 7123 */ // MIs[1] cst
7296 /* 7123 */ // No operand predicates
7297 /* 7123 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7298 /* 7125 */ // Combiner Rule #140: constant_fold_fabs
7299 /* 7125 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
7300 /* 7128 */ // Label 428: @7128
7301 /* 7128 */ GIM_Try, /*On fail goto*//*Label 429*/ GIMT_Encode4(7156), // Rule ID 277 //
7302 /* 7133 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule185Enabled),
7303 /* 7136 */ // MIs[0] dst
7304 /* 7136 */ // No operand predicates
7305 /* 7136 */ // MIs[0] tmp
7306 /* 7136 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7307 /* 7140 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
7308 /* 7144 */ // MIs[1] x
7309 /* 7144 */ // No operand predicates
7310 /* 7144 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7311 /* 7146 */ // Combiner Rule #185: fabs_fneg_fold
7312 /* 7146 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FABS),
7313 /* 7149 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
7314 /* 7151 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
7315 /* 7155 */ GIR_EraseRootFromParent_Done,
7316 /* 7156 */ // Label 429: @7156
7317 /* 7156 */ GIM_Reject,
7318 /* 7157 */ // Label 81: @7157
7319 /* 7157 */ GIM_Try, /*On fail goto*//*Label 430*/ GIMT_Encode4(7186), // Rule ID 23 //
7320 /* 7162 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
7321 /* 7165 */ // MIs[0] dst
7322 /* 7165 */ // No operand predicates
7323 /* 7165 */ // MIs[0] src
7324 /* 7165 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7325 /* 7169 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCANONICALIZE),
7326 /* 7173 */ // MIs[1] __idempotent_prop_match_0.x
7327 /* 7173 */ // No operand predicates
7328 /* 7173 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7329 /* 7178 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7330 /* 7180 */ // Combiner Rule #21: idempotent_prop @ [__idempotent_prop_match_0[2]]
7331 /* 7180 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7332 /* 7185 */ GIR_EraseRootFromParent_Done,
7333 /* 7186 */ // Label 430: @7186
7334 /* 7186 */ GIM_Reject,
7335 /* 7187 */ // Label 82: @7187
7336 /* 7187 */ GIM_Try, /*On fail goto*//*Label 431*/ GIMT_Encode4(7198), // Rule ID 208 //
7337 /* 7192 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7338 /* 7195 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMINNUM'
7339 /* 7195 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7340 /* 7198 */ // Label 431: @7198
7341 /* 7198 */ GIM_Try, /*On fail goto*//*Label 432*/ GIMT_Encode4(7209), // Rule ID 316 //
7342 /* 7203 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7343 /* 7206 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMINNUM'
7344 /* 7206 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7345 /* 7209 */ // Label 432: @7209
7346 /* 7209 */ GIM_Try, /*On fail goto*//*Label 433*/ GIMT_Encode4(7220), // Rule ID 353 //
7347 /* 7214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7348 /* 7217 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
7349 /* 7217 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7350 /* 7220 */ // Label 433: @7220
7351 /* 7220 */ GIM_Reject,
7352 /* 7221 */ // Label 83: @7221
7353 /* 7221 */ GIM_Try, /*On fail goto*//*Label 434*/ GIMT_Encode4(7232), // Rule ID 209 //
7354 /* 7226 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7355 /* 7229 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMAXNUM'
7356 /* 7229 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7357 /* 7232 */ // Label 434: @7232
7358 /* 7232 */ GIM_Try, /*On fail goto*//*Label 435*/ GIMT_Encode4(7243), // Rule ID 317 //
7359 /* 7237 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7360 /* 7240 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMAXNUM'
7361 /* 7240 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7362 /* 7243 */ // Label 435: @7243
7363 /* 7243 */ GIM_Try, /*On fail goto*//*Label 436*/ GIMT_Encode4(7254), // Rule ID 354 //
7364 /* 7248 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7365 /* 7251 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
7366 /* 7251 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7367 /* 7254 */ // Label 436: @7254
7368 /* 7254 */ GIM_Reject,
7369 /* 7255 */ // Label 84: @7255
7370 /* 7255 */ GIM_Try, /*On fail goto*//*Label 437*/ GIMT_Encode4(7266), // Rule ID 355 //
7371 /* 7260 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7372 /* 7263 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
7373 /* 7263 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7374 /* 7266 */ // Label 437: @7266
7375 /* 7266 */ GIM_Reject,
7376 /* 7267 */ // Label 85: @7267
7377 /* 7267 */ GIM_Try, /*On fail goto*//*Label 438*/ GIMT_Encode4(7278), // Rule ID 356 //
7378 /* 7272 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7379 /* 7275 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
7380 /* 7275 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7381 /* 7278 */ // Label 438: @7278
7382 /* 7278 */ GIM_Reject,
7383 /* 7279 */ // Label 86: @7279
7384 /* 7279 */ GIM_Try, /*On fail goto*//*Label 439*/ GIMT_Encode4(7290), // Rule ID 210 //
7385 /* 7284 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7386 /* 7287 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMINIMUM'
7387 /* 7287 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7388 /* 7290 */ // Label 439: @7290
7389 /* 7290 */ GIM_Try, /*On fail goto*//*Label 440*/ GIMT_Encode4(7301), // Rule ID 318 //
7390 /* 7295 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7391 /* 7298 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMINIMUM'
7392 /* 7298 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7393 /* 7301 */ // Label 440: @7301
7394 /* 7301 */ GIM_Try, /*On fail goto*//*Label 441*/ GIMT_Encode4(7312), // Rule ID 357 //
7395 /* 7306 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7396 /* 7309 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
7397 /* 7309 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7398 /* 7312 */ // Label 441: @7312
7399 /* 7312 */ GIM_Reject,
7400 /* 7313 */ // Label 87: @7313
7401 /* 7313 */ GIM_Try, /*On fail goto*//*Label 442*/ GIMT_Encode4(7324), // Rule ID 211 //
7402 /* 7318 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule159Enabled),
7403 /* 7321 */ // Combiner Rule #159: combine_minmax_nan; wip_match_opcode 'G_FMAXIMUM'
7404 /* 7321 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner87),
7405 /* 7324 */ // Label 442: @7324
7406 /* 7324 */ GIM_Try, /*On fail goto*//*Label 443*/ GIMT_Encode4(7335), // Rule ID 319 //
7407 /* 7329 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7408 /* 7332 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_FMAXIMUM'
7409 /* 7332 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7410 /* 7335 */ // Label 443: @7335
7411 /* 7335 */ GIM_Try, /*On fail goto*//*Label 444*/ GIMT_Encode4(7346), // Rule ID 358 //
7412 /* 7340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule209Enabled),
7413 /* 7343 */ // Combiner Rule #209: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
7414 /* 7343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner128),
7415 /* 7346 */ // Label 444: @7346
7416 /* 7346 */ GIM_Reject,
7417 /* 7347 */ // Label 88: @7347
7418 /* 7347 */ GIM_Try, /*On fail goto*//*Label 445*/ GIMT_Encode4(7358), // Rule ID 155 //
7419 /* 7352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
7420 /* 7355 */ // Combiner Rule #111: reassoc_ptradd; wip_match_opcode 'G_PTR_ADD'
7421 /* 7355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
7422 /* 7358 */ // Label 445: @7358
7423 /* 7358 */ GIM_Try, /*On fail goto*//*Label 446*/ GIMT_Encode4(7369), // Rule ID 157 //
7424 /* 7363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
7425 /* 7366 */ // Combiner Rule #113: ptr_add_immed_chain; wip_match_opcode 'G_PTR_ADD'
7426 /* 7366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
7427 /* 7369 */ // Label 446: @7369
7428 /* 7369 */ GIM_Try, /*On fail goto*//*Label 447*/ GIMT_Encode4(7380), // Rule ID 198 //
7429 /* 7374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule154Enabled),
7430 /* 7377 */ // Combiner Rule #154: const_ptradd_to_i2p; wip_match_opcode 'G_PTR_ADD'
7431 /* 7377 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner82),
7432 /* 7380 */ // Label 447: @7380
7433 /* 7380 */ GIM_Try, /*On fail goto*//*Label 448*/ GIMT_Encode4(7391), // Rule ID 214 //
7434 /* 7385 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule162Enabled),
7435 /* 7388 */ // Combiner Rule #162: ptr_add_with_zero; wip_match_opcode 'G_PTR_ADD'
7436 /* 7388 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner90),
7437 /* 7391 */ // Label 448: @7391
7438 /* 7391 */ GIM_Try, /*On fail goto*//*Label 449*/ GIMT_Encode4(7402), // Rule ID 251 //
7439 /* 7396 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7440 /* 7399 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
7441 /* 7399 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7442 /* 7402 */ // Label 449: @7402
7443 /* 7402 */ GIM_Try, /*On fail goto*//*Label 450*/ GIMT_Encode4(7413), // Rule ID 296 //
7444 /* 7407 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7445 /* 7410 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_PTR_ADD'
7446 /* 7410 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7447 /* 7413 */ // Label 450: @7413
7448 /* 7413 */ GIM_Try, /*On fail goto*//*Label 451*/ GIMT_Encode4(7436), // Rule ID 114 //
7449 /* 7418 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
7450 /* 7421 */ // MIs[0] dst
7451 /* 7421 */ // No operand predicates
7452 /* 7421 */ // MIs[0] lhs
7453 /* 7421 */ // No operand predicates
7454 /* 7421 */ // MIs[0] Operand 2
7455 /* 7421 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
7456 /* 7425 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7457 /* 7430 */ // Combiner Rule #87: right_identity_zero @ [__right_identity_zero_match_0[7]]
7458 /* 7430 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7459 /* 7435 */ GIR_EraseRootFromParent_Done,
7460 /* 7436 */ // Label 451: @7436
7461 /* 7436 */ GIM_Reject,
7462 /* 7437 */ // Label 89: @7437
7463 /* 7437 */ GIM_Try, /*On fail goto*//*Label 452*/ GIMT_Encode4(7448), // Rule ID 264 //
7464 /* 7442 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7465 /* 7445 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SMIN'
7466 /* 7445 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7467 /* 7448 */ // Label 452: @7448
7468 /* 7448 */ GIM_Try, /*On fail goto*//*Label 453*/ GIMT_Encode4(7459), // Rule ID 307 //
7469 /* 7453 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7470 /* 7456 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SMIN'
7471 /* 7456 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7472 /* 7459 */ // Label 453: @7459
7473 /* 7459 */ GIM_Try, /*On fail goto*//*Label 454*/ GIMT_Encode4(7470), // Rule ID 335 //
7474 /* 7464 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7475 /* 7467 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
7476 /* 7467 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7477 /* 7470 */ // Label 454: @7470
7478 /* 7470 */ GIM_Reject,
7479 /* 7471 */ // Label 90: @7471
7480 /* 7471 */ GIM_Try, /*On fail goto*//*Label 455*/ GIMT_Encode4(7482), // Rule ID 265 //
7481 /* 7476 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7482 /* 7479 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_SMAX'
7483 /* 7479 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7484 /* 7482 */ // Label 455: @7482
7485 /* 7482 */ GIM_Try, /*On fail goto*//*Label 456*/ GIMT_Encode4(7493), // Rule ID 308 //
7486 /* 7487 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7487 /* 7490 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_SMAX'
7488 /* 7490 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7489 /* 7493 */ // Label 456: @7493
7490 /* 7493 */ GIM_Try, /*On fail goto*//*Label 457*/ GIMT_Encode4(7504), // Rule ID 336 //
7491 /* 7498 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7492 /* 7501 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
7493 /* 7501 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7494 /* 7504 */ // Label 457: @7504
7495 /* 7504 */ GIM_Reject,
7496 /* 7505 */ // Label 91: @7505
7497 /* 7505 */ GIM_Try, /*On fail goto*//*Label 458*/ GIMT_Encode4(7516), // Rule ID 266 //
7498 /* 7510 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7499 /* 7513 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UMIN'
7500 /* 7513 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7501 /* 7516 */ // Label 458: @7516
7502 /* 7516 */ GIM_Try, /*On fail goto*//*Label 459*/ GIMT_Encode4(7527), // Rule ID 309 //
7503 /* 7521 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7504 /* 7524 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UMIN'
7505 /* 7524 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7506 /* 7527 */ // Label 459: @7527
7507 /* 7527 */ GIM_Try, /*On fail goto*//*Label 460*/ GIMT_Encode4(7538), // Rule ID 337 //
7508 /* 7532 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7509 /* 7535 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
7510 /* 7535 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7511 /* 7538 */ // Label 460: @7538
7512 /* 7538 */ GIM_Reject,
7513 /* 7539 */ // Label 92: @7539
7514 /* 7539 */ GIM_Try, /*On fail goto*//*Label 461*/ GIMT_Encode4(7550), // Rule ID 267 //
7515 /* 7544 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule181Enabled),
7516 /* 7547 */ // Combiner Rule #181: constant_fold_binop; wip_match_opcode 'G_UMAX'
7517 /* 7547 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner103),
7518 /* 7550 */ // Label 461: @7550
7519 /* 7550 */ GIM_Try, /*On fail goto*//*Label 462*/ GIMT_Encode4(7561), // Rule ID 310 //
7520 /* 7555 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule197Enabled),
7521 /* 7558 */ // Combiner Rule #197: fold_binop_into_select; wip_match_opcode 'G_UMAX'
7522 /* 7558 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner118),
7523 /* 7561 */ // Label 462: @7561
7524 /* 7561 */ GIM_Try, /*On fail goto*//*Label 463*/ GIMT_Encode4(7572), // Rule ID 338 //
7525 /* 7566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule208Enabled),
7526 /* 7569 */ // Combiner Rule #208: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
7527 /* 7569 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner127),
7528 /* 7572 */ // Label 463: @7572
7529 /* 7572 */ GIM_Reject,
7530 /* 7573 */ // Label 93: @7573
7531 /* 7573 */ GIM_Try, /*On fail goto*//*Label 464*/ GIMT_Encode4(7584), // Rule ID 89 //
7532 /* 7578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
7533 /* 7581 */ // Combiner Rule #79: unary_undef_to_zero; wip_match_opcode 'G_ABS'
7534 /* 7581 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
7535 /* 7584 */ // Label 464: @7584
7536 /* 7584 */ GIM_Reject,
7537 /* 7585 */ // Label 94: @7585
7538 /* 7585 */ GIM_Try, /*On fail goto*//*Label 465*/ GIMT_Encode4(7596), // Rule ID 182 //
7539 /* 7590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule138Enabled),
7540 /* 7593 */ // Combiner Rule #138: opt_brcond_by_inverting_cond; wip_match_opcode 'G_BR'
7541 /* 7593 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner79),
7542 /* 7596 */ // Label 465: @7596
7543 /* 7596 */ GIM_Reject,
7544 /* 7597 */ // Label 95: @7597
7545 /* 7597 */ GIM_Try, /*On fail goto*//*Label 466*/ GIMT_Encode4(7608), // Rule ID 29 //
7546 /* 7602 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
7547 /* 7605 */ // Combiner Rule #27: insert_vector_elt_oob; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7548 /* 7605 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
7549 /* 7608 */ // Label 466: @7608
7550 /* 7608 */ GIM_Try, /*On fail goto*//*Label 467*/ GIMT_Encode4(7619), // Rule ID 70 //
7551 /* 7613 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
7552 /* 7616 */ // Combiner Rule #68: combine_insert_vec_elts_build_vector; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7553 /* 7616 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
7554 /* 7619 */ // Label 467: @7619
7555 /* 7619 */ GIM_Try, /*On fail goto*//*Label 468*/ GIMT_Encode4(7630), // Rule ID 104 //
7556 /* 7624 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7557 /* 7627 */ // Combiner Rule #85: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
7558 /* 7627 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7559 /* 7630 */ // Label 468: @7630
7560 /* 7630 */ GIM_Try, /*On fail goto*//*Label 469*/ GIMT_Encode4(7669), // Rule ID 41 //
7561 /* 7635 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
7562 /* 7638 */ // MIs[0] root
7563 /* 7638 */ // No operand predicates
7564 /* 7638 */ // MIs[0] src
7565 /* 7638 */ // No operand predicates
7566 /* 7638 */ // MIs[0] elt
7567 /* 7638 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7568 /* 7642 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_EXTRACT_VECTOR_ELT),
7569 /* 7646 */ // MIs[1] src
7570 /* 7646 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/1, /*OtherMI*/0, /*OtherOpIdx*/1,
7571 /* 7651 */ // MIs[1] idx
7572 /* 7651 */ // No operand predicates
7573 /* 7651 */ // MIs[0] idx
7574 /* 7651 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/1, /*OtherOpIdx*/2,
7575 /* 7656 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7576 /* 7661 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7577 /* 7663 */ // Combiner Rule #39: insert_vector_element_extract_vector_element
7578 /* 7663 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7579 /* 7668 */ GIR_EraseRootFromParent_Done,
7580 /* 7669 */ // Label 469: @7669
7581 /* 7669 */ GIM_Try, /*On fail goto*//*Label 470*/ GIMT_Encode4(7702), // Rule ID 27 //
7582 /* 7674 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
7583 /* 7677 */ // MIs[0] root
7584 /* 7677 */ // No operand predicates
7585 /* 7677 */ // MIs[0] src
7586 /* 7677 */ // No operand predicates
7587 /* 7677 */ // MIs[0] elt
7588 /* 7677 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7589 /* 7681 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7590 /* 7685 */ // MIs[0] idx
7591 /* 7685 */ // No operand predicates
7592 /* 7685 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
7593 /* 7689 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7594 /* 7694 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7595 /* 7696 */ // Combiner Rule #25: insert_vector_element_elt_undef
7596 /* 7696 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
7597 /* 7701 */ GIR_EraseRootFromParent_Done,
7598 /* 7702 */ // Label 470: @7702
7599 /* 7702 */ GIM_Try, /*On fail goto*//*Label 471*/ GIMT_Encode4(7726), // Rule ID 26 //
7600 /* 7707 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
7601 /* 7710 */ // MIs[0] root
7602 /* 7710 */ // No operand predicates
7603 /* 7710 */ // MIs[0] src
7604 /* 7710 */ // No operand predicates
7605 /* 7710 */ // MIs[0] elt
7606 /* 7710 */ // No operand predicates
7607 /* 7710 */ // MIs[0] idx
7608 /* 7710 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/3, // MIs[1]
7609 /* 7714 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7610 /* 7718 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7611 /* 7720 */ // Combiner Rule #24: insert_vector_element_idx_undef
7612 /* 7720 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7613 /* 7723 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7614 /* 7725 */ GIR_EraseRootFromParent_Done,
7615 /* 7726 */ // Label 471: @7726
7616 /* 7726 */ GIM_Reject,
7617 /* 7727 */ // Label 96: @7727
7618 /* 7727 */ GIM_Try, /*On fail goto*//*Label 472*/ GIMT_Encode4(7738), // Rule ID 28 //
7619 /* 7732 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
7620 /* 7735 */ // Combiner Rule #26: match_extract_of_element; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7621 /* 7735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
7622 /* 7738 */ // Label 472: @7738
7623 /* 7738 */ GIM_Try, /*On fail goto*//*Label 473*/ GIMT_Encode4(7749), // Rule ID 71 //
7624 /* 7743 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
7625 /* 7746 */ // Combiner Rule #69: extract_vec_elt_build_vec; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7626 /* 7746 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
7627 /* 7749 */ // Label 473: @7749
7628 /* 7749 */ GIM_Try, /*On fail goto*//*Label 474*/ GIMT_Encode4(7760), // Rule ID 77 //
7629 /* 7754 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
7630 /* 7757 */ // Combiner Rule #73: combine_extracted_vector_load; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7631 /* 7757 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
7632 /* 7760 */ // Label 474: @7760
7633 /* 7760 */ GIM_Try, /*On fail goto*//*Label 475*/ GIMT_Encode4(7771), // Rule ID 105 //
7634 /* 7765 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
7635 /* 7768 */ // Combiner Rule #85: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
7636 /* 7768 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
7637 /* 7771 */ // Label 475: @7771
7638 /* 7771 */ GIM_Try, /*On fail goto*//*Label 476*/ GIMT_Encode4(7795), // Rule ID 39 //
7639 /* 7776 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
7640 /* 7779 */ // MIs[0] root
7641 /* 7779 */ // No operand predicates
7642 /* 7779 */ // MIs[0] src
7643 /* 7779 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7644 /* 7783 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7645 /* 7787 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/9,
7646 /* 7790 */ // MIs[1] x
7647 /* 7790 */ // No operand predicates
7648 /* 7790 */ // MIs[1] y
7649 /* 7790 */ // No operand predicates
7650 /* 7790 */ // MIs[1] z
7651 /* 7790 */ // No operand predicates
7652 /* 7790 */ // MIs[1] a
7653 /* 7790 */ // No operand predicates
7654 /* 7790 */ // MIs[1] b
7655 /* 7790 */ // No operand predicates
7656 /* 7790 */ // MIs[1] c
7657 /* 7790 */ // No operand predicates
7658 /* 7790 */ // MIs[1] d
7659 /* 7790 */ // No operand predicates
7660 /* 7790 */ // MIs[1] e
7661 /* 7790 */ // No operand predicates
7662 /* 7790 */ // MIs[0] idx
7663 /* 7790 */ // No operand predicates
7664 /* 7790 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7665 /* 7792 */ // Combiner Rule #37: extract_vector_element_build_vector_trunc8
7666 /* 7792 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7667 /* 7795 */ // Label 476: @7795
7668 /* 7795 */ GIM_Try, /*On fail goto*//*Label 477*/ GIMT_Encode4(7819), // Rule ID 38 //
7669 /* 7800 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
7670 /* 7803 */ // MIs[0] root
7671 /* 7803 */ // No operand predicates
7672 /* 7803 */ // MIs[0] src
7673 /* 7803 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7674 /* 7807 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7675 /* 7811 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/8,
7676 /* 7814 */ // MIs[1] x
7677 /* 7814 */ // No operand predicates
7678 /* 7814 */ // MIs[1] y
7679 /* 7814 */ // No operand predicates
7680 /* 7814 */ // MIs[1] z
7681 /* 7814 */ // No operand predicates
7682 /* 7814 */ // MIs[1] a
7683 /* 7814 */ // No operand predicates
7684 /* 7814 */ // MIs[1] b
7685 /* 7814 */ // No operand predicates
7686 /* 7814 */ // MIs[1] c
7687 /* 7814 */ // No operand predicates
7688 /* 7814 */ // MIs[1] d
7689 /* 7814 */ // No operand predicates
7690 /* 7814 */ // MIs[0] idx
7691 /* 7814 */ // No operand predicates
7692 /* 7814 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7693 /* 7816 */ // Combiner Rule #36: extract_vector_element_build_vector_trunc7
7694 /* 7816 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7695 /* 7819 */ // Label 477: @7819
7696 /* 7819 */ GIM_Try, /*On fail goto*//*Label 478*/ GIMT_Encode4(7843), // Rule ID 37 //
7697 /* 7824 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
7698 /* 7827 */ // MIs[0] root
7699 /* 7827 */ // No operand predicates
7700 /* 7827 */ // MIs[0] src
7701 /* 7827 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7702 /* 7831 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7703 /* 7835 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/7,
7704 /* 7838 */ // MIs[1] x
7705 /* 7838 */ // No operand predicates
7706 /* 7838 */ // MIs[1] y
7707 /* 7838 */ // No operand predicates
7708 /* 7838 */ // MIs[1] z
7709 /* 7838 */ // No operand predicates
7710 /* 7838 */ // MIs[1] a
7711 /* 7838 */ // No operand predicates
7712 /* 7838 */ // MIs[1] b
7713 /* 7838 */ // No operand predicates
7714 /* 7838 */ // MIs[1] c
7715 /* 7838 */ // No operand predicates
7716 /* 7838 */ // MIs[0] idx
7717 /* 7838 */ // No operand predicates
7718 /* 7838 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7719 /* 7840 */ // Combiner Rule #35: extract_vector_element_build_vector_trunc6
7720 /* 7840 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7721 /* 7843 */ // Label 478: @7843
7722 /* 7843 */ GIM_Try, /*On fail goto*//*Label 479*/ GIMT_Encode4(7867), // Rule ID 36 //
7723 /* 7848 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
7724 /* 7851 */ // MIs[0] root
7725 /* 7851 */ // No operand predicates
7726 /* 7851 */ // MIs[0] src
7727 /* 7851 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7728 /* 7855 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7729 /* 7859 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/6,
7730 /* 7862 */ // MIs[1] x
7731 /* 7862 */ // No operand predicates
7732 /* 7862 */ // MIs[1] y
7733 /* 7862 */ // No operand predicates
7734 /* 7862 */ // MIs[1] z
7735 /* 7862 */ // No operand predicates
7736 /* 7862 */ // MIs[1] a
7737 /* 7862 */ // No operand predicates
7738 /* 7862 */ // MIs[1] b
7739 /* 7862 */ // No operand predicates
7740 /* 7862 */ // MIs[0] idx
7741 /* 7862 */ // No operand predicates
7742 /* 7862 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7743 /* 7864 */ // Combiner Rule #34: extract_vector_element_build_vector_trunc5
7744 /* 7864 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7745 /* 7867 */ // Label 479: @7867
7746 /* 7867 */ GIM_Try, /*On fail goto*//*Label 480*/ GIMT_Encode4(7891), // Rule ID 35 //
7747 /* 7872 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
7748 /* 7875 */ // MIs[0] root
7749 /* 7875 */ // No operand predicates
7750 /* 7875 */ // MIs[0] src
7751 /* 7875 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7752 /* 7879 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7753 /* 7883 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/5,
7754 /* 7886 */ // MIs[1] x
7755 /* 7886 */ // No operand predicates
7756 /* 7886 */ // MIs[1] y
7757 /* 7886 */ // No operand predicates
7758 /* 7886 */ // MIs[1] z
7759 /* 7886 */ // No operand predicates
7760 /* 7886 */ // MIs[1] a
7761 /* 7886 */ // No operand predicates
7762 /* 7886 */ // MIs[0] idx
7763 /* 7886 */ // No operand predicates
7764 /* 7886 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7765 /* 7888 */ // Combiner Rule #33: extract_vector_element_build_vector_trunc4
7766 /* 7888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7767 /* 7891 */ // Label 480: @7891
7768 /* 7891 */ GIM_Try, /*On fail goto*//*Label 481*/ GIMT_Encode4(7915), // Rule ID 34 //
7769 /* 7896 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
7770 /* 7899 */ // MIs[0] root
7771 /* 7899 */ // No operand predicates
7772 /* 7899 */ // MIs[0] src
7773 /* 7899 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7774 /* 7903 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7775 /* 7907 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/4,
7776 /* 7910 */ // MIs[1] x
7777 /* 7910 */ // No operand predicates
7778 /* 7910 */ // MIs[1] y
7779 /* 7910 */ // No operand predicates
7780 /* 7910 */ // MIs[1] z
7781 /* 7910 */ // No operand predicates
7782 /* 7910 */ // MIs[0] idx
7783 /* 7910 */ // No operand predicates
7784 /* 7910 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7785 /* 7912 */ // Combiner Rule #32: extract_vector_element_build_vector_trunc3
7786 /* 7912 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7787 /* 7915 */ // Label 481: @7915
7788 /* 7915 */ GIM_Try, /*On fail goto*//*Label 482*/ GIMT_Encode4(7949), // Rule ID 30 //
7789 /* 7920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
7790 /* 7923 */ // MIs[0] root
7791 /* 7923 */ // No operand predicates
7792 /* 7923 */ // MIs[0] src
7793 /* 7923 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7794 /* 7927 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
7795 /* 7931 */ // MIs[1] x
7796 /* 7931 */ // No operand predicates
7797 /* 7931 */ // MIs[1] value
7798 /* 7931 */ // No operand predicates
7799 /* 7931 */ // MIs[1] idx
7800 /* 7931 */ // No operand predicates
7801 /* 7931 */ // MIs[0] idx
7802 /* 7931 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/3,
7803 /* 7936 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
7804 /* 7941 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7805 /* 7943 */ // Combiner Rule #28: extract_vector_element_not_const
7806 /* 7943 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/2,
7807 /* 7948 */ GIR_EraseRootFromParent_Done,
7808 /* 7949 */ // Label 482: @7949
7809 /* 7949 */ GIM_Try, /*On fail goto*//*Label 483*/ GIMT_Encode4(7970), // Rule ID 31 //
7810 /* 7954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
7811 /* 7957 */ // MIs[0] root
7812 /* 7957 */ // No operand predicates
7813 /* 7957 */ // MIs[0] src
7814 /* 7957 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7815 /* 7961 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INSERT_VECTOR_ELT),
7816 /* 7965 */ // MIs[1] x
7817 /* 7965 */ // No operand predicates
7818 /* 7965 */ // MIs[1] value
7819 /* 7965 */ // No operand predicates
7820 /* 7965 */ // MIs[1] idx2
7821 /* 7965 */ // No operand predicates
7822 /* 7965 */ // MIs[0] idx1
7823 /* 7965 */ // No operand predicates
7824 /* 7965 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7825 /* 7967 */ // Combiner Rule #29: extract_vector_element_different_indices
7826 /* 7967 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
7827 /* 7970 */ // Label 483: @7970
7828 /* 7970 */ GIM_Try, /*On fail goto*//*Label 484*/ GIMT_Encode4(7999), // Rule ID 40 //
7829 /* 7975 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
7830 /* 7978 */ // MIs[0] root
7831 /* 7978 */ // No operand predicates
7832 /* 7978 */ // MIs[0] src
7833 /* 7978 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7834 /* 7982 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHUFFLE_VECTOR),
7835 /* 7986 */ // MIs[1] src1
7836 /* 7986 */ // No operand predicates
7837 /* 7986 */ // MIs[1] src2
7838 /* 7986 */ // No operand predicates
7839 /* 7986 */ // MIs[1] mask
7840 /* 7986 */ // No operand predicates
7841 /* 7986 */ // MIs[0] idx
7842 /* 7986 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7843 /* 7990 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7844 /* 7994 */ // MIs[2] imm
7845 /* 7994 */ // No operand predicates
7846 /* 7994 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7847 /* 7996 */ // Combiner Rule #38: extract_vector_element_shuffle_vector
7848 /* 7996 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
7849 /* 7999 */ // Label 484: @7999
7850 /* 7999 */ GIM_Try, /*On fail goto*//*Label 485*/ GIMT_Encode4(8023), // Rule ID 33 //
7851 /* 8004 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
7852 /* 8007 */ // MIs[0] root
7853 /* 8007 */ // No operand predicates
7854 /* 8007 */ // MIs[0] src
7855 /* 8007 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7856 /* 8011 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR_TRUNC),
7857 /* 8015 */ GIM_CheckNumOperands, /*MI*/1, /*Expected*/3,
7858 /* 8018 */ // MIs[1] x
7859 /* 8018 */ // No operand predicates
7860 /* 8018 */ // MIs[1] y
7861 /* 8018 */ // No operand predicates
7862 /* 8018 */ // MIs[0] idx
7863 /* 8018 */ // No operand predicates
7864 /* 8018 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7865 /* 8020 */ // Combiner Rule #31: extract_vector_element_build_vector_trunc2
7866 /* 8020 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
7867 /* 8023 */ // Label 485: @8023
7868 /* 8023 */ GIM_Try, /*On fail goto*//*Label 486*/ GIMT_Encode4(8055), // Rule ID 32 //
7869 /* 8028 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
7870 /* 8031 */ // MIs[0] root
7871 /* 8031 */ // No operand predicates
7872 /* 8031 */ // MIs[0] src
7873 /* 8031 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7874 /* 8035 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
7875 /* 8039 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
7876 /* 8042 */ // MIs[1] unused
7877 /* 8042 */ // No operand predicates
7878 /* 8042 */ // MIs[0] idx
7879 /* 8042 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/0, /*OpIdx*/2, // MIs[2]
7880 /* 8046 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
7881 /* 8050 */ // MIs[2] imm
7882 /* 8050 */ // No operand predicates
7883 /* 8050 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7884 /* 8052 */ // Combiner Rule #30: extract_vector_element_build_vector
7885 /* 8052 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
7886 /* 8055 */ // Label 486: @8055
7887 /* 8055 */ GIM_Try, /*On fail goto*//*Label 487*/ GIMT_Encode4(8079), // Rule ID 24 //
7888 /* 8060 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
7889 /* 8063 */ // MIs[0] root
7890 /* 8063 */ // No operand predicates
7891 /* 8063 */ // MIs[0] vector
7892 /* 8063 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7893 /* 8067 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7894 /* 8071 */ // MIs[0] idx
7895 /* 8071 */ // No operand predicates
7896 /* 8071 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7897 /* 8073 */ // Combiner Rule #22: match_extract_of_element_undef_vector
7898 /* 8073 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7899 /* 8076 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7900 /* 8078 */ GIR_EraseRootFromParent_Done,
7901 /* 8079 */ // Label 487: @8079
7902 /* 8079 */ GIM_Try, /*On fail goto*//*Label 488*/ GIMT_Encode4(8103), // Rule ID 25 //
7903 /* 8084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
7904 /* 8087 */ // MIs[0] root
7905 /* 8087 */ // No operand predicates
7906 /* 8087 */ // MIs[0] vector
7907 /* 8087 */ // No operand predicates
7908 /* 8087 */ // MIs[0] idx
7909 /* 8087 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7910 /* 8091 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7911 /* 8095 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7912 /* 8097 */ // Combiner Rule #23: match_extract_of_element_undef_index
7913 /* 8097 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7914 /* 8100 */ GIR_RootToRootCopy, /*OpIdx*/0, // root
7915 /* 8102 */ GIR_EraseRootFromParent_Done,
7916 /* 8103 */ // Label 488: @8103
7917 /* 8103 */ GIM_Reject,
7918 /* 8104 */ // Label 97: @8104
7919 /* 8104 */ GIM_Try, /*On fail goto*//*Label 489*/ GIMT_Encode4(8115), // Rule ID 100 //
7920 /* 8109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
7921 /* 8112 */ // Combiner Rule #82: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
7922 /* 8112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
7923 /* 8115 */ // Label 489: @8115
7924 /* 8115 */ GIM_Try, /*On fail goto*//*Label 490*/ GIMT_Encode4(8126), // Rule ID 102 //
7925 /* 8120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
7926 /* 8123 */ // Combiner Rule #83: propagate_undef_shuffle_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
7927 /* 8123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
7928 /* 8126 */ // Label 490: @8126
7929 /* 8126 */ GIM_Try, /*On fail goto*//*Label 491*/ GIMT_Encode4(8137), // Rule ID 366 //
7930 /* 8131 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule217Enabled),
7931 /* 8134 */ // Combiner Rule #217: combine_shuffle_concat; wip_match_opcode 'G_SHUFFLE_VECTOR'
7932 /* 8134 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner136),
7933 /* 8137 */ // Label 491: @8137
7934 /* 8137 */ GIM_Try, /*On fail goto*//*Label 492*/ GIMT_Encode4(8148), // Rule ID 368 //
7935 /* 8142 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule219Enabled),
7936 /* 8145 */ // Combiner Rule #219: combine_shuffle_disjoint_mask; wip_match_opcode 'G_SHUFFLE_VECTOR'
7937 /* 8145 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner138),
7938 /* 8148 */ // Label 492: @8148
7939 /* 8148 */ GIM_Try, /*On fail goto*//*Label 493*/ GIMT_Encode4(8169), // Rule ID 367 //
7940 /* 8153 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule218Enabled),
7941 /* 8156 */ // MIs[0] root
7942 /* 8156 */ // No operand predicates
7943 /* 8156 */ // MIs[0] src1
7944 /* 8156 */ // No operand predicates
7945 /* 8156 */ // MIs[0] undef
7946 /* 8156 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
7947 /* 8160 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
7948 /* 8164 */ // MIs[0] mask
7949 /* 8164 */ // No operand predicates
7950 /* 8164 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
7951 /* 8166 */ // Combiner Rule #218: combine_shuffle_undef_rhs
7952 /* 8166 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner137),
7953 /* 8169 */ // Label 493: @8169
7954 /* 8169 */ GIM_Reject,
7955 /* 8170 */ // Label 98: @8170
7956 /* 8170 */ GIM_Try, /*On fail goto*//*Label 494*/ GIMT_Encode4(8181), // Rule ID 389 //
7957 /* 8175 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule238Enabled),
7958 /* 8178 */ // MIs[0] dst
7959 /* 8178 */ // No operand predicates
7960 /* 8178 */ // MIs[0] src
7961 /* 8178 */ // No operand predicates
7962 /* 8178 */ // Combiner Rule #238: ctlz_to_ctls
7963 /* 8178 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7964 /* 8181 */ // Label 494: @8181
7965 /* 8181 */ GIM_Reject,
7966 /* 8182 */ // Label 99: @8182
7967 /* 8182 */ GIM_Try, /*On fail goto*//*Label 495*/ GIMT_Encode4(8193), // Rule ID 390 //
7968 /* 8187 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule239Enabled),
7969 /* 8190 */ // MIs[0] dst
7970 /* 8190 */ // No operand predicates
7971 /* 8190 */ // MIs[0] src
7972 /* 8190 */ // No operand predicates
7973 /* 8190 */ // Combiner Rule #239: ctlz_zero_undef_to_ctls
7974 /* 8190 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner155),
7975 /* 8193 */ // Label 495: @8193
7976 /* 8193 */ GIM_Reject,
7977 /* 8194 */ // Label 100: @8194
7978 /* 8194 */ GIM_Try, /*On fail goto*//*Label 496*/ GIMT_Encode4(8238), // Rule ID 242 //
7979 /* 8199 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule175Enabled),
7980 /* 8202 */ // MIs[0] d
7981 /* 8202 */ // No operand predicates
7982 /* 8202 */ // MIs[0] src
7983 /* 8202 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
7984 /* 8206 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
7985 /* 8210 */ // MIs[1] rev
7986 /* 8210 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
7987 /* 8214 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
7988 /* 8218 */ // MIs[2] val
7989 /* 8218 */ // No operand predicates
7990 /* 8218 */ // MIs[1] amt
7991 /* 8218 */ // No operand predicates
7992 /* 8218 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
7993 /* 8222 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
7994 /* 8224 */ // Combiner Rule #175: bitreverse_lshr
7995 /* 8224 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SHL),
7996 /* 8227 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
7997 /* 8229 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
7998 /* 8233 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
7999 /* 8237 */ GIR_EraseRootFromParent_Done,
8000 /* 8238 */ // Label 496: @8238
8001 /* 8238 */ GIM_Try, /*On fail goto*//*Label 497*/ GIMT_Encode4(8282), // Rule ID 241 //
8002 /* 8243 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule174Enabled),
8003 /* 8246 */ // MIs[0] d
8004 /* 8246 */ // No operand predicates
8005 /* 8246 */ // MIs[0] src
8006 /* 8246 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8007 /* 8250 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SHL),
8008 /* 8254 */ // MIs[1] rev
8009 /* 8254 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
8010 /* 8258 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_BITREVERSE),
8011 /* 8262 */ // MIs[2] val
8012 /* 8262 */ // No operand predicates
8013 /* 8262 */ // MIs[1] amt
8014 /* 8262 */ // No operand predicates
8015 /* 8262 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
8016 /* 8266 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
8017 /* 8268 */ // Combiner Rule #174: bitreverse_shl
8018 /* 8268 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_LSHR),
8019 /* 8271 */ GIR_RootToRootCopy, /*OpIdx*/0, // d
8020 /* 8273 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/2, /*OpIdx*/1, // val
8021 /* 8277 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // amt
8022 /* 8281 */ GIR_EraseRootFromParent_Done,
8023 /* 8282 */ // Label 497: @8282
8024 /* 8282 */ GIM_Reject,
8025 /* 8283 */ // Label 101: @8283
8026 /* 8283 */ GIM_Try, /*On fail goto*//*Label 498*/ GIMT_Encode4(8304), // Rule ID 189 //
8027 /* 8288 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule145Enabled),
8028 /* 8291 */ // MIs[0] dst
8029 /* 8291 */ // No operand predicates
8030 /* 8291 */ // MIs[0] src0
8031 /* 8291 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8032 /* 8295 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8033 /* 8299 */ // MIs[1] cst
8034 /* 8299 */ // No operand predicates
8035 /* 8299 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8036 /* 8301 */ // Combiner Rule #145: constant_fold_fceil
8037 /* 8301 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8038 /* 8304 */ // Label 498: @8304
8039 /* 8304 */ GIM_Reject,
8040 /* 8305 */ // Label 102: @8305
8041 /* 8305 */ GIM_Try, /*On fail goto*//*Label 499*/ GIMT_Encode4(8326), // Rule ID 185 //
8042 /* 8310 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule141Enabled),
8043 /* 8313 */ // MIs[0] dst
8044 /* 8313 */ // No operand predicates
8045 /* 8313 */ // MIs[0] src0
8046 /* 8313 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8047 /* 8317 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8048 /* 8321 */ // MIs[1] cst
8049 /* 8321 */ // No operand predicates
8050 /* 8321 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8051 /* 8323 */ // Combiner Rule #141: constant_fold_fsqrt
8052 /* 8323 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8053 /* 8326 */ // Label 499: @8326
8054 /* 8326 */ GIM_Reject,
8055 /* 8327 */ // Label 103: @8327
8056 /* 8327 */ GIM_Try, /*On fail goto*//*Label 500*/ GIMT_Encode4(8348), // Rule ID 190 //
8057 /* 8332 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule146Enabled),
8058 /* 8335 */ // MIs[0] dst
8059 /* 8335 */ // No operand predicates
8060 /* 8335 */ // MIs[0] src0
8061 /* 8335 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8062 /* 8339 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8063 /* 8343 */ // MIs[1] cst
8064 /* 8343 */ // No operand predicates
8065 /* 8343 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8066 /* 8345 */ // Combiner Rule #146: constant_fold_ffloor
8067 /* 8345 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8068 /* 8348 */ // Label 500: @8348
8069 /* 8348 */ GIM_Reject,
8070 /* 8349 */ // Label 104: @8349
8071 /* 8349 */ GIM_Try, /*On fail goto*//*Label 501*/ GIMT_Encode4(8370), // Rule ID 194 //
8072 /* 8354 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule150Enabled),
8073 /* 8357 */ // MIs[0] dst
8074 /* 8357 */ // No operand predicates
8075 /* 8357 */ // MIs[0] src0
8076 /* 8357 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8077 /* 8361 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8078 /* 8365 */ // MIs[1] cst
8079 /* 8365 */ // No operand predicates
8080 /* 8365 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8081 /* 8367 */ // Combiner Rule #150: constant_fold_frint
8082 /* 8367 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8083 /* 8370 */ // Label 501: @8370
8084 /* 8370 */ GIM_Reject,
8085 /* 8371 */ // Label 105: @8371
8086 /* 8371 */ GIM_Try, /*On fail goto*//*Label 502*/ GIMT_Encode4(8392), // Rule ID 195 //
8087 /* 8376 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule151Enabled),
8088 /* 8379 */ // MIs[0] dst
8089 /* 8379 */ // No operand predicates
8090 /* 8379 */ // MIs[0] src0
8091 /* 8379 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
8092 /* 8383 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
8093 /* 8387 */ // MIs[1] cst
8094 /* 8387 */ // No operand predicates
8095 /* 8387 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
8096 /* 8389 */ // Combiner Rule #151: constant_fold_fnearbyint
8097 /* 8389 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner80),
8098 /* 8392 */ // Label 502: @8392
8099 /* 8392 */ GIM_Reject,
8100 /* 8393 */ // Label 106: @8393
8101 /* 8393 */ GIM_Reject,
8102 /* 8394 */ }; // Size: 8394 bytes
8103 return MatchTable0;
8104}
8105#undef GIMT_Encode2
8106#undef GIMT_Encode4
8107#undef GIMT_Encode8
8108
8109
8110#endif // GET_GICOMBINER_IMPL
8111
8112#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8113
8114AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
8115AvailableFunctionFeatures()
8116
8117#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8118
8119#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
8120
8121, State(0),
8122ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
8123
8124#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
8125
8126