1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* AArch64PostLegalizerCombinerImpl 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 AArch64PostLegalizerCombinerImplRuleConfig {
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: // 3 strings to match.
42 switch (RuleIdentifier[0]) {
43 default: break;
44 case 'c': // 1 string to match.
45 if (memcmp(RuleIdentifier.data()+1, "opy_prop", 8) != 0)
46 break;
47 return 0; // "copy_prop"
48 case 'm': // 1 string to match.
49 if (memcmp(RuleIdentifier.data()+1, "ul_const", 8) != 0)
50 break;
51 return 40; // "mul_const"
52 case 'o': // 1 string to match.
53 if (memcmp(RuleIdentifier.data()+1, "r_to_bsp", 8) != 0)
54 break;
55 return 116; // "or_to_bsp"
56 }
57 break;
58 case 10: // 3 strings to match.
59 switch (RuleIdentifier[0]) {
60 default: break;
61 case 'i': // 1 string to match.
62 if (memcmp(RuleIdentifier.data()+1, "2p_to_p2i", 9) != 0)
63 break;
64 return 85; // "i2p_to_p2i"
65 case 'p': // 1 string to match.
66 if (memcmp(RuleIdentifier.data()+1, "2i_to_i2p", 9) != 0)
67 break;
68 return 84; // "p2i_to_i2p"
69 case 's': // 1 string to match.
70 if (memcmp(RuleIdentifier.data()+1, "elect_not", 9) != 0)
71 break;
72 return 62; // "select_not"
73 }
74 break;
75 case 11: // 6 strings to match.
76 switch (RuleIdentifier[0]) {
77 default: break;
78 case 'a': // 1 string to match.
79 if (memcmp(RuleIdentifier.data()+1, "dd_sub_reg", 10) != 0)
80 break;
81 return 90; // "add_sub_reg"
82 case 'm': // 1 string to match.
83 if (memcmp(RuleIdentifier.data()+1, "atch_addos", 10) != 0)
84 break;
85 return 52; // "match_addos"
86 case 't': // 3 strings to match.
87 if (memcmp(RuleIdentifier.data()+1, "runc_", 5) != 0)
88 break;
89 switch (RuleIdentifier[6]) {
90 default: break;
91 case 's': // 2 strings to match.
92 if (memcmp(RuleIdentifier.data()+7, "sat", 3) != 0)
93 break;
94 switch (RuleIdentifier[10]) {
95 default: break;
96 case 's': // 1 string to match.
97 return 129; // "trunc_ssats"
98 case 'u': // 1 string to match.
99 return 130; // "trunc_ssatu"
100 }
101 break;
102 case 'u': // 1 string to match.
103 if (memcmp(RuleIdentifier.data()+7, "satu", 4) != 0)
104 break;
105 return 131; // "trunc_usatu"
106 }
107 break;
108 case 'u': // 1 string to match.
109 if (memcmp(RuleIdentifier.data()+1, "nmerge_cst", 10) != 0)
110 break;
111 return 67; // "unmerge_cst"
112 }
113 break;
114 case 12: // 4 strings to match.
115 switch (RuleIdentifier[0]) {
116 default: break;
117 case 'e': // 1 string to match.
118 if (memcmp(RuleIdentifier.data()+1, "xtmultomull", 11) != 0)
119 break;
120 return 127; // "extmultomull"
121 case 'r': // 1 string to match.
122 if (memcmp(RuleIdentifier.data()+1, "edundant_or", 11) != 0)
123 break;
124 return 39; // "redundant_or"
125 case 's': // 1 string to match.
126 if (memcmp(RuleIdentifier.data()+1, "ext_of_sext", 11) != 0)
127 break;
128 return 6; // "sext_of_sext"
129 case 'z': // 1 string to match.
130 if (memcmp(RuleIdentifier.data()+1, "ext_of_zext", 11) != 0)
131 break;
132 return 4; // "zext_of_zext"
133 }
134 break;
135 case 13: // 7 strings to match.
136 switch (RuleIdentifier[0]) {
137 default: break;
138 case 'l': // 1 string to match.
139 if (memcmp(RuleIdentifier.data()+1, "oad_and_mask", 12) != 0)
140 break;
141 return 32; // "load_and_mask"
142 case 'm': // 2 strings to match.
143 switch (RuleIdentifier[1]) {
144 default: break;
145 case 'a': // 1 string to match.
146 if (memcmp(RuleIdentifier.data()+2, "tch_selects", 11) != 0)
147 break;
148 return 59; // "match_selects"
149 case 'e': // 1 string to match.
150 if (memcmp(RuleIdentifier.data()+2, "rge_unmerge", 11) != 0)
151 break;
152 return 66; // "merge_unmerge"
153 }
154 break;
155 case 'r': // 1 string to match.
156 if (memcmp(RuleIdentifier.data()+1, "edundant_and", 12) != 0)
157 break;
158 return 36; // "redundant_and"
159 case 's': // 1 string to match.
160 if (memcmp(RuleIdentifier.data()+1, "ame_val_zero", 12) != 0)
161 break;
162 return 81; // "same_val_zero"
163 case 'u': // 2 strings to match.
164 if (memcmp(RuleIdentifier.data()+1, "nmerge_", 7) != 0)
165 break;
166 switch (RuleIdentifier[8]) {
167 default: break;
168 case 'm': // 1 string to match.
169 if (memcmp(RuleIdentifier.data()+9, "erge", 4) != 0)
170 break;
171 return 65; // "unmerge_merge"
172 case 'u': // 1 string to match.
173 if (memcmp(RuleIdentifier.data()+9, "ndef", 4) != 0)
174 break;
175 return 68; // "unmerge_undef"
176 }
177 break;
178 }
179 break;
180 case 14: // 6 strings to match.
181 switch (RuleIdentifier[0]) {
182 default: break;
183 case 'a': // 2 strings to match.
184 if (memcmp(RuleIdentifier.data()+1, "nyext_of_", 9) != 0)
185 break;
186 switch (RuleIdentifier[10]) {
187 default: break;
188 case 's': // 1 string to match.
189 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
190 break;
191 return 10; // "anyext_of_sext"
192 case 'z': // 1 string to match.
193 if (memcmp(RuleIdentifier.data()+11, "ext", 3) != 0)
194 break;
195 return 9; // "anyext_of_zext"
196 }
197 break;
198 case 'b': // 1 string to match.
199 if (memcmp(RuleIdentifier.data()+1, "inop_same_val", 13) != 0)
200 break;
201 return 80; // "binop_same_val"
202 case 'f': // 1 string to match.
203 if (memcmp(RuleIdentifier.data()+1, "neg_fneg_fold", 13) != 0)
204 break;
205 return 87; // "fneg_fneg_fold"
206 case 's': // 1 string to match.
207 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
208 break;
209 return 7; // "sext_of_anyext"
210 case 'z': // 1 string to match.
211 if (memcmp(RuleIdentifier.data()+1, "ext_of_anyext", 13) != 0)
212 break;
213 return 5; // "zext_of_anyext"
214 }
215 break;
216 case 15: // 2 strings to match.
217 switch (RuleIdentifier[0]) {
218 default: break;
219 case 'e': // 1 string to match.
220 if (memcmp(RuleIdentifier.data()+1, "xtending_loads", 14) != 0)
221 break;
222 return 31; // "extending_loads"
223 case 'o': // 1 string to match.
224 if (memcmp(RuleIdentifier.data()+1, "verlapping_and", 14) != 0)
225 break;
226 return 101; // "overlapping_and"
227 }
228 break;
229 case 16: // 9 strings to match.
230 switch (RuleIdentifier[0]) {
231 default: break;
232 case 'a': // 1 string to match.
233 if (memcmp(RuleIdentifier.data()+1, "nyext_of_anyext", 15) != 0)
234 break;
235 return 8; // "anyext_of_anyext"
236 case 'c': // 1 string to match.
237 if (memcmp(RuleIdentifier.data()+1, "ombine_mul_cmlt", 15) != 0)
238 break;
239 return 125; // "combine_mul_cmlt"
240 case 's': // 4 strings to match.
241 switch (RuleIdentifier[1]) {
242 default: break;
243 case 'e': // 3 strings to match.
244 if (memcmp(RuleIdentifier.data()+2, "lect_", 5) != 0)
245 break;
246 switch (RuleIdentifier[7]) {
247 default: break;
248 case 't': // 1 string to match.
249 if (memcmp(RuleIdentifier.data()+8, "o_minmax", 8) != 0)
250 break;
251 return 115; // "select_to_minmax"
252 case 'u': // 1 string to match.
253 if (memcmp(RuleIdentifier.data()+8, "ndef_cmp", 8) != 0)
254 break;
255 return 54; // "select_undef_cmp"
256 case 'z': // 1 string to match.
257 if (memcmp(RuleIdentifier.data()+8, "ero_true", 8) != 0)
258 break;
259 return 60; // "select_zero_true"
260 }
261 break;
262 case 'u': // 1 string to match.
263 if (memcmp(RuleIdentifier.data()+2, "baddmulreassoc", 14) != 0)
264 break;
265 return 128; // "subaddmulreassoc"
266 }
267 break;
268 case 't': // 2 strings to match.
269 if (memcmp(RuleIdentifier.data()+1, "runcate_of_", 11) != 0)
270 break;
271 switch (RuleIdentifier[12]) {
272 default: break;
273 case 's': // 1 string to match.
274 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
275 break;
276 return 2; // "truncate_of_sext"
277 case 'z': // 1 string to match.
278 if (memcmp(RuleIdentifier.data()+13, "ext", 3) != 0)
279 break;
280 return 1; // "truncate_of_zext"
281 }
282 break;
283 case 'u': // 1 string to match.
284 if (memcmp(RuleIdentifier.data()+1, "ndef_to_fp_zero", 15) != 0)
285 break;
286 return 103; // "undef_to_fp_zero"
287 }
288 break;
289 case 17: // 6 strings to match.
290 switch (RuleIdentifier[0]) {
291 default: break;
292 case 'a': // 1 string to match.
293 if (memcmp(RuleIdentifier.data()+1, "nyext_trunc_fold", 16) != 0)
294 break;
295 return 86; // "anyext_trunc_fold"
296 case 'e': // 1 string to match.
297 if (memcmp(RuleIdentifier.data()+1, "rase_undef_store", 16) != 0)
298 break;
299 return 113; // "erase_undef_store"
300 case 's': // 2 strings to match.
301 if (memcmp(RuleIdentifier.data()+1, "elect_", 6) != 0)
302 break;
303 switch (RuleIdentifier[7]) {
304 default: break;
305 case 't': // 1 string to match.
306 if (memcmp(RuleIdentifier.data()+8, "o_iminmax", 9) != 0)
307 break;
308 return 58; // "select_to_iminmax"
309 case 'z': // 1 string to match.
310 if (memcmp(RuleIdentifier.data()+8, "ero_false", 9) != 0)
311 break;
312 return 61; // "select_zero_false"
313 }
314 break;
315 case 't': // 1 string to match.
316 if (memcmp(RuleIdentifier.data()+1, "runc_or_to_addhn", 16) != 0)
317 break;
318 return 117; // "trunc_or_to_addhn"
319 case 'u': // 1 string to match.
320 if (memcmp(RuleIdentifier.data()+1, "ndef_to_int_zero", 16) != 0)
321 break;
322 return 104; // "undef_to_int_zero"
323 }
324 break;
325 case 18: // 6 strings to match.
326 switch (RuleIdentifier[0]) {
327 default: break;
328 case 'b': // 1 string to match.
329 if (memcmp(RuleIdentifier.data()+1, "inop_left_to_zero", 17) != 0)
330 break;
331 return 82; // "binop_left_to_zero"
332 case 'c': // 2 strings to match.
333 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_f", 14) != 0)
334 break;
335 switch (RuleIdentifier[15]) {
336 default: break;
337 case 'a': // 1 string to match.
338 if (memcmp(RuleIdentifier.data()+16, "bs", 2) != 0)
339 break;
340 return 13; // "constant_fold_fabs"
341 case 'n': // 1 string to match.
342 if (memcmp(RuleIdentifier.data()+16, "eg", 2) != 0)
343 break;
344 return 12; // "constant_fold_fneg"
345 }
346 break;
347 case 'f': // 2 strings to match.
348 switch (RuleIdentifier[1]) {
349 default: break;
350 case 'o': // 1 string to match.
351 if (memcmp(RuleIdentifier.data()+2, "ld_merge_to_zext", 16) != 0)
352 break;
353 return 63; // "fold_merge_to_zext"
354 case 'p': // 1 string to match.
355 if (memcmp(RuleIdentifier.data()+2, "trunc_fpext_fold", 16) != 0)
356 break;
357 return 96; // "fptrunc_fpext_fold"
358 }
359 break;
360 case 't': // 1 string to match.
361 if (memcmp(RuleIdentifier.data()+1, "runcate_of_anyext", 17) != 0)
362 break;
363 return 3; // "truncate_of_anyext"
364 }
365 break;
366 case 19: // 14 strings to match.
367 switch (RuleIdentifier[0]) {
368 default: break;
369 case 'b': // 1 string to match.
370 if (memcmp(RuleIdentifier.data()+1, "inop_right_to_zero", 18) != 0)
371 break;
372 return 83; // "binop_right_to_zero"
373 case 'c': // 6 strings to match.
374 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_", 13) != 0)
375 break;
376 switch (RuleIdentifier[14]) {
377 default: break;
378 case 'b': // 1 string to match.
379 if (memcmp(RuleIdentifier.data()+15, "inop", 4) != 0)
380 break;
381 return 74; // "constant_fold_binop"
382 case 'f': // 5 strings to match.
383 switch (RuleIdentifier[15]) {
384 default: break;
385 case 'c': // 1 string to match.
386 if (memcmp(RuleIdentifier.data()+16, "eil", 3) != 0)
387 break;
388 return 18; // "constant_fold_fceil"
389 case 'l': // 1 string to match.
390 if (memcmp(RuleIdentifier.data()+16, "og2", 3) != 0)
391 break;
392 return 15; // "constant_fold_flog2"
393 case 'p': // 1 string to match.
394 if (memcmp(RuleIdentifier.data()+16, "ext", 3) != 0)
395 break;
396 return 17; // "constant_fold_fpext"
397 case 'r': // 1 string to match.
398 if (memcmp(RuleIdentifier.data()+16, "int", 3) != 0)
399 break;
400 return 23; // "constant_fold_frint"
401 case 's': // 1 string to match.
402 if (memcmp(RuleIdentifier.data()+16, "qrt", 3) != 0)
403 break;
404 return 14; // "constant_fold_fsqrt"
405 }
406 break;
407 }
408 break;
409 case 'i': // 1 string to match.
410 if (memcmp(RuleIdentifier.data()+1, "nteger_of_truncate", 18) != 0)
411 break;
412 return 28; // "integer_of_truncate"
413 case 'm': // 1 string to match.
414 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_zero", 18) != 0)
415 break;
416 return 72; // "merge_of_x_and_zero"
417 case 'p': // 1 string to match.
418 if (memcmp(RuleIdentifier.data()+1, "tr_add_immed_chain", 18) != 0)
419 break;
420 return 100; // "ptr_add_immed_chain"
421 case 'r': // 2 strings to match.
422 switch (RuleIdentifier[1]) {
423 default: break;
424 case 'i': // 1 string to match.
425 if (memcmp(RuleIdentifier.data()+2, "ght_identity_zero", 17) != 0)
426 break;
427 return 79; // "right_identity_zero"
428 case 'o': // 1 string to match.
429 if (memcmp(RuleIdentifier.data()+2, "tate_out_of_range", 17) != 0)
430 break;
431 return 50; // "rotate_out_of_range"
432 }
433 break;
434 case 's': // 1 string to match.
435 if (memcmp(RuleIdentifier.data()+1, "ext_trunc_sextload", 18) != 0)
436 break;
437 return 34; // "sext_trunc_sextload"
438 case 'u': // 1 string to match.
439 if (memcmp(RuleIdentifier.data()+1, "nary_undef_to_zero", 18) != 0)
440 break;
441 return 108; // "unary_undef_to_zero"
442 }
443 break;
444 case 20: // 7 strings to match.
445 switch (RuleIdentifier[0]) {
446 default: break;
447 case 'b': // 1 string to match.
448 if (memcmp(RuleIdentifier.data()+1, "itcast_bitcast_fold", 19) != 0)
449 break;
450 return 94; // "bitcast_bitcast_fold"
451 case 'c': // 1 string to match.
452 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_ffloor", 19) != 0)
453 break;
454 return 19; // "constant_fold_ffloor"
455 case 'm': // 1 string to match.
456 if (memcmp(RuleIdentifier.data()+1, "erge_of_x_and_undef", 19) != 0)
457 break;
458 return 71; // "merge_of_x_and_undef"
459 case 'r': // 1 string to match.
460 if (memcmp(RuleIdentifier.data()+1, "edundant_sext_inreg", 19) != 0)
461 break;
462 return 41; // "redundant_sext_inreg"
463 case 's': // 1 string to match.
464 if (memcmp(RuleIdentifier.data()+1, "plit_store_zero_128", 19) != 0)
465 break;
466 return 102; // "split_store_zero_128"
467 case 'u': // 2 strings to match.
468 if (RuleIdentifier[1] != 'n')
469 break;
470 switch (RuleIdentifier[2]) {
471 default: break;
472 case 'a': // 1 string to match.
473 if (memcmp(RuleIdentifier.data()+3, "ry_undef_to_undef", 17) != 0)
474 break;
475 return 109; // "unary_undef_to_undef"
476 case 'm': // 1 string to match.
477 if (memcmp(RuleIdentifier.data()+3, "erge_zext_to_zext", 17) != 0)
478 break;
479 return 70; // "unmerge_zext_to_zext"
480 }
481 break;
482 }
483 break;
484 case 21: // 9 strings to match.
485 switch (RuleIdentifier[0]) {
486 default: break;
487 case 'c': // 4 strings to match.
488 if (RuleIdentifier[1] != 'o')
489 break;
490 switch (RuleIdentifier[2]) {
491 default: break;
492 case 'm': // 2 strings to match.
493 if (memcmp(RuleIdentifier.data()+3, "bine_", 5) != 0)
494 break;
495 switch (RuleIdentifier[8]) {
496 default: break;
497 case 'b': // 1 string to match.
498 if (memcmp(RuleIdentifier.data()+9, "uild_unmerge", 12) != 0)
499 break;
500 return 73; // "combine_build_unmerge"
501 case 'c': // 1 string to match.
502 if (memcmp(RuleIdentifier.data()+9, "oncat_vector", 12) != 0)
503 break;
504 return 118; // "combine_concat_vector"
505 }
506 break;
507 case 'n': // 2 strings to match.
508 if (memcmp(RuleIdentifier.data()+3, "stant_fold_", 11) != 0)
509 break;
510 switch (RuleIdentifier[14]) {
511 default: break;
512 case 'c': // 1 string to match.
513 if (memcmp(RuleIdentifier.data()+15, "ast_op", 6) != 0)
514 break;
515 return 76; // "constant_fold_cast_op"
516 case 'f': // 1 string to match.
517 if (memcmp(RuleIdentifier.data()+15, "ptrunc", 6) != 0)
518 break;
519 return 16; // "constant_fold_fptrunc"
520 }
521 break;
522 }
523 break;
524 case 'l': // 1 string to match.
525 if (memcmp(RuleIdentifier.data()+1, "shr_of_trunc_of_lshr", 20) != 0)
526 break;
527 return 133; // "lshr_of_trunc_of_lshr"
528 case 'r': // 1 string to match.
529 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_fp", 20) != 0)
530 break;
531 return 89; // "right_identity_one_fp"
532 case 's': // 1 string to match.
533 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_equiv", 20) != 0)
534 break;
535 return 78; // "select_same_val_equiv"
536 case 'u': // 2 strings to match.
537 if (RuleIdentifier[1] != 'n')
538 break;
539 switch (RuleIdentifier[2]) {
540 default: break;
541 case 'd': // 1 string to match.
542 if (memcmp(RuleIdentifier.data()+3, "ef_to_negative_one", 18) != 0)
543 break;
544 return 105; // "undef_to_negative_one"
545 case 'm': // 1 string to match.
546 if (memcmp(RuleIdentifier.data()+3, "erge_dead_to_trunc", 18) != 0)
547 break;
548 return 69; // "unmerge_dead_to_trunc"
549 }
550 break;
551 }
552 break;
553 case 22: // 5 strings to match.
554 switch (RuleIdentifier[0]) {
555 default: break;
556 case 'c': // 1 string to match.
557 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fp_binop", 21) != 0)
558 break;
559 return 75; // "constant_fold_fp_binop"
560 case 'm': // 1 string to match.
561 if (memcmp(RuleIdentifier.data()+1, "atch_subo_no_overflow", 21) != 0)
562 break;
563 return 53; // "match_subo_no_overflow"
564 case 'p': // 1 string to match.
565 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_any_op", 21) != 0)
566 break;
567 return 110; // "propagate_undef_any_op"
568 case 'r': // 1 string to match.
569 if (memcmp(RuleIdentifier.data()+1, "ight_identity_one_int", 21) != 0)
570 break;
571 return 88; // "right_identity_one_int"
572 case 't': // 1 string to match.
573 if (memcmp(RuleIdentifier.data()+1, "runc_buildvector_fold", 21) != 0)
574 break;
575 return 92; // "trunc_buildvector_fold"
576 }
577 break;
578 case 23: // 6 strings to match.
579 switch (RuleIdentifier[0]) {
580 default: break;
581 case 'b': // 1 string to match.
582 if (memcmp(RuleIdentifier.data()+1, "uildvector_of_truncate", 22) != 0)
583 break;
584 return 27; // "buildvector_of_truncate"
585 case 'i': // 2 strings to match.
586 if (memcmp(RuleIdentifier.data()+1, "tof_const_zero_fold_", 20) != 0)
587 break;
588 switch (RuleIdentifier[21]) {
589 default: break;
590 case 's': // 1 string to match.
591 if (RuleIdentifier[22] != 'i')
592 break;
593 return 25; // "itof_const_zero_fold_si"
594 case 'u': // 1 string to match.
595 if (RuleIdentifier[22] != 'i')
596 break;
597 return 26; // "itof_const_zero_fold_ui"
598 }
599 break;
600 case 'p': // 1 string to match.
601 if (memcmp(RuleIdentifier.data()+1, "ropagate_undef_all_ops", 22) != 0)
602 break;
603 return 111; // "propagate_undef_all_ops"
604 case 's': // 1 string to match.
605 if (memcmp(RuleIdentifier.data()+1, "elect_same_val_trivial", 22) != 0)
606 break;
607 return 77; // "select_same_val_trivial"
608 case 't': // 1 string to match.
609 if (memcmp(RuleIdentifier.data()+1, "runcusatu_to_fptouisat", 22) != 0)
610 break;
611 return 132; // "truncusatu_to_fptouisat"
612 }
613 break;
614 case 24: // 5 strings to match.
615 switch (RuleIdentifier[0]) {
616 default: break;
617 case 'b': // 1 string to match.
618 if (memcmp(RuleIdentifier.data()+1, "inop_left_undef_to_zero", 23) != 0)
619 break;
620 return 106; // "binop_left_undef_to_zero"
621 case 'c': // 1 string to match.
622 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_fnearbyint", 23) != 0)
623 break;
624 return 24; // "constant_fold_fnearbyint"
625 case 's': // 2 strings to match.
626 if (RuleIdentifier[1] != 'e')
627 break;
628 switch (RuleIdentifier[2]) {
629 default: break;
630 case 'l': // 1 string to match.
631 if (memcmp(RuleIdentifier.data()+3, "ect_constant_cmp_true", 21) != 0)
632 break;
633 return 56; // "select_constant_cmp_true"
634 case 'x': // 1 string to match.
635 if (memcmp(RuleIdentifier.data()+3, "t_inreg_of_sext_inreg", 21) != 0)
636 break;
637 return 11; // "sext_inreg_of_sext_inreg"
638 }
639 break;
640 case 'x': // 1 string to match.
641 if (memcmp(RuleIdentifier.data()+1, "or_of_and_with_same_reg", 23) != 0)
642 break;
643 return 37; // "xor_of_and_with_same_reg"
644 }
645 break;
646 case 25: // 8 strings to match.
647 switch (RuleIdentifier[0]) {
648 default: break;
649 case 'b': // 3 strings to match.
650 switch (RuleIdentifier[1]) {
651 default: break;
652 case 'i': // 2 strings to match.
653 if (memcmp(RuleIdentifier.data()+2, "tfield_extract_from_", 20) != 0)
654 break;
655 switch (RuleIdentifier[22]) {
656 default: break;
657 case 'a': // 1 string to match.
658 if (memcmp(RuleIdentifier.data()+23, "nd", 2) != 0)
659 break;
660 return 47; // "bitfield_extract_from_and"
661 case 's': // 1 string to match.
662 if (memcmp(RuleIdentifier.data()+23, "hr", 2) != 0)
663 break;
664 return 48; // "bitfield_extract_from_shr"
665 }
666 break;
667 case 'u': // 1 string to match.
668 if (memcmp(RuleIdentifier.data()+2, "ildvector_identity_fold", 23) != 0)
669 break;
670 return 91; // "buildvector_identity_fold"
671 }
672 break;
673 case 'e': // 1 string to match.
674 if (memcmp(RuleIdentifier.data()+1, "xtract_vec_elt_build_vec", 24) != 0)
675 break;
676 return 122; // "extract_vec_elt_build_vec"
677 case 'r': // 3 strings to match.
678 switch (RuleIdentifier[1]) {
679 default: break;
680 case 'e': // 2 strings to match.
681 if (memcmp(RuleIdentifier.data()+2, "dundant_", 8) != 0)
682 break;
683 switch (RuleIdentifier[10]) {
684 default: break;
685 case 'a': // 1 string to match.
686 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
687 break;
688 return 43; // "redundant_aext_sext_inreg"
689 case 'z': // 1 string to match.
690 if (memcmp(RuleIdentifier.data()+11, "ext_sext_inreg", 14) != 0)
691 break;
692 return 42; // "redundant_zext_sext_inreg"
693 }
694 break;
695 case 'i': // 1 string to match.
696 if (memcmp(RuleIdentifier.data()+2, "ght_identity_neg_one_fp", 23) != 0)
697 break;
698 return 99; // "right_identity_neg_one_fp"
699 }
700 break;
701 case 's': // 1 string to match.
702 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_false", 24) != 0)
703 break;
704 return 55; // "select_constant_cmp_false"
705 }
706 break;
707 case 26: // 8 strings to match.
708 switch (RuleIdentifier[0]) {
709 default: break;
710 case 'b': // 2 strings to match.
711 if (RuleIdentifier[1] != 'i')
712 break;
713 switch (RuleIdentifier[2]) {
714 default: break;
715 case 'n': // 1 string to match.
716 if (memcmp(RuleIdentifier.data()+3, "op_right_undef_to_undef", 23) != 0)
717 break;
718 return 107; // "binop_right_undef_to_undef"
719 case 't': // 1 string to match.
720 if (memcmp(RuleIdentifier.data()+3, "cast_bitcast_to_bitcast", 23) != 0)
721 break;
722 return 95; // "bitcast_bitcast_to_bitcast"
723 }
724 break;
725 case 'c': // 2 strings to match.
726 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
727 break;
728 switch (RuleIdentifier[3]) {
729 default: break;
730 case 'b': // 1 string to match.
731 if (memcmp(RuleIdentifier.data()+4, "ine_indexed_load_store", 22) != 0)
732 break;
733 return 33; // "combine_indexed_load_store"
734 case 'm': // 1 string to match.
735 if (memcmp(RuleIdentifier.data()+4, "ute_fp_constant_to_rhs", 22) != 0)
736 break;
737 return 121; // "commute_fp_constant_to_rhs"
738 }
739 break;
740 case 'e': // 1 string to match.
741 if (memcmp(RuleIdentifier.data()+1, "xtractvecelt_pairwise_add", 25) != 0)
742 break;
743 return 38; // "extractvecelt_pairwise_add"
744 case 'm': // 2 strings to match.
745 if (memcmp(RuleIdentifier.data()+1, "utate_anyext_to_zext_", 21) != 0)
746 break;
747 switch (RuleIdentifier[22]) {
748 default: break;
749 case 'f': // 1 string to match.
750 if (memcmp(RuleIdentifier.data()+23, "cmp", 3) != 0)
751 break;
752 return 30; // "mutate_anyext_to_zext_fcmp"
753 case 'i': // 1 string to match.
754 if (memcmp(RuleIdentifier.data()+23, "cmp", 3) != 0)
755 break;
756 return 29; // "mutate_anyext_to_zext_icmp"
757 }
758 break;
759 case 'r': // 1 string to match.
760 if (memcmp(RuleIdentifier.data()+1, "ight_identity_neg_zero_fp", 25) != 0)
761 break;
762 return 97; // "right_identity_neg_zero_fp"
763 }
764 break;
765 case 27: // 5 strings to match.
766 switch (RuleIdentifier[0]) {
767 default: break;
768 case 'c': // 2 strings to match.
769 if (memcmp(RuleIdentifier.data()+1, "om", 2) != 0)
770 break;
771 switch (RuleIdentifier[3]) {
772 default: break;
773 case 'b': // 1 string to match.
774 if (memcmp(RuleIdentifier.data()+4, "ine_use_vector_truncate", 23) != 0)
775 break;
776 return 126; // "combine_use_vector_truncate"
777 case 'm': // 1 string to match.
778 if (memcmp(RuleIdentifier.data()+4, "ute_int_constant_to_rhs", 23) != 0)
779 break;
780 return 120; // "commute_int_constant_to_rhs"
781 }
782 break;
783 case 's': // 1 string to match.
784 if (memcmp(RuleIdentifier.data()+1, "elect_constant_cmp_general", 26) != 0)
785 break;
786 return 57; // "select_constant_cmp_general"
787 case 't': // 1 string to match.
788 if (memcmp(RuleIdentifier.data()+1, "runc_lshr_buildvector_fold", 26) != 0)
789 break;
790 return 93; // "trunc_lshr_buildvector_fold"
791 case 'u': // 1 string to match.
792 if (memcmp(RuleIdentifier.data()+1, "nmerge_anyext_build_vector", 26) != 0)
793 break;
794 return 64; // "unmerge_anyext_build_vector"
795 }
796 break;
797 case 28: // 1 string to match.
798 if (memcmp(RuleIdentifier.data()+0, "propagate_undef_shuffle_mask", 28) != 0)
799 break;
800 return 112; // "propagate_undef_shuffle_mask"
801 case 29: // 4 strings to match.
802 switch (RuleIdentifier[0]) {
803 default: break;
804 case 'b': // 1 string to match.
805 if (memcmp(RuleIdentifier.data()+1, "itfield_extract_from_shr_and", 28) != 0)
806 break;
807 return 49; // "bitfield_extract_from_shr_and"
808 case 'c': // 2 strings to match.
809 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_", 23) != 0)
810 break;
811 switch (RuleIdentifier[24]) {
812 default: break;
813 case 'r': // 1 string to match.
814 if (memcmp(RuleIdentifier.data()+25, "ound", 4) != 0)
815 break;
816 return 21; // "constant_fold_intrinsic_round"
817 case 't': // 1 string to match.
818 if (memcmp(RuleIdentifier.data()+25, "runc", 4) != 0)
819 break;
820 return 20; // "constant_fold_intrinsic_trunc"
821 }
822 break;
823 case 'i': // 1 string to match.
824 if (memcmp(RuleIdentifier.data()+1, "cmp_to_true_false_known_bits", 28) != 0)
825 break;
826 return 51; // "icmp_to_true_false_known_bits"
827 }
828 break;
829 case 30: // 1 string to match.
830 if (memcmp(RuleIdentifier.data()+0, "right_identity_neg_zero_fp_nsz", 30) != 0)
831 break;
832 return 98; // "right_identity_neg_zero_fp_nsz"
833 case 31: // 1 string to match.
834 if (memcmp(RuleIdentifier.data()+0, "combine_build_vector_of_bitcast", 31) != 0)
835 break;
836 return 119; // "combine_build_vector_of_bitcast"
837 case 32: // 1 string to match.
838 if (memcmp(RuleIdentifier.data()+0, "bitfield_extract_from_sext_inreg", 32) != 0)
839 break;
840 return 46; // "bitfield_extract_from_sext_inreg"
841 case 33: // 3 strings to match.
842 switch (RuleIdentifier[0]) {
843 default: break;
844 case 'c': // 1 string to match.
845 if (memcmp(RuleIdentifier.data()+1, "onstant_fold_intrinsic_roundeven", 32) != 0)
846 break;
847 return 22; // "constant_fold_intrinsic_roundeven"
848 case 'r': // 2 strings to match.
849 if (memcmp(RuleIdentifier.data()+1, "edundant_", 9) != 0)
850 break;
851 switch (RuleIdentifier[10]) {
852 default: break;
853 case 'a': // 1 string to match.
854 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
855 break;
856 return 44; // "redundant_aext_unmerge_sext_inreg"
857 case 'z': // 1 string to match.
858 if (memcmp(RuleIdentifier.data()+11, "ext_unmerge_sext_inreg", 22) != 0)
859 break;
860 return 45; // "redundant_zext_unmerge_sext_inreg"
861 }
862 break;
863 }
864 break;
865 case 34: // 1 string to match.
866 if (memcmp(RuleIdentifier.data()+0, "extract_all_elts_from_build_vector", 34) != 0)
867 break;
868 return 123; // "extract_all_elts_from_build_vector"
869 case 36: // 1 string to match.
870 if (memcmp(RuleIdentifier.data()+0, "insert_extract_vec_elt_out_of_bounds", 36) != 0)
871 break;
872 return 114; // "insert_extract_vec_elt_out_of_bounds"
873 case 37: // 1 string to match.
874 if (memcmp(RuleIdentifier.data()+0, "hoist_logic_op_with_same_opcode_hands", 37) != 0)
875 break;
876 return 35; // "hoist_logic_op_with_same_opcode_hands"
877 case 46: // 2 strings to match.
878 switch (RuleIdentifier[0]) {
879 default: break;
880 case 'f': // 1 string to match.
881 if (memcmp(RuleIdentifier.data()+1, "unnel_shift_from_or_shift_constants_are_legal", 45) != 0)
882 break;
883 return 134; // "funnel_shift_from_or_shift_constants_are_legal"
884 case 'p': // 1 string to match.
885 if (memcmp(RuleIdentifier.data()+1, "ush_freeze_to_prevent_poison_from_propagating", 45) != 0)
886 break;
887 return 124; // "push_freeze_to_prevent_poison_from_propagating"
888 }
889 break;
890 }
891#endif // ifndef NDEBUG
892
893 return std::nullopt;
894}
895static std::optional<std::pair<uint64_t, uint64_t>> getRuleRangeForIdentifier(StringRef RuleIdentifier) {
896 std::pair<StringRef, StringRef> RangePair = RuleIdentifier.split('-');
897 if (!RangePair.second.empty()) {
898 const auto First = getRuleIdxForIdentifier(RangePair.first);
899 const auto Last = getRuleIdxForIdentifier(RangePair.second);
900 if (!First || !Last)
901 return std::nullopt;
902 if (First >= Last)
903 report_fatal_error("Beginning of range should be before end of range");
904 return {{*First, *Last + 1}};
905 }
906 if (RangePair.first == "*") {
907 return {{0, 135}};
908 }
909 const auto I = getRuleIdxForIdentifier(RangePair.first);
910 if (!I)
911 return std::nullopt;
912 return {{*I, *I + 1}};
913}
914
915bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleEnabled(StringRef RuleIdentifier) {
916 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
917 if (!MaybeRange)
918 return false;
919 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
920 DisabledRules.reset(I);
921 return true;
922}
923
924bool AArch64PostLegalizerCombinerImplRuleConfig::setRuleDisabled(StringRef RuleIdentifier) {
925 auto MaybeRange = getRuleRangeForIdentifier(RuleIdentifier);
926 if (!MaybeRange)
927 return false;
928 for (auto I = MaybeRange->first; I < MaybeRange->second; ++I)
929 DisabledRules.set(I);
930 return true;
931}
932
933static std::vector<std::string> AArch64PostLegalizerCombinerOption;
934static cl::list<std::string> AArch64PostLegalizerCombinerDisableOption(
935 "aarch64postlegalizercombiner-disable-rule",
936 cl::desc("Disable one or more combiner rules temporarily in the AArch64PostLegalizerCombiner pass"),
937 cl::CommaSeparated,
938 cl::Hidden,
939 cl::cat(GICombinerOptionCategory),
940 cl::callback([](const std::string &Str) {
941 AArch64PostLegalizerCombinerOption.push_back(Str);
942 }));
943static cl::list<std::string> AArch64PostLegalizerCombinerOnlyEnableOption(
944 "aarch64postlegalizercombiner-only-enable-rule",
945 cl::desc("Disable all rules in the AArch64PostLegalizerCombiner pass then re-enable the specified ones"),
946 cl::Hidden,
947 cl::cat(GICombinerOptionCategory),
948 cl::callback([](const std::string &CommaSeparatedArg) {
949 StringRef Str = CommaSeparatedArg;
950 AArch64PostLegalizerCombinerOption.push_back("*");
951 do {
952 auto X = Str.split(",");
953 AArch64PostLegalizerCombinerOption.push_back(("!" + X.first).str());
954 Str = X.second;
955 } while (!Str.empty());
956 }));
957
958
959bool AArch64PostLegalizerCombinerImplRuleConfig::isRuleEnabled(unsigned RuleID) const {
960 return !DisabledRules.test(RuleID);
961}
962bool AArch64PostLegalizerCombinerImplRuleConfig::parseCommandLineOption() {
963 for (StringRef Identifier : AArch64PostLegalizerCombinerOption) {
964 bool Enabled = Identifier.consume_front("!");
965 if (Enabled && !setRuleEnabled(Identifier))
966 return false;
967 if (!Enabled && !setRuleDisabled(Identifier))
968 return false;
969 }
970 return true;
971}
972
973
974#endif // GET_GICOMBINER_TYPES
975
976#ifdef GET_GICOMBINER_TYPES
977
978const unsigned MAX_SUBTARGET_PREDICATES = 0;
979using PredicateBitset = llvm::Bitset<MAX_SUBTARGET_PREDICATES>;
980
981#endif // GET_GICOMBINER_TYPES
982
983#ifdef GET_GICOMBINER_CLASS_MEMBERS
984
985 bool canMatchOpcode(unsigned Opc) const override;
986 uint32_t getRootFlagsToDrop() const override;
987
988#endif // GET_GICOMBINER_CLASS_MEMBERS
989
990#ifdef GET_GICOMBINER_CLASS_MEMBERS
991
992PredicateBitset AvailableModuleFeatures;
993mutable PredicateBitset AvailableFunctionFeatures;
994PredicateBitset getAvailableFeatures() const {
995 return AvailableModuleFeatures | AvailableFunctionFeatures;
996}
997PredicateBitset
998computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const;
999PredicateBitset
1000computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget,
1001 const MachineFunction *MF) const;
1002void setupGeneratedPerFunctionState(MachineFunction &MF) override;
1003
1004#endif // GET_GICOMBINER_CLASS_MEMBERS
1005
1006#ifdef GET_GICOMBINER_CLASS_MEMBERS
1007
1008 mutable MatcherState State;
1009 typedef ComplexRendererFns(AArch64PostLegalizerCombinerImpl::*ComplexMatcherMemFn)(MachineOperand &) const;
1010 typedef void(AArch64PostLegalizerCombinerImpl::*CustomRendererFn)(MachineInstrBuilder &, const MachineInstr &, int) const;
1011 const ExecInfoTy<PredicateBitset, ComplexMatcherMemFn, CustomRendererFn> ExecInfo;
1012 static AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn ComplexPredicateFns[];
1013 static AArch64PostLegalizerCombinerImpl::CustomRendererFn CustomRenderers[];
1014 bool testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const override;
1015 bool testImmPredicate_APInt(unsigned PredicateID, const APInt &Imm) const override;
1016 bool testImmPredicate_APFloat(unsigned PredicateID, const APFloat &Imm) const override;
1017 const uint8_t *getMatchTable() const override;
1018 bool testMIPredicate_MI(unsigned PredicateID, const MachineInstr &MI, const MatcherState &State) const override;
1019 bool testMOPredicate_MO(unsigned PredicateID, const MachineOperand &MO, const MatcherState &State) const override;
1020 bool testSimplePredicate(unsigned PredicateID) const override;
1021 bool runCustomAction(unsigned FnID, const MatcherState &State, NewMIVector &OutMIs) const override;
1022
1023#endif // GET_GICOMBINER_CLASS_MEMBERS
1024
1025#ifdef GET_GICOMBINER_IMPL
1026
1027// LLT Objects.
1028enum {
1029 GILLT_s1,
1030};
1031const static size_t NumTypeObjects = 1;
1032const static LLT TypeObjects[] = {
1033 LLT::scalar(1),
1034};
1035
1036// Bits for subtarget features that participate in instruction matching.
1037enum SubtargetFeatureBits : uint8_t {
1038};
1039
1040PredicateBitset AArch64PostLegalizerCombinerImpl::
1041computeAvailableModuleFeatures(const AArch64Subtarget *Subtarget) const {
1042 PredicateBitset Features{};
1043 return Features;
1044}
1045
1046void AArch64PostLegalizerCombinerImpl::setupGeneratedPerFunctionState(MachineFunction &MF) {
1047 AvailableFunctionFeatures = computeAvailableFunctionFeatures((const AArch64Subtarget *)&MF.getSubtarget(), &MF);
1048}
1049PredicateBitset AArch64PostLegalizerCombinerImpl::
1050computeAvailableFunctionFeatures(const AArch64Subtarget *Subtarget, const MachineFunction *MF) const {
1051 PredicateBitset Features{};
1052 return Features;
1053}
1054
1055// Feature bitsets.
1056enum {
1057 GIFBS_Invalid,
1058};
1059constexpr static PredicateBitset FeatureBitsets[] {
1060 {}, // GIFBS_Invalid
1061};
1062
1063// ComplexPattern predicates.
1064enum {
1065 GICP_Invalid,
1066};
1067// See constructor for table contents
1068
1069AArch64PostLegalizerCombinerImpl::ComplexMatcherMemFn
1070AArch64PostLegalizerCombinerImpl::ComplexPredicateFns[] = {
1071 nullptr, // GICP_Invalid
1072};
1073
1074enum {
1075 GICXXPred_MI_Predicate_GICombiner0 = GICXXPred_Invalid + 1,
1076 GICXXPred_MI_Predicate_GICombiner1,
1077 GICXXPred_MI_Predicate_GICombiner2,
1078 GICXXPred_MI_Predicate_GICombiner3,
1079 GICXXPred_MI_Predicate_GICombiner4,
1080 GICXXPred_MI_Predicate_GICombiner5,
1081 GICXXPred_MI_Predicate_GICombiner6,
1082 GICXXPred_MI_Predicate_GICombiner7,
1083 GICXXPred_MI_Predicate_GICombiner8,
1084 GICXXPred_MI_Predicate_GICombiner9,
1085 GICXXPred_MI_Predicate_GICombiner10,
1086 GICXXPred_MI_Predicate_GICombiner11,
1087 GICXXPred_MI_Predicate_GICombiner12,
1088 GICXXPred_MI_Predicate_GICombiner13,
1089 GICXXPred_MI_Predicate_GICombiner14,
1090 GICXXPred_MI_Predicate_GICombiner15,
1091 GICXXPred_MI_Predicate_GICombiner16,
1092 GICXXPred_MI_Predicate_GICombiner17,
1093};
1094bool AArch64PostLegalizerCombinerImpl::testMIPredicate_MI(unsigned PredicateID, const MachineInstr & MI, const MatcherState &State) const {
1095 switch (PredicateID) {
1096 case GICXXPred_MI_Predicate_GICombiner0: {
1097 return MRI.getType(State.MIs[0]->getOperand(0).getReg()).isScalar();
1098 }
1099 case GICXXPred_MI_Predicate_GICombiner1: {
1100 return Helper.matchSextTruncSextLoad(*State.MIs[0]);
1101 }
1102 case GICXXPred_MI_Predicate_GICombiner2: {
1103 return Helper.matchRedundantSExtInReg(*State.MIs[0]);
1104 }
1105 case GICXXPred_MI_Predicate_GICombiner3: {
1106 LLT SrcTy = MRI.getType(State.MIs[1]->getOperand(1).getReg());
1107 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
1108 VT->computeNumSignBits(State.MIs[1]->getOperand(1).getReg()) >=
1109 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);
1110 llvm_unreachable("GICombiner3 should have returned");
1111 }
1112 case GICXXPred_MI_Predicate_GICombiner4: {
1113 return !isConstantOrConstantSplatVector(State.MIs[0]->getOperand(1).getReg(), MRI) &&
1114 MRI.getType(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()) &&
1115 VT->computeNumSignBits(State.MIs[0]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg()).getScalarSizeInBits();
1116 }
1117 case GICXXPred_MI_Predicate_GICombiner5: {
1118 return MRI.getType(State.MIs[0]->getOperand(1).getReg()) == LLT::scalar(32);
1119 }
1120 case GICXXPred_MI_Predicate_GICombiner6: {
1121 return Helper.matchSelectSameVal(*State.MIs[0]);
1122 }
1123 case GICXXPred_MI_Predicate_GICombiner7: {
1124 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());
1125 }
1126 case GICXXPred_MI_Predicate_GICombiner8: {
1127 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 1.0);
1128 }
1129 case GICXXPred_MI_Predicate_GICombiner9: {
1130 return MRI.getType(State.MIs[1]->getOperand(1).getReg()) != MRI.getType(State.MIs[0]->getOperand(0).getReg());
1131 }
1132 case GICXXPred_MI_Predicate_GICombiner10: {
1133 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -0.0);
1134 }
1135 case GICXXPred_MI_Predicate_GICombiner11: {
1136 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), 0.0);
1137 }
1138 case GICXXPred_MI_Predicate_GICombiner12: {
1139 return Helper.matchConstantFPOp(State.MIs[0]->getOperand(2), -1.0);
1140 }
1141 case GICXXPred_MI_Predicate_GICombiner13: {
1142 return Helper.matchUndefShuffleVectorMask(*State.MIs[0]);
1143 }
1144 case GICXXPred_MI_Predicate_GICombiner14: {
1145 return matchTruncOrToADDHN(*State.MIs[0], MRI, VT, State.MIs[0]->getOperand(0).getReg(),
1146 State.MIs[0]->getOperand(1).getReg(), State.MIs[1]->getOperand(1).getReg(),
1147 State.MIs[1]->getOperand(2).getReg());
1148 }
1149 case GICXXPred_MI_Predicate_GICombiner15: {
1150 return matchSubAddMulReassoc(State.MIs[1]->getOperand(1).getReg(), State.MIs[1]->getOperand(2).getReg(),
1151 State.MIs[0]->getOperand(2).getReg(), State.MIs[0]->getOperand(1).getReg(), MRI);
1152 }
1153 case GICXXPred_MI_Predicate_GICombiner16: {
1154 return Helper.matchTruncUSatU(*State.MIs[0], *State.MIs[1]);
1155 }
1156 case GICXXPred_MI_Predicate_GICombiner17: {
1157 return Helper.matchTruncUSatUToFPTOUISat(*State.MIs[0], *State.MIs[1]);
1158 }
1159 }
1160 llvm_unreachable("Unknown predicate");
1161 return false;
1162}
1163bool AArch64PostLegalizerCombinerImpl::testMOPredicate_MO(unsigned PredicateID, const MachineOperand & MO, const MatcherState &State) const {
1164 llvm_unreachable("Unknown predicate");
1165 return false;
1166}
1167bool AArch64PostLegalizerCombinerImpl::testImmPredicate_I64(unsigned PredicateID, int64_t Imm) const {
1168 llvm_unreachable("Unknown predicate");
1169 return false;
1170}
1171bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APFloat(unsigned PredicateID, const APFloat & Imm) const {
1172 llvm_unreachable("Unknown predicate");
1173 return false;
1174}
1175bool AArch64PostLegalizerCombinerImpl::testImmPredicate_APInt(unsigned PredicateID, const APInt & Imm) const {
1176 llvm_unreachable("Unknown predicate");
1177 return false;
1178}
1179enum {
1180 GICXXPred_Simple_IsRule0Enabled = GICXXPred_Invalid + 1,
1181 GICXXPred_Simple_IsRule1Enabled,
1182 GICXXPred_Simple_IsRule2Enabled,
1183 GICXXPred_Simple_IsRule3Enabled,
1184 GICXXPred_Simple_IsRule4Enabled,
1185 GICXXPred_Simple_IsRule5Enabled,
1186 GICXXPred_Simple_IsRule6Enabled,
1187 GICXXPred_Simple_IsRule7Enabled,
1188 GICXXPred_Simple_IsRule8Enabled,
1189 GICXXPred_Simple_IsRule9Enabled,
1190 GICXXPred_Simple_IsRule10Enabled,
1191 GICXXPred_Simple_IsRule11Enabled,
1192 GICXXPred_Simple_IsRule12Enabled,
1193 GICXXPred_Simple_IsRule13Enabled,
1194 GICXXPred_Simple_IsRule14Enabled,
1195 GICXXPred_Simple_IsRule15Enabled,
1196 GICXXPred_Simple_IsRule16Enabled,
1197 GICXXPred_Simple_IsRule17Enabled,
1198 GICXXPred_Simple_IsRule18Enabled,
1199 GICXXPred_Simple_IsRule19Enabled,
1200 GICXXPred_Simple_IsRule20Enabled,
1201 GICXXPred_Simple_IsRule21Enabled,
1202 GICXXPred_Simple_IsRule22Enabled,
1203 GICXXPred_Simple_IsRule23Enabled,
1204 GICXXPred_Simple_IsRule24Enabled,
1205 GICXXPred_Simple_IsRule25Enabled,
1206 GICXXPred_Simple_IsRule26Enabled,
1207 GICXXPred_Simple_IsRule27Enabled,
1208 GICXXPred_Simple_IsRule28Enabled,
1209 GICXXPred_Simple_IsRule29Enabled,
1210 GICXXPred_Simple_IsRule30Enabled,
1211 GICXXPred_Simple_IsRule31Enabled,
1212 GICXXPred_Simple_IsRule32Enabled,
1213 GICXXPred_Simple_IsRule33Enabled,
1214 GICXXPred_Simple_IsRule34Enabled,
1215 GICXXPred_Simple_IsRule35Enabled,
1216 GICXXPred_Simple_IsRule36Enabled,
1217 GICXXPred_Simple_IsRule37Enabled,
1218 GICXXPred_Simple_IsRule38Enabled,
1219 GICXXPred_Simple_IsRule39Enabled,
1220 GICXXPred_Simple_IsRule40Enabled,
1221 GICXXPred_Simple_IsRule41Enabled,
1222 GICXXPred_Simple_IsRule42Enabled,
1223 GICXXPred_Simple_IsRule43Enabled,
1224 GICXXPred_Simple_IsRule44Enabled,
1225 GICXXPred_Simple_IsRule45Enabled,
1226 GICXXPred_Simple_IsRule46Enabled,
1227 GICXXPred_Simple_IsRule47Enabled,
1228 GICXXPred_Simple_IsRule48Enabled,
1229 GICXXPred_Simple_IsRule49Enabled,
1230 GICXXPred_Simple_IsRule50Enabled,
1231 GICXXPred_Simple_IsRule51Enabled,
1232 GICXXPred_Simple_IsRule52Enabled,
1233 GICXXPred_Simple_IsRule53Enabled,
1234 GICXXPred_Simple_IsRule54Enabled,
1235 GICXXPred_Simple_IsRule55Enabled,
1236 GICXXPred_Simple_IsRule56Enabled,
1237 GICXXPred_Simple_IsRule57Enabled,
1238 GICXXPred_Simple_IsRule58Enabled,
1239 GICXXPred_Simple_IsRule59Enabled,
1240 GICXXPred_Simple_IsRule60Enabled,
1241 GICXXPred_Simple_IsRule61Enabled,
1242 GICXXPred_Simple_IsRule62Enabled,
1243 GICXXPred_Simple_IsRule63Enabled,
1244 GICXXPred_Simple_IsRule64Enabled,
1245 GICXXPred_Simple_IsRule65Enabled,
1246 GICXXPred_Simple_IsRule66Enabled,
1247 GICXXPred_Simple_IsRule67Enabled,
1248 GICXXPred_Simple_IsRule68Enabled,
1249 GICXXPred_Simple_IsRule69Enabled,
1250 GICXXPred_Simple_IsRule70Enabled,
1251 GICXXPred_Simple_IsRule71Enabled,
1252 GICXXPred_Simple_IsRule72Enabled,
1253 GICXXPred_Simple_IsRule73Enabled,
1254 GICXXPred_Simple_IsRule74Enabled,
1255 GICXXPred_Simple_IsRule75Enabled,
1256 GICXXPred_Simple_IsRule76Enabled,
1257 GICXXPred_Simple_IsRule77Enabled,
1258 GICXXPred_Simple_IsRule78Enabled,
1259 GICXXPred_Simple_IsRule79Enabled,
1260 GICXXPred_Simple_IsRule80Enabled,
1261 GICXXPred_Simple_IsRule81Enabled,
1262 GICXXPred_Simple_IsRule82Enabled,
1263 GICXXPred_Simple_IsRule83Enabled,
1264 GICXXPred_Simple_IsRule84Enabled,
1265 GICXXPred_Simple_IsRule85Enabled,
1266 GICXXPred_Simple_IsRule86Enabled,
1267 GICXXPred_Simple_IsRule87Enabled,
1268 GICXXPred_Simple_IsRule88Enabled,
1269 GICXXPred_Simple_IsRule89Enabled,
1270 GICXXPred_Simple_IsRule90Enabled,
1271 GICXXPred_Simple_IsRule91Enabled,
1272 GICXXPred_Simple_IsRule92Enabled,
1273 GICXXPred_Simple_IsRule93Enabled,
1274 GICXXPred_Simple_IsRule94Enabled,
1275 GICXXPred_Simple_IsRule95Enabled,
1276 GICXXPred_Simple_IsRule96Enabled,
1277 GICXXPred_Simple_IsRule97Enabled,
1278 GICXXPred_Simple_IsRule98Enabled,
1279 GICXXPred_Simple_IsRule99Enabled,
1280 GICXXPred_Simple_IsRule100Enabled,
1281 GICXXPred_Simple_IsRule101Enabled,
1282 GICXXPred_Simple_IsRule102Enabled,
1283 GICXXPred_Simple_IsRule103Enabled,
1284 GICXXPred_Simple_IsRule104Enabled,
1285 GICXXPred_Simple_IsRule105Enabled,
1286 GICXXPred_Simple_IsRule106Enabled,
1287 GICXXPred_Simple_IsRule107Enabled,
1288 GICXXPred_Simple_IsRule108Enabled,
1289 GICXXPred_Simple_IsRule109Enabled,
1290 GICXXPred_Simple_IsRule110Enabled,
1291 GICXXPred_Simple_IsRule111Enabled,
1292 GICXXPred_Simple_IsRule112Enabled,
1293 GICXXPred_Simple_IsRule113Enabled,
1294 GICXXPred_Simple_IsRule114Enabled,
1295 GICXXPred_Simple_IsRule115Enabled,
1296 GICXXPred_Simple_IsRule116Enabled,
1297 GICXXPred_Simple_IsRule117Enabled,
1298 GICXXPred_Simple_IsRule118Enabled,
1299 GICXXPred_Simple_IsRule119Enabled,
1300 GICXXPred_Simple_IsRule120Enabled,
1301 GICXXPred_Simple_IsRule121Enabled,
1302 GICXXPred_Simple_IsRule122Enabled,
1303 GICXXPred_Simple_IsRule123Enabled,
1304 GICXXPred_Simple_IsRule124Enabled,
1305 GICXXPred_Simple_IsRule125Enabled,
1306 GICXXPred_Simple_IsRule126Enabled,
1307 GICXXPred_Simple_IsRule127Enabled,
1308 GICXXPred_Simple_IsRule128Enabled,
1309 GICXXPred_Simple_IsRule129Enabled,
1310 GICXXPred_Simple_IsRule130Enabled,
1311 GICXXPred_Simple_IsRule131Enabled,
1312 GICXXPred_Simple_IsRule132Enabled,
1313 GICXXPred_Simple_IsRule133Enabled,
1314 GICXXPred_Simple_IsRule134Enabled,
1315};
1316
1317bool AArch64PostLegalizerCombinerImpl::testSimplePredicate(unsigned Predicate) const {
1318 return RuleConfig.isRuleEnabled(Predicate - GICXXPred_Invalid - 1);
1319}
1320// Custom renderers.
1321enum {
1322 GICR_Invalid,
1323};
1324AArch64PostLegalizerCombinerImpl::CustomRendererFn
1325AArch64PostLegalizerCombinerImpl::CustomRenderers[] = {
1326 nullptr, // GICR_Invalid
1327};
1328
1329bool AArch64PostLegalizerCombinerImpl::canMatchOpcode(unsigned Opc) const {
1330 switch (Opc) {
1331 case TargetOpcode::G_ICMP:
1332 case TargetOpcode::G_SELECT:
1333 case TargetOpcode::G_SHUFFLE_VECTOR:
1334 case TargetOpcode::G_ADD:
1335 case TargetOpcode::G_AND:
1336 case TargetOpcode::G_ASHR:
1337 case TargetOpcode::G_EXTRACT_VECTOR_ELT:
1338 case TargetOpcode::G_FADD:
1339 case TargetOpcode::G_FCOPYSIGN:
1340 case TargetOpcode::G_FDIV:
1341 case TargetOpcode::G_FMAXIMUM:
1342 case TargetOpcode::G_FMAXIMUMNUM:
1343 case TargetOpcode::G_FMAXNUM:
1344 case TargetOpcode::G_FMINIMUM:
1345 case TargetOpcode::G_FMINIMUMNUM:
1346 case TargetOpcode::G_FMINNUM:
1347 case TargetOpcode::G_FMUL:
1348 case TargetOpcode::G_FREM:
1349 case TargetOpcode::G_FSUB:
1350 case TargetOpcode::G_LSHR:
1351 case TargetOpcode::G_MERGE_VALUES:
1352 case TargetOpcode::G_MUL:
1353 case TargetOpcode::G_OR:
1354 case TargetOpcode::G_PTR_ADD:
1355 case TargetOpcode::G_ROTL:
1356 case TargetOpcode::G_ROTR:
1357 case TargetOpcode::G_SDIV:
1358 case TargetOpcode::G_SEXT_INREG:
1359 case TargetOpcode::G_SHL:
1360 case TargetOpcode::G_SREM:
1361 case TargetOpcode::G_SUB:
1362 case TargetOpcode::G_UDIV:
1363 case TargetOpcode::G_UREM:
1364 case TargetOpcode::G_XOR:
1365 case TargetOpcode::COPY:
1366 case TargetOpcode::G_ABS:
1367 case TargetOpcode::G_ANYEXT:
1368 case TargetOpcode::G_BITCAST:
1369 case TargetOpcode::G_BUILD_VECTOR:
1370 case TargetOpcode::G_CONCAT_VECTORS:
1371 case TargetOpcode::G_FABS:
1372 case TargetOpcode::G_FCEIL:
1373 case TargetOpcode::G_FFLOOR:
1374 case TargetOpcode::G_FLOG2:
1375 case TargetOpcode::G_FNEARBYINT:
1376 case TargetOpcode::G_FNEG:
1377 case TargetOpcode::G_FPEXT:
1378 case TargetOpcode::G_FPTOSI:
1379 case TargetOpcode::G_FPTOUI:
1380 case TargetOpcode::G_FPTRUNC:
1381 case TargetOpcode::G_FREEZE:
1382 case TargetOpcode::G_FRINT:
1383 case TargetOpcode::G_FSQRT:
1384 case TargetOpcode::G_INTRINSIC_ROUND:
1385 case TargetOpcode::G_INTRINSIC_ROUNDEVEN:
1386 case TargetOpcode::G_INTRINSIC_TRUNC:
1387 case TargetOpcode::G_INTTOPTR:
1388 case TargetOpcode::G_PTRTOINT:
1389 case TargetOpcode::G_SEXT:
1390 case TargetOpcode::G_SITOFP:
1391 case TargetOpcode::G_STORE:
1392 case TargetOpcode::G_TRUNC:
1393 case TargetOpcode::G_TRUNC_USAT_U:
1394 case TargetOpcode::G_UITOFP:
1395 case TargetOpcode::G_ZEXT:
1396 case TargetOpcode::G_BUILD_VECTOR_TRUNC:
1397 case TargetOpcode::G_FMAXNUM_IEEE:
1398 case TargetOpcode::G_FMINNUM_IEEE:
1399 case TargetOpcode::G_INSERT_VECTOR_ELT:
1400 case TargetOpcode::G_LOAD:
1401 case TargetOpcode::G_SADDO:
1402 case TargetOpcode::G_SADDSAT:
1403 case TargetOpcode::G_SEXTLOAD:
1404 case TargetOpcode::G_SMAX:
1405 case TargetOpcode::G_SMIN:
1406 case TargetOpcode::G_SMULFIX:
1407 case TargetOpcode::G_SMULFIXSAT:
1408 case TargetOpcode::G_SMULH:
1409 case TargetOpcode::G_SMULO:
1410 case TargetOpcode::G_SSUBO:
1411 case TargetOpcode::G_UADDO:
1412 case TargetOpcode::G_UADDSAT:
1413 case TargetOpcode::G_UMAX:
1414 case TargetOpcode::G_UMIN:
1415 case TargetOpcode::G_UMULFIX:
1416 case TargetOpcode::G_UMULFIXSAT:
1417 case TargetOpcode::G_UMULH:
1418 case TargetOpcode::G_UMULO:
1419 case TargetOpcode::G_UNMERGE_VALUES:
1420 case TargetOpcode::G_USUBO:
1421 case TargetOpcode::G_ZEXTLOAD:
1422 return true;
1423 default:
1424 return false;
1425 }
1426}
1427
1428uint32_t AArch64PostLegalizerCombinerImpl::getRootFlagsToDrop() const {
1429 return MachineInstr::getPoisonGeneratingFlags();
1430}
1431
1432bool AArch64PostLegalizerCombinerImpl::tryCombineAll(MachineInstr &I) const {
1433 const PredicateBitset AvailableFeatures = getAvailableFeatures();
1434 State.MIs.clear();
1435 State.MIs.push_back(&I);
1436 if (executeMatchTable(*this, State, ExecInfo, B, getMatchTable(), Helper.getTII(), MRI, Helper.getTRI(), Helper.getRBI(), AvailableFeatures, /*CoverageInfo*/ nullptr)) {
1437 return true;
1438 }
1439
1440 return false;
1441}
1442
1443enum {
1444 GICXXCustomAction_GICombiner0 = GICXXCustomAction_Invalid + 1,
1445 GICXXCustomAction_GICombiner1,
1446 GICXXCustomAction_GICombiner2,
1447 GICXXCustomAction_GICombiner3,
1448 GICXXCustomAction_GICombiner4,
1449 GICXXCustomAction_GICombiner5,
1450 GICXXCustomAction_GICombiner6,
1451 GICXXCustomAction_GICombiner7,
1452 GICXXCustomAction_GICombiner8,
1453 GICXXCustomAction_GICombiner9,
1454 GICXXCustomAction_GICombiner10,
1455 GICXXCustomAction_GICombiner11,
1456 GICXXCustomAction_GICombiner12,
1457 GICXXCustomAction_GICombiner13,
1458 GICXXCustomAction_GICombiner14,
1459 GICXXCustomAction_GICombiner15,
1460 GICXXCustomAction_GICombiner16,
1461 GICXXCustomAction_GICombiner17,
1462 GICXXCustomAction_GICombiner18,
1463 GICXXCustomAction_GICombiner19,
1464 GICXXCustomAction_GICombiner20,
1465 GICXXCustomAction_GICombiner21,
1466 GICXXCustomAction_GICombiner22,
1467 GICXXCustomAction_GICombiner23,
1468 GICXXCustomAction_GICombiner24,
1469 GICXXCustomAction_GICombiner25,
1470 GICXXCustomAction_GICombiner26,
1471 GICXXCustomAction_GICombiner27,
1472 GICXXCustomAction_GICombiner28,
1473 GICXXCustomAction_GICombiner29,
1474 GICXXCustomAction_GICombiner30,
1475 GICXXCustomAction_GICombiner31,
1476 GICXXCustomAction_GICombiner32,
1477 GICXXCustomAction_GICombiner33,
1478 GICXXCustomAction_GICombiner34,
1479 GICXXCustomAction_GICombiner35,
1480 GICXXCustomAction_GICombiner36,
1481 GICXXCustomAction_GICombiner37,
1482 GICXXCustomAction_GICombiner38,
1483 GICXXCustomAction_GICombiner39,
1484 GICXXCustomAction_GICombiner40,
1485 GICXXCustomAction_GICombiner41,
1486 GICXXCustomAction_GICombiner42,
1487 GICXXCustomAction_GICombiner43,
1488 GICXXCustomAction_GICombiner44,
1489 GICXXCustomAction_GICombiner45,
1490 GICXXCustomAction_GICombiner46,
1491 GICXXCustomAction_GICombiner47,
1492 GICXXCustomAction_GICombiner48,
1493 GICXXCustomAction_GICombiner49,
1494 GICXXCustomAction_GICombiner50,
1495 GICXXCustomAction_GICombiner51,
1496 GICXXCustomAction_GICombiner52,
1497 GICXXCustomAction_GICombiner53,
1498 GICXXCustomAction_GICombiner54,
1499 GICXXCustomAction_GICombiner55,
1500 GICXXCustomAction_GICombiner56,
1501 GICXXCustomAction_GICombiner57,
1502 GICXXCustomAction_GICombiner58,
1503 GICXXCustomAction_GICombiner59,
1504 GICXXCustomAction_GICombiner60,
1505 GICXXCustomAction_GICombiner61,
1506 GICXXCustomAction_GICombiner62,
1507 GICXXCustomAction_GICombiner63,
1508 GICXXCustomAction_GICombiner64,
1509 GICXXCustomAction_GICombiner65,
1510 GICXXCustomAction_GICombiner66,
1511 GICXXCustomAction_GICombiner67,
1512 GICXXCustomAction_GICombiner68,
1513 GICXXCustomAction_GICombiner69,
1514 GICXXCustomAction_GICombiner70,
1515 GICXXCustomAction_GICombiner71,
1516 GICXXCustomAction_GICombiner72,
1517};
1518bool AArch64PostLegalizerCombinerImpl::runCustomAction(unsigned ApplyID, const MatcherState &State, NewMIVector &OutMIs) const {
1519 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1520 switch(ApplyID) {
1521 case GICXXCustomAction_GICombiner0:{
1522 // Match Patterns
1523 if(![&](){return Helper.matchCombineCopy(*State.MIs[0]);}()) {
1524 return false;
1525 }
1526 // Apply Patterns
1527 Helper.applyCombineCopy(*State.MIs[0]);
1528 return true;
1529 }
1530 case GICXXCustomAction_GICombiner1:{
1531 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1532 // Match Patterns
1533 if(![&](){return Helper.matchTruncateOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1534 return false;
1535 }
1536 // Apply Patterns
1537 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1538 return true;
1539 }
1540 case GICXXCustomAction_GICombiner2:{
1541 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1542 // Match Patterns
1543 if(![&](){return Helper.matchExtOfExt(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1544 return false;
1545 }
1546 // Apply Patterns
1547 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1548 return true;
1549 }
1550 case GICXXCustomAction_GICombiner3:{
1551 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1552 // Match Patterns
1553 if(![&](){return Helper.matchRedundantSextInReg(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1554 return false;
1555 }
1556 // Apply Patterns
1557 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1558 return true;
1559 }
1560 case GICXXCustomAction_GICombiner4:{
1561 // Apply Patterns
1562 Helper.applyCombineConstantFoldFpUnary(*State.MIs[0], State.MIs[1]->getOperand(1).getFPImm());
1563 return true;
1564 }
1565 case GICXXCustomAction_GICombiner5:{
1566 // Apply Patterns
1567 Helper.replaceInstWithFConstant(*State.MIs[0]->getOperand(0).getParent(), 0.0);
1568 return true;
1569 }
1570 case GICXXCustomAction_GICombiner6:{
1571 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1572 // Match Patterns
1573 if(![&](){return Helper.matchCastOfBuildVector(*State.MIs[0], *State.MIs[1], GIMatchData_matchinfo);}()) {
1574 return false;
1575 }
1576 // Apply Patterns
1577 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1578 return true;
1579 }
1580 case GICXXCustomAction_GICombiner7:{
1581 APInt GIMatchData_matchinfo;
1582 // Match Patterns
1583 if(![&](){return Helper.matchCastOfInteger(*State.MIs[0], GIMatchData_matchinfo);}()) {
1584 return false;
1585 }
1586 // Apply Patterns
1587 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1588 return true;
1589 }
1590 case GICXXCustomAction_GICombiner8:{
1591 PreferredTuple GIMatchData_matchinfo;
1592 // Match Patterns
1593 if(![&](){return Helper.matchCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);}()) {
1594 return false;
1595 }
1596 // Apply Patterns
1597 Helper.applyCombineExtendingLoads(*State.MIs[0], GIMatchData_matchinfo);
1598 return true;
1599 }
1600 case GICXXCustomAction_GICombiner9:{
1601 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1602 // Match Patterns
1603 if(![&](){return Helper.matchCombineLoadWithAndMask(*State.MIs[0], GIMatchData_matchinfo);}()) {
1604 return false;
1605 }
1606 // Apply Patterns
1607 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1608 return true;
1609 }
1610 case GICXXCustomAction_GICombiner10:{
1611 IndexedLoadStoreMatchInfo GIMatchData_matchinfo;
1612 // Match Patterns
1613 if(![&](){return Helper.matchCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);}()) {
1614 return false;
1615 }
1616 // Apply Patterns
1617 Helper.applyCombineIndexedLoadStore(*State.MIs[0], GIMatchData_matchinfo);
1618 return true;
1619 }
1620 case GICXXCustomAction_GICombiner11:{
1621 InstructionStepsMatchInfo GIMatchData_info;
1622 // Match Patterns
1623 if(![&](){return Helper.matchHoistLogicOpWithSameOpcodeHands(*State.MIs[0], GIMatchData_info);}()) {
1624 return false;
1625 }
1626 // Apply Patterns
1627 Helper.applyBuildInstructionSteps(*State.MIs[0], GIMatchData_info);
1628 return true;
1629 }
1630 case GICXXCustomAction_GICombiner12:{
1631 Register GIMatchData_matchinfo;
1632 // Match Patterns
1633 if(![&](){return Helper.matchRedundantAnd(*State.MIs[0], GIMatchData_matchinfo);}()) {
1634 return false;
1635 }
1636 // Apply Patterns
1637 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1638 return true;
1639 }
1640 case GICXXCustomAction_GICombiner13:{
1641 std::pair<Register, Register> GIMatchData_matchinfo;
1642 // Match Patterns
1643 if(![&](){return Helper.matchXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);}()) {
1644 return false;
1645 }
1646 // Apply Patterns
1647 Helper.applyXorOfAndWithSameReg(*State.MIs[0], GIMatchData_matchinfo);
1648 return true;
1649 }
1650 case GICXXCustomAction_GICombiner14:{
1651 std::tuple<unsigned, LLT, Register> GIMatchData_matchinfo;
1652 // Match Patterns
1653 if(![&](){return matchExtractVecEltPairwiseAdd(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
1654 return false;
1655 }
1656 // Apply Patterns
1657 applyExtractVecEltPairwiseAdd(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
1658 return true;
1659 }
1660 case GICXXCustomAction_GICombiner15:{
1661 Register GIMatchData_matchinfo;
1662 // Match Patterns
1663 if(![&](){return Helper.matchRedundantOr(*State.MIs[0], GIMatchData_matchinfo);}()) {
1664 return false;
1665 }
1666 // Apply Patterns
1667 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
1668 return true;
1669 }
1670 case GICXXCustomAction_GICombiner16:{
1671 std::function<void(MachineIRBuilder&, Register)> GIMatchData_matchinfo;
1672 // Match Patterns
1673 if(![&](){return matchAArch64MulConstCombine(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
1674 return false;
1675 }
1676 // Apply Patterns
1677 applyAArch64MulConstCombine(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
1678 return true;
1679 }
1680 case GICXXCustomAction_GICombiner17:{
1681 // Match Patterns
1682 if(![&](){LLT SrcTy = MRI.getType(State.MIs[3]->getOperand(1).getReg());
1683 return State.MIs[0]->getOperand(2).getImm() <= SrcTy.getScalarSizeInBits() &&
1684 MRI.getType(State.MIs[1]->getOperand(1).getReg()).getScalarType() ==
1685 MRI.getType(State.MIs[2]->getOperand(2).getReg()).getScalarType() &&
1686 VT->computeNumSignBits(State.MIs[3]->getOperand(1).getReg()) >=
1687 (SrcTy.getScalarSizeInBits() - State.MIs[0]->getOperand(2).getImm() + 1);}()) {
1688 return false;
1689 }
1690 // Apply Patterns
1691 auto SExt1 = Helper.getBuilder().buildSExt(MRI.getType(State.MIs[2]->getOperand(2).getReg()), State.MIs[3]->getOperand(1).getReg());
1692 auto Unmerge = Helper.getBuilder().buildUnmerge(MRI.getType(State.MIs[1]->getOperand(1).getReg()), SExt1);
1693 unsigned UnmergeDef = State.MIs[1]->getOperand(1).getReg() == State.MIs[2]->getOperand(0).getReg() ? 0 : 1;
1694 Helper.getBuilder().buildSExt(State.MIs[0]->getOperand(0).getReg(), Unmerge.getReg(UnmergeDef));
1695 State.MIs[0]->eraseFromParent();
1696 return true;
1697 }
1698 case GICXXCustomAction_GICombiner18:{
1699 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1700 // Match Patterns
1701 if(![&](){return Helper.matchBitfieldExtractFromSExtInReg(*State.MIs[0], GIMatchData_info);}()) {
1702 return false;
1703 }
1704 // Apply Patterns
1705 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1706 return true;
1707 }
1708 case GICXXCustomAction_GICombiner19:{
1709 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1710 // Match Patterns
1711 if(![&](){return Helper.matchBitfieldExtractFromAnd(*State.MIs[0], GIMatchData_info);}()) {
1712 return false;
1713 }
1714 // Apply Patterns
1715 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1716 return true;
1717 }
1718 case GICXXCustomAction_GICombiner20:{
1719 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1720 // Match Patterns
1721 if(![&](){return Helper.matchBitfieldExtractFromShr(*State.MIs[0], GIMatchData_info);}()) {
1722 return false;
1723 }
1724 // Apply Patterns
1725 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1726 return true;
1727 }
1728 case GICXXCustomAction_GICombiner21:{
1729 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1730 // Match Patterns
1731 if(![&](){return Helper.matchBitfieldExtractFromShrAnd(*State.MIs[0], GIMatchData_info);}()) {
1732 return false;
1733 }
1734 // Apply Patterns
1735 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1736 return true;
1737 }
1738 case GICXXCustomAction_GICombiner22:{
1739 // Match Patterns
1740 if(![&](){return Helper.matchRotateOutOfRange(*State.MIs[0]);}()) {
1741 return false;
1742 }
1743 // Apply Patterns
1744 Helper.applyRotateOutOfRange(*State.MIs[0]);
1745 return true;
1746 }
1747 case GICXXCustomAction_GICombiner23:{
1748 int64_t GIMatchData_matchinfo;
1749 // Match Patterns
1750 if(![&](){return Helper.matchICmpToTrueFalseKnownBits(*State.MIs[0], GIMatchData_matchinfo);}()) {
1751 return false;
1752 }
1753 // Apply Patterns
1754 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1755 return true;
1756 }
1757 case GICXXCustomAction_GICombiner24:{
1758 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1759 // Match Patterns
1760 if(![&](){return Helper.matchAddOverflow(*State.MIs[0], GIMatchData_matchinfo);}()) {
1761 return false;
1762 }
1763 // Apply Patterns
1764 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1765 return true;
1766 }
1767 case GICXXCustomAction_GICombiner25:{
1768 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1769 // Match Patterns
1770 if(![&](){return Helper.matchSuboCarryOut(*State.MIs[0], GIMatchData_matchinfo);}()) {
1771 return false;
1772 }
1773 // Apply Patterns
1774 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1775 return true;
1776 }
1777 case GICXXCustomAction_GICombiner26:{
1778 unsigned GIMatchData_matchinfo;
1779 // Match Patterns
1780 if(![&](){return Helper.matchConstantSelectCmp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1781 return false;
1782 }
1783 // Apply Patterns
1784 Helper.replaceSingleDefInstWithOperand(*State.MIs[0], GIMatchData_matchinfo);
1785 return true;
1786 }
1787 case GICXXCustomAction_GICombiner27:{
1788 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1789 // Match Patterns
1790 if(![&](){return Helper.matchSelectIMinMax(State.MIs[0]->getOperand(0), GIMatchData_info);}()) {
1791 return false;
1792 }
1793 // Apply Patterns
1794 Helper.applyBuildFnMO(State.MIs[0]->getOperand(0), GIMatchData_info);
1795 return true;
1796 }
1797 case GICXXCustomAction_GICombiner28:{
1798 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1799 // Match Patterns
1800 if(![&](){return Helper.matchSelect(*State.MIs[0], GIMatchData_matchinfo);}()) {
1801 return false;
1802 }
1803 // Apply Patterns
1804 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1805 return true;
1806 }
1807 case GICXXCustomAction_GICombiner29:{
1808 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1809 // Match Patterns
1810 if(![&](){return Helper.matchUnmergeValuesAnyExtBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
1811 return false;
1812 }
1813 // Apply Patterns
1814 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1815 return true;
1816 }
1817 case GICXXCustomAction_GICombiner30:{
1818 SmallVector<Register> GIMatchData_info;
1819 // Match Patterns
1820 if(![&](){return Helper.matchCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);}()) {
1821 return false;
1822 }
1823 // Apply Patterns
1824 Helper.applyCombineUnmergeMergeToPlainValues(*State.MIs[0], GIMatchData_info);
1825 return true;
1826 }
1827 case GICXXCustomAction_GICombiner31:{
1828 Register GIMatchData_src;
1829 // Match Patterns
1830 if(![&](){// Check if first source comes from G_UNMERGE_VALUES.
1831 Register FirstMergeSrc = getRemainingOperands(*State.MIs[0], 1)[0].getReg();
1832 MachineInstr *UnmergeMI = MRI.getVRegDef(FirstMergeSrc);
1833 if (!UnmergeMI || UnmergeMI->getOpcode() != TargetOpcode::G_UNMERGE_VALUES)
1834 return false;
1835
1836 // Check counts match.
1837 unsigned NumMergeSrcs = getRemainingOperands(*State.MIs[0], 1).size();
1838 unsigned NumUnmergeDefs = UnmergeMI->getNumDefs();
1839 if (NumMergeSrcs != NumUnmergeDefs)
1840 return false;
1841
1842 // Verify all merge sources match unmerge defs in order.
1843 for (unsigned I = 0; I < NumMergeSrcs; ++I) {
1844 Register MergeSrc = getRemainingOperands(*State.MIs[0], 1)[I].getReg();
1845 Register UnmergeDef = UnmergeMI->getOperand(I).getReg();
1846
1847 if (MergeSrc != UnmergeDef)
1848 return false;
1849
1850 if (!MRI.hasOneNonDBGUse(MergeSrc))
1851 return false;
1852 }
1853
1854 // Check size compatibility.
1855 GIMatchData_src = UnmergeMI->getOperand(NumUnmergeDefs).getReg();
1856 LLT SrcTy = MRI.getType(GIMatchData_src);
1857 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
1858 if (SrcTy.getSizeInBits() != DstTy.getSizeInBits())
1859 return false;
1860
1861 // Check bitcast legality.
1862 if (SrcTy != DstTy) {
1863 std::array<LLT, 2> Types = {{DstTy, SrcTy}};
1864 LegalityQuery Query(TargetOpcode::G_BITCAST, Types);
1865 if (!Helper.isLegalOrBeforeLegalizer(Query))
1866 return false;
1867 }
1868
1869 return true;}()) {
1870 return false;
1871 }
1872 // Apply Patterns
1873 LLT SrcTy = MRI.getType(GIMatchData_src);
1874 LLT DstTy = MRI.getType(State.MIs[0]->getOperand(0).getReg());
1875
1876 Helper.getBuilder().setInstrAndDebugLoc(*State.MIs[0]);
1877
1878 if (SrcTy == DstTy) {
1879 Helper.replaceRegWith(MRI, State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
1880 } else {
1881 Helper.getBuilder().buildBitcast(State.MIs[0]->getOperand(0).getReg(), GIMatchData_src);
1882 }
1883
1884 State.MIs[0]->eraseFromParent();
1885 return true;
1886 }
1887 case GICXXCustomAction_GICombiner32:{
1888 SmallVector<APInt, 8> GIMatchData_info;
1889 // Match Patterns
1890 if(![&](){return Helper.matchCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);}()) {
1891 return false;
1892 }
1893 // Apply Patterns
1894 Helper.applyCombineUnmergeConstant(*State.MIs[0], GIMatchData_info);
1895 return true;
1896 }
1897 case GICXXCustomAction_GICombiner33:{
1898 std::function<void(MachineIRBuilder &)> GIMatchData_info;
1899 // Match Patterns
1900 if(![&](){return Helper.matchCombineUnmergeUndef(*State.MIs[0], GIMatchData_info);}()) {
1901 return false;
1902 }
1903 // Apply Patterns
1904 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
1905 return true;
1906 }
1907 case GICXXCustomAction_GICombiner34:{
1908 // Match Patterns
1909 if(![&](){return Helper.matchCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);}()) {
1910 return false;
1911 }
1912 // Apply Patterns
1913 Helper.applyCombineUnmergeWithDeadLanesToTrunc(*State.MIs[0]);
1914 return true;
1915 }
1916 case GICXXCustomAction_GICombiner35:{
1917 // Match Patterns
1918 if(![&](){return Helper.matchCombineUnmergeZExtToZExt(*State.MIs[0]);}()) {
1919 return false;
1920 }
1921 // Apply Patterns
1922 Helper.applyCombineUnmergeZExtToZExt(*State.MIs[0]);
1923 return true;
1924 }
1925 case GICXXCustomAction_GICombiner36:{
1926 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1927 // Match Patterns
1928 if(![&](){return Helper.matchMergeXAndUndef(*State.MIs[0], GIMatchData_matchinfo);}()) {
1929 return false;
1930 }
1931 // Apply Patterns
1932 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1933 return true;
1934 }
1935 case GICXXCustomAction_GICombiner37:{
1936 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
1937 // Match Patterns
1938 if(![&](){return Helper.matchMergeXAndZero(*State.MIs[0], GIMatchData_matchinfo);}()) {
1939 return false;
1940 }
1941 // Apply Patterns
1942 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
1943 return true;
1944 }
1945 case GICXXCustomAction_GICombiner38:{
1946 Register GIMatchData_unmergeSrc;
1947 // Match Patterns
1948 if(![&](){return Helper.matchCombineBuildUnmerge(*State.MIs[0], MRI, GIMatchData_unmergeSrc);}()) {
1949 return false;
1950 }
1951 // Apply Patterns
1952 Helper.applyCombineBuildUnmerge(*State.MIs[0], MRI, B, GIMatchData_unmergeSrc);
1953 return true;
1954 }
1955 case GICXXCustomAction_GICombiner39:{
1956 APInt GIMatchData_matchinfo;
1957 // Match Patterns
1958 if(![&](){return Helper.matchConstantFoldBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1959 return false;
1960 }
1961 // Apply Patterns
1962 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1963 return true;
1964 }
1965 case GICXXCustomAction_GICombiner40:{
1966 ConstantFP* GIMatchData_matchinfo;
1967 // Match Patterns
1968 if(![&](){return Helper.matchConstantFoldFPBinOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1969 return false;
1970 }
1971 // Apply Patterns
1972 Helper.replaceInstWithFConstant(*State.MIs[0], GIMatchData_matchinfo);
1973 return true;
1974 }
1975 case GICXXCustomAction_GICombiner41:{
1976 APInt GIMatchData_matchinfo;
1977 // Match Patterns
1978 if(![&](){return Helper.matchConstantFoldCastOp(*State.MIs[0], GIMatchData_matchinfo);}()) {
1979 return false;
1980 }
1981 // Apply Patterns
1982 Helper.replaceInstWithConstant(*State.MIs[0], GIMatchData_matchinfo);
1983 return true;
1984 }
1985 case GICXXCustomAction_GICombiner42:{
1986 Register GIMatchData_info;
1987 // Match Patterns
1988 if(![&](){GIMatchData_info = State.MIs[1]->getOperand(1).getReg(); return true;}()) {
1989 return false;
1990 }
1991 // Apply Patterns
1992 Helper.applyCombineP2IToI2P(*State.MIs[0], GIMatchData_info);
1993 return true;
1994 }
1995 case GICXXCustomAction_GICombiner43:{
1996 Register GIMatchData_matchinfo;
1997 // Match Patterns
1998 if(![&](){return Helper.matchCombineAnyExtTrunc(*State.MIs[0], GIMatchData_matchinfo);}()) {
1999 return false;
2000 }
2001 // Apply Patterns
2002 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2003 return true;
2004 }
2005 case GICXXCustomAction_GICombiner44:{
2006 Register GIMatchData_matchinfo;
2007 // Match Patterns
2008 if(![&](){return Helper.matchBuildVectorIdentityFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2009 return false;
2010 }
2011 // Apply Patterns
2012 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2013 return true;
2014 }
2015 case GICXXCustomAction_GICombiner45:{
2016 Register GIMatchData_matchinfo;
2017 // Match Patterns
2018 if(![&](){return Helper.matchTruncBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2019 return false;
2020 }
2021 // Apply Patterns
2022 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2023 return true;
2024 }
2025 case GICXXCustomAction_GICombiner46:{
2026 Register GIMatchData_matchinfo;
2027 // Match Patterns
2028 if(![&](){return Helper.matchTruncLshrBuildVectorFold(*State.MIs[0], GIMatchData_matchinfo);}()) {
2029 return false;
2030 }
2031 // Apply Patterns
2032 Helper.replaceSingleDefInstWithReg(*State.MIs[0], GIMatchData_matchinfo);
2033 return true;
2034 }
2035 case GICXXCustomAction_GICombiner47:{
2036 // Match Patterns
2037 if(![&](){return MRI.getType(State.MIs[1]->getOperand(1).getReg()) == MRI.getType(State.MIs[0]->getOperand(0).getReg());}()) {
2038 return false;
2039 }
2040 // Apply Patterns
2041 Helper.replaceSingleDefInstWithReg(*State.MIs[0], State.MIs[1]->getOperand(1).getReg());
2042 return true;
2043 }
2044 case GICXXCustomAction_GICombiner48:{
2045 PtrAddChain GIMatchData_matchinfo;
2046 // Match Patterns
2047 if(![&](){return Helper.matchPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);}()) {
2048 return false;
2049 }
2050 // Apply Patterns
2051 Helper.applyPtrAddImmedChain(*State.MIs[0], GIMatchData_matchinfo);
2052 return true;
2053 }
2054 case GICXXCustomAction_GICombiner49:{
2055 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2056 // Match Patterns
2057 if(![&](){return Helper.matchOverlappingAnd(*State.MIs[0], GIMatchData_info);}()) {
2058 return false;
2059 }
2060 // Apply Patterns
2061 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2062 return true;
2063 }
2064 case GICXXCustomAction_GICombiner50:{
2065 // Match Patterns
2066 if(![&](){return matchSplitStoreZero128(*State.MIs[0], MRI);}()) {
2067 return false;
2068 }
2069 // Apply Patterns
2070 applySplitStoreZero128(*State.MIs[0], MRI, B, Observer);
2071 return true;
2072 }
2073 case GICXXCustomAction_GICombiner51:{
2074 // Apply Patterns
2075 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), 0);
2076 return true;
2077 }
2078 case GICXXCustomAction_GICombiner52:{
2079 // Apply Patterns
2080 Helper.replaceInstWithConstant(*State.MIs[0]->getOperand(0).getParent(), -1);
2081 return true;
2082 }
2083 case GICXXCustomAction_GICombiner53:{
2084 // Apply Patterns
2085 Helper.replaceInstWithUndef(*State.MIs[0]->getOperand(0).getParent());
2086 return true;
2087 }
2088 case GICXXCustomAction_GICombiner54:{
2089 // Match Patterns
2090 if(![&](){return Helper.matchAllExplicitUsesAreUndef(*State.MIs[0]);}()) {
2091 return false;
2092 }
2093 // Apply Patterns
2094 Helper.replaceInstWithUndef(*State.MIs[0]);
2095 return true;
2096 }
2097 case GICXXCustomAction_GICombiner55:{
2098 // Match Patterns
2099 if(![&](){return Helper.matchUndefStore(*State.MIs[0]);}()) {
2100 return false;
2101 }
2102 // Apply Patterns
2103 Helper.eraseInst(*State.MIs[0]);
2104 return true;
2105 }
2106 case GICXXCustomAction_GICombiner56:{
2107 // Match Patterns
2108 if(![&](){return Helper.matchInsertExtractVecEltOutOfBounds(*State.MIs[0]);}()) {
2109 return false;
2110 }
2111 // Apply Patterns
2112 Helper.replaceInstWithUndef(*State.MIs[0]);
2113 return true;
2114 }
2115 case GICXXCustomAction_GICombiner57:{
2116 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2117 // Match Patterns
2118 if(![&](){return Helper.matchSimplifySelectToMinMax(*State.MIs[0], GIMatchData_info);}()) {
2119 return false;
2120 }
2121 // Apply Patterns
2122 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2123 return true;
2124 }
2125 case GICXXCustomAction_GICombiner58:{
2126 std::tuple<Register, Register, Register> GIMatchData_matchinfo;
2127 // Match Patterns
2128 if(![&](){return matchOrToBSP(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
2129 return false;
2130 }
2131 // Apply Patterns
2132 applyOrToBSP(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
2133 return true;
2134 }
2135 case GICXXCustomAction_GICombiner59:{
2136 SmallVector<Register> GIMatchData_matchinfo;
2137 // Match Patterns
2138 if(![&](){return Helper.matchCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);}()) {
2139 return false;
2140 }
2141 // Apply Patterns
2142 Helper.applyCombineConcatVectors(*State.MIs[0], GIMatchData_matchinfo);
2143 return true;
2144 }
2145 case GICXXCustomAction_GICombiner60:{
2146 SmallVector<Register> GIMatchData_matchinfo;
2147 // Match Patterns
2148 if(![&](){return Helper.matchCombineBuildVectorOfBitcast(*State.MIs[0], GIMatchData_matchinfo);}()) {
2149 return false;
2150 }
2151 // Apply Patterns
2152 Helper.applyCombineBuildVectorOfBitcast(*State.MIs[0], GIMatchData_matchinfo);
2153 return true;
2154 }
2155 case GICXXCustomAction_GICombiner61:{
2156 // Match Patterns
2157 if(![&](){return Helper.matchCommuteConstantToRHS(*State.MIs[0]);}()) {
2158 return false;
2159 }
2160 // Apply Patterns
2161 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
2162 return true;
2163 }
2164 case GICXXCustomAction_GICombiner62:{
2165 // Match Patterns
2166 if(![&](){return Helper.matchCommuteFPConstantToRHS(*State.MIs[0]);}()) {
2167 return false;
2168 }
2169 // Apply Patterns
2170 Helper.applyCommuteBinOpOperands(*State.MIs[0]);
2171 return true;
2172 }
2173 case GICXXCustomAction_GICombiner63:{
2174 Register GIMatchData_matchinfo;
2175 // Match Patterns
2176 if(![&](){return Helper.matchExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);}()) {
2177 return false;
2178 }
2179 // Apply Patterns
2180 Helper.applyExtractVecEltBuildVec(*State.MIs[0], GIMatchData_matchinfo);
2181 return true;
2182 }
2183 case GICXXCustomAction_GICombiner64:{
2184 SmallVector<std::pair<Register, MachineInstr*>> GIMatchData_matchinfo;
2185 // Match Patterns
2186 if(![&](){return Helper.matchExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);}()) {
2187 return false;
2188 }
2189 // Apply Patterns
2190 Helper.applyExtractAllEltsFromBuildVector(*State.MIs[0], GIMatchData_matchinfo);
2191 return true;
2192 }
2193 case GICXXCustomAction_GICombiner65:{
2194 std::function<void(MachineIRBuilder &)> GIMatchData_matchinfo;
2195 // Match Patterns
2196 if(![&](){return !isGuaranteedNotToBePoison(State.MIs[0]->getOperand(1).getReg(), MRI) && Helper.matchFreezeOfSingleMaybePoisonOperand(*State.MIs[0], GIMatchData_matchinfo);}()) {
2197 return false;
2198 }
2199 // Apply Patterns
2200 Helper.applyBuildFn(*State.MIs[0], GIMatchData_matchinfo);
2201 return true;
2202 }
2203 case GICXXCustomAction_GICombiner66:{
2204 Register GIMatchData_matchinfo;
2205 // Match Patterns
2206 if(![&](){return matchCombineMulCMLT(*State.MIs[0], MRI, GIMatchData_matchinfo);}()) {
2207 return false;
2208 }
2209 // Apply Patterns
2210 applyCombineMulCMLT(*State.MIs[0], MRI, B, GIMatchData_matchinfo);
2211 return true;
2212 }
2213 case GICXXCustomAction_GICombiner67:{
2214 Register GIMatchData_matchinfo;
2215 // Match Patterns
2216 if(![&](){return Helper.matchUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);}()) {
2217 return false;
2218 }
2219 // Apply Patterns
2220 Helper.applyUseVectorTruncate(*State.MIs[0], GIMatchData_matchinfo);
2221 return true;
2222 }
2223 case GICXXCustomAction_GICombiner68:{
2224 std::tuple<bool, Register, Register> GIMatchData_matchinfo;
2225 // Match Patterns
2226 if(![&](){return matchExtMulToMULL(*State.MIs[0], MRI, VT, GIMatchData_matchinfo);}()) {
2227 return false;
2228 }
2229 // Apply Patterns
2230 applyExtMulToMULL(*State.MIs[0], MRI, B, Observer, GIMatchData_matchinfo);
2231 return true;
2232 }
2233 case GICXXCustomAction_GICombiner69:{
2234 Register GIMatchData_matchinfo;
2235 // Match Patterns
2236 if(![&](){return Helper.matchTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);}()) {
2237 return false;
2238 }
2239 // Apply Patterns
2240 Helper.applyTruncSSatS(*State.MIs[0], GIMatchData_matchinfo);
2241 return true;
2242 }
2243 case GICXXCustomAction_GICombiner70:{
2244 Register GIMatchData_matchinfo;
2245 // Match Patterns
2246 if(![&](){return Helper.matchTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);}()) {
2247 return false;
2248 }
2249 // Apply Patterns
2250 Helper.applyTruncSSatU(*State.MIs[0], GIMatchData_matchinfo);
2251 return true;
2252 }
2253 case GICXXCustomAction_GICombiner71:{
2254 LshrOfTruncOfLshr GIMatchData_matchinfo;
2255 // Match Patterns
2256 if(![&](){return Helper.matchLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo, *State.MIs[2]);}()) {
2257 return false;
2258 }
2259 // Apply Patterns
2260 Helper.applyLshrOfTruncOfLshr(*State.MIs[0], GIMatchData_matchinfo);
2261 return true;
2262 }
2263 case GICXXCustomAction_GICombiner72:{
2264 std::function<void(MachineIRBuilder &)> GIMatchData_info;
2265 // Match Patterns
2266 if(![&](){return Helper.matchOrShiftToFunnelShift(*State.MIs[0], true, GIMatchData_info);}()) {
2267 return false;
2268 }
2269 // Apply Patterns
2270 Helper.applyBuildFn(*State.MIs[0], GIMatchData_info);
2271 return true;
2272 }
2273 }
2274 llvm_unreachable("Unknown Apply Action");
2275}
2276#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2277#define GIMT_Encode2(Val) uint8_t(Val), uint8_t((Val) >> 8)
2278#define GIMT_Encode4(Val) uint8_t(Val), uint8_t((Val) >> 8), uint8_t((Val) >> 16), uint8_t((Val) >> 24)
2279#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)
2280#else
2281#define GIMT_Encode2(Val) uint8_t((Val) >> 8), uint8_t(Val)
2282#define GIMT_Encode4(Val) uint8_t((Val) >> 24), uint8_t((Val) >> 16), uint8_t((Val) >> 8), uint8_t(Val)
2283#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)
2284#endif
2285const uint8_t *AArch64PostLegalizerCombinerImpl::getMatchTable() const {
2286 constexpr static uint8_t MatchTable0[] = {
2287 /* 0 */ GIM_SwitchOpcode, /*MI*/0, /*[*/GIMT_Encode2(20), GIMT_Encode2(287), /*)*//*default:*//*Label 91*/ GIMT_Encode4(5728),
2288 /* 10 */ /*TargetOpcode::COPY*//*Label 0*/ GIMT_Encode4(1078), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2289 /* 150 */ /*TargetOpcode::G_ADD*//*Label 1*/ GIMT_Encode4(1090),
2290 /* 154 */ /*TargetOpcode::G_SUB*//*Label 2*/ GIMT_Encode4(1246),
2291 /* 158 */ /*TargetOpcode::G_MUL*//*Label 3*/ GIMT_Encode4(1421),
2292 /* 162 */ /*TargetOpcode::G_SDIV*//*Label 4*/ GIMT_Encode4(1605),
2293 /* 166 */ /*TargetOpcode::G_UDIV*//*Label 5*/ GIMT_Encode4(1657),
2294 /* 170 */ /*TargetOpcode::G_SREM*//*Label 6*/ GIMT_Encode4(1730),
2295 /* 174 */ /*TargetOpcode::G_UREM*//*Label 7*/ GIMT_Encode4(1782), GIMT_Encode4(0), GIMT_Encode4(0),
2296 /* 186 */ /*TargetOpcode::G_AND*//*Label 8*/ GIMT_Encode4(1855),
2297 /* 190 */ /*TargetOpcode::G_OR*//*Label 9*/ GIMT_Encode4(2025),
2298 /* 194 */ /*TargetOpcode::G_XOR*//*Label 10*/ GIMT_Encode4(2181), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2299 /* 250 */ /*TargetOpcode::G_UNMERGE_VALUES*//*Label 11*/ GIMT_Encode4(2330), GIMT_Encode4(0),
2300 /* 258 */ /*TargetOpcode::G_MERGE_VALUES*//*Label 12*/ GIMT_Encode4(2397),
2301 /* 262 */ /*TargetOpcode::G_BUILD_VECTOR*//*Label 13*/ GIMT_Encode4(2515),
2302 /* 266 */ /*TargetOpcode::G_BUILD_VECTOR_TRUNC*//*Label 14*/ GIMT_Encode4(2591),
2303 /* 270 */ /*TargetOpcode::G_CONCAT_VECTORS*//*Label 15*/ GIMT_Encode4(2603),
2304 /* 274 */ /*TargetOpcode::G_PTRTOINT*//*Label 16*/ GIMT_Encode4(2618),
2305 /* 278 */ /*TargetOpcode::G_INTTOPTR*//*Label 17*/ GIMT_Encode4(2661),
2306 /* 282 */ /*TargetOpcode::G_BITCAST*//*Label 18*/ GIMT_Encode4(2716),
2307 /* 286 */ /*TargetOpcode::G_FREEZE*//*Label 19*/ GIMT_Encode4(2791), GIMT_Encode4(0), GIMT_Encode4(0),
2308 /* 298 */ /*TargetOpcode::G_INTRINSIC_TRUNC*//*Label 20*/ GIMT_Encode4(2803),
2309 /* 302 */ /*TargetOpcode::G_INTRINSIC_ROUND*//*Label 21*/ GIMT_Encode4(2825), GIMT_Encode4(0), GIMT_Encode4(0),
2310 /* 314 */ /*TargetOpcode::G_INTRINSIC_ROUNDEVEN*//*Label 22*/ GIMT_Encode4(2847), GIMT_Encode4(0), GIMT_Encode4(0),
2311 /* 326 */ /*TargetOpcode::G_LOAD*//*Label 23*/ GIMT_Encode4(2869),
2312 /* 330 */ /*TargetOpcode::G_SEXTLOAD*//*Label 24*/ GIMT_Encode4(2892),
2313 /* 334 */ /*TargetOpcode::G_ZEXTLOAD*//*Label 25*/ GIMT_Encode4(2915), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2314 /* 354 */ /*TargetOpcode::G_STORE*//*Label 26*/ GIMT_Encode4(2938), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2315 /* 502 */ /*TargetOpcode::G_ANYEXT*//*Label 27*/ GIMT_Encode4(2972),
2316 /* 506 */ /*TargetOpcode::G_TRUNC*//*Label 28*/ GIMT_Encode4(3139), GIMT_Encode4(0), GIMT_Encode4(0),
2317 /* 518 */ /*TargetOpcode::G_TRUNC_USAT_U*//*Label 29*/ GIMT_Encode4(3381), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2318 /* 538 */ /*TargetOpcode::G_SEXT*//*Label 30*/ GIMT_Encode4(3414),
2319 /* 542 */ /*TargetOpcode::G_SEXT_INREG*//*Label 31*/ GIMT_Encode4(3468),
2320 /* 546 */ /*TargetOpcode::G_ZEXT*//*Label 32*/ GIMT_Encode4(3691),
2321 /* 550 */ /*TargetOpcode::G_SHL*//*Label 33*/ GIMT_Encode4(3745),
2322 /* 554 */ /*TargetOpcode::G_LSHR*//*Label 34*/ GIMT_Encode4(3862),
2323 /* 558 */ /*TargetOpcode::G_ASHR*//*Label 35*/ GIMT_Encode4(4009), GIMT_Encode4(0), GIMT_Encode4(0),
2324 /* 570 */ /*TargetOpcode::G_ROTR*//*Label 36*/ GIMT_Encode4(4127),
2325 /* 574 */ /*TargetOpcode::G_ROTL*//*Label 37*/ GIMT_Encode4(4162),
2326 /* 578 */ /*TargetOpcode::G_ICMP*//*Label 38*/ GIMT_Encode4(4197), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2327 /* 594 */ /*TargetOpcode::G_SELECT*//*Label 39*/ GIMT_Encode4(4209),
2328 /* 598 */ /*TargetOpcode::G_UADDO*//*Label 40*/ GIMT_Encode4(4585), GIMT_Encode4(0),
2329 /* 606 */ /*TargetOpcode::G_USUBO*//*Label 41*/ GIMT_Encode4(4608), GIMT_Encode4(0),
2330 /* 614 */ /*TargetOpcode::G_SADDO*//*Label 42*/ GIMT_Encode4(4620), GIMT_Encode4(0),
2331 /* 622 */ /*TargetOpcode::G_SSUBO*//*Label 43*/ GIMT_Encode4(4643), GIMT_Encode4(0),
2332 /* 630 */ /*TargetOpcode::G_UMULO*//*Label 44*/ GIMT_Encode4(4655),
2333 /* 634 */ /*TargetOpcode::G_SMULO*//*Label 45*/ GIMT_Encode4(4667),
2334 /* 638 */ /*TargetOpcode::G_UMULH*//*Label 46*/ GIMT_Encode4(4679),
2335 /* 642 */ /*TargetOpcode::G_SMULH*//*Label 47*/ GIMT_Encode4(4691),
2336 /* 646 */ /*TargetOpcode::G_UADDSAT*//*Label 48*/ GIMT_Encode4(4703),
2337 /* 650 */ /*TargetOpcode::G_SADDSAT*//*Label 49*/ GIMT_Encode4(4715), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2338 /* 670 */ /*TargetOpcode::G_SMULFIX*//*Label 50*/ GIMT_Encode4(4727),
2339 /* 674 */ /*TargetOpcode::G_UMULFIX*//*Label 51*/ GIMT_Encode4(4739),
2340 /* 678 */ /*TargetOpcode::G_SMULFIXSAT*//*Label 52*/ GIMT_Encode4(4751),
2341 /* 682 */ /*TargetOpcode::G_UMULFIXSAT*//*Label 53*/ GIMT_Encode4(4763), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2342 /* 702 */ /*TargetOpcode::G_FADD*//*Label 54*/ GIMT_Encode4(4775),
2343 /* 706 */ /*TargetOpcode::G_FSUB*//*Label 55*/ GIMT_Encode4(4850),
2344 /* 710 */ /*TargetOpcode::G_FMUL*//*Label 56*/ GIMT_Encode4(4862), GIMT_Encode4(0), GIMT_Encode4(0),
2345 /* 722 */ /*TargetOpcode::G_FDIV*//*Label 57*/ GIMT_Encode4(4928),
2346 /* 726 */ /*TargetOpcode::G_FREM*//*Label 58*/ GIMT_Encode4(4940), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2347 /* 758 */ /*TargetOpcode::G_FLOG2*//*Label 59*/ GIMT_Encode4(4952), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2348 /* 774 */ /*TargetOpcode::G_FNEG*//*Label 60*/ GIMT_Encode4(4974),
2349 /* 778 */ /*TargetOpcode::G_FPEXT*//*Label 61*/ GIMT_Encode4(5025),
2350 /* 782 */ /*TargetOpcode::G_FPTRUNC*//*Label 62*/ GIMT_Encode4(5047),
2351 /* 786 */ /*TargetOpcode::G_FPTOSI*//*Label 63*/ GIMT_Encode4(5090),
2352 /* 790 */ /*TargetOpcode::G_FPTOUI*//*Label 64*/ GIMT_Encode4(5112),
2353 /* 794 */ /*TargetOpcode::G_SITOFP*//*Label 65*/ GIMT_Encode4(5134),
2354 /* 798 */ /*TargetOpcode::G_UITOFP*//*Label 66*/ GIMT_Encode4(5171), GIMT_Encode4(0), GIMT_Encode4(0),
2355 /* 810 */ /*TargetOpcode::G_FABS*//*Label 67*/ GIMT_Encode4(5208),
2356 /* 814 */ /*TargetOpcode::G_FCOPYSIGN*//*Label 68*/ GIMT_Encode4(5230), GIMT_Encode4(0), GIMT_Encode4(0),
2357 /* 826 */ /*TargetOpcode::G_FMINNUM*//*Label 69*/ GIMT_Encode4(5242),
2358 /* 830 */ /*TargetOpcode::G_FMAXNUM*//*Label 70*/ GIMT_Encode4(5265),
2359 /* 834 */ /*TargetOpcode::G_FMINNUM_IEEE*//*Label 71*/ GIMT_Encode4(5288),
2360 /* 838 */ /*TargetOpcode::G_FMAXNUM_IEEE*//*Label 72*/ GIMT_Encode4(5300),
2361 /* 842 */ /*TargetOpcode::G_FMINIMUM*//*Label 73*/ GIMT_Encode4(5312),
2362 /* 846 */ /*TargetOpcode::G_FMAXIMUM*//*Label 74*/ GIMT_Encode4(5335),
2363 /* 850 */ /*TargetOpcode::G_FMINIMUMNUM*//*Label 75*/ GIMT_Encode4(5358),
2364 /* 854 */ /*TargetOpcode::G_FMAXIMUMNUM*//*Label 76*/ GIMT_Encode4(5370), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2365 /* 890 */ /*TargetOpcode::G_PTR_ADD*//*Label 77*/ GIMT_Encode4(5382), GIMT_Encode4(0),
2366 /* 898 */ /*TargetOpcode::G_SMIN*//*Label 78*/ GIMT_Encode4(5428),
2367 /* 902 */ /*TargetOpcode::G_SMAX*//*Label 79*/ GIMT_Encode4(5451),
2368 /* 906 */ /*TargetOpcode::G_UMIN*//*Label 80*/ GIMT_Encode4(5474),
2369 /* 910 */ /*TargetOpcode::G_UMAX*//*Label 81*/ GIMT_Encode4(5497),
2370 /* 914 */ /*TargetOpcode::G_ABS*//*Label 82*/ GIMT_Encode4(5520), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2371 /* 946 */ /*TargetOpcode::G_INSERT_VECTOR_ELT*//*Label 83*/ GIMT_Encode4(5542),
2372 /* 950 */ /*TargetOpcode::G_EXTRACT_VECTOR_ELT*//*Label 84*/ GIMT_Encode4(5554),
2373 /* 954 */ /*TargetOpcode::G_SHUFFLE_VECTOR*//*Label 85*/ GIMT_Encode4(5588), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2374 /* 1014 */ /*TargetOpcode::G_FCEIL*//*Label 86*/ GIMT_Encode4(5618), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0), GIMT_Encode4(0),
2375 /* 1062 */ /*TargetOpcode::G_FSQRT*//*Label 87*/ GIMT_Encode4(5640),
2376 /* 1066 */ /*TargetOpcode::G_FFLOOR*//*Label 88*/ GIMT_Encode4(5662),
2377 /* 1070 */ /*TargetOpcode::G_FRINT*//*Label 89*/ GIMT_Encode4(5684),
2378 /* 1074 */ /*TargetOpcode::G_FNEARBYINT*//*Label 90*/ GIMT_Encode4(5706),
2379 /* 1078 */ // Label 0: @1078
2380 /* 1078 */ GIM_Try, /*On fail goto*//*Label 92*/ GIMT_Encode4(1089), // Rule ID 0 //
2381 /* 1083 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule0Enabled),
2382 /* 1086 */ // MIs[0] d
2383 /* 1086 */ // No operand predicates
2384 /* 1086 */ // MIs[0] s
2385 /* 1086 */ // No operand predicates
2386 /* 1086 */ // Combiner Rule #0: copy_prop
2387 /* 1086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner0),
2388 /* 1089 */ // Label 92: @1089
2389 /* 1089 */ GIM_Reject,
2390 /* 1090 */ // Label 1: @1090
2391 /* 1090 */ GIM_Try, /*On fail goto*//*Label 93*/ GIMT_Encode4(1101), // Rule ID 86 //
2392 /* 1095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2393 /* 1098 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_ADD'
2394 /* 1098 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2395 /* 1101 */ // Label 93: @1101
2396 /* 1101 */ GIM_Try, /*On fail goto*//*Label 94*/ GIMT_Encode4(1112), // Rule ID 204 //
2397 /* 1106 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
2398 /* 1109 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_ADD'
2399 /* 1109 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2400 /* 1112 */ // Label 94: @1112
2401 /* 1112 */ GIM_Try, /*On fail goto*//*Label 95*/ GIMT_Encode4(1146), // Rule ID 151 //
2402 /* 1117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
2403 /* 1120 */ // MIs[0] dst
2404 /* 1120 */ // No operand predicates
2405 /* 1120 */ // MIs[0] __add_sub_reg_match_0.tmp
2406 /* 1120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2407 /* 1124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2408 /* 1128 */ // MIs[1] src
2409 /* 1128 */ // No operand predicates
2410 /* 1128 */ // MIs[1] __add_sub_reg_match_0.x
2411 /* 1128 */ // No operand predicates
2412 /* 1128 */ // MIs[0] __add_sub_reg_match_0.x
2413 /* 1128 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/1, /*OtherOpIdx*/2,
2414 /* 1133 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2415 /* 1138 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2416 /* 1140 */ // Combiner Rule #90: add_sub_reg @ [__add_sub_reg_match_0[1]]
2417 /* 1140 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2418 /* 1145 */ GIR_EraseRootFromParent_Done,
2419 /* 1146 */ // Label 95: @1146
2420 /* 1146 */ GIM_Try, /*On fail goto*//*Label 96*/ GIMT_Encode4(1167), // Rule ID 187 //
2421 /* 1151 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
2422 /* 1154 */ // MIs[0] dst
2423 /* 1154 */ // No operand predicates
2424 /* 1154 */ // MIs[0] __propagate_undef_any_op_match_0.x
2425 /* 1154 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2426 /* 1158 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2427 /* 1162 */ // MIs[0] __propagate_undef_any_op_match_0.y
2428 /* 1162 */ // No operand predicates
2429 /* 1162 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2430 /* 1164 */ // Combiner Rule #110: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[0]]
2431 /* 1164 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
2432 /* 1167 */ // Label 96: @1167
2433 /* 1167 */ GIM_Try, /*On fail goto*//*Label 97*/ GIMT_Encode4(1201), // Rule ID 150 //
2434 /* 1172 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule90Enabled),
2435 /* 1175 */ // MIs[0] dst
2436 /* 1175 */ // No operand predicates
2437 /* 1175 */ // MIs[0] __add_sub_reg_match_0.x
2438 /* 1175 */ // No operand predicates
2439 /* 1175 */ // MIs[0] __add_sub_reg_match_0.tmp
2440 /* 1175 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2441 /* 1179 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SUB),
2442 /* 1183 */ // MIs[1] src
2443 /* 1183 */ // No operand predicates
2444 /* 1183 */ // MIs[1] __add_sub_reg_match_0.x
2445 /* 1183 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/1, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2446 /* 1188 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2447 /* 1193 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2448 /* 1195 */ // Combiner Rule #90: add_sub_reg @ [__add_sub_reg_match_0[0]]
2449 /* 1195 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
2450 /* 1200 */ GIR_EraseRootFromParent_Done,
2451 /* 1201 */ // Label 97: @1201
2452 /* 1201 */ GIM_Try, /*On fail goto*//*Label 98*/ GIMT_Encode4(1222), // Rule ID 190 //
2453 /* 1206 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
2454 /* 1209 */ // MIs[0] dst
2455 /* 1209 */ // No operand predicates
2456 /* 1209 */ // MIs[0] __propagate_undef_any_op_match_0.x
2457 /* 1209 */ // No operand predicates
2458 /* 1209 */ // MIs[0] __propagate_undef_any_op_match_0.y
2459 /* 1209 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2460 /* 1213 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2461 /* 1217 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2462 /* 1219 */ // Combiner Rule #110: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[3]]
2463 /* 1219 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
2464 /* 1222 */ // Label 98: @1222
2465 /* 1222 */ GIM_Try, /*On fail goto*//*Label 99*/ GIMT_Encode4(1245), // Rule ID 122 //
2466 /* 1227 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
2467 /* 1230 */ // MIs[0] dst
2468 /* 1230 */ // No operand predicates
2469 /* 1230 */ // MIs[0] lhs
2470 /* 1230 */ // No operand predicates
2471 /* 1230 */ // MIs[0] Operand 2
2472 /* 1230 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2473 /* 1234 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2474 /* 1239 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[1]]
2475 /* 1239 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2476 /* 1244 */ GIR_EraseRootFromParent_Done,
2477 /* 1245 */ // Label 99: @1245
2478 /* 1245 */ GIM_Reject,
2479 /* 1246 */ // Label 2: @1246
2480 /* 1246 */ GIM_Try, /*On fail goto*//*Label 100*/ GIMT_Encode4(1257), // Rule ID 94 //
2481 /* 1251 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2482 /* 1254 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_SUB'
2483 /* 1254 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2484 /* 1257 */ // Label 100: @1257
2485 /* 1257 */ GIM_Try, /*On fail goto*//*Label 101*/ GIMT_Encode4(1316), // Rule ID 239 //
2486 /* 1262 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule128Enabled),
2487 /* 1265 */ // MIs[0] dst
2488 /* 1265 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
2489 /* 1269 */ // MIs[0] src3
2490 /* 1269 */ // No operand predicates
2491 /* 1269 */ // MIs[0] tmp
2492 /* 1269 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2493 /* 1273 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ADD),
2494 /* 1277 */ // MIs[1] src1
2495 /* 1277 */ // No operand predicates
2496 /* 1277 */ // MIs[1] src2
2497 /* 1277 */ // No operand predicates
2498 /* 1277 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner15),
2499 /* 1281 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2500 /* 1283 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
2501 /* 1286 */ // Combiner Rule #128: subaddmulreassoc
2502 /* 1286 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
2503 /* 1289 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
2504 /* 1294 */ GIR_RootToRootCopy, /*OpIdx*/1, // src3
2505 /* 1296 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
2506 /* 1300 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SUB),
2507 /* 1304 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
2508 /* 1308 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
2509 /* 1311 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/1, /*OpIdx*/2, // src2
2510 /* 1315 */ GIR_EraseRootFromParent_Done,
2511 /* 1316 */ // Label 101: @1316
2512 /* 1316 */ GIM_Try, /*On fail goto*//*Label 102*/ GIMT_Encode4(1337), // Rule ID 188 //
2513 /* 1321 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
2514 /* 1324 */ // MIs[0] dst
2515 /* 1324 */ // No operand predicates
2516 /* 1324 */ // MIs[0] __propagate_undef_any_op_match_0.x
2517 /* 1324 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2518 /* 1328 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2519 /* 1332 */ // MIs[0] __propagate_undef_any_op_match_0.y
2520 /* 1332 */ // No operand predicates
2521 /* 1332 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2522 /* 1334 */ // Combiner Rule #110: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[1]]
2523 /* 1334 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
2524 /* 1337 */ // Label 102: @1337
2525 /* 1337 */ GIM_Try, /*On fail goto*//*Label 103*/ GIMT_Encode4(1376), // Rule ID 133 //
2526 /* 1342 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
2527 /* 1345 */ // MIs[0] dst
2528 /* 1345 */ // No operand predicates
2529 /* 1345 */ // MIs[0] x
2530 /* 1345 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
2531 /* 1349 */ // MIs[0] x
2532 /* 1349 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2533 /* 1354 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
2534 /* 1357 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
2535 /* 1367 */ // Combiner Rule #81: same_val_zero @ [__same_val_zero_match_0[0]]
2536 /* 1367 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
2537 /* 1370 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
2538 /* 1372 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
2539 /* 1375 */ GIR_EraseRootFromParent_Done,
2540 /* 1376 */ // Label 103: @1376
2541 /* 1376 */ GIM_Try, /*On fail goto*//*Label 104*/ GIMT_Encode4(1397), // Rule ID 191 //
2542 /* 1381 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
2543 /* 1384 */ // MIs[0] dst
2544 /* 1384 */ // No operand predicates
2545 /* 1384 */ // MIs[0] __propagate_undef_any_op_match_0.x
2546 /* 1384 */ // No operand predicates
2547 /* 1384 */ // MIs[0] __propagate_undef_any_op_match_0.y
2548 /* 1384 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2549 /* 1388 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2550 /* 1392 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2551 /* 1394 */ // Combiner Rule #110: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[4]]
2552 /* 1394 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
2553 /* 1397 */ // Label 104: @1397
2554 /* 1397 */ GIM_Try, /*On fail goto*//*Label 105*/ GIMT_Encode4(1420), // Rule ID 121 //
2555 /* 1402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
2556 /* 1405 */ // MIs[0] dst
2557 /* 1405 */ // No operand predicates
2558 /* 1405 */ // MIs[0] lhs
2559 /* 1405 */ // No operand predicates
2560 /* 1405 */ // MIs[0] Operand 2
2561 /* 1405 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2562 /* 1409 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2563 /* 1414 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[0]]
2564 /* 1414 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2565 /* 1419 */ GIR_EraseRootFromParent_Done,
2566 /* 1420 */ // Label 105: @1420
2567 /* 1420 */ GIM_Reject,
2568 /* 1421 */ // Label 3: @1421
2569 /* 1421 */ GIM_Try, /*On fail goto*//*Label 106*/ GIMT_Encode4(1432), // Rule ID 91 //
2570 /* 1426 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2571 /* 1429 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_MUL'
2572 /* 1429 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2573 /* 1432 */ // Label 106: @1432
2574 /* 1432 */ GIM_Try, /*On fail goto*//*Label 107*/ GIMT_Encode4(1443), // Rule ID 205 //
2575 /* 1437 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
2576 /* 1440 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_MUL'
2577 /* 1440 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2578 /* 1443 */ // Label 107: @1443
2579 /* 1443 */ GIM_Try, /*On fail goto*//*Label 108*/ GIMT_Encode4(1464), // Rule ID 168 //
2580 /* 1448 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
2581 /* 1451 */ // MIs[0] dst
2582 /* 1451 */ // No operand predicates
2583 /* 1451 */ // MIs[0] __undef_to_int_zero_match_0.x
2584 /* 1451 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2585 /* 1455 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2586 /* 1459 */ // MIs[0] __undef_to_int_zero_match_0.y
2587 /* 1459 */ // No operand predicates
2588 /* 1459 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2589 /* 1461 */ // Combiner Rule #104: undef_to_int_zero @ [__undef_to_int_zero_match_0[1]]
2590 /* 1461 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2591 /* 1464 */ // Label 108: @1464
2592 /* 1464 */ GIM_Try, /*On fail goto*//*Label 109*/ GIMT_Encode4(1504), // Rule ID 142 //
2593 /* 1469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
2594 /* 1472 */ // MIs[0] dst
2595 /* 1472 */ // No operand predicates
2596 /* 1472 */ // MIs[0] zero
2597 /* 1472 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2598 /* 1476 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2599 /* 1480 */ // MIs[1] Operand 1
2600 /* 1480 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2601 /* 1491 */ // MIs[0] rhs
2602 /* 1491 */ // No operand predicates
2603 /* 1491 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2604 /* 1496 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2605 /* 1498 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[7]]
2606 /* 1498 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2607 /* 1503 */ GIR_EraseRootFromParent_Done,
2608 /* 1504 */ // Label 109: @1504
2609 /* 1504 */ GIM_Try, /*On fail goto*//*Label 110*/ GIMT_Encode4(1525), // Rule ID 170 //
2610 /* 1509 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
2611 /* 1512 */ // MIs[0] dst
2612 /* 1512 */ // No operand predicates
2613 /* 1512 */ // MIs[0] __undef_to_int_zero_match_0.x
2614 /* 1512 */ // No operand predicates
2615 /* 1512 */ // MIs[0] __undef_to_int_zero_match_0.y
2616 /* 1512 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2617 /* 1516 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2618 /* 1520 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2619 /* 1522 */ // Combiner Rule #104: undef_to_int_zero @ [__undef_to_int_zero_match_0[3]]
2620 /* 1522 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2621 /* 1525 */ // Label 110: @1525
2622 /* 1525 */ GIM_Try, /*On fail goto*//*Label 111*/ GIMT_Encode4(1548), // Rule ID 143 //
2623 /* 1530 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule83Enabled),
2624 /* 1533 */ // MIs[0] dst
2625 /* 1533 */ // No operand predicates
2626 /* 1533 */ // MIs[0] lhs
2627 /* 1533 */ // No operand predicates
2628 /* 1533 */ // MIs[0] zero
2629 /* 1533 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2630 /* 1537 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2631 /* 1542 */ // Combiner Rule #83: binop_right_to_zero
2632 /* 1542 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
2633 /* 1547 */ GIR_EraseRootFromParent_Done,
2634 /* 1548 */ // Label 111: @1548
2635 /* 1548 */ GIM_Try, /*On fail goto*//*Label 112*/ GIMT_Encode4(1571), // Rule ID 148 //
2636 /* 1553 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule88Enabled),
2637 /* 1556 */ // MIs[0] dst
2638 /* 1556 */ // No operand predicates
2639 /* 1556 */ // MIs[0] x
2640 /* 1556 */ // No operand predicates
2641 /* 1556 */ // MIs[0] Operand 2
2642 /* 1556 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 1,
2643 /* 1560 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2644 /* 1565 */ // Combiner Rule #88: right_identity_one_int
2645 /* 1565 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2646 /* 1570 */ GIR_EraseRootFromParent_Done,
2647 /* 1571 */ // Label 112: @1571
2648 /* 1571 */ GIM_Try, /*On fail goto*//*Label 113*/ GIMT_Encode4(1582), // Rule ID 47 //
2649 /* 1576 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule40Enabled),
2650 /* 1579 */ // MIs[0] dst
2651 /* 1579 */ // No operand predicates
2652 /* 1579 */ // MIs[0] src1
2653 /* 1579 */ // No operand predicates
2654 /* 1579 */ // MIs[0] src2
2655 /* 1579 */ // No operand predicates
2656 /* 1579 */ // Combiner Rule #40: mul_const
2657 /* 1579 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner16),
2658 /* 1582 */ // Label 113: @1582
2659 /* 1582 */ GIM_Try, /*On fail goto*//*Label 114*/ GIMT_Encode4(1593), // Rule ID 236 //
2660 /* 1587 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule125Enabled),
2661 /* 1590 */ // MIs[0] dst
2662 /* 1590 */ // No operand predicates
2663 /* 1590 */ // MIs[0] src1
2664 /* 1590 */ // No operand predicates
2665 /* 1590 */ // MIs[0] src2
2666 /* 1590 */ // No operand predicates
2667 /* 1590 */ // Combiner Rule #125: combine_mul_cmlt
2668 /* 1590 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner66),
2669 /* 1593 */ // Label 114: @1593
2670 /* 1593 */ GIM_Try, /*On fail goto*//*Label 115*/ GIMT_Encode4(1604), // Rule ID 238 //
2671 /* 1598 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule127Enabled),
2672 /* 1601 */ // MIs[0] dst
2673 /* 1601 */ // No operand predicates
2674 /* 1601 */ // MIs[0] src1
2675 /* 1601 */ // No operand predicates
2676 /* 1601 */ // MIs[0] src2
2677 /* 1601 */ // No operand predicates
2678 /* 1601 */ // Combiner Rule #127: extmultomull
2679 /* 1601 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner68),
2680 /* 1604 */ // Label 115: @1604
2681 /* 1604 */ GIM_Reject,
2682 /* 1605 */ // Label 4: @1605
2683 /* 1605 */ GIM_Try, /*On fail goto*//*Label 116*/ GIMT_Encode4(1616), // Rule ID 97 //
2684 /* 1610 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2685 /* 1613 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_SDIV'
2686 /* 1613 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2687 /* 1616 */ // Label 116: @1616
2688 /* 1616 */ GIM_Try, /*On fail goto*//*Label 117*/ GIMT_Encode4(1656), // Rule ID 138 //
2689 /* 1621 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
2690 /* 1624 */ // MIs[0] dst
2691 /* 1624 */ // No operand predicates
2692 /* 1624 */ // MIs[0] zero
2693 /* 1624 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2694 /* 1628 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2695 /* 1632 */ // MIs[1] Operand 1
2696 /* 1632 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2697 /* 1643 */ // MIs[0] rhs
2698 /* 1643 */ // No operand predicates
2699 /* 1643 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2700 /* 1648 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2701 /* 1650 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[3]]
2702 /* 1650 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2703 /* 1655 */ GIR_EraseRootFromParent_Done,
2704 /* 1656 */ // Label 117: @1656
2705 /* 1656 */ GIM_Reject,
2706 /* 1657 */ // Label 5: @1657
2707 /* 1657 */ GIM_Try, /*On fail goto*//*Label 118*/ GIMT_Encode4(1668), // Rule ID 96 //
2708 /* 1662 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2709 /* 1665 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_UDIV'
2710 /* 1665 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2711 /* 1668 */ // Label 118: @1668
2712 /* 1668 */ GIM_Try, /*On fail goto*//*Label 119*/ GIMT_Encode4(1689), // Rule ID 174 //
2713 /* 1673 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
2714 /* 1676 */ // MIs[0] dst
2715 /* 1676 */ // No operand predicates
2716 /* 1676 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
2717 /* 1676 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2718 /* 1680 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2719 /* 1684 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
2720 /* 1684 */ // No operand predicates
2721 /* 1684 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2722 /* 1686 */ // Combiner Rule #106: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[1]]
2723 /* 1686 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2724 /* 1689 */ // Label 119: @1689
2725 /* 1689 */ GIM_Try, /*On fail goto*//*Label 120*/ GIMT_Encode4(1729), // Rule ID 139 //
2726 /* 1694 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
2727 /* 1697 */ // MIs[0] dst
2728 /* 1697 */ // No operand predicates
2729 /* 1697 */ // MIs[0] zero
2730 /* 1697 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2731 /* 1701 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2732 /* 1705 */ // MIs[1] Operand 1
2733 /* 1705 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2734 /* 1716 */ // MIs[0] rhs
2735 /* 1716 */ // No operand predicates
2736 /* 1716 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2737 /* 1721 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2738 /* 1723 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[4]]
2739 /* 1723 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2740 /* 1728 */ GIR_EraseRootFromParent_Done,
2741 /* 1729 */ // Label 120: @1729
2742 /* 1729 */ GIM_Reject,
2743 /* 1730 */ // Label 6: @1730
2744 /* 1730 */ GIM_Try, /*On fail goto*//*Label 121*/ GIMT_Encode4(1741), // Rule ID 99 //
2745 /* 1735 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2746 /* 1738 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_SREM'
2747 /* 1738 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2748 /* 1741 */ // Label 121: @1741
2749 /* 1741 */ GIM_Try, /*On fail goto*//*Label 122*/ GIMT_Encode4(1781), // Rule ID 140 //
2750 /* 1746 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
2751 /* 1749 */ // MIs[0] dst
2752 /* 1749 */ // No operand predicates
2753 /* 1749 */ // MIs[0] zero
2754 /* 1749 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2755 /* 1753 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2756 /* 1757 */ // MIs[1] Operand 1
2757 /* 1757 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2758 /* 1768 */ // MIs[0] rhs
2759 /* 1768 */ // No operand predicates
2760 /* 1768 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2761 /* 1773 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2762 /* 1775 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[5]]
2763 /* 1775 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2764 /* 1780 */ GIR_EraseRootFromParent_Done,
2765 /* 1781 */ // Label 122: @1781
2766 /* 1781 */ GIM_Reject,
2767 /* 1782 */ // Label 7: @1782
2768 /* 1782 */ GIM_Try, /*On fail goto*//*Label 123*/ GIMT_Encode4(1793), // Rule ID 98 //
2769 /* 1787 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2770 /* 1790 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_UREM'
2771 /* 1790 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2772 /* 1793 */ // Label 123: @1793
2773 /* 1793 */ GIM_Try, /*On fail goto*//*Label 124*/ GIMT_Encode4(1814), // Rule ID 175 //
2774 /* 1798 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
2775 /* 1801 */ // MIs[0] dst
2776 /* 1801 */ // No operand predicates
2777 /* 1801 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
2778 /* 1801 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2779 /* 1805 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2780 /* 1809 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
2781 /* 1809 */ // No operand predicates
2782 /* 1809 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2783 /* 1811 */ // Combiner Rule #106: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[2]]
2784 /* 1811 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2785 /* 1814 */ // Label 124: @1814
2786 /* 1814 */ GIM_Try, /*On fail goto*//*Label 125*/ GIMT_Encode4(1854), // Rule ID 141 //
2787 /* 1819 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
2788 /* 1822 */ // MIs[0] dst
2789 /* 1822 */ // No operand predicates
2790 /* 1822 */ // MIs[0] zero
2791 /* 1822 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2792 /* 1826 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2793 /* 1830 */ // MIs[1] Operand 1
2794 /* 1830 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
2795 /* 1841 */ // MIs[0] rhs
2796 /* 1841 */ // No operand predicates
2797 /* 1841 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2798 /* 1846 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2799 /* 1848 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[6]]
2800 /* 1848 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2801 /* 1853 */ GIR_EraseRootFromParent_Done,
2802 /* 1854 */ // Label 125: @1854
2803 /* 1854 */ GIM_Reject,
2804 /* 1855 */ // Label 8: @1855
2805 /* 1855 */ GIM_Try, /*On fail goto*//*Label 126*/ GIMT_Encode4(1866), // Rule ID 40 //
2806 /* 1860 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
2807 /* 1863 */ // Combiner Rule #35: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_AND'
2808 /* 1863 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2809 /* 1866 */ // Label 126: @1866
2810 /* 1866 */ GIM_Try, /*On fail goto*//*Label 127*/ GIMT_Encode4(1877), // Rule ID 88 //
2811 /* 1871 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2812 /* 1874 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_AND'
2813 /* 1874 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2814 /* 1877 */ // Label 127: @1877
2815 /* 1877 */ GIM_Try, /*On fail goto*//*Label 128*/ GIMT_Encode4(1888), // Rule ID 163 //
2816 /* 1882 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule101Enabled),
2817 /* 1885 */ // Combiner Rule #101: overlapping_and; wip_match_opcode 'G_AND'
2818 /* 1885 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner49),
2819 /* 1888 */ // Label 128: @1888
2820 /* 1888 */ GIM_Try, /*On fail goto*//*Label 129*/ GIMT_Encode4(1899), // Rule ID 206 //
2821 /* 1893 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
2822 /* 1896 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_AND'
2823 /* 1896 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2824 /* 1899 */ // Label 129: @1899
2825 /* 1899 */ GIM_Try, /*On fail goto*//*Label 130*/ GIMT_Encode4(1936), // Rule ID 54 //
2826 /* 1904 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule47Enabled),
2827 /* 1907 */ // MIs[0] root
2828 /* 1907 */ // No operand predicates
2829 /* 1907 */ // MIs[0] shift
2830 /* 1907 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2831 /* 1911 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_LSHR),
2832 /* 1915 */ // MIs[1] x
2833 /* 1915 */ // No operand predicates
2834 /* 1915 */ // MIs[1] lsb
2835 /* 1915 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/2, // MIs[2]
2836 /* 1919 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2837 /* 1923 */ // MIs[2] imm1
2838 /* 1923 */ // No operand predicates
2839 /* 1923 */ // MIs[0] mask
2840 /* 1923 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/0, /*OpIdx*/2, // MIs[3]
2841 /* 1927 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_CONSTANT),
2842 /* 1931 */ // MIs[3] imm2
2843 /* 1931 */ // No operand predicates
2844 /* 1931 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
2845 /* 1933 */ // Combiner Rule #47: bitfield_extract_from_and
2846 /* 1933 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner19),
2847 /* 1936 */ // Label 130: @1936
2848 /* 1936 */ GIM_Try, /*On fail goto*//*Label 131*/ GIMT_Encode4(1957), // Rule ID 167 //
2849 /* 1941 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
2850 /* 1944 */ // MIs[0] dst
2851 /* 1944 */ // No operand predicates
2852 /* 1944 */ // MIs[0] __undef_to_int_zero_match_0.x
2853 /* 1944 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2854 /* 1948 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2855 /* 1952 */ // MIs[0] __undef_to_int_zero_match_0.y
2856 /* 1952 */ // No operand predicates
2857 /* 1952 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2858 /* 1954 */ // Combiner Rule #104: undef_to_int_zero @ [__undef_to_int_zero_match_0[0]]
2859 /* 1954 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2860 /* 1957 */ // Label 131: @1957
2861 /* 1957 */ GIM_Try, /*On fail goto*//*Label 132*/ GIMT_Encode4(1981), // Rule ID 131 //
2862 /* 1962 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
2863 /* 1965 */ // MIs[0] dst
2864 /* 1965 */ // No operand predicates
2865 /* 1965 */ // MIs[0] src
2866 /* 1965 */ // No operand predicates
2867 /* 1965 */ // MIs[0] src
2868 /* 1965 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2869 /* 1970 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2870 /* 1975 */ // Combiner Rule #80: binop_same_val @ [__binop_same_val_match_0[0]]
2871 /* 1975 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2872 /* 1980 */ GIR_EraseRootFromParent_Done,
2873 /* 1981 */ // Label 132: @1981
2874 /* 1981 */ GIM_Try, /*On fail goto*//*Label 133*/ GIMT_Encode4(2002), // Rule ID 169 //
2875 /* 1986 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule104Enabled),
2876 /* 1989 */ // MIs[0] dst
2877 /* 1989 */ // No operand predicates
2878 /* 1989 */ // MIs[0] __undef_to_int_zero_match_0.x
2879 /* 1989 */ // No operand predicates
2880 /* 1989 */ // MIs[0] __undef_to_int_zero_match_0.y
2881 /* 1989 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2882 /* 1993 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2883 /* 1997 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2884 /* 1999 */ // Combiner Rule #104: undef_to_int_zero @ [__undef_to_int_zero_match_0[2]]
2885 /* 1999 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
2886 /* 2002 */ // Label 133: @2002
2887 /* 2002 */ GIM_Try, /*On fail goto*//*Label 134*/ GIMT_Encode4(2013), // Rule ID 34 //
2888 /* 2007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule32Enabled),
2889 /* 2010 */ // MIs[0] dst
2890 /* 2010 */ // No operand predicates
2891 /* 2010 */ // MIs[0] src1
2892 /* 2010 */ // No operand predicates
2893 /* 2010 */ // MIs[0] src2
2894 /* 2010 */ // No operand predicates
2895 /* 2010 */ // Combiner Rule #32: load_and_mask
2896 /* 2010 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner9),
2897 /* 2013 */ // Label 134: @2013
2898 /* 2013 */ GIM_Try, /*On fail goto*//*Label 135*/ GIMT_Encode4(2024), // Rule ID 43 //
2899 /* 2018 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule36Enabled),
2900 /* 2021 */ // MIs[0] dst
2901 /* 2021 */ // No operand predicates
2902 /* 2021 */ // MIs[0] src1
2903 /* 2021 */ // No operand predicates
2904 /* 2021 */ // MIs[0] src2
2905 /* 2021 */ // No operand predicates
2906 /* 2021 */ // Combiner Rule #36: redundant_and
2907 /* 2021 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner12),
2908 /* 2024 */ // Label 135: @2024
2909 /* 2024 */ GIM_Reject,
2910 /* 2025 */ // Label 9: @2025
2911 /* 2025 */ GIM_Try, /*On fail goto*//*Label 136*/ GIMT_Encode4(2036), // Rule ID 41 //
2912 /* 2030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
2913 /* 2033 */ // Combiner Rule #35: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_OR'
2914 /* 2033 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
2915 /* 2036 */ // Label 136: @2036
2916 /* 2036 */ GIM_Try, /*On fail goto*//*Label 137*/ GIMT_Encode4(2047), // Rule ID 92 //
2917 /* 2041 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
2918 /* 2044 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_OR'
2919 /* 2044 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
2920 /* 2047 */ // Label 137: @2047
2921 /* 2047 */ GIM_Try, /*On fail goto*//*Label 138*/ GIMT_Encode4(2058), // Rule ID 207 //
2922 /* 2052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
2923 /* 2055 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_OR'
2924 /* 2055 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
2925 /* 2058 */ // Label 138: @2058
2926 /* 2058 */ GIM_Try, /*On fail goto*//*Label 139*/ GIMT_Encode4(2079), // Rule ID 171 //
2927 /* 2063 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2928 /* 2066 */ // MIs[0] dst
2929 /* 2066 */ // No operand predicates
2930 /* 2066 */ // MIs[0] __undef_to_negative_one_match_0.x
2931 /* 2066 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
2932 /* 2070 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2933 /* 2074 */ // MIs[0] __undef_to_negative_one_match_0.y
2934 /* 2074 */ // No operand predicates
2935 /* 2074 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2936 /* 2076 */ // Combiner Rule #105: undef_to_negative_one @ [__undef_to_negative_one_match_0[0]]
2937 /* 2076 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
2938 /* 2079 */ // Label 139: @2079
2939 /* 2079 */ GIM_Try, /*On fail goto*//*Label 140*/ GIMT_Encode4(2103), // Rule ID 132 //
2940 /* 2084 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule80Enabled),
2941 /* 2087 */ // MIs[0] dst
2942 /* 2087 */ // No operand predicates
2943 /* 2087 */ // MIs[0] src
2944 /* 2087 */ // No operand predicates
2945 /* 2087 */ // MIs[0] src
2946 /* 2087 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
2947 /* 2092 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2948 /* 2097 */ // Combiner Rule #80: binop_same_val @ [__binop_same_val_match_0[1]]
2949 /* 2097 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2950 /* 2102 */ GIR_EraseRootFromParent_Done,
2951 /* 2103 */ // Label 140: @2103
2952 /* 2103 */ GIM_Try, /*On fail goto*//*Label 141*/ GIMT_Encode4(2124), // Rule ID 172 //
2953 /* 2108 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule105Enabled),
2954 /* 2111 */ // MIs[0] dst
2955 /* 2111 */ // No operand predicates
2956 /* 2111 */ // MIs[0] __undef_to_negative_one_match_0.x
2957 /* 2111 */ // No operand predicates
2958 /* 2111 */ // MIs[0] __undef_to_negative_one_match_0.y
2959 /* 2111 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
2960 /* 2115 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
2961 /* 2119 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
2962 /* 2121 */ // Combiner Rule #105: undef_to_negative_one @ [__undef_to_negative_one_match_0[1]]
2963 /* 2121 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner52),
2964 /* 2124 */ // Label 141: @2124
2965 /* 2124 */ GIM_Try, /*On fail goto*//*Label 142*/ GIMT_Encode4(2147), // Rule ID 123 //
2966 /* 2129 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
2967 /* 2132 */ // MIs[0] dst
2968 /* 2132 */ // No operand predicates
2969 /* 2132 */ // MIs[0] lhs
2970 /* 2132 */ // No operand predicates
2971 /* 2132 */ // MIs[0] Operand 2
2972 /* 2132 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
2973 /* 2136 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2974 /* 2141 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[2]]
2975 /* 2141 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
2976 /* 2146 */ GIR_EraseRootFromParent_Done,
2977 /* 2147 */ // Label 142: @2147
2978 /* 2147 */ GIM_Try, /*On fail goto*//*Label 143*/ GIMT_Encode4(2158), // Rule ID 46 //
2979 /* 2152 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule39Enabled),
2980 /* 2155 */ // MIs[0] dst
2981 /* 2155 */ // No operand predicates
2982 /* 2155 */ // MIs[0] src1
2983 /* 2155 */ // No operand predicates
2984 /* 2155 */ // MIs[0] src2
2985 /* 2155 */ // No operand predicates
2986 /* 2155 */ // Combiner Rule #39: redundant_or
2987 /* 2155 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner15),
2988 /* 2158 */ // Label 143: @2158
2989 /* 2158 */ GIM_Try, /*On fail goto*//*Label 144*/ GIMT_Encode4(2169), // Rule ID 200 //
2990 /* 2163 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule116Enabled),
2991 /* 2166 */ // MIs[0] dst
2992 /* 2166 */ // No operand predicates
2993 /* 2166 */ // MIs[0] src1
2994 /* 2166 */ // No operand predicates
2995 /* 2166 */ // MIs[0] src2
2996 /* 2166 */ // No operand predicates
2997 /* 2166 */ // Combiner Rule #116: or_to_bsp
2998 /* 2166 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner58),
2999 /* 2169 */ // Label 144: @2169
3000 /* 2169 */ GIM_Try, /*On fail goto*//*Label 145*/ GIMT_Encode4(2180), // Rule ID 245 //
3001 /* 2174 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule134Enabled),
3002 /* 2177 */ // MIs[0] dst
3003 /* 2177 */ // No operand predicates
3004 /* 2177 */ // MIs[0] src1
3005 /* 2177 */ // No operand predicates
3006 /* 2177 */ // MIs[0] src2
3007 /* 2177 */ // No operand predicates
3008 /* 2177 */ // Combiner Rule #134: funnel_shift_from_or_shift_constants_are_legal
3009 /* 2177 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner72),
3010 /* 2180 */ // Label 145: @2180
3011 /* 2180 */ GIM_Reject,
3012 /* 2181 */ // Label 10: @2181
3013 /* 2181 */ GIM_Try, /*On fail goto*//*Label 146*/ GIMT_Encode4(2192), // Rule ID 42 //
3014 /* 2186 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule35Enabled),
3015 /* 2189 */ // Combiner Rule #35: hoist_logic_op_with_same_opcode_hands; wip_match_opcode 'G_XOR'
3016 /* 2189 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner11),
3017 /* 2192 */ // Label 146: @2192
3018 /* 2192 */ GIM_Try, /*On fail goto*//*Label 147*/ GIMT_Encode4(2203), // Rule ID 95 //
3019 /* 2197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
3020 /* 2200 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_XOR'
3021 /* 2200 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
3022 /* 2203 */ // Label 147: @2203
3023 /* 2203 */ GIM_Try, /*On fail goto*//*Label 148*/ GIMT_Encode4(2214), // Rule ID 208 //
3024 /* 2208 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
3025 /* 2211 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_XOR'
3026 /* 2211 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
3027 /* 2214 */ // Label 148: @2214
3028 /* 2214 */ GIM_Try, /*On fail goto*//*Label 149*/ GIMT_Encode4(2235), // Rule ID 189 //
3029 /* 2219 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
3030 /* 2222 */ // MIs[0] dst
3031 /* 2222 */ // No operand predicates
3032 /* 2222 */ // MIs[0] __propagate_undef_any_op_match_0.x
3033 /* 2222 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3034 /* 2226 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3035 /* 2230 */ // MIs[0] __propagate_undef_any_op_match_0.y
3036 /* 2230 */ // No operand predicates
3037 /* 2230 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3038 /* 2232 */ // Combiner Rule #110: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[2]]
3039 /* 2232 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3040 /* 2235 */ // Label 149: @2235
3041 /* 2235 */ GIM_Try, /*On fail goto*//*Label 150*/ GIMT_Encode4(2274), // Rule ID 134 //
3042 /* 2240 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule81Enabled),
3043 /* 2243 */ // MIs[0] dst
3044 /* 2243 */ // No operand predicates
3045 /* 2243 */ // MIs[0] x
3046 /* 2243 */ GIM_RecordRegType, /*MI*/0, /*Op*/1, /*TempTypeIdx*/255,
3047 /* 2247 */ // MIs[0] x
3048 /* 2247 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/2, /*OtherMI*/0, /*OtherOpIdx*/1,
3049 /* 2252 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
3050 /* 2255 */ GIR_BuildConstant, /*TempRegID*/0, /*Val*/GIMT_Encode8(0),
3051 /* 2265 */ // Combiner Rule #81: same_val_zero @ [__same_val_zero_match_0[1]]
3052 /* 2265 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::COPY),
3053 /* 2268 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3054 /* 2270 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/0,
3055 /* 2273 */ GIR_EraseRootFromParent_Done,
3056 /* 2274 */ // Label 150: @2274
3057 /* 2274 */ GIM_Try, /*On fail goto*//*Label 151*/ GIMT_Encode4(2295), // Rule ID 192 //
3058 /* 2279 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule110Enabled),
3059 /* 2282 */ // MIs[0] dst
3060 /* 2282 */ // No operand predicates
3061 /* 2282 */ // MIs[0] __propagate_undef_any_op_match_0.x
3062 /* 2282 */ // No operand predicates
3063 /* 2282 */ // MIs[0] __propagate_undef_any_op_match_0.y
3064 /* 2282 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3065 /* 2286 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3066 /* 2290 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3067 /* 2292 */ // Combiner Rule #110: propagate_undef_any_op @ [__propagate_undef_any_op_match_0[5]]
3068 /* 2292 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3069 /* 2295 */ // Label 151: @2295
3070 /* 2295 */ GIM_Try, /*On fail goto*//*Label 152*/ GIMT_Encode4(2318), // Rule ID 124 //
3071 /* 2300 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
3072 /* 2303 */ // MIs[0] dst
3073 /* 2303 */ // No operand predicates
3074 /* 2303 */ // MIs[0] lhs
3075 /* 2303 */ // No operand predicates
3076 /* 2303 */ // MIs[0] Operand 2
3077 /* 2303 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
3078 /* 2307 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3079 /* 2312 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[3]]
3080 /* 2312 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3081 /* 2317 */ GIR_EraseRootFromParent_Done,
3082 /* 2318 */ // Label 152: @2318
3083 /* 2318 */ GIM_Try, /*On fail goto*//*Label 153*/ GIMT_Encode4(2329), // Rule ID 44 //
3084 /* 2323 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule37Enabled),
3085 /* 2326 */ // MIs[0] dst
3086 /* 2326 */ // No operand predicates
3087 /* 2326 */ // MIs[0] src1
3088 /* 2326 */ // No operand predicates
3089 /* 2326 */ // MIs[0] src2
3090 /* 2326 */ // No operand predicates
3091 /* 2326 */ // Combiner Rule #37: xor_of_and_with_same_reg
3092 /* 2326 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner13),
3093 /* 2329 */ // Label 153: @2329
3094 /* 2329 */ GIM_Reject,
3095 /* 2330 */ // Label 11: @2330
3096 /* 2330 */ GIM_Try, /*On fail goto*//*Label 154*/ GIMT_Encode4(2341), // Rule ID 76 //
3097 /* 2335 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule64Enabled),
3098 /* 2338 */ // Combiner Rule #64: unmerge_anyext_build_vector; wip_match_opcode 'G_UNMERGE_VALUES'
3099 /* 2338 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner29),
3100 /* 2341 */ // Label 154: @2341
3101 /* 2341 */ GIM_Try, /*On fail goto*//*Label 155*/ GIMT_Encode4(2352), // Rule ID 77 //
3102 /* 2346 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule65Enabled),
3103 /* 2349 */ // Combiner Rule #65: unmerge_merge; wip_match_opcode 'G_UNMERGE_VALUES'
3104 /* 2349 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner30),
3105 /* 2352 */ // Label 155: @2352
3106 /* 2352 */ GIM_Try, /*On fail goto*//*Label 156*/ GIMT_Encode4(2363), // Rule ID 79 //
3107 /* 2357 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule67Enabled),
3108 /* 2360 */ // Combiner Rule #67: unmerge_cst; wip_match_opcode 'G_UNMERGE_VALUES'
3109 /* 2360 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner32),
3110 /* 2363 */ // Label 156: @2363
3111 /* 2363 */ GIM_Try, /*On fail goto*//*Label 157*/ GIMT_Encode4(2374), // Rule ID 80 //
3112 /* 2368 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule68Enabled),
3113 /* 2371 */ // Combiner Rule #68: unmerge_undef; wip_match_opcode 'G_UNMERGE_VALUES'
3114 /* 2371 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner33),
3115 /* 2374 */ // Label 157: @2374
3116 /* 2374 */ GIM_Try, /*On fail goto*//*Label 158*/ GIMT_Encode4(2385), // Rule ID 81 //
3117 /* 2379 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule69Enabled),
3118 /* 2382 */ // Combiner Rule #69: unmerge_dead_to_trunc; wip_match_opcode 'G_UNMERGE_VALUES'
3119 /* 2382 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner34),
3120 /* 2385 */ // Label 158: @2385
3121 /* 2385 */ GIM_Try, /*On fail goto*//*Label 159*/ GIMT_Encode4(2396), // Rule ID 82 //
3122 /* 2390 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule70Enabled),
3123 /* 2393 */ // Combiner Rule #70: unmerge_zext_to_zext; wip_match_opcode 'G_UNMERGE_VALUES'
3124 /* 2393 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner35),
3125 /* 2396 */ // Label 159: @2396
3126 /* 2396 */ GIM_Reject,
3127 /* 2397 */ // Label 12: @2397
3128 /* 2397 */ GIM_Try, /*On fail goto*//*Label 160*/ GIMT_Encode4(2411), // Rule ID 78 //
3129 /* 2402 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule66Enabled),
3130 /* 2405 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3131 /* 2408 */ // MIs[0] dst
3132 /* 2408 */ // No operand predicates
3133 /* 2408 */ // MIs[0] merge_srcs
3134 /* 2408 */ // No operand predicates
3135 /* 2408 */ // Combiner Rule #66: merge_unmerge
3136 /* 2408 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner31),
3137 /* 2411 */ // Label 160: @2411
3138 /* 2411 */ GIM_Try, /*On fail goto*//*Label 161*/ GIMT_Encode4(2514),
3139 /* 2416 */ GIM_CheckNumOperands, /*MI*/0, /*Expected*/3,
3140 /* 2419 */ GIM_Try, /*On fail goto*//*Label 162*/ GIMT_Encode4(2440), // Rule ID 83 //
3141 /* 2424 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule71Enabled),
3142 /* 2427 */ // MIs[0] root
3143 /* 2427 */ // No operand predicates
3144 /* 2427 */ // MIs[0] x
3145 /* 2427 */ // No operand predicates
3146 /* 2427 */ // MIs[0] undef
3147 /* 2427 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3148 /* 2431 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3149 /* 2435 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3150 /* 2437 */ // Combiner Rule #71: merge_of_x_and_undef
3151 /* 2437 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner36),
3152 /* 2440 */ // Label 162: @2440
3153 /* 2440 */ GIM_Try, /*On fail goto*//*Label 163*/ GIMT_Encode4(2481), // Rule ID 75 //
3154 /* 2445 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule63Enabled),
3155 /* 2448 */ // MIs[0] dst
3156 /* 2448 */ // No operand predicates
3157 /* 2448 */ // MIs[0] x
3158 /* 2448 */ // No operand predicates
3159 /* 2448 */ // MIs[0] zero
3160 /* 2448 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3161 /* 2452 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3162 /* 2456 */ // MIs[1] Operand 1
3163 /* 2456 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3164 /* 2467 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner5),
3165 /* 2471 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3166 /* 2473 */ // Combiner Rule #63: fold_merge_to_zext
3167 /* 2473 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
3168 /* 2476 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3169 /* 2478 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
3170 /* 2480 */ GIR_EraseRootFromParent_Done,
3171 /* 2481 */ // Label 163: @2481
3172 /* 2481 */ GIM_Try, /*On fail goto*//*Label 164*/ GIMT_Encode4(2513), // Rule ID 84 //
3173 /* 2486 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule72Enabled),
3174 /* 2489 */ // MIs[0] root
3175 /* 2489 */ // No operand predicates
3176 /* 2489 */ // MIs[0] x
3177 /* 2489 */ // No operand predicates
3178 /* 2489 */ // MIs[0] zero
3179 /* 2489 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
3180 /* 2493 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3181 /* 2497 */ // MIs[1] Operand 1
3182 /* 2497 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
3183 /* 2508 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3184 /* 2510 */ // Combiner Rule #72: merge_of_x_and_zero
3185 /* 2510 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner37),
3186 /* 2513 */ // Label 164: @2513
3187 /* 2513 */ GIM_Reject,
3188 /* 2514 */ // Label 161: @2514
3189 /* 2514 */ GIM_Reject,
3190 /* 2515 */ // Label 13: @2515
3191 /* 2515 */ GIM_Try, /*On fail goto*//*Label 165*/ GIMT_Encode4(2526), // Rule ID 153 //
3192 /* 2520 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
3193 /* 2523 */ // Combiner Rule #91: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR'
3194 /* 2523 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
3195 /* 2526 */ // Label 165: @2526
3196 /* 2526 */ GIM_Try, /*On fail goto*//*Label 166*/ GIMT_Encode4(2537), // Rule ID 194 //
3197 /* 2531 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
3198 /* 2534 */ // Combiner Rule #111: propagate_undef_all_ops; wip_match_opcode 'G_BUILD_VECTOR'
3199 /* 2534 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
3200 /* 2537 */ // Label 166: @2537
3201 /* 2537 */ GIM_Try, /*On fail goto*//*Label 167*/ GIMT_Encode4(2590),
3202 /* 2542 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3203 /* 2545 */ GIM_Try, /*On fail goto*//*Label 168*/ GIMT_Encode4(2556), // Rule ID 85 //
3204 /* 2550 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule73Enabled),
3205 /* 2553 */ // MIs[0] dst
3206 /* 2553 */ // No operand predicates
3207 /* 2553 */ // MIs[0] unused
3208 /* 2553 */ // No operand predicates
3209 /* 2553 */ // Combiner Rule #73: combine_build_unmerge
3210 /* 2553 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner38),
3211 /* 2556 */ // Label 168: @2556
3212 /* 2556 */ GIM_Try, /*On fail goto*//*Label 169*/ GIMT_Encode4(2567), // Rule ID 203 //
3213 /* 2561 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule119Enabled),
3214 /* 2564 */ // MIs[0] dst
3215 /* 2564 */ // No operand predicates
3216 /* 2564 */ // MIs[0] unused
3217 /* 2564 */ // No operand predicates
3218 /* 2564 */ // Combiner Rule #119: combine_build_vector_of_bitcast
3219 /* 2564 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner60),
3220 /* 2567 */ // Label 169: @2567
3221 /* 2567 */ GIM_Try, /*On fail goto*//*Label 170*/ GIMT_Encode4(2578), // Rule ID 234 //
3222 /* 2572 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule123Enabled),
3223 /* 2575 */ // MIs[0] dst
3224 /* 2575 */ // No operand predicates
3225 /* 2575 */ // MIs[0] srcs
3226 /* 2575 */ // No operand predicates
3227 /* 2575 */ // Combiner Rule #123: extract_all_elts_from_build_vector
3228 /* 2575 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner64),
3229 /* 2578 */ // Label 170: @2578
3230 /* 2578 */ GIM_Try, /*On fail goto*//*Label 171*/ GIMT_Encode4(2589), // Rule ID 237 //
3231 /* 2583 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule126Enabled),
3232 /* 2586 */ // MIs[0] dst
3233 /* 2586 */ // No operand predicates
3234 /* 2586 */ // MIs[0] unused
3235 /* 2586 */ // No operand predicates
3236 /* 2586 */ // Combiner Rule #126: combine_use_vector_truncate
3237 /* 2586 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner67),
3238 /* 2589 */ // Label 171: @2589
3239 /* 2589 */ GIM_Reject,
3240 /* 2590 */ // Label 167: @2590
3241 /* 2590 */ GIM_Reject,
3242 /* 2591 */ // Label 14: @2591
3243 /* 2591 */ GIM_Try, /*On fail goto*//*Label 172*/ GIMT_Encode4(2602), // Rule ID 152 //
3244 /* 2596 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule91Enabled),
3245 /* 2599 */ // Combiner Rule #91: buildvector_identity_fold; wip_match_opcode 'G_BUILD_VECTOR_TRUNC'
3246 /* 2599 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner44),
3247 /* 2602 */ // Label 172: @2602
3248 /* 2602 */ GIM_Reject,
3249 /* 2603 */ // Label 15: @2603
3250 /* 2603 */ GIM_Try, /*On fail goto*//*Label 173*/ GIMT_Encode4(2617), // Rule ID 202 //
3251 /* 2608 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule118Enabled),
3252 /* 2611 */ GIM_CheckNumOperandsGE, /*MI*/0, /*Expected*/2,
3253 /* 2614 */ // MIs[0] dst
3254 /* 2614 */ // No operand predicates
3255 /* 2614 */ // MIs[0] srcs
3256 /* 2614 */ // No operand predicates
3257 /* 2614 */ // Combiner Rule #118: combine_concat_vector
3258 /* 2614 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner59),
3259 /* 2617 */ // Label 173: @2617
3260 /* 2617 */ GIM_Reject,
3261 /* 2618 */ // Label 16: @2618
3262 /* 2618 */ GIM_Try, /*On fail goto*//*Label 174*/ GIMT_Encode4(2639), // Rule ID 145 //
3263 /* 2623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule85Enabled),
3264 /* 2626 */ // MIs[0] dst
3265 /* 2626 */ // No operand predicates
3266 /* 2626 */ // MIs[0] t
3267 /* 2626 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3268 /* 2630 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_INTTOPTR),
3269 /* 2634 */ // MIs[1] ptr
3270 /* 2634 */ // No operand predicates
3271 /* 2634 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3272 /* 2636 */ // Combiner Rule #85: i2p_to_p2i
3273 /* 2636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner42),
3274 /* 2639 */ // Label 174: @2639
3275 /* 2639 */ GIM_Try, /*On fail goto*//*Label 175*/ GIMT_Encode4(2660), // Rule ID 183 //
3276 /* 2644 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
3277 /* 2647 */ // MIs[0] dst
3278 /* 2647 */ // No operand predicates
3279 /* 2647 */ // MIs[0] __unary_undef_to_undef_match_0.x
3280 /* 2647 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3281 /* 2651 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3282 /* 2655 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3283 /* 2657 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[3]]
3284 /* 2657 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3285 /* 2660 */ // Label 175: @2660
3286 /* 2660 */ GIM_Reject,
3287 /* 2661 */ // Label 17: @2661
3288 /* 2661 */ GIM_Try, /*On fail goto*//*Label 176*/ GIMT_Encode4(2694), // Rule ID 144 //
3289 /* 2666 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule84Enabled),
3290 /* 2669 */ // MIs[0] dst
3291 /* 2669 */ // No operand predicates
3292 /* 2669 */ // MIs[0] mid
3293 /* 2669 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3294 /* 2673 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_PTRTOINT),
3295 /* 2677 */ // MIs[1] x
3296 /* 2677 */ // No operand predicates
3297 /* 2677 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner7),
3298 /* 2681 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3299 /* 2686 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3300 /* 2688 */ // Combiner Rule #84: p2i_to_i2p
3301 /* 2688 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
3302 /* 2693 */ GIR_EraseRootFromParent_Done,
3303 /* 2694 */ // Label 176: @2694
3304 /* 2694 */ GIM_Try, /*On fail goto*//*Label 177*/ GIMT_Encode4(2715), // Rule ID 184 //
3305 /* 2699 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
3306 /* 2702 */ // MIs[0] dst
3307 /* 2702 */ // No operand predicates
3308 /* 2702 */ // MIs[0] __unary_undef_to_undef_match_0.x
3309 /* 2702 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3310 /* 2706 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3311 /* 2710 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3312 /* 2712 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[4]]
3313 /* 2712 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3314 /* 2715 */ // Label 177: @2715
3315 /* 2715 */ GIM_Reject,
3316 /* 2716 */ // Label 18: @2716
3317 /* 2716 */ GIM_Try, /*On fail goto*//*Label 178*/ GIMT_Encode4(2748), // Rule ID 157 //
3318 /* 2721 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule95Enabled),
3319 /* 2724 */ // MIs[0] dst
3320 /* 2724 */ // No operand predicates
3321 /* 2724 */ // MIs[0] src1
3322 /* 2724 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3323 /* 2728 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
3324 /* 2732 */ // MIs[1] src0
3325 /* 2732 */ // No operand predicates
3326 /* 2732 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner9),
3327 /* 2736 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3328 /* 2738 */ // Combiner Rule #95: bitcast_bitcast_to_bitcast
3329 /* 2738 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_BITCAST),
3330 /* 2741 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3331 /* 2743 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src0
3332 /* 2747 */ GIR_EraseRootFromParent_Done,
3333 /* 2748 */ // Label 178: @2748
3334 /* 2748 */ GIM_Try, /*On fail goto*//*Label 179*/ GIMT_Encode4(2769), // Rule ID 156 //
3335 /* 2753 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule94Enabled),
3336 /* 2756 */ // MIs[0] dst
3337 /* 2756 */ // No operand predicates
3338 /* 2756 */ // MIs[0] src1
3339 /* 2756 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3340 /* 2760 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BITCAST),
3341 /* 2764 */ // MIs[1] src0
3342 /* 2764 */ // No operand predicates
3343 /* 2764 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3344 /* 2766 */ // Combiner Rule #94: bitcast_bitcast_fold
3345 /* 2766 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
3346 /* 2769 */ // Label 179: @2769
3347 /* 2769 */ GIM_Try, /*On fail goto*//*Label 180*/ GIMT_Encode4(2790), // Rule ID 181 //
3348 /* 2774 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
3349 /* 2777 */ // MIs[0] dst
3350 /* 2777 */ // No operand predicates
3351 /* 2777 */ // MIs[0] __unary_undef_to_undef_match_0.x
3352 /* 2777 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3353 /* 2781 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3354 /* 2785 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3355 /* 2787 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[1]]
3356 /* 2787 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3357 /* 2790 */ // Label 180: @2790
3358 /* 2790 */ GIM_Reject,
3359 /* 2791 */ // Label 19: @2791
3360 /* 2791 */ GIM_Try, /*On fail goto*//*Label 181*/ GIMT_Encode4(2802), // Rule ID 235 //
3361 /* 2796 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule124Enabled),
3362 /* 2799 */ // MIs[0] dst
3363 /* 2799 */ // No operand predicates
3364 /* 2799 */ // MIs[0] src
3365 /* 2799 */ // No operand predicates
3366 /* 2799 */ // Combiner Rule #124: push_freeze_to_prevent_poison_from_propagating
3367 /* 2799 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner65),
3368 /* 2802 */ // Label 181: @2802
3369 /* 2802 */ GIM_Reject,
3370 /* 2803 */ // Label 20: @2803
3371 /* 2803 */ GIM_Try, /*On fail goto*//*Label 182*/ GIMT_Encode4(2824), // Rule ID 20 //
3372 /* 2808 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule20Enabled),
3373 /* 2811 */ // MIs[0] dst
3374 /* 2811 */ // No operand predicates
3375 /* 2811 */ // MIs[0] src0
3376 /* 2811 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3377 /* 2815 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3378 /* 2819 */ // MIs[1] cst
3379 /* 2819 */ // No operand predicates
3380 /* 2819 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3381 /* 2821 */ // Combiner Rule #20: constant_fold_intrinsic_trunc
3382 /* 2821 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3383 /* 2824 */ // Label 182: @2824
3384 /* 2824 */ GIM_Reject,
3385 /* 2825 */ // Label 21: @2825
3386 /* 2825 */ GIM_Try, /*On fail goto*//*Label 183*/ GIMT_Encode4(2846), // Rule ID 21 //
3387 /* 2830 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule21Enabled),
3388 /* 2833 */ // MIs[0] dst
3389 /* 2833 */ // No operand predicates
3390 /* 2833 */ // MIs[0] src0
3391 /* 2833 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3392 /* 2837 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3393 /* 2841 */ // MIs[1] cst
3394 /* 2841 */ // No operand predicates
3395 /* 2841 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3396 /* 2843 */ // Combiner Rule #21: constant_fold_intrinsic_round
3397 /* 2843 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3398 /* 2846 */ // Label 183: @2846
3399 /* 2846 */ GIM_Reject,
3400 /* 2847 */ // Label 22: @2847
3401 /* 2847 */ GIM_Try, /*On fail goto*//*Label 184*/ GIMT_Encode4(2868), // Rule ID 22 //
3402 /* 2852 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule22Enabled),
3403 /* 2855 */ // MIs[0] dst
3404 /* 2855 */ // No operand predicates
3405 /* 2855 */ // MIs[0] src0
3406 /* 2855 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3407 /* 2859 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
3408 /* 2863 */ // MIs[1] cst
3409 /* 2863 */ // No operand predicates
3410 /* 2863 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3411 /* 2865 */ // Combiner Rule #22: constant_fold_intrinsic_roundeven
3412 /* 2865 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
3413 /* 2868 */ // Label 184: @2868
3414 /* 2868 */ GIM_Reject,
3415 /* 2869 */ // Label 23: @2869
3416 /* 2869 */ GIM_Try, /*On fail goto*//*Label 185*/ GIMT_Encode4(2880), // Rule ID 31 //
3417 /* 2874 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
3418 /* 2877 */ // Combiner Rule #31: extending_loads; wip_match_opcode 'G_LOAD'
3419 /* 2877 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3420 /* 2880 */ // Label 185: @2880
3421 /* 2880 */ GIM_Try, /*On fail goto*//*Label 186*/ GIMT_Encode4(2891), // Rule ID 35 //
3422 /* 2885 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3423 /* 2888 */ // Combiner Rule #33: combine_indexed_load_store; wip_match_opcode 'G_LOAD'
3424 /* 2888 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
3425 /* 2891 */ // Label 186: @2891
3426 /* 2891 */ GIM_Reject,
3427 /* 2892 */ // Label 24: @2892
3428 /* 2892 */ GIM_Try, /*On fail goto*//*Label 187*/ GIMT_Encode4(2903), // Rule ID 32 //
3429 /* 2897 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
3430 /* 2900 */ // Combiner Rule #31: extending_loads; wip_match_opcode 'G_SEXTLOAD'
3431 /* 2900 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3432 /* 2903 */ // Label 187: @2903
3433 /* 2903 */ GIM_Try, /*On fail goto*//*Label 188*/ GIMT_Encode4(2914), // Rule ID 36 //
3434 /* 2908 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3435 /* 2911 */ // Combiner Rule #33: combine_indexed_load_store; wip_match_opcode 'G_SEXTLOAD'
3436 /* 2911 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
3437 /* 2914 */ // Label 188: @2914
3438 /* 2914 */ GIM_Reject,
3439 /* 2915 */ // Label 25: @2915
3440 /* 2915 */ GIM_Try, /*On fail goto*//*Label 189*/ GIMT_Encode4(2926), // Rule ID 33 //
3441 /* 2920 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule31Enabled),
3442 /* 2923 */ // Combiner Rule #31: extending_loads; wip_match_opcode 'G_ZEXTLOAD'
3443 /* 2923 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner8),
3444 /* 2926 */ // Label 189: @2926
3445 /* 2926 */ GIM_Try, /*On fail goto*//*Label 190*/ GIMT_Encode4(2937), // Rule ID 37 //
3446 /* 2931 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3447 /* 2934 */ // Combiner Rule #33: combine_indexed_load_store; wip_match_opcode 'G_ZEXTLOAD'
3448 /* 2934 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
3449 /* 2937 */ // Label 190: @2937
3450 /* 2937 */ GIM_Reject,
3451 /* 2938 */ // Label 26: @2938
3452 /* 2938 */ GIM_Try, /*On fail goto*//*Label 191*/ GIMT_Encode4(2949), // Rule ID 38 //
3453 /* 2943 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule33Enabled),
3454 /* 2946 */ // Combiner Rule #33: combine_indexed_load_store; wip_match_opcode 'G_STORE'
3455 /* 2946 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner10),
3456 /* 2949 */ // Label 191: @2949
3457 /* 2949 */ GIM_Try, /*On fail goto*//*Label 192*/ GIMT_Encode4(2960), // Rule ID 196 //
3458 /* 2954 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule113Enabled),
3459 /* 2957 */ // Combiner Rule #113: erase_undef_store; wip_match_opcode 'G_STORE'
3460 /* 2957 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner55),
3461 /* 2960 */ // Label 192: @2960
3462 /* 2960 */ GIM_Try, /*On fail goto*//*Label 193*/ GIMT_Encode4(2971), // Rule ID 164 //
3463 /* 2965 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule102Enabled),
3464 /* 2968 */ // MIs[0] src
3465 /* 2968 */ // No operand predicates
3466 /* 2968 */ // MIs[0] addr
3467 /* 2968 */ // No operand predicates
3468 /* 2968 */ // Combiner Rule #102: split_store_zero_128
3469 /* 2968 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner50),
3470 /* 2971 */ // Label 193: @2971
3471 /* 2971 */ GIM_Reject,
3472 /* 2972 */ // Label 27: @2972
3473 /* 2972 */ GIM_Try, /*On fail goto*//*Label 194*/ GIMT_Encode4(3002), // Rule ID 30 //
3474 /* 2977 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule30Enabled),
3475 /* 2980 */ // MIs[0] dst
3476 /* 2980 */ // No operand predicates
3477 /* 2980 */ // MIs[0] cmp
3478 /* 2980 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3479 /* 2984 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCMP),
3480 /* 2988 */ // MIs[1] p
3481 /* 2988 */ // No operand predicates
3482 /* 2988 */ // MIs[1] a
3483 /* 2988 */ // No operand predicates
3484 /* 2988 */ // MIs[1] b
3485 /* 2988 */ // No operand predicates
3486 /* 2988 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
3487 /* 2992 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3488 /* 2994 */ // Combiner Rule #30: mutate_anyext_to_zext_fcmp
3489 /* 2994 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
3490 /* 2997 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3491 /* 2999 */ GIR_RootToRootCopy, /*OpIdx*/1, // cmp
3492 /* 3001 */ GIR_EraseRootFromParent_Done,
3493 /* 3002 */ // Label 194: @3002
3494 /* 3002 */ GIM_Try, /*On fail goto*//*Label 195*/ GIMT_Encode4(3032), // Rule ID 29 //
3495 /* 3007 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule29Enabled),
3496 /* 3010 */ // MIs[0] dst
3497 /* 3010 */ // No operand predicates
3498 /* 3010 */ // MIs[0] cmp
3499 /* 3010 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3500 /* 3014 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
3501 /* 3018 */ // MIs[1] p
3502 /* 3018 */ // No operand predicates
3503 /* 3018 */ // MIs[1] a
3504 /* 3018 */ // No operand predicates
3505 /* 3018 */ // MIs[1] b
3506 /* 3018 */ // No operand predicates
3507 /* 3018 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner0),
3508 /* 3022 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3509 /* 3024 */ // Combiner Rule #29: mutate_anyext_to_zext_icmp
3510 /* 3024 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_ZEXT),
3511 /* 3027 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3512 /* 3029 */ GIR_RootToRootCopy, /*OpIdx*/1, // cmp
3513 /* 3031 */ GIR_EraseRootFromParent_Done,
3514 /* 3032 */ // Label 195: @3032
3515 /* 3032 */ GIM_Try, /*On fail goto*//*Label 196*/ GIMT_Encode4(3053), // Rule ID 8 //
3516 /* 3037 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule8Enabled),
3517 /* 3040 */ // MIs[0] root
3518 /* 3040 */ // No operand predicates
3519 /* 3040 */ // MIs[0] second
3520 /* 3040 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3521 /* 3044 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3522 /* 3048 */ // MIs[1] src
3523 /* 3048 */ // No operand predicates
3524 /* 3048 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3525 /* 3050 */ // Combiner Rule #8: anyext_of_anyext
3526 /* 3050 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3527 /* 3053 */ // Label 196: @3053
3528 /* 3053 */ GIM_Try, /*On fail goto*//*Label 197*/ GIMT_Encode4(3074), // Rule ID 10 //
3529 /* 3058 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule10Enabled),
3530 /* 3061 */ // MIs[0] root
3531 /* 3061 */ // No operand predicates
3532 /* 3061 */ // MIs[0] second
3533 /* 3061 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3534 /* 3065 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
3535 /* 3069 */ // MIs[1] src
3536 /* 3069 */ // No operand predicates
3537 /* 3069 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3538 /* 3071 */ // Combiner Rule #10: anyext_of_sext
3539 /* 3071 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3540 /* 3074 */ // Label 197: @3074
3541 /* 3074 */ GIM_Try, /*On fail goto*//*Label 198*/ GIMT_Encode4(3095), // Rule ID 9 //
3542 /* 3079 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule9Enabled),
3543 /* 3082 */ // MIs[0] root
3544 /* 3082 */ // No operand predicates
3545 /* 3082 */ // MIs[0] second
3546 /* 3082 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3547 /* 3086 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3548 /* 3090 */ // MIs[1] src
3549 /* 3090 */ // No operand predicates
3550 /* 3090 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3551 /* 3092 */ // Combiner Rule #9: anyext_of_zext
3552 /* 3092 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3553 /* 3095 */ // Label 198: @3095
3554 /* 3095 */ GIM_Try, /*On fail goto*//*Label 199*/ GIMT_Encode4(3116), // Rule ID 182 //
3555 /* 3100 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
3556 /* 3103 */ // MIs[0] dst
3557 /* 3103 */ // No operand predicates
3558 /* 3103 */ // MIs[0] __unary_undef_to_undef_match_0.x
3559 /* 3103 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3560 /* 3107 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3561 /* 3111 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3562 /* 3113 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[2]]
3563 /* 3113 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3564 /* 3116 */ // Label 199: @3116
3565 /* 3116 */ GIM_Try, /*On fail goto*//*Label 200*/ GIMT_Encode4(3127), // Rule ID 118 //
3566 /* 3121 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
3567 /* 3124 */ // MIs[0] dst
3568 /* 3124 */ // No operand predicates
3569 /* 3124 */ // MIs[0] d.src
3570 /* 3124 */ // No operand predicates
3571 /* 3124 */ // Combiner Rule #76: constant_fold_cast_op @ [d[2]]
3572 /* 3124 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
3573 /* 3127 */ // Label 200: @3127
3574 /* 3127 */ GIM_Try, /*On fail goto*//*Label 201*/ GIMT_Encode4(3138), // Rule ID 146 //
3575 /* 3132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule86Enabled),
3576 /* 3135 */ // MIs[0] dst
3577 /* 3135 */ // No operand predicates
3578 /* 3135 */ // MIs[0] src
3579 /* 3135 */ // No operand predicates
3580 /* 3135 */ // Combiner Rule #86: anyext_trunc_fold
3581 /* 3135 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner43),
3582 /* 3138 */ // Label 201: @3138
3583 /* 3138 */ GIM_Reject,
3584 /* 3139 */ // Label 28: @3139
3585 /* 3139 */ GIM_Try, /*On fail goto*//*Label 202*/ GIMT_Encode4(3175), // Rule ID 201 //
3586 /* 3144 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule117Enabled),
3587 /* 3147 */ // MIs[0] dst
3588 /* 3147 */ // No operand predicates
3589 /* 3147 */ // MIs[0] trunc_src
3590 /* 3147 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3591 /* 3151 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_OR),
3592 /* 3155 */ // MIs[1] src1
3593 /* 3155 */ // No operand predicates
3594 /* 3155 */ // MIs[1] src2
3595 /* 3155 */ // No operand predicates
3596 /* 3155 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner14),
3597 /* 3159 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3598 /* 3161 */ // Combiner Rule #117: trunc_or_to_addhn
3599 /* 3161 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(AArch64::G_ADDHN),
3600 /* 3164 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3601 /* 3166 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src1
3602 /* 3170 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/2, // src2
3603 /* 3174 */ GIR_EraseRootFromParent_Done,
3604 /* 3175 */ // Label 202: @3175
3605 /* 3175 */ GIM_Try, /*On fail goto*//*Label 203*/ GIMT_Encode4(3207), // Rule ID 242 //
3606 /* 3180 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule131Enabled),
3607 /* 3183 */ // MIs[0] dst
3608 /* 3183 */ // No operand predicates
3609 /* 3183 */ // MIs[0] min
3610 /* 3183 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3611 /* 3187 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_UMIN),
3612 /* 3191 */ // MIs[1] x
3613 /* 3191 */ // No operand predicates
3614 /* 3191 */ // MIs[1] y
3615 /* 3191 */ // No operand predicates
3616 /* 3191 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner16),
3617 /* 3195 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3618 /* 3197 */ // Combiner Rule #131: trunc_usatu
3619 /* 3197 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_TRUNC_USAT_U),
3620 /* 3200 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3621 /* 3202 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
3622 /* 3206 */ GIR_EraseRootFromParent_Done,
3623 /* 3207 */ // Label 203: @3207
3624 /* 3207 */ GIM_Try, /*On fail goto*//*Label 204*/ GIMT_Encode4(3228), // Rule ID 3 //
3625 /* 3212 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule3Enabled),
3626 /* 3215 */ // MIs[0] root
3627 /* 3215 */ // No operand predicates
3628 /* 3215 */ // MIs[0] ext
3629 /* 3215 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3630 /* 3219 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3631 /* 3223 */ // MIs[1] src
3632 /* 3223 */ // No operand predicates
3633 /* 3223 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3634 /* 3225 */ // Combiner Rule #3: truncate_of_anyext
3635 /* 3225 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3636 /* 3228 */ // Label 204: @3228
3637 /* 3228 */ GIM_Try, /*On fail goto*//*Label 205*/ GIMT_Encode4(3252), // Rule ID 27 //
3638 /* 3233 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule27Enabled),
3639 /* 3236 */ // MIs[0] root
3640 /* 3236 */ // No operand predicates
3641 /* 3236 */ // MIs[0] bv
3642 /* 3236 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3643 /* 3240 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_BUILD_VECTOR),
3644 /* 3244 */ GIM_CheckNumOperandsGE, /*MI*/1, /*Expected*/2,
3645 /* 3247 */ // MIs[1] unused
3646 /* 3247 */ // No operand predicates
3647 /* 3247 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3648 /* 3249 */ // Combiner Rule #27: buildvector_of_truncate
3649 /* 3249 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner6),
3650 /* 3252 */ // Label 205: @3252
3651 /* 3252 */ GIM_Try, /*On fail goto*//*Label 206*/ GIMT_Encode4(3273), // Rule ID 2 //
3652 /* 3257 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule2Enabled),
3653 /* 3260 */ // MIs[0] root
3654 /* 3260 */ // No operand predicates
3655 /* 3260 */ // MIs[0] ext
3656 /* 3260 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3657 /* 3264 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
3658 /* 3268 */ // MIs[1] src
3659 /* 3268 */ // No operand predicates
3660 /* 3268 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3661 /* 3270 */ // Combiner Rule #2: truncate_of_sext
3662 /* 3270 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3663 /* 3273 */ // Label 206: @3273
3664 /* 3273 */ GIM_Try, /*On fail goto*//*Label 207*/ GIMT_Encode4(3294), // Rule ID 1 //
3665 /* 3278 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule1Enabled),
3666 /* 3281 */ // MIs[0] root
3667 /* 3281 */ // No operand predicates
3668 /* 3281 */ // MIs[0] ext
3669 /* 3281 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3670 /* 3285 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3671 /* 3289 */ // MIs[1] src
3672 /* 3289 */ // No operand predicates
3673 /* 3289 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3674 /* 3291 */ // Combiner Rule #1: truncate_of_zext
3675 /* 3291 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner1),
3676 /* 3294 */ // Label 207: @3294
3677 /* 3294 */ GIM_Try, /*On fail goto*//*Label 208*/ GIMT_Encode4(3315), // Rule ID 180 //
3678 /* 3299 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
3679 /* 3302 */ // MIs[0] dst
3680 /* 3302 */ // No operand predicates
3681 /* 3302 */ // MIs[0] __unary_undef_to_undef_match_0.x
3682 /* 3302 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3683 /* 3306 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3684 /* 3310 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3685 /* 3312 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[0]]
3686 /* 3312 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
3687 /* 3315 */ // Label 208: @3315
3688 /* 3315 */ GIM_Try, /*On fail goto*//*Label 209*/ GIMT_Encode4(3336), // Rule ID 28 //
3689 /* 3320 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule28Enabled),
3690 /* 3323 */ // MIs[0] root
3691 /* 3323 */ // No operand predicates
3692 /* 3323 */ // MIs[0] int
3693 /* 3323 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3694 /* 3327 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
3695 /* 3331 */ // MIs[1] imm
3696 /* 3331 */ // No operand predicates
3697 /* 3331 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3698 /* 3333 */ // Combiner Rule #28: integer_of_truncate
3699 /* 3333 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner7),
3700 /* 3336 */ // Label 209: @3336
3701 /* 3336 */ GIM_Try, /*On fail goto*//*Label 210*/ GIMT_Encode4(3347), // Rule ID 154 //
3702 /* 3341 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule92Enabled),
3703 /* 3344 */ // MIs[0] dst
3704 /* 3344 */ // No operand predicates
3705 /* 3344 */ // MIs[0] src
3706 /* 3344 */ // No operand predicates
3707 /* 3344 */ // Combiner Rule #92: trunc_buildvector_fold
3708 /* 3344 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner45),
3709 /* 3347 */ // Label 210: @3347
3710 /* 3347 */ GIM_Try, /*On fail goto*//*Label 211*/ GIMT_Encode4(3358), // Rule ID 155 //
3711 /* 3352 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule93Enabled),
3712 /* 3355 */ // MIs[0] dst
3713 /* 3355 */ // No operand predicates
3714 /* 3355 */ // MIs[0] src
3715 /* 3355 */ // No operand predicates
3716 /* 3355 */ // Combiner Rule #93: trunc_lshr_buildvector_fold
3717 /* 3355 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner46),
3718 /* 3358 */ // Label 211: @3358
3719 /* 3358 */ GIM_Try, /*On fail goto*//*Label 212*/ GIMT_Encode4(3369), // Rule ID 240 //
3720 /* 3363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule129Enabled),
3721 /* 3366 */ // MIs[0] dst
3722 /* 3366 */ // No operand predicates
3723 /* 3366 */ // MIs[0] src
3724 /* 3366 */ // No operand predicates
3725 /* 3366 */ // Combiner Rule #129: trunc_ssats
3726 /* 3366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner69),
3727 /* 3369 */ // Label 212: @3369
3728 /* 3369 */ GIM_Try, /*On fail goto*//*Label 213*/ GIMT_Encode4(3380), // Rule ID 241 //
3729 /* 3374 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule130Enabled),
3730 /* 3377 */ // MIs[0] dst
3731 /* 3377 */ // No operand predicates
3732 /* 3377 */ // MIs[0] src
3733 /* 3377 */ // No operand predicates
3734 /* 3377 */ // Combiner Rule #130: trunc_ssatu
3735 /* 3377 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner70),
3736 /* 3380 */ // Label 213: @3380
3737 /* 3380 */ GIM_Reject,
3738 /* 3381 */ // Label 29: @3381
3739 /* 3381 */ GIM_Try, /*On fail goto*//*Label 214*/ GIMT_Encode4(3413), // Rule ID 243 //
3740 /* 3386 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule132Enabled),
3741 /* 3389 */ // MIs[0] dst
3742 /* 3389 */ // No operand predicates
3743 /* 3389 */ // MIs[0] src
3744 /* 3389 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3745 /* 3393 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPTOUI),
3746 /* 3397 */ // MIs[1] x
3747 /* 3397 */ // No operand predicates
3748 /* 3397 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner17),
3749 /* 3401 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3750 /* 3403 */ // Combiner Rule #132: truncusatu_to_fptouisat
3751 /* 3403 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FPTOUI_SAT),
3752 /* 3406 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3753 /* 3408 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // x
3754 /* 3412 */ GIR_EraseRootFromParent_Done,
3755 /* 3413 */ // Label 214: @3413
3756 /* 3413 */ GIM_Reject,
3757 /* 3414 */ // Label 30: @3414
3758 /* 3414 */ GIM_Try, /*On fail goto*//*Label 215*/ GIMT_Encode4(3435), // Rule ID 7 //
3759 /* 3419 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule7Enabled),
3760 /* 3422 */ // MIs[0] root
3761 /* 3422 */ // No operand predicates
3762 /* 3422 */ // MIs[0] second
3763 /* 3422 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3764 /* 3426 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3765 /* 3430 */ // MIs[1] src
3766 /* 3430 */ // No operand predicates
3767 /* 3430 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3768 /* 3432 */ // Combiner Rule #7: sext_of_anyext
3769 /* 3432 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3770 /* 3435 */ // Label 215: @3435
3771 /* 3435 */ GIM_Try, /*On fail goto*//*Label 216*/ GIMT_Encode4(3456), // Rule ID 6 //
3772 /* 3440 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule6Enabled),
3773 /* 3443 */ // MIs[0] root
3774 /* 3443 */ // No operand predicates
3775 /* 3443 */ // MIs[0] second
3776 /* 3443 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3777 /* 3447 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT),
3778 /* 3451 */ // MIs[1] src
3779 /* 3451 */ // No operand predicates
3780 /* 3451 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3781 /* 3453 */ // Combiner Rule #6: sext_of_sext
3782 /* 3453 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3783 /* 3456 */ // Label 216: @3456
3784 /* 3456 */ GIM_Try, /*On fail goto*//*Label 217*/ GIMT_Encode4(3467), // Rule ID 117 //
3785 /* 3461 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
3786 /* 3464 */ // MIs[0] dst
3787 /* 3464 */ // No operand predicates
3788 /* 3464 */ // MIs[0] d.src
3789 /* 3464 */ // No operand predicates
3790 /* 3464 */ // Combiner Rule #76: constant_fold_cast_op @ [d[1]]
3791 /* 3464 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
3792 /* 3467 */ // Label 217: @3467
3793 /* 3467 */ GIM_Reject,
3794 /* 3468 */ // Label 31: @3468
3795 /* 3468 */ GIM_Try, /*On fail goto*//*Label 218*/ GIMT_Encode4(3489), // Rule ID 11 //
3796 /* 3473 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule11Enabled),
3797 /* 3476 */ // MIs[0] dst
3798 /* 3476 */ // No operand predicates
3799 /* 3476 */ // MIs[0] x
3800 /* 3476 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3801 /* 3480 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_SEXT_INREG),
3802 /* 3484 */ // MIs[1] src
3803 /* 3484 */ // No operand predicates
3804 /* 3484 */ // MIs[1] a
3805 /* 3484 */ // No operand predicates
3806 /* 3484 */ // MIs[0] b
3807 /* 3484 */ // No operand predicates
3808 /* 3484 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3809 /* 3486 */ // Combiner Rule #11: sext_inreg_of_sext_inreg
3810 /* 3486 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner3),
3811 /* 3489 */ // Label 218: @3489
3812 /* 3489 */ GIM_Try, /*On fail goto*//*Label 219*/ GIMT_Encode4(3529), // Rule ID 51 //
3813 /* 3494 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule44Enabled),
3814 /* 3497 */ // MIs[0] dst
3815 /* 3497 */ // No operand predicates
3816 /* 3497 */ // MIs[0] tmp4
3817 /* 3497 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3818 /* 3501 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3819 /* 3505 */ // MIs[1] tmp2
3820 /* 3505 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
3821 /* 3509 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
3822 /* 3513 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
3823 /* 3516 */ // MIs[2] tmp3
3824 /* 3516 */ // No operand predicates
3825 /* 3516 */ // MIs[2] tmp1
3826 /* 3516 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
3827 /* 3520 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3828 /* 3524 */ // MIs[3] src
3829 /* 3524 */ // No operand predicates
3830 /* 3524 */ // MIs[0] amt
3831 /* 3524 */ // No operand predicates
3832 /* 3524 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
3833 /* 3526 */ // Combiner Rule #44: redundant_aext_unmerge_sext_inreg
3834 /* 3526 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
3835 /* 3529 */ // Label 219: @3529
3836 /* 3529 */ GIM_Try, /*On fail goto*//*Label 220*/ GIMT_Encode4(3561), // Rule ID 50 //
3837 /* 3534 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule43Enabled),
3838 /* 3537 */ // MIs[0] dst
3839 /* 3537 */ // No operand predicates
3840 /* 3537 */ // MIs[0] tmp
3841 /* 3537 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3842 /* 3541 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3843 /* 3545 */ // MIs[1] src
3844 /* 3545 */ // No operand predicates
3845 /* 3545 */ // MIs[0] amt
3846 /* 3545 */ // No operand predicates
3847 /* 3545 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
3848 /* 3549 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3849 /* 3551 */ // Combiner Rule #43: redundant_aext_sext_inreg
3850 /* 3551 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
3851 /* 3554 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3852 /* 3556 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
3853 /* 3560 */ GIR_EraseRootFromParent_Done,
3854 /* 3561 */ // Label 220: @3561
3855 /* 3561 */ GIM_Try, /*On fail goto*//*Label 221*/ GIMT_Encode4(3601), // Rule ID 52 //
3856 /* 3566 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule45Enabled),
3857 /* 3569 */ // MIs[0] dst
3858 /* 3569 */ // No operand predicates
3859 /* 3569 */ // MIs[0] tmp4
3860 /* 3569 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3861 /* 3573 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3862 /* 3577 */ // MIs[1] tmp2
3863 /* 3577 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
3864 /* 3581 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_UNMERGE_VALUES),
3865 /* 3585 */ GIM_CheckNumOperands, /*MI*/2, /*Expected*/3,
3866 /* 3588 */ // MIs[2] tmp3
3867 /* 3588 */ // No operand predicates
3868 /* 3588 */ // MIs[2] tmp1
3869 /* 3588 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/3, /*MI*/2, /*OpIdx*/2, // MIs[3]
3870 /* 3592 */ GIM_CheckOpcode, /*MI*/3, GIMT_Encode2(TargetOpcode::G_ZEXT),
3871 /* 3596 */ // MIs[3] src
3872 /* 3596 */ // No operand predicates
3873 /* 3596 */ // MIs[0] amt
3874 /* 3596 */ // No operand predicates
3875 /* 3596 */ GIM_CheckIsSafeToFold, /*NumInsns*/3,
3876 /* 3598 */ // Combiner Rule #45: redundant_zext_unmerge_sext_inreg
3877 /* 3598 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner17),
3878 /* 3601 */ // Label 221: @3601
3879 /* 3601 */ GIM_Try, /*On fail goto*//*Label 222*/ GIMT_Encode4(3633), // Rule ID 49 //
3880 /* 3606 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule42Enabled),
3881 /* 3609 */ // MIs[0] dst
3882 /* 3609 */ // No operand predicates
3883 /* 3609 */ // MIs[0] tmp
3884 /* 3609 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3885 /* 3613 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3886 /* 3617 */ // MIs[1] src
3887 /* 3617 */ // No operand predicates
3888 /* 3617 */ // MIs[0] amt
3889 /* 3617 */ // No operand predicates
3890 /* 3617 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner3),
3891 /* 3621 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3892 /* 3623 */ // Combiner Rule #42: redundant_zext_sext_inreg
3893 /* 3623 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SEXT),
3894 /* 3626 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
3895 /* 3628 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
3896 /* 3632 */ GIR_EraseRootFromParent_Done,
3897 /* 3633 */ // Label 222: @3633
3898 /* 3633 */ GIM_Try, /*On fail goto*//*Label 223*/ GIMT_Encode4(3656), // Rule ID 39 //
3899 /* 3638 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule34Enabled),
3900 /* 3641 */ // MIs[0] dst
3901 /* 3641 */ // No operand predicates
3902 /* 3641 */ // MIs[0] src
3903 /* 3641 */ // No operand predicates
3904 /* 3641 */ // MIs[0] sz
3905 /* 3641 */ // No operand predicates
3906 /* 3641 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner1),
3907 /* 3645 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3908 /* 3650 */ // Combiner Rule #34: sext_trunc_sextload
3909 /* 3650 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3910 /* 3655 */ GIR_EraseRootFromParent_Done,
3911 /* 3656 */ // Label 223: @3656
3912 /* 3656 */ GIM_Try, /*On fail goto*//*Label 224*/ GIMT_Encode4(3679), // Rule ID 48 //
3913 /* 3661 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule41Enabled),
3914 /* 3664 */ // MIs[0] dst
3915 /* 3664 */ // No operand predicates
3916 /* 3664 */ // MIs[0] src
3917 /* 3664 */ // No operand predicates
3918 /* 3664 */ // MIs[0] sz
3919 /* 3664 */ // No operand predicates
3920 /* 3664 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner2),
3921 /* 3668 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3922 /* 3673 */ // Combiner Rule #41: redundant_sext_inreg
3923 /* 3673 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
3924 /* 3678 */ GIR_EraseRootFromParent_Done,
3925 /* 3679 */ // Label 224: @3679
3926 /* 3679 */ GIM_Try, /*On fail goto*//*Label 225*/ GIMT_Encode4(3690), // Rule ID 53 //
3927 /* 3684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule46Enabled),
3928 /* 3687 */ // MIs[0] dst
3929 /* 3687 */ // No operand predicates
3930 /* 3687 */ // MIs[0] src
3931 /* 3687 */ // No operand predicates
3932 /* 3687 */ // MIs[0] sz
3933 /* 3687 */ // No operand predicates
3934 /* 3687 */ // Combiner Rule #46: bitfield_extract_from_sext_inreg
3935 /* 3687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner18),
3936 /* 3690 */ // Label 225: @3690
3937 /* 3690 */ GIM_Reject,
3938 /* 3691 */ // Label 32: @3691
3939 /* 3691 */ GIM_Try, /*On fail goto*//*Label 226*/ GIMT_Encode4(3712), // Rule ID 5 //
3940 /* 3696 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule5Enabled),
3941 /* 3699 */ // MIs[0] root
3942 /* 3699 */ // No operand predicates
3943 /* 3699 */ // MIs[0] second
3944 /* 3699 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3945 /* 3703 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ANYEXT),
3946 /* 3707 */ // MIs[1] src
3947 /* 3707 */ // No operand predicates
3948 /* 3707 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3949 /* 3709 */ // Combiner Rule #5: zext_of_anyext
3950 /* 3709 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3951 /* 3712 */ // Label 226: @3712
3952 /* 3712 */ GIM_Try, /*On fail goto*//*Label 227*/ GIMT_Encode4(3733), // Rule ID 4 //
3953 /* 3717 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule4Enabled),
3954 /* 3720 */ // MIs[0] root
3955 /* 3720 */ // No operand predicates
3956 /* 3720 */ // MIs[0] second
3957 /* 3720 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3958 /* 3724 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ZEXT),
3959 /* 3728 */ // MIs[1] src
3960 /* 3728 */ // No operand predicates
3961 /* 3728 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3962 /* 3730 */ // Combiner Rule #4: zext_of_zext
3963 /* 3730 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner2),
3964 /* 3733 */ // Label 227: @3733
3965 /* 3733 */ GIM_Try, /*On fail goto*//*Label 228*/ GIMT_Encode4(3744), // Rule ID 116 //
3966 /* 3738 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule76Enabled),
3967 /* 3741 */ // MIs[0] dst
3968 /* 3741 */ // No operand predicates
3969 /* 3741 */ // MIs[0] d.src
3970 /* 3741 */ // No operand predicates
3971 /* 3741 */ // Combiner Rule #76: constant_fold_cast_op @ [d[0]]
3972 /* 3741 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner41),
3973 /* 3744 */ // Label 228: @3744
3974 /* 3744 */ GIM_Reject,
3975 /* 3745 */ // Label 33: @3745
3976 /* 3745 */ GIM_Try, /*On fail goto*//*Label 229*/ GIMT_Encode4(3756), // Rule ID 93 //
3977 /* 3750 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
3978 /* 3753 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_SHL'
3979 /* 3753 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
3980 /* 3756 */ // Label 229: @3756
3981 /* 3756 */ GIM_Try, /*On fail goto*//*Label 230*/ GIMT_Encode4(3777), // Rule ID 173 //
3982 /* 3761 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule106Enabled),
3983 /* 3764 */ // MIs[0] dst
3984 /* 3764 */ // No operand predicates
3985 /* 3764 */ // MIs[0] __binop_left_undef_to_zero_match_0.x
3986 /* 3764 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
3987 /* 3768 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
3988 /* 3772 */ // MIs[0] __binop_left_undef_to_zero_match_0.y
3989 /* 3772 */ // No operand predicates
3990 /* 3772 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
3991 /* 3774 */ // Combiner Rule #106: binop_left_undef_to_zero @ [__binop_left_undef_to_zero_match_0[0]]
3992 /* 3774 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
3993 /* 3777 */ // Label 230: @3777
3994 /* 3777 */ GIM_Try, /*On fail goto*//*Label 231*/ GIMT_Encode4(3817), // Rule ID 135 //
3995 /* 3782 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
3996 /* 3785 */ // MIs[0] dst
3997 /* 3785 */ // No operand predicates
3998 /* 3785 */ // MIs[0] zero
3999 /* 3785 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4000 /* 3789 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4001 /* 3793 */ // MIs[1] Operand 1
4002 /* 3793 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4003 /* 3804 */ // MIs[0] rhs
4004 /* 3804 */ // No operand predicates
4005 /* 3804 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4006 /* 3809 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4007 /* 3811 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[0]]
4008 /* 3811 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4009 /* 3816 */ GIR_EraseRootFromParent_Done,
4010 /* 3817 */ // Label 231: @3817
4011 /* 3817 */ GIM_Try, /*On fail goto*//*Label 232*/ GIMT_Encode4(3838), // Rule ID 176 //
4012 /* 3822 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4013 /* 3825 */ // MIs[0] dst
4014 /* 3825 */ // No operand predicates
4015 /* 3825 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
4016 /* 3825 */ // No operand predicates
4017 /* 3825 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
4018 /* 3825 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4019 /* 3829 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4020 /* 3833 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4021 /* 3835 */ // Combiner Rule #107: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[0]]
4022 /* 3835 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4023 /* 3838 */ // Label 232: @3838
4024 /* 3838 */ GIM_Try, /*On fail goto*//*Label 233*/ GIMT_Encode4(3861), // Rule ID 125 //
4025 /* 3843 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
4026 /* 3846 */ // MIs[0] dst
4027 /* 3846 */ // No operand predicates
4028 /* 3846 */ // MIs[0] lhs
4029 /* 3846 */ // No operand predicates
4030 /* 3846 */ // MIs[0] Operand 2
4031 /* 3846 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4032 /* 3850 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4033 /* 3855 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[4]]
4034 /* 3855 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4035 /* 3860 */ GIR_EraseRootFromParent_Done,
4036 /* 3861 */ // Label 233: @3861
4037 /* 3861 */ GIM_Reject,
4038 /* 3862 */ // Label 34: @3862
4039 /* 3862 */ GIM_Try, /*On fail goto*//*Label 234*/ GIMT_Encode4(3873), // Rule ID 90 //
4040 /* 3867 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4041 /* 3870 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_LSHR'
4042 /* 3870 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4043 /* 3873 */ // Label 234: @3873
4044 /* 3873 */ GIM_Try, /*On fail goto*//*Label 235*/ GIMT_Encode4(3902), // Rule ID 244 //
4045 /* 3878 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule133Enabled),
4046 /* 3881 */ // MIs[0] dst
4047 /* 3881 */ // No operand predicates
4048 /* 3881 */ // MIs[0] d2
4049 /* 3881 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4050 /* 3885 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_TRUNC),
4051 /* 3889 */ // MIs[1] d1
4052 /* 3889 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/2, /*MI*/1, /*OpIdx*/1, // MIs[2]
4053 /* 3893 */ GIM_CheckOpcode, /*MI*/2, GIMT_Encode2(TargetOpcode::G_LSHR),
4054 /* 3897 */ // MIs[2] x
4055 /* 3897 */ // No operand predicates
4056 /* 3897 */ // MIs[2] y
4057 /* 3897 */ // No operand predicates
4058 /* 3897 */ // MIs[0] z
4059 /* 3897 */ // No operand predicates
4060 /* 3897 */ GIM_CheckIsSafeToFold, /*NumInsns*/2,
4061 /* 3899 */ // Combiner Rule #133: lshr_of_trunc_of_lshr
4062 /* 3899 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner71),
4063 /* 3902 */ // Label 235: @3902
4064 /* 3902 */ GIM_Try, /*On fail goto*//*Label 236*/ GIMT_Encode4(3942), // Rule ID 136 //
4065 /* 3907 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
4066 /* 3910 */ // MIs[0] dst
4067 /* 3910 */ // No operand predicates
4068 /* 3910 */ // MIs[0] zero
4069 /* 3910 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4070 /* 3914 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4071 /* 3918 */ // MIs[1] Operand 1
4072 /* 3918 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4073 /* 3929 */ // MIs[0] rhs
4074 /* 3929 */ // No operand predicates
4075 /* 3929 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4076 /* 3934 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4077 /* 3936 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[1]]
4078 /* 3936 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4079 /* 3941 */ GIR_EraseRootFromParent_Done,
4080 /* 3942 */ // Label 236: @3942
4081 /* 3942 */ GIM_Try, /*On fail goto*//*Label 237*/ GIMT_Encode4(3963), // Rule ID 178 //
4082 /* 3947 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4083 /* 3950 */ // MIs[0] dst
4084 /* 3950 */ // No operand predicates
4085 /* 3950 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
4086 /* 3950 */ // No operand predicates
4087 /* 3950 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
4088 /* 3950 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4089 /* 3954 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4090 /* 3958 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4091 /* 3960 */ // Combiner Rule #107: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[2]]
4092 /* 3960 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4093 /* 3963 */ // Label 237: @3963
4094 /* 3963 */ GIM_Try, /*On fail goto*//*Label 238*/ GIMT_Encode4(3986), // Rule ID 127 //
4095 /* 3968 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
4096 /* 3971 */ // MIs[0] dst
4097 /* 3971 */ // No operand predicates
4098 /* 3971 */ // MIs[0] lhs
4099 /* 3971 */ // No operand predicates
4100 /* 3971 */ // MIs[0] Operand 2
4101 /* 3971 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4102 /* 3975 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4103 /* 3980 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[6]]
4104 /* 3980 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4105 /* 3985 */ GIR_EraseRootFromParent_Done,
4106 /* 3986 */ // Label 238: @3986
4107 /* 3986 */ GIM_Try, /*On fail goto*//*Label 239*/ GIMT_Encode4(3997), // Rule ID 56 //
4108 /* 3991 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
4109 /* 3994 */ // MIs[0] dst
4110 /* 3994 */ // No operand predicates
4111 /* 3994 */ // MIs[0] root.src
4112 /* 3994 */ // No operand predicates
4113 /* 3994 */ // MIs[0] root.amt
4114 /* 3994 */ // No operand predicates
4115 /* 3994 */ // Combiner Rule #48: bitfield_extract_from_shr @ [root[1]]
4116 /* 3994 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
4117 /* 3997 */ // Label 239: @3997
4118 /* 3997 */ GIM_Try, /*On fail goto*//*Label 240*/ GIMT_Encode4(4008), // Rule ID 58 //
4119 /* 4002 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
4120 /* 4005 */ // MIs[0] dst
4121 /* 4005 */ // No operand predicates
4122 /* 4005 */ // MIs[0] root.src
4123 /* 4005 */ // No operand predicates
4124 /* 4005 */ // MIs[0] root.amt
4125 /* 4005 */ // No operand predicates
4126 /* 4005 */ // Combiner Rule #49: bitfield_extract_from_shr_and @ [root[1]]
4127 /* 4005 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
4128 /* 4008 */ // Label 240: @4008
4129 /* 4008 */ GIM_Reject,
4130 /* 4009 */ // Label 35: @4009
4131 /* 4009 */ GIM_Try, /*On fail goto*//*Label 241*/ GIMT_Encode4(4020), // Rule ID 89 //
4132 /* 4014 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
4133 /* 4017 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_ASHR'
4134 /* 4017 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
4135 /* 4020 */ // Label 241: @4020
4136 /* 4020 */ GIM_Try, /*On fail goto*//*Label 242*/ GIMT_Encode4(4060), // Rule ID 137 //
4137 /* 4025 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule82Enabled),
4138 /* 4028 */ // MIs[0] dst
4139 /* 4028 */ // No operand predicates
4140 /* 4028 */ // MIs[0] zero
4141 /* 4028 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4142 /* 4032 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4143 /* 4036 */ // MIs[1] Operand 1
4144 /* 4036 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4145 /* 4047 */ // MIs[0] rhs
4146 /* 4047 */ // No operand predicates
4147 /* 4047 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4148 /* 4052 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4149 /* 4054 */ // Combiner Rule #82: binop_left_to_zero @ [__binop_left_to_zero_match_0[2]]
4150 /* 4054 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4151 /* 4059 */ GIR_EraseRootFromParent_Done,
4152 /* 4060 */ // Label 242: @4060
4153 /* 4060 */ GIM_Try, /*On fail goto*//*Label 243*/ GIMT_Encode4(4081), // Rule ID 177 //
4154 /* 4065 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule107Enabled),
4155 /* 4068 */ // MIs[0] dst
4156 /* 4068 */ // No operand predicates
4157 /* 4068 */ // MIs[0] __binop_right_undef_to_undef_match_0.x
4158 /* 4068 */ // No operand predicates
4159 /* 4068 */ // MIs[0] __binop_right_undef_to_undef_match_0.y
4160 /* 4068 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/2, // MIs[1]
4161 /* 4072 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4162 /* 4076 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4163 /* 4078 */ // Combiner Rule #107: binop_right_undef_to_undef @ [__binop_right_undef_to_undef_match_0[1]]
4164 /* 4078 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4165 /* 4081 */ // Label 243: @4081
4166 /* 4081 */ GIM_Try, /*On fail goto*//*Label 244*/ GIMT_Encode4(4104), // Rule ID 126 //
4167 /* 4086 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
4168 /* 4089 */ // MIs[0] dst
4169 /* 4089 */ // No operand predicates
4170 /* 4089 */ // MIs[0] lhs
4171 /* 4089 */ // No operand predicates
4172 /* 4089 */ // MIs[0] Operand 2
4173 /* 4089 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4174 /* 4093 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4175 /* 4098 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[5]]
4176 /* 4098 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4177 /* 4103 */ GIR_EraseRootFromParent_Done,
4178 /* 4104 */ // Label 244: @4104
4179 /* 4104 */ GIM_Try, /*On fail goto*//*Label 245*/ GIMT_Encode4(4115), // Rule ID 55 //
4180 /* 4109 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule48Enabled),
4181 /* 4112 */ // MIs[0] dst
4182 /* 4112 */ // No operand predicates
4183 /* 4112 */ // MIs[0] root.src
4184 /* 4112 */ // No operand predicates
4185 /* 4112 */ // MIs[0] root.amt
4186 /* 4112 */ // No operand predicates
4187 /* 4112 */ // Combiner Rule #48: bitfield_extract_from_shr @ [root[0]]
4188 /* 4112 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner20),
4189 /* 4115 */ // Label 245: @4115
4190 /* 4115 */ GIM_Try, /*On fail goto*//*Label 246*/ GIMT_Encode4(4126), // Rule ID 57 //
4191 /* 4120 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule49Enabled),
4192 /* 4123 */ // MIs[0] dst
4193 /* 4123 */ // No operand predicates
4194 /* 4123 */ // MIs[0] root.src
4195 /* 4123 */ // No operand predicates
4196 /* 4123 */ // MIs[0] root.amt
4197 /* 4123 */ // No operand predicates
4198 /* 4123 */ // Combiner Rule #49: bitfield_extract_from_shr_and @ [root[0]]
4199 /* 4123 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner21),
4200 /* 4126 */ // Label 246: @4126
4201 /* 4126 */ GIM_Reject,
4202 /* 4127 */ // Label 36: @4127
4203 /* 4127 */ GIM_Try, /*On fail goto*//*Label 247*/ GIMT_Encode4(4150), // Rule ID 130 //
4204 /* 4132 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
4205 /* 4135 */ // MIs[0] dst
4206 /* 4135 */ // No operand predicates
4207 /* 4135 */ // MIs[0] lhs
4208 /* 4135 */ // No operand predicates
4209 /* 4135 */ // MIs[0] Operand 2
4210 /* 4135 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4211 /* 4139 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4212 /* 4144 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[9]]
4213 /* 4144 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4214 /* 4149 */ GIR_EraseRootFromParent_Done,
4215 /* 4150 */ // Label 247: @4150
4216 /* 4150 */ GIM_Try, /*On fail goto*//*Label 248*/ GIMT_Encode4(4161), // Rule ID 59 //
4217 /* 4155 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
4218 /* 4158 */ // MIs[0] dst
4219 /* 4158 */ // No operand predicates
4220 /* 4158 */ // MIs[0] root.x
4221 /* 4158 */ // No operand predicates
4222 /* 4158 */ // MIs[0] root.amt
4223 /* 4158 */ // No operand predicates
4224 /* 4158 */ // Combiner Rule #50: rotate_out_of_range @ [root[0]]
4225 /* 4158 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
4226 /* 4161 */ // Label 248: @4161
4227 /* 4161 */ GIM_Reject,
4228 /* 4162 */ // Label 37: @4162
4229 /* 4162 */ GIM_Try, /*On fail goto*//*Label 249*/ GIMT_Encode4(4185), // Rule ID 129 //
4230 /* 4167 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
4231 /* 4170 */ // MIs[0] dst
4232 /* 4170 */ // No operand predicates
4233 /* 4170 */ // MIs[0] lhs
4234 /* 4170 */ // No operand predicates
4235 /* 4170 */ // MIs[0] Operand 2
4236 /* 4170 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4237 /* 4174 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4238 /* 4179 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[8]]
4239 /* 4179 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4240 /* 4184 */ GIR_EraseRootFromParent_Done,
4241 /* 4185 */ // Label 249: @4185
4242 /* 4185 */ GIM_Try, /*On fail goto*//*Label 250*/ GIMT_Encode4(4196), // Rule ID 60 //
4243 /* 4190 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule50Enabled),
4244 /* 4193 */ // MIs[0] dst
4245 /* 4193 */ // No operand predicates
4246 /* 4193 */ // MIs[0] root.x
4247 /* 4193 */ // No operand predicates
4248 /* 4193 */ // MIs[0] root.amt
4249 /* 4193 */ // No operand predicates
4250 /* 4193 */ // Combiner Rule #50: rotate_out_of_range @ [root[1]]
4251 /* 4193 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner22),
4252 /* 4196 */ // Label 250: @4196
4253 /* 4196 */ GIM_Reject,
4254 /* 4197 */ // Label 38: @4197
4255 /* 4197 */ GIM_Try, /*On fail goto*//*Label 251*/ GIMT_Encode4(4208), // Rule ID 61 //
4256 /* 4202 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule51Enabled),
4257 /* 4205 */ // MIs[0] dst
4258 /* 4205 */ // No operand predicates
4259 /* 4205 */ // MIs[0] pred
4260 /* 4205 */ // No operand predicates
4261 /* 4205 */ // MIs[0] src1
4262 /* 4205 */ // No operand predicates
4263 /* 4205 */ // MIs[0] src2
4264 /* 4205 */ // No operand predicates
4265 /* 4205 */ // Combiner Rule #51: icmp_to_true_false_known_bits
4266 /* 4205 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner23),
4267 /* 4208 */ // Label 251: @4208
4268 /* 4208 */ GIM_Reject,
4269 /* 4209 */ // Label 39: @4209
4270 /* 4209 */ GIM_Try, /*On fail goto*//*Label 252*/ GIMT_Encode4(4289), // Rule ID 72 //
4271 /* 4214 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule60Enabled),
4272 /* 4217 */ // MIs[0] dst
4273 /* 4217 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4274 /* 4221 */ // MIs[0] c
4275 /* 4221 */ // No operand predicates
4276 /* 4221 */ // MIs[0] Operand 2
4277 /* 4221 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
4278 /* 4225 */ // MIs[0] x
4279 /* 4225 */ // No operand predicates
4280 /* 4225 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
4281 /* 4229 */ GIR_MakeTempReg, /*TempRegID*/2, /*TypeID*/255,
4282 /* 4232 */ GIR_MakeTempReg, /*TempRegID*/1, /*TypeID*/255,
4283 /* 4235 */ GIR_BuildConstant, /*TempRegID*/1, /*Val*/GIMT_Encode8(18446744073709551615u),
4284 /* 4245 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4285 /* 4248 */ // Combiner Rule #60: select_zero_true
4286 /* 4248 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_XOR),
4287 /* 4251 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4288 /* 4256 */ GIR_RootToRootCopy, /*OpIdx*/1, // c
4289 /* 4258 */ GIR_AddSimpleTempRegister, /*InsnID*/0, /*TempRegID*/1,
4290 /* 4261 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
4291 /* 4265 */ GIR_AddTempRegister, /*InsnID*/1, /*TempRegID*/2, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4292 /* 4270 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/3, // x
4293 /* 4274 */ GIR_BuildMI, /*InsnID*/2, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
4294 /* 4278 */ GIR_Copy, /*NewInsnID*/2, /*OldInsnID*/0, /*OpIdx*/0, // dst
4295 /* 4282 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/0,
4296 /* 4285 */ GIR_AddSimpleTempRegister, /*InsnID*/2, /*TempRegID*/2,
4297 /* 4288 */ GIR_EraseRootFromParent_Done,
4298 /* 4289 */ // Label 252: @4289
4299 /* 4289 */ GIM_Try, /*On fail goto*//*Label 253*/ GIMT_Encode4(4338), // Rule ID 73 //
4300 /* 4294 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule61Enabled),
4301 /* 4297 */ // MIs[0] dst
4302 /* 4297 */ GIM_RecordRegType, /*MI*/0, /*Op*/0, /*TempTypeIdx*/255,
4303 /* 4301 */ // MIs[0] c
4304 /* 4301 */ // No operand predicates
4305 /* 4301 */ // MIs[0] x
4306 /* 4301 */ // No operand predicates
4307 /* 4301 */ // MIs[0] Operand 3
4308 /* 4301 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/3, 0,
4309 /* 4305 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner4),
4310 /* 4309 */ GIR_MakeTempReg, /*TempRegID*/0, /*TypeID*/255,
4311 /* 4312 */ // Combiner Rule #61: select_zero_false
4312 /* 4312 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FREEZE),
4313 /* 4315 */ GIR_AddTempRegister, /*InsnID*/0, /*TempRegID*/0, /*TempRegFlags*/GIMT_Encode2(static_cast<uint16_t>(RegState::Define)),
4314 /* 4320 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
4315 /* 4322 */ GIR_BuildMI, /*InsnID*/1, /*Opcode*/GIMT_Encode2(TargetOpcode::G_AND),
4316 /* 4326 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/0, // dst
4317 /* 4330 */ GIR_Copy, /*NewInsnID*/1, /*OldInsnID*/0, /*OpIdx*/1, // c
4318 /* 4334 */ GIR_AddSimpleTempRegister, /*InsnID*/1, /*TempRegID*/0,
4319 /* 4337 */ GIR_EraseRootFromParent_Done,
4320 /* 4338 */ // Label 253: @4338
4321 /* 4338 */ GIM_Try, /*On fail goto*//*Label 254*/ GIMT_Encode4(4359), // Rule ID 70 //
4322 /* 4343 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule58Enabled),
4323 /* 4346 */ // MIs[0] root
4324 /* 4346 */ // No operand predicates
4325 /* 4346 */ // MIs[0] tst
4326 /* 4346 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4327 /* 4350 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_ICMP),
4328 /* 4354 */ // MIs[1] tst1
4329 /* 4354 */ // No operand predicates
4330 /* 4354 */ // MIs[1] a
4331 /* 4354 */ // No operand predicates
4332 /* 4354 */ // MIs[1] b
4333 /* 4354 */ // No operand predicates
4334 /* 4354 */ // MIs[0] x
4335 /* 4354 */ // No operand predicates
4336 /* 4354 */ // MIs[0] y
4337 /* 4354 */ // No operand predicates
4338 /* 4354 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4339 /* 4356 */ // Combiner Rule #58: select_to_iminmax
4340 /* 4356 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner27),
4341 /* 4359 */ // Label 254: @4359
4342 /* 4359 */ GIM_Try, /*On fail goto*//*Label 255*/ GIMT_Encode4(4395), // Rule ID 74 //
4343 /* 4364 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule62Enabled),
4344 /* 4367 */ // MIs[0] dst
4345 /* 4367 */ // No operand predicates
4346 /* 4367 */ // MIs[0] c
4347 /* 4367 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4348 /* 4371 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_XOR),
4349 /* 4375 */ // MIs[1] src
4350 /* 4375 */ // No operand predicates
4351 /* 4375 */ // MIs[1] Operand 2
4352 /* 4375 */ GIM_CheckConstantInt8, /*MI*/1, /*Op*/2, 255,
4353 /* 4379 */ // MIs[0] x
4354 /* 4379 */ // No operand predicates
4355 /* 4379 */ // MIs[0] y
4356 /* 4379 */ // No operand predicates
4357 /* 4379 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4358 /* 4381 */ // Combiner Rule #62: select_not
4359 /* 4381 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_SELECT),
4360 /* 4384 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4361 /* 4386 */ GIR_Copy, /*NewInsnID*/0, /*OldInsnID*/1, /*OpIdx*/1, // src
4362 /* 4390 */ GIR_RootToRootCopy, /*OpIdx*/3, // y
4363 /* 4392 */ GIR_RootToRootCopy, /*OpIdx*/2, // x
4364 /* 4394 */ GIR_EraseRootFromParent_Done,
4365 /* 4395 */ // Label 255: @4395
4366 /* 4395 */ GIM_Try, /*On fail goto*//*Label 256*/ GIMT_Encode4(4424), // Rule ID 66 //
4367 /* 4400 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule54Enabled),
4368 /* 4403 */ // MIs[0] dst
4369 /* 4403 */ // No operand predicates
4370 /* 4403 */ // MIs[0] undef
4371 /* 4403 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4372 /* 4407 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4373 /* 4411 */ // MIs[0] x
4374 /* 4411 */ // No operand predicates
4375 /* 4411 */ // MIs[0] y
4376 /* 4411 */ // No operand predicates
4377 /* 4411 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4378 /* 4416 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4379 /* 4418 */ // Combiner Rule #54: select_undef_cmp
4380 /* 4418 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4381 /* 4423 */ GIR_EraseRootFromParent_Done,
4382 /* 4424 */ // Label 256: @4424
4383 /* 4424 */ GIM_Try, /*On fail goto*//*Label 257*/ GIMT_Encode4(4464), // Rule ID 67 //
4384 /* 4429 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule55Enabled),
4385 /* 4432 */ // MIs[0] dst
4386 /* 4432 */ // No operand predicates
4387 /* 4432 */ // MIs[0] cond
4388 /* 4432 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4389 /* 4436 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4390 /* 4440 */ // MIs[1] Operand 1
4391 /* 4440 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(0),
4392 /* 4451 */ // MIs[0] tval
4393 /* 4451 */ // No operand predicates
4394 /* 4451 */ // MIs[0] fval
4395 /* 4451 */ // No operand predicates
4396 /* 4451 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4397 /* 4456 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4398 /* 4458 */ // Combiner Rule #55: select_constant_cmp_false
4399 /* 4458 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/3,
4400 /* 4463 */ GIR_EraseRootFromParent_Done,
4401 /* 4464 */ // Label 257: @4464
4402 /* 4464 */ GIM_Try, /*On fail goto*//*Label 258*/ GIMT_Encode4(4504), // Rule ID 68 //
4403 /* 4469 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule56Enabled),
4404 /* 4472 */ // MIs[0] dst
4405 /* 4472 */ // No operand predicates
4406 /* 4472 */ // MIs[0] cond
4407 /* 4472 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4408 /* 4476 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_CONSTANT),
4409 /* 4480 */ // MIs[1] Operand 1
4410 /* 4480 */ GIM_CheckLiteralInt, /*MI*/1, /*Op*/1, GIMT_Encode8(1),
4411 /* 4491 */ // MIs[0] tval
4412 /* 4491 */ // No operand predicates
4413 /* 4491 */ // MIs[0] fval
4414 /* 4491 */ // No operand predicates
4415 /* 4491 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4416 /* 4496 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4417 /* 4498 */ // Combiner Rule #56: select_constant_cmp_true
4418 /* 4498 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4419 /* 4503 */ GIR_EraseRootFromParent_Done,
4420 /* 4504 */ // Label 258: @4504
4421 /* 4504 */ GIM_Try, /*On fail goto*//*Label 259*/ GIMT_Encode4(4528), // Rule ID 119 //
4422 /* 4509 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule77Enabled),
4423 /* 4512 */ // MIs[0] dst
4424 /* 4512 */ // No operand predicates
4425 /* 4512 */ // MIs[0] cond
4426 /* 4512 */ // No operand predicates
4427 /* 4512 */ // MIs[0] x
4428 /* 4512 */ // No operand predicates
4429 /* 4512 */ // MIs[0] x
4430 /* 4512 */ GIM_CheckIsSameOperandIgnoreCopies, /*MI*/0, /*OpIdx*/3, /*OtherMI*/0, /*OtherOpIdx*/2,
4431 /* 4517 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4432 /* 4522 */ // Combiner Rule #77: select_same_val_trivial
4433 /* 4522 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4434 /* 4527 */ GIR_EraseRootFromParent_Done,
4435 /* 4528 */ // Label 259: @4528
4436 /* 4528 */ GIM_Try, /*On fail goto*//*Label 260*/ GIMT_Encode4(4551), // Rule ID 120 //
4437 /* 4533 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule78Enabled),
4438 /* 4536 */ // MIs[0] dst
4439 /* 4536 */ // No operand predicates
4440 /* 4536 */ // MIs[0] cond
4441 /* 4536 */ // No operand predicates
4442 /* 4536 */ // MIs[0] tval
4443 /* 4536 */ // No operand predicates
4444 /* 4536 */ // MIs[0] fval
4445 /* 4536 */ // No operand predicates
4446 /* 4536 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner6),
4447 /* 4540 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4448 /* 4545 */ // Combiner Rule #78: select_same_val_equiv
4449 /* 4545 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/2,
4450 /* 4550 */ GIR_EraseRootFromParent_Done,
4451 /* 4551 */ // Label 260: @4551
4452 /* 4551 */ GIM_Try, /*On fail goto*//*Label 261*/ GIMT_Encode4(4562), // Rule ID 69 //
4453 /* 4556 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule57Enabled),
4454 /* 4559 */ // MIs[0] dst
4455 /* 4559 */ // No operand predicates
4456 /* 4559 */ // MIs[0] cond
4457 /* 4559 */ // No operand predicates
4458 /* 4559 */ // MIs[0] tval
4459 /* 4559 */ // No operand predicates
4460 /* 4559 */ // MIs[0] fval
4461 /* 4559 */ // No operand predicates
4462 /* 4559 */ // Combiner Rule #57: select_constant_cmp_general
4463 /* 4559 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner26),
4464 /* 4562 */ // Label 261: @4562
4465 /* 4562 */ GIM_Try, /*On fail goto*//*Label 262*/ GIMT_Encode4(4573), // Rule ID 71 //
4466 /* 4567 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule59Enabled),
4467 /* 4570 */ // MIs[0] dst
4468 /* 4570 */ // No operand predicates
4469 /* 4570 */ // MIs[0] cond
4470 /* 4570 */ // No operand predicates
4471 /* 4570 */ // MIs[0] tval
4472 /* 4570 */ // No operand predicates
4473 /* 4570 */ // MIs[0] fval
4474 /* 4570 */ // No operand predicates
4475 /* 4570 */ // Combiner Rule #59: match_selects
4476 /* 4570 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner28),
4477 /* 4573 */ // Label 262: @4573
4478 /* 4573 */ GIM_Try, /*On fail goto*//*Label 263*/ GIMT_Encode4(4584), // Rule ID 199 //
4479 /* 4578 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule115Enabled),
4480 /* 4581 */ // MIs[0] dst
4481 /* 4581 */ // No operand predicates
4482 /* 4581 */ // MIs[0] cond
4483 /* 4581 */ // No operand predicates
4484 /* 4581 */ // MIs[0] tval
4485 /* 4581 */ // No operand predicates
4486 /* 4581 */ // MIs[0] fval
4487 /* 4581 */ // No operand predicates
4488 /* 4581 */ // Combiner Rule #115: select_to_minmax
4489 /* 4581 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner57),
4490 /* 4584 */ // Label 263: @4584
4491 /* 4584 */ GIM_Reject,
4492 /* 4585 */ // Label 40: @4585
4493 /* 4585 */ GIM_Try, /*On fail goto*//*Label 264*/ GIMT_Encode4(4596), // Rule ID 63 //
4494 /* 4590 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
4495 /* 4593 */ // Combiner Rule #52: match_addos; wip_match_opcode 'G_UADDO'
4496 /* 4593 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
4497 /* 4596 */ // Label 264: @4596
4498 /* 4596 */ GIM_Try, /*On fail goto*//*Label 265*/ GIMT_Encode4(4607), // Rule ID 213 //
4499 /* 4601 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4500 /* 4604 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDO'
4501 /* 4604 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4502 /* 4607 */ // Label 265: @4607
4503 /* 4607 */ GIM_Reject,
4504 /* 4608 */ // Label 41: @4608
4505 /* 4608 */ GIM_Try, /*On fail goto*//*Label 266*/ GIMT_Encode4(4619), // Rule ID 65 //
4506 /* 4613 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
4507 /* 4616 */ // Combiner Rule #53: match_subo_no_overflow; wip_match_opcode 'G_USUBO'
4508 /* 4616 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
4509 /* 4619 */ // Label 266: @4619
4510 /* 4619 */ GIM_Reject,
4511 /* 4620 */ // Label 42: @4620
4512 /* 4620 */ GIM_Try, /*On fail goto*//*Label 267*/ GIMT_Encode4(4631), // Rule ID 62 //
4513 /* 4625 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule52Enabled),
4514 /* 4628 */ // Combiner Rule #52: match_addos; wip_match_opcode 'G_SADDO'
4515 /* 4628 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner24),
4516 /* 4631 */ // Label 267: @4631
4517 /* 4631 */ GIM_Try, /*On fail goto*//*Label 268*/ GIMT_Encode4(4642), // Rule ID 214 //
4518 /* 4636 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4519 /* 4639 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDO'
4520 /* 4639 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4521 /* 4642 */ // Label 268: @4642
4522 /* 4642 */ GIM_Reject,
4523 /* 4643 */ // Label 43: @4643
4524 /* 4643 */ GIM_Try, /*On fail goto*//*Label 269*/ GIMT_Encode4(4654), // Rule ID 64 //
4525 /* 4648 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule53Enabled),
4526 /* 4651 */ // Combiner Rule #53: match_subo_no_overflow; wip_match_opcode 'G_SSUBO'
4527 /* 4651 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner25),
4528 /* 4654 */ // Label 269: @4654
4529 /* 4654 */ GIM_Reject,
4530 /* 4655 */ // Label 44: @4655
4531 /* 4655 */ GIM_Try, /*On fail goto*//*Label 270*/ GIMT_Encode4(4666), // Rule ID 215 //
4532 /* 4660 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4533 /* 4663 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULO'
4534 /* 4663 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4535 /* 4666 */ // Label 270: @4666
4536 /* 4666 */ GIM_Reject,
4537 /* 4667 */ // Label 45: @4667
4538 /* 4667 */ GIM_Try, /*On fail goto*//*Label 271*/ GIMT_Encode4(4678), // Rule ID 216 //
4539 /* 4672 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4540 /* 4675 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULO'
4541 /* 4675 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4542 /* 4678 */ // Label 271: @4678
4543 /* 4678 */ GIM_Reject,
4544 /* 4679 */ // Label 46: @4679
4545 /* 4679 */ GIM_Try, /*On fail goto*//*Label 272*/ GIMT_Encode4(4690), // Rule ID 217 //
4546 /* 4684 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4547 /* 4687 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULH'
4548 /* 4687 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4549 /* 4690 */ // Label 272: @4690
4550 /* 4690 */ GIM_Reject,
4551 /* 4691 */ // Label 47: @4691
4552 /* 4691 */ GIM_Try, /*On fail goto*//*Label 273*/ GIMT_Encode4(4702), // Rule ID 218 //
4553 /* 4696 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4554 /* 4699 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULH'
4555 /* 4699 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4556 /* 4702 */ // Label 273: @4702
4557 /* 4702 */ GIM_Reject,
4558 /* 4703 */ // Label 48: @4703
4559 /* 4703 */ GIM_Try, /*On fail goto*//*Label 274*/ GIMT_Encode4(4714), // Rule ID 219 //
4560 /* 4708 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4561 /* 4711 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UADDSAT'
4562 /* 4711 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4563 /* 4714 */ // Label 274: @4714
4564 /* 4714 */ GIM_Reject,
4565 /* 4715 */ // Label 49: @4715
4566 /* 4715 */ GIM_Try, /*On fail goto*//*Label 275*/ GIMT_Encode4(4726), // Rule ID 220 //
4567 /* 4720 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4568 /* 4723 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SADDSAT'
4569 /* 4723 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4570 /* 4726 */ // Label 275: @4726
4571 /* 4726 */ GIM_Reject,
4572 /* 4727 */ // Label 50: @4727
4573 /* 4727 */ GIM_Try, /*On fail goto*//*Label 276*/ GIMT_Encode4(4738), // Rule ID 221 //
4574 /* 4732 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4575 /* 4735 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIX'
4576 /* 4735 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4577 /* 4738 */ // Label 276: @4738
4578 /* 4738 */ GIM_Reject,
4579 /* 4739 */ // Label 51: @4739
4580 /* 4739 */ GIM_Try, /*On fail goto*//*Label 277*/ GIMT_Encode4(4750), // Rule ID 222 //
4581 /* 4744 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4582 /* 4747 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIX'
4583 /* 4747 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4584 /* 4750 */ // Label 277: @4750
4585 /* 4750 */ GIM_Reject,
4586 /* 4751 */ // Label 52: @4751
4587 /* 4751 */ GIM_Try, /*On fail goto*//*Label 278*/ GIMT_Encode4(4762), // Rule ID 223 //
4588 /* 4756 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4589 /* 4759 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SMULFIXSAT'
4590 /* 4759 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4591 /* 4762 */ // Label 278: @4762
4592 /* 4762 */ GIM_Reject,
4593 /* 4763 */ // Label 53: @4763
4594 /* 4763 */ GIM_Try, /*On fail goto*//*Label 279*/ GIMT_Encode4(4774), // Rule ID 224 //
4595 /* 4768 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
4596 /* 4771 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UMULFIXSAT'
4597 /* 4771 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
4598 /* 4774 */ // Label 279: @4774
4599 /* 4774 */ GIM_Reject,
4600 /* 4775 */ // Label 54: @4775
4601 /* 4775 */ GIM_Try, /*On fail goto*//*Label 280*/ GIMT_Encode4(4786), // Rule ID 225 //
4602 /* 4780 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4603 /* 4783 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FADD'
4604 /* 4783 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4605 /* 4786 */ // Label 280: @4786
4606 /* 4786 */ GIM_Try, /*On fail goto*//*Label 281*/ GIMT_Encode4(4809), // Rule ID 159 //
4607 /* 4791 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule97Enabled),
4608 /* 4794 */ // MIs[0] dst
4609 /* 4794 */ // No operand predicates
4610 /* 4794 */ // MIs[0] x
4611 /* 4794 */ // No operand predicates
4612 /* 4794 */ // MIs[0] y
4613 /* 4794 */ // No operand predicates
4614 /* 4794 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner10),
4615 /* 4798 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4616 /* 4803 */ // Combiner Rule #97: right_identity_neg_zero_fp
4617 /* 4803 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4618 /* 4808 */ GIR_EraseRootFromParent_Done,
4619 /* 4809 */ // Label 281: @4809
4620 /* 4809 */ GIM_Try, /*On fail goto*//*Label 282*/ GIMT_Encode4(4838), // Rule ID 160 //
4621 /* 4814 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule98Enabled),
4622 /* 4817 */ GIM_MIFlags, /*MI*/0, GIMT_Encode4(MachineInstr::FmNsz),
4623 /* 4823 */ // MIs[0] dst
4624 /* 4823 */ // No operand predicates
4625 /* 4823 */ // MIs[0] x
4626 /* 4823 */ // No operand predicates
4627 /* 4823 */ // MIs[0] y
4628 /* 4823 */ // No operand predicates
4629 /* 4823 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner11),
4630 /* 4827 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4631 /* 4832 */ // Combiner Rule #98: right_identity_neg_zero_fp_nsz
4632 /* 4832 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4633 /* 4837 */ GIR_EraseRootFromParent_Done,
4634 /* 4838 */ // Label 282: @4838
4635 /* 4838 */ GIM_Try, /*On fail goto*//*Label 283*/ GIMT_Encode4(4849), // Rule ID 104 //
4636 /* 4843 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4637 /* 4846 */ // MIs[0] d
4638 /* 4846 */ // No operand predicates
4639 /* 4846 */ // MIs[0] mi.src0
4640 /* 4846 */ // No operand predicates
4641 /* 4846 */ // MIs[0] mi.src1
4642 /* 4846 */ // No operand predicates
4643 /* 4846 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[0]]
4644 /* 4846 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4645 /* 4849 */ // Label 283: @4849
4646 /* 4849 */ GIM_Reject,
4647 /* 4850 */ // Label 55: @4850
4648 /* 4850 */ GIM_Try, /*On fail goto*//*Label 284*/ GIMT_Encode4(4861), // Rule ID 105 //
4649 /* 4855 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4650 /* 4858 */ // MIs[0] d
4651 /* 4858 */ // No operand predicates
4652 /* 4858 */ // MIs[0] mi.src0
4653 /* 4858 */ // No operand predicates
4654 /* 4858 */ // MIs[0] mi.src1
4655 /* 4858 */ // No operand predicates
4656 /* 4858 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[1]]
4657 /* 4858 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4658 /* 4861 */ // Label 284: @4861
4659 /* 4861 */ GIM_Reject,
4660 /* 4862 */ // Label 56: @4862
4661 /* 4862 */ GIM_Try, /*On fail goto*//*Label 285*/ GIMT_Encode4(4873), // Rule ID 226 //
4662 /* 4867 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4663 /* 4870 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMUL'
4664 /* 4870 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4665 /* 4873 */ // Label 285: @4873
4666 /* 4873 */ GIM_Try, /*On fail goto*//*Label 286*/ GIMT_Encode4(4896), // Rule ID 149 //
4667 /* 4878 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule89Enabled),
4668 /* 4881 */ // MIs[0] dst
4669 /* 4881 */ // No operand predicates
4670 /* 4881 */ // MIs[0] x
4671 /* 4881 */ // No operand predicates
4672 /* 4881 */ // MIs[0] y
4673 /* 4881 */ // No operand predicates
4674 /* 4881 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner8),
4675 /* 4885 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4676 /* 4890 */ // Combiner Rule #89: right_identity_one_fp
4677 /* 4890 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
4678 /* 4895 */ GIR_EraseRootFromParent_Done,
4679 /* 4896 */ // Label 286: @4896
4680 /* 4896 */ GIM_Try, /*On fail goto*//*Label 287*/ GIMT_Encode4(4916), // Rule ID 161 //
4681 /* 4901 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule99Enabled),
4682 /* 4904 */ // MIs[0] dst
4683 /* 4904 */ // No operand predicates
4684 /* 4904 */ // MIs[0] x
4685 /* 4904 */ // No operand predicates
4686 /* 4904 */ // MIs[0] y
4687 /* 4904 */ // No operand predicates
4688 /* 4904 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner12),
4689 /* 4908 */ // Combiner Rule #99: right_identity_neg_one_fp
4690 /* 4908 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_FNEG),
4691 /* 4911 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
4692 /* 4913 */ GIR_RootToRootCopy, /*OpIdx*/1, // x
4693 /* 4915 */ GIR_EraseRootFromParent_Done,
4694 /* 4916 */ // Label 287: @4916
4695 /* 4916 */ GIM_Try, /*On fail goto*//*Label 288*/ GIMT_Encode4(4927), // Rule ID 106 //
4696 /* 4921 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4697 /* 4924 */ // MIs[0] d
4698 /* 4924 */ // No operand predicates
4699 /* 4924 */ // MIs[0] mi.src0
4700 /* 4924 */ // No operand predicates
4701 /* 4924 */ // MIs[0] mi.src1
4702 /* 4924 */ // No operand predicates
4703 /* 4924 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[2]]
4704 /* 4924 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4705 /* 4927 */ // Label 288: @4927
4706 /* 4927 */ GIM_Reject,
4707 /* 4928 */ // Label 57: @4928
4708 /* 4928 */ GIM_Try, /*On fail goto*//*Label 289*/ GIMT_Encode4(4939), // Rule ID 107 //
4709 /* 4933 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4710 /* 4936 */ // MIs[0] d
4711 /* 4936 */ // No operand predicates
4712 /* 4936 */ // MIs[0] mi.src0
4713 /* 4936 */ // No operand predicates
4714 /* 4936 */ // MIs[0] mi.src1
4715 /* 4936 */ // No operand predicates
4716 /* 4936 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[3]]
4717 /* 4936 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4718 /* 4939 */ // Label 289: @4939
4719 /* 4939 */ GIM_Reject,
4720 /* 4940 */ // Label 58: @4940
4721 /* 4940 */ GIM_Try, /*On fail goto*//*Label 290*/ GIMT_Encode4(4951), // Rule ID 108 //
4722 /* 4945 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4723 /* 4948 */ // MIs[0] d
4724 /* 4948 */ // No operand predicates
4725 /* 4948 */ // MIs[0] mi.src0
4726 /* 4948 */ // No operand predicates
4727 /* 4948 */ // MIs[0] mi.src1
4728 /* 4948 */ // No operand predicates
4729 /* 4948 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[4]]
4730 /* 4948 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4731 /* 4951 */ // Label 290: @4951
4732 /* 4951 */ GIM_Reject,
4733 /* 4952 */ // Label 59: @4952
4734 /* 4952 */ GIM_Try, /*On fail goto*//*Label 291*/ GIMT_Encode4(4973), // Rule ID 15 //
4735 /* 4957 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule15Enabled),
4736 /* 4960 */ // MIs[0] dst
4737 /* 4960 */ // No operand predicates
4738 /* 4960 */ // MIs[0] src0
4739 /* 4960 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4740 /* 4964 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4741 /* 4968 */ // MIs[1] cst
4742 /* 4968 */ // No operand predicates
4743 /* 4968 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4744 /* 4970 */ // Combiner Rule #15: constant_fold_flog2
4745 /* 4970 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4746 /* 4973 */ // Label 291: @4973
4747 /* 4973 */ GIM_Reject,
4748 /* 4974 */ // Label 60: @4974
4749 /* 4974 */ GIM_Try, /*On fail goto*//*Label 292*/ GIMT_Encode4(4995), // Rule ID 12 //
4750 /* 4979 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule12Enabled),
4751 /* 4982 */ // MIs[0] dst
4752 /* 4982 */ // No operand predicates
4753 /* 4982 */ // MIs[0] src0
4754 /* 4982 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4755 /* 4986 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4756 /* 4990 */ // MIs[1] cst
4757 /* 4990 */ // No operand predicates
4758 /* 4990 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4759 /* 4992 */ // Combiner Rule #12: constant_fold_fneg
4760 /* 4992 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4761 /* 4995 */ // Label 292: @4995
4762 /* 4995 */ GIM_Try, /*On fail goto*//*Label 293*/ GIMT_Encode4(5024), // Rule ID 147 //
4763 /* 5000 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule87Enabled),
4764 /* 5003 */ // MIs[0] dst
4765 /* 5003 */ // No operand predicates
4766 /* 5003 */ // MIs[0] t
4767 /* 5003 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4768 /* 5007 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FNEG),
4769 /* 5011 */ // MIs[1] src
4770 /* 5011 */ // No operand predicates
4771 /* 5011 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4772 /* 5016 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4773 /* 5018 */ // Combiner Rule #87: fneg_fneg_fold
4774 /* 5018 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/1, /*NewOpIdx*/1,
4775 /* 5023 */ GIR_EraseRootFromParent_Done,
4776 /* 5024 */ // Label 293: @5024
4777 /* 5024 */ GIM_Reject,
4778 /* 5025 */ // Label 61: @5025
4779 /* 5025 */ GIM_Try, /*On fail goto*//*Label 294*/ GIMT_Encode4(5046), // Rule ID 17 //
4780 /* 5030 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule17Enabled),
4781 /* 5033 */ // MIs[0] dst
4782 /* 5033 */ // No operand predicates
4783 /* 5033 */ // MIs[0] src0
4784 /* 5033 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4785 /* 5037 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4786 /* 5041 */ // MIs[1] cst
4787 /* 5041 */ // No operand predicates
4788 /* 5041 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4789 /* 5043 */ // Combiner Rule #17: constant_fold_fpext
4790 /* 5043 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4791 /* 5046 */ // Label 294: @5046
4792 /* 5046 */ GIM_Reject,
4793 /* 5047 */ // Label 62: @5047
4794 /* 5047 */ GIM_Try, /*On fail goto*//*Label 295*/ GIMT_Encode4(5068), // Rule ID 16 //
4795 /* 5052 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule16Enabled),
4796 /* 5055 */ // MIs[0] dst
4797 /* 5055 */ // No operand predicates
4798 /* 5055 */ // MIs[0] src0
4799 /* 5055 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4800 /* 5059 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4801 /* 5063 */ // MIs[1] cst
4802 /* 5063 */ // No operand predicates
4803 /* 5063 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4804 /* 5065 */ // Combiner Rule #16: constant_fold_fptrunc
4805 /* 5065 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4806 /* 5068 */ // Label 295: @5068
4807 /* 5068 */ GIM_Try, /*On fail goto*//*Label 296*/ GIMT_Encode4(5089), // Rule ID 158 //
4808 /* 5073 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule96Enabled),
4809 /* 5076 */ // MIs[0] dst
4810 /* 5076 */ // No operand predicates
4811 /* 5076 */ // MIs[0] src1
4812 /* 5076 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4813 /* 5080 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FPEXT),
4814 /* 5084 */ // MIs[1] src0
4815 /* 5084 */ // No operand predicates
4816 /* 5084 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4817 /* 5086 */ // Combiner Rule #96: fptrunc_fpext_fold
4818 /* 5086 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner47),
4819 /* 5089 */ // Label 296: @5089
4820 /* 5089 */ GIM_Reject,
4821 /* 5090 */ // Label 63: @5090
4822 /* 5090 */ GIM_Try, /*On fail goto*//*Label 297*/ GIMT_Encode4(5111), // Rule ID 185 //
4823 /* 5095 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
4824 /* 5098 */ // MIs[0] dst
4825 /* 5098 */ // No operand predicates
4826 /* 5098 */ // MIs[0] __unary_undef_to_undef_match_0.x
4827 /* 5098 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4828 /* 5102 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4829 /* 5106 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4830 /* 5108 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[5]]
4831 /* 5108 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4832 /* 5111 */ // Label 297: @5111
4833 /* 5111 */ GIM_Reject,
4834 /* 5112 */ // Label 64: @5112
4835 /* 5112 */ GIM_Try, /*On fail goto*//*Label 298*/ GIMT_Encode4(5133), // Rule ID 186 //
4836 /* 5117 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule109Enabled),
4837 /* 5120 */ // MIs[0] dst
4838 /* 5120 */ // No operand predicates
4839 /* 5120 */ // MIs[0] __unary_undef_to_undef_match_0.x
4840 /* 5120 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4841 /* 5124 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4842 /* 5128 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4843 /* 5130 */ // Combiner Rule #109: unary_undef_to_undef @ [__unary_undef_to_undef_match_0[6]]
4844 /* 5130 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner53),
4845 /* 5133 */ // Label 298: @5133
4846 /* 5133 */ GIM_Reject,
4847 /* 5134 */ // Label 65: @5134
4848 /* 5134 */ GIM_Try, /*On fail goto*//*Label 299*/ GIMT_Encode4(5155), // Rule ID 166 //
4849 /* 5139 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
4850 /* 5142 */ // MIs[0] dst
4851 /* 5142 */ // No operand predicates
4852 /* 5142 */ // MIs[0] __undef_to_fp_zero_match_0.x
4853 /* 5142 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4854 /* 5146 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4855 /* 5150 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4856 /* 5152 */ // Combiner Rule #103: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[1]]
4857 /* 5152 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4858 /* 5155 */ // Label 299: @5155
4859 /* 5155 */ GIM_Try, /*On fail goto*//*Label 300*/ GIMT_Encode4(5170), // Rule ID 25 //
4860 /* 5160 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule25Enabled),
4861 /* 5163 */ // MIs[0] dst
4862 /* 5163 */ // No operand predicates
4863 /* 5163 */ // MIs[0] Operand 1
4864 /* 5163 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4865 /* 5167 */ // Combiner Rule #25: itof_const_zero_fold_si
4866 /* 5167 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4867 /* 5170 */ // Label 300: @5170
4868 /* 5170 */ GIM_Reject,
4869 /* 5171 */ // Label 66: @5171
4870 /* 5171 */ GIM_Try, /*On fail goto*//*Label 301*/ GIMT_Encode4(5192), // Rule ID 165 //
4871 /* 5176 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule103Enabled),
4872 /* 5179 */ // MIs[0] dst
4873 /* 5179 */ // No operand predicates
4874 /* 5179 */ // MIs[0] __undef_to_fp_zero_match_0.x
4875 /* 5179 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4876 /* 5183 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
4877 /* 5187 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4878 /* 5189 */ // Combiner Rule #103: undef_to_fp_zero @ [__undef_to_fp_zero_match_0[0]]
4879 /* 5189 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4880 /* 5192 */ // Label 301: @5192
4881 /* 5192 */ GIM_Try, /*On fail goto*//*Label 302*/ GIMT_Encode4(5207), // Rule ID 26 //
4882 /* 5197 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule26Enabled),
4883 /* 5200 */ // MIs[0] dst
4884 /* 5200 */ // No operand predicates
4885 /* 5200 */ // MIs[0] Operand 1
4886 /* 5200 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/1, 0,
4887 /* 5204 */ // Combiner Rule #26: itof_const_zero_fold_ui
4888 /* 5204 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner5),
4889 /* 5207 */ // Label 302: @5207
4890 /* 5207 */ GIM_Reject,
4891 /* 5208 */ // Label 67: @5208
4892 /* 5208 */ GIM_Try, /*On fail goto*//*Label 303*/ GIMT_Encode4(5229), // Rule ID 13 //
4893 /* 5213 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule13Enabled),
4894 /* 5216 */ // MIs[0] dst
4895 /* 5216 */ // No operand predicates
4896 /* 5216 */ // MIs[0] src0
4897 /* 5216 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
4898 /* 5220 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
4899 /* 5224 */ // MIs[1] cst
4900 /* 5224 */ // No operand predicates
4901 /* 5224 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
4902 /* 5226 */ // Combiner Rule #13: constant_fold_fabs
4903 /* 5226 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
4904 /* 5229 */ // Label 303: @5229
4905 /* 5229 */ GIM_Reject,
4906 /* 5230 */ // Label 68: @5230
4907 /* 5230 */ GIM_Try, /*On fail goto*//*Label 304*/ GIMT_Encode4(5241), // Rule ID 109 //
4908 /* 5235 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4909 /* 5238 */ // MIs[0] d
4910 /* 5238 */ // No operand predicates
4911 /* 5238 */ // MIs[0] mi.src0
4912 /* 5238 */ // No operand predicates
4913 /* 5238 */ // MIs[0] mi.src1
4914 /* 5238 */ // No operand predicates
4915 /* 5238 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[5]]
4916 /* 5238 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4917 /* 5241 */ // Label 304: @5241
4918 /* 5241 */ GIM_Reject,
4919 /* 5242 */ // Label 69: @5242
4920 /* 5242 */ GIM_Try, /*On fail goto*//*Label 305*/ GIMT_Encode4(5253), // Rule ID 227 //
4921 /* 5247 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4922 /* 5250 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM'
4923 /* 5250 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4924 /* 5253 */ // Label 305: @5253
4925 /* 5253 */ GIM_Try, /*On fail goto*//*Label 306*/ GIMT_Encode4(5264), // Rule ID 110 //
4926 /* 5258 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4927 /* 5261 */ // MIs[0] d
4928 /* 5261 */ // No operand predicates
4929 /* 5261 */ // MIs[0] mi.src0
4930 /* 5261 */ // No operand predicates
4931 /* 5261 */ // MIs[0] mi.src1
4932 /* 5261 */ // No operand predicates
4933 /* 5261 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[6]]
4934 /* 5261 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4935 /* 5264 */ // Label 306: @5264
4936 /* 5264 */ GIM_Reject,
4937 /* 5265 */ // Label 70: @5265
4938 /* 5265 */ GIM_Try, /*On fail goto*//*Label 307*/ GIMT_Encode4(5276), // Rule ID 228 //
4939 /* 5270 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4940 /* 5273 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM'
4941 /* 5273 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4942 /* 5276 */ // Label 307: @5276
4943 /* 5276 */ GIM_Try, /*On fail goto*//*Label 308*/ GIMT_Encode4(5287), // Rule ID 111 //
4944 /* 5281 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4945 /* 5284 */ // MIs[0] d
4946 /* 5284 */ // No operand predicates
4947 /* 5284 */ // MIs[0] mi.src0
4948 /* 5284 */ // No operand predicates
4949 /* 5284 */ // MIs[0] mi.src1
4950 /* 5284 */ // No operand predicates
4951 /* 5284 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[7]]
4952 /* 5284 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4953 /* 5287 */ // Label 308: @5287
4954 /* 5287 */ GIM_Reject,
4955 /* 5288 */ // Label 71: @5288
4956 /* 5288 */ GIM_Try, /*On fail goto*//*Label 309*/ GIMT_Encode4(5299), // Rule ID 229 //
4957 /* 5293 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4958 /* 5296 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINNUM_IEEE'
4959 /* 5296 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4960 /* 5299 */ // Label 309: @5299
4961 /* 5299 */ GIM_Reject,
4962 /* 5300 */ // Label 72: @5300
4963 /* 5300 */ GIM_Try, /*On fail goto*//*Label 310*/ GIMT_Encode4(5311), // Rule ID 230 //
4964 /* 5305 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4965 /* 5308 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXNUM_IEEE'
4966 /* 5308 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4967 /* 5311 */ // Label 310: @5311
4968 /* 5311 */ GIM_Reject,
4969 /* 5312 */ // Label 73: @5312
4970 /* 5312 */ GIM_Try, /*On fail goto*//*Label 311*/ GIMT_Encode4(5323), // Rule ID 231 //
4971 /* 5317 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4972 /* 5320 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMINIMUM'
4973 /* 5320 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4974 /* 5323 */ // Label 311: @5323
4975 /* 5323 */ GIM_Try, /*On fail goto*//*Label 312*/ GIMT_Encode4(5334), // Rule ID 112 //
4976 /* 5328 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4977 /* 5331 */ // MIs[0] d
4978 /* 5331 */ // No operand predicates
4979 /* 5331 */ // MIs[0] mi.src0
4980 /* 5331 */ // No operand predicates
4981 /* 5331 */ // MIs[0] mi.src1
4982 /* 5331 */ // No operand predicates
4983 /* 5331 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[8]]
4984 /* 5331 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
4985 /* 5334 */ // Label 312: @5334
4986 /* 5334 */ GIM_Reject,
4987 /* 5335 */ // Label 74: @5335
4988 /* 5335 */ GIM_Try, /*On fail goto*//*Label 313*/ GIMT_Encode4(5346), // Rule ID 232 //
4989 /* 5340 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule121Enabled),
4990 /* 5343 */ // Combiner Rule #121: commute_fp_constant_to_rhs; wip_match_opcode 'G_FMAXIMUM'
4991 /* 5343 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner62),
4992 /* 5346 */ // Label 313: @5346
4993 /* 5346 */ GIM_Try, /*On fail goto*//*Label 314*/ GIMT_Encode4(5357), // Rule ID 113 //
4994 /* 5351 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
4995 /* 5354 */ // MIs[0] d
4996 /* 5354 */ // No operand predicates
4997 /* 5354 */ // MIs[0] mi.src0
4998 /* 5354 */ // No operand predicates
4999 /* 5354 */ // MIs[0] mi.src1
5000 /* 5354 */ // No operand predicates
5001 /* 5354 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[9]]
5002 /* 5354 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5003 /* 5357 */ // Label 314: @5357
5004 /* 5357 */ GIM_Reject,
5005 /* 5358 */ // Label 75: @5358
5006 /* 5358 */ GIM_Try, /*On fail goto*//*Label 315*/ GIMT_Encode4(5369), // Rule ID 114 //
5007 /* 5363 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5008 /* 5366 */ // MIs[0] d
5009 /* 5366 */ // No operand predicates
5010 /* 5366 */ // MIs[0] mi.src0
5011 /* 5366 */ // No operand predicates
5012 /* 5366 */ // MIs[0] mi.src1
5013 /* 5366 */ // No operand predicates
5014 /* 5366 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[10]]
5015 /* 5366 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5016 /* 5369 */ // Label 315: @5369
5017 /* 5369 */ GIM_Reject,
5018 /* 5370 */ // Label 76: @5370
5019 /* 5370 */ GIM_Try, /*On fail goto*//*Label 316*/ GIMT_Encode4(5381), // Rule ID 115 //
5020 /* 5375 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule75Enabled),
5021 /* 5378 */ // MIs[0] d
5022 /* 5378 */ // No operand predicates
5023 /* 5378 */ // MIs[0] mi.src0
5024 /* 5378 */ // No operand predicates
5025 /* 5378 */ // MIs[0] mi.src1
5026 /* 5378 */ // No operand predicates
5027 /* 5378 */ // Combiner Rule #75: constant_fold_fp_binop @ [mi[11]]
5028 /* 5378 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner40),
5029 /* 5381 */ // Label 316: @5381
5030 /* 5381 */ GIM_Reject,
5031 /* 5382 */ // Label 77: @5382
5032 /* 5382 */ GIM_Try, /*On fail goto*//*Label 317*/ GIMT_Encode4(5393), // Rule ID 87 //
5033 /* 5387 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
5034 /* 5390 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_PTR_ADD'
5035 /* 5390 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5036 /* 5393 */ // Label 317: @5393
5037 /* 5393 */ GIM_Try, /*On fail goto*//*Label 318*/ GIMT_Encode4(5416), // Rule ID 128 //
5038 /* 5398 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule79Enabled),
5039 /* 5401 */ // MIs[0] dst
5040 /* 5401 */ // No operand predicates
5041 /* 5401 */ // MIs[0] lhs
5042 /* 5401 */ // No operand predicates
5043 /* 5401 */ // MIs[0] Operand 2
5044 /* 5401 */ GIM_CheckConstantInt8, /*MI*/0, /*Op*/2, 0,
5045 /* 5405 */ GIM_CheckCanReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5046 /* 5410 */ // Combiner Rule #79: right_identity_zero @ [__right_identity_zero_match_0[7]]
5047 /* 5410 */ GIR_ReplaceReg, /*OldInsnID*/0, /*OldOpIdx*/0, /*NewInsnId*/0, /*NewOpIdx*/1,
5048 /* 5415 */ GIR_EraseRootFromParent_Done,
5049 /* 5416 */ // Label 318: @5416
5050 /* 5416 */ GIM_Try, /*On fail goto*//*Label 319*/ GIMT_Encode4(5427), // Rule ID 162 //
5051 /* 5421 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule100Enabled),
5052 /* 5424 */ // MIs[0] dst
5053 /* 5424 */ // No operand predicates
5054 /* 5424 */ // MIs[0] base
5055 /* 5424 */ // No operand predicates
5056 /* 5424 */ // MIs[0] offset
5057 /* 5424 */ // No operand predicates
5058 /* 5424 */ // Combiner Rule #100: ptr_add_immed_chain
5059 /* 5424 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner48),
5060 /* 5427 */ // Label 319: @5427
5061 /* 5427 */ GIM_Reject,
5062 /* 5428 */ // Label 78: @5428
5063 /* 5428 */ GIM_Try, /*On fail goto*//*Label 320*/ GIMT_Encode4(5439), // Rule ID 100 //
5064 /* 5433 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
5065 /* 5436 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_SMIN'
5066 /* 5436 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5067 /* 5439 */ // Label 320: @5439
5068 /* 5439 */ GIM_Try, /*On fail goto*//*Label 321*/ GIMT_Encode4(5450), // Rule ID 209 //
5069 /* 5444 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
5070 /* 5447 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SMIN'
5071 /* 5447 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
5072 /* 5450 */ // Label 321: @5450
5073 /* 5450 */ GIM_Reject,
5074 /* 5451 */ // Label 79: @5451
5075 /* 5451 */ GIM_Try, /*On fail goto*//*Label 322*/ GIMT_Encode4(5462), // Rule ID 101 //
5076 /* 5456 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
5077 /* 5459 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_SMAX'
5078 /* 5459 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5079 /* 5462 */ // Label 322: @5462
5080 /* 5462 */ GIM_Try, /*On fail goto*//*Label 323*/ GIMT_Encode4(5473), // Rule ID 210 //
5081 /* 5467 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
5082 /* 5470 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_SMAX'
5083 /* 5470 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
5084 /* 5473 */ // Label 323: @5473
5085 /* 5473 */ GIM_Reject,
5086 /* 5474 */ // Label 80: @5474
5087 /* 5474 */ GIM_Try, /*On fail goto*//*Label 324*/ GIMT_Encode4(5485), // Rule ID 102 //
5088 /* 5479 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
5089 /* 5482 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_UMIN'
5090 /* 5482 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5091 /* 5485 */ // Label 324: @5485
5092 /* 5485 */ GIM_Try, /*On fail goto*//*Label 325*/ GIMT_Encode4(5496), // Rule ID 211 //
5093 /* 5490 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
5094 /* 5493 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UMIN'
5095 /* 5493 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
5096 /* 5496 */ // Label 325: @5496
5097 /* 5496 */ GIM_Reject,
5098 /* 5497 */ // Label 81: @5497
5099 /* 5497 */ GIM_Try, /*On fail goto*//*Label 326*/ GIMT_Encode4(5508), // Rule ID 103 //
5100 /* 5502 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule74Enabled),
5101 /* 5505 */ // Combiner Rule #74: constant_fold_binop; wip_match_opcode 'G_UMAX'
5102 /* 5505 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner39),
5103 /* 5508 */ // Label 326: @5508
5104 /* 5508 */ GIM_Try, /*On fail goto*//*Label 327*/ GIMT_Encode4(5519), // Rule ID 212 //
5105 /* 5513 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule120Enabled),
5106 /* 5516 */ // Combiner Rule #120: commute_int_constant_to_rhs; wip_match_opcode 'G_UMAX'
5107 /* 5516 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner61),
5108 /* 5519 */ // Label 327: @5519
5109 /* 5519 */ GIM_Reject,
5110 /* 5520 */ // Label 82: @5520
5111 /* 5520 */ GIM_Try, /*On fail goto*//*Label 328*/ GIMT_Encode4(5541), // Rule ID 179 //
5112 /* 5525 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule108Enabled),
5113 /* 5528 */ // MIs[0] dst
5114 /* 5528 */ // No operand predicates
5115 /* 5528 */ // MIs[0] __unary_undef_to_zero_match_0.x
5116 /* 5528 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5117 /* 5532 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5118 /* 5536 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5119 /* 5538 */ // Combiner Rule #108: unary_undef_to_zero @ [__unary_undef_to_zero_match_0[0]]
5120 /* 5538 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner51),
5121 /* 5541 */ // Label 328: @5541
5122 /* 5541 */ GIM_Reject,
5123 /* 5542 */ // Label 83: @5542
5124 /* 5542 */ GIM_Try, /*On fail goto*//*Label 329*/ GIMT_Encode4(5553), // Rule ID 197 //
5125 /* 5547 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
5126 /* 5550 */ // Combiner Rule #114: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_INSERT_VECTOR_ELT'
5127 /* 5550 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
5128 /* 5553 */ // Label 329: @5553
5129 /* 5553 */ GIM_Reject,
5130 /* 5554 */ // Label 84: @5554
5131 /* 5554 */ GIM_Try, /*On fail goto*//*Label 330*/ GIMT_Encode4(5565), // Rule ID 198 //
5132 /* 5559 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule114Enabled),
5133 /* 5562 */ // Combiner Rule #114: insert_extract_vec_elt_out_of_bounds; wip_match_opcode 'G_EXTRACT_VECTOR_ELT'
5134 /* 5562 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner56),
5135 /* 5565 */ // Label 330: @5565
5136 /* 5565 */ GIM_Try, /*On fail goto*//*Label 331*/ GIMT_Encode4(5576), // Rule ID 45 //
5137 /* 5570 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule38Enabled),
5138 /* 5573 */ // MIs[0] dst
5139 /* 5573 */ // No operand predicates
5140 /* 5573 */ // MIs[0] src
5141 /* 5573 */ // No operand predicates
5142 /* 5573 */ // MIs[0] idx
5143 /* 5573 */ // No operand predicates
5144 /* 5573 */ // Combiner Rule #38: extractvecelt_pairwise_add
5145 /* 5573 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner14),
5146 /* 5576 */ // Label 331: @5576
5147 /* 5576 */ GIM_Try, /*On fail goto*//*Label 332*/ GIMT_Encode4(5587), // Rule ID 233 //
5148 /* 5581 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule122Enabled),
5149 /* 5584 */ // MIs[0] dst
5150 /* 5584 */ // No operand predicates
5151 /* 5584 */ // MIs[0] src
5152 /* 5584 */ // No operand predicates
5153 /* 5584 */ // MIs[0] idx
5154 /* 5584 */ // No operand predicates
5155 /* 5584 */ // Combiner Rule #122: extract_vec_elt_build_vec
5156 /* 5584 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner63),
5157 /* 5587 */ // Label 332: @5587
5158 /* 5587 */ GIM_Reject,
5159 /* 5588 */ // Label 85: @5588
5160 /* 5588 */ GIM_Try, /*On fail goto*//*Label 333*/ GIMT_Encode4(5599), // Rule ID 193 //
5161 /* 5593 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule111Enabled),
5162 /* 5596 */ // Combiner Rule #111: propagate_undef_all_ops; wip_match_opcode 'G_SHUFFLE_VECTOR'
5163 /* 5596 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner54),
5164 /* 5599 */ // Label 333: @5599
5165 /* 5599 */ GIM_Try, /*On fail goto*//*Label 334*/ GIMT_Encode4(5617), // Rule ID 195 //
5166 /* 5604 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule112Enabled),
5167 /* 5607 */ // MIs[0] dst
5168 /* 5607 */ // No operand predicates
5169 /* 5607 */ // MIs[0] src1
5170 /* 5607 */ // No operand predicates
5171 /* 5607 */ // MIs[0] src2
5172 /* 5607 */ // No operand predicates
5173 /* 5607 */ // MIs[0] mask
5174 /* 5607 */ // No operand predicates
5175 /* 5607 */ GIM_CheckCxxInsnPredicate, /*MI*/0, /*FnId*/GIMT_Encode2(GICXXPred_MI_Predicate_GICombiner13),
5176 /* 5611 */ // Combiner Rule #112: propagate_undef_shuffle_mask
5177 /* 5611 */ GIR_BuildRootMI, /*Opcode*/GIMT_Encode2(TargetOpcode::G_IMPLICIT_DEF),
5178 /* 5614 */ GIR_RootToRootCopy, /*OpIdx*/0, // dst
5179 /* 5616 */ GIR_EraseRootFromParent_Done,
5180 /* 5617 */ // Label 334: @5617
5181 /* 5617 */ GIM_Reject,
5182 /* 5618 */ // Label 86: @5618
5183 /* 5618 */ GIM_Try, /*On fail goto*//*Label 335*/ GIMT_Encode4(5639), // Rule ID 18 //
5184 /* 5623 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule18Enabled),
5185 /* 5626 */ // MIs[0] dst
5186 /* 5626 */ // No operand predicates
5187 /* 5626 */ // MIs[0] src0
5188 /* 5626 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5189 /* 5630 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5190 /* 5634 */ // MIs[1] cst
5191 /* 5634 */ // No operand predicates
5192 /* 5634 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5193 /* 5636 */ // Combiner Rule #18: constant_fold_fceil
5194 /* 5636 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5195 /* 5639 */ // Label 335: @5639
5196 /* 5639 */ GIM_Reject,
5197 /* 5640 */ // Label 87: @5640
5198 /* 5640 */ GIM_Try, /*On fail goto*//*Label 336*/ GIMT_Encode4(5661), // Rule ID 14 //
5199 /* 5645 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule14Enabled),
5200 /* 5648 */ // MIs[0] dst
5201 /* 5648 */ // No operand predicates
5202 /* 5648 */ // MIs[0] src0
5203 /* 5648 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5204 /* 5652 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5205 /* 5656 */ // MIs[1] cst
5206 /* 5656 */ // No operand predicates
5207 /* 5656 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5208 /* 5658 */ // Combiner Rule #14: constant_fold_fsqrt
5209 /* 5658 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5210 /* 5661 */ // Label 336: @5661
5211 /* 5661 */ GIM_Reject,
5212 /* 5662 */ // Label 88: @5662
5213 /* 5662 */ GIM_Try, /*On fail goto*//*Label 337*/ GIMT_Encode4(5683), // Rule ID 19 //
5214 /* 5667 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule19Enabled),
5215 /* 5670 */ // MIs[0] dst
5216 /* 5670 */ // No operand predicates
5217 /* 5670 */ // MIs[0] src0
5218 /* 5670 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5219 /* 5674 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5220 /* 5678 */ // MIs[1] cst
5221 /* 5678 */ // No operand predicates
5222 /* 5678 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5223 /* 5680 */ // Combiner Rule #19: constant_fold_ffloor
5224 /* 5680 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5225 /* 5683 */ // Label 337: @5683
5226 /* 5683 */ GIM_Reject,
5227 /* 5684 */ // Label 89: @5684
5228 /* 5684 */ GIM_Try, /*On fail goto*//*Label 338*/ GIMT_Encode4(5705), // Rule ID 23 //
5229 /* 5689 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule23Enabled),
5230 /* 5692 */ // MIs[0] dst
5231 /* 5692 */ // No operand predicates
5232 /* 5692 */ // MIs[0] src0
5233 /* 5692 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5234 /* 5696 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5235 /* 5700 */ // MIs[1] cst
5236 /* 5700 */ // No operand predicates
5237 /* 5700 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5238 /* 5702 */ // Combiner Rule #23: constant_fold_frint
5239 /* 5702 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5240 /* 5705 */ // Label 338: @5705
5241 /* 5705 */ GIM_Reject,
5242 /* 5706 */ // Label 90: @5706
5243 /* 5706 */ GIM_Try, /*On fail goto*//*Label 339*/ GIMT_Encode4(5727), // Rule ID 24 //
5244 /* 5711 */ GIM_CheckSimplePredicate, GIMT_Encode2(GICXXPred_Simple_IsRule24Enabled),
5245 /* 5714 */ // MIs[0] dst
5246 /* 5714 */ // No operand predicates
5247 /* 5714 */ // MIs[0] src0
5248 /* 5714 */ GIM_RecordInsnIgnoreCopies, /*DefineMI*/1, /*MI*/0, /*OpIdx*/1, // MIs[1]
5249 /* 5718 */ GIM_CheckOpcode, /*MI*/1, GIMT_Encode2(TargetOpcode::G_FCONSTANT),
5250 /* 5722 */ // MIs[1] cst
5251 /* 5722 */ // No operand predicates
5252 /* 5722 */ GIM_CheckIsSafeToFold, /*NumInsns*/1,
5253 /* 5724 */ // Combiner Rule #24: constant_fold_fnearbyint
5254 /* 5724 */ GIR_DoneWithCustomAction, /*Fn*/GIMT_Encode2(GICXXCustomAction_GICombiner4),
5255 /* 5727 */ // Label 339: @5727
5256 /* 5727 */ GIM_Reject,
5257 /* 5728 */ // Label 91: @5728
5258 /* 5728 */ GIM_Reject,
5259 /* 5729 */ }; // Size: 5729 bytes
5260 return MatchTable0;
5261}
5262#undef GIMT_Encode2
5263#undef GIMT_Encode4
5264#undef GIMT_Encode8
5265
5266
5267#endif // GET_GICOMBINER_IMPL
5268
5269#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
5270
5271AvailableModuleFeatures(computeAvailableModuleFeatures(&STI)),
5272AvailableFunctionFeatures()
5273
5274#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
5275
5276#ifdef GET_GICOMBINER_CONSTRUCTOR_INITS
5277
5278, State(0),
5279ExecInfo(TypeObjects, NumTypeObjects, FeatureBitsets, ComplexPredicateFns, CustomRenderers)
5280
5281#endif // GET_GICOMBINER_CONSTRUCTOR_INITS
5282
5283